diff options
author | Arnd Bergmann <arnd@arndb.de> | 2013-04-09 08:43:00 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2013-04-09 08:43:00 -0400 |
commit | 2fce7e1106dd6dcbe3c72cec2ea81b452a50de6e (patch) | |
tree | eb1a1a3e4ffcdbbdce383197977de6bb08466ecf /arch/arm/mach-shmobile | |
parent | 797b3a9ee790e8de2a34d427de96a1bb560fe0db (diff) | |
parent | dace48d04dee46a3409d5e13cd98031522e46377 (diff) |
Merge tag 'renesas-soc-r8a7779-for-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/soc2
From Simon Horman <horms+renesas@verge.net.au>:
Renesas ARM r8a7779 SoC update for v3.10
Update to the r8a7779 SoC:
* Add SH Ethernet support
* Add comment describing clock ratios
This pull request is based on:
git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas renesas-soc2-for-v3.10
* tag 'renesas-soc-r8a7779-for-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
ARM: shmobile: R8A7779: add Ether support
ARM: shmobile: r8a7779: add each clocks ratio on comment area
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch/arm/mach-shmobile')
-rw-r--r-- | arch/arm/mach-shmobile/clock-r8a7779.c | 23 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/include/mach/r8a7779.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/setup-r8a7779.c | 23 |
3 files changed, 46 insertions, 2 deletions
diff --git a/arch/arm/mach-shmobile/clock-r8a7779.c b/arch/arm/mach-shmobile/clock-r8a7779.c index 7d86bfbb5b06..31d5cd4d9787 100644 --- a/arch/arm/mach-shmobile/clock-r8a7779.c +++ b/arch/arm/mach-shmobile/clock-r8a7779.c | |||
@@ -26,6 +26,25 @@ | |||
26 | #include <mach/clock.h> | 26 | #include <mach/clock.h> |
27 | #include <mach/common.h> | 27 | #include <mach/common.h> |
28 | 28 | ||
29 | /* | ||
30 | * MD1 = 1 MD1 = 0 | ||
31 | * (PLLA = 1500) (PLLA = 1600) | ||
32 | * (MHz) (MHz) | ||
33 | *------------------------------------------------+-------------------- | ||
34 | * clkz 1000 (2/3) 800 (1/2) | ||
35 | * clkzs 250 (1/6) 200 (1/8) | ||
36 | * clki 750 (1/2) 800 (1/2) | ||
37 | * clks 250 (1/6) 200 (1/8) | ||
38 | * clks1 125 (1/12) 100 (1/16) | ||
39 | * clks3 187.5 (1/8) 200 (1/8) | ||
40 | * clks4 93.7 (1/16) 100 (1/16) | ||
41 | * clkp 62.5 (1/24) 50 (1/32) | ||
42 | * clkg 62.5 (1/24) 66.6 (1/24) | ||
43 | * clkb, CLKOUT | ||
44 | * (MD2 = 0) 62.5 (1/24) 66.6 (1/24) | ||
45 | * (MD2 = 1) 41.6 (1/36) 50 (1/32) | ||
46 | */ | ||
47 | |||
29 | #define MD(nr) BIT(nr) | 48 | #define MD(nr) BIT(nr) |
30 | 49 | ||
31 | #define FRQMR IOMEM(0xffc80014) | 50 | #define FRQMR IOMEM(0xffc80014) |
@@ -93,7 +112,7 @@ static struct clk *main_clks[] = { | |||
93 | }; | 112 | }; |
94 | 113 | ||
95 | enum { MSTP323, MSTP322, MSTP321, MSTP320, | 114 | enum { MSTP323, MSTP322, MSTP321, MSTP320, |
96 | MSTP115, | 115 | MSTP115, MSTP114, |
97 | MSTP103, MSTP101, MSTP100, | 116 | MSTP103, MSTP101, MSTP100, |
98 | MSTP030, | 117 | MSTP030, |
99 | MSTP029, MSTP028, MSTP027, MSTP026, MSTP025, MSTP024, MSTP023, MSTP022, MSTP021, | 118 | MSTP029, MSTP028, MSTP027, MSTP026, MSTP025, MSTP024, MSTP023, MSTP022, MSTP021, |
@@ -107,6 +126,7 @@ static struct clk mstp_clks[MSTP_NR] = { | |||
107 | [MSTP321] = SH_CLK_MSTP32(&clkp_clk, MSTPCR3, 21, 0), /* SDHI2 */ | 126 | [MSTP321] = SH_CLK_MSTP32(&clkp_clk, MSTPCR3, 21, 0), /* SDHI2 */ |
108 | [MSTP320] = SH_CLK_MSTP32(&clkp_clk, MSTPCR3, 20, 0), /* SDHI3 */ | 127 | [MSTP320] = SH_CLK_MSTP32(&clkp_clk, MSTPCR3, 20, 0), /* SDHI3 */ |
109 | [MSTP115] = SH_CLK_MSTP32(&clkp_clk, MSTPCR1, 15, 0), /* SATA */ | 128 | [MSTP115] = SH_CLK_MSTP32(&clkp_clk, MSTPCR1, 15, 0), /* SATA */ |
129 | [MSTP114] = SH_CLK_MSTP32(&clkp_clk, MSTPCR1, 14, 0), /* Ether */ | ||
110 | [MSTP103] = SH_CLK_MSTP32(&clks_clk, MSTPCR1, 3, 0), /* DU */ | 130 | [MSTP103] = SH_CLK_MSTP32(&clks_clk, MSTPCR1, 3, 0), /* DU */ |
111 | [MSTP101] = SH_CLK_MSTP32(&clkp_clk, MSTPCR1, 1, 0), /* USB2 */ | 131 | [MSTP101] = SH_CLK_MSTP32(&clkp_clk, MSTPCR1, 1, 0), /* USB2 */ |
112 | [MSTP100] = SH_CLK_MSTP32(&clkp_clk, MSTPCR1, 0, 0), /* USB0/1 */ | 132 | [MSTP100] = SH_CLK_MSTP32(&clkp_clk, MSTPCR1, 0, 0), /* USB0/1 */ |
@@ -143,6 +163,7 @@ static struct clk_lookup lookups[] = { | |||
143 | /* MSTP32 clocks */ | 163 | /* MSTP32 clocks */ |
144 | CLKDEV_DEV_ID("sata_rcar", &mstp_clks[MSTP115]), /* SATA */ | 164 | CLKDEV_DEV_ID("sata_rcar", &mstp_clks[MSTP115]), /* SATA */ |
145 | CLKDEV_DEV_ID("fc600000.sata", &mstp_clks[MSTP115]), /* SATA w/DT */ | 165 | CLKDEV_DEV_ID("fc600000.sata", &mstp_clks[MSTP115]), /* SATA w/DT */ |
166 | CLKDEV_DEV_ID("sh-eth", &mstp_clks[MSTP114]), /* Ether */ | ||
146 | CLKDEV_DEV_ID("ehci-platform.1", &mstp_clks[MSTP101]), /* USB EHCI port2 */ | 167 | CLKDEV_DEV_ID("ehci-platform.1", &mstp_clks[MSTP101]), /* USB EHCI port2 */ |
147 | CLKDEV_DEV_ID("ohci-platform.1", &mstp_clks[MSTP101]), /* USB OHCI port2 */ | 168 | CLKDEV_DEV_ID("ohci-platform.1", &mstp_clks[MSTP101]), /* USB OHCI port2 */ |
148 | CLKDEV_DEV_ID("ehci-platform.0", &mstp_clks[MSTP100]), /* USB EHCI port0/1 */ | 169 | CLKDEV_DEV_ID("ehci-platform.0", &mstp_clks[MSTP100]), /* USB EHCI port0/1 */ |
diff --git a/arch/arm/mach-shmobile/include/mach/r8a7779.h b/arch/arm/mach-shmobile/include/mach/r8a7779.h index 945299ed1638..188b295938a5 100644 --- a/arch/arm/mach-shmobile/include/mach/r8a7779.h +++ b/arch/arm/mach-shmobile/include/mach/r8a7779.h | |||
@@ -3,6 +3,7 @@ | |||
3 | 3 | ||
4 | #include <linux/sh_clk.h> | 4 | #include <linux/sh_clk.h> |
5 | #include <linux/pm_domain.h> | 5 | #include <linux/pm_domain.h> |
6 | #include <linux/sh_eth.h> | ||
6 | 7 | ||
7 | struct platform_device; | 8 | struct platform_device; |
8 | 9 | ||
@@ -31,6 +32,7 @@ extern void r8a7779_earlytimer_init(void); | |||
31 | extern void r8a7779_add_early_devices(void); | 32 | extern void r8a7779_add_early_devices(void); |
32 | extern void r8a7779_add_standard_devices(void); | 33 | extern void r8a7779_add_standard_devices(void); |
33 | extern void r8a7779_add_standard_devices_dt(void); | 34 | extern void r8a7779_add_standard_devices_dt(void); |
35 | extern void r8a7779_add_ether_device(struct sh_eth_plat_data *pdata); | ||
34 | extern void r8a7779_clock_init(void); | 36 | extern void r8a7779_clock_init(void); |
35 | extern void r8a7779_pinmux_init(void); | 37 | extern void r8a7779_pinmux_init(void); |
36 | extern void r8a7779_pm_init(void); | 38 | extern void r8a7779_pm_init(void); |
diff --git a/arch/arm/mach-shmobile/setup-r8a7779.c b/arch/arm/mach-shmobile/setup-r8a7779.c index a460ba3dedcb..b0b394842ea5 100644 --- a/arch/arm/mach-shmobile/setup-r8a7779.c +++ b/arch/arm/mach-shmobile/setup-r8a7779.c | |||
@@ -1,8 +1,9 @@ | |||
1 | /* | 1 | /* |
2 | * r8a7779 processor support | 2 | * r8a7779 processor support |
3 | * | 3 | * |
4 | * Copyright (C) 2011 Renesas Solutions Corp. | 4 | * Copyright (C) 2011, 2013 Renesas Solutions Corp. |
5 | * Copyright (C) 2011 Magnus Damm | 5 | * Copyright (C) 2011 Magnus Damm |
6 | * Copyright (C) 2013 Cogent Embedded, Inc. | ||
6 | * | 7 | * |
7 | * This program is free software; you can redistribute it and/or modify | 8 | * This program is free software; you can redistribute it and/or modify |
8 | * it under the terms of the GNU General Public License as published by | 9 | * it under the terms of the GNU General Public License as published by |
@@ -393,6 +394,18 @@ static struct platform_device sata_device = { | |||
393 | }, | 394 | }, |
394 | }; | 395 | }; |
395 | 396 | ||
397 | /* Ether */ | ||
398 | static struct resource ether_resources[] = { | ||
399 | { | ||
400 | .start = 0xfde00000, | ||
401 | .end = 0xfde003ff, | ||
402 | .flags = IORESOURCE_MEM, | ||
403 | }, { | ||
404 | .start = gic_iid(0xb4), | ||
405 | .flags = IORESOURCE_IRQ, | ||
406 | }, | ||
407 | }; | ||
408 | |||
396 | static struct platform_device *r8a7779_devices_dt[] __initdata = { | 409 | static struct platform_device *r8a7779_devices_dt[] __initdata = { |
397 | &scif0_device, | 410 | &scif0_device, |
398 | &scif1_device, | 411 | &scif1_device, |
@@ -428,6 +441,14 @@ void __init r8a7779_add_standard_devices(void) | |||
428 | ARRAY_SIZE(r8a7779_late_devices)); | 441 | ARRAY_SIZE(r8a7779_late_devices)); |
429 | } | 442 | } |
430 | 443 | ||
444 | void __init r8a7779_add_ether_device(struct sh_eth_plat_data *pdata) | ||
445 | { | ||
446 | platform_device_register_resndata(&platform_bus, "sh_eth", -1, | ||
447 | ether_resources, | ||
448 | ARRAY_SIZE(ether_resources), | ||
449 | pdata, sizeof(*pdata)); | ||
450 | } | ||
451 | |||
431 | /* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */ | 452 | /* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */ |
432 | void __init __weak r8a7779_register_twd(void) { } | 453 | void __init __weak r8a7779_register_twd(void) { } |
433 | 454 | ||