camera: support obtain camera information(facing,orientation)
authorddl <ddl@rock-chips.com>
Fri, 25 Nov 2011 07:33:52 +0000 (15:33 +0800)
committerddl <ddl@rock-chips.com>
Fri, 25 Nov 2011 07:34:16 +0000 (15:34 +0800)
arch/arm/mach-rk29/board-rk29-ddr3sdk.c
arch/arm/mach-rk29/include/mach/rk29_camera.h
drivers/media/video/rk29_camera.c
drivers/media/video/rk29_camera_oneframe.c

index cfb6a066dfe271670fd244e1ce3472685104ec5b..a1ee2b087fba6102923269dcb0b0e1cd57b3403f 100755 (executable)
@@ -71,6 +71,7 @@
 #define CONFIG_SENSOR_0 RK29_CAM_SENSOR_OV5642                      /* back camera sensor */
 #define CONFIG_SENSOR_IIC_ADDR_0           0x78
 #define CONFIG_SENSOR_IIC_ADAPTER_ID_0    1
+#define CONFIG_SENSOR_ORIENTATION_0       0
 #define CONFIG_SENSOR_POWER_PIN_0         INVALID_GPIO
 #define CONFIG_SENSOR_RESET_PIN_0         INVALID_GPIO
 #define CONFIG_SENSOR_POWERDN_PIN_0       RK29_PIN6_PB7
@@ -83,6 +84,7 @@
 #define CONFIG_SENSOR_1 RK29_CAM_SENSOR_OV2659                      /* front camera sensor */
 #define CONFIG_SENSOR_IIC_ADDR_1           0x60
 #define CONFIG_SENSOR_IIC_ADAPTER_ID_1    1
+#define CONFIG_SENSOR_ORIENTATION_1       0
 #define CONFIG_SENSOR_POWER_PIN_1         INVALID_GPIO
 #define CONFIG_SENSOR_RESET_PIN_1         INVALID_GPIO
 #define CONFIG_SENSOR_POWERDN_PIN_1       RK29_PIN5_PD7
index b921507ff684f56798e152ec876cafa6fc0f4e99..855e2396fee47220346a0659ca98ac8dcfb2fd09 100755 (executable)
@@ -160,6 +160,7 @@ struct rk29camera_gpio_res {
        unsigned int gpio_flash;
     unsigned int gpio_flag;
        unsigned int gpio_init;
+    unsigned int orientation;
     const char *dev_name;
 };
 
index 106c2ecece0705a54347f81255add9b05b90eaf8..160dad9947b6c25fa850d39e0bc5ee866426007d 100755 (executable)
@@ -97,6 +97,7 @@ static struct rk29camera_platform_data rk29_camera_platform_data = {
             .gpio_flash = CONFIG_SENSOR_FALSH_PIN_0,\r
             .gpio_flag = (CONFIG_SENSOR_POWERACTIVE_LEVEL_0|CONFIG_SENSOR_RESETACTIVE_LEVEL_0|CONFIG_SENSOR_POWERDNACTIVE_LEVEL_0|CONFIG_SENSOR_FLASHACTIVE_LEVEL_0),\r
             .gpio_init = 0,\r
+            .orientation = CONFIG_SENSOR_ORIENTATION_0,\r
             .dev_name = SENSOR_DEVICE_NAME_0,\r
         }, {\r
             .gpio_reset = CONFIG_SENSOR_RESET_PIN_1,\r
@@ -105,6 +106,7 @@ static struct rk29camera_platform_data rk29_camera_platform_data = {
             .gpio_flash = CONFIG_SENSOR_FALSH_PIN_1,\r
             .gpio_flag = (CONFIG_SENSOR_POWERACTIVE_LEVEL_1|CONFIG_SENSOR_RESETACTIVE_LEVEL_1|CONFIG_SENSOR_POWERDNACTIVE_LEVEL_1|CONFIG_SENSOR_FLASHACTIVE_LEVEL_1),\r
             .gpio_init = 0,\r
+            .orientation = CONFIG_SENSOR_ORIENTATION_1,\r
             .dev_name = SENSOR_DEVICE_NAME_1,\r
         }\r
     },\r
@@ -1432,7 +1434,6 @@ static int rk29_sensor_ioctrl(struct device *dev,enum rk29camera_ioctrl_cmd cmd,
                        }\r
                        break;\r
                }\r
-\r
                default:\r
                {\r
                        printk("%s cmd(0x%x) is unknown!\n",__FUNCTION__, cmd);\r
index f0b8b2b39b7b00fd2f645c38a445a5cb2fea1351..14eddd0af8f71679f1f440875531ffc4146e31bb 100755 (executable)
@@ -48,7 +48,7 @@ module_param(debug, int, S_IRUGO|S_IWUSR);
        printk(KERN_WARNING"rk29xx_camera: " fmt , ## arg); } while (0)
 
 #define RK29CAMERA_TR(format, ...) printk(KERN_ERR format, ## __VA_ARGS__)
-#define RK29CAMERA_DG(format, ...) dprintk(0, format, ## __VA_ARGS__)
+#define RK29CAMERA_DG(format, ...) dprintk(1, format, ## __VA_ARGS__)
 
 // VIP Reg Offset
 #define RK29_VIP_AHBR_CTRL                0x00
@@ -1528,8 +1528,16 @@ static unsigned int rk29_camera_poll(struct file *file, poll_table *pt)
 static int rk29_camera_querycap(struct soc_camera_host *ici,
                                 struct v4l2_capability *cap)
 {
-    /* cap->name is set by the firendly caller:-> */
-    strlcpy(cap->card, rk29_cam_driver_description, sizeof(cap->card));
+    struct rk29_camera_dev *pcdev = ici->priv;
+    char orientation[5];
+
+    strlcpy(cap->card, dev_name(pcdev->icd->pdev), sizeof(cap->card));    
+    if (strcmp(dev_name(pcdev->icd->pdev), pcdev->pdata->gpio_res[0].dev_name) == 0) {
+        sprintf(orientation,"-%d",pcdev->pdata->gpio_res[0].orientation);
+    } else {
+        sprintf(orientation,"-%d",pcdev->pdata->gpio_res[1].orientation);
+    }
+    strcat(cap->card,orientation); 
     cap->version = RK29_CAM_VERSION_CODE;
     cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;