Module Name: src Committed By: thorpej Date: Thu Jun 7 13:30:49 UTC 2018
Modified Files: src/sys/dev/i2c: i2c.c i2cvar.h Log Message: Changes / enhancements to i2c indirect device auto-configuration: — iic_search() chooses a “probe strategy” based on the "i2c-indirect-probe-strategy” property on the “iic” instance. Valid values are "smbus-quick-write”, "smbus-receive-byte”, and “none”. If no value is specified, the default is "smbus-quick-write”. — If the "i2c-indirect-device-whitelist” exists on the “iic” instance, iic_search() will first check the driver name in the cfdata_t against this list, and only allow the match/probe to move forward if the cfdata_t driver name is in the list. This is primarily to accommodate the Intel integrated memory controller neutered-i2c-thing. — If the cfdata_t specifies a wildcard address, each address of the i2c bus will be consulted. If the cfdata_t contains a nailed-down address, then we limit the bus scan to that specific address. — We explicitly skip reserved / special i2c addresses, such as the General-Call address, etc. — We introduce the notion of a “match quality” for i2c drivers. From lowest-quality to highest-quality: matched by plausible address only, matched by plausible address and poking at the bus to see if the device looks reasonable, matched by direct-config “compatible” string, matched by direct-config “driver name” string. — If the “match quality” is merely “plausible address only”, then iic_search() will use the probe strategy selected above to see if a device responds to that address. To generate a diff of this commit: cvs rdiff -u -r1.60 -r1.61 src/sys/dev/i2c/i2c.c cvs rdiff -u -r1.12 -r1.13 src/sys/dev/i2c/i2cvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.