summaryrefslogtreecommitdiffstats
path: root/hdata
diff options
context:
space:
mode:
authorOliver O'Halloran <oohall@gmail.com>2018-04-24 13:25:01 +1000
committerStewart Smith <stewart@linux.ibm.com>2018-04-24 00:11:50 -0500
commitff3747f62ada388a52b7d0894e192c7578452a9a (patch)
treeb263dbdab5aa66473eb6dff670fd6a27a54610de /hdata
parent3a4b4db368125c2ddb1fb4831253fa51d3268152 (diff)
downloadblackbird-skiboot-ff3747f62ada388a52b7d0894e192c7578452a9a.tar.gz
blackbird-skiboot-ff3747f62ada388a52b7d0894e192c7578452a9a.zip
hdata/i2c: Ignore multi-port I2C devices
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>
Diffstat (limited to 'hdata')
-rw-r--r--hdata/i2c.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/hdata/i2c.c b/hdata/i2c.c
index c08b53d5..cbd3bf01 100644
--- a/hdata/i2c.c
+++ b/hdata/i2c.c
@@ -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)
OpenPOWER on IntegriCloud