aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-omap1/board-ams-delta.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c
index 41992ab71961..12f7f607ab1f 100644
--- a/arch/arm/mach-omap1/board-ams-delta.c
+++ b/arch/arm/mach-omap1/board-ams-delta.c
@@ -19,6 +19,8 @@
19#include <linux/platform_device.h> 19#include <linux/platform_device.h>
20#include <linux/serial_8250.h> 20#include <linux/serial_8250.h>
21 21
22#include <media/soc_camera.h>
23
22#include <asm/serial.h> 24#include <asm/serial.h>
23#include <mach/hardware.h> 25#include <mach/hardware.h>
24#include <asm/mach-types.h> 26#include <asm/mach-types.h>
@@ -32,6 +34,7 @@
32#include <plat/usb.h> 34#include <plat/usb.h>
33#include <plat/board.h> 35#include <plat/board.h>
34#include <plat/common.h> 36#include <plat/common.h>
37#include <mach/camera.h>
35 38
36#include <mach/ams-delta-fiq.h> 39#include <mach/ams-delta-fiq.h>
37 40
@@ -213,10 +216,37 @@ static struct platform_device ams_delta_led_device = {
213 .id = -1 216 .id = -1
214}; 217};
215 218
219static struct i2c_board_info ams_delta_camera_board_info[] = {
220 {
221 I2C_BOARD_INFO("ov6650", 0x60),
222 },
223};
224
225static struct soc_camera_link __initdata ams_delta_iclink = {
226 .bus_id = 0, /* OMAP1 SoC camera bus */
227 .i2c_adapter_id = 1,
228 .board_info = &ams_delta_camera_board_info[0],
229 .module_name = "ov6650",
230};
231
232static struct platform_device ams_delta_camera_device = {
233 .name = "soc-camera-pdrv",
234 .id = 0,
235 .dev = {
236 .platform_data = &ams_delta_iclink,
237 },
238};
239
240static struct omap1_cam_platform_data ams_delta_camera_platform_data = {
241 .camexclk_khz = 12000, /* default 12MHz clock, no extra DPLL */
242 .lclk_khz_max = 1334, /* results in 5fps CIF, 10fps QCIF */
243};
244
216static struct platform_device *ams_delta_devices[] __initdata = { 245static struct platform_device *ams_delta_devices[] __initdata = {
217 &ams_delta_kp_device, 246 &ams_delta_kp_device,
218 &ams_delta_lcd_device, 247 &ams_delta_lcd_device,
219 &ams_delta_led_device, 248 &ams_delta_led_device,
249 &ams_delta_camera_device,
220}; 250};
221 251
222static void __init ams_delta_init(void) 252static void __init ams_delta_init(void)
@@ -225,6 +255,20 @@ static void __init ams_delta_init(void)
225 omap_cfg_reg(UART1_TX); 255 omap_cfg_reg(UART1_TX);
226 omap_cfg_reg(UART1_RTS); 256 omap_cfg_reg(UART1_RTS);
227 257
258 /* parallel camera interface */
259 omap_cfg_reg(H19_1610_CAM_EXCLK);
260 omap_cfg_reg(J15_1610_CAM_LCLK);
261 omap_cfg_reg(L18_1610_CAM_VS);
262 omap_cfg_reg(L15_1610_CAM_HS);
263 omap_cfg_reg(L19_1610_CAM_D0);
264 omap_cfg_reg(K14_1610_CAM_D1);
265 omap_cfg_reg(K15_1610_CAM_D2);
266 omap_cfg_reg(K19_1610_CAM_D3);
267 omap_cfg_reg(K18_1610_CAM_D4);
268 omap_cfg_reg(J14_1610_CAM_D5);
269 omap_cfg_reg(J19_1610_CAM_D6);
270 omap_cfg_reg(J18_1610_CAM_D7);
271
228 iotable_init(ams_delta_io_desc, ARRAY_SIZE(ams_delta_io_desc)); 272 iotable_init(ams_delta_io_desc, ARRAY_SIZE(ams_delta_io_desc));
229 273
230 omap_board_config = ams_delta_config; 274 omap_board_config = ams_delta_config;
@@ -236,6 +280,7 @@ static void __init ams_delta_init(void)
236 ams_delta_latch2_write(~0, 0); 280 ams_delta_latch2_write(~0, 0);
237 281
238 omap1_usb_init(&ams_delta_usb_config); 282 omap1_usb_init(&ams_delta_usb_config);
283 omap1_set_camera_info(&ams_delta_camera_platform_data);
239 platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices)); 284 platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices));
240 285
241#ifdef CONFIG_AMS_DELTA_FIQ 286#ifdef CONFIG_AMS_DELTA_FIQ