Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) #ifndef __RK1608_DPHY_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) #define __RK1608_DPHY_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) #define RK1608_MAX_FMTINF	4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) struct rk1608_chinf {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) 	u32 width;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 	u32 height;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 	u32 data_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 	u32 decode_format;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 	u32 flag;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) struct rk1608_fmt_inf {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 	u32 data_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 	u32 mipi_lane;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 	u32 mipi_lane_out;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 	u32 hactive;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 	u32 vactive;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 	u32 htotal;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	u32 vtotal;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 	struct v4l2_mbus_framefmt mf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 	struct rk1608_chinf in_ch[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 	struct rk1608_chinf out_ch[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 	u32 hcrop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 	u32 vcrop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) struct rk1608_sub_sensor_cfg {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	u32 id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	u32 in_mipi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 	u32 out_mipi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 	u32 reserved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) struct rk1608_dphy {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	struct v4l2_subdev sd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	struct v4l2_subdev *rk1608_sd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	struct platform_device *pdev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 	struct device *dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 	struct media_pad pad;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 	struct v4l2_ctrl *link_freq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 	struct v4l2_ctrl *pixel_rate;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 	struct v4l2_ctrl *hblank;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 	struct v4l2_ctrl *vblank;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 	struct v4l2_ctrl *exposure;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 	struct v4l2_ctrl *gain;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 	struct v4l2_ctrl *h_flip;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 	struct v4l2_ctrl *v_flip;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 	struct v4l2_ctrl_handler ctrl_handler;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 	u32 cam_nums;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 	u32 in_mipi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 	u32 out_mipi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 	s64 link_freqs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 	u32 i2c_bus;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 	u32 i2c_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) 	const char *sensor_name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 	u32 module_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 	const char *module_facing;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) 	const char *module_name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 	const char *len_name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) 	u32 fmt_inf_num;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) 	u32 fmt_inf_idx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) 	struct rk1608_fmt_inf fmt_inf[RK1608_MAX_FMTINF];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) 	bool first_stream;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) 	/* for virtual sub sensor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) 	u32 sub_sensor_num;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) 	struct rk1608_sub_sensor_cfg sub_sensor[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) 	struct i2c_client *link_sensor_client;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) #endif