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
13bea95f
Commit
13bea95f
authored
May 21, 2004
by
Yoshinori Sato
Committed by
Linus Torvalds
May 21, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] H8/300 new ide driver support
- new config items - interface setup - io cleanup
parent
b4625576
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
60 additions
and
28 deletions
+60
-28
arch/h8300/Kconfig.ide
arch/h8300/Kconfig.ide
+25
-4
arch/h8300/kernel/setup.c
arch/h8300/kernel/setup.c
+14
-11
include/asm-h8300/io.h
include/asm-h8300/io.h
+21
-13
No files found.
arch/h8300/Kconfig.ide
View file @
13bea95f
# uClinux H8/300 Target Board Selection Menu (IDE)
# uClinux H8/300 Target Board Selection Menu (IDE)
if (H8300H_AKI3068NET)
menu "IDE Extra configuration"
menu "IDE Extra configuration"
config H8300_IDE_BASE
config H8300_IDE_BASE
hex "IDE regi
ts
er base address"
hex "IDE regi
st
er base address"
depends on IDE
depends on IDE
default 0
help
help
IDE registers base address
IDE registers base address
config H8300_IDE_ALT
config H8300_IDE_ALT
hex "IDE regi
ts
er alternate address"
hex "IDE regi
st
er alternate address"
depends on IDE
depends on IDE
default 0
help
help
IDE alternate registers address
IDE alternate registers address
config H8300_IDE_IRQ
config H8300_IDE_IRQ
int "IDE IRQ no"
int "IDE IRQ no"
depends on IDE
depends on IDE
default 0
help
help
IDE I/F using IRQ no
IDE use IRQ no
endmenu
endmenu
endif
if (H8300H_H8MAX)
config H8300_IDE_BASE
hex
depends on IDE
default 0x200000
config H8300_IDE_ALT
hex
depends on IDE
default 0x60000c
config H8300_IDE_IRQ
int
depends on IDE
default 5
endif
arch/h8300/kernel/setup.c
View file @
13bea95f
...
@@ -40,16 +40,12 @@
...
@@ -40,16 +40,12 @@
#if defined(__H8300H__)
#if defined(__H8300H__)
#define CPU "H8/300H"
#define CPU "H8/300H"
#include <asm/regs306x.h>
#endif
#endif
#if defined(__H8300S__)
#if defined(__H8300S__)
#define CPU "H8S"
#define CPU "H8S"
#endif
#include <asm/regs267x.h>
#if defined(CONFIG_INTELFLASH)
#define BLKOFFSET 512
#else
#define BLKOFFSET 0
#endif
#endif
#define STUBSIZE 0xc000;
#define STUBSIZE 0xc000;
...
@@ -58,8 +54,6 @@ unsigned long rom_length;
...
@@ -58,8 +54,6 @@ unsigned long rom_length;
unsigned
long
memory_start
;
unsigned
long
memory_start
;
unsigned
long
memory_end
;
unsigned
long
memory_end
;
struct
task_struct
*
_current_task
;
char
command_line
[
512
];
char
command_line
[
512
];
char
saved_command_line
[
512
];
char
saved_command_line
[
512
];
...
@@ -107,12 +101,11 @@ void __init setup_arch(char **cmdline_p)
...
@@ -107,12 +101,11 @@ void __init setup_arch(char **cmdline_p)
memory_start
=
(
unsigned
long
)
&
_ramstart
;
memory_start
=
(
unsigned
long
)
&
_ramstart
;
/* allow for ROMFS on the end of the kernel */
/* allow for ROMFS on the end of the kernel */
if
(
memcmp
((
void
*
)
(
memory_start
+
BLKOFFSET
)
,
"-rom1fs-"
,
8
)
==
0
)
{
if
(
memcmp
((
void
*
)
memory_start
,
"-rom1fs-"
,
8
)
==
0
)
{
#if defined(CONFIG_BLK_DEV_INITRD)
#if defined(CONFIG_BLK_DEV_INITRD)
initrd_start
=
memory_start
+=
BLKOFFSET
;
initrd_start
=
memory_start
;
initrd_end
=
memory_start
+=
be32_to_cpu
(((
unsigned
long
*
)
(
memory_start
))[
2
]);
initrd_end
=
memory_start
+=
be32_to_cpu
(((
unsigned
long
*
)
(
memory_start
))[
2
]);
#else
#else
memory_start
+=
BLKOFFSET
;
memory_start
+=
be32_to_cpu
(((
unsigned
long
*
)
memory_start
)[
2
]);
memory_start
+=
be32_to_cpu
(((
unsigned
long
*
)
memory_start
)[
2
]);
#endif
#endif
}
}
...
@@ -190,6 +183,16 @@ void __init setup_arch(char **cmdline_p)
...
@@ -190,6 +183,16 @@ void __init setup_arch(char **cmdline_p)
*/
*/
paging_init
();
paging_init
();
h8300_gpio_init
();
h8300_gpio_init
();
#if defined(CONFIG_H8300_AKI3068NET) && defined(CONFIG_IDE)
{
#define AREABIT(addr) (1 << (((addr) >> 21) & 7))
/* setup BSC */
volatile
unsigned
char
*
abwcr
=
(
volatile
unsigned
char
*
)
ABWCR
;
volatile
unsigned
char
*
cscr
=
(
volatile
unsigned
char
*
)
CSCR
;
*
abwcr
&=
~
(
AREABIT
(
CONFIG_H8300_IDE_BASE
)
|
AREABIT
(
CONFIG_H8300_IDE_ALT
));
*
cscr
|=
(
AREABIT
(
CONFIG_H8300_IDE_BASE
)
|
AREABIT
(
CONFIG_H8300_IDE_ALT
))
|
0x0f
;
}
#endif
#ifdef DEBUG
#ifdef DEBUG
printk
(
KERN_DEBUG
"Done setup_arch
\n
"
);
printk
(
KERN_DEBUG
"Done setup_arch
\n
"
);
#endif
#endif
...
...
include/asm-h8300/io.h
View file @
13bea95f
...
@@ -33,21 +33,29 @@
...
@@ -33,21 +33,29 @@
* swap functions are sometimes needed to interface little-endian hardware
* swap functions are sometimes needed to interface little-endian hardware
*/
*/
/*
* CHANGES
*
* 020325 Added some #define's for the COBRA5272 board
* (hede)
*/
static
inline
unsigned
short
_swapw
(
volatile
unsigned
short
v
)
static
inline
unsigned
short
_swapw
(
volatile
unsigned
short
v
)
{
{
return
((
v
<<
8
)
|
(
v
>>
8
));
unsigned
short
r
,
t
;
__asm__
(
"mov.b %w2,%x1
\n\t
"
"mov.b %x2,%w1
\n\t
"
"mov.w %1,%0"
:
"=r"
(
r
),
"=r"
(
t
)
:
"r"
(
v
));
return
r
;
}
}
static
inline
unsigned
int
_swapl
(
volatile
unsigned
long
v
)
static
inline
unsigned
int
_swapl
(
volatile
unsigned
long
v
)
{
{
return
((
v
<<
24
)
|
((
v
&
0xff00
)
<<
8
)
|
((
v
&
0xff0000
)
>>
8
)
|
(
v
>>
24
));
unsigned
int
r
,
t
;
__asm__
(
"mov.b %w2,%x1
\n\t
"
"mov.b %x2,%w1
\n\t
"
"mov.w %f1,%e0
\n\t
"
"mov.w %e2,%f1
\n\t
"
"mov.b %w1,%x0
\n\t
"
"mov.b %x1,%w0"
:
"=r"
(
r
),
"=r"
(
t
)
:
"r"
(
v
));
return
r
;
}
}
#define readb(addr) \
#define readb(addr) \
...
@@ -96,7 +104,7 @@ static inline void io_outsw(unsigned int addr, const void *buf, int len)
...
@@ -96,7 +104,7 @@ static inline void io_outsw(unsigned int addr, const void *buf, int len)
volatile
unsigned
short
*
ap
=
(
volatile
unsigned
short
*
)
addr
;
volatile
unsigned
short
*
ap
=
(
volatile
unsigned
short
*
)
addr
;
unsigned
short
*
bp
=
(
unsigned
short
*
)
buf
;
unsigned
short
*
bp
=
(
unsigned
short
*
)
buf
;
while
(
len
--
)
while
(
len
--
)
*
ap
=
*
bp
++
;
*
ap
=
_swapw
(
*
bp
++
)
;
}
}
static
inline
void
io_outsl
(
unsigned
int
addr
,
const
void
*
buf
,
int
len
)
static
inline
void
io_outsl
(
unsigned
int
addr
,
const
void
*
buf
,
int
len
)
...
@@ -104,7 +112,7 @@ static inline void io_outsl(unsigned int addr, const void *buf, int len)
...
@@ -104,7 +112,7 @@ static inline void io_outsl(unsigned int addr, const void *buf, int len)
volatile
unsigned
int
*
ap
=
(
volatile
unsigned
int
*
)
addr
;
volatile
unsigned
int
*
ap
=
(
volatile
unsigned
int
*
)
addr
;
unsigned
long
*
bp
=
(
unsigned
long
*
)
buf
;
unsigned
long
*
bp
=
(
unsigned
long
*
)
buf
;
while
(
len
--
)
while
(
len
--
)
*
ap
=
*
bp
++
;
*
ap
=
_swapl
(
*
bp
++
)
;
}
}
static
inline
void
io_insb
(
unsigned
int
addr
,
void
*
buf
,
int
len
)
static
inline
void
io_insb
(
unsigned
int
addr
,
void
*
buf
,
int
len
)
...
@@ -129,7 +137,7 @@ static inline void io_insw(unsigned int addr, void *buf, int len)
...
@@ -129,7 +137,7 @@ static inline void io_insw(unsigned int addr, void *buf, int len)
volatile
unsigned
short
*
ap
=
(
volatile
unsigned
short
*
)
addr
;
volatile
unsigned
short
*
ap
=
(
volatile
unsigned
short
*
)
addr
;
unsigned
short
*
bp
=
(
unsigned
short
*
)
buf
;
unsigned
short
*
bp
=
(
unsigned
short
*
)
buf
;
while
(
len
--
)
while
(
len
--
)
*
bp
++
=
*
ap
;
*
bp
++
=
_swapw
(
*
ap
)
;
}
}
static
inline
void
io_insl
(
unsigned
int
addr
,
void
*
buf
,
int
len
)
static
inline
void
io_insl
(
unsigned
int
addr
,
void
*
buf
,
int
len
)
...
@@ -137,7 +145,7 @@ static inline void io_insl(unsigned int addr, void *buf, int len)
...
@@ -137,7 +145,7 @@ static inline void io_insl(unsigned int addr, void *buf, int len)
volatile
unsigned
int
*
ap
=
(
volatile
unsigned
int
*
)
addr
;
volatile
unsigned
int
*
ap
=
(
volatile
unsigned
int
*
)
addr
;
unsigned
long
*
bp
=
(
unsigned
long
*
)
buf
;
unsigned
long
*
bp
=
(
unsigned
long
*
)
buf
;
while
(
len
--
)
while
(
len
--
)
*
bp
++
=
*
ap
;
*
bp
++
=
_swapl
(
*
ap
)
;
}
}
/*
/*
...
...
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