[PATCH] drm: bridge: dw-hdmi: support i2c extended read mode

Jose Abreu Jose.Abreu at synopsys.com
Thu Feb 23 10:17:44 UTC 2017


Hi Nickey,


On 22-02-2017 11:11, Nickey.Yang wrote:
> Read EDID func is drm_do_probe_ddc_edid    (in
> drivers/gpu/drm/drm_edid.c     Line:1215)
> when block = 3  means &msgs[3].addr = DDC_SEGMENT_ADDR(0x30)
> ,but in dw_hdmi_i2c_xfer
> line 299  msgs[i].addr != addr (0x50),  it will printk
> "unsupported transfer, changed slave address"
> and return -EOPNOTSUPP.
>
> in fact,0x30 not means change slave address but means segment
> address.
>

I am reading the drm_do_probe_ddc_edid and I have one question:
There are 2 writes and one read, but your patch only handles the
write of segment address. What about the start address?

I am refering to this structure:
1228                 struct i2c_msg msgs[] = {
1229                         {
1230                                 .addr   = DDC_SEGMENT_ADDR,
1231                                 .flags  = 0,
1232                                 .len    = 1,
1233                                 .buf    = &segment,
1234                         }, {
1235                                 .addr   = DDC_ADDR,
1236                                 .flags  = 0,
1237                                 .len    = 1,
1238                                 .buf    = &start,
1239                         }, {
1240                                 .addr   = DDC_ADDR,
1241                                 .flags  = I2C_M_RD,
1242                                 .len    = len,
1243                                 .buf    = buf,
1244                         }

There is a write which indicates DDC segment address and then
there is another write which indicates start address. Shouldn't
this be handled?

Best regards,
Jose Miguel Abreu



More information about the dri-devel mailing list