This is the mail archive of the
ecos-patches@sources.redhat.com
mailing list for the eCos project.
H8/300 patches (1/8) aki3068net
- From: Yoshinori Sato <ysato at users dot sourceforge dot jp>
- To: eCos patches <ecos-patches at sources dot redhat dot com>
- Date: Fri, 05 Mar 2004 01:41:42 +0900
- Subject: H8/300 patches (1/8) aki3068net
description
- IDE support update
- warning fix
- EDO DRAM support
- hal_memc_init cleanup
- new memory layout
--
Yoshinori Sato
<ysato@users.sourceforge.jp>
Index: devs/eth/h8300/aki3068net/current/include/devs_eth_h8300_aki3068net.inl
===================================================================
RCS file: /cvsroot/ecos-h8/ecos/packages/devs/eth/h8300/aki3068net/current/include/devs_eth_h8300_aki3068net.inl,v
retrieving revision 1.1.1.4
retrieving revision 1.4
diff -u -r1.1.1.4 -r1.4
--- devs/eth/h8300/aki3068net/current/include/devs_eth_h8300_aki3068net.inl 27 Nov 2003 14:22:18 -0000 1.1.1.4
+++ devs/eth/h8300/aki3068net/current/include/devs_eth_h8300_aki3068net.inl 4 Mar 2004 12:54:32 -0000 1.4
@@ -57,7 +57,7 @@
#ifdef CYGPKG_DEVS_ETH_H8300_AKI3068NET_ETH0
static dp83902a_priv_data_t dp83902a_eth0_priv_data = {
- base: 0x200000,
+ base: (cyg_uint8 *)0x200000,
interrupt: 17,
tx_buf1: 0x40,
tx_buf2: 0x48,
Index: hal/h8300/aki3068net/current/ChangeLog
===================================================================
RCS file: /cvsroot/ecos-h8/ecos/packages/hal/h8300/aki3068net/current/ChangeLog,v
retrieving revision 1.1.1.3
retrieving revision 1.11
diff -u -r1.1.1.3 -r1.11
--- hal/h8300/aki3068net/current/ChangeLog 27 Nov 2003 14:27:19 -0000 1.1.1.3
+++ hal/h8300/aki3068net/current/ChangeLog 4 Mar 2004 08:57:02 -0000 1.11
@@ -1,3 +1,20 @@
+2004-02-24 Yoshinori Sato <ysato@users.sourceforge.jp>
+
+ * cdl/hal_h8300_h8300h_aki3068net.cdl
+ add Linker flags "-mrelax"
+ move CYGSEM_HAL_H8300_VECTOR_HOOK to hal_h8300.cdl
+
+2004-01-16 Yoichi Koyanagi <yk@tinywillow.com>,Yoshinori Sato <ysato@users.sourceforge.jp>
+
+ * src/plf_ide.c
+ HAL_IDE_INIT return to enumerate controlers.
+ aki3068net_read_command fix 16bit mode access.
+
+2003-12-26 Yoichi Koyanagi <yk@tinywillow.com>,Yoshinori Sato <ysato@users.sourceforge.jp>
+
+ * src/plf_ide.c
+ 16bit bus mode fix.
+
2003-07-18 Nick Garnett <nickg@balti.calivar.com>
* cdl/hal_h8300_h8300h_aki3068net.cdl:
Index: hal/h8300/aki3068net/current/cdl/hal_h8300_h8300h_aki3068net.cdl
===================================================================
RCS file: /cvsroot/ecos-h8/ecos/packages/hal/h8300/aki3068net/current/cdl/hal_h8300_h8300h_aki3068net.cdl,v
retrieving revision 1.1.1.5
retrieving revision 1.15
diff -u -r1.1.1.5 -r1.15
--- hal/h8300/aki3068net/current/cdl/hal_h8300_h8300h_aki3068net.cdl 27 Nov 2003 14:27:19 -0000 1.1.1.5
+++ hal/h8300/aki3068net/current/cdl/hal_h8300_h8300h_aki3068net.cdl 4 Mar 2004 08:57:02 -0000 1.15
@@ -81,7 +81,7 @@
display "Startup type"
flavor data
legal_values {"ROM" "RAM"}
- default_value {"RAM"}
+ default_value {"ROM"}
no_define
define -file system.h CYG_HAL_STARTUP
description "
@@ -204,7 +204,7 @@
display "Global linker flags"
flavor data
no_define
- default_value { "-g -nostdlib -Wl,--gc-sections -Wl,-static -mh -mint32" }
+ default_value { "-g -nostdlib -Wl,--gc-sections -Wl,-static -mrelax -mh -mint32" }
description "
This option controls the global linker flags. Individual
packages may define options which override these global flags."
@@ -300,20 +300,12 @@
application. This enables features such as utilizing a separate
interrupt stack when exceptions are generated."
}
- cdl_option CYGSEM_HAL_H8300_VECTOR_HOOK {
- display "Interrupt Vector Hook"
- flavor bool
- default_value 1
- parent CYGPKG_HAL_ROM_MONITOR
- description "
- Interrupt Vector Table Hooking Support"
- }
cdl_option CYGHWR_HAL_H8300_VECTOR_ADDRESS {
display "Hook Vector Address"
flavor data
- default_value 0xffbf20
+ default_value 0xfffd20
+ active_if CYGSEM_HAL_H8300_VECTOR_HOOK
parent CYGPKG_HAL_ROM_MONITOR
- requires { CYGSEM_HAL_H8300_VECTOR_HOOK == 1 }
description "
Hooking Vector Table Address"
}
@@ -323,5 +315,20 @@
default_value 0xffffb8
description "
Used SCI Channel base address."
+ }
+ cdl_option CYGDAT_REDBOOT_H8300_LINUX_COMMAND_START {
+ display "Default kernel command line start address"
+ flavor data
+ default_value 0x5ffe00
+ description "
+ This option uClinux kernel command line start address of default."
+ }
+
+ cdl_option CYGDAT_REDBOOT_H8300_LINUX_BOOT_COMMAND_LINE {
+ display "Default command line"
+ flavor data
+ default_value { "console=/dev/ttySC1" }
+ description "
+ This option uClinux kernel startup command line of default."
}
}
Index: hal/h8300/aki3068net/current/include/platform.inc
===================================================================
RCS file: /cvsroot/ecos-h8/ecos/packages/hal/h8300/aki3068net/current/include/platform.inc,v
retrieving revision 1.1.1.4
diff -u -r1.1.1.4 platform.inc
--- hal/h8300/aki3068net/current/include/platform.inc 27 Nov 2003 14:27:19 -0000 1.1.1.4
+++ hal/h8300/aki3068net/current/include/platform.inc 4 Mar 2004 13:31:18 -0000
@@ -65,12 +65,16 @@
##-----------------------------------------------------------------------------
-#if CYGINT_HAL_PLF_IF_IDE != 0
-#define ABWCR_VAL ~((1 << ((CYGHWR_HAL_IDE_REGISTER >> 25) & 7)) |\
- (1 << ((CYGHWR_HAL_IDE_ALT_REGS >> 25) & 7)))
+#if (CYGINT_HAL_PLF_IF_IDE != 0 && (CYGHWR_HAL_IDE_BUSWIDTH == 16))
+#define ABWCR_VAL ~((1 << ((CYGHWR_HAL_IDE_REGISTER >> 21) & 7)) |\
+ (1 << ((CYGHWR_HAL_IDE_ALT_REGS >> 21) & 7)))
#else
#define ABWCR_VAL 0xff
#endif
+#if (CYGINT_HAL_PLF_IF_IDE != 0)
+#define CSCR_VAL ((1 << ((CYGHWR_HAL_IDE_REGISTER >> 21) & 7)) |\
+ (1 << ((CYGHWR_HAL_IDE_ALT_REGS >> 21) & 7)))
+#endif
#define CYGPKG_HAL_H8300_MEMC_DEFINED
.macro hal_memc_init
@@ -79,13 +83,11 @@
1:
mov.w @er0+,r2
beq 1f
+ mov.w #0x00ff,e2 ; internal I/O regs (2) high address
cmp.w #0xf000,r2
bhi 2f
- mov.w #0x00fe,e2
- bra 3f
+ dec.w #1,e2 ; internal I/O regs (1) high address
2:
- mov.w #0x00ff,e2
-3:
mov.w @er0+,r1
mov.b r1l,@er2
bra 1b
@@ -97,29 +99,28 @@
INIT_REGS_DATA(CYGARC_RTCOR,9)
INIT_REGS_DATA(CYGARC_RTMCSR,0x30)
INIT_REGS_DATA(CYGARC_DRCRB,0x98)
-INIT_REGS_DATA(CYGARC_DRCRA,0x3c)
+INIT_REGS_DATA(CYGARC_DRCRA,0x38)
INIT_REGS_DATA(CYGARC_ASTCR,0xfb)
INIT_REGS_DATA(CYGARC_ABWCR,ABWCR_VAL)
+#if defined(CSCR_VAL)
+INIT_REGS_DATA(CYGARC_CSCR,((CSCR_VAL) & 0xf0) | 0x0f)
+#endif
+INIT_REGS_DATA(CYGARC_WCRH ,0xff)
+INIT_REGS_DATA(CYGARC_WCRL ,0xc8)
INIT_REGS_DATA(CYGARC_P1DDR,0xff)
INIT_REGS_DATA(CYGARC_P2DDR,0xff)
INIT_REGS_DATA(CYGARC_P5DDR,0x01)
-INIT_REGS_DATA(CYGARC_P8DDR,0x0c)
+INIT_REGS_DATA(CYGARC_P8DDR,0x0e)
.word 0
init_regs_end:
-;; Thanks Hiroyuki Senshu
+;; Thanks Hiroyuki Senshu & Hiroki Minematsu
-;; DRAM Setup delay
+;; External peripheral setup delay
1:
- mov.b #8,r0h
+ mov.l #420000,er0 ;wait 50ms
2:
- mov.b #0,r0l
-3:
- dec.b r0l
- bne 3b
- mov.b @CYGARC_RTMCSR,r0l
+ dec.l #1,er0
bpl 2b
- dec r0h
- bne 2b
#endif
.endm
@@ -143,6 +144,13 @@
.macro hal_diag_data
.endm
+
+#if defined(CYGPKG_IO_ETH_DRIVERS)
+#define CYGPKG_HAL_H8300_SAVED_VECTORS
+ .macro h8300_save_vectors
+ .byte 15
+ .endm
+#endif
#------------------------------------------------------------------------------
#endif // ifndef CYGONCE_HAL_PLATFORM_INC
Index: hal/h8300/aki3068net/current/include/plf_io.h
===================================================================
RCS file: /cvsroot/ecos-h8/ecos/packages/hal/h8300/aki3068net/current/include/plf_io.h,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 plf_io.h
--- hal/h8300/aki3068net/current/include/plf_io.h 27 Nov 2003 14:27:19 -0000 1.1.1.1
+++ hal/h8300/aki3068net/current/include/plf_io.h 4 Mar 2004 13:31:19 -0000
@@ -65,11 +65,11 @@
#define HAL_IDE_INIT() aki3068net_ide_setup()
#define HAL_IDE_READ_UINT8( __ctlr, __regno, __val ) \
- aki3068net_read_command(__regno, __val)
+ aki3068net_read_command(__regno, &(__val))
#define HAL_IDE_READ_UINT16( __ctlr, __regno, __val ) \
- aki3068net_read_data(__regno, __val)
+ aki3068net_read_data(__regno, &(__val))
#define HAL_IDE_READ_ALTSTATUS( __ctlr, __val ) \
- aki3068net_read_control( __val)
+ aki3068net_read_control( &(__val))
#define HAL_IDE_WRITE_UINT8( __ctlr, __regno, __val ) \
aki3068net_write_command(__regno, __val)
Index: hal/h8300/aki3068net/current/include/pkgconf/mlt_h8300_h8300h_aki3068net_rom.ldi
===================================================================
RCS file: /cvsroot/ecos-h8/ecos/packages/hal/h8300/aki3068net/current/include/pkgconf/mlt_h8300_h8300h_aki3068net_rom.ldi,v
retrieving revision 1.1.1.4
diff -u -r1.1.1.4 mlt_h8300_h8300h_aki3068net_rom.ldi
--- hal/h8300/aki3068net/current/include/pkgconf/mlt_h8300_h8300h_aki3068net_rom.ldi 27 Nov 2003 14:27:19 -0000 1.1.1.4
+++ hal/h8300/aki3068net/current/include/pkgconf/mlt_h8300_h8300h_aki3068net_rom.ldi 4 Mar 2004 13:31:19 -0000
@@ -30,13 +30,18 @@
SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA)
SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA)
SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA)
+#if !defined(CYGSEM_HAL_H8300_VECTOR_HOOK)
+ SECTION_int_hook_table (rom, ALIGN (0x2), LMA_EQ_VMA)
+#endif
SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
SECTION_data (ram, WORK, FOLLOWING (.gcc_except_table))
SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+#if defined(CYGSEM_HAL_H8300_VECTOR_HOOK)
#if !defined(CYGPKG_IO_ETH_DRIVERS)
- SECTION_int_hook_table (ram, CYGHWR_HAL_H8300_VECTOR_ADDRESS,FOLLOWING (.data))
+ SECTION_int_hook_table (ram, CYGHWR_HAL_H8300_VECTOR_ADDRESS, LMA_EQ_VMA)
#else
- SECTION_int_hook_table (iram, CYGHWR_HAL_H8300_VECTOR_ADDRESS,FOLLOWING (.data))
+ SECTION_int_hook_table (iram, CYGHWR_HAL_H8300_VECTOR_ADDRESS, LMA_EQ_VMA)
+#endif
#endif
SECTIONS_END
}
Index: hal/h8300/aki3068net/current/src/plf_ide.c
===================================================================
RCS file: /cvsroot/ecos-h8/ecos/packages/hal/h8300/aki3068net/current/src/plf_ide.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 plf_ide.c
--- hal/h8300/aki3068net/current/src/plf_ide.c 27 Nov 2003 14:27:19 -0000 1.1.1.1
+++ hal/h8300/aki3068net/current/src/plf_ide.c 4 Mar 2004 13:31:20 -0000
@@ -58,6 +58,7 @@
#include <cyg/hal/hal_arch.h> // architectural definitions
#include <cyg/hal/hal_io.h>
#include <cyg/hal/hal_if.h>
+#include <cyg/hal/hal_endian.h>
#include <cyg/hal/plf_intr.h>
#include <cyg/hal/var_arch.h>
@@ -68,12 +69,13 @@
#define IDE_REG_FEATUERS 1
#define IDE_REG_COMMAND 7
-void aki3068net_ide_setup(void)
+int aki3068net_ide_setup(void)
{
#if CYGHWR_HAL_IDE_BUSWIDTH == 8
aki3068net_write_command(IDE_REG_FEATUERS,0x01); /* 8bit transfer mode */
aki3068net_write_command(IDE_REG_COMMAND, 0xef); /* set featuers */
#endif
+ return HAL_IDE_NUM_CONTROLLERS;
}
void aki3068net_read_command(cyg_uint16 r, cyg_uint8 *d)
@@ -81,7 +83,7 @@
#if CYGHWR_HAL_IDE_BUSWIDTH == 8
*d = *(volatile cyg_uint8 *)(CYGHWR_HAL_IDE_REGISTER + r);
#else
- *d = *(volatile cyg_uint16 *)(CYGHWR_HAL_IDE_REGISTER + (r << 1)) & 0xff;
+ *d = *(volatile cyg_uint8 *)(CYGHWR_HAL_IDE_REGISTER + (r << 1) + 1);
#endif
}
@@ -90,7 +92,9 @@
#if CYGHWR_HAL_IDE_BUSWIDTH == 8
*d = *(volatile cyg_uint16 *)(CYGHWR_HAL_IDE_REGISTER + r);
#else
- *d = *(volatile cyg_uint16 *)(CYGHWR_HAL_IDE_REGISTER + (r << 1));
+ cyg_uint16 dt;
+ dt = *(volatile cyg_uint16 *)(CYGHWR_HAL_IDE_REGISTER + (r << 1));
+ *d = CYG_LE16_TO_CPU(dt);
#endif
}
@@ -99,7 +103,7 @@
#if CYGHWR_HAL_IDE_BUSWIDTH == 8
*d = *(volatile cyg_uint8 *)(CYGHWR_HAL_IDE_ALT_REGS + 6);
#else
- *d = *(volatile cyg_uint16 *)(CYGHWR_HAL_IDE_ALT_REGS + 12) & 0xff;
+ *d = *(volatile cyg_uint8 *)(CYGHWR_HAL_IDE_ALT_REGS + 12 + 1);
#endif
}
@@ -108,7 +112,7 @@
#if CYGHWR_HAL_IDE_BUSWIDTH == 8
*(volatile cyg_uint8 *)(CYGHWR_HAL_IDE_REGISTER + r) = d;
#else
- *(volatile cyg_uint16 *)(CYGHWR_HAL_IDE_REGISTER + (r << 1) +1) = d;
+ *(volatile cyg_uint16 *)(CYGHWR_HAL_IDE_REGISTER + (r << 1)) = d;
#endif
}
@@ -117,7 +121,7 @@
#if CYGHWR_HAL_IDE_BUSWIDTH == 8
*(volatile cyg_uint8 *)(CYGHWR_HAL_IDE_REGISTER + r) = d;
#else
- *(volatile CYG_WORD16 *)(CYGHWR_HAL_IDE_REGISTER + (__regno <<1)) = (__val >> 8) | (__val << 8);
+ *(volatile CYG_WORD16 *)(CYGHWR_HAL_IDE_REGISTER + (r <<1)) = CYG_CPU_TO_LE16(d);
#endif
}