aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-shmobile/board-ape6evm.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-shmobile/board-ape6evm.c')
-rw-r--r--arch/arm/mach-shmobile/board-ape6evm.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/arch/arm/mach-shmobile/board-ape6evm.c b/arch/arm/mach-shmobile/board-ape6evm.c
index af6dd39d3758..8c7529cc4860 100644
--- a/arch/arm/mach-shmobile/board-ape6evm.c
+++ b/arch/arm/mach-shmobile/board-ape6evm.c
@@ -21,6 +21,8 @@
21#include <linux/gpio.h> 21#include <linux/gpio.h>
22#include <linux/interrupt.h> 22#include <linux/interrupt.h>
23#include <linux/kernel.h> 23#include <linux/kernel.h>
24#include <linux/mmc/host.h>
25#include <linux/mmc/sh_mmcif.h>
24#include <linux/pinctrl/machine.h> 26#include <linux/pinctrl/machine.h>
25#include <linux/platform_device.h> 27#include <linux/platform_device.h>
26#include <linux/regulator/fixed.h> 28#include <linux/regulator/fixed.h>
@@ -54,6 +56,25 @@ static const struct smsc911x_platform_config lan9220_data = {
54 .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_HIGH, 56 .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_HIGH,
55}; 57};
56 58
59/*
60 * On APE6EVM power is supplied to MMCIF by a tps80032 regulator. For now we
61 * model a VDD supply to MMCIF, using a fixed 3.3V regulator.
62 */
63static struct regulator_consumer_supply fixed3v3_power_consumers[] =
64{
65 REGULATOR_SUPPLY("vmmc", "sh_mmcif.0"),
66};
67
68/* MMCIF */
69static struct sh_mmcif_plat_data mmcif0_pdata = {
70 .caps = MMC_CAP_8_BIT_DATA | MMC_CAP_NONREMOVABLE,
71};
72
73static struct resource mmcif0_resources[] = {
74 DEFINE_RES_MEM_NAMED(0xee200000, 0x100, "MMCIF0"),
75 DEFINE_RES_IRQ(gic_spi(169)),
76};
77
57static const struct pinctrl_map ape6evm_pinctrl_map[] = { 78static const struct pinctrl_map ape6evm_pinctrl_map[] = {
58 /* SCIFA0 console */ 79 /* SCIFA0 console */
59 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a73a4", 80 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a73a4",
@@ -61,6 +82,11 @@ static const struct pinctrl_map ape6evm_pinctrl_map[] = {
61 /* SMSC */ 82 /* SMSC */
62 PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "pfc-r8a73a4", 83 PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "pfc-r8a73a4",
63 "irqc_irq40", "irqc"), 84 "irqc_irq40", "irqc"),
85 /* MMCIF0 */
86 PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.0", "pfc-r8a73a4",
87 "mmc0_data8", "mmc0"),
88 PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.0", "pfc-r8a73a4",
89 "mmc0_ctrl", "mmc0"),
64}; 90};
65 91
66static void __init ape6evm_add_standard_devices(void) 92static void __init ape6evm_add_standard_devices(void)
@@ -93,6 +119,11 @@ static void __init ape6evm_add_standard_devices(void)
93 platform_device_register_resndata(&platform_bus, "smsc911x", -1, 119 platform_device_register_resndata(&platform_bus, "smsc911x", -1,
94 lan9220_res, ARRAY_SIZE(lan9220_res), 120 lan9220_res, ARRAY_SIZE(lan9220_res),
95 &lan9220_data, sizeof(lan9220_data)); 121 &lan9220_data, sizeof(lan9220_data));
122 regulator_register_always_on(1, "fixed-3.3V", fixed3v3_power_consumers,
123 ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
124 platform_device_register_resndata(&platform_bus, "sh_mmcif", 0,
125 mmcif0_resources, ARRAY_SIZE(mmcif0_resources),
126 &mmcif0_pdata, sizeof(mmcif0_pdata));
96} 127}
97 128
98static const char *ape6evm_boards_compat_dt[] __initdata = { 129static const char *ape6evm_boards_compat_dt[] __initdata = {