soc/qualcomm/sc7280: Fix extended EDID read over I2C-over-AUX
The eDP AUX controller currently sets the NO_SEND_STOP flag for all I2C-over-AUX transactions. This prevents the controller from issuing an I2C STOP condition, which is required for proper completion of multi-block (extended) EDID reads. Update edp_msg_fifo_tx() to only set the EDP_AUX_TRANS_CTRL_NO_SEND_STOP flag when the DP_AUX_I2C_MOT (Middle-of-Transaction) bit is set in the request. This allows the I2C transaction to correctly finalize with a STOP condition when MOT is not present, enabling successful reads of EDID extension blocks. BUG=none TEST=Verify extended EDID is correctly read on Google/Quartz. Change-Id: I4b637a750ef16148895332abfd9ca202b5a35408 Signed-off-by: Kapil Porwal <kapilporwal@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/91579 Reviewed-by: Subrata Banik <subratabanik@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
fd5f062446
commit
4caf5ab903
1 changed files with 7 additions and 3 deletions
|
|
@ -88,9 +88,13 @@ static int edp_msg_fifo_tx(unsigned int address, u8 request, void *buffer, size_
|
|||
write32(&edp_phy->aux_interrupt_clr, 0x0);
|
||||
|
||||
reg = 0; /* Transaction number is always 1 */
|
||||
if (!native) /* i2c */
|
||||
reg |= EDP_AUX_TRANS_CTRL_I2C | EDP_AUX_TRANS_CTRL_NO_SEND_ADDR |
|
||||
EDP_AUX_TRANS_CTRL_NO_SEND_STOP;
|
||||
if (!native) { /* i2c */
|
||||
reg |= EDP_AUX_TRANS_CTRL_I2C | EDP_AUX_TRANS_CTRL_NO_SEND_ADDR;
|
||||
/* EDP_AUX_TRANS_CTRL_NO_SEND_STOP should be set ONLY if DP_AUX_I2C_MOT is used. */
|
||||
if (request & DP_AUX_I2C_MOT) {
|
||||
reg |= EDP_AUX_TRANS_CTRL_NO_SEND_STOP;
|
||||
}
|
||||
}
|
||||
|
||||
reg |= EDP_AUX_TRANS_CTRL_GO;
|
||||
write32(&edp_auxclk->aux_trans_ctrl, reg);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue