hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/media/i2c/tda1997x.c
....@@ -908,7 +908,7 @@
908908 {
909909 struct tda1997x_state *state = to_state(sd);
910910 struct tda1997x_platform_data *pdata = &state->pdata;
911
- bool sp_used_by_fifo = 1;
911
+ bool sp_used_by_fifo = true;
912912 u8 reg;
913913
914914 if (!pdata->audout_format)
....@@ -936,7 +936,7 @@
936936 break;
937937 case AUDCFG_TYPE_DST:
938938 reg |= AUDCFG_TYPE_DST << AUDCFG_TYPE_SHIFT;
939
- sp_used_by_fifo = 0;
939
+ sp_used_by_fifo = false;
940940 break;
941941 case AUDCFG_TYPE_HBR:
942942 reg |= AUDCFG_TYPE_HBR << AUDCFG_TYPE_SHIFT;
....@@ -944,7 +944,7 @@
944944 /* demuxed via AP0:AP3 */
945945 reg |= AUDCFG_HBR_DEMUX << AUDCFG_HBR_SHIFT;
946946 if (pdata->audout_format == AUDFMT_TYPE_SPDIF)
947
- sp_used_by_fifo = 0;
947
+ sp_used_by_fifo = false;
948948 } else {
949949 /* straight via AP0 */
950950 reg |= AUDCFG_HBR_STRAIGHT << AUDCFG_HBR_SHIFT;
....@@ -1247,13 +1247,13 @@
12471247 {
12481248 struct v4l2_subdev *sd = &state->sd;
12491249 union hdmi_infoframe frame;
1250
- u8 buffer[40];
1250
+ u8 buffer[40] = { 0 };
12511251 u8 reg;
12521252 int len, err;
12531253
12541254 /* read data */
12551255 len = io_readn(sd, addr, sizeof(buffer), buffer);
1256
- err = hdmi_infoframe_unpack(&frame, buffer, sizeof(buffer));
1256
+ err = hdmi_infoframe_unpack(&frame, buffer, len);
12571257 if (err) {
12581258 v4l_err(state->client,
12591259 "failed parsing %d byte infoframe: 0x%04x/0x%02x\n",
....@@ -1885,6 +1885,10 @@
18851885 for (i = 0; i < 128; i++)
18861886 io_write(sd, REG_EDID_IN_BYTE128 + i, edid->edid[i+128]);
18871887
1888
+ /* store state */
1889
+ memcpy(state->edid.edid, edid->edid, 256);
1890
+ state->edid.blocks = edid->blocks;
1891
+
18881892 tda1997x_enable_edid(sd);
18891893
18901894 return 0;
....@@ -1923,13 +1927,13 @@
19231927 {
19241928 struct tda1997x_state *state = to_state(sd);
19251929 union hdmi_infoframe frame;
1926
- u8 buffer[40];
1930
+ u8 buffer[40] = { 0 };
19271931 int len, err;
19281932
19291933 /* read data */
19301934 len = io_readn(sd, addr, sizeof(buffer), buffer);
19311935 v4l2_dbg(1, debug, sd, "infoframe: addr=%d len=%d\n", addr, len);
1932
- err = hdmi_infoframe_unpack(&frame, buffer, sizeof(buffer));
1936
+ err = hdmi_infoframe_unpack(&frame, buffer, len);
19331937 if (err) {
19341938 v4l_err(state->client,
19351939 "failed parsing %d byte infoframe: 0x%04x/0x%02x\n",
....@@ -2267,7 +2271,7 @@
22672271 static int tda1997x_parse_dt(struct tda1997x_state *state)
22682272 {
22692273 struct tda1997x_platform_data *pdata = &state->pdata;
2270
- struct v4l2_fwnode_endpoint bus_cfg;
2274
+ struct v4l2_fwnode_endpoint bus_cfg = { .bus_type = 0 };
22712275 struct device_node *ep;
22722276 struct device_node *np;
22732277 unsigned int flags;
....@@ -2586,7 +2590,7 @@
25862590 case 36:
25872591 mbus_codes[i++] = MEDIA_BUS_FMT_RGB121212_1X36;
25882592 mbus_codes[i++] = MEDIA_BUS_FMT_YUV12_1X36;
2589
- /* fall-through */
2593
+ fallthrough;
25902594 case 24:
25912595 mbus_codes[i++] = MEDIA_BUS_FMT_UYVY12_1X24;
25922596 break;
....@@ -2615,10 +2619,10 @@
26152619 mbus_codes[i++] = MEDIA_BUS_FMT_RGB888_1X24;
26162620 mbus_codes[i++] = MEDIA_BUS_FMT_YUV8_1X24;
26172621 mbus_codes[i++] = MEDIA_BUS_FMT_UYVY12_1X24;
2618
- /* fall through */
2622
+ fallthrough;
26192623 case 20:
26202624 mbus_codes[i++] = MEDIA_BUS_FMT_UYVY10_1X20;
2621
- /* fall through */
2625
+ fallthrough;
26222626 case 16:
26232627 mbus_codes[i++] = MEDIA_BUS_FMT_UYVY8_1X16;
26242628 break;
....@@ -2631,10 +2635,10 @@
26312635 case 16:
26322636 case 12:
26332637 mbus_codes[i++] = MEDIA_BUS_FMT_UYVY12_2X12;
2634
- /* fall through */
2638
+ fallthrough;
26352639 case 10:
26362640 mbus_codes[i++] = MEDIA_BUS_FMT_UYVY10_2X10;
2637
- /* fall through */
2641
+ fallthrough;
26382642 case 8:
26392643 mbus_codes[i++] = MEDIA_BUS_FMT_UYVY8_2X8;
26402644 break;
....@@ -2689,7 +2693,13 @@
26892693 }
26902694
26912695 ret = 0x34 + ((io_read(sd, REG_SLAVE_ADDR)>>4) & 0x03);
2692
- state->client_cec = i2c_new_dummy(client->adapter, ret);
2696
+ state->client_cec = devm_i2c_new_dummy_device(&client->dev,
2697
+ client->adapter, ret);
2698
+ if (IS_ERR(state->client_cec)) {
2699
+ ret = PTR_ERR(state->client_cec);
2700
+ goto err_free_mutex;
2701
+ }
2702
+
26932703 v4l_info(client, "CEC slave address 0x%02x\n", ret);
26942704
26952705 ret = tda1997x_core_init(sd);
....@@ -2796,8 +2806,7 @@
27962806 media_entity_cleanup(&sd->entity);
27972807 v4l2_ctrl_handler_free(&state->hdl);
27982808 regulator_bulk_disable(TDA1997X_NUM_SUPPLIES, state->supplies);
2799
- i2c_unregister_device(state->client_cec);
2800
- cancel_delayed_work(&state->delayed_work_enable_hpd);
2809
+ cancel_delayed_work_sync(&state->delayed_work_enable_hpd);
28012810 mutex_destroy(&state->page_lock);
28022811 mutex_destroy(&state->lock);
28032812