Loading arch/sh/Kconfig +1 −0 Original line number Original line Diff line number Diff line Loading @@ -393,6 +393,7 @@ config CPU_SUBTYPE_SH7785 select CPU_SHX2 select CPU_SHX2 select ARCH_SPARSEMEM_ENABLE select ARCH_SPARSEMEM_ENABLE select SYS_SUPPORTS_NUMA select SYS_SUPPORTS_NUMA select SYS_SUPPORTS_TMU config CPU_SUBTYPE_SH7786 config CPU_SUBTYPE_SH7786 bool "Support SH7786 processor" bool "Support SH7786 processor" Loading arch/sh/kernel/cpu/sh4a/setup-sh7785.c +204 −0 Original line number Original line Diff line number Diff line Loading @@ -13,8 +13,191 @@ #include <linux/serial_sci.h> #include <linux/serial_sci.h> #include <linux/io.h> #include <linux/io.h> #include <linux/mm.h> #include <linux/mm.h> #include <linux/sh_timer.h> #include <asm/mmzone.h> #include <asm/mmzone.h> static struct sh_timer_config tmu0_platform_data = { .name = "TMU0", .channel_offset = 0x04, .timer_bit = 0, .clk = "module_clk", .clockevent_rating = 200, }; static struct resource tmu0_resources[] = { [0] = { .name = "TMU0", .start = 0xffd80008, .end = 0xffd80013, .flags = IORESOURCE_MEM, }, [1] = { .start = 28, .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 = 0x10, .timer_bit = 1, .clk = "module_clk", .clocksource_rating = 200, }; static struct resource tmu1_resources[] = { [0] = { .name = "TMU1", .start = 0xffd80014, .end = 0xffd8001f, .flags = IORESOURCE_MEM, }, [1] = { .start = 29, .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 = 0x1c, .timer_bit = 2, .clk = "module_clk", }; static struct resource tmu2_resources[] = { [0] = { .name = "TMU2", .start = 0xffd80020, .end = 0xffd8002f, .flags = IORESOURCE_MEM, }, [1] = { .start = 30, .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 sh_timer_config tmu3_platform_data = { .name = "TMU3", .channel_offset = 0x04, .timer_bit = 0, .clk = "module_clk", }; static struct resource tmu3_resources[] = { [0] = { .name = "TMU3", .start = 0xffdc0008, .end = 0xffdc0013, .flags = IORESOURCE_MEM, }, [1] = { .start = 96, .flags = IORESOURCE_IRQ, }, }; static struct platform_device tmu3_device = { .name = "sh_tmu", .id = 3, .dev = { .platform_data = &tmu3_platform_data, }, .resource = tmu3_resources, .num_resources = ARRAY_SIZE(tmu3_resources), }; static struct sh_timer_config tmu4_platform_data = { .name = "TMU4", .channel_offset = 0x10, .timer_bit = 1, .clk = "module_clk", }; static struct resource tmu4_resources[] = { [0] = { .name = "TMU4", .start = 0xffdc0014, .end = 0xffdc001f, .flags = IORESOURCE_MEM, }, [1] = { .start = 97, .flags = IORESOURCE_IRQ, }, }; static struct platform_device tmu4_device = { .name = "sh_tmu", .id = 4, .dev = { .platform_data = &tmu4_platform_data, }, .resource = tmu4_resources, .num_resources = ARRAY_SIZE(tmu4_resources), }; static struct sh_timer_config tmu5_platform_data = { .name = "TMU5", .channel_offset = 0x1c, .timer_bit = 2, .clk = "module_clk", }; static struct resource tmu5_resources[] = { [0] = { .name = "TMU5", .start = 0xffdc0020, .end = 0xffdc002b, .flags = IORESOURCE_MEM, }, [1] = { .start = 98, .flags = IORESOURCE_IRQ, }, }; static struct platform_device tmu5_device = { .name = "sh_tmu", .id = 5, .dev = { .platform_data = &tmu5_platform_data, }, .resource = tmu5_resources, .num_resources = ARRAY_SIZE(tmu5_resources), }; static struct plat_sci_port sci_platform_data[] = { static struct plat_sci_port sci_platform_data[] = { { { .mapbase = 0xffea0000, .mapbase = 0xffea0000, Loading Loading @@ -60,6 +243,12 @@ static struct platform_device sci_device = { }; }; static struct platform_device *sh7785_devices[] __initdata = { static struct platform_device *sh7785_devices[] __initdata = { &tmu0_device, &tmu1_device, &tmu2_device, &tmu3_device, &tmu4_device, &tmu5_device, &sci_device, &sci_device, }; }; Loading @@ -70,6 +259,21 @@ static int __init sh7785_devices_setup(void) } } __initcall(sh7785_devices_setup); __initcall(sh7785_devices_setup); static struct platform_device *sh7785_early_devices[] __initdata = { &tmu0_device, &tmu1_device, &tmu2_device, &tmu3_device, &tmu4_device, &tmu5_device, }; void __init plat_early_device_setup(void) { early_platform_add_devices(sh7785_early_devices, ARRAY_SIZE(sh7785_early_devices)); } enum { enum { UNUSED = 0, UNUSED = 0, Loading Loading
arch/sh/Kconfig +1 −0 Original line number Original line Diff line number Diff line Loading @@ -393,6 +393,7 @@ config CPU_SUBTYPE_SH7785 select CPU_SHX2 select CPU_SHX2 select ARCH_SPARSEMEM_ENABLE select ARCH_SPARSEMEM_ENABLE select SYS_SUPPORTS_NUMA select SYS_SUPPORTS_NUMA select SYS_SUPPORTS_TMU config CPU_SUBTYPE_SH7786 config CPU_SUBTYPE_SH7786 bool "Support SH7786 processor" bool "Support SH7786 processor" Loading
arch/sh/kernel/cpu/sh4a/setup-sh7785.c +204 −0 Original line number Original line Diff line number Diff line Loading @@ -13,8 +13,191 @@ #include <linux/serial_sci.h> #include <linux/serial_sci.h> #include <linux/io.h> #include <linux/io.h> #include <linux/mm.h> #include <linux/mm.h> #include <linux/sh_timer.h> #include <asm/mmzone.h> #include <asm/mmzone.h> static struct sh_timer_config tmu0_platform_data = { .name = "TMU0", .channel_offset = 0x04, .timer_bit = 0, .clk = "module_clk", .clockevent_rating = 200, }; static struct resource tmu0_resources[] = { [0] = { .name = "TMU0", .start = 0xffd80008, .end = 0xffd80013, .flags = IORESOURCE_MEM, }, [1] = { .start = 28, .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 = 0x10, .timer_bit = 1, .clk = "module_clk", .clocksource_rating = 200, }; static struct resource tmu1_resources[] = { [0] = { .name = "TMU1", .start = 0xffd80014, .end = 0xffd8001f, .flags = IORESOURCE_MEM, }, [1] = { .start = 29, .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 = 0x1c, .timer_bit = 2, .clk = "module_clk", }; static struct resource tmu2_resources[] = { [0] = { .name = "TMU2", .start = 0xffd80020, .end = 0xffd8002f, .flags = IORESOURCE_MEM, }, [1] = { .start = 30, .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 sh_timer_config tmu3_platform_data = { .name = "TMU3", .channel_offset = 0x04, .timer_bit = 0, .clk = "module_clk", }; static struct resource tmu3_resources[] = { [0] = { .name = "TMU3", .start = 0xffdc0008, .end = 0xffdc0013, .flags = IORESOURCE_MEM, }, [1] = { .start = 96, .flags = IORESOURCE_IRQ, }, }; static struct platform_device tmu3_device = { .name = "sh_tmu", .id = 3, .dev = { .platform_data = &tmu3_platform_data, }, .resource = tmu3_resources, .num_resources = ARRAY_SIZE(tmu3_resources), }; static struct sh_timer_config tmu4_platform_data = { .name = "TMU4", .channel_offset = 0x10, .timer_bit = 1, .clk = "module_clk", }; static struct resource tmu4_resources[] = { [0] = { .name = "TMU4", .start = 0xffdc0014, .end = 0xffdc001f, .flags = IORESOURCE_MEM, }, [1] = { .start = 97, .flags = IORESOURCE_IRQ, }, }; static struct platform_device tmu4_device = { .name = "sh_tmu", .id = 4, .dev = { .platform_data = &tmu4_platform_data, }, .resource = tmu4_resources, .num_resources = ARRAY_SIZE(tmu4_resources), }; static struct sh_timer_config tmu5_platform_data = { .name = "TMU5", .channel_offset = 0x1c, .timer_bit = 2, .clk = "module_clk", }; static struct resource tmu5_resources[] = { [0] = { .name = "TMU5", .start = 0xffdc0020, .end = 0xffdc002b, .flags = IORESOURCE_MEM, }, [1] = { .start = 98, .flags = IORESOURCE_IRQ, }, }; static struct platform_device tmu5_device = { .name = "sh_tmu", .id = 5, .dev = { .platform_data = &tmu5_platform_data, }, .resource = tmu5_resources, .num_resources = ARRAY_SIZE(tmu5_resources), }; static struct plat_sci_port sci_platform_data[] = { static struct plat_sci_port sci_platform_data[] = { { { .mapbase = 0xffea0000, .mapbase = 0xffea0000, Loading Loading @@ -60,6 +243,12 @@ static struct platform_device sci_device = { }; }; static struct platform_device *sh7785_devices[] __initdata = { static struct platform_device *sh7785_devices[] __initdata = { &tmu0_device, &tmu1_device, &tmu2_device, &tmu3_device, &tmu4_device, &tmu5_device, &sci_device, &sci_device, }; }; Loading @@ -70,6 +259,21 @@ static int __init sh7785_devices_setup(void) } } __initcall(sh7785_devices_setup); __initcall(sh7785_devices_setup); static struct platform_device *sh7785_early_devices[] __initdata = { &tmu0_device, &tmu1_device, &tmu2_device, &tmu3_device, &tmu4_device, &tmu5_device, }; void __init plat_early_device_setup(void) { early_platform_add_devices(sh7785_early_devices, ARRAY_SIZE(sh7785_early_devices)); } enum { enum { UNUSED = 0, UNUSED = 0, Loading