Messages in this thread Patch in this message | | | Date | Fri, 14 May 2004 21:39:04 +0900 | From | Yoshinori Sato <> | Subject | [PATCH] H8/300 IDE support update |
| |
- IDE support update. - unused memory hole delete.
-- Yoshinori Sato <ysato@users.sourceforge.jp>
diff -Nru linux-2.6.6/arch/h8300/Kconfig.ide linux-2.6.6-h8300/arch/h8300/Kconfig.ide --- linux-2.6.6/arch/h8300/Kconfig.ide 11 May 2004 02:16:05 -0000 +++ linux-2.6.6-h8300/arch/h8300/Kconfig.ide 14 May 2004 11:44:08 -0000 @@ -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" depends on IDE + default 0 help IDE registers base address config H8300_IDE_ALT hex "IDE regitser 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 -Nru linux-2.6.6/arch/h8300/kernel/setup.c linux-2.6.6-h8300/arch/h8300/kernel/setup.c --- linux-2.6.6/arch/h8300/kernel/setup.c 26 Mar 2004 09:12:36 -0000 +++ linux-2.6.6-h8300/arch/h8300/kernel/setup.c 14 May 2004 11:36:34 -0000 @@ -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 -Nru linux-2.6.6/include/asm-h8300/ide.h linux-2.6.6-h8300/include/asm-h8300/ide.h --- linux-2.6.6/include/asm-h8300/ide.h 11 May 2004 12:28:11 -0000 +++ linux-2.6.6-h8300/include/asm-h8300/ide.h 14 May 2004 11:36:35 -0000 @@ -16,37 +16,25 @@ #ifdef __KERNEL__ /****************************************************************************/ -#define IDE_DATA 0x00 -#define IDE_ERROR 0x02 -#define IDE_NSECTOR 0x04 -#define IDE_SECTOR 0x06 -#define IDE_LCYL 0x08 -#define IDE_HCYL 0x0A -#define IDE_SELECT 0x0C -#define IDE_STATUS 0x0E - -#define IDE_BASE CONFIG_H8300_IDE_BASE -#define IDE_CTRL CONFIG_H8300_IDE_ALT -#define IDE_IRQ (EXT_IRQ0 + CONFIG_H8300_IDE_IRQ) - static __inline__ int ide_default_irq(unsigned long base) { - return IDE_IRQ; + return EXT_IRQ0 + CONFIG_H8300_IDE_IRQ; } #define ide_init_default_irq(base) ide_default_irq(base) static __inline__ unsigned long ide_default_io_base(int index) { - return 0; + return CONFIG_H8300_IDE_BASE; } static __inline__ void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port, unsigned long ctrl_port, int *irq) { + int i; + for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) + hw->io_ports[i] = data_port + 2*i; + hw->io_ports[IDE_CONTROL_OFFSET] = CONFIG_H8300_IDE_ALT; } - -void ide_init_default_hwifs(void); - #define MAX_HWIFS 1 diff -Nru linux-2.6.6/include/asm-h8300/io.h linux-2.6.6-h8300/include/asm-h8300/io.h --- linux-2.6.6/include/asm-h8300/io.h 11 May 2004 12:28:11 -0000 +++ linux-2.6.6-h8300/include/asm-h8300/io.h 14 May 2004 11:36:35 -0000 @@ -96,7 +96,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 +104,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 +129,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 +137,7 @@ volatile unsigned int *ap = (volatile unsigned int *) addr; unsigned long *bp = (unsigned long *) buf; while (len--) - *bp++ = *ap; + *bp++ = _swapl(*ap); } /* - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |