From 4c6d24c23b21bc896236be0f9f4c9567e55653d4 Mon Sep 17 00:00:00 2001 From: ddl Date: Fri, 25 Nov 2011 15:33:52 +0800 Subject: [PATCH] camera: support obtain camera information(facing,orientation) --- arch/arm/mach-rk29/board-rk29-ddr3sdk.c | 2 ++ arch/arm/mach-rk29/include/mach/rk29_camera.h | 1 + drivers/media/video/rk29_camera.c | 3 ++- drivers/media/video/rk29_camera_oneframe.c | 14 +++++++++++--- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-rk29/board-rk29-ddr3sdk.c b/arch/arm/mach-rk29/board-rk29-ddr3sdk.c index cfb6a066dfe2..a1ee2b087fba 100755 --- a/arch/arm/mach-rk29/board-rk29-ddr3sdk.c +++ b/arch/arm/mach-rk29/board-rk29-ddr3sdk.c @@ -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 diff --git a/arch/arm/mach-rk29/include/mach/rk29_camera.h b/arch/arm/mach-rk29/include/mach/rk29_camera.h index b921507ff684..855e2396fee4 100755 --- a/arch/arm/mach-rk29/include/mach/rk29_camera.h +++ b/arch/arm/mach-rk29/include/mach/rk29_camera.h @@ -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; }; diff --git a/drivers/media/video/rk29_camera.c b/drivers/media/video/rk29_camera.c index 106c2ecece07..160dad9947b6 100755 --- a/drivers/media/video/rk29_camera.c +++ b/drivers/media/video/rk29_camera.c @@ -97,6 +97,7 @@ static struct rk29camera_platform_data rk29_camera_platform_data = { .gpio_flash = CONFIG_SENSOR_FALSH_PIN_0, .gpio_flag = (CONFIG_SENSOR_POWERACTIVE_LEVEL_0|CONFIG_SENSOR_RESETACTIVE_LEVEL_0|CONFIG_SENSOR_POWERDNACTIVE_LEVEL_0|CONFIG_SENSOR_FLASHACTIVE_LEVEL_0), .gpio_init = 0, + .orientation = CONFIG_SENSOR_ORIENTATION_0, .dev_name = SENSOR_DEVICE_NAME_0, }, { .gpio_reset = CONFIG_SENSOR_RESET_PIN_1, @@ -105,6 +106,7 @@ static struct rk29camera_platform_data rk29_camera_platform_data = { .gpio_flash = CONFIG_SENSOR_FALSH_PIN_1, .gpio_flag = (CONFIG_SENSOR_POWERACTIVE_LEVEL_1|CONFIG_SENSOR_RESETACTIVE_LEVEL_1|CONFIG_SENSOR_POWERDNACTIVE_LEVEL_1|CONFIG_SENSOR_FLASHACTIVE_LEVEL_1), .gpio_init = 0, + .orientation = CONFIG_SENSOR_ORIENTATION_1, .dev_name = SENSOR_DEVICE_NAME_1, } }, @@ -1432,7 +1434,6 @@ static int rk29_sensor_ioctrl(struct device *dev,enum rk29camera_ioctrl_cmd cmd, } break; } - default: { printk("%s cmd(0x%x) is unknown!\n",__FUNCTION__, cmd); diff --git a/drivers/media/video/rk29_camera_oneframe.c b/drivers/media/video/rk29_camera_oneframe.c index f0b8b2b39b7b..14eddd0af8f7 100755 --- a/drivers/media/video/rk29_camera_oneframe.c +++ b/drivers/media/video/rk29_camera_oneframe.c @@ -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; -- 2.34.1