diff options
Diffstat (limited to 'arch/arm/mach-shmobile/board-ape6evm.c')
-rw-r--r-- | arch/arm/mach-shmobile/board-ape6evm.c | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/arch/arm/mach-shmobile/board-ape6evm.c b/arch/arm/mach-shmobile/board-ape6evm.c new file mode 100644 index 000000000000..55b8c9fef954 --- /dev/null +++ b/arch/arm/mach-shmobile/board-ape6evm.c | |||
@@ -0,0 +1,94 @@ | |||
1 | /* | ||
2 | * APE6EVM board support | ||
3 | * | ||
4 | * Copyright (C) 2013 Renesas Solutions Corp. | ||
5 | * Copyright (C) 2013 Magnus Damm | ||
6 | * | ||
7 | * 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 | * the Free Software Foundation; version 2 of the License. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
19 | */ | ||
20 | |||
21 | #include <linux/gpio.h> | ||
22 | #include <linux/interrupt.h> | ||
23 | #include <linux/irqchip.h> | ||
24 | #include <linux/kernel.h> | ||
25 | #include <linux/pinctrl/machine.h> | ||
26 | #include <linux/platform_device.h> | ||
27 | #include <linux/regulator/fixed.h> | ||
28 | #include <linux/regulator/machine.h> | ||
29 | #include <linux/smsc911x.h> | ||
30 | #include <mach/common.h> | ||
31 | #include <mach/irqs.h> | ||
32 | #include <mach/r8a73a4.h> | ||
33 | #include <asm/mach-types.h> | ||
34 | #include <asm/mach/arch.h> | ||
35 | |||
36 | /* Dummy supplies, where voltage doesn't matter */ | ||
37 | static struct regulator_consumer_supply dummy_supplies[] = { | ||
38 | REGULATOR_SUPPLY("vddvario", "smsc911x"), | ||
39 | REGULATOR_SUPPLY("vdd33a", "smsc911x"), | ||
40 | }; | ||
41 | |||
42 | /* SMSC LAN9220 */ | ||
43 | static const struct resource lan9220_res[] = { | ||
44 | DEFINE_RES_MEM(0x08000000, 0x1000), | ||
45 | { | ||
46 | .start = irq_pin(40), /* IRQ40 */ | ||
47 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH, | ||
48 | }, | ||
49 | }; | ||
50 | |||
51 | static const struct smsc911x_platform_config lan9220_data = { | ||
52 | .flags = SMSC911X_USE_32BIT, | ||
53 | .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL, | ||
54 | .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_HIGH, | ||
55 | }; | ||
56 | |||
57 | static const struct pinctrl_map ape6evm_pinctrl_map[] = { | ||
58 | /* SCIFA0 console */ | ||
59 | PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a73a4", | ||
60 | "scifa0_data", "scifa0"), | ||
61 | /* SMSC */ | ||
62 | PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "pfc-r8a73a4", | ||
63 | "irqc_irq40", "irqc"), | ||
64 | }; | ||
65 | |||
66 | static void __init ape6evm_add_standard_devices(void) | ||
67 | { | ||
68 | r8a73a4_clock_init(); | ||
69 | pinctrl_register_mappings(ape6evm_pinctrl_map, | ||
70 | ARRAY_SIZE(ape6evm_pinctrl_map)); | ||
71 | r8a73a4_pinmux_init(); | ||
72 | r8a73a4_add_standard_devices(); | ||
73 | |||
74 | /* LAN9220 ethernet */ | ||
75 | gpio_request_one(270, GPIOF_OUT_INIT_HIGH, NULL); /* smsc9220 RESET */ | ||
76 | |||
77 | regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies)); | ||
78 | |||
79 | platform_device_register_resndata(&platform_bus, "smsc911x", -1, | ||
80 | lan9220_res, ARRAY_SIZE(lan9220_res), | ||
81 | &lan9220_data, sizeof(lan9220_data)); | ||
82 | } | ||
83 | |||
84 | static const char *ape6evm_boards_compat_dt[] __initdata = { | ||
85 | "renesas,ape6evm", | ||
86 | NULL, | ||
87 | }; | ||
88 | |||
89 | DT_MACHINE_START(APE6EVM_DT, "ape6evm") | ||
90 | .init_irq = irqchip_init, | ||
91 | .init_time = shmobile_timer_init, | ||
92 | .init_machine = ape6evm_add_standard_devices, | ||
93 | .dt_compat = ape6evm_boards_compat_dt, | ||
94 | MACHINE_END | ||