public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox