diff options
Diffstat (limited to 'arch/arm/mach-exynos')
-rw-r--r-- | arch/arm/mach-exynos/Kconfig | 10 | ||||
-rw-r--r-- | arch/arm/mach-exynos/mach-nuri.c | 80 | ||||
-rw-r--r-- | arch/arm/mach-exynos/mach-origen.c | 37 | ||||
-rw-r--r-- | arch/arm/mach-exynos/mach-smdkv310.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-exynos/mach-universal_c210.c | 80 |
5 files changed, 201 insertions, 9 deletions
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index dfad6538b273..98997c2da262 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig | |||
@@ -179,7 +179,9 @@ config MACH_SMDKV310 | |||
179 | select S5P_DEV_FIMC1 | 179 | select S5P_DEV_FIMC1 |
180 | select S5P_DEV_FIMC2 | 180 | select S5P_DEV_FIMC2 |
181 | select S5P_DEV_FIMC3 | 181 | select S5P_DEV_FIMC3 |
182 | select S5P_DEV_G2D | ||
182 | select S5P_DEV_I2C_HDMIPHY | 183 | select S5P_DEV_I2C_HDMIPHY |
184 | select S5P_DEV_JPEG | ||
183 | select S5P_DEV_MFC | 185 | select S5P_DEV_MFC |
184 | select S5P_DEV_TV | 186 | select S5P_DEV_TV |
185 | select S5P_DEV_USB_EHCI | 187 | select S5P_DEV_USB_EHCI |
@@ -225,7 +227,9 @@ config MACH_UNIVERSAL_C210 | |||
225 | select S5P_DEV_FIMC1 | 227 | select S5P_DEV_FIMC1 |
226 | select S5P_DEV_FIMC2 | 228 | select S5P_DEV_FIMC2 |
227 | select S5P_DEV_FIMC3 | 229 | select S5P_DEV_FIMC3 |
230 | select S5P_DEV_G2D | ||
228 | select S5P_DEV_CSIS0 | 231 | select S5P_DEV_CSIS0 |
232 | select S5P_DEV_JPEG | ||
229 | select S5P_DEV_FIMD0 | 233 | select S5P_DEV_FIMD0 |
230 | select S3C_DEV_HSMMC | 234 | select S3C_DEV_HSMMC |
231 | select S3C_DEV_HSMMC2 | 235 | select S3C_DEV_HSMMC2 |
@@ -262,11 +266,14 @@ config MACH_NURI | |||
262 | select S3C_DEV_I2C1 | 266 | select S3C_DEV_I2C1 |
263 | select S3C_DEV_I2C3 | 267 | select S3C_DEV_I2C3 |
264 | select S3C_DEV_I2C5 | 268 | select S3C_DEV_I2C5 |
269 | select S3C_DEV_I2C6 | ||
265 | select S5P_DEV_CSIS0 | 270 | select S5P_DEV_CSIS0 |
271 | select S5P_DEV_JPEG | ||
266 | select S5P_DEV_FIMC0 | 272 | select S5P_DEV_FIMC0 |
267 | select S5P_DEV_FIMC1 | 273 | select S5P_DEV_FIMC1 |
268 | select S5P_DEV_FIMC2 | 274 | select S5P_DEV_FIMC2 |
269 | select S5P_DEV_FIMC3 | 275 | select S5P_DEV_FIMC3 |
276 | select S5P_DEV_G2D | ||
270 | select S5P_DEV_MFC | 277 | select S5P_DEV_MFC |
271 | select S5P_DEV_USB_EHCI | 278 | select S5P_DEV_USB_EHCI |
272 | select S5P_SETUP_MIPIPHY | 279 | select S5P_SETUP_MIPIPHY |
@@ -276,6 +283,7 @@ config MACH_NURI | |||
276 | select EXYNOS4_SETUP_I2C1 | 283 | select EXYNOS4_SETUP_I2C1 |
277 | select EXYNOS4_SETUP_I2C3 | 284 | select EXYNOS4_SETUP_I2C3 |
278 | select EXYNOS4_SETUP_I2C5 | 285 | select EXYNOS4_SETUP_I2C5 |
286 | select EXYNOS4_SETUP_I2C6 | ||
279 | select EXYNOS4_SETUP_SDHCI | 287 | select EXYNOS4_SETUP_SDHCI |
280 | select EXYNOS4_SETUP_USB_PHY | 288 | select EXYNOS4_SETUP_USB_PHY |
281 | select S5P_SETUP_MIPIPHY | 289 | select S5P_SETUP_MIPIPHY |
@@ -296,7 +304,9 @@ config MACH_ORIGEN | |||
296 | select S5P_DEV_FIMC2 | 304 | select S5P_DEV_FIMC2 |
297 | select S5P_DEV_FIMC3 | 305 | select S5P_DEV_FIMC3 |
298 | select S5P_DEV_FIMD0 | 306 | select S5P_DEV_FIMD0 |
307 | select S5P_DEV_G2D | ||
299 | select S5P_DEV_I2C_HDMIPHY | 308 | select S5P_DEV_I2C_HDMIPHY |
309 | select S5P_DEV_JPEG | ||
300 | select S5P_DEV_MFC | 310 | select S5P_DEV_MFC |
301 | select S5P_DEV_TV | 311 | select S5P_DEV_TV |
302 | select S5P_DEV_USB_EHCI | 312 | select S5P_DEV_USB_EHCI |
diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c index aa37179d776c..191f5c675fe1 100644 --- a/arch/arm/mach-exynos/mach-nuri.c +++ b/arch/arm/mach-exynos/mach-nuri.c | |||
@@ -28,6 +28,7 @@ | |||
28 | 28 | ||
29 | #include <video/platform_lcd.h> | 29 | #include <video/platform_lcd.h> |
30 | #include <media/m5mols.h> | 30 | #include <media/m5mols.h> |
31 | #include <media/s5k6aa.h> | ||
31 | #include <media/s5p_fimc.h> | 32 | #include <media/s5p_fimc.h> |
32 | #include <media/v4l2-mediabus.h> | 33 | #include <media/v4l2-mediabus.h> |
33 | 34 | ||
@@ -75,6 +76,7 @@ enum fixed_regulator_id { | |||
75 | FIXED_REG_ID_MAX8903, | 76 | FIXED_REG_ID_MAX8903, |
76 | FIXED_REG_ID_CAM_A28V, | 77 | FIXED_REG_ID_CAM_A28V, |
77 | FIXED_REG_ID_CAM_12V, | 78 | FIXED_REG_ID_CAM_12V, |
79 | FIXED_REG_ID_CAM_VT_15V, | ||
78 | }; | 80 | }; |
79 | 81 | ||
80 | static struct s3c2410_uartcfg nuri_uartcfgs[] __initdata = { | 82 | static struct s3c2410_uartcfg nuri_uartcfgs[] __initdata = { |
@@ -399,6 +401,9 @@ static struct regulator_consumer_supply __initdata max8997_ldo4_[] = { | |||
399 | static struct regulator_consumer_supply __initdata max8997_ldo5_[] = { | 401 | static struct regulator_consumer_supply __initdata max8997_ldo5_[] = { |
400 | REGULATOR_SUPPLY("vhsic", "modemctl"), /* MODEM */ | 402 | REGULATOR_SUPPLY("vhsic", "modemctl"), /* MODEM */ |
401 | }; | 403 | }; |
404 | static struct regulator_consumer_supply nuri_max8997_ldo6_consumer[] = { | ||
405 | REGULATOR_SUPPLY("vdd_reg", "6-003c"), /* S5K6AA camera */ | ||
406 | }; | ||
402 | static struct regulator_consumer_supply __initdata max8997_ldo7_[] = { | 407 | static struct regulator_consumer_supply __initdata max8997_ldo7_[] = { |
403 | REGULATOR_SUPPLY("dig_18", "0-001f"), /* HCD803 */ | 408 | REGULATOR_SUPPLY("dig_18", "0-001f"), /* HCD803 */ |
404 | }; | 409 | }; |
@@ -431,7 +436,7 @@ static struct regulator_consumer_supply __initdata max8997_buck1_[] = { | |||
431 | REGULATOR_SUPPLY("vdd_arm", NULL), /* CPUFREQ */ | 436 | REGULATOR_SUPPLY("vdd_arm", NULL), /* CPUFREQ */ |
432 | }; | 437 | }; |
433 | static struct regulator_consumer_supply __initdata max8997_buck2_[] = { | 438 | static struct regulator_consumer_supply __initdata max8997_buck2_[] = { |
434 | REGULATOR_SUPPLY("vdd_int", NULL), /* CPUFREQ */ | 439 | REGULATOR_SUPPLY("vdd_int", "exynos4210-busfreq.0"), /* CPUFREQ */ |
435 | }; | 440 | }; |
436 | static struct regulator_consumer_supply __initdata max8997_buck3_[] = { | 441 | static struct regulator_consumer_supply __initdata max8997_buck3_[] = { |
437 | REGULATOR_SUPPLY("vdd", "mali_dev.0"), /* G3D of Exynos 4 */ | 442 | REGULATOR_SUPPLY("vdd", "mali_dev.0"), /* G3D of Exynos 4 */ |
@@ -546,6 +551,8 @@ static struct regulator_init_data __initdata max8997_ldo6_data = { | |||
546 | .enabled = 1, | 551 | .enabled = 1, |
547 | }, | 552 | }, |
548 | }, | 553 | }, |
554 | .num_consumer_supplies = ARRAY_SIZE(nuri_max8997_ldo6_consumer), | ||
555 | .consumer_supplies = nuri_max8997_ldo6_consumer, | ||
549 | }; | 556 | }; |
550 | 557 | ||
551 | static struct regulator_init_data __initdata max8997_ldo7_data = { | 558 | static struct regulator_init_data __initdata max8997_ldo7_data = { |
@@ -742,7 +749,7 @@ static struct regulator_init_data __initdata max8997_buck2_data = { | |||
742 | .constraints = { | 749 | .constraints = { |
743 | .name = "VINT_1.1V_C210", | 750 | .name = "VINT_1.1V_C210", |
744 | .min_uV = 900000, | 751 | .min_uV = 900000, |
745 | .max_uV = 1100000, | 752 | .max_uV = 1200000, |
746 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, | 753 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, |
747 | .always_on = 1, | 754 | .always_on = 1, |
748 | .state_mem = { | 755 | .state_mem = { |
@@ -957,7 +964,6 @@ static struct max8997_platform_data __initdata nuri_max8997_pdata = { | |||
957 | .regulators = nuri_max8997_regulators, | 964 | .regulators = nuri_max8997_regulators, |
958 | 965 | ||
959 | .buck125_gpios = { EXYNOS4_GPX0(5), EXYNOS4_GPX0(6), EXYNOS4_GPL0(0) }, | 966 | .buck125_gpios = { EXYNOS4_GPX0(5), EXYNOS4_GPX0(6), EXYNOS4_GPL0(0) }, |
960 | .buck2_gpiodvs = true, | ||
961 | 967 | ||
962 | .buck1_voltage[0] = 1350000, /* 1.35V */ | 968 | .buck1_voltage[0] = 1350000, /* 1.35V */ |
963 | .buck1_voltage[1] = 1300000, /* 1.3V */ | 969 | .buck1_voltage[1] = 1300000, /* 1.3V */ |
@@ -1116,7 +1122,30 @@ static void __init nuri_ehci_init(void) | |||
1116 | } | 1122 | } |
1117 | 1123 | ||
1118 | /* CAMERA */ | 1124 | /* CAMERA */ |
1125 | static struct regulator_consumer_supply cam_vt_cam15_supply = | ||
1126 | REGULATOR_SUPPLY("vdd_core", "6-003c"); | ||
1127 | |||
1128 | static struct regulator_init_data cam_vt_cam15_reg_init_data = { | ||
1129 | .constraints = { .valid_ops_mask = REGULATOR_CHANGE_STATUS }, | ||
1130 | .num_consumer_supplies = 1, | ||
1131 | .consumer_supplies = &cam_vt_cam15_supply, | ||
1132 | }; | ||
1133 | |||
1134 | static struct fixed_voltage_config cam_vt_cam15_fixed_voltage_cfg = { | ||
1135 | .supply_name = "VT_CAM_1.5V", | ||
1136 | .microvolts = 1500000, | ||
1137 | .gpio = EXYNOS4_GPE2(2), /* VT_CAM_1.5V_EN */ | ||
1138 | .enable_high = 1, | ||
1139 | .init_data = &cam_vt_cam15_reg_init_data, | ||
1140 | }; | ||
1141 | |||
1142 | static struct platform_device cam_vt_cam15_fixed_rdev = { | ||
1143 | .name = "reg-fixed-voltage", .id = FIXED_REG_ID_CAM_VT_15V, | ||
1144 | .dev = { .platform_data = &cam_vt_cam15_fixed_voltage_cfg }, | ||
1145 | }; | ||
1146 | |||
1119 | static struct regulator_consumer_supply cam_vdda_supply[] = { | 1147 | static struct regulator_consumer_supply cam_vdda_supply[] = { |
1148 | REGULATOR_SUPPLY("vdda", "6-003c"), | ||
1120 | REGULATOR_SUPPLY("a_sensor", "0-001f"), | 1149 | REGULATOR_SUPPLY("a_sensor", "0-001f"), |
1121 | }; | 1150 | }; |
1122 | 1151 | ||
@@ -1173,6 +1202,21 @@ static struct s5p_platform_mipi_csis mipi_csis_platdata = { | |||
1173 | 1202 | ||
1174 | #define GPIO_CAM_MEGA_RST EXYNOS4_GPY3(7) /* ISP_RESET */ | 1203 | #define GPIO_CAM_MEGA_RST EXYNOS4_GPY3(7) /* ISP_RESET */ |
1175 | #define GPIO_CAM_8M_ISP_INT EXYNOS4_GPL2(5) | 1204 | #define GPIO_CAM_8M_ISP_INT EXYNOS4_GPL2(5) |
1205 | #define GPIO_CAM_VT_NSTBY EXYNOS4_GPL2(0) | ||
1206 | #define GPIO_CAM_VT_NRST EXYNOS4_GPL2(1) | ||
1207 | |||
1208 | static struct s5k6aa_platform_data s5k6aa_pldata = { | ||
1209 | .mclk_frequency = 24000000UL, | ||
1210 | .gpio_reset = { GPIO_CAM_VT_NRST, 0 }, | ||
1211 | .gpio_stby = { GPIO_CAM_VT_NSTBY, 0 }, | ||
1212 | .bus_type = V4L2_MBUS_PARALLEL, | ||
1213 | .horiz_flip = 1, | ||
1214 | }; | ||
1215 | |||
1216 | static struct i2c_board_info s5k6aa_board_info = { | ||
1217 | I2C_BOARD_INFO("S5K6AA", 0x3c), | ||
1218 | .platform_data = &s5k6aa_pldata, | ||
1219 | }; | ||
1176 | 1220 | ||
1177 | static struct m5mols_platform_data m5mols_platdata = { | 1221 | static struct m5mols_platform_data m5mols_platdata = { |
1178 | .gpio_reset = GPIO_CAM_MEGA_RST, | 1222 | .gpio_reset = GPIO_CAM_MEGA_RST, |
@@ -1185,6 +1229,13 @@ static struct i2c_board_info m5mols_board_info = { | |||
1185 | 1229 | ||
1186 | static struct s5p_fimc_isp_info nuri_camera_sensors[] = { | 1230 | static struct s5p_fimc_isp_info nuri_camera_sensors[] = { |
1187 | { | 1231 | { |
1232 | .flags = V4L2_MBUS_PCLK_SAMPLE_RISING | | ||
1233 | V4L2_MBUS_VSYNC_ACTIVE_LOW, | ||
1234 | .bus_type = FIMC_ITU_601, | ||
1235 | .board_info = &s5k6aa_board_info, | ||
1236 | .clk_frequency = 24000000UL, | ||
1237 | .i2c_bus_num = 6, | ||
1238 | }, { | ||
1188 | .flags = V4L2_MBUS_PCLK_SAMPLE_FALLING | | 1239 | .flags = V4L2_MBUS_PCLK_SAMPLE_FALLING | |
1189 | V4L2_MBUS_VSYNC_ACTIVE_LOW, | 1240 | V4L2_MBUS_VSYNC_ACTIVE_LOW, |
1190 | .bus_type = FIMC_MIPI_CSI2, | 1241 | .bus_type = FIMC_MIPI_CSI2, |
@@ -1200,11 +1251,13 @@ static struct s5p_platform_fimc fimc_md_platdata = { | |||
1200 | }; | 1251 | }; |
1201 | 1252 | ||
1202 | static struct gpio nuri_camera_gpios[] = { | 1253 | static struct gpio nuri_camera_gpios[] = { |
1254 | { GPIO_CAM_VT_NSTBY, GPIOF_OUT_INIT_LOW, "CAM_VGA_NSTBY" }, | ||
1255 | { GPIO_CAM_VT_NRST, GPIOF_OUT_INIT_LOW, "CAM_VGA_NRST" }, | ||
1203 | { GPIO_CAM_8M_ISP_INT, GPIOF_IN, "8M_ISP_INT" }, | 1256 | { GPIO_CAM_8M_ISP_INT, GPIOF_IN, "8M_ISP_INT" }, |
1204 | { GPIO_CAM_MEGA_RST, GPIOF_OUT_INIT_LOW, "CAM_8M_NRST" }, | 1257 | { GPIO_CAM_MEGA_RST, GPIOF_OUT_INIT_LOW, "CAM_8M_NRST" }, |
1205 | }; | 1258 | }; |
1206 | 1259 | ||
1207 | static void nuri_camera_init(void) | 1260 | static void __init nuri_camera_init(void) |
1208 | { | 1261 | { |
1209 | s3c_set_platdata(&mipi_csis_platdata, sizeof(mipi_csis_platdata), | 1262 | s3c_set_platdata(&mipi_csis_platdata, sizeof(mipi_csis_platdata), |
1210 | &s5p_device_mipi_csis0); | 1263 | &s5p_device_mipi_csis0); |
@@ -1224,6 +1277,8 @@ static void nuri_camera_init(void) | |||
1224 | pr_err("%s: Failed to configure 8M_ISP_INT GPIO\n", __func__); | 1277 | pr_err("%s: Failed to configure 8M_ISP_INT GPIO\n", __func__); |
1225 | 1278 | ||
1226 | /* Free GPIOs controlled directly by the sensor drivers. */ | 1279 | /* Free GPIOs controlled directly by the sensor drivers. */ |
1280 | gpio_free(GPIO_CAM_VT_NRST); | ||
1281 | gpio_free(GPIO_CAM_VT_NSTBY); | ||
1227 | gpio_free(GPIO_CAM_MEGA_RST); | 1282 | gpio_free(GPIO_CAM_MEGA_RST); |
1228 | 1283 | ||
1229 | if (exynos4_fimc_setup_gpio(S5P_CAMPORT_A)) { | 1284 | if (exynos4_fimc_setup_gpio(S5P_CAMPORT_A)) { |
@@ -1234,15 +1289,27 @@ static void nuri_camera_init(void) | |||
1234 | s5p_gpio_set_drvstr(EXYNOS4_GPJ1(3), S5P_GPIO_DRVSTR_LV4); | 1289 | s5p_gpio_set_drvstr(EXYNOS4_GPJ1(3), S5P_GPIO_DRVSTR_LV4); |
1235 | } | 1290 | } |
1236 | 1291 | ||
1292 | static struct s3c2410_platform_i2c nuri_i2c6_platdata __initdata = { | ||
1293 | .frequency = 400000U, | ||
1294 | .sda_delay = 200, | ||
1295 | .bus_num = 6, | ||
1296 | }; | ||
1297 | |||
1237 | static struct s3c2410_platform_i2c nuri_i2c0_platdata __initdata = { | 1298 | static struct s3c2410_platform_i2c nuri_i2c0_platdata __initdata = { |
1238 | .frequency = 400000U, | 1299 | .frequency = 400000U, |
1239 | .sda_delay = 200, | 1300 | .sda_delay = 200, |
1240 | }; | 1301 | }; |
1241 | 1302 | ||
1303 | /* DEVFREQ controlling memory/bus */ | ||
1304 | static struct platform_device exynos4_bus_devfreq = { | ||
1305 | .name = "exynos4210-busfreq", | ||
1306 | }; | ||
1307 | |||
1242 | static struct platform_device *nuri_devices[] __initdata = { | 1308 | static struct platform_device *nuri_devices[] __initdata = { |
1243 | /* Samsung Platform Devices */ | 1309 | /* Samsung Platform Devices */ |
1244 | &s3c_device_i2c5, /* PMIC should initialize first */ | 1310 | &s3c_device_i2c5, /* PMIC should initialize first */ |
1245 | &s3c_device_i2c0, | 1311 | &s3c_device_i2c0, |
1312 | &s3c_device_i2c6, | ||
1246 | &emmc_fixed_voltage, | 1313 | &emmc_fixed_voltage, |
1247 | &s5p_device_mipi_csis0, | 1314 | &s5p_device_mipi_csis0, |
1248 | &s5p_device_fimc0, | 1315 | &s5p_device_fimc0, |
@@ -1259,6 +1326,8 @@ static struct platform_device *nuri_devices[] __initdata = { | |||
1259 | &s3c_device_i2c3, | 1326 | &s3c_device_i2c3, |
1260 | &i2c9_gpio, | 1327 | &i2c9_gpio, |
1261 | &s3c_device_adc, | 1328 | &s3c_device_adc, |
1329 | &s5p_device_g2d, | ||
1330 | &s5p_device_jpeg, | ||
1262 | &s3c_device_rtc, | 1331 | &s3c_device_rtc, |
1263 | &s5p_device_mfc, | 1332 | &s5p_device_mfc, |
1264 | &s5p_device_mfc_l, | 1333 | &s5p_device_mfc_l, |
@@ -1271,8 +1340,10 @@ static struct platform_device *nuri_devices[] __initdata = { | |||
1271 | &nuri_backlight_device, | 1340 | &nuri_backlight_device, |
1272 | &max8903_fixed_reg_dev, | 1341 | &max8903_fixed_reg_dev, |
1273 | &nuri_max8903_device, | 1342 | &nuri_max8903_device, |
1343 | &cam_vt_cam15_fixed_rdev, | ||
1274 | &cam_vdda_fixed_rdev, | 1344 | &cam_vdda_fixed_rdev, |
1275 | &cam_8m_12v_fixed_rdev, | 1345 | &cam_8m_12v_fixed_rdev, |
1346 | &exynos4_bus_devfreq, | ||
1276 | }; | 1347 | }; |
1277 | 1348 | ||
1278 | static void __init nuri_map_io(void) | 1349 | static void __init nuri_map_io(void) |
@@ -1302,6 +1373,7 @@ static void __init nuri_machine_init(void) | |||
1302 | i2c_register_board_info(5, i2c5_devs, ARRAY_SIZE(i2c5_devs)); | 1373 | i2c_register_board_info(5, i2c5_devs, ARRAY_SIZE(i2c5_devs)); |
1303 | i2c9_devs[I2C9_MAX17042].irq = gpio_to_irq(EXYNOS4_GPX2(3)); | 1374 | i2c9_devs[I2C9_MAX17042].irq = gpio_to_irq(EXYNOS4_GPX2(3)); |
1304 | i2c_register_board_info(9, i2c9_devs, ARRAY_SIZE(i2c9_devs)); | 1375 | i2c_register_board_info(9, i2c9_devs, ARRAY_SIZE(i2c9_devs)); |
1376 | s3c_i2c6_set_platdata(&nuri_i2c6_platdata); | ||
1305 | 1377 | ||
1306 | s5p_fimd0_set_platdata(&nuri_fb_pdata); | 1378 | s5p_fimd0_set_platdata(&nuri_fb_pdata); |
1307 | 1379 | ||
diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c index b4d032d5c878..878d4c99142d 100644 --- a/arch/arm/mach-exynos/mach-origen.c +++ b/arch/arm/mach-exynos/mach-origen.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/regulator/machine.h> | 20 | #include <linux/regulator/machine.h> |
21 | #include <linux/mfd/max8997.h> | 21 | #include <linux/mfd/max8997.h> |
22 | #include <linux/lcd.h> | 22 | #include <linux/lcd.h> |
23 | #include <linux/rfkill-gpio.h> | ||
23 | 24 | ||
24 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
25 | #include <asm/hardware/gic.h> | 26 | #include <asm/hardware/gic.h> |
@@ -235,6 +236,7 @@ static struct regulator_init_data __initdata max8997_ldo9_data = { | |||
235 | .min_uV = 2800000, | 236 | .min_uV = 2800000, |
236 | .max_uV = 2800000, | 237 | .max_uV = 2800000, |
237 | .apply_uV = 1, | 238 | .apply_uV = 1, |
239 | .always_on = 1, | ||
238 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | 240 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, |
239 | .state_mem = { | 241 | .state_mem = { |
240 | .disabled = 1, | 242 | .disabled = 1, |
@@ -278,6 +280,7 @@ static struct regulator_init_data __initdata max8997_ldo14_data = { | |||
278 | .min_uV = 1800000, | 280 | .min_uV = 1800000, |
279 | .max_uV = 1800000, | 281 | .max_uV = 1800000, |
280 | .apply_uV = 1, | 282 | .apply_uV = 1, |
283 | .always_on = 1, | ||
281 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | 284 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, |
282 | .state_mem = { | 285 | .state_mem = { |
283 | .disabled = 1, | 286 | .disabled = 1, |
@@ -293,6 +296,7 @@ static struct regulator_init_data __initdata max8997_ldo17_data = { | |||
293 | .min_uV = 3300000, | 296 | .min_uV = 3300000, |
294 | .max_uV = 3300000, | 297 | .max_uV = 3300000, |
295 | .apply_uV = 1, | 298 | .apply_uV = 1, |
299 | .always_on = 1, | ||
296 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | 300 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, |
297 | .state_mem = { | 301 | .state_mem = { |
298 | .disabled = 1, | 302 | .disabled = 1, |
@@ -602,6 +606,23 @@ static struct s3c_fb_platdata origen_lcd_pdata __initdata = { | |||
602 | .setup_gpio = exynos4_fimd0_gpio_setup_24bpp, | 606 | .setup_gpio = exynos4_fimd0_gpio_setup_24bpp, |
603 | }; | 607 | }; |
604 | 608 | ||
609 | /* Bluetooth rfkill gpio platform data */ | ||
610 | struct rfkill_gpio_platform_data origen_bt_pdata = { | ||
611 | .reset_gpio = EXYNOS4_GPX2(2), | ||
612 | .shutdown_gpio = -1, | ||
613 | .type = RFKILL_TYPE_BLUETOOTH, | ||
614 | .name = "origen-bt", | ||
615 | }; | ||
616 | |||
617 | /* Bluetooth Platform device */ | ||
618 | static struct platform_device origen_device_bluetooth = { | ||
619 | .name = "rfkill_gpio", | ||
620 | .id = -1, | ||
621 | .dev = { | ||
622 | .platform_data = &origen_bt_pdata, | ||
623 | }, | ||
624 | }; | ||
625 | |||
605 | static struct platform_device *origen_devices[] __initdata = { | 626 | static struct platform_device *origen_devices[] __initdata = { |
606 | &s3c_device_hsmmc2, | 627 | &s3c_device_hsmmc2, |
607 | &s3c_device_hsmmc0, | 628 | &s3c_device_hsmmc0, |
@@ -613,9 +634,12 @@ static struct platform_device *origen_devices[] __initdata = { | |||
613 | &s5p_device_fimc1, | 634 | &s5p_device_fimc1, |
614 | &s5p_device_fimc2, | 635 | &s5p_device_fimc2, |
615 | &s5p_device_fimc3, | 636 | &s5p_device_fimc3, |
637 | &s5p_device_fimc_md, | ||
616 | &s5p_device_fimd0, | 638 | &s5p_device_fimd0, |
639 | &s5p_device_g2d, | ||
617 | &s5p_device_hdmi, | 640 | &s5p_device_hdmi, |
618 | &s5p_device_i2c_hdmiphy, | 641 | &s5p_device_i2c_hdmiphy, |
642 | &s5p_device_jpeg, | ||
619 | &s5p_device_mfc, | 643 | &s5p_device_mfc, |
620 | &s5p_device_mfc_l, | 644 | &s5p_device_mfc_l, |
621 | &s5p_device_mfc_r, | 645 | &s5p_device_mfc_r, |
@@ -623,6 +647,7 @@ static struct platform_device *origen_devices[] __initdata = { | |||
623 | &exynos4_device_ohci, | 647 | &exynos4_device_ohci, |
624 | &origen_device_gpiokeys, | 648 | &origen_device_gpiokeys, |
625 | &origen_lcd_hv070wsa, | 649 | &origen_lcd_hv070wsa, |
650 | &origen_device_bluetooth, | ||
626 | }; | 651 | }; |
627 | 652 | ||
628 | /* LCD Backlight data */ | 653 | /* LCD Backlight data */ |
@@ -636,6 +661,16 @@ static struct platform_pwm_backlight_data origen_bl_data = { | |||
636 | .pwm_period_ns = 1000, | 661 | .pwm_period_ns = 1000, |
637 | }; | 662 | }; |
638 | 663 | ||
664 | static void __init origen_bt_setup(void) | ||
665 | { | ||
666 | gpio_request(EXYNOS4_GPA0(0), "GPIO BT_UART"); | ||
667 | /* 4 UART Pins configuration */ | ||
668 | s3c_gpio_cfgrange_nopull(EXYNOS4_GPA0(0), 4, S3C_GPIO_SFN(2)); | ||
669 | /* Setup BT Reset, this gpio will be requesed by rfkill-gpio */ | ||
670 | s3c_gpio_cfgpin(EXYNOS4_GPX2(2), S3C_GPIO_OUTPUT); | ||
671 | s3c_gpio_setpull(EXYNOS4_GPX2(2), S3C_GPIO_PULL_NONE); | ||
672 | } | ||
673 | |||
639 | static void s5p_tv_setup(void) | 674 | static void s5p_tv_setup(void) |
640 | { | 675 | { |
641 | /* Direct HPD to HDMI chip */ | 676 | /* Direct HPD to HDMI chip */ |
@@ -689,6 +724,8 @@ static void __init origen_machine_init(void) | |||
689 | platform_add_devices(origen_devices, ARRAY_SIZE(origen_devices)); | 724 | platform_add_devices(origen_devices, ARRAY_SIZE(origen_devices)); |
690 | 725 | ||
691 | samsung_bl_set(&origen_bl_gpio_info, &origen_bl_data); | 726 | samsung_bl_set(&origen_bl_gpio_info, &origen_bl_data); |
727 | |||
728 | origen_bt_setup(); | ||
692 | } | 729 | } |
693 | 730 | ||
694 | MACHINE_START(ORIGEN, "ORIGEN") | 731 | MACHINE_START(ORIGEN, "ORIGEN") |
diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c index 5258b8563676..83b91fa777c1 100644 --- a/arch/arm/mach-exynos/mach-smdkv310.c +++ b/arch/arm/mach-exynos/mach-smdkv310.c | |||
@@ -270,6 +270,9 @@ static struct platform_device *smdkv310_devices[] __initdata = { | |||
270 | &s5p_device_fimc1, | 270 | &s5p_device_fimc1, |
271 | &s5p_device_fimc2, | 271 | &s5p_device_fimc2, |
272 | &s5p_device_fimc3, | 272 | &s5p_device_fimc3, |
273 | &s5p_device_fimc_md, | ||
274 | &s5p_device_g2d, | ||
275 | &s5p_device_jpeg, | ||
273 | &exynos4_device_ac97, | 276 | &exynos4_device_ac97, |
274 | &exynos4_device_i2s0, | 277 | &exynos4_device_i2s0, |
275 | &exynos4_device_ohci, | 278 | &exynos4_device_ohci, |
diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c index 4850700798d0..0b944eb66ebd 100644 --- a/arch/arm/mach-exynos/mach-universal_c210.c +++ b/arch/arm/mach-exynos/mach-universal_c210.c | |||
@@ -47,6 +47,7 @@ | |||
47 | #include <media/v4l2-mediabus.h> | 47 | #include <media/v4l2-mediabus.h> |
48 | #include <media/s5p_fimc.h> | 48 | #include <media/s5p_fimc.h> |
49 | #include <media/m5mols.h> | 49 | #include <media/m5mols.h> |
50 | #include <media/s5k6aa.h> | ||
50 | 51 | ||
51 | #include "common.h" | 52 | #include "common.h" |
52 | 53 | ||
@@ -123,8 +124,10 @@ static struct regulator_consumer_supply lp3974_buck1_consumer = | |||
123 | static struct regulator_consumer_supply lp3974_buck2_consumer = | 124 | static struct regulator_consumer_supply lp3974_buck2_consumer = |
124 | REGULATOR_SUPPLY("vddg3d", NULL); | 125 | REGULATOR_SUPPLY("vddg3d", NULL); |
125 | 126 | ||
126 | static struct regulator_consumer_supply lp3974_buck3_consumer = | 127 | static struct regulator_consumer_supply lp3974_buck3_consumer[] = { |
127 | REGULATOR_SUPPLY("vdet", "s5p-sdo"); | 128 | REGULATOR_SUPPLY("vdet", "s5p-sdo"), |
129 | REGULATOR_SUPPLY("vdd_reg", "0-003c"), | ||
130 | }; | ||
128 | 131 | ||
129 | static struct regulator_init_data lp3974_buck1_data = { | 132 | static struct regulator_init_data lp3974_buck1_data = { |
130 | .constraints = { | 133 | .constraints = { |
@@ -169,8 +172,8 @@ static struct regulator_init_data lp3974_buck3_data = { | |||
169 | .enabled = 1, | 172 | .enabled = 1, |
170 | }, | 173 | }, |
171 | }, | 174 | }, |
172 | .num_consumer_supplies = 1, | 175 | .num_consumer_supplies = ARRAY_SIZE(lp3974_buck3_consumer), |
173 | .consumer_supplies = &lp3974_buck3_consumer, | 176 | .consumer_supplies = lp3974_buck3_consumer, |
174 | }; | 177 | }; |
175 | 178 | ||
176 | static struct regulator_init_data lp3974_buck4_data = { | 179 | static struct regulator_init_data lp3974_buck4_data = { |
@@ -303,6 +306,9 @@ static struct regulator_init_data lp3974_ldo8_data = { | |||
303 | .consumer_supplies = lp3974_ldo8_consumer, | 306 | .consumer_supplies = lp3974_ldo8_consumer, |
304 | }; | 307 | }; |
305 | 308 | ||
309 | static struct regulator_consumer_supply lp3974_ldo9_consumer = | ||
310 | REGULATOR_SUPPLY("vddio", "0-003c"); | ||
311 | |||
306 | static struct regulator_init_data lp3974_ldo9_data = { | 312 | static struct regulator_init_data lp3974_ldo9_data = { |
307 | .constraints = { | 313 | .constraints = { |
308 | .name = "VCC_2.8V", | 314 | .name = "VCC_2.8V", |
@@ -314,6 +320,8 @@ static struct regulator_init_data lp3974_ldo9_data = { | |||
314 | .enabled = 1, | 320 | .enabled = 1, |
315 | }, | 321 | }, |
316 | }, | 322 | }, |
323 | .num_consumer_supplies = 1, | ||
324 | .consumer_supplies = &lp3974_ldo9_consumer, | ||
317 | }; | 325 | }; |
318 | 326 | ||
319 | static struct regulator_init_data lp3974_ldo10_data = { | 327 | static struct regulator_init_data lp3974_ldo10_data = { |
@@ -412,6 +420,7 @@ static struct regulator_init_data lp3974_ldo15_data = { | |||
412 | }; | 420 | }; |
413 | 421 | ||
414 | static struct regulator_consumer_supply lp3974_ldo16_consumer[] = { | 422 | static struct regulator_consumer_supply lp3974_ldo16_consumer[] = { |
423 | REGULATOR_SUPPLY("vdda", "0-003c"), | ||
415 | REGULATOR_SUPPLY("a_sensor", "0-001f"), | 424 | REGULATOR_SUPPLY("a_sensor", "0-001f"), |
416 | }; | 425 | }; |
417 | 426 | ||
@@ -819,6 +828,8 @@ static struct s3c_fb_pd_win universal_fb_win0 = { | |||
819 | }, | 828 | }, |
820 | .max_bpp = 32, | 829 | .max_bpp = 32, |
821 | .default_bpp = 16, | 830 | .default_bpp = 16, |
831 | .virtual_x = 480, | ||
832 | .virtual_y = 2 * 800, | ||
822 | }; | 833 | }; |
823 | 834 | ||
824 | static struct s3c_fb_platdata universal_lcd_pdata __initdata = { | 835 | static struct s3c_fb_platdata universal_lcd_pdata __initdata = { |
@@ -830,6 +841,28 @@ static struct s3c_fb_platdata universal_lcd_pdata __initdata = { | |||
830 | .setup_gpio = exynos4_fimd0_gpio_setup_24bpp, | 841 | .setup_gpio = exynos4_fimd0_gpio_setup_24bpp, |
831 | }; | 842 | }; |
832 | 843 | ||
844 | static struct regulator_consumer_supply cam_vt_dio_supply = | ||
845 | REGULATOR_SUPPLY("vdd_core", "0-003c"); | ||
846 | |||
847 | static struct regulator_init_data cam_vt_dio_reg_init_data = { | ||
848 | .constraints = { .valid_ops_mask = REGULATOR_CHANGE_STATUS }, | ||
849 | .num_consumer_supplies = 1, | ||
850 | .consumer_supplies = &cam_vt_dio_supply, | ||
851 | }; | ||
852 | |||
853 | static struct fixed_voltage_config cam_vt_dio_fixed_voltage_cfg = { | ||
854 | .supply_name = "CAM_VT_D_IO", | ||
855 | .microvolts = 2800000, | ||
856 | .gpio = EXYNOS4_GPE2(1), /* CAM_PWR_EN2 */ | ||
857 | .enable_high = 1, | ||
858 | .init_data = &cam_vt_dio_reg_init_data, | ||
859 | }; | ||
860 | |||
861 | static struct platform_device cam_vt_dio_fixed_reg_dev = { | ||
862 | .name = "reg-fixed-voltage", .id = FIXED_REG_ID_CAM_VT_DIO, | ||
863 | .dev = { .platform_data = &cam_vt_dio_fixed_voltage_cfg }, | ||
864 | }; | ||
865 | |||
833 | static struct regulator_consumer_supply cam_i_core_supply = | 866 | static struct regulator_consumer_supply cam_i_core_supply = |
834 | REGULATOR_SUPPLY("core", "0-001f"); | 867 | REGULATOR_SUPPLY("core", "0-001f"); |
835 | 868 | ||
@@ -885,6 +918,28 @@ static struct s5p_platform_mipi_csis mipi_csis_platdata = { | |||
885 | #define GPIO_CAM_LEVEL_EN(n) EXYNOS4_GPE4(n + 3) | 918 | #define GPIO_CAM_LEVEL_EN(n) EXYNOS4_GPE4(n + 3) |
886 | #define GPIO_CAM_8M_ISP_INT EXYNOS4_GPX1(5) /* XEINT_13 */ | 919 | #define GPIO_CAM_8M_ISP_INT EXYNOS4_GPX1(5) /* XEINT_13 */ |
887 | #define GPIO_CAM_MEGA_nRST EXYNOS4_GPE2(5) | 920 | #define GPIO_CAM_MEGA_nRST EXYNOS4_GPE2(5) |
921 | #define GPIO_CAM_VGA_NRST EXYNOS4_GPE4(7) | ||
922 | #define GPIO_CAM_VGA_NSTBY EXYNOS4_GPE4(6) | ||
923 | |||
924 | static int s5k6aa_set_power(int on) | ||
925 | { | ||
926 | gpio_set_value(GPIO_CAM_LEVEL_EN(2), !!on); | ||
927 | return 0; | ||
928 | } | ||
929 | |||
930 | static struct s5k6aa_platform_data s5k6aa_platdata = { | ||
931 | .mclk_frequency = 21600000UL, | ||
932 | .gpio_reset = { GPIO_CAM_VGA_NRST, 0 }, | ||
933 | .gpio_stby = { GPIO_CAM_VGA_NSTBY, 0 }, | ||
934 | .bus_type = V4L2_MBUS_PARALLEL, | ||
935 | .horiz_flip = 1, | ||
936 | .set_power = s5k6aa_set_power, | ||
937 | }; | ||
938 | |||
939 | static struct i2c_board_info s5k6aa_board_info = { | ||
940 | I2C_BOARD_INFO("S5K6AA", 0x3C), | ||
941 | .platform_data = &s5k6aa_platdata, | ||
942 | }; | ||
888 | 943 | ||
889 | static int m5mols_set_power(struct device *dev, int on) | 944 | static int m5mols_set_power(struct device *dev, int on) |
890 | { | 945 | { |
@@ -909,6 +964,14 @@ static struct s5p_fimc_isp_info universal_camera_sensors[] = { | |||
909 | .mux_id = 0, | 964 | .mux_id = 0, |
910 | .flags = V4L2_MBUS_PCLK_SAMPLE_FALLING | | 965 | .flags = V4L2_MBUS_PCLK_SAMPLE_FALLING | |
911 | V4L2_MBUS_VSYNC_ACTIVE_LOW, | 966 | V4L2_MBUS_VSYNC_ACTIVE_LOW, |
967 | .bus_type = FIMC_ITU_601, | ||
968 | .board_info = &s5k6aa_board_info, | ||
969 | .i2c_bus_num = 0, | ||
970 | .clk_frequency = 24000000UL, | ||
971 | }, { | ||
972 | .mux_id = 0, | ||
973 | .flags = V4L2_MBUS_PCLK_SAMPLE_FALLING | | ||
974 | V4L2_MBUS_VSYNC_ACTIVE_LOW, | ||
912 | .bus_type = FIMC_MIPI_CSI2, | 975 | .bus_type = FIMC_MIPI_CSI2, |
913 | .board_info = &m5mols_board_info, | 976 | .board_info = &m5mols_board_info, |
914 | .i2c_bus_num = 0, | 977 | .i2c_bus_num = 0, |
@@ -927,9 +990,11 @@ static struct gpio universal_camera_gpios[] = { | |||
927 | { GPIO_CAM_LEVEL_EN(2), GPIOF_OUT_INIT_LOW, "CAM_LVL_EN2" }, | 990 | { GPIO_CAM_LEVEL_EN(2), GPIOF_OUT_INIT_LOW, "CAM_LVL_EN2" }, |
928 | { GPIO_CAM_8M_ISP_INT, GPIOF_IN, "8M_ISP_INT" }, | 991 | { GPIO_CAM_8M_ISP_INT, GPIOF_IN, "8M_ISP_INT" }, |
929 | { GPIO_CAM_MEGA_nRST, GPIOF_OUT_INIT_LOW, "CAM_8M_NRST" }, | 992 | { GPIO_CAM_MEGA_nRST, GPIOF_OUT_INIT_LOW, "CAM_8M_NRST" }, |
993 | { GPIO_CAM_VGA_NRST, GPIOF_OUT_INIT_LOW, "CAM_VGA_NRST" }, | ||
994 | { GPIO_CAM_VGA_NSTBY, GPIOF_OUT_INIT_LOW, "CAM_VGA_NSTBY" }, | ||
930 | }; | 995 | }; |
931 | 996 | ||
932 | static void universal_camera_init(void) | 997 | static void __init universal_camera_init(void) |
933 | { | 998 | { |
934 | s3c_set_platdata(&mipi_csis_platdata, sizeof(mipi_csis_platdata), | 999 | s3c_set_platdata(&mipi_csis_platdata, sizeof(mipi_csis_platdata), |
935 | &s5p_device_mipi_csis0); | 1000 | &s5p_device_mipi_csis0); |
@@ -950,6 +1015,8 @@ static void universal_camera_init(void) | |||
950 | /* Free GPIOs controlled directly by the sensor drivers. */ | 1015 | /* Free GPIOs controlled directly by the sensor drivers. */ |
951 | gpio_free(GPIO_CAM_MEGA_nRST); | 1016 | gpio_free(GPIO_CAM_MEGA_nRST); |
952 | gpio_free(GPIO_CAM_8M_ISP_INT); | 1017 | gpio_free(GPIO_CAM_8M_ISP_INT); |
1018 | gpio_free(GPIO_CAM_VGA_NRST); | ||
1019 | gpio_free(GPIO_CAM_VGA_NSTBY); | ||
953 | 1020 | ||
954 | if (exynos4_fimc_setup_gpio(S5P_CAMPORT_A)) | 1021 | if (exynos4_fimc_setup_gpio(S5P_CAMPORT_A)) |
955 | pr_err("Camera port A setup failed\n"); | 1022 | pr_err("Camera port A setup failed\n"); |
@@ -962,6 +1029,7 @@ static struct platform_device *universal_devices[] __initdata = { | |||
962 | &s5p_device_fimc1, | 1029 | &s5p_device_fimc1, |
963 | &s5p_device_fimc2, | 1030 | &s5p_device_fimc2, |
964 | &s5p_device_fimc3, | 1031 | &s5p_device_fimc3, |
1032 | &s5p_device_g2d, | ||
965 | &mmc0_fixed_voltage, | 1033 | &mmc0_fixed_voltage, |
966 | &s3c_device_hsmmc0, | 1034 | &s3c_device_hsmmc0, |
967 | &s3c_device_hsmmc2, | 1035 | &s3c_device_hsmmc2, |
@@ -980,9 +1048,11 @@ static struct platform_device *universal_devices[] __initdata = { | |||
980 | &universal_gpio_keys, | 1048 | &universal_gpio_keys, |
981 | &s5p_device_onenand, | 1049 | &s5p_device_onenand, |
982 | &s5p_device_fimd0, | 1050 | &s5p_device_fimd0, |
1051 | &s5p_device_jpeg, | ||
983 | &s5p_device_mfc, | 1052 | &s5p_device_mfc, |
984 | &s5p_device_mfc_l, | 1053 | &s5p_device_mfc_l, |
985 | &s5p_device_mfc_r, | 1054 | &s5p_device_mfc_r, |
1055 | &cam_vt_dio_fixed_reg_dev, | ||
986 | &cam_i_core_fixed_reg_dev, | 1056 | &cam_i_core_fixed_reg_dev, |
987 | &cam_s_if_fixed_reg_dev, | 1057 | &cam_s_if_fixed_reg_dev, |
988 | &s5p_device_fimc_md, | 1058 | &s5p_device_fimc_md, |