diff --git a/kernel/drivers/media/i2c/chipup/xs9922.c b/kernel/drivers/media/i2c/chipup/xs9922.c old mode 100755 new mode 100644 index a880bf855c..64c7dc7682 --- a/kernel/drivers/media/i2c/chipup/xs9922.c +++ b/kernel/drivers/media/i2c/chipup/xs9922.c @@ -227,7 +227,7 @@ static const struct xs9922_mode supported_modes[] = { .numerator = 10000, .denominator = 250000, }, - .global_reg_list = xs9922_init_cfg_bak, + .global_reg_list = xs9922_init_cfg, .reg_list = xs9922_720p_4lanes_25fps_1500M, .mipi_freq_idx = 0, .bpp = 8, @@ -246,7 +246,7 @@ static const struct xs9922_mode supported_modes[] = { .numerator = 10000, .denominator = 250000, }, - .global_reg_list = xs9922_init_cfg_bak, + .global_reg_list = xs9922_init_cfg, .reg_list = xs9922_1080p_4lanes_25fps_1500M, .mipi_freq_idx = 0, .bpp = 8, @@ -409,10 +409,11 @@ void switch_mode(struct xs9922 *xs9922) #if (!__CLOSE_SENSOR__) static void __maybe_unused __xs9922_init(struct work_struct *work) { - struct delayed_work *dwork = to_delayed_work(work); - struct xs9922 *xs9922 = container_of(dwork, struct xs9922, - delay_init); - switch_mode(xs9922); + //struct delayed_work *dwork = to_delayed_work(work); + //struct xs9922 *xs9922 = container_of(dwork, struct xs9922, + // delay_init); + //switch_mode(xs9922); + printk("ffffff __xs9922_init\n"); } #endif @@ -1010,24 +1011,27 @@ static int __xs9922_start_stream(struct xs9922 *xs9922) int ret = 0; u32 feng_val; - dev_dbg(&client->dev, "%s IN --->>>\n", __func__); + dev_err(&client->dev, "%s IN fffffff--->>>\n", __func__); if (xs9922_reg_config) { + switch_mode(xs9922); + printk("===========chad start mipi reset\n"); + msleep(1000); //ret =xs9922_write_array(client, xs9922_mipi_reset_new); //ret =xs9922_write_array(client, xs9922_mipi_reset); // ret = xs9922_write_array(client, xs9922_cfg2); if (ret != 0) dev_dbg(&client->dev, "%s write xs9922 register write error!\n", __func__); - printk("===========chad end mipi reset\n"); + printk("6667===========chad end mipi reset\n"); } xs9922_write_reg(client, 0x0e08, XS9922_REG_VALUE_08BIT, 0x01); xs9922_write_reg(client, 0x1e08, XS9922_REG_VALUE_08BIT, 0x01); - xs9922_write_reg(client, 0x2e08, XS9922_REG_VALUE_08BIT, 0x00); - xs9922_write_reg(client, 0x3e08, XS9922_REG_VALUE_08BIT, 0x00); + xs9922_write_reg(client, 0x2e08, XS9922_REG_VALUE_08BIT, 0x01); + xs9922_write_reg(client, 0x3e08, XS9922_REG_VALUE_08BIT, 0x01); usleep_range(200*1000, 400*1000); detect_thread_start(xs9922); diff --git a/kernel/drivers/media/i2c/chipup/xs9922_reg_cfg.h b/kernel/drivers/media/i2c/chipup/xs9922_reg_cfg.h old mode 100755 new mode 100644 index 274e03c4b9..15f6b973a4 --- a/kernel/drivers/media/i2c/chipup/xs9922_reg_cfg.h +++ b/kernel/drivers/media/i2c/chipup/xs9922_reg_cfg.h @@ -2080,8 +2080,8 @@ static const struct regval xs9922_720p_4lanes_25fps_1500M[] = { {0x0616, 0x24}, {0x0617, 0x00}, {0x0618, 0x04}, - {0x060a, 0x07}, - {0x010a, 0x05}, + {0x060a, 0x07},//解决左边黑边问题 + {0x010a, 0x3e}, {0x0100, 0x30}, {0x0104, 0x48}, {0x0802, 0x21}, diff --git a/kernel/drivers/media/platform/rockchip/cif/mipi-csi2.c b/kernel/drivers/media/platform/rockchip/cif/mipi-csi2.c index f06a238eb9..0362978265 100644 --- a/kernel/drivers/media/platform/rockchip/cif/mipi-csi2.c +++ b/kernel/drivers/media/platform/rockchip/cif/mipi-csi2.c @@ -211,7 +211,7 @@ static struct v4l2_subdev *get_remote_sensor(struct v4l2_subdev *sd) return media_entity_to_v4l2_subdev(sensor_me); } -static void get_remote_terminal_sensor(struct v4l2_subdev *sd, +/*static void get_remote_terminal_sensor(struct v4l2_subdev *sd, struct v4l2_subdev **sensor_sd) { struct media_graph graph; @@ -219,7 +219,6 @@ static void get_remote_terminal_sensor(struct v4l2_subdev *sd, struct media_device *mdev = entity->graph_obj.mdev; int ret; - /* Walk the graph to locate sensor nodes. */ mutex_lock(&mdev->graph_mutex); ret = media_graph_walk_init(&graph, mdev); if (ret) { @@ -238,12 +237,12 @@ static void get_remote_terminal_sensor(struct v4l2_subdev *sd, *sensor_sd = media_entity_to_v4l2_subdev(entity); else *sensor_sd = NULL; -} +}*/ static void csi2_update_sensor_info(struct csi2_dev *csi2) { struct csi2_sensor *sensor = &csi2->sensors[0]; - struct v4l2_subdev *terminal_sensor_sd = NULL; + //struct v4l2_subdev *terminal_sensor_sd = NULL; struct v4l2_mbus_config mbus; int ret = 0; @@ -253,13 +252,13 @@ static void csi2_update_sensor_info(struct csi2_dev *csi2) return; } - get_remote_terminal_sensor(&csi2->sd, &terminal_sensor_sd); + /*get_remote_terminal_sensor(&csi2->sd, &terminal_sensor_sd); if (terminal_sensor_sd) { ret = v4l2_subdev_call(terminal_sensor_sd, core, ioctl, RKMODULE_GET_CSI_DSI_INFO, &csi2->dsi_input_en); if (ret) csi2->dsi_input_en = 0; - } + }*/ csi2->bus.flags = mbus.flags; switch (csi2->bus.flags & V4L2_MBUS_CSI2_LANES) { case V4L2_MBUS_CSI2_1_LANE: @@ -356,6 +355,8 @@ static int csi2_start(struct csi2_dev *csi2) return ret; } + pr_err("csi2_start called update sensor info"); + v4l2_err(&csi2->sd, "%s: csi2_start called\n", __func__); csi2_update_sensor_info(csi2); if (csi2->dsi_input_en == RKMODULE_DSI_INPUT) @@ -959,6 +960,7 @@ static int csi2_probe(struct platform_device *pdev) struct resource *res; const struct csi2_match_data *data; int ret, irq; + v4l2_err(&csi2->sd, "csi2_probe called"); match = of_match_node(csi2_dt_ids, node); if (IS_ERR(match))