On 24.01.23 12:48, John Watts wrote: > On Tue, Jan 24, 2023 at 09:27:42AM +0100, Ahmad Fatoum wrote: >>> +static bool wlcalib_failed(void __iomem *ips) >>> +{ >>> + int i; >>> + >>> + for (i = 0; i < 4; ++i) { >>> + if (readb(P0_IPS + MPWLHWERR + i) == 0) >> >> s/P0_OPS/ips/ ? > > Oops, good catch! Will fix in V2. > >> >> Also does it need to be bytewise reads? If not, you could rewrite >> as return readl(ips + MPWLHWERR) == 0; > > The MPWHLHWERR register contains 4 bytes giving some status for each lane, > that would only fail if all lanes fail which is different behaviour to > the existing behaviour fails if any lanes fail at calibrating. Yes. readl() would've only made sense if 0 was the success, not the error indicator. > >> >>> + return true; >> >> Write level calibration has failed when MPWLHWERR == 0 and succeeded >> when there is some other value? That sounds odd. > > It is odd, but that's what the data sheet says, the errata says and what > and what seem. Maybe I should note it down? Yes, a comment would be good. > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |