https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235944
--- Comment #13 from Ravi Pokala <rpok...@panasas.com> --- (In reply to Andriy Gapon from comment #10) ================================================================ Ravi, are you sure that this is correct? > rc = smbus_writeb(sc->smbus, > (JEDEC_DTI_PAGE | JEDEC_LSA_PAGE_SET1), 0, 0); Given smbus_writeb(bus,slave,cmd,byte). ================================================================ Sadly, yes, I'm sure it's correct. SMBus only supports 8-bit command codes (which are used as EEPROM byte offsets), so page-change mechanism is required for accessing bytes [256-512]. For whatever reason, JEDEC (or the SPD EEPROM chip vendors) decided that the way to handle that is by writing to a specific SMBus address. In response, *all* devices on the bus switch to that page. As I noted in jedec_dimm.h: ================================================================ /* TSE2004av defines several Device Type Identifiers (DTIs), which are the high * nybble of the SMBus address. Addresses with DTIs of PROTECT (or PAGE, which * has the same value) are essentially "broadcast" addresses; all SPD devices * respond to them, changing their mode based on the Logical Serial Address * (LSA) encoded in bits [3:1]. For normal SPD access, bits [3:1] encode the * DIMM slot number. */ ================================================================ Thus, using "(JEDEC_DTI_PAGE | JEDEC_LSA_PAGE_SET1)" as the slave address is in fact correct. -- You are receiving this mail because: You are the assignee for the bug. _______________________________________________ freebsd-bugs@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"