| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 1 | /* Copyright (c) 2012, Code Aurora Forum. All rights reserved. | 
|  | 2 | * | 
|  | 3 | * This program is free software; you can redistribute it and/or modify | 
|  | 4 | * it under the terms of the GNU General Public License version 2 and | 
|  | 5 | * only version 2 as published by the Free Software Foundation. | 
|  | 6 | * | 
|  | 7 | * This program is distributed in the hope that it will be useful, | 
|  | 8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | 10 | * GNU General Public License for more details. | 
|  | 11 | * | 
|  | 12 | */ | 
|  | 13 |  | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 14 | #include <linux/i2c.h> | 
| Kevin Chan | eb6b607 | 2012-01-17 11:54:54 -0800 | [diff] [blame] | 15 | #include <linux/gpio.h> | 
| Steve Muckle | f132c6c | 2012-06-06 18:30:57 -0700 | [diff] [blame] | 16 |  | 
|  | 17 | #include <asm/mach-types.h> | 
|  | 18 |  | 
| Jack Wang | b88c8c2 | 2012-07-26 11:33:36 -0700 | [diff] [blame] | 19 | #include <mach/camera.h> | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 20 | #include <mach/msm_bus_board.h> | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 21 | #include <mach/gpiomux.h> | 
|  | 22 |  | 
|  | 23 | #include "devices.h" | 
|  | 24 | #include "board-8064.h" | 
|  | 25 |  | 
| Steve Muckle | f132c6c | 2012-06-06 18:30:57 -0700 | [diff] [blame] | 26 | #ifdef CONFIG_MSM_CAMERA | 
|  | 27 |  | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 28 | static struct gpiomux_setting cam_settings[] = { | 
|  | 29 | { | 
|  | 30 | .func = GPIOMUX_FUNC_GPIO, /*suspend*/ | 
|  | 31 | .drv = GPIOMUX_DRV_2MA, | 
|  | 32 | .pull = GPIOMUX_PULL_DOWN, | 
|  | 33 | }, | 
|  | 34 |  | 
|  | 35 | { | 
|  | 36 | .func = GPIOMUX_FUNC_1, /*active 1*/ | 
|  | 37 | .drv = GPIOMUX_DRV_2MA, | 
|  | 38 | .pull = GPIOMUX_PULL_NONE, | 
|  | 39 | }, | 
|  | 40 |  | 
|  | 41 | { | 
|  | 42 | .func = GPIOMUX_FUNC_GPIO, /*active 2*/ | 
|  | 43 | .drv = GPIOMUX_DRV_2MA, | 
|  | 44 | .pull = GPIOMUX_PULL_NONE, | 
|  | 45 | }, | 
|  | 46 |  | 
|  | 47 | { | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 48 | .func = GPIOMUX_FUNC_2, /*active 3*/ | 
|  | 49 | .drv = GPIOMUX_DRV_2MA, | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 50 | .pull = GPIOMUX_PULL_NONE, | 
|  | 51 | }, | 
|  | 52 |  | 
|  | 53 | { | 
|  | 54 | .func = GPIOMUX_FUNC_5, /*active 4*/ | 
|  | 55 | .drv = GPIOMUX_DRV_8MA, | 
|  | 56 | .pull = GPIOMUX_PULL_UP, | 
|  | 57 | }, | 
|  | 58 |  | 
|  | 59 | { | 
|  | 60 | .func = GPIOMUX_FUNC_6, /*active 5*/ | 
|  | 61 | .drv = GPIOMUX_DRV_8MA, | 
|  | 62 | .pull = GPIOMUX_PULL_UP, | 
|  | 63 | }, | 
|  | 64 |  | 
|  | 65 | { | 
|  | 66 | .func = GPIOMUX_FUNC_2, /*active 6*/ | 
|  | 67 | .drv = GPIOMUX_DRV_2MA, | 
|  | 68 | .pull = GPIOMUX_PULL_UP, | 
|  | 69 | }, | 
|  | 70 |  | 
|  | 71 | { | 
|  | 72 | .func = GPIOMUX_FUNC_3, /*active 7*/ | 
|  | 73 | .drv = GPIOMUX_DRV_8MA, | 
|  | 74 | .pull = GPIOMUX_PULL_UP, | 
|  | 75 | }, | 
|  | 76 |  | 
|  | 77 | { | 
|  | 78 | .func = GPIOMUX_FUNC_GPIO, /*i2c suspend*/ | 
|  | 79 | .drv = GPIOMUX_DRV_2MA, | 
|  | 80 | .pull = GPIOMUX_PULL_KEEPER, | 
|  | 81 | }, | 
|  | 82 |  | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 83 | { | 
|  | 84 | .func = GPIOMUX_FUNC_9, /*active 9*/ | 
|  | 85 | .drv = GPIOMUX_DRV_8MA, | 
|  | 86 | .pull = GPIOMUX_PULL_NONE, | 
|  | 87 | }, | 
|  | 88 | { | 
|  | 89 | .func = GPIOMUX_FUNC_A, /*active 10*/ | 
|  | 90 | .drv = GPIOMUX_DRV_8MA, | 
|  | 91 | .pull = GPIOMUX_PULL_NONE, | 
|  | 92 | }, | 
|  | 93 | { | 
|  | 94 | .func = GPIOMUX_FUNC_6, /*active 11*/ | 
|  | 95 | .drv = GPIOMUX_DRV_8MA, | 
|  | 96 | .pull = GPIOMUX_PULL_NONE, | 
|  | 97 | }, | 
|  | 98 | { | 
|  | 99 | .func = GPIOMUX_FUNC_4, /*active 12*/ | 
|  | 100 | .drv = GPIOMUX_DRV_2MA, | 
|  | 101 | .pull = GPIOMUX_PULL_NONE, | 
|  | 102 | }, | 
|  | 103 |  | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 104 | }; | 
|  | 105 |  | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 106 | static struct msm_gpiomux_config apq8064_cam_common_configs[] = { | 
|  | 107 | { | 
| Jeyaprakash Soundrapandian | a1b3c53 | 2012-02-29 20:33:30 -0800 | [diff] [blame] | 108 | .gpio = 1, | 
|  | 109 | .settings = { | 
|  | 110 | [GPIOMUX_ACTIVE]    = &cam_settings[2], | 
|  | 111 | [GPIOMUX_SUSPENDED] = &cam_settings[0], | 
|  | 112 | }, | 
|  | 113 | }, | 
|  | 114 | { | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 115 | .gpio = 2, | 
|  | 116 | .settings = { | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 117 | [GPIOMUX_ACTIVE]    = &cam_settings[12], | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 118 | [GPIOMUX_SUSPENDED] = &cam_settings[0], | 
|  | 119 | }, | 
|  | 120 | }, | 
|  | 121 | { | 
|  | 122 | .gpio = 3, | 
|  | 123 | .settings = { | 
| Jeyaprakash Soundrapandian | a1b3c53 | 2012-02-29 20:33:30 -0800 | [diff] [blame] | 124 | [GPIOMUX_ACTIVE]    = &cam_settings[2], | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 125 | [GPIOMUX_SUSPENDED] = &cam_settings[0], | 
|  | 126 | }, | 
|  | 127 | }, | 
|  | 128 | { | 
|  | 129 | .gpio = 4, | 
|  | 130 | .settings = { | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 131 | [GPIOMUX_ACTIVE]    = &cam_settings[3], | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 132 | [GPIOMUX_SUSPENDED] = &cam_settings[0], | 
|  | 133 | }, | 
|  | 134 | }, | 
|  | 135 | { | 
|  | 136 | .gpio = 5, | 
|  | 137 | .settings = { | 
|  | 138 | [GPIOMUX_ACTIVE]    = &cam_settings[1], | 
|  | 139 | [GPIOMUX_SUSPENDED] = &cam_settings[0], | 
|  | 140 | }, | 
|  | 141 | }, | 
|  | 142 | { | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 143 | .gpio = 34, | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 144 | .settings = { | 
|  | 145 | [GPIOMUX_ACTIVE]    = &cam_settings[2], | 
|  | 146 | [GPIOMUX_SUSPENDED] = &cam_settings[0], | 
|  | 147 | }, | 
|  | 148 | }, | 
|  | 149 | { | 
|  | 150 | .gpio = 107, | 
|  | 151 | .settings = { | 
|  | 152 | [GPIOMUX_ACTIVE]    = &cam_settings[2], | 
|  | 153 | [GPIOMUX_SUSPENDED] = &cam_settings[0], | 
|  | 154 | }, | 
|  | 155 | }, | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 156 | { | 
|  | 157 | .gpio = 10, | 
|  | 158 | .settings = { | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 159 | [GPIOMUX_ACTIVE]    = &cam_settings[9], | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 160 | [GPIOMUX_SUSPENDED] = &cam_settings[8], | 
|  | 161 | }, | 
|  | 162 | }, | 
|  | 163 | { | 
|  | 164 | .gpio = 11, | 
|  | 165 | .settings = { | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 166 | [GPIOMUX_ACTIVE]    = &cam_settings[10], | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 167 | [GPIOMUX_SUSPENDED] = &cam_settings[8], | 
|  | 168 | }, | 
|  | 169 | }, | 
|  | 170 | { | 
|  | 171 | .gpio = 12, | 
|  | 172 | .settings = { | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 173 | [GPIOMUX_ACTIVE]    = &cam_settings[11], | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 174 | [GPIOMUX_SUSPENDED] = &cam_settings[8], | 
|  | 175 | }, | 
|  | 176 | }, | 
|  | 177 | { | 
|  | 178 | .gpio = 13, | 
|  | 179 | .settings = { | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 180 | [GPIOMUX_ACTIVE]    = &cam_settings[11], | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 181 | [GPIOMUX_SUSPENDED] = &cam_settings[8], | 
|  | 182 | }, | 
|  | 183 | }, | 
|  | 184 | }; | 
|  | 185 |  | 
| Jeyaprakash Soundrapandian | a1b3c53 | 2012-02-29 20:33:30 -0800 | [diff] [blame] | 186 |  | 
|  | 187 | #define VFE_CAMIF_TIMER1_GPIO 3 | 
|  | 188 | #define VFE_CAMIF_TIMER2_GPIO 1 | 
|  | 189 |  | 
|  | 190 | static struct msm_camera_sensor_flash_src msm_flash_src = { | 
|  | 191 | .flash_sr_type = MSM_CAMERA_FLASH_SRC_EXT, | 
|  | 192 | ._fsrc.ext_driver_src.led_en = VFE_CAMIF_TIMER1_GPIO, | 
|  | 193 | ._fsrc.ext_driver_src.led_flash_en = VFE_CAMIF_TIMER2_GPIO, | 
| Jeyaprakash Soundrapandian | 85099fe | 2012-05-15 17:09:51 -0700 | [diff] [blame] | 194 | ._fsrc.ext_driver_src.flash_id = MAM_CAMERA_EXT_LED_FLASH_SC628A, | 
| Jeyaprakash Soundrapandian | a1b3c53 | 2012-02-29 20:33:30 -0800 | [diff] [blame] | 195 | }; | 
|  | 196 |  | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 197 | static struct msm_gpiomux_config apq8064_cam_2d_configs[] = { | 
|  | 198 | }; | 
|  | 199 |  | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 200 | static struct msm_bus_vectors cam_init_vectors[] = { | 
|  | 201 | { | 
|  | 202 | .src = MSM_BUS_MASTER_VFE, | 
|  | 203 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 204 | .ab  = 0, | 
|  | 205 | .ib  = 0, | 
|  | 206 | }, | 
|  | 207 | { | 
|  | 208 | .src = MSM_BUS_MASTER_VPE, | 
|  | 209 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 210 | .ab  = 0, | 
|  | 211 | .ib  = 0, | 
|  | 212 | }, | 
|  | 213 | { | 
|  | 214 | .src = MSM_BUS_MASTER_JPEG_ENC, | 
|  | 215 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 216 | .ab  = 0, | 
|  | 217 | .ib  = 0, | 
|  | 218 | }, | 
|  | 219 | }; | 
|  | 220 |  | 
|  | 221 | static struct msm_bus_vectors cam_preview_vectors[] = { | 
|  | 222 | { | 
|  | 223 | .src = MSM_BUS_MASTER_VFE, | 
|  | 224 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 225 | .ab  = 27648000, | 
|  | 226 | .ib  = 110592000, | 
|  | 227 | }, | 
|  | 228 | { | 
|  | 229 | .src = MSM_BUS_MASTER_VPE, | 
|  | 230 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 231 | .ab  = 0, | 
|  | 232 | .ib  = 0, | 
|  | 233 | }, | 
|  | 234 | { | 
|  | 235 | .src = MSM_BUS_MASTER_JPEG_ENC, | 
|  | 236 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 237 | .ab  = 0, | 
|  | 238 | .ib  = 0, | 
|  | 239 | }, | 
|  | 240 | }; | 
|  | 241 |  | 
|  | 242 | static struct msm_bus_vectors cam_video_vectors[] = { | 
|  | 243 | { | 
|  | 244 | .src = MSM_BUS_MASTER_VFE, | 
|  | 245 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
| Kiran Kumar H N | 1d1d307 | 2012-07-05 13:40:13 -0700 | [diff] [blame] | 246 | .ab  = 274406400, | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 247 | .ib  = 561807360, | 
|  | 248 | }, | 
|  | 249 | { | 
|  | 250 | .src = MSM_BUS_MASTER_VPE, | 
|  | 251 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 252 | .ab  = 206807040, | 
|  | 253 | .ib  = 488816640, | 
|  | 254 | }, | 
|  | 255 | { | 
|  | 256 | .src = MSM_BUS_MASTER_JPEG_ENC, | 
|  | 257 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 258 | .ab  = 0, | 
|  | 259 | .ib  = 0, | 
|  | 260 | }, | 
|  | 261 | }; | 
|  | 262 |  | 
|  | 263 | static struct msm_bus_vectors cam_snapshot_vectors[] = { | 
|  | 264 | { | 
|  | 265 | .src = MSM_BUS_MASTER_VFE, | 
|  | 266 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 267 | .ab  = 274423680, | 
|  | 268 | .ib  = 1097694720, | 
|  | 269 | }, | 
|  | 270 | { | 
|  | 271 | .src = MSM_BUS_MASTER_VPE, | 
|  | 272 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 273 | .ab  = 0, | 
|  | 274 | .ib  = 0, | 
|  | 275 | }, | 
|  | 276 | { | 
|  | 277 | .src = MSM_BUS_MASTER_JPEG_ENC, | 
|  | 278 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 279 | .ab  = 540000000, | 
|  | 280 | .ib  = 1350000000, | 
|  | 281 | }, | 
|  | 282 | }; | 
|  | 283 |  | 
|  | 284 | static struct msm_bus_vectors cam_zsl_vectors[] = { | 
|  | 285 | { | 
|  | 286 | .src = MSM_BUS_MASTER_VFE, | 
|  | 287 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 288 | .ab  = 302071680, | 
|  | 289 | .ib  = 1208286720, | 
|  | 290 | }, | 
|  | 291 | { | 
|  | 292 | .src = MSM_BUS_MASTER_VPE, | 
|  | 293 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 294 | .ab  = 0, | 
|  | 295 | .ib  = 0, | 
|  | 296 | }, | 
|  | 297 | { | 
|  | 298 | .src = MSM_BUS_MASTER_JPEG_ENC, | 
|  | 299 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 300 | .ab  = 540000000, | 
|  | 301 | .ib  = 1350000000, | 
|  | 302 | }, | 
|  | 303 | }; | 
|  | 304 |  | 
| Kiran Kumar H N | 1d1d307 | 2012-07-05 13:40:13 -0700 | [diff] [blame] | 305 | static struct msm_bus_vectors cam_video_ls_vectors[] = { | 
|  | 306 | { | 
|  | 307 | .src = MSM_BUS_MASTER_VFE, | 
|  | 308 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 309 | .ab  = 348192000, | 
|  | 310 | .ib  = 617103360, | 
|  | 311 | }, | 
|  | 312 | { | 
|  | 313 | .src = MSM_BUS_MASTER_VPE, | 
|  | 314 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 315 | .ab  = 206807040, | 
|  | 316 | .ib  = 488816640, | 
|  | 317 | }, | 
|  | 318 | { | 
|  | 319 | .src = MSM_BUS_MASTER_JPEG_ENC, | 
|  | 320 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 321 | .ab  = 540000000, | 
|  | 322 | .ib  = 1350000000, | 
|  | 323 | }, | 
|  | 324 | }; | 
|  | 325 |  | 
| Nishant Pandit | 221a948 | 2012-09-03 05:36:04 +0530 | [diff] [blame] | 326 | static struct msm_bus_vectors cam_dual_vectors[] = { | 
|  | 327 | { | 
|  | 328 | .src = MSM_BUS_MASTER_VFE, | 
|  | 329 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 330 | .ab  = 348192000, | 
|  | 331 | .ib  = 1208286720, | 
|  | 332 | }, | 
|  | 333 | { | 
|  | 334 | .src = MSM_BUS_MASTER_VPE, | 
|  | 335 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 336 | .ab  = 206807040, | 
|  | 337 | .ib  = 488816640, | 
|  | 338 | }, | 
|  | 339 | { | 
|  | 340 | .src = MSM_BUS_MASTER_JPEG_ENC, | 
|  | 341 | .dst = MSM_BUS_SLAVE_EBI_CH0, | 
|  | 342 | .ab  = 540000000, | 
|  | 343 | .ib  = 1350000000, | 
|  | 344 | }, | 
|  | 345 | { | 
|  | 346 | .src = MSM_BUS_MASTER_JPEG_ENC, | 
|  | 347 | .dst = MSM_BUS_SLAVE_MM_IMEM, | 
|  | 348 | .ab  = 43200000, | 
|  | 349 | .ib  = 69120000, | 
|  | 350 | }, | 
|  | 351 | { | 
|  | 352 | .src = MSM_BUS_MASTER_VFE, | 
|  | 353 | .dst = MSM_BUS_SLAVE_MM_IMEM, | 
|  | 354 | .ab  = 43200000, | 
|  | 355 | .ib  = 69120000, | 
|  | 356 | }, | 
|  | 357 | }; | 
|  | 358 |  | 
|  | 359 |  | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 360 | static struct msm_bus_paths cam_bus_client_config[] = { | 
|  | 361 | { | 
|  | 362 | ARRAY_SIZE(cam_init_vectors), | 
|  | 363 | cam_init_vectors, | 
|  | 364 | }, | 
|  | 365 | { | 
|  | 366 | ARRAY_SIZE(cam_preview_vectors), | 
|  | 367 | cam_preview_vectors, | 
|  | 368 | }, | 
|  | 369 | { | 
|  | 370 | ARRAY_SIZE(cam_video_vectors), | 
|  | 371 | cam_video_vectors, | 
|  | 372 | }, | 
|  | 373 | { | 
|  | 374 | ARRAY_SIZE(cam_snapshot_vectors), | 
|  | 375 | cam_snapshot_vectors, | 
|  | 376 | }, | 
|  | 377 | { | 
|  | 378 | ARRAY_SIZE(cam_zsl_vectors), | 
|  | 379 | cam_zsl_vectors, | 
|  | 380 | }, | 
| Kiran Kumar H N | 1d1d307 | 2012-07-05 13:40:13 -0700 | [diff] [blame] | 381 | { | 
|  | 382 | ARRAY_SIZE(cam_video_ls_vectors), | 
|  | 383 | cam_video_ls_vectors, | 
|  | 384 | }, | 
| Nishant Pandit | 221a948 | 2012-09-03 05:36:04 +0530 | [diff] [blame] | 385 | { | 
|  | 386 | ARRAY_SIZE(cam_dual_vectors), | 
|  | 387 | cam_dual_vectors, | 
|  | 388 | }, | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 389 | }; | 
|  | 390 |  | 
|  | 391 | static struct msm_bus_scale_pdata cam_bus_client_pdata = { | 
|  | 392 | cam_bus_client_config, | 
|  | 393 | ARRAY_SIZE(cam_bus_client_config), | 
|  | 394 | .name = "msm_camera", | 
|  | 395 | }; | 
|  | 396 |  | 
|  | 397 | static struct msm_camera_device_platform_data msm_camera_csi_device_data[] = { | 
|  | 398 | { | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 399 | .csid_core = 0, | 
| Kevin Chan | eb6b607 | 2012-01-17 11:54:54 -0800 | [diff] [blame] | 400 | .is_vpe    = 1, | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 401 | .cam_bus_scale_table = &cam_bus_client_pdata, | 
|  | 402 | }, | 
|  | 403 | { | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 404 | .csid_core = 1, | 
| Kevin Chan | eb6b607 | 2012-01-17 11:54:54 -0800 | [diff] [blame] | 405 | .is_vpe    = 1, | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 406 | .cam_bus_scale_table = &cam_bus_client_pdata, | 
|  | 407 | }, | 
|  | 408 | }; | 
|  | 409 |  | 
| Sreesudhan Ramakrish Ramkumar | 923fbad | 2012-07-26 17:31:42 -0700 | [diff] [blame] | 410 | static struct camera_vreg_t apq_8064_cam_vreg[] = { | 
| Kevin Chan | eb6b607 | 2012-01-17 11:54:54 -0800 | [diff] [blame] | 411 | {"cam_vdig", REG_LDO, 1200000, 1200000, 105000}, | 
| Sreesudhan Ramakrish Ramkumar | 6c6f57c | 2012-02-21 15:12:44 -0800 | [diff] [blame] | 412 | {"cam_vio", REG_VS, 0, 0, 0}, | 
|  | 413 | {"cam_vana", REG_LDO, 2800000, 2850000, 85600}, | 
| Kevin Chan | eb6b607 | 2012-01-17 11:54:54 -0800 | [diff] [blame] | 414 | {"cam_vaf", REG_LDO, 2800000, 2850000, 300000}, | 
|  | 415 | }; | 
|  | 416 |  | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 417 | #define CAML_RSTN PM8921_GPIO_PM_TO_SYS(28) | 
|  | 418 | #define CAMR_RSTN 34 | 
|  | 419 |  | 
| Kevin Chan | eb6b607 | 2012-01-17 11:54:54 -0800 | [diff] [blame] | 420 | static struct gpio apq8064_common_cam_gpio[] = { | 
| Kevin Chan | eb6b607 | 2012-01-17 11:54:54 -0800 | [diff] [blame] | 421 | }; | 
|  | 422 |  | 
|  | 423 | static struct gpio apq8064_back_cam_gpio[] = { | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 424 | {5, GPIOF_DIR_IN, "CAMIF_MCLK"}, | 
|  | 425 | {CAML_RSTN, GPIOF_DIR_OUT, "CAM_RESET"}, | 
| Kevin Chan | eb6b607 | 2012-01-17 11:54:54 -0800 | [diff] [blame] | 426 | }; | 
|  | 427 |  | 
|  | 428 | static struct msm_gpio_set_tbl apq8064_back_cam_gpio_set_tbl[] = { | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 429 | {CAML_RSTN, GPIOF_OUT_INIT_LOW, 10000}, | 
|  | 430 | {CAML_RSTN, GPIOF_OUT_INIT_HIGH, 10000}, | 
| Kevin Chan | eb6b607 | 2012-01-17 11:54:54 -0800 | [diff] [blame] | 431 | }; | 
|  | 432 |  | 
|  | 433 | static struct msm_camera_gpio_conf apq8064_back_cam_gpio_conf = { | 
|  | 434 | .cam_gpiomux_conf_tbl = apq8064_cam_2d_configs, | 
|  | 435 | .cam_gpiomux_conf_tbl_size = ARRAY_SIZE(apq8064_cam_2d_configs), | 
|  | 436 | .cam_gpio_common_tbl = apq8064_common_cam_gpio, | 
|  | 437 | .cam_gpio_common_tbl_size = ARRAY_SIZE(apq8064_common_cam_gpio), | 
|  | 438 | .cam_gpio_req_tbl = apq8064_back_cam_gpio, | 
|  | 439 | .cam_gpio_req_tbl_size = ARRAY_SIZE(apq8064_back_cam_gpio), | 
|  | 440 | .cam_gpio_set_tbl = apq8064_back_cam_gpio_set_tbl, | 
|  | 441 | .cam_gpio_set_tbl_size = ARRAY_SIZE(apq8064_back_cam_gpio_set_tbl), | 
|  | 442 | }; | 
|  | 443 |  | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 444 | static struct gpio apq8064_front_cam_gpio[] = { | 
|  | 445 | {4, GPIOF_DIR_IN, "CAMIF_MCLK"}, | 
|  | 446 | {12, GPIOF_DIR_IN, "CAMIF_I2C_DATA"}, | 
|  | 447 | {13, GPIOF_DIR_IN, "CAMIF_I2C_CLK"}, | 
|  | 448 | {CAMR_RSTN, GPIOF_DIR_OUT, "CAM_RESET"}, | 
|  | 449 | }; | 
|  | 450 |  | 
|  | 451 | static struct msm_gpio_set_tbl apq8064_front_cam_gpio_set_tbl[] = { | 
|  | 452 | {CAMR_RSTN, GPIOF_OUT_INIT_LOW, 10000}, | 
|  | 453 | {CAMR_RSTN, GPIOF_OUT_INIT_HIGH, 10000}, | 
|  | 454 | }; | 
|  | 455 |  | 
|  | 456 | static struct msm_camera_gpio_conf apq8064_front_cam_gpio_conf = { | 
|  | 457 | .cam_gpiomux_conf_tbl = apq8064_cam_2d_configs, | 
|  | 458 | .cam_gpiomux_conf_tbl_size = ARRAY_SIZE(apq8064_cam_2d_configs), | 
|  | 459 | .cam_gpio_common_tbl = apq8064_common_cam_gpio, | 
|  | 460 | .cam_gpio_common_tbl_size = ARRAY_SIZE(apq8064_common_cam_gpio), | 
|  | 461 | .cam_gpio_req_tbl = apq8064_front_cam_gpio, | 
|  | 462 | .cam_gpio_req_tbl_size = ARRAY_SIZE(apq8064_front_cam_gpio), | 
|  | 463 | .cam_gpio_set_tbl = apq8064_front_cam_gpio_set_tbl, | 
|  | 464 | .cam_gpio_set_tbl_size = ARRAY_SIZE(apq8064_front_cam_gpio_set_tbl), | 
|  | 465 | }; | 
|  | 466 |  | 
|  | 467 | static struct msm_camera_i2c_conf apq8064_back_cam_i2c_conf = { | 
|  | 468 | .use_i2c_mux = 1, | 
|  | 469 | .mux_dev = &msm8960_device_i2c_mux_gsbi4, | 
|  | 470 | .i2c_mux_mode = MODE_L, | 
|  | 471 | }; | 
|  | 472 |  | 
| Rajakumar Govindaram | 6627b36 | 2012-01-29 19:00:30 -0800 | [diff] [blame] | 473 | static struct i2c_board_info msm_act_main_cam_i2c_info = { | 
|  | 474 | I2C_BOARD_INFO("msm_actuator", 0x11), | 
| Jignesh Mehta | 3339457 | 2012-02-21 19:57:41 -0800 | [diff] [blame] | 475 | }; | 
|  | 476 |  | 
| Rajakumar Govindaram | 6627b36 | 2012-01-29 19:00:30 -0800 | [diff] [blame] | 477 | static struct msm_actuator_info msm_act_main_cam_0_info = { | 
|  | 478 | .board_info     = &msm_act_main_cam_i2c_info, | 
|  | 479 | .cam_name   = MSM_ACTUATOR_MAIN_CAM_0, | 
| Jignesh Mehta | 3339457 | 2012-02-21 19:57:41 -0800 | [diff] [blame] | 480 | .bus_id         = APQ_8064_GSBI4_QUP_I2C_BUS_ID, | 
|  | 481 | .vcm_pwd        = 0, | 
| Rajakumar Govindaram | 6627b36 | 2012-01-29 19:00:30 -0800 | [diff] [blame] | 482 | .vcm_enable     = 0, | 
| Jignesh Mehta | 3339457 | 2012-02-21 19:57:41 -0800 | [diff] [blame] | 483 | }; | 
|  | 484 |  | 
| Jeyaprakash Soundrapandian | 3040c03 | 2012-04-21 01:13:29 -0700 | [diff] [blame] | 485 | static struct i2c_board_info msm_act_main_cam1_i2c_info = { | 
|  | 486 | I2C_BOARD_INFO("msm_actuator", 0x18), | 
|  | 487 | }; | 
|  | 488 |  | 
|  | 489 | static struct msm_actuator_info msm_act_main_cam_1_info = { | 
|  | 490 | .board_info     = &msm_act_main_cam1_i2c_info, | 
|  | 491 | .cam_name       = MSM_ACTUATOR_MAIN_CAM_1, | 
|  | 492 | .bus_id         = APQ_8064_GSBI4_QUP_I2C_BUS_ID, | 
|  | 493 | .vcm_pwd        = 0, | 
|  | 494 | .vcm_enable     = 0, | 
|  | 495 | }; | 
|  | 496 |  | 
|  | 497 |  | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 498 | static struct msm_camera_i2c_conf apq8064_front_cam_i2c_conf = { | 
|  | 499 | .use_i2c_mux = 1, | 
|  | 500 | .mux_dev = &msm8960_device_i2c_mux_gsbi4, | 
|  | 501 | .i2c_mux_mode = MODE_L, | 
|  | 502 | }; | 
|  | 503 |  | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 504 | static struct msm_camera_sensor_flash_data flash_imx074 = { | 
| Jeyaprakash Soundrapandian | a1b3c53 | 2012-02-29 20:33:30 -0800 | [diff] [blame] | 505 | .flash_type	= MSM_CAMERA_FLASH_LED, | 
|  | 506 | .flash_src	= &msm_flash_src | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 507 | }; | 
|  | 508 |  | 
| Hody Hung | 9ba65cf | 2012-01-17 17:34:51 -0800 | [diff] [blame] | 509 | static struct msm_camera_csi_lane_params imx074_csi_lane_params = { | 
|  | 510 | .csi_lane_assign = 0xE4, | 
|  | 511 | .csi_lane_mask = 0xF, | 
|  | 512 | }; | 
|  | 513 |  | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 514 | static struct msm_camera_sensor_platform_info sensor_board_info_imx074 = { | 
|  | 515 | .mount_angle	= 90, | 
| Sreesudhan Ramakrish Ramkumar | 923fbad | 2012-07-26 17:31:42 -0700 | [diff] [blame] | 516 | .cam_vreg = apq_8064_cam_vreg, | 
|  | 517 | .num_vreg = ARRAY_SIZE(apq_8064_cam_vreg), | 
| Kevin Chan | eb6b607 | 2012-01-17 11:54:54 -0800 | [diff] [blame] | 518 | .gpio_conf = &apq8064_back_cam_gpio_conf, | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 519 | .i2c_conf = &apq8064_back_cam_i2c_conf, | 
| Hody Hung | 9ba65cf | 2012-01-17 17:34:51 -0800 | [diff] [blame] | 520 | .csi_lane_params = &imx074_csi_lane_params, | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 521 | }; | 
|  | 522 |  | 
| Jeyaprakash Soundrapandian | 734476b | 2012-05-03 20:08:15 -0700 | [diff] [blame] | 523 | static struct i2c_board_info imx074_eeprom_i2c_info = { | 
|  | 524 | I2C_BOARD_INFO("imx074_eeprom", 0x34 << 1), | 
|  | 525 | }; | 
|  | 526 |  | 
|  | 527 | static struct msm_eeprom_info imx074_eeprom_info = { | 
|  | 528 | .board_info     = &imx074_eeprom_i2c_info, | 
|  | 529 | .bus_id         = APQ_8064_GSBI4_QUP_I2C_BUS_ID, | 
|  | 530 | }; | 
|  | 531 |  | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 532 | static struct msm_camera_sensor_info msm_camera_sensor_imx074_data = { | 
|  | 533 | .sensor_name	= "imx074", | 
|  | 534 | .pdata	= &msm_camera_csi_device_data[0], | 
|  | 535 | .flash_data	= &flash_imx074, | 
|  | 536 | .sensor_platform_info = &sensor_board_info_imx074, | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 537 | .csi_if	= 1, | 
|  | 538 | .camera_type = BACK_CAMERA_2D, | 
| Raju P.L.S.S.S.N | 3f4b302 | 2012-03-29 10:09:01 +0530 | [diff] [blame] | 539 | .sensor_type = BAYER_SENSOR, | 
| Rajakumar Govindaram | 6627b36 | 2012-01-29 19:00:30 -0800 | [diff] [blame] | 540 | .actuator_info = &msm_act_main_cam_0_info, | 
| Jeyaprakash Soundrapandian | 734476b | 2012-05-03 20:08:15 -0700 | [diff] [blame] | 541 | .eeprom_info = &imx074_eeprom_info, | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 542 | }; | 
| Jeyaprakash Soundrapandian | 734476b | 2012-05-03 20:08:15 -0700 | [diff] [blame] | 543 |  | 
| Sreesudhan Ramakrish Ramkumar | 3381da7 | 2012-01-27 08:08:32 -0800 | [diff] [blame] | 544 | static struct msm_camera_csi_lane_params imx091_csi_lane_params = { | 
|  | 545 | .csi_lane_assign = 0xE4, | 
|  | 546 | .csi_lane_mask = 0xF, | 
|  | 547 | }; | 
|  | 548 |  | 
| Sreesudhan Ramakrish Ramkumar | 3381da7 | 2012-01-27 08:08:32 -0800 | [diff] [blame] | 549 | static struct msm_camera_sensor_flash_data flash_imx091 = { | 
|  | 550 | .flash_type	= MSM_CAMERA_FLASH_NONE, | 
|  | 551 | }; | 
|  | 552 |  | 
|  | 553 | static struct msm_camera_sensor_platform_info sensor_board_info_imx091 = { | 
|  | 554 | .mount_angle	= 0, | 
| Sreesudhan Ramakrish Ramkumar | 923fbad | 2012-07-26 17:31:42 -0700 | [diff] [blame] | 555 | .cam_vreg = apq_8064_cam_vreg, | 
|  | 556 | .num_vreg = ARRAY_SIZE(apq_8064_cam_vreg), | 
| Sreesudhan Ramakrish Ramkumar | 3381da7 | 2012-01-27 08:08:32 -0800 | [diff] [blame] | 557 | .gpio_conf = &apq8064_back_cam_gpio_conf, | 
|  | 558 | .i2c_conf = &apq8064_back_cam_i2c_conf, | 
|  | 559 | .csi_lane_params = &imx091_csi_lane_params, | 
|  | 560 | }; | 
|  | 561 |  | 
| Jeyaprakash Soundrapandian | 734476b | 2012-05-03 20:08:15 -0700 | [diff] [blame] | 562 | static struct i2c_board_info imx091_eeprom_i2c_info = { | 
|  | 563 | I2C_BOARD_INFO("imx091_eeprom", 0x21), | 
|  | 564 | }; | 
|  | 565 |  | 
|  | 566 | static struct msm_eeprom_info imx091_eeprom_info = { | 
|  | 567 | .board_info     = &imx091_eeprom_i2c_info, | 
|  | 568 | .bus_id         = APQ_8064_GSBI4_QUP_I2C_BUS_ID, | 
|  | 569 | }; | 
|  | 570 |  | 
| Sreesudhan Ramakrish Ramkumar | 3381da7 | 2012-01-27 08:08:32 -0800 | [diff] [blame] | 571 | static struct msm_camera_sensor_info msm_camera_sensor_imx091_data = { | 
|  | 572 | .sensor_name	= "imx091", | 
|  | 573 | .pdata	= &msm_camera_csi_device_data[0], | 
|  | 574 | .flash_data	= &flash_imx091, | 
|  | 575 | .sensor_platform_info = &sensor_board_info_imx091, | 
|  | 576 | .csi_if	= 1, | 
|  | 577 | .camera_type = BACK_CAMERA_2D, | 
| Raju P.L.S.S.S.N | 3f4b302 | 2012-03-29 10:09:01 +0530 | [diff] [blame] | 578 | .sensor_type = BAYER_SENSOR, | 
| Jeyaprakash Soundrapandian | 3040c03 | 2012-04-21 01:13:29 -0700 | [diff] [blame] | 579 | .actuator_info = &msm_act_main_cam_1_info, | 
| Jeyaprakash Soundrapandian | 734476b | 2012-05-03 20:08:15 -0700 | [diff] [blame] | 580 | .eeprom_info = &imx091_eeprom_info, | 
| Sreesudhan Ramakrish Ramkumar | 3381da7 | 2012-01-27 08:08:32 -0800 | [diff] [blame] | 581 | }; | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 582 |  | 
| Sreesudhan Ramakrish Ramkumar | 8002a79 | 2012-04-09 17:42:58 -0700 | [diff] [blame] | 583 | static struct msm_camera_sensor_flash_data flash_s5k3l1yx = { | 
|  | 584 | .flash_type	= MSM_CAMERA_FLASH_NONE, | 
|  | 585 | }; | 
|  | 586 |  | 
|  | 587 | static struct msm_camera_csi_lane_params s5k3l1yx_csi_lane_params = { | 
|  | 588 | .csi_lane_assign = 0xE4, | 
|  | 589 | .csi_lane_mask = 0xF, | 
|  | 590 | }; | 
|  | 591 |  | 
|  | 592 | static struct msm_camera_sensor_platform_info sensor_board_info_s5k3l1yx = { | 
|  | 593 | .mount_angle	= 90, | 
| Sreesudhan Ramakrish Ramkumar | 923fbad | 2012-07-26 17:31:42 -0700 | [diff] [blame] | 594 | .cam_vreg = apq_8064_cam_vreg, | 
|  | 595 | .num_vreg = ARRAY_SIZE(apq_8064_cam_vreg), | 
| Sreesudhan Ramakrish Ramkumar | 8002a79 | 2012-04-09 17:42:58 -0700 | [diff] [blame] | 596 | .gpio_conf = &apq8064_back_cam_gpio_conf, | 
|  | 597 | .i2c_conf = &apq8064_back_cam_i2c_conf, | 
|  | 598 | .csi_lane_params = &s5k3l1yx_csi_lane_params, | 
|  | 599 | }; | 
|  | 600 |  | 
|  | 601 | static struct msm_camera_sensor_info msm_camera_sensor_s5k3l1yx_data = { | 
|  | 602 | .sensor_name	= "s5k3l1yx", | 
|  | 603 | .pdata	= &msm_camera_csi_device_data[0], | 
|  | 604 | .flash_data	= &flash_s5k3l1yx, | 
|  | 605 | .sensor_platform_info = &sensor_board_info_s5k3l1yx, | 
|  | 606 | .csi_if	= 1, | 
|  | 607 | .camera_type = BACK_CAMERA_2D, | 
|  | 608 | .sensor_type = BAYER_SENSOR, | 
|  | 609 | }; | 
|  | 610 |  | 
| Sreesudhan Ramakrish Ramkumar | 6c6f57c | 2012-02-21 15:12:44 -0800 | [diff] [blame] | 611 | static struct msm_camera_sensor_flash_data flash_mt9m114 = { | 
|  | 612 | .flash_type = MSM_CAMERA_FLASH_NONE | 
|  | 613 | }; | 
|  | 614 |  | 
| Hody Hung | 9ba65cf | 2012-01-17 17:34:51 -0800 | [diff] [blame] | 615 | static struct msm_camera_csi_lane_params mt9m114_csi_lane_params = { | 
|  | 616 | .csi_lane_assign = 0xE4, | 
|  | 617 | .csi_lane_mask = 0x1, | 
|  | 618 | }; | 
|  | 619 |  | 
| Sreesudhan Ramakrish Ramkumar | 6c6f57c | 2012-02-21 15:12:44 -0800 | [diff] [blame] | 620 | static struct msm_camera_sensor_platform_info sensor_board_info_mt9m114 = { | 
|  | 621 | .mount_angle = 90, | 
| Sreesudhan Ramakrish Ramkumar | 923fbad | 2012-07-26 17:31:42 -0700 | [diff] [blame] | 622 | .cam_vreg = apq_8064_cam_vreg, | 
|  | 623 | .num_vreg = ARRAY_SIZE(apq_8064_cam_vreg), | 
| Sreesudhan Ramakrish Ramkumar | 6c6f57c | 2012-02-21 15:12:44 -0800 | [diff] [blame] | 624 | .gpio_conf = &apq8064_front_cam_gpio_conf, | 
|  | 625 | .i2c_conf = &apq8064_front_cam_i2c_conf, | 
| Hody Hung | 9ba65cf | 2012-01-17 17:34:51 -0800 | [diff] [blame] | 626 | .csi_lane_params = &mt9m114_csi_lane_params, | 
| Sreesudhan Ramakrish Ramkumar | 6c6f57c | 2012-02-21 15:12:44 -0800 | [diff] [blame] | 627 | }; | 
|  | 628 |  | 
|  | 629 | static struct msm_camera_sensor_info msm_camera_sensor_mt9m114_data = { | 
|  | 630 | .sensor_name = "mt9m114", | 
|  | 631 | .pdata = &msm_camera_csi_device_data[1], | 
|  | 632 | .flash_data = &flash_mt9m114, | 
|  | 633 | .sensor_platform_info = &sensor_board_info_mt9m114, | 
|  | 634 | .csi_if = 1, | 
|  | 635 | .camera_type = FRONT_CAMERA_2D, | 
| Raju P.L.S.S.S.N | 3f4b302 | 2012-03-29 10:09:01 +0530 | [diff] [blame] | 636 | .sensor_type = YUV_SENSOR, | 
| Sreesudhan Ramakrish Ramkumar | 6c6f57c | 2012-02-21 15:12:44 -0800 | [diff] [blame] | 637 | }; | 
|  | 638 |  | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 639 | static struct msm_camera_sensor_flash_data flash_ov2720 = { | 
|  | 640 | .flash_type	= MSM_CAMERA_FLASH_NONE, | 
|  | 641 | }; | 
|  | 642 |  | 
| Hody Hung | 9ba65cf | 2012-01-17 17:34:51 -0800 | [diff] [blame] | 643 | static struct msm_camera_csi_lane_params ov2720_csi_lane_params = { | 
|  | 644 | .csi_lane_assign = 0xE4, | 
|  | 645 | .csi_lane_mask = 0x3, | 
|  | 646 | }; | 
|  | 647 |  | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 648 | static struct msm_camera_sensor_platform_info sensor_board_info_ov2720 = { | 
|  | 649 | .mount_angle	= 0, | 
| Sreesudhan Ramakrish Ramkumar | 923fbad | 2012-07-26 17:31:42 -0700 | [diff] [blame] | 650 | .cam_vreg = apq_8064_cam_vreg, | 
|  | 651 | .num_vreg = ARRAY_SIZE(apq_8064_cam_vreg), | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 652 | .gpio_conf = &apq8064_front_cam_gpio_conf, | 
|  | 653 | .i2c_conf = &apq8064_front_cam_i2c_conf, | 
| Hody Hung | 9ba65cf | 2012-01-17 17:34:51 -0800 | [diff] [blame] | 654 | .csi_lane_params = &ov2720_csi_lane_params, | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 655 | }; | 
|  | 656 |  | 
|  | 657 | static struct msm_camera_sensor_info msm_camera_sensor_ov2720_data = { | 
|  | 658 | .sensor_name	= "ov2720", | 
|  | 659 | .pdata	= &msm_camera_csi_device_data[1], | 
|  | 660 | .flash_data	= &flash_ov2720, | 
|  | 661 | .sensor_platform_info = &sensor_board_info_ov2720, | 
|  | 662 | .csi_if	= 1, | 
|  | 663 | .camera_type = FRONT_CAMERA_2D, | 
| Raju P.L.S.S.S.N | 3f4b302 | 2012-03-29 10:09:01 +0530 | [diff] [blame] | 664 | .sensor_type = BAYER_SENSOR, | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 665 | }; | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 666 |  | 
| Kevin Chan | 94b4c83 | 2012-03-02 21:27:16 -0800 | [diff] [blame] | 667 | static struct platform_device msm_camera_server = { | 
|  | 668 | .name = "msm_cam_server", | 
|  | 669 | .id = 0, | 
|  | 670 | }; | 
|  | 671 |  | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 672 | void __init apq8064_init_cam(void) | 
|  | 673 | { | 
|  | 674 | msm_gpiomux_install(apq8064_cam_common_configs, | 
|  | 675 | ARRAY_SIZE(apq8064_cam_common_configs)); | 
|  | 676 |  | 
| Sreesudhan Ramakrish Ramkumar | 6f25eb9 | 2012-04-10 09:49:47 -0700 | [diff] [blame] | 677 | if (machine_is_apq8064_cdp()) { | 
| Sreesudhan Ramakrish Ramkumar | 3f06a1b | 2012-03-15 18:44:56 -0700 | [diff] [blame] | 678 | sensor_board_info_imx074.mount_angle = 0; | 
| Sreesudhan Ramakrish Ramkumar | 6f25eb9 | 2012-04-10 09:49:47 -0700 | [diff] [blame] | 679 | sensor_board_info_mt9m114.mount_angle = 0; | 
|  | 680 | } else if (machine_is_apq8064_liquid()) | 
| Jignesh Mehta | bfb1aa3 | 2012-03-16 17:23:23 -0700 | [diff] [blame] | 681 | sensor_board_info_imx074.mount_angle = 180; | 
| Sreesudhan Ramakrish Ramkumar | 3f06a1b | 2012-03-15 18:44:56 -0700 | [diff] [blame] | 682 |  | 
| Kevin Chan | 94b4c83 | 2012-03-02 21:27:16 -0800 | [diff] [blame] | 683 | platform_device_register(&msm_camera_server); | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 684 | platform_device_register(&msm8960_device_i2c_mux_gsbi4); | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 685 | platform_device_register(&msm8960_device_csiphy0); | 
|  | 686 | platform_device_register(&msm8960_device_csiphy1); | 
|  | 687 | platform_device_register(&msm8960_device_csid0); | 
|  | 688 | platform_device_register(&msm8960_device_csid1); | 
|  | 689 | platform_device_register(&msm8960_device_ispif); | 
|  | 690 | platform_device_register(&msm8960_device_vfe); | 
|  | 691 | platform_device_register(&msm8960_device_vpe); | 
|  | 692 | } | 
|  | 693 |  | 
|  | 694 | #ifdef CONFIG_I2C | 
|  | 695 | static struct i2c_board_info apq8064_camera_i2c_boardinfo[] = { | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 696 | { | 
|  | 697 | I2C_BOARD_INFO("imx074", 0x1A), | 
|  | 698 | .platform_data = &msm_camera_sensor_imx074_data, | 
|  | 699 | }, | 
| Sreesudhan Ramakrish Ramkumar | 6c6f57c | 2012-02-21 15:12:44 -0800 | [diff] [blame] | 700 | { | 
|  | 701 | I2C_BOARD_INFO("mt9m114", 0x48), | 
|  | 702 | .platform_data = &msm_camera_sensor_mt9m114_data, | 
|  | 703 | }, | 
| Kevin Chan | d07220e | 2012-02-13 15:52:22 -0800 | [diff] [blame] | 704 | { | 
|  | 705 | I2C_BOARD_INFO("ov2720", 0x6C), | 
|  | 706 | .platform_data = &msm_camera_sensor_ov2720_data, | 
|  | 707 | }, | 
| Jeyaprakash Soundrapandian | a1b3c53 | 2012-02-29 20:33:30 -0800 | [diff] [blame] | 708 | { | 
|  | 709 | I2C_BOARD_INFO("sc628a", 0x6E), | 
|  | 710 | }, | 
| Sreesudhan Ramakrish Ramkumar | 3381da7 | 2012-01-27 08:08:32 -0800 | [diff] [blame] | 711 | { | 
|  | 712 | I2C_BOARD_INFO("imx091", 0x34), | 
|  | 713 | .platform_data = &msm_camera_sensor_imx091_data, | 
|  | 714 | }, | 
| Sreesudhan Ramakrish Ramkumar | 8002a79 | 2012-04-09 17:42:58 -0700 | [diff] [blame] | 715 | { | 
|  | 716 | I2C_BOARD_INFO("s5k3l1yx", 0x20), | 
|  | 717 | .platform_data = &msm_camera_sensor_s5k3l1yx_data, | 
|  | 718 | }, | 
| Kevin Chan | 412e9f9 | 2012-01-24 10:45:23 -0800 | [diff] [blame] | 719 | }; | 
|  | 720 |  | 
|  | 721 | struct msm_camera_board_info apq8064_camera_board_info = { | 
|  | 722 | .board_info = apq8064_camera_i2c_boardinfo, | 
|  | 723 | .num_i2c_board_info = ARRAY_SIZE(apq8064_camera_i2c_boardinfo), | 
|  | 724 | }; | 
|  | 725 | #endif | 
|  | 726 | #endif |