diff options
| -rw-r--r-- | arch/arm/mach-mx3/mach-mx31_3ds.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/arch/arm/mach-mx3/mach-mx31_3ds.c b/arch/arm/mach-mx3/mach-mx31_3ds.c index 80179cf9e2f5..f54af1e29ca4 100644 --- a/arch/arm/mach-mx3/mach-mx31_3ds.c +++ b/arch/arm/mach-mx3/mach-mx31_3ds.c | |||
| @@ -23,6 +23,9 @@ | |||
| 23 | #include <linux/gpio.h> | 23 | #include <linux/gpio.h> |
| 24 | #include <linux/smsc911x.h> | 24 | #include <linux/smsc911x.h> |
| 25 | #include <linux/platform_device.h> | 25 | #include <linux/platform_device.h> |
| 26 | #include <linux/mfd/mc13783.h> | ||
| 27 | #include <linux/spi/spi.h> | ||
| 28 | #include <linux/regulator/machine.h> | ||
| 26 | 29 | ||
| 27 | #include <mach/hardware.h> | 30 | #include <mach/hardware.h> |
| 28 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
| @@ -60,6 +63,33 @@ static int mx31_3ds_pins[] = { | |||
| 60 | MX31_PIN_CSPI2_SPI_RDY__SPI_RDY, | 63 | MX31_PIN_CSPI2_SPI_RDY__SPI_RDY, |
| 61 | MX31_PIN_CSPI2_SS0__SS0, | 64 | MX31_PIN_CSPI2_SS0__SS0, |
| 62 | MX31_PIN_CSPI2_SS2__SS2, /*CS for MC13783 */ | 65 | MX31_PIN_CSPI2_SS2__SS2, /*CS for MC13783 */ |
| 66 | /* MC13783 IRQ */ | ||
| 67 | IOMUX_MODE(MX31_PIN_GPIO1_3, IOMUX_CONFIG_GPIO), | ||
| 68 | }; | ||
| 69 | |||
| 70 | /* Regulators */ | ||
| 71 | static struct regulator_init_data pwgtx_init = { | ||
| 72 | .constraints = { | ||
| 73 | .boot_on = 1, | ||
| 74 | .always_on = 1, | ||
| 75 | }, | ||
| 76 | }; | ||
| 77 | |||
| 78 | static struct mc13783_regulator_init_data mx31_3ds_regulators[] = { | ||
| 79 | { | ||
| 80 | .id = MC13783_REGU_PWGT1SPI, /* Power Gate for ARM core. */ | ||
| 81 | .init_data = &pwgtx_init, | ||
| 82 | }, { | ||
| 83 | .id = MC13783_REGU_PWGT2SPI, /* Power Gate for L2 Cache. */ | ||
| 84 | .init_data = &pwgtx_init, | ||
| 85 | }, | ||
| 86 | }; | ||
| 87 | |||
| 88 | /* MC13783 */ | ||
| 89 | static struct mc13783_platform_data mc13783_pdata __initdata = { | ||
| 90 | .regulators = mx31_3ds_regulators, | ||
| 91 | .num_regulators = ARRAY_SIZE(mx31_3ds_regulators), | ||
| 92 | .flags = MC13783_USE_REGULATOR, | ||
| 63 | }; | 93 | }; |
| 64 | 94 | ||
| 65 | /* SPI */ | 95 | /* SPI */ |
| @@ -73,6 +103,18 @@ static struct spi_imx_master spi1_pdata = { | |||
| 73 | .num_chipselect = ARRAY_SIZE(spi1_internal_chipselect), | 103 | .num_chipselect = ARRAY_SIZE(spi1_internal_chipselect), |
| 74 | }; | 104 | }; |
| 75 | 105 | ||
| 106 | static struct spi_board_info mx31_3ds_spi_devs[] __initdata = { | ||
| 107 | { | ||
| 108 | .modalias = "mc13783", | ||
| 109 | .max_speed_hz = 1000000, | ||
| 110 | .bus_num = 1, | ||
| 111 | .chip_select = 1, /* SS2 */ | ||
| 112 | .platform_data = &mc13783_pdata, | ||
| 113 | .irq = IOMUX_TO_IRQ(MX31_PIN_GPIO1_3), | ||
| 114 | .mode = SPI_CS_HIGH, | ||
| 115 | }, | ||
| 116 | }; | ||
| 117 | |||
| 76 | /* | 118 | /* |
| 77 | * NAND Flash | 119 | * NAND Flash |
| 78 | */ | 120 | */ |
| @@ -268,7 +310,10 @@ static void __init mxc_board_init(void) | |||
| 268 | 310 | ||
| 269 | mxc_register_device(&mxc_uart_device0, &uart_pdata); | 311 | mxc_register_device(&mxc_uart_device0, &uart_pdata); |
| 270 | mxc_register_device(&mxc_nand_device, &imx31_3ds_nand_flash_pdata); | 312 | mxc_register_device(&mxc_nand_device, &imx31_3ds_nand_flash_pdata); |
| 313 | |||
| 271 | mxc_register_device(&mxc_spi_device1, &spi1_pdata); | 314 | mxc_register_device(&mxc_spi_device1, &spi1_pdata); |
| 315 | spi_register_board_info(mx31_3ds_spi_devs, | ||
| 316 | ARRAY_SIZE(mx31_3ds_spi_devs)); | ||
| 272 | 317 | ||
| 273 | if (!mx31_3ds_init_expio()) | 318 | if (!mx31_3ds_init_expio()) |
| 274 | platform_device_register(&smsc911x_device); | 319 | platform_device_register(&smsc911x_device); |
