Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
7b4ac0ae
Commit
7b4ac0ae
authored
May 18, 2004
by
Bartlomiej Zolnierkiewicz
Committed by
Linus Torvalds
May 18, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] H8/300 IDE support update
From: Yoshinori Sato <ysato@users.sourceforge.jp> With minor fixes from me
parent
77124e4c
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
133 additions
and
15 deletions
+133
-15
drivers/ide/Makefile
drivers/ide/Makefile
+3
-0
drivers/ide/h8300/ide-h8300.c
drivers/ide/h8300/ide-h8300.c
+119
-0
drivers/ide/ide.c
drivers/ide/ide.c
+5
-0
include/asm-h8300/ide.h
include/asm-h8300/ide.h
+3
-12
include/linux/ide.h
include/linux/ide.h
+3
-3
No files found.
drivers/ide/Makefile
View file @
7b4ac0ae
...
...
@@ -41,6 +41,9 @@ ide-core-$(CONFIG_BLK_DEV_MPC8xx_IDE) += ppc/mpc8xx.o
ide-core-$(CONFIG_BLK_DEV_IDE_PMAC)
+=
ppc/pmac.o
ide-core-$(CONFIG_BLK_DEV_IDE_SWARM)
+=
ppc/swarm.o
# built-in only drivers from h8300/
ide-core-$(CONFIG_H8300)
+=
h8300/ide-h8300.o
obj-$(CONFIG_BLK_DEV_IDE)
+=
ide-core.o
obj-$(CONFIG_IDE_GENERIC)
+=
ide-generic.o
...
...
drivers/ide/h8300/ide-h8300.c
0 → 100644
View file @
7b4ac0ae
/*
* drivers/ide/ide-h8300.c
* H8/300 generic IDE interface
*/
#include <linux/init.h>
#include <linux/ide.h>
#include <linux/config.h>
#include <asm/io.h>
#include <asm/irq.h>
#define bswap(d) \
({ \
u16 r; \
__asm__("mov.b %w1,r1h\n\t" \
"mov.b %x1,r1l\n\t" \
"mov.w r1,%0" \
:"=r"(r) \
:"r"(d) \
:"er1"); \
(r); \
})
static
void
mm_outw
(
u16
d
,
unsigned
long
a
)
{
__asm__
(
"mov.b %w0,r2h
\n\t
"
"mov.b %x0,r2l
\n\t
"
"mov.w r2,@%1"
:
:
"r"
(
d
),
"r"
(
a
)
:
"er2"
);
}
static
u16
mm_inw
(
unsigned
long
a
)
{
register
u16
r
__asm__
(
"er0"
);
__asm__
(
"mov.w @%1,r2
\n\t
"
"mov.b r2l,%x0
\n\t
"
"mov.b r2h,%w0"
:
"=r"
(
r
)
:
"r"
(
a
)
:
"er2"
);
return
r
;
}
static
void
mm_outsw
(
unsigned
long
addr
,
void
*
buf
,
u32
len
)
{
unsigned
short
*
bp
=
(
unsigned
short
*
)
buf
;
for
(;
len
>
0
;
len
--
,
bp
++
)
*
(
volatile
u16
*
)
addr
=
bswap
(
*
bp
);
}
static
void
mm_insw
(
unsigned
long
addr
,
void
*
buf
,
u32
len
)
{
unsigned
short
*
bp
=
(
unsigned
short
*
)
buf
;
for
(;
len
>
0
;
len
--
,
bp
++
)
*
bp
=
bswap
(
*
(
volatile
u16
*
)
addr
);
}
#define H8300_IDE_GAP (2)
static
inline
void
hw_setup
(
hw_regs_t
*
hw
)
{
int
i
;
memset
(
hw
,
0
,
sizeof
(
hw_regs_t
));
for
(
i
=
0
;
i
<=
IDE_STATUS_OFFSET
;
i
++
)
hw
->
io_ports
[
i
]
=
CONFIG_H8300_IDE_BASE
+
H8300_IDE_GAP
*
i
;
hw
->
io_ports
[
IDE_CONTROL_OFFSET
]
=
CONFIG_H8300_IDE_ALT
;
hw
->
irq
=
EXT_IRQ0
+
CONFIG_H8300_IDE_IRQ
;
hw
->
dma
=
NO_DMA
;
hw
->
chipset
=
ide_generic
;
}
static
inline
void
hwif_setup
(
ide_hwif_t
*
hwif
)
{
default_hwif_iops
(
hwif
);
hwif
->
mmio
=
2
;
hwif
->
OUTW
=
mm_outw
;
hwif
->
OUTSW
=
mm_outsw
;
hwif
->
INW
=
mm_inw
;
hwif
->
INSW
=
mm_insw
;
hwif
->
OUTL
=
NULL
;
hwif
->
INL
=
NULL
;
hwif
->
OUTSL
=
NULL
;
hwif
->
INSL
=
NULL
;
}
void
__init
h8300_ide_init
(
void
)
{
hw_regs_t
hw
;
ide_hwif_t
*
hwif
;
int
idx
;
if
(
!
request_region
(
CONFIG_H8300_IDE_BASE
,
H8300_IDE_GAP
*
8
,
"ide-h8300"
))
goto
out_busy
;
if
(
!
request_region
(
CONFIG_H8300_IDE_ALT
,
H8300_IDE_GAP
,
"ide-h8300"
))
{
release_region
(
CONFIG_H8300_IDE_BASE
,
H8300_IDE_GAP
*
8
);
goto
out_busy
;
}
hw_setup
(
&
hw
);
/* register if */
idx
=
ide_register_hw
(
&
hw
,
&
hwif
);
if
(
idx
==
-
1
)
{
printk
(
KERN_ERR
"ide-h8300: IDE I/F register failed
\n
"
);
return
;
}
hwif_setup
(
hwif
);
printk
(
KERN_INFO
"ide%d: H8/300 generic IDE interface
\n
"
,
idx
);
return
;
out_busy:
printk
(
KERN_ERR
"ide-h8300: IDE I/F resource already used.
\n
"
);
}
drivers/ide/ide.c
View file @
7b4ac0ae
...
...
@@ -2054,6 +2054,8 @@ int __init ide_setup (char *s)
return
1
;
}
extern
void
h8300_ide_init
(
void
);
/*
* probe_for_hwifs() finds/initializes "known" IDE interfaces
*/
...
...
@@ -2130,6 +2132,9 @@ static void __init probe_for_hwifs (void)
pnpide_init
(
1
);
}
#endif
/* CONFIG_BLK_DEV_IDEPNP */
#ifdef CONFIG_H8300
h8300_ide_init
();
#endif
}
/*
...
...
include/asm-h8300/ide.h
View file @
7b4ac0ae
...
...
@@ -16,23 +16,14 @@
#ifdef __KERNEL__
/****************************************************************************/
void
h8300_ide_print_resource
(
char
*
name
,
hw_regs_t
*
hw
);
static
__inline__
int
ide_default_irq
(
unsigned
long
base
)
{
return
0
;
};
static
__inline__
unsigned
long
ide_default_io_base
(
int
index
)
{
return
0
;
};
static
__inline__
void
ide_init_hwif_ports
(
hw_regs_t
*
hw
,
unsigned
long
data_port
,
unsigned
long
ctrl_port
,
int
*
irq
)
{
}
#define ide_default_irq(base) (0)
#define ide_default_io_base(index) (0)
#define ide_init_default_irq(base) (0)
#define MAX_HWIFS 1
#define __ide_mm_insw(port,addr,count) do { } while(0)
#define __ide_mm_insl(port,addr,count) do { } while(0)
#define __ide_mm_outsw(port,addr,count) do { } while(0)
#define __ide_mm_outsl(port,addr,count) do { } while(0)
#include <asm-generic/ide_iops.h>
/****************************************************************************/
#endif
/* __KERNEL__ */
...
...
include/linux/ide.h
View file @
7b4ac0ae
...
...
@@ -309,10 +309,10 @@ static inline void ide_std_init_ports(hw_regs_t *hw,
* ide_init_hwif_ports() is OBSOLETE and will be removed in 2.7 series.
* New ports shouldn't define IDE_ARCH_OBSOLETE_INIT in <asm/ide.h>.
*
*
h8300,
m68k, m68knommu (broken) and i386-pc9800 (broken)
* m68k, m68knommu (broken) and i386-pc9800 (broken)
* still have their own versions.
*/
#if
!defined(CONFIG_H8300) && !defined(CONFIG_M68K)
#if
ndef CONFIG_M68K
#ifdef IDE_ARCH_OBSOLETE_INIT
static
inline
void
ide_init_hwif_ports
(
hw_regs_t
*
hw
,
unsigned
long
io_addr
,
...
...
@@ -337,7 +337,7 @@ static inline void ide_init_hwif_ports(hw_regs_t *hw,
#else
# define ide_init_hwif_ports(hw, io, ctl, irq) do {} while (0)
#endif
/* IDE_ARCH_OBSOLETE_INIT */
#endif
/* !
H8300 && !
M68K */
#endif
/* !M68K */
/* Currently only m68k, apus and m8xx need it */
#ifndef IDE_ARCH_ACK_INTR
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment