diff options
author | Olof Johansson <olof@lixom.net> | 2012-03-13 19:10:35 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2012-03-13 19:10:35 -0400 |
commit | c77ef898625f558c89c6ca0b27e2032f0fad4196 (patch) | |
tree | 28584a77d2e2d4345f292a31d47bdf2321df697d /arch | |
parent | c454f813501b94cd687bf3c5c0783f815a854905 (diff) | |
parent | bae82bdfb1edb2d709bd4ba0bda1ed0bb474f5e1 (diff) |
Merge branch 'next/board-samsung' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/boards
* 'next/board-samsung' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung: (32 commits)
ARM: EXYNOS: support Exynos4210-bus Devfreq driver on Nuri board
ARM: EXYNOS: Register JPEG on nuri
ARM: EXYNOS: Register JPEG on universal_c210
ARM: S5PV210: Enable JPEG on SMDKV210
ARM: S5PV210: Add JPEG board definition
ARM: EXYNOS: Enable JPEG on Origen
ARM: EXYNOS: Enable JPEG on SMDKV310
ARM: EXYNOS: Add __init attribute to universal_camera_init()
ARM: EXYNOS: Add __init attribute to nuri_camera_init()
ARM: S5PV210: Enable FIMC on SMDKC110
ARM: S5PV210: Enable FIMC on SMDKV210
ARM: S5PV210: Enable MFC on SMDKC110
ARM: S5PV210: Enable MFC on SMDKV210
ARM: EXYNOS: Enable G2D on SMDKV310
ARM: S3C64XX: Supply platform data for SPI on Cragganmore
ARM: S3C64XX: Add some more Cragganmore module IDs to the table
ARM: EXYNOS: Add missing FIMC media device to Origen
ARM: EXYNOS: Add missing FIMC media device to SMDKV310
ARM: S5PV210: Add missing FIMC media device to Aquila
ARM: SAMSUNG: Add support for S5K6AAFX camera on Nuri board
...
Diffstat (limited to 'arch')
-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 | ||||
-rw-r--r-- | arch/arm/mach-s3c64xx/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-s3c64xx/mach-crag6410-module.c | 31 | ||||
-rw-r--r-- | arch/arm/mach-s3c64xx/mach-crag6410.c | 67 | ||||
-rw-r--r-- | arch/arm/mach-s5pv210/Kconfig | 9 | ||||
-rw-r--r-- | arch/arm/mach-s5pv210/clock.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-s5pv210/include/mach/map.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-s5pv210/mach-aquila.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-s5pv210/mach-smdkc110.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-s5pv210/mach-smdkv210.c | 15 |
14 files changed, 346 insertions, 11 deletions
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index 5d602f68a0e8..1f81bfa15ff9 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig | |||
@@ -183,7 +183,9 @@ config MACH_SMDKV310 | |||
183 | select S5P_DEV_FIMC1 | 183 | select S5P_DEV_FIMC1 |
184 | select S5P_DEV_FIMC2 | 184 | select S5P_DEV_FIMC2 |
185 | select S5P_DEV_FIMC3 | 185 | select S5P_DEV_FIMC3 |
186 | select S5P_DEV_G2D | ||
186 | select S5P_DEV_I2C_HDMIPHY | 187 | select S5P_DEV_I2C_HDMIPHY |
188 | select S5P_DEV_JPEG | ||
187 | select S5P_DEV_MFC | 189 | select S5P_DEV_MFC |
188 | select S5P_DEV_TV | 190 | select S5P_DEV_TV |
189 | select S5P_DEV_USB_EHCI | 191 | select S5P_DEV_USB_EHCI |
@@ -230,7 +232,9 @@ config MACH_UNIVERSAL_C210 | |||
230 | select S5P_DEV_FIMC1 | 232 | select S5P_DEV_FIMC1 |
231 | select S5P_DEV_FIMC2 | 233 | select S5P_DEV_FIMC2 |
232 | select S5P_DEV_FIMC3 | 234 | select S5P_DEV_FIMC3 |
235 | select S5P_DEV_G2D | ||
233 | select S5P_DEV_CSIS0 | 236 | select S5P_DEV_CSIS0 |
237 | select S5P_DEV_JPEG | ||
234 | select S5P_DEV_FIMD0 | 238 | select S5P_DEV_FIMD0 |
235 | select S3C_DEV_HSMMC | 239 | select S3C_DEV_HSMMC |
236 | select S3C_DEV_HSMMC2 | 240 | select S3C_DEV_HSMMC2 |
@@ -268,11 +272,14 @@ config MACH_NURI | |||
268 | select S3C_DEV_I2C1 | 272 | select S3C_DEV_I2C1 |
269 | select S3C_DEV_I2C3 | 273 | select S3C_DEV_I2C3 |
270 | select S3C_DEV_I2C5 | 274 | select S3C_DEV_I2C5 |
275 | select S3C_DEV_I2C6 | ||
271 | select S5P_DEV_CSIS0 | 276 | select S5P_DEV_CSIS0 |
277 | select S5P_DEV_JPEG | ||
272 | select S5P_DEV_FIMC0 | 278 | select S5P_DEV_FIMC0 |
273 | select S5P_DEV_FIMC1 | 279 | select S5P_DEV_FIMC1 |
274 | select S5P_DEV_FIMC2 | 280 | select S5P_DEV_FIMC2 |
275 | select S5P_DEV_FIMC3 | 281 | select S5P_DEV_FIMC3 |
282 | select S5P_DEV_G2D | ||
276 | select S5P_DEV_MFC | 283 | select S5P_DEV_MFC |
277 | select S5P_DEV_USB_EHCI | 284 | select S5P_DEV_USB_EHCI |
278 | select S5P_SETUP_MIPIPHY | 285 | select S5P_SETUP_MIPIPHY |
@@ -283,6 +290,7 @@ config MACH_NURI | |||
283 | select EXYNOS4_SETUP_I2C1 | 290 | select EXYNOS4_SETUP_I2C1 |
284 | select EXYNOS4_SETUP_I2C3 | 291 | select EXYNOS4_SETUP_I2C3 |
285 | select EXYNOS4_SETUP_I2C5 | 292 | select EXYNOS4_SETUP_I2C5 |
293 | select EXYNOS4_SETUP_I2C6 | ||
286 | select EXYNOS4_SETUP_SDHCI | 294 | select EXYNOS4_SETUP_SDHCI |
287 | select EXYNOS4_SETUP_USB_PHY | 295 | select EXYNOS4_SETUP_USB_PHY |
288 | select S5P_SETUP_MIPIPHY | 296 | select S5P_SETUP_MIPIPHY |
@@ -303,7 +311,9 @@ config MACH_ORIGEN | |||
303 | select S5P_DEV_FIMC2 | 311 | select S5P_DEV_FIMC2 |
304 | select S5P_DEV_FIMC3 | 312 | select S5P_DEV_FIMC3 |
305 | select S5P_DEV_FIMD0 | 313 | select S5P_DEV_FIMD0 |
314 | select S5P_DEV_G2D | ||
306 | select S5P_DEV_I2C_HDMIPHY | 315 | select S5P_DEV_I2C_HDMIPHY |
316 | select S5P_DEV_JPEG | ||
307 | select S5P_DEV_MFC | 317 | select S5P_DEV_MFC |
308 | select S5P_DEV_TV | 318 | select S5P_DEV_TV |
309 | select S5P_DEV_USB_EHCI | 319 | select S5P_DEV_USB_EHCI |
diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c index 435261f83f46..32bb7b37975c 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, |
@@ -1274,8 +1343,10 @@ static struct platform_device *nuri_devices[] __initdata = { | |||
1274 | &nuri_backlight_device, | 1343 | &nuri_backlight_device, |
1275 | &max8903_fixed_reg_dev, | 1344 | &max8903_fixed_reg_dev, |
1276 | &nuri_max8903_device, | 1345 | &nuri_max8903_device, |
1346 | &cam_vt_cam15_fixed_rdev, | ||
1277 | &cam_vdda_fixed_rdev, | 1347 | &cam_vdda_fixed_rdev, |
1278 | &cam_8m_12v_fixed_rdev, | 1348 | &cam_8m_12v_fixed_rdev, |
1349 | &exynos4_bus_devfreq, | ||
1279 | }; | 1350 | }; |
1280 | 1351 | ||
1281 | static void __init nuri_map_io(void) | 1352 | static void __init nuri_map_io(void) |
@@ -1305,6 +1376,7 @@ static void __init nuri_machine_init(void) | |||
1305 | i2c_register_board_info(5, i2c5_devs, ARRAY_SIZE(i2c5_devs)); | 1376 | i2c_register_board_info(5, i2c5_devs, ARRAY_SIZE(i2c5_devs)); |
1306 | i2c9_devs[I2C9_MAX17042].irq = gpio_to_irq(EXYNOS4_GPX2(3)); | 1377 | i2c9_devs[I2C9_MAX17042].irq = gpio_to_irq(EXYNOS4_GPX2(3)); |
1307 | i2c_register_board_info(9, i2c9_devs, ARRAY_SIZE(i2c9_devs)); | 1378 | i2c_register_board_info(9, i2c9_devs, ARRAY_SIZE(i2c9_devs)); |
1379 | s3c_i2c6_set_platdata(&nuri_i2c6_platdata); | ||
1308 | 1380 | ||
1309 | s5p_fimd0_set_platdata(&nuri_fb_pdata); | 1381 | s5p_fimd0_set_platdata(&nuri_fb_pdata); |
1310 | 1382 | ||
diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c index 0679b8ad2d1e..686d1826c058 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, |
@@ -630,6 +654,7 @@ static struct platform_device *origen_devices[] __initdata = { | |||
630 | &exynos4_device_pd[PD_MFC], | 654 | &exynos4_device_pd[PD_MFC], |
631 | &origen_device_gpiokeys, | 655 | &origen_device_gpiokeys, |
632 | &origen_lcd_hv070wsa, | 656 | &origen_lcd_hv070wsa, |
657 | &origen_device_bluetooth, | ||
633 | }; | 658 | }; |
634 | 659 | ||
635 | /* LCD Backlight data */ | 660 | /* LCD Backlight data */ |
@@ -643,6 +668,16 @@ static struct platform_pwm_backlight_data origen_bl_data = { | |||
643 | .pwm_period_ns = 1000, | 668 | .pwm_period_ns = 1000, |
644 | }; | 669 | }; |
645 | 670 | ||
671 | static void __init origen_bt_setup(void) | ||
672 | { | ||
673 | gpio_request(EXYNOS4_GPA0(0), "GPIO BT_UART"); | ||
674 | /* 4 UART Pins configuration */ | ||
675 | s3c_gpio_cfgrange_nopull(EXYNOS4_GPA0(0), 4, S3C_GPIO_SFN(2)); | ||
676 | /* Setup BT Reset, this gpio will be requesed by rfkill-gpio */ | ||
677 | s3c_gpio_cfgpin(EXYNOS4_GPX2(2), S3C_GPIO_OUTPUT); | ||
678 | s3c_gpio_setpull(EXYNOS4_GPX2(2), S3C_GPIO_PULL_NONE); | ||
679 | } | ||
680 | |||
646 | static void s5p_tv_setup(void) | 681 | static void s5p_tv_setup(void) |
647 | { | 682 | { |
648 | /* Direct HPD to HDMI chip */ | 683 | /* Direct HPD to HDMI chip */ |
@@ -703,6 +738,8 @@ static void __init origen_machine_init(void) | |||
703 | s5p_device_mfc.dev.parent = &exynos4_device_pd[PD_MFC].dev; | 738 | s5p_device_mfc.dev.parent = &exynos4_device_pd[PD_MFC].dev; |
704 | 739 | ||
705 | samsung_bl_set(&origen_bl_gpio_info, &origen_bl_data); | 740 | samsung_bl_set(&origen_bl_gpio_info, &origen_bl_data); |
741 | |||
742 | origen_bt_setup(); | ||
706 | } | 743 | } |
707 | 744 | ||
708 | MACHINE_START(ORIGEN, "ORIGEN") | 745 | MACHINE_START(ORIGEN, "ORIGEN") |
diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c index b2c5557f50e4..5a2a21e69387 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 0fc65ffde8ff..5b79d8be6633 100644 --- a/arch/arm/mach-exynos/mach-universal_c210.c +++ b/arch/arm/mach-exynos/mach-universal_c210.c | |||
@@ -46,6 +46,7 @@ | |||
46 | #include <media/v4l2-mediabus.h> | 46 | #include <media/v4l2-mediabus.h> |
47 | #include <media/s5p_fimc.h> | 47 | #include <media/s5p_fimc.h> |
48 | #include <media/m5mols.h> | 48 | #include <media/m5mols.h> |
49 | #include <media/s5k6aa.h> | ||
49 | 50 | ||
50 | #include "common.h" | 51 | #include "common.h" |
51 | 52 | ||
@@ -122,8 +123,10 @@ static struct regulator_consumer_supply lp3974_buck1_consumer = | |||
122 | static struct regulator_consumer_supply lp3974_buck2_consumer = | 123 | static struct regulator_consumer_supply lp3974_buck2_consumer = |
123 | REGULATOR_SUPPLY("vddg3d", NULL); | 124 | REGULATOR_SUPPLY("vddg3d", NULL); |
124 | 125 | ||
125 | static struct regulator_consumer_supply lp3974_buck3_consumer = | 126 | static struct regulator_consumer_supply lp3974_buck3_consumer[] = { |
126 | REGULATOR_SUPPLY("vdet", "s5p-sdo"); | 127 | REGULATOR_SUPPLY("vdet", "s5p-sdo"), |
128 | REGULATOR_SUPPLY("vdd_reg", "0-003c"), | ||
129 | }; | ||
127 | 130 | ||
128 | static struct regulator_init_data lp3974_buck1_data = { | 131 | static struct regulator_init_data lp3974_buck1_data = { |
129 | .constraints = { | 132 | .constraints = { |
@@ -168,8 +171,8 @@ static struct regulator_init_data lp3974_buck3_data = { | |||
168 | .enabled = 1, | 171 | .enabled = 1, |
169 | }, | 172 | }, |
170 | }, | 173 | }, |
171 | .num_consumer_supplies = 1, | 174 | .num_consumer_supplies = ARRAY_SIZE(lp3974_buck3_consumer), |
172 | .consumer_supplies = &lp3974_buck3_consumer, | 175 | .consumer_supplies = lp3974_buck3_consumer, |
173 | }; | 176 | }; |
174 | 177 | ||
175 | static struct regulator_init_data lp3974_buck4_data = { | 178 | static struct regulator_init_data lp3974_buck4_data = { |
@@ -302,6 +305,9 @@ static struct regulator_init_data lp3974_ldo8_data = { | |||
302 | .consumer_supplies = lp3974_ldo8_consumer, | 305 | .consumer_supplies = lp3974_ldo8_consumer, |
303 | }; | 306 | }; |
304 | 307 | ||
308 | static struct regulator_consumer_supply lp3974_ldo9_consumer = | ||
309 | REGULATOR_SUPPLY("vddio", "0-003c"); | ||
310 | |||
305 | static struct regulator_init_data lp3974_ldo9_data = { | 311 | static struct regulator_init_data lp3974_ldo9_data = { |
306 | .constraints = { | 312 | .constraints = { |
307 | .name = "VCC_2.8V", | 313 | .name = "VCC_2.8V", |
@@ -313,6 +319,8 @@ static struct regulator_init_data lp3974_ldo9_data = { | |||
313 | .enabled = 1, | 319 | .enabled = 1, |
314 | }, | 320 | }, |
315 | }, | 321 | }, |
322 | .num_consumer_supplies = 1, | ||
323 | .consumer_supplies = &lp3974_ldo9_consumer, | ||
316 | }; | 324 | }; |
317 | 325 | ||
318 | static struct regulator_init_data lp3974_ldo10_data = { | 326 | static struct regulator_init_data lp3974_ldo10_data = { |
@@ -411,6 +419,7 @@ static struct regulator_init_data lp3974_ldo15_data = { | |||
411 | }; | 419 | }; |
412 | 420 | ||
413 | static struct regulator_consumer_supply lp3974_ldo16_consumer[] = { | 421 | static struct regulator_consumer_supply lp3974_ldo16_consumer[] = { |
422 | REGULATOR_SUPPLY("vdda", "0-003c"), | ||
414 | REGULATOR_SUPPLY("a_sensor", "0-001f"), | 423 | REGULATOR_SUPPLY("a_sensor", "0-001f"), |
415 | }; | 424 | }; |
416 | 425 | ||
@@ -817,6 +826,8 @@ static struct s3c_fb_pd_win universal_fb_win0 = { | |||
817 | }, | 826 | }, |
818 | .max_bpp = 32, | 827 | .max_bpp = 32, |
819 | .default_bpp = 16, | 828 | .default_bpp = 16, |
829 | .virtual_x = 480, | ||
830 | .virtual_y = 2 * 800, | ||
820 | }; | 831 | }; |
821 | 832 | ||
822 | static struct s3c_fb_platdata universal_lcd_pdata __initdata = { | 833 | static struct s3c_fb_platdata universal_lcd_pdata __initdata = { |
@@ -828,6 +839,28 @@ static struct s3c_fb_platdata universal_lcd_pdata __initdata = { | |||
828 | .setup_gpio = exynos4_fimd0_gpio_setup_24bpp, | 839 | .setup_gpio = exynos4_fimd0_gpio_setup_24bpp, |
829 | }; | 840 | }; |
830 | 841 | ||
842 | static struct regulator_consumer_supply cam_vt_dio_supply = | ||
843 | REGULATOR_SUPPLY("vdd_core", "0-003c"); | ||
844 | |||
845 | static struct regulator_init_data cam_vt_dio_reg_init_data = { | ||
846 | .constraints = { .valid_ops_mask = REGULATOR_CHANGE_STATUS }, | ||
847 | .num_consumer_supplies = 1, | ||
848 | .consumer_supplies = &cam_vt_dio_supply, | ||
849 | }; | ||
850 | |||
851 | static struct fixed_voltage_config cam_vt_dio_fixed_voltage_cfg = { | ||
852 | .supply_name = "CAM_VT_D_IO", | ||
853 | .microvolts = 2800000, | ||
854 | .gpio = EXYNOS4_GPE2(1), /* CAM_PWR_EN2 */ | ||
855 | .enable_high = 1, | ||
856 | .init_data = &cam_vt_dio_reg_init_data, | ||
857 | }; | ||
858 | |||
859 | static struct platform_device cam_vt_dio_fixed_reg_dev = { | ||
860 | .name = "reg-fixed-voltage", .id = FIXED_REG_ID_CAM_VT_DIO, | ||
861 | .dev = { .platform_data = &cam_vt_dio_fixed_voltage_cfg }, | ||
862 | }; | ||
863 | |||
831 | static struct regulator_consumer_supply cam_i_core_supply = | 864 | static struct regulator_consumer_supply cam_i_core_supply = |
832 | REGULATOR_SUPPLY("core", "0-001f"); | 865 | REGULATOR_SUPPLY("core", "0-001f"); |
833 | 866 | ||
@@ -883,6 +916,28 @@ static struct s5p_platform_mipi_csis mipi_csis_platdata = { | |||
883 | #define GPIO_CAM_LEVEL_EN(n) EXYNOS4_GPE4(n + 3) | 916 | #define GPIO_CAM_LEVEL_EN(n) EXYNOS4_GPE4(n + 3) |
884 | #define GPIO_CAM_8M_ISP_INT EXYNOS4_GPX1(5) /* XEINT_13 */ | 917 | #define GPIO_CAM_8M_ISP_INT EXYNOS4_GPX1(5) /* XEINT_13 */ |
885 | #define GPIO_CAM_MEGA_nRST EXYNOS4_GPE2(5) | 918 | #define GPIO_CAM_MEGA_nRST EXYNOS4_GPE2(5) |
919 | #define GPIO_CAM_VGA_NRST EXYNOS4_GPE4(7) | ||
920 | #define GPIO_CAM_VGA_NSTBY EXYNOS4_GPE4(6) | ||
921 | |||
922 | static int s5k6aa_set_power(int on) | ||
923 | { | ||
924 | gpio_set_value(GPIO_CAM_LEVEL_EN(2), !!on); | ||
925 | return 0; | ||
926 | } | ||
927 | |||
928 | static struct s5k6aa_platform_data s5k6aa_platdata = { | ||
929 | .mclk_frequency = 21600000UL, | ||
930 | .gpio_reset = { GPIO_CAM_VGA_NRST, 0 }, | ||
931 | .gpio_stby = { GPIO_CAM_VGA_NSTBY, 0 }, | ||
932 | .bus_type = V4L2_MBUS_PARALLEL, | ||
933 | .horiz_flip = 1, | ||
934 | .set_power = s5k6aa_set_power, | ||
935 | }; | ||
936 | |||
937 | static struct i2c_board_info s5k6aa_board_info = { | ||
938 | I2C_BOARD_INFO("S5K6AA", 0x3C), | ||
939 | .platform_data = &s5k6aa_platdata, | ||
940 | }; | ||
886 | 941 | ||
887 | static int m5mols_set_power(struct device *dev, int on) | 942 | static int m5mols_set_power(struct device *dev, int on) |
888 | { | 943 | { |
@@ -907,6 +962,14 @@ static struct s5p_fimc_isp_info universal_camera_sensors[] = { | |||
907 | .mux_id = 0, | 962 | .mux_id = 0, |
908 | .flags = V4L2_MBUS_PCLK_SAMPLE_FALLING | | 963 | .flags = V4L2_MBUS_PCLK_SAMPLE_FALLING | |
909 | V4L2_MBUS_VSYNC_ACTIVE_LOW, | 964 | V4L2_MBUS_VSYNC_ACTIVE_LOW, |
965 | .bus_type = FIMC_ITU_601, | ||
966 | .board_info = &s5k6aa_board_info, | ||
967 | .i2c_bus_num = 0, | ||
968 | .clk_frequency = 24000000UL, | ||
969 | }, { | ||
970 | .mux_id = 0, | ||
971 | .flags = V4L2_MBUS_PCLK_SAMPLE_FALLING | | ||
972 | V4L2_MBUS_VSYNC_ACTIVE_LOW, | ||
910 | .bus_type = FIMC_MIPI_CSI2, | 973 | .bus_type = FIMC_MIPI_CSI2, |
911 | .board_info = &m5mols_board_info, | 974 | .board_info = &m5mols_board_info, |
912 | .i2c_bus_num = 0, | 975 | .i2c_bus_num = 0, |
@@ -925,9 +988,11 @@ static struct gpio universal_camera_gpios[] = { | |||
925 | { GPIO_CAM_LEVEL_EN(2), GPIOF_OUT_INIT_LOW, "CAM_LVL_EN2" }, | 988 | { GPIO_CAM_LEVEL_EN(2), GPIOF_OUT_INIT_LOW, "CAM_LVL_EN2" }, |
926 | { GPIO_CAM_8M_ISP_INT, GPIOF_IN, "8M_ISP_INT" }, | 989 | { GPIO_CAM_8M_ISP_INT, GPIOF_IN, "8M_ISP_INT" }, |
927 | { GPIO_CAM_MEGA_nRST, GPIOF_OUT_INIT_LOW, "CAM_8M_NRST" }, | 990 | { GPIO_CAM_MEGA_nRST, GPIOF_OUT_INIT_LOW, "CAM_8M_NRST" }, |
991 | { GPIO_CAM_VGA_NRST, GPIOF_OUT_INIT_LOW, "CAM_VGA_NRST" }, | ||
992 | { GPIO_CAM_VGA_NSTBY, GPIOF_OUT_INIT_LOW, "CAM_VGA_NSTBY" }, | ||
928 | }; | 993 | }; |
929 | 994 | ||
930 | static void universal_camera_init(void) | 995 | static void __init universal_camera_init(void) |
931 | { | 996 | { |
932 | s3c_set_platdata(&mipi_csis_platdata, sizeof(mipi_csis_platdata), | 997 | s3c_set_platdata(&mipi_csis_platdata, sizeof(mipi_csis_platdata), |
933 | &s5p_device_mipi_csis0); | 998 | &s5p_device_mipi_csis0); |
@@ -948,6 +1013,8 @@ static void universal_camera_init(void) | |||
948 | /* Free GPIOs controlled directly by the sensor drivers. */ | 1013 | /* Free GPIOs controlled directly by the sensor drivers. */ |
949 | gpio_free(GPIO_CAM_MEGA_nRST); | 1014 | gpio_free(GPIO_CAM_MEGA_nRST); |
950 | gpio_free(GPIO_CAM_8M_ISP_INT); | 1015 | gpio_free(GPIO_CAM_8M_ISP_INT); |
1016 | gpio_free(GPIO_CAM_VGA_NRST); | ||
1017 | gpio_free(GPIO_CAM_VGA_NSTBY); | ||
951 | 1018 | ||
952 | if (exynos4_fimc_setup_gpio(S5P_CAMPORT_A)) | 1019 | if (exynos4_fimc_setup_gpio(S5P_CAMPORT_A)) |
953 | pr_err("Camera port A setup failed\n"); | 1020 | pr_err("Camera port A setup failed\n"); |
@@ -960,6 +1027,7 @@ static struct platform_device *universal_devices[] __initdata = { | |||
960 | &s5p_device_fimc1, | 1027 | &s5p_device_fimc1, |
961 | &s5p_device_fimc2, | 1028 | &s5p_device_fimc2, |
962 | &s5p_device_fimc3, | 1029 | &s5p_device_fimc3, |
1030 | &s5p_device_g2d, | ||
963 | &mmc0_fixed_voltage, | 1031 | &mmc0_fixed_voltage, |
964 | &s3c_device_hsmmc0, | 1032 | &s3c_device_hsmmc0, |
965 | &s3c_device_hsmmc2, | 1033 | &s3c_device_hsmmc2, |
@@ -979,12 +1047,14 @@ static struct platform_device *universal_devices[] __initdata = { | |||
979 | &universal_gpio_keys, | 1047 | &universal_gpio_keys, |
980 | &s5p_device_onenand, | 1048 | &s5p_device_onenand, |
981 | &s5p_device_fimd0, | 1049 | &s5p_device_fimd0, |
1050 | &s5p_device_jpeg, | ||
982 | &s5p_device_mfc, | 1051 | &s5p_device_mfc, |
983 | &s5p_device_mfc_l, | 1052 | &s5p_device_mfc_l, |
984 | &s5p_device_mfc_r, | 1053 | &s5p_device_mfc_r, |
985 | &exynos4_device_pd[PD_MFC], | 1054 | &exynos4_device_pd[PD_MFC], |
986 | &exynos4_device_pd[PD_LCD0], | 1055 | &exynos4_device_pd[PD_LCD0], |
987 | &exynos4_device_pd[PD_CAM], | 1056 | &exynos4_device_pd[PD_CAM], |
1057 | &cam_vt_dio_fixed_reg_dev, | ||
988 | &cam_i_core_fixed_reg_dev, | 1058 | &cam_i_core_fixed_reg_dev, |
989 | &cam_s_if_fixed_reg_dev, | 1059 | &cam_s_if_fixed_reg_dev, |
990 | &s5p_device_fimc_md, | 1060 | &s5p_device_fimc_md, |
diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig index dd20c66cd700..dc451232cf47 100644 --- a/arch/arm/mach-s3c64xx/Kconfig +++ b/arch/arm/mach-s3c64xx/Kconfig | |||
@@ -296,5 +296,6 @@ config MACH_WLF_CRAGG_6410 | |||
296 | select S3C64XX_DEV_SPI0 | 296 | select S3C64XX_DEV_SPI0 |
297 | select SAMSUNG_GPIO_EXTRA128 | 297 | select SAMSUNG_GPIO_EXTRA128 |
298 | select I2C | 298 | select I2C |
299 | select LEDS_GPIO_REGISTER | ||
299 | help | 300 | help |
300 | Machine support for the Wolfson Cragganmore S3C6410 variant. | 301 | Machine support for the Wolfson Cragganmore S3C6410 variant. |
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410-module.c b/arch/arm/mach-s3c64xx/mach-crag6410-module.c index cd3c97e2ee75..f64c7b91f62e 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410-module.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410-module.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/export.h> | 11 | #include <linux/export.h> |
12 | #include <linux/interrupt.h> | 12 | #include <linux/interrupt.h> |
13 | #include <linux/i2c.h> | 13 | #include <linux/i2c.h> |
14 | #include <linux/spi/spi.h> | ||
14 | 15 | ||
15 | #include <linux/mfd/wm831x/irq.h> | 16 | #include <linux/mfd/wm831x/irq.h> |
16 | #include <linux/mfd/wm831x/gpio.h> | 17 | #include <linux/mfd/wm831x/gpio.h> |
@@ -21,8 +22,25 @@ | |||
21 | #include <sound/wm8962.h> | 22 | #include <sound/wm8962.h> |
22 | #include <sound/wm9081.h> | 23 | #include <sound/wm9081.h> |
23 | 24 | ||
25 | #include <plat/s3c64xx-spi.h> | ||
26 | |||
24 | #include <mach/crag6410.h> | 27 | #include <mach/crag6410.h> |
25 | 28 | ||
29 | static struct s3c64xx_spi_csinfo wm0010_spi_csinfo = { | ||
30 | .set_level = gpio_set_value, | ||
31 | .line = S3C64XX_GPC(3), | ||
32 | }; | ||
33 | |||
34 | static struct spi_board_info wm1253_devs[] = { | ||
35 | [0] = { | ||
36 | .modalias = "wm0010", | ||
37 | .bus_num = 0, | ||
38 | .chip_select = 0, | ||
39 | .mode = SPI_MODE_0, | ||
40 | .controller_data = &wm0010_spi_csinfo, | ||
41 | }, | ||
42 | }; | ||
43 | |||
26 | static struct wm5100_pdata wm5100_pdata = { | 44 | static struct wm5100_pdata wm5100_pdata = { |
27 | .ldo_ena = S3C64XX_GPN(7), | 45 | .ldo_ena = S3C64XX_GPN(7), |
28 | .irq_flags = IRQF_TRIGGER_HIGH, | 46 | .irq_flags = IRQF_TRIGGER_HIGH, |
@@ -158,14 +176,21 @@ static __devinitdata const struct { | |||
158 | const char *name; | 176 | const char *name; |
159 | const struct i2c_board_info *i2c_devs; | 177 | const struct i2c_board_info *i2c_devs; |
160 | int num_i2c_devs; | 178 | int num_i2c_devs; |
179 | const struct spi_board_info *spi_devs; | ||
180 | int num_spi_devs; | ||
161 | } gf_mods[] = { | 181 | } gf_mods[] = { |
162 | { .id = 0x01, .name = "1250-EV1 Springbank" }, | 182 | { .id = 0x01, .name = "1250-EV1 Springbank" }, |
163 | { .id = 0x02, .name = "1251-EV1 Jura" }, | 183 | { .id = 0x02, .name = "1251-EV1 Jura" }, |
164 | { .id = 0x03, .name = "1252-EV1 Glenlivet" }, | 184 | { .id = 0x03, .name = "1252-EV1 Glenlivet" }, |
165 | { .id = 0x11, .name = "6249-EV2 Glenfarclas", }, | 185 | { .id = 0x11, .name = "6249-EV2 Glenfarclas", }, |
186 | { .id = 0x14, .name = "6271-EV1 Lochnagar" }, | ||
187 | { .id = 0x15, .name = "XXXX-EV1 Bells" }, | ||
166 | { .id = 0x21, .name = "1275-EV1 Mortlach" }, | 188 | { .id = 0x21, .name = "1275-EV1 Mortlach" }, |
167 | { .id = 0x25, .name = "1274-EV1 Glencadam" }, | 189 | { .id = 0x25, .name = "1274-EV1 Glencadam" }, |
168 | { .id = 0x31, .name = "1253-EV1 Tomatin", }, | 190 | { .id = 0x31, .name = "1253-EV1 Tomatin", |
191 | .spi_devs = wm1253_devs, .num_spi_devs = ARRAY_SIZE(wm1253_devs) }, | ||
192 | { .id = 0x32, .name = "XXXX-EV1 Caol Illa" }, | ||
193 | { .id = 0x33, .name = "XXXX-EV1 Oban" }, | ||
169 | { .id = 0x39, .name = "1254-EV1 Dallas Dhu", | 194 | { .id = 0x39, .name = "1254-EV1 Dallas Dhu", |
170 | .i2c_devs = wm1254_devs, .num_i2c_devs = ARRAY_SIZE(wm1254_devs) }, | 195 | .i2c_devs = wm1254_devs, .num_i2c_devs = ARRAY_SIZE(wm1254_devs) }, |
171 | { .id = 0x3a, .name = "1259-EV1 Tobermory", | 196 | { .id = 0x3a, .name = "1259-EV1 Tobermory", |
@@ -197,12 +222,16 @@ static __devinit int wlf_gf_module_probe(struct i2c_client *i2c, | |||
197 | if (i < ARRAY_SIZE(gf_mods)) { | 222 | if (i < ARRAY_SIZE(gf_mods)) { |
198 | dev_info(&i2c->dev, "%s revision %d\n", | 223 | dev_info(&i2c->dev, "%s revision %d\n", |
199 | gf_mods[i].name, rev + 1); | 224 | gf_mods[i].name, rev + 1); |
225 | |||
200 | for (j = 0; j < gf_mods[i].num_i2c_devs; j++) { | 226 | for (j = 0; j < gf_mods[i].num_i2c_devs; j++) { |
201 | if (!i2c_new_device(i2c->adapter, | 227 | if (!i2c_new_device(i2c->adapter, |
202 | &(gf_mods[i].i2c_devs[j]))) | 228 | &(gf_mods[i].i2c_devs[j]))) |
203 | dev_err(&i2c->dev, | 229 | dev_err(&i2c->dev, |
204 | "Failed to register dev: %d\n", ret); | 230 | "Failed to register dev: %d\n", ret); |
205 | } | 231 | } |
232 | |||
233 | spi_register_board_info(gf_mods[i].spi_devs, | ||
234 | gf_mods[i].num_spi_devs); | ||
206 | } else { | 235 | } else { |
207 | dev_warn(&i2c->dev, "Unknown module ID 0x%x revision %d\n", | 236 | dev_warn(&i2c->dev, "Unknown module ID 0x%x revision %d\n", |
208 | id, rev + 1); | 237 | id, rev + 1); |
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c index 8077f650eb0e..e991127fda03 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c | |||
@@ -19,7 +19,9 @@ | |||
19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/gpio.h> | 21 | #include <linux/gpio.h> |
22 | #include <linux/leds.h> | ||
22 | #include <linux/delay.h> | 23 | #include <linux/delay.h> |
24 | #include <linux/mmc/host.h> | ||
23 | #include <linux/regulator/machine.h> | 25 | #include <linux/regulator/machine.h> |
24 | #include <linux/regulator/fixed.h> | 26 | #include <linux/regulator/fixed.h> |
25 | #include <linux/pwm_backlight.h> | 27 | #include <linux/pwm_backlight.h> |
@@ -298,6 +300,7 @@ static struct platform_device littlemill_device = { | |||
298 | }; | 300 | }; |
299 | 301 | ||
300 | static struct regulator_consumer_supply wallvdd_consumers[] = { | 302 | static struct regulator_consumer_supply wallvdd_consumers[] = { |
303 | REGULATOR_SUPPLY("SPKVDD", "1-001a"), | ||
301 | REGULATOR_SUPPLY("SPKVDD1", "1-001a"), | 304 | REGULATOR_SUPPLY("SPKVDD1", "1-001a"), |
302 | REGULATOR_SUPPLY("SPKVDD2", "1-001a"), | 305 | REGULATOR_SUPPLY("SPKVDD2", "1-001a"), |
303 | REGULATOR_SUPPLY("SPKVDDL", "1-001a"), | 306 | REGULATOR_SUPPLY("SPKVDDL", "1-001a"), |
@@ -574,11 +577,19 @@ static struct s3c2410_platform_i2c i2c0_pdata = { | |||
574 | .frequency = 400000, | 577 | .frequency = 400000, |
575 | }; | 578 | }; |
576 | 579 | ||
580 | static struct regulator_consumer_supply pvdd_1v2_consumers[] __initdata = { | ||
581 | REGULATOR_SUPPLY("DCVDD", "spi0.0"), | ||
582 | REGULATOR_SUPPLY("AVDD", "spi0.0"), | ||
583 | }; | ||
584 | |||
577 | static struct regulator_init_data pvdd_1v2 __initdata = { | 585 | static struct regulator_init_data pvdd_1v2 __initdata = { |
578 | .constraints = { | 586 | .constraints = { |
579 | .name = "PVDD_1V2", | 587 | .name = "PVDD_1V2", |
580 | .always_on = 1, | 588 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, |
581 | }, | 589 | }, |
590 | |||
591 | .consumer_supplies = pvdd_1v2_consumers, | ||
592 | .num_consumer_supplies = ARRAY_SIZE(pvdd_1v2_consumers), | ||
582 | }; | 593 | }; |
583 | 594 | ||
584 | static struct regulator_consumer_supply pvdd_1v8_consumers[] __initdata = { | 595 | static struct regulator_consumer_supply pvdd_1v8_consumers[] __initdata = { |
@@ -592,6 +603,7 @@ static struct regulator_consumer_supply pvdd_1v8_consumers[] __initdata = { | |||
592 | REGULATOR_SUPPLY("AVDD2", "1-001a"), | 603 | REGULATOR_SUPPLY("AVDD2", "1-001a"), |
593 | REGULATOR_SUPPLY("DCVDD", "1-001a"), | 604 | REGULATOR_SUPPLY("DCVDD", "1-001a"), |
594 | REGULATOR_SUPPLY("AVDD", "1-001a"), | 605 | REGULATOR_SUPPLY("AVDD", "1-001a"), |
606 | REGULATOR_SUPPLY("DBVDD", "spi0.0"), | ||
595 | }; | 607 | }; |
596 | 608 | ||
597 | static struct regulator_init_data pvdd_1v8 __initdata = { | 609 | static struct regulator_init_data pvdd_1v8 __initdata = { |
@@ -681,6 +693,7 @@ static void __init crag6410_map_io(void) | |||
681 | static struct s3c_sdhci_platdata crag6410_hsmmc2_pdata = { | 693 | static struct s3c_sdhci_platdata crag6410_hsmmc2_pdata = { |
682 | .max_width = 4, | 694 | .max_width = 4, |
683 | .cd_type = S3C_SDHCI_CD_PERMANENT, | 695 | .cd_type = S3C_SDHCI_CD_PERMANENT, |
696 | .host_caps = MMC_CAP_POWER_OFF_CARD, | ||
684 | }; | 697 | }; |
685 | 698 | ||
686 | static void crag6410_cfg_sdhci0(struct platform_device *dev, int width) | 699 | static void crag6410_cfg_sdhci0(struct platform_device *dev, int width) |
@@ -696,6 +709,55 @@ static struct s3c_sdhci_platdata crag6410_hsmmc0_pdata = { | |||
696 | .max_width = 4, | 709 | .max_width = 4, |
697 | .cd_type = S3C_SDHCI_CD_INTERNAL, | 710 | .cd_type = S3C_SDHCI_CD_INTERNAL, |
698 | .cfg_gpio = crag6410_cfg_sdhci0, | 711 | .cfg_gpio = crag6410_cfg_sdhci0, |
712 | .host_caps = MMC_CAP_POWER_OFF_CARD, | ||
713 | }; | ||
714 | |||
715 | static const struct gpio_led gpio_leds[] = { | ||
716 | { | ||
717 | .name = "d13:green:", | ||
718 | .gpio = MMGPIO_GPIO_BASE + 0, | ||
719 | .default_state = LEDS_GPIO_DEFSTATE_ON, | ||
720 | }, | ||
721 | { | ||
722 | .name = "d14:green:", | ||
723 | .gpio = MMGPIO_GPIO_BASE + 1, | ||
724 | .default_state = LEDS_GPIO_DEFSTATE_ON, | ||
725 | }, | ||
726 | { | ||
727 | .name = "d15:green:", | ||
728 | .gpio = MMGPIO_GPIO_BASE + 2, | ||
729 | .default_state = LEDS_GPIO_DEFSTATE_ON, | ||
730 | }, | ||
731 | { | ||
732 | .name = "d16:green:", | ||
733 | .gpio = MMGPIO_GPIO_BASE + 3, | ||
734 | .default_state = LEDS_GPIO_DEFSTATE_ON, | ||
735 | }, | ||
736 | { | ||
737 | .name = "d17:green:", | ||
738 | .gpio = MMGPIO_GPIO_BASE + 4, | ||
739 | .default_state = LEDS_GPIO_DEFSTATE_ON, | ||
740 | }, | ||
741 | { | ||
742 | .name = "d18:green:", | ||
743 | .gpio = MMGPIO_GPIO_BASE + 5, | ||
744 | .default_state = LEDS_GPIO_DEFSTATE_ON, | ||
745 | }, | ||
746 | { | ||
747 | .name = "d19:green:", | ||
748 | .gpio = MMGPIO_GPIO_BASE + 6, | ||
749 | .default_state = LEDS_GPIO_DEFSTATE_ON, | ||
750 | }, | ||
751 | { | ||
752 | .name = "d20:green:", | ||
753 | .gpio = MMGPIO_GPIO_BASE + 7, | ||
754 | .default_state = LEDS_GPIO_DEFSTATE_ON, | ||
755 | }, | ||
756 | }; | ||
757 | |||
758 | static const struct gpio_led_platform_data gpio_leds_pdata = { | ||
759 | .leds = gpio_leds, | ||
760 | .num_leds = ARRAY_SIZE(gpio_leds), | ||
699 | }; | 761 | }; |
700 | 762 | ||
701 | static void __init crag6410_machine_init(void) | 763 | static void __init crag6410_machine_init(void) |
@@ -727,9 +789,12 @@ static void __init crag6410_machine_init(void) | |||
727 | i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1)); | 789 | i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1)); |
728 | 790 | ||
729 | samsung_keypad_set_platdata(&crag6410_keypad_data); | 791 | samsung_keypad_set_platdata(&crag6410_keypad_data); |
792 | s3c64xx_spi0_set_platdata(&s3c64xx_spi0_pdata, 0, 1); | ||
730 | 793 | ||
731 | platform_add_devices(crag6410_devices, ARRAY_SIZE(crag6410_devices)); | 794 | platform_add_devices(crag6410_devices, ARRAY_SIZE(crag6410_devices)); |
732 | 795 | ||
796 | gpio_led_register_device(-1, &gpio_leds_pdata); | ||
797 | |||
733 | regulator_has_full_constraints(); | 798 | regulator_has_full_constraints(); |
734 | 799 | ||
735 | s3c64xx_pm_init(); | 800 | s3c64xx_pm_init(); |
diff --git a/arch/arm/mach-s5pv210/Kconfig b/arch/arm/mach-s5pv210/Kconfig index 2cdc42e838b8..4c4ca1ade86e 100644 --- a/arch/arm/mach-s5pv210/Kconfig +++ b/arch/arm/mach-s5pv210/Kconfig | |||
@@ -118,6 +118,10 @@ config MACH_SMDKC110 | |||
118 | select S3C_DEV_I2C2 | 118 | select S3C_DEV_I2C2 |
119 | select S3C_DEV_RTC | 119 | select S3C_DEV_RTC |
120 | select S3C_DEV_WDT | 120 | select S3C_DEV_WDT |
121 | select S5P_DEV_FIMC0 | ||
122 | select S5P_DEV_FIMC1 | ||
123 | select S5P_DEV_FIMC2 | ||
124 | select S5P_DEV_MFC | ||
121 | select SAMSUNG_DEV_IDE | 125 | select SAMSUNG_DEV_IDE |
122 | select S5PV210_SETUP_I2C1 | 126 | select S5PV210_SETUP_I2C1 |
123 | select S5PV210_SETUP_I2C2 | 127 | select S5PV210_SETUP_I2C2 |
@@ -142,6 +146,11 @@ config MACH_SMDKV210 | |||
142 | select S3C_DEV_I2C2 | 146 | select S3C_DEV_I2C2 |
143 | select S3C_DEV_RTC | 147 | select S3C_DEV_RTC |
144 | select S3C_DEV_WDT | 148 | select S3C_DEV_WDT |
149 | select S5P_DEV_FIMC0 | ||
150 | select S5P_DEV_FIMC1 | ||
151 | select S5P_DEV_FIMC2 | ||
152 | select S5P_DEV_JPEG | ||
153 | select S5P_DEV_MFC | ||
145 | select SAMSUNG_DEV_ADC | 154 | select SAMSUNG_DEV_ADC |
146 | select SAMSUNG_DEV_BACKLIGHT | 155 | select SAMSUNG_DEV_BACKLIGHT |
147 | select SAMSUNG_DEV_IDE | 156 | select SAMSUNG_DEV_IDE |
diff --git a/arch/arm/mach-s5pv210/clock.c b/arch/arm/mach-s5pv210/clock.c index b9ec0c35379f..09609d50961d 100644 --- a/arch/arm/mach-s5pv210/clock.c +++ b/arch/arm/mach-s5pv210/clock.c | |||
@@ -340,6 +340,11 @@ static struct clk init_clocks_off[] = { | |||
340 | .enable = s5pv210_clk_ip0_ctrl, | 340 | .enable = s5pv210_clk_ip0_ctrl, |
341 | .ctrlbit = (1 << 26), | 341 | .ctrlbit = (1 << 26), |
342 | }, { | 342 | }, { |
343 | .name = "jpeg", | ||
344 | .parent = &clk_hclk_dsys.clk, | ||
345 | .enable = s5pv210_clk_ip0_ctrl, | ||
346 | .ctrlbit = (1 << 28), | ||
347 | }, { | ||
343 | .name = "mfc", | 348 | .name = "mfc", |
344 | .devname = "s5p-mfc", | 349 | .devname = "s5p-mfc", |
345 | .parent = &clk_pclk_psys.clk, | 350 | .parent = &clk_pclk_psys.clk, |
diff --git a/arch/arm/mach-s5pv210/include/mach/map.h b/arch/arm/mach-s5pv210/include/mach/map.h index 89c34b8f73bf..b7c8a1917ffc 100644 --- a/arch/arm/mach-s5pv210/include/mach/map.h +++ b/arch/arm/mach-s5pv210/include/mach/map.h | |||
@@ -90,6 +90,8 @@ | |||
90 | #define S5PV210_PA_FIMC1 0xFB300000 | 90 | #define S5PV210_PA_FIMC1 0xFB300000 |
91 | #define S5PV210_PA_FIMC2 0xFB400000 | 91 | #define S5PV210_PA_FIMC2 0xFB400000 |
92 | 92 | ||
93 | #define S5PV210_PA_JPEG 0xFB600000 | ||
94 | |||
93 | #define S5PV210_PA_SDO 0xF9000000 | 95 | #define S5PV210_PA_SDO 0xF9000000 |
94 | #define S5PV210_PA_VP 0xF9100000 | 96 | #define S5PV210_PA_VP 0xF9100000 |
95 | #define S5PV210_PA_MIXER 0xF9200000 | 97 | #define S5PV210_PA_MIXER 0xF9200000 |
@@ -132,6 +134,8 @@ | |||
132 | #define S5P_PA_SYSCON S5PV210_PA_SYSCON | 134 | #define S5P_PA_SYSCON S5PV210_PA_SYSCON |
133 | #define S5P_PA_TIMER S5PV210_PA_TIMER | 135 | #define S5P_PA_TIMER S5PV210_PA_TIMER |
134 | 136 | ||
137 | #define S5P_PA_JPEG S5PV210_PA_JPEG | ||
138 | |||
135 | #define SAMSUNG_PA_ADC S5PV210_PA_ADC | 139 | #define SAMSUNG_PA_ADC S5PV210_PA_ADC |
136 | #define SAMSUNG_PA_CFCON S5PV210_PA_CFCON | 140 | #define SAMSUNG_PA_CFCON S5PV210_PA_CFCON |
137 | #define SAMSUNG_PA_KEYPAD S5PV210_PA_KEYPAD | 141 | #define SAMSUNG_PA_KEYPAD S5PV210_PA_KEYPAD |
diff --git a/arch/arm/mach-s5pv210/mach-aquila.c b/arch/arm/mach-s5pv210/mach-aquila.c index 5e734d025a6a..a9ea64e0da0d 100644 --- a/arch/arm/mach-s5pv210/mach-aquila.c +++ b/arch/arm/mach-s5pv210/mach-aquila.c | |||
@@ -616,6 +616,7 @@ static struct platform_device *aquila_devices[] __initdata = { | |||
616 | &s5p_device_fimc0, | 616 | &s5p_device_fimc0, |
617 | &s5p_device_fimc1, | 617 | &s5p_device_fimc1, |
618 | &s5p_device_fimc2, | 618 | &s5p_device_fimc2, |
619 | &s5p_device_fimc_md, | ||
619 | &s5pv210_device_iis0, | 620 | &s5pv210_device_iis0, |
620 | &wm8994_fixed_voltage0, | 621 | &wm8994_fixed_voltage0, |
621 | &wm8994_fixed_voltage1, | 622 | &wm8994_fixed_voltage1, |
diff --git a/arch/arm/mach-s5pv210/mach-smdkc110.c b/arch/arm/mach-s5pv210/mach-smdkc110.c index b323983b2c54..dfc29236321c 100644 --- a/arch/arm/mach-s5pv210/mach-smdkc110.c +++ b/arch/arm/mach-s5pv210/mach-smdkc110.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <plat/iic.h> | 31 | #include <plat/iic.h> |
32 | #include <plat/pm.h> | 32 | #include <plat/pm.h> |
33 | #include <plat/s5p-time.h> | 33 | #include <plat/s5p-time.h> |
34 | #include <plat/mfc.h> | ||
34 | 35 | ||
35 | #include "common.h" | 36 | #include "common.h" |
36 | 37 | ||
@@ -94,6 +95,13 @@ static struct platform_device *smdkc110_devices[] __initdata = { | |||
94 | &s3c_device_i2c2, | 95 | &s3c_device_i2c2, |
95 | &s3c_device_rtc, | 96 | &s3c_device_rtc, |
96 | &s3c_device_wdt, | 97 | &s3c_device_wdt, |
98 | &s5p_device_fimc0, | ||
99 | &s5p_device_fimc1, | ||
100 | &s5p_device_fimc2, | ||
101 | &s5p_device_fimc_md, | ||
102 | &s5p_device_mfc, | ||
103 | &s5p_device_mfc_l, | ||
104 | &s5p_device_mfc_r, | ||
97 | }; | 105 | }; |
98 | 106 | ||
99 | static struct i2c_board_info smdkc110_i2c_devs0[] __initdata = { | 107 | static struct i2c_board_info smdkc110_i2c_devs0[] __initdata = { |
@@ -117,6 +125,11 @@ static void __init smdkc110_map_io(void) | |||
117 | s5p_set_timer_source(S5P_PWM3, S5P_PWM4); | 125 | s5p_set_timer_source(S5P_PWM3, S5P_PWM4); |
118 | } | 126 | } |
119 | 127 | ||
128 | static void __init smdkc110_reserve(void) | ||
129 | { | ||
130 | s5p_mfc_reserve_mem(0x43000000, 8 << 20, 0x51000000, 8 << 20); | ||
131 | } | ||
132 | |||
120 | static void __init smdkc110_machine_init(void) | 133 | static void __init smdkc110_machine_init(void) |
121 | { | 134 | { |
122 | s3c_pm_init(); | 135 | s3c_pm_init(); |
@@ -145,4 +158,5 @@ MACHINE_START(SMDKC110, "SMDKC110") | |||
145 | .init_machine = smdkc110_machine_init, | 158 | .init_machine = smdkc110_machine_init, |
146 | .timer = &s5p_timer, | 159 | .timer = &s5p_timer, |
147 | .restart = s5pv210_restart, | 160 | .restart = s5pv210_restart, |
161 | .reserve = &smdkc110_reserve, | ||
148 | MACHINE_END | 162 | MACHINE_END |
diff --git a/arch/arm/mach-s5pv210/mach-smdkv210.c b/arch/arm/mach-s5pv210/mach-smdkv210.c index dff9ea7b5bba..b6c79f07d29f 100644 --- a/arch/arm/mach-s5pv210/mach-smdkv210.c +++ b/arch/arm/mach-s5pv210/mach-smdkv210.c | |||
@@ -46,6 +46,7 @@ | |||
46 | #include <plat/s5p-time.h> | 46 | #include <plat/s5p-time.h> |
47 | #include <plat/backlight.h> | 47 | #include <plat/backlight.h> |
48 | #include <plat/regs-fb-v4.h> | 48 | #include <plat/regs-fb-v4.h> |
49 | #include <plat/mfc.h> | ||
49 | 50 | ||
50 | #include "common.h" | 51 | #include "common.h" |
51 | 52 | ||
@@ -223,6 +224,14 @@ static struct platform_device *smdkv210_devices[] __initdata = { | |||
223 | &s3c_device_rtc, | 224 | &s3c_device_rtc, |
224 | &s3c_device_ts, | 225 | &s3c_device_ts, |
225 | &s3c_device_wdt, | 226 | &s3c_device_wdt, |
227 | &s5p_device_fimc0, | ||
228 | &s5p_device_fimc1, | ||
229 | &s5p_device_fimc2, | ||
230 | &s5p_device_fimc_md, | ||
231 | &s5p_device_jpeg, | ||
232 | &s5p_device_mfc, | ||
233 | &s5p_device_mfc_l, | ||
234 | &s5p_device_mfc_r, | ||
226 | &s5pv210_device_ac97, | 235 | &s5pv210_device_ac97, |
227 | &s5pv210_device_iis0, | 236 | &s5pv210_device_iis0, |
228 | &s5pv210_device_spdif, | 237 | &s5pv210_device_spdif, |
@@ -282,6 +291,11 @@ static void __init smdkv210_map_io(void) | |||
282 | s5p_set_timer_source(S5P_PWM2, S5P_PWM4); | 291 | s5p_set_timer_source(S5P_PWM2, S5P_PWM4); |
283 | } | 292 | } |
284 | 293 | ||
294 | static void __init smdkv210_reserve(void) | ||
295 | { | ||
296 | s5p_mfc_reserve_mem(0x43000000, 8 << 20, 0x51000000, 8 << 20); | ||
297 | } | ||
298 | |||
285 | static void __init smdkv210_machine_init(void) | 299 | static void __init smdkv210_machine_init(void) |
286 | { | 300 | { |
287 | s3c_pm_init(); | 301 | s3c_pm_init(); |
@@ -319,4 +333,5 @@ MACHINE_START(SMDKV210, "SMDKV210") | |||
319 | .init_machine = smdkv210_machine_init, | 333 | .init_machine = smdkv210_machine_init, |
320 | .timer = &s5p_timer, | 334 | .timer = &s5p_timer, |
321 | .restart = s5pv210_restart, | 335 | .restart = s5pv210_restart, |
336 | .reserve = &smdkv210_reserve, | ||
322 | MACHINE_END | 337 | MACHINE_END |