From: Yoshinori Sato <ysato@users.sourceforge.jp>
To: Linus Torvalds <torvalds@osdl.org>
Cc: linux kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: [PATCH] H8/300 new ide driver support
Date: Fri, 21 May 2004 15:31:54 +0900 [thread overview]
Message-ID: <m2fz9up9yd.wl%ysato@users.sourceforge.jp> (raw)
- new config items
- interface setup
- io cleanup
--
Yoshinori Sato
<ysato@users.sourceforge.jp>
diff -Nur linux-2.6.6-bk4/arch/h8300/Kconfig.ide linux-2.6.6-h8300/arch/h8300/Kconfig.ide
--- linux-2.6.6-bk4/arch/h8300/Kconfig.ide 2004-05-11 14:30:44.000000000 +0900
+++ linux-2.6.6-h8300/arch/h8300/Kconfig.ide 2004-05-21 02:44:25.000000000 +0900
@@ -1,23 +1,44 @@
# uClinux H8/300 Target Board Selection Menu (IDE)
+if (H8300H_AKI3068NET)
menu "IDE Extra configuration"
config H8300_IDE_BASE
- hex "IDE regitser base address"
+ hex "IDE register base address"
depends on IDE
+ default 0
help
IDE registers base address
config H8300_IDE_ALT
- hex "IDE regitser alternate address"
+ hex "IDE register alternate address"
depends on IDE
+ default 0
help
IDE alternate registers address
config H8300_IDE_IRQ
int "IDE IRQ no"
depends on IDE
+ default 0
help
- IDE I/F using IRQ no
-
+ IDE use IRQ no
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
diff -Nur linux-2.6.6-bk4/arch/h8300/kernel/setup.c linux-2.6.6-h8300/arch/h8300/kernel/setup.c
--- linux-2.6.6-bk4/arch/h8300/kernel/setup.c 2004-05-11 14:30:44.000000000 +0900
+++ linux-2.6.6-h8300/arch/h8300/kernel/setup.c 2004-05-14 21:44:12.000000000 +0900
@@ -40,16 +40,12 @@
#if defined(__H8300H__)
#define CPU "H8/300H"
+#include <asm/regs306x.h>
#endif
#if defined(__H8300S__)
#define CPU "H8S"
-#endif
-
-#if defined(CONFIG_INTELFLASH)
-#define BLKOFFSET 512
-#else
-#define BLKOFFSET 0
+#include <asm/regs267x.h>
#endif
#define STUBSIZE 0xc000;
@@ -58,8 +54,6 @@
unsigned long memory_start;
unsigned long memory_end;
-struct task_struct *_current_task;
-
char command_line[512];
char saved_command_line[512];
@@ -107,12 +101,11 @@
memory_start = (unsigned long) &_ramstart;
/* 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)
- initrd_start = memory_start += BLKOFFSET;
+ initrd_start = memory_start;
initrd_end = memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]);
#else
- memory_start += BLKOFFSET;
memory_start += be32_to_cpu(((unsigned long *) memory_start)[2]);
#endif
}
@@ -190,6 +183,16 @@
*/
paging_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
printk(KERN_DEBUG "Done setup_arch\n");
#endif
diff -ur linux-2.6.6-bk4/include/asm-h8300/io.h linux-2.6.6-h8300/include/asm-h8300/io.h
--- linux-2.6.6-bk4/include/asm-h8300/io.h 2004-05-21 02:17:29.000000000 +0900
+++ linux-2.6.6-h8300/include/asm-h8300/io.h 2004-05-21 14:09:24.000000000 +0900
@@ -33,21 +33,29 @@
* 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)
{
- 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)
{
- 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) \
@@ -96,7 +104,7 @@
volatile unsigned short *ap = (volatile unsigned short *) addr;
unsigned short *bp = (unsigned short *) buf;
while (len--)
- *ap = *bp++;
+ *ap = _swapw(*bp++);
}
static inline void io_outsl(unsigned int addr, const void *buf, int len)
@@ -104,7 +112,7 @@
volatile unsigned int *ap = (volatile unsigned int *) addr;
unsigned long *bp = (unsigned long *) buf;
while (len--)
- *ap = *bp++;
+ *ap = _swapl(*bp++);
}
static inline void io_insb(unsigned int addr, void *buf, int len)
@@ -129,7 +137,7 @@
volatile unsigned short *ap = (volatile unsigned short *) addr;
unsigned short *bp = (unsigned short *) buf;
while (len--)
- *bp++ = *ap;
+ *bp++ = _swapw(*ap);
}
static inline void io_insl(unsigned int addr, void *buf, int len)
@@ -137,7 +145,7 @@
volatile unsigned int *ap = (volatile unsigned int *) addr;
unsigned long *bp = (unsigned long *) buf;
while (len--)
- *bp++ = *ap;
+ *bp++ = _swapl(*ap);
}
/*
reply other threads:[~2004-05-21 6:32 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m2fz9up9yd.wl%ysato@users.sourceforge.jp \
--to=ysato@users.sourceforge.jp \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.