android13/kernel-5.10/drivers/video/rockchip/vehicle/vehicle_ad.h

84 lines
2.1 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Rockchip Vehicle driver
*
* Copyright (C) 2022 Rockchip Electronics Co., Ltd.
*/
#ifndef __VEHICLE_AD_COMMON_H
#define __VEHICLE_AD_COMMON_H
#include <linux/i2c.h>
#include "vehicle_cfg.h"
#include <linux/rk-camera-module.h>
enum vehicle_ad_fix_format {
AD_FIX_FORMAT_AUTO_DETECT = 0,
AD_FIX_FORMAT_PAL = 1,
AD_FIX_FORMAT_NTSC = 2,
AD_FIX_FORMAT_720P_50FPS = 3,
AD_FIX_FORMAT_720P_30FPS = 4,
AD_FIX_FORMAT_720P_25FPS = 5,
AD_FIX_FORMAT_1080P_30FPS = 6,
AD_FIX_FORMAT_1080P_25FPS = 7,
};
struct vehicle_camera_device_defrect {
unsigned int width;
unsigned int height;
unsigned int crop_x;
unsigned int crop_y;
unsigned int crop_width;
unsigned int crop_height;
const char *interface;
};
struct vehicle_state_check_work {
struct workqueue_struct *state_check_wq;
struct delayed_work work;
};
struct vehicle_ad_dev {
struct device *dev;
struct i2c_adapter *adapter;
const char *ad_name;
int resolution;
int mclk_rate;
int ad_chl;
int i2c_chl;
int i2c_add;
// int i2c_rate;
int powerdown;
int pwdn_active;
int power;
int pwr_active;
int reset;
int rst_active;
int cvstd;
int cvstd_irq_flag;
int irq;
int fix_format;
struct vehicle_camera_device_defrect defrects[4];
struct vehicle_state_check_work state_check_work;
struct vehicle_cfg cfg;
int cif_error_last_line;
u32 channel_reso[PAD_MAX];
u8 detect_status;
u8 last_detect_status;
int drop_frames;
};
int vehicle_generic_sensor_write(struct vehicle_ad_dev *ad, char reg, char *pval);
int vehicle_sensor_write(struct vehicle_ad_dev *ad, u8 reg, u8 val);
int vehicle_generic_sensor_read(struct vehicle_ad_dev *ad, char reg);
int vehicle_sensor_read(struct vehicle_ad_dev *ad, u8 reg, u8 *val);
int vehicle_parse_sensor(struct vehicle_ad_dev *ad);
void vehicle_ad_channel_set(struct vehicle_ad_dev *ad, int channel);
int vehicle_ad_init(struct vehicle_ad_dev *ad);
int vehicle_ad_deinit(void);
int vehicle_ad_stream(struct vehicle_ad_dev *ad, int val);
struct vehicle_cfg *vehicle_ad_get_vehicle_cfg(void);
void vehicle_ad_check_cif_error(struct vehicle_ad_dev *ad, int last_line);
int vehicle_to_v4l2_drv_init(void);
#endif