config H8S2678
bool "H8S/2670,2673,2674R,2675,2676"
select CPU_H8S
- select H8300_TIMER8_CED
endchoice
config CPU_CLOCK
int "CPU Clock Frequency"
depends on ROMKERNEL
- default "20000000" if H8300H_AKI3068NET || H8300H_SIM
- default "25000000" if H8300H_H8MAX || H8300H_KANEBEBE
- default "33333333" if H8S_EDOSK2674 || H8S_SIM
+ default "200000000" if H8300H_AKI3068NET || H8300H_SIM
+ default "250000000" if H8300H_H8MAX || H8300H_KANEBEBE
+ default "333333333" if H8S_EDOSK2674 || H8S_SIM
help
CPU Clock Frequency
default 0x400000 if H8300_KANEBEBE
default 0x800000 if H8S_EDOSK2674 || H8S_SIM
-config H8300_TIMER8_CED
- bool
-
source "kernel/Kconfig.preempt"
source "mm/Kconfig"
},
};
-static struct h8300_timer8_config timer8_platform_data = {
- .mode = H8300_TMR8_CLKSRC,
+static struct h8300_timer8_config tm8_unit0_platform_data = {
+ .mode = H8300_TMR8_CLKEVTDEV,
.div = H8300_TMR8_DIV_64,
.rating = 200,
};
.name = "h8300-8timer",
.id = 0,
.dev = {
- .platform_data = &timer8_platform_data,
+ .platform_data = &tm8_unit0_platform_data,
},
.resource = tm8_unit0_resources,
.num_resources = ARRAY_SIZE(tm8_unit0_resources),
};
+static struct h8300_timer8_config tm8_unit1_platform_data = {
+ .mode = H8300_TMR8_CLKSRC,
+ .div = H8300_TMR8_DIV_64,
+ .rating = 200,
+};
+
static struct resource tm8_unit1_resources[] = {
DEFINE_RES_MEM(0xffff90, 9),
DEFINE_RES_IRQ(40),
.name = "h8300-8timer",
.id = 1,
.dev = {
- .platform_data = &timer8_platform_data,
+ .platform_data = &tm8_unit1_platform_data,
},
.resource = tm8_unit1_resources,
.num_resources = ARRAY_SIZE(tm8_unit1_resources),
};
static struct platform_device *devices[] __initdata = {
- &timer8_unit0_device,
&timer8_unit1_device,
+ &timer16_ch0_device,
&timer16_ch1_device,
&timer16_ch2_device,
&sci0_device,
};
static struct platform_device *early_devices[] __initdata = {
- &timer16_ch0_device,
+ &timer8_unit0_device,
&sci0_device,
&sci1_device,
};
static int __init devices_register(void)
{
- /* All interrupt priority high */
- ctrl_outb(0xff, 0xfee018);
- ctrl_outb(0xff, 0xfee019);
return platform_add_devices(devices,
ARRAY_SIZE(devices));
}
arch_initcall(devices_register);
-void __init early_device_register(void)
+void __init early_device_init(void)
{
+ /* All interrupt priority high */
+ ctrl_outb(0xff, 0xfee018);
+ ctrl_outb(0xff, 0xfee019);
early_platform_add_devices(early_devices,
- ARRAY_SIZE(devices));
+ ARRAY_SIZE(early_devices));
}
static struct h8300_timer8_config timer8_platform_data = {
.mode = H8300_TMR8_CLKEVTDEV,
- .div = H8300_TMR8_DIV_8,
+ .div = H8300_TMR8_DIV_64,
.rating = 200,
};
}
arch_initcall(devices_register);
-void __init early_device_register(void)
+void __init early_device_init(void)
{
+ int i;
+ /* SCI / Timer enable */
+ ctrl_outw(0x07f0, 0xffff40);
+ /* All interrupt priority is 1 */
+ for(i = 0; i < 12; i++)
+ ctrl_outw(0x1111, 0xfffe00 + i * 2);
early_platform_add_devices(early_devices,
- ARRAY_SIZE(devices));
+ ARRAY_SIZE(early_devices));
}