Loading arch/arm/mach-mx2/pcm038.c +94 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,10 @@ #include <linux/mtd/plat-ram.h> #include <linux/mtd/physmap.h> #include <linux/platform_device.h> #include <linux/regulator/machine.h> #include <linux/mfd/mc13783.h> #include <linux/spi/spi.h> #include <linux/irq.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> Loading @@ -35,6 +39,7 @@ #include <mach/iomux.h> #include <mach/imx-uart.h> #include <mach/mxc_nand.h> #include <mach/spi.h> #include "devices.h" Loading Loading @@ -78,8 +83,6 @@ static int pcm038_pins[] = { PC6_PF_I2C2_SCL, /* SPI1 */ PD25_PF_CSPI1_RDY, PD27_PF_CSPI1_SS1, PD28_PF_CSPI1_SS0, PD29_PF_CSPI1_SCLK, PD30_PF_CSPI1_MISO, PD31_PF_CSPI1_MOSI, Loading Loading @@ -196,6 +199,86 @@ static struct i2c_board_info pcm038_i2c_devices[] = { } }; static int pcm038_spi_cs[] = {GPIO_PORTD + 28}; static struct spi_imx_master pcm038_spi_0_data = { .chipselect = pcm038_spi_cs, .num_chipselect = ARRAY_SIZE(pcm038_spi_cs), }; static struct regulator_consumer_supply sdhc1_consumers[] = { { .dev = &mxc_sdhc_device1.dev, .supply = "sdhc_vcc", }, }; static struct regulator_init_data sdhc1_data = { .constraints = { .min_uV = 3000000, .max_uV = 3400000, .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS, .valid_modes_mask = REGULATOR_MODE_NORMAL | REGULATOR_MODE_FAST, .always_on = 0, .boot_on = 0, }, .num_consumer_supplies = ARRAY_SIZE(sdhc1_consumers), .consumer_supplies = sdhc1_consumers, }; static struct regulator_consumer_supply cam_consumers[] = { { .dev = NULL, .supply = "imx_cam_vcc", }, }; static struct regulator_init_data cam_data = { .constraints = { .min_uV = 3000000, .max_uV = 3400000, .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS, .valid_modes_mask = REGULATOR_MODE_NORMAL | REGULATOR_MODE_FAST, .always_on = 0, .boot_on = 0, }, .num_consumer_supplies = ARRAY_SIZE(cam_consumers), .consumer_supplies = cam_consumers, }; struct mc13783_regulator_init_data pcm038_regulators[] = { { .id = MC13783_REGU_VCAM, .init_data = &cam_data, }, { .id = MC13783_REGU_VMMC1, .init_data = &sdhc1_data, }, }; static struct mc13783_platform_data pcm038_pmic = { .regulators = pcm038_regulators, .num_regulators = ARRAY_SIZE(pcm038_regulators), .flags = MC13783_USE_ADC | MC13783_USE_REGULATOR | MC13783_USE_TOUCHSCREEN, }; static struct spi_board_info pcm038_spi_board_info[] __initdata = { { .modalias = "mc13783", .irq = IRQ_GPIOB(23), .max_speed_hz = 300000, .bus_num = 0, .chip_select = 0, .platform_data = &pcm038_pmic, .mode = SPI_CS_HIGH, } }; static void __init pcm038_init(void) { mxc_gpio_setup_multiple_pins(pcm038_pins, ARRAY_SIZE(pcm038_pins), Loading @@ -219,6 +302,15 @@ static void __init pcm038_init(void) /* PE18 for user-LED D40 */ mxc_gpio_mode(GPIO_PORTE | 18 | GPIO_GPIO | GPIO_OUT); mxc_gpio_mode(GPIO_PORTD | 28 | GPIO_GPIO | GPIO_OUT); /* MC13783 IRQ */ mxc_gpio_mode(GPIO_PORTB | 23 | GPIO_GPIO | GPIO_IN); mxc_register_device(&mxc_spi_device0, &pcm038_spi_0_data); spi_register_board_info(pcm038_spi_board_info, ARRAY_SIZE(pcm038_spi_board_info)); platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); #ifdef CONFIG_MACH_PCM970_BASEBOARD Loading Loading
arch/arm/mach-mx2/pcm038.c +94 −2 Original line number Diff line number Diff line Loading @@ -23,6 +23,10 @@ #include <linux/mtd/plat-ram.h> #include <linux/mtd/physmap.h> #include <linux/platform_device.h> #include <linux/regulator/machine.h> #include <linux/mfd/mc13783.h> #include <linux/spi/spi.h> #include <linux/irq.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> Loading @@ -35,6 +39,7 @@ #include <mach/iomux.h> #include <mach/imx-uart.h> #include <mach/mxc_nand.h> #include <mach/spi.h> #include "devices.h" Loading Loading @@ -78,8 +83,6 @@ static int pcm038_pins[] = { PC6_PF_I2C2_SCL, /* SPI1 */ PD25_PF_CSPI1_RDY, PD27_PF_CSPI1_SS1, PD28_PF_CSPI1_SS0, PD29_PF_CSPI1_SCLK, PD30_PF_CSPI1_MISO, PD31_PF_CSPI1_MOSI, Loading Loading @@ -196,6 +199,86 @@ static struct i2c_board_info pcm038_i2c_devices[] = { } }; static int pcm038_spi_cs[] = {GPIO_PORTD + 28}; static struct spi_imx_master pcm038_spi_0_data = { .chipselect = pcm038_spi_cs, .num_chipselect = ARRAY_SIZE(pcm038_spi_cs), }; static struct regulator_consumer_supply sdhc1_consumers[] = { { .dev = &mxc_sdhc_device1.dev, .supply = "sdhc_vcc", }, }; static struct regulator_init_data sdhc1_data = { .constraints = { .min_uV = 3000000, .max_uV = 3400000, .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS, .valid_modes_mask = REGULATOR_MODE_NORMAL | REGULATOR_MODE_FAST, .always_on = 0, .boot_on = 0, }, .num_consumer_supplies = ARRAY_SIZE(sdhc1_consumers), .consumer_supplies = sdhc1_consumers, }; static struct regulator_consumer_supply cam_consumers[] = { { .dev = NULL, .supply = "imx_cam_vcc", }, }; static struct regulator_init_data cam_data = { .constraints = { .min_uV = 3000000, .max_uV = 3400000, .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS, .valid_modes_mask = REGULATOR_MODE_NORMAL | REGULATOR_MODE_FAST, .always_on = 0, .boot_on = 0, }, .num_consumer_supplies = ARRAY_SIZE(cam_consumers), .consumer_supplies = cam_consumers, }; struct mc13783_regulator_init_data pcm038_regulators[] = { { .id = MC13783_REGU_VCAM, .init_data = &cam_data, }, { .id = MC13783_REGU_VMMC1, .init_data = &sdhc1_data, }, }; static struct mc13783_platform_data pcm038_pmic = { .regulators = pcm038_regulators, .num_regulators = ARRAY_SIZE(pcm038_regulators), .flags = MC13783_USE_ADC | MC13783_USE_REGULATOR | MC13783_USE_TOUCHSCREEN, }; static struct spi_board_info pcm038_spi_board_info[] __initdata = { { .modalias = "mc13783", .irq = IRQ_GPIOB(23), .max_speed_hz = 300000, .bus_num = 0, .chip_select = 0, .platform_data = &pcm038_pmic, .mode = SPI_CS_HIGH, } }; static void __init pcm038_init(void) { mxc_gpio_setup_multiple_pins(pcm038_pins, ARRAY_SIZE(pcm038_pins), Loading @@ -219,6 +302,15 @@ static void __init pcm038_init(void) /* PE18 for user-LED D40 */ mxc_gpio_mode(GPIO_PORTE | 18 | GPIO_GPIO | GPIO_OUT); mxc_gpio_mode(GPIO_PORTD | 28 | GPIO_GPIO | GPIO_OUT); /* MC13783 IRQ */ mxc_gpio_mode(GPIO_PORTB | 23 | GPIO_GPIO | GPIO_IN); mxc_register_device(&mxc_spi_device0, &pcm038_spi_0_data); spi_register_board_info(pcm038_spi_board_info, ARRAY_SIZE(pcm038_spi_board_info)); platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); #ifdef CONFIG_MACH_PCM970_BASEBOARD Loading