[PX3][Android7.1] 调试笔记GM7150驱动的添加

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33487044/article/details/88786900
平台 内核版本 安卓版本
PX3 Linux3.1 Android7.1

GM7150BN_BC是一款9位视频解码芯片,该芯片采用CMOS工艺,通过I2C总线与PCDSP相连构成应用系统。芯片内部只包含一路模拟处理通道,能实现CVBSS-Video视频信号源选择、A/D转换、自动钳位、自动增益控制(AGC)、时钟发生(CGC)、多制式解码、亮度/对比度/饱和度控制(BCS)。

改的目录:

内核目录下改动文件如下:

 arch/arm/mach-rk30/board-rk3168-tb-camera.c       
 arch/arm/plat-rk/include/plat/rk_camera.h      
 drivers/media/video/Kconfig                  
 drivers/media/video/Makefile               
 drivers/media/video/gm7150.c                     
 drivers/media/video/gm7150.h                     
 drivers/video/rockchip/vehicle/Makefile       
 drivers/video/rockchip/vehicle/vehicle_ad_gm7150.c 
 drivers/video/rockchip/vehicle/vehicle_ad_gm7150.h 
 .../rockchip/vehicle/vehicle_generic_sensor.c   
 include/media/v4l2-chip-ident.h             

其中新增文件如下:

create mode 100644 drivers/media/video/gm7150.c
create mode 100644 drivers/media/video/gm7150.h
create mode 100644 drivers/video/rockchip/vehicle/vehicle_ad_gm7150.c
create mode 100644 drivers/video/rockchip/vehicle/vehicle_ad_gm7150.h

部分修改内容如下:

目录:arch/arm/mach-rk30/board-rk3168-tb-camera.c
注册一个 Camera Sensor 设备只需要在 board 文件static struct rkcamera_platform_data 类型的new_camera[] 中定义一个 Camera 设备即可。

static struct rkcamera_platform_data new_camera[] = {
...
+#ifdef CONFIG_SOC_CAMERA_GM7150
+    new_camera_device(RK29_CAM_SENSOR_GM7150,
+                        back,
+                        RK30_PIN0_PA6,
+                        0,
+                        3,//bit0:0 1 bit1:0 1 default:0
+                        3,
+                        0),
+#endif
     new_camera_device(RK29_CAM_SENSOR_TVP5150,
                         back,
                         RK30_PIN0_PA6,

该函数原型如下:

new_camera_device(sensor_name,
					face,
					pwdn_io,
					flash_attach,
					mir,
					i2c_chl,
					cif_chl)

其中:

face Sensor 设备作为前置还是作为后置的配置;前置直接填写 front,后置直接填写 back
pwdn_io Sensor 设 备 powerdown ( standby ) 连 接 GPIO 的 配 置
flash_attach 该 Sensor 设备是否连接 flash 闪光灯的配置
Mir 该 Sensor 设备的镜像配置
i2c_chl Sensor 设备连接的 i2c 通道号配置
cif_chl cif的通道

其中mirde详细配置:

bit0 0: mirror off 1: mirror on
bit1 0: flip off 1: flip on

设备名字添加

Sensor设 备 名 字 , 采 用arch/arm/plat-rk/include/plat/rk_camera.h

 #define RK29_CAM_SENSOR_DM5150	dm5150
+#define RK29_CAM_SENSOR_GM7150	gm7150

 #define dm5150_SENSOR_ORIENTATION 90
+#define gm7150_SENSOR_ORIENTATION 90

 #define dm5150_FULL_RESOLUTION    0x30000           // 0.3 megapixel
+#define gm7150_FULL_RESOLUTION    0x30000           // 0.3 megapixel

 #define dm5150_I2C_ADDR             0xba
+#define gm7150_I2C_ADDR             0xba

 #define dm5150_PWRDN_ACTIVE             0x00
+#define gm7150_PWRDN_ACTIVE             0x00

 #define dm5150_PWRSEQ                   sensor_PWRSEQ_DEFAULT
+#define gm7150_PWRSEQ                   sensor_PWRSEQ_DEFAULT

make kconfig 相关修改

接下来就是移植工作了:
目录:drivers/media/video/Kconfig

    +
    +config SOC_CAMERA_GM7150
    +        tristate "gm7150 camera support for rockchip"
    +        depends on SOC_CAMERA && I2C
    +        help
    +          This is a gm7150 camera driver for rockchip

目录:drivers/media/video/Makefile

`+obj-$(CONFIG_SOC_CAMERA_GM7150)     += gm7150.o`

drivers/video/rockchip/vehicle/Makefile

`+obj-$(CONFIG_VIDEO_REVERSE_IMAGE) += vehicle_ad_gm7150.o`

文件目录:drivers/video/rockchip/vehicle/vehicle_generic_sensor.c

+#include "vehicle_ad_gm7150.h"

static struct vehicle_sensor_ops sensor_cb_series[] = {
+#ifdef CONFIG_SOC_CAMERA_GM7150
+       {
+               .name = STR(RK29_CAM_SENSOR_GM7150),
+               .sensor_init = gm7150_ad_init,
+               .sensor_deinit = gm7150_ad_deinit,
+               .sensor_get_cfg = gm7150_ad_get_cfg,
+               .sensor_check_cif_error = gm7150_ad_check_cif_error,
+               .sensor_check_id_cb = gm7150_check_id
+       },
+#endif

目录:include/media/v4l2-chip-ident.h

+       V4L2_IDENT_GM7150 = 274,

剩下这个四个文件

drivers/media/video/gm7150.c
drivers/media/video/gm7150.h

drivers/video/rockchip/vehicle/vehicle_ad_gm7150.c
drivers/video/rockchip/vehicle/vehicle_ad_gm7150.h

可以从我的github仓库下载。

猜你喜欢

转载自blog.csdn.net/qq_33487044/article/details/88786900