sh: TMU platform data for sh7720/sh7721
PATCH 1/1 sh: TMU platform data for sh7720/sh7721
From: Magnus Damm <[email protected]>
This patch adds TMU platform data for sh7720 and sh7721. Both clockevent and clocksource support is enabled.
Signed-off-by Magnus Damm <[email protected]>
---
arch/sh/kernel/cpu/sh3/setup-sh7720.c | 109 +++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+)
arch/sh/kernel/cpu/sh3/setup-sh7720.c +109 -0
@@ -18,6 +18,7 @@#include <linux/serial.h> #include <linux/io.h> #include <linux/serial_sci.h> +#include <linux/sh_timer.h> #include <asm/rtc.h> static struct resource rtc_resources[] = {
@@ -123,7 +124,103 @@ static struct platform_device usbf_devic .resource = usbf_resources, }; + +static struct sh_timer_config tmu0_platform_data = { + .name ="TMU0" , + .channel_offset =0x02 , + .timer_bit =0 , + .clk ="module_clk" , + .clockevent_rating =200 , +}; + +static struct resource tmu0_resources[] = { + [0 ] = { + .name ="TMU0" , + .start =0xa412fe94 , + .end =0xa412fe9f , + .flags =IORESOURCE_MEM , + }, + [1 ] = { + .start =16 , + .flags =IORESOURCE_IRQ , + }, +}; + +static struct platform_device tmu0_device = { + .name ="sh_tmu" , + .id =0 , + .dev = { + .platform_data = &tmu0_platform_data, + }, + .resource = tmu0_resources, + .num_resources =ARRAY_SIZE (tmu0_resources), +}; + +static struct sh_timer_config tmu1_platform_data = { + .name ="TMU1" , + .channel_offset =0xe , + .timer_bit =1 , + .clk ="module_clk" , + .clocksource_rating =200 , +}; + +static struct resource tmu1_resources[] = { + [0 ] = { + .name ="TMU1" , + .start =0xa412fea0 , + .end =0xa412feab , + .flags =IORESOURCE_MEM , + }, + [1 ] = { + .start =17 , + .flags =IORESOURCE_IRQ , + }, +}; + +static struct platform_device tmu1_device = { + .name ="sh_tmu" , + .id =1 , + .dev = { + .platform_data = &tmu1_platform_data, + }, + .resource = tmu1_resources, + .num_resources =ARRAY_SIZE (tmu1_resources), +}; + +static struct sh_timer_config tmu2_platform_data = { + .name ="TMU2" , + .channel_offset =0x1a , + .timer_bit =2 , + .clk ="module_clk" , +}; + +static struct resource tmu2_resources[] = { + [0 ] = { + .name ="TMU2" , + .start =0xa412feac , + .end =0xa412feb5 , + .flags =IORESOURCE_MEM , + }, + [1 ] = { + .start =18 , + .flags =IORESOURCE_IRQ , + }, +}; + +static struct platform_device tmu2_device = { + .name ="sh_tmu" , + .id =2 , + .dev = { + .platform_data = &tmu2_platform_data, + }, + .resource = tmu2_resources, + .num_resources =ARRAY_SIZE (tmu2_resources), +}; +static struct platform_device *sh7720_devices[]__initdata = { + &tmu0_device, + &tmu1_device, + &tmu2_device, &rtc_device, &sci_device, &usb_ohci_device,
@@ -137,6 +234,18 @@ static int __init sh7720_devices_setup(v }__initcall (sh7720_devices_setup); +static struct platform_device *sh7720_early_devices[]__initdata = { + &tmu0_device, + &tmu1_device, + &tmu2_device, +}; + +void __init plat_early_device_setup (void ) +{ +early_platform_add_devices (sh7720_early_devices, +ARRAY_SIZE (sh7720_early_devices)); +} +enum {UNUSED =0 ,