On Sun, Jan 02, 2022 at 07:17:35AM -0300, Crystal Kolipe wrote: > On Sun, Dec 26, 2021 at 07:00:31PM +0100, Patrick Wildt wrote: > > So you might want to find out why sxirsb(4) isn't working well. > > The errors I'm seeing are: > > RD8 failed for run-time address 0x2d > WR8 failed for run-time address 0x2d > > The only code paths that can generate these error messages are in > fdt/sxirsb.c, rsb_read_1 and rsb_write_1, when the call to sxirsb_do_trans > returns either EIO or ETIMEDOUT. > > After adding debug code, it seems that the value of 'stat' returned from > macro HREAD4 is not RSB_STAT_TRANS_OVER as expected, so sxirsb_do_trans is > returning EIO. > > The value of 'stat' depends on whether it's a read or write operation, but > it's always the same: > > READ 0x103 > WRITE 0x003 > > Whereas the code expects to see 0x001...
So as I understand it, this value 'stat' is the value returned from the status register of the RSB controller, which according to documentation is supposed to include an error code in bits 8 - 23. But in this case, at least for writes, all of the high bits are set to zero. I notice that stat is declared as a uint16_t, so presumably the contents of bits 16 - 23 from the status register are being lost.