Merge "disp: msm: dp: reset edid segment and address when reading port edid"

This commit is contained in:
qctecmdr
2021-04-28 11:10:00 -07:00
committed by Gerrit - the friendly Code Review server

View File

@@ -61,6 +61,7 @@ struct dp_sim_device {
u32 sim_mode; u32 sim_mode;
u32 edid_seg; u32 edid_seg;
u32 edid_seg_int;
u32 edid_addr; u32 edid_addr;
bool skip_edid; bool skip_edid;
@@ -196,7 +197,7 @@ static int dp_sim_read_edid(struct dp_sim_device *sim_dev,
return 0; return 0;
if (msg->request & DP_AUX_I2C_READ) { if (msg->request & DP_AUX_I2C_READ) {
addr = (sim_dev->edid_seg << 8) + sim_dev->edid_addr; addr = (sim_dev->edid_seg_int << 8) + sim_dev->edid_addr;
if (addr + msg->size <= sim_dev->ports[0].edid_size) { if (addr + msg->size <= sim_dev->ports[0].edid_size) {
memcpy(msg->buffer, &sim_dev->ports[0].edid[addr], memcpy(msg->buffer, &sim_dev->ports[0].edid[addr],
msg->size); msg->size);
@@ -207,10 +208,13 @@ static int dp_sim_read_edid(struct dp_sim_device *sim_dev,
sim_dev->edid_addr += msg->size; sim_dev->edid_addr += msg->size;
sim_dev->edid_addr &= 0xFF; sim_dev->edid_addr &= 0xFF;
} else { } else {
if (msg->address == 0x30) if (msg->address == 0x30) {
sim_dev->edid_seg = buf[0]; sim_dev->edid_seg = buf[0];
else if (msg->address == 0x50) } else if (msg->address == 0x50) {
sim_dev->edid_addr = buf[0]; sim_dev->edid_seg_int = sim_dev->edid_seg;
sim_dev->edid_addr = buf[0] + (sim_dev->edid_seg << 8);
sim_dev->edid_seg = 0;
}
} }
return msg->size; return msg->size;