1.dts中进行配置
要点: 使用的时 哪一路iic, iic地址
开关脚 和复位脚对应的gpio
sensor0:sensor@0 {
device_type = "sensor0";
sensor0_mname = "rn6854m_mipi";
sensor0_twi_cci_id = <0>;
sensor0_twi_addr = <0x58>;
sensor0_mclk_id = <0>;
sensor0_pos = "rear";
sensor0_isp_used = <0>;
sensor0_fmt = <0>;
sensor0_stby_mode = <0>;
sensor0_vflip = <0>;
sensor0_hflip = <0>;
sensor0_iovdd-supply = <®_bldo3>;
sensor0_iovdd_vol = <3300000>;
sensor0_avdd-supply = <®_bldo4>;
sensor0_avdd_vol = <1200000>;
sensor0_dvdd-supply = <®_bldo5>;
sensor0_dvdd_vol = <1200000>;
sensor0_power_en = <>;
sensor0_reset = <&pio PI 13 1 0 1 0>;
sensor0_pwdn = <&pio PI 14 1 0 1 0>;
sensor0_sm_vs = <&pio PE 22 1 0 1 0>;
status = "okay";
};
sensor1:sensor@1 {
device_type = "sensor1";
sensor1_mname = "nvp6158";
sensor1_twi_cci_id = <1>;
sensor1_twi_addr = <0x64>;
sensor1_mclk_id = <1>;
sensor1_pos = "front";
sensor1_isp_used = <0>;
sensor1_fmt = <0>;
sensor1_stby_mode = <0>;
sensor1_vflip = <0>;
sensor1_hflip = <0>;
sensor1_cameravdd-supply = <®_aldo5>;
sensor1_cameravdd_vol = <3300000>;
sensor1_reservevdd-supply = <®_dcdc6>;
sensor1_reservevdd_vol = <1200000>;
sensor1_iovdd-supply = <®_bldo3>;
sensor1_iovdd_vol = <3300000>;
sensor1_avdd-supply = <®_bldo4>;
sensor1_avdd_vol = <1200000>;
sensor1_dvdd-supply = <®_bldo5>;
sensor1_dvdd_vol = <1200000>;
sensor1_power_en = <>;
sensor1_reset = <&pio PI 12 1 0 1 0>;
sensor1_pwdn = <&pio PI 14 1 0 1 0>;
sensor1_sm_vs = <>;
status = "okay";
};
- drivers\media\platform\sunxi-vin\modules\sensor中 代码 rn6854m_mipi.c
static int sensor_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
struct v4l2_subdev *sd;
struct sensor_info *info;
info = kzalloc(sizeof(struct sensor_info), GFP_KERNEL);
if (info == NULL)
return -ENOMEM;
sd = &info->sd;
cci_dev_probe_helper(sd, client, &sensor_ops, &cci_drv);
sensor_init_controls(sd, &sensor_ctrl_ops);
mutex_init(&info->lock);
restart = 0;
info->fmt = &sensor_formats[0];
info->fmt_pt = &sensor_formats[0];
info->win_pt = &sensor_win_sizes[0];
info->fmt_num = N_FMTS;
info->win_size_num = N_WIN_SIZES;
info->sensor_field = V4L2_FIELD_NONE;
/* info->combo_mode = CMB_TERMINAL_RES | CMB_PHYA_OFFSET1 | MIPI_NORMAL_MODE; */
info->combo_mode = CMB_PHYA_OFFSET3 | MIPI_NORMAL_MODE;
info->stream_seq = MIPI_BEFORE_SENSOR;
info->af_first_flag = 1;
info->exp = 0;
info->gain = 0;
rn6854m_sd = sd;
return 0;
}
static const struct v4l2_subdev_ops sensor_ops = {
.core = &sensor_core_ops,
.video = &sensor_video_ops,
.pad = &sensor_pad_ops,
};