diff options
| -rw-r--r-- | arch/arm/mach-davinci/board-mityomapl138.c | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c index 7146916fa498..84d5aff50de4 100644 --- a/arch/arm/mach-davinci/board-mityomapl138.c +++ b/arch/arm/mach-davinci/board-mityomapl138.c | |||
| @@ -13,6 +13,8 @@ | |||
| 13 | #include <linux/console.h> | 13 | #include <linux/console.h> |
| 14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
| 15 | #include <linux/mtd/partitions.h> | 15 | #include <linux/mtd/partitions.h> |
| 16 | #include <linux/regulator/machine.h> | ||
| 17 | #include <linux/i2c.h> | ||
| 16 | 18 | ||
| 17 | #include <asm/mach-types.h> | 19 | #include <asm/mach-types.h> |
| 18 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
| @@ -25,6 +27,141 @@ | |||
| 25 | #define MITYOMAPL138_PHY_MASK 0x08 /* hardcoded for now */ | 27 | #define MITYOMAPL138_PHY_MASK 0x08 /* hardcoded for now */ |
| 26 | #define MITYOMAPL138_MDIO_FREQUENCY (2200000) /* PHY bus frequency */ | 28 | #define MITYOMAPL138_MDIO_FREQUENCY (2200000) /* PHY bus frequency */ |
| 27 | 29 | ||
| 30 | static struct davinci_i2c_platform_data mityomap_i2c_0_pdata = { | ||
| 31 | .bus_freq = 100, /* kHz */ | ||
| 32 | .bus_delay = 0, /* usec */ | ||
| 33 | }; | ||
| 34 | |||
| 35 | /* TPS65023 voltage regulator support */ | ||
| 36 | /* 1.2V Core */ | ||
| 37 | struct regulator_consumer_supply tps65023_dcdc1_consumers[] = { | ||
| 38 | { | ||
| 39 | .supply = "cvdd", | ||
| 40 | }, | ||
| 41 | }; | ||
| 42 | |||
| 43 | /* 1.8V */ | ||
| 44 | struct regulator_consumer_supply tps65023_dcdc2_consumers[] = { | ||
| 45 | { | ||
| 46 | .supply = "usb0_vdda18", | ||
| 47 | }, | ||
| 48 | { | ||
| 49 | .supply = "usb1_vdda18", | ||
| 50 | }, | ||
| 51 | { | ||
| 52 | .supply = "ddr_dvdd18", | ||
| 53 | }, | ||
| 54 | { | ||
| 55 | .supply = "sata_vddr", | ||
| 56 | }, | ||
| 57 | }; | ||
| 58 | |||
| 59 | /* 1.2V */ | ||
| 60 | struct regulator_consumer_supply tps65023_dcdc3_consumers[] = { | ||
| 61 | { | ||
| 62 | .supply = "sata_vdd", | ||
| 63 | }, | ||
| 64 | { | ||
| 65 | .supply = "usb_cvdd", | ||
| 66 | }, | ||
| 67 | { | ||
| 68 | .supply = "pll0_vdda", | ||
| 69 | }, | ||
| 70 | { | ||
| 71 | .supply = "pll1_vdda", | ||
| 72 | }, | ||
| 73 | }; | ||
| 74 | |||
| 75 | /* 1.8V Aux LDO, not used */ | ||
| 76 | struct regulator_consumer_supply tps65023_ldo1_consumers[] = { | ||
| 77 | { | ||
| 78 | .supply = "1.8v_aux", | ||
| 79 | }, | ||
| 80 | }; | ||
| 81 | |||
| 82 | /* FPGA VCC Aux (2.5 or 3.3) LDO */ | ||
| 83 | struct regulator_consumer_supply tps65023_ldo2_consumers[] = { | ||
| 84 | { | ||
| 85 | .supply = "vccaux", | ||
| 86 | }, | ||
| 87 | }; | ||
| 88 | |||
| 89 | struct regulator_init_data tps65023_regulator_data[] = { | ||
| 90 | /* dcdc1 */ | ||
| 91 | { | ||
| 92 | .constraints = { | ||
| 93 | .min_uV = 1150000, | ||
| 94 | .max_uV = 1350000, | ||
| 95 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | | ||
| 96 | REGULATOR_CHANGE_STATUS, | ||
| 97 | .boot_on = 1, | ||
| 98 | }, | ||
| 99 | .num_consumer_supplies = ARRAY_SIZE(tps65023_dcdc1_consumers), | ||
| 100 | .consumer_supplies = tps65023_dcdc1_consumers, | ||
| 101 | }, | ||
| 102 | /* dcdc2 */ | ||
| 103 | { | ||
| 104 | .constraints = { | ||
| 105 | .min_uV = 1800000, | ||
| 106 | .max_uV = 1800000, | ||
| 107 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
| 108 | .boot_on = 1, | ||
| 109 | }, | ||
| 110 | .num_consumer_supplies = ARRAY_SIZE(tps65023_dcdc2_consumers), | ||
| 111 | .consumer_supplies = tps65023_dcdc2_consumers, | ||
| 112 | }, | ||
| 113 | /* dcdc3 */ | ||
| 114 | { | ||
| 115 | .constraints = { | ||
| 116 | .min_uV = 1200000, | ||
| 117 | .max_uV = 1200000, | ||
| 118 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
| 119 | .boot_on = 1, | ||
| 120 | }, | ||
| 121 | .num_consumer_supplies = ARRAY_SIZE(tps65023_dcdc3_consumers), | ||
| 122 | .consumer_supplies = tps65023_dcdc3_consumers, | ||
| 123 | }, | ||
| 124 | /* ldo1 */ | ||
| 125 | { | ||
| 126 | .constraints = { | ||
| 127 | .min_uV = 1800000, | ||
| 128 | .max_uV = 1800000, | ||
| 129 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
| 130 | .boot_on = 1, | ||
| 131 | }, | ||
| 132 | .num_consumer_supplies = ARRAY_SIZE(tps65023_ldo1_consumers), | ||
| 133 | .consumer_supplies = tps65023_ldo1_consumers, | ||
| 134 | }, | ||
| 135 | /* ldo2 */ | ||
| 136 | { | ||
| 137 | .constraints = { | ||
| 138 | .min_uV = 2500000, | ||
| 139 | .max_uV = 3300000, | ||
| 140 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | | ||
| 141 | REGULATOR_CHANGE_STATUS, | ||
| 142 | .boot_on = 1, | ||
| 143 | }, | ||
| 144 | .num_consumer_supplies = ARRAY_SIZE(tps65023_ldo2_consumers), | ||
| 145 | .consumer_supplies = tps65023_ldo2_consumers, | ||
| 146 | }, | ||
| 147 | }; | ||
| 148 | |||
| 149 | static struct i2c_board_info __initdata mityomap_tps65023_info[] = { | ||
| 150 | { | ||
| 151 | I2C_BOARD_INFO("tps65023", 0x48), | ||
| 152 | .platform_data = &tps65023_regulator_data[0], | ||
| 153 | }, | ||
| 154 | { | ||
| 155 | I2C_BOARD_INFO("24c02", 0x50), | ||
| 156 | }, | ||
| 157 | }; | ||
| 158 | |||
| 159 | static int __init pmic_tps65023_init(void) | ||
| 160 | { | ||
| 161 | return i2c_register_board_info(1, mityomap_tps65023_info, | ||
| 162 | ARRAY_SIZE(mityomap_tps65023_info)); | ||
| 163 | } | ||
| 164 | |||
| 28 | /* | 165 | /* |
| 29 | * MityDSP-L138 includes a 256 MByte large-page NAND flash | 166 | * MityDSP-L138 includes a 256 MByte large-page NAND flash |
| 30 | * (128K blocks). | 167 | * (128K blocks). |
| @@ -172,6 +309,14 @@ static void __init mityomapl138_init(void) | |||
| 172 | 309 | ||
| 173 | davinci_serial_init(&mityomapl138_uart_config); | 310 | davinci_serial_init(&mityomapl138_uart_config); |
| 174 | 311 | ||
| 312 | ret = da8xx_register_i2c(0, &mityomap_i2c_0_pdata); | ||
| 313 | if (ret) | ||
| 314 | pr_warning("i2c0 registration failed: %d\n", ret); | ||
| 315 | |||
| 316 | ret = pmic_tps65023_init(); | ||
| 317 | if (ret) | ||
| 318 | pr_warning("TPS65023 PMIC init failed: %d\n", ret); | ||
| 319 | |||
| 175 | mityomapl138_setup_nand(); | 320 | mityomapl138_setup_nand(); |
| 176 | 321 | ||
| 177 | mityomapl138_config_emac(); | 322 | mityomapl138_config_emac(); |
