Skip to content

Commit

Permalink
hdata/i2c: Ignore multi-port I2C devices
Browse files Browse the repository at this point in the history
Recent FSP firmware builds add support for multi-port I2C devices such
as the GPIO expanders used for the presence detect of OpenCAPI devices
and the PCIe hotplug controllers used to power cycle PCIe slots on ZZ.

The OpenCAPI driver inside of skiboot currently uses a platform-specific
method to talk to the relevant I2C device rather than relying on HDAT
since not all platforms correctly report the I2C devices (hello Zaius).
Additionally the nature of multi-port devices require that we a device
specific handler so that we generate the correct DT bindings. Currently
we don't and there is no immediate need for this support so just ignore
the multi-port devices for now.

Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
  • Loading branch information
oohal authored and stewartsmith committed Apr 24, 2018
1 parent 3a4b4db commit ff3747f
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions hdata/i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -314,13 +314,22 @@ int parse_i2c_devs(const struct HDIF_common_hdr *hdr, int idata_index,
* hdat. Log both cases to see what/where/why.
*/
if (!type || dev->type == 0xFF)
prlog(PR_WARNING, "HDAT I2C: found e%dp%d - %s@%x (%#x:%s)\n",
prlog(PR_WARNING, "HDAT I2C: found e%dp%d - %s@%x dp:%02x (%#x:%s)\n",
dev->i2cm_engine, dev->i2cm_port, name, dev_addr,
purpose, label);
dev->dev_port, purpose, label);
else
prlog(PR_TRACE, "HDAT I2C: found e%dp%d - %s@%x (%#x:%s)\n",
prlog(PR_DEBUG, "HDAT I2C: found e%dp%d - %s@%x dp:%02x (%#x:%s)\n",
dev->i2cm_engine, dev->i2cm_port, name, dev_addr,
purpose, label);
dev->dev_port, purpose, label);

/*
* Multi-port device require special handling since we need to
* generate the device-specific DT bindings. For now we're just
* going to ignore them since these devices are owned by FW
* any way.
*/
if (dev->dev_port != 0xff)
continue;

node = dt_new_addr(bus, name, dev_addr);
if (!node)
Expand Down

0 comments on commit ff3747f

Please sign in to comment.