1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Rockchip Vehicle driver 4 * 5 * Copyright (C) 2022 Rockchip Electronics Co., Ltd. 6 */ 7 #ifndef __VEHICLE_AD_COMMON_H 8 #define __VEHICLE_AD_COMMON_H 9 #include <linux/i2c.h> 10 #include "vehicle_cfg.h" 11 #include <linux/rk-camera-module.h> 12 13 enum vehicle_ad_fix_format { 14 AD_FIX_FORMAT_AUTO_DETECT = 0, 15 AD_FIX_FORMAT_PAL = 1, 16 AD_FIX_FORMAT_NTSC = 2, 17 AD_FIX_FORMAT_720P_50FPS = 3, 18 AD_FIX_FORMAT_720P_30FPS = 4, 19 AD_FIX_FORMAT_720P_25FPS = 5, 20 AD_FIX_FORMAT_1080P_30FPS = 6, 21 AD_FIX_FORMAT_1080P_25FPS = 7, 22 }; 23 24 struct vehicle_camera_device_defrect { 25 unsigned int width; 26 unsigned int height; 27 unsigned int crop_x; 28 unsigned int crop_y; 29 unsigned int crop_width; 30 unsigned int crop_height; 31 const char *interface; 32 }; 33 34 struct vehicle_state_check_work { 35 struct workqueue_struct *state_check_wq; 36 struct delayed_work work; 37 }; 38 39 struct vehicle_ad_dev { 40 struct device *dev; 41 struct i2c_adapter *adapter; 42 const char *ad_name; 43 int resolution; 44 int mclk_rate; 45 int ad_chl; 46 int i2c_chl; 47 int i2c_add; 48 // int i2c_rate; 49 int powerdown; 50 int pwdn_active; 51 int power; 52 int pwr_active; 53 int reset; 54 int rst_active; 55 int cvstd; 56 int cvstd_irq_flag; 57 int irq; 58 int fix_format; 59 struct vehicle_camera_device_defrect defrects[4]; 60 struct vehicle_state_check_work state_check_work; 61 struct vehicle_cfg cfg; 62 int cif_error_last_line; 63 u32 channel_reso[PAD_MAX]; 64 u8 detect_status; 65 u8 last_detect_status; 66 int drop_frames; 67 }; 68 69 int vehicle_generic_sensor_write(struct vehicle_ad_dev *ad, char reg, char *pval); 70 int vehicle_sensor_write(struct vehicle_ad_dev *ad, u8 reg, u8 val); 71 int vehicle_generic_sensor_read(struct vehicle_ad_dev *ad, char reg); 72 int vehicle_sensor_read(struct vehicle_ad_dev *ad, u8 reg, u8 *val); 73 int vehicle_parse_sensor(struct vehicle_ad_dev *ad); 74 void vehicle_ad_channel_set(struct vehicle_ad_dev *ad, int channel); 75 76 int vehicle_ad_init(struct vehicle_ad_dev *ad); 77 int vehicle_ad_deinit(void); 78 int vehicle_ad_stream(struct vehicle_ad_dev *ad, int val); 79 struct vehicle_cfg *vehicle_ad_get_vehicle_cfg(void); 80 void vehicle_ad_check_cif_error(struct vehicle_ad_dev *ad, int last_line); 81 int vehicle_to_v4l2_drv_init(void); 82 83 #endif 84