--- - branch: MAIN date: Tue May 15 02:02:18 UTC 2018 files: - new: '1.58' old: '1.57' path: src/sys/dev/i2c/i2c.c pathrev: src/sys/dev/i2c/i2c.c@1.58 type: modified id: 20180515T020218Z.a481c5d8a6399420f42cb1e3f8afa82c0fd141c2 log: | Fix a problem reported by jmcneill@ where by a system with multuple i2c busses would end up with "ghost" device instances on the second bus. This issue was previously masked on ARM systems by the empty-child-devices array issue fixed recently (that effectively blocked all indirect config of i2c busses on those systems). To fix this problem, we require that indirectly-configured devices have to fully specify their parent spec and address, e.g.: foo* at iic0 addr 0x55 NOT foo* at iic? addr ? or even: foo* at iic? addr 0x55 This is needed because of how indirect configuration works... attach directives in the kernel config file are enumerated, calling the bus's search routine, which in the case of i2c, enumerates all i2c addresses and calls the match routine for each address. Because we can't always reliably probe for i2c devices, we ended up with erroneous matches. Direct configuration of i2c is still allowed to use wildcarded parent specs and locators. module: src subject: 'CVS commit: src/sys/dev/i2c' unixtime: '1526349738' user: thorpej