On 3/4/25 10:56 PM, Melody Olvera wrote: > From: Wesley Cheng <quic_wcheng@xxxxxxxxxxx> > > SM8750 utilizes an eUSB2 PHY from M31. Add the initialization > sequences to bring it out of reset and into an operational state. This > differs to the M31 USB driver, in that the M31 eUSB2 driver will > require a connection to an eUSB2 repeater. This PHY driver will handle > the initialization of the associated eUSB2 repeater when required. > > Signed-off-by: Wesley Cheng <quic_wcheng@xxxxxxxxxxx> > Signed-off-by: Melody Olvera <quic_molvera@xxxxxxxxxxx> > --- [...] > +static int msm_m31_eusb2_write_readback(void __iomem *base, u32 offset, > + const u32 mask, u32 val) > +{ > + u32 write_val; > + u32 tmp; > + > + tmp = readl_relaxed(base + offset); > + tmp &= ~mask; > + write_val = tmp | val; > + > + writel_relaxed(write_val, base + offset); > + > + tmp = readl_relaxed(base + offset); > + tmp &= mask; > + > + if (tmp != val) { > + pr_err("write: %x to offset: %x FAILED\n", val, offset); > + return -EINVAL; > + } > + > + return 0; Is there a reason we need to read back every write? Does this have to do with some funny write buffering? Konrad