From: Casey Connolly Date: Mon, 14 Jul 2025 13:13:15 +0000 (+0200) Subject: i2c: geni: load firmware if required X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=10f28bc7ae0ca039970f760493fb8719300f0479;p=thirdparty%2Fu-boot.git i2c: geni: load firmware if required Load firmware for the peripheral if necessary. Signed-off-by: Casey Connolly Reviewed-by: Neil Armstrong Link: https://patch.msgid.link/20250714-geni-load-fw-v5-4-5abbc0d29838@linaro.org Signed-off-by: Casey Connolly --- diff --git a/drivers/i2c/geni_i2c.c b/drivers/i2c/geni_i2c.c index 4eb41ba852f..d29e00fdf41 100644 --- a/drivers/i2c/geni_i2c.c +++ b/drivers/i2c/geni_i2c.c @@ -22,6 +22,7 @@ #include #include #include +#include #define SE_I2C_TX_TRANS_LEN 0x26c #define SE_I2C_RX_TRANS_LEN 0x270 @@ -499,6 +500,13 @@ static int geni_i2c_probe(struct udevice *dev) proto &= FW_REV_PROTOCOL_MSK; proto >>= FW_REV_PROTOCOL_SHFT; + if (proto == GENI_SE_INVALID_PROTO) { + qcom_geni_load_firmware(geni->base, dev); + proto = readl(geni->base + GENI_FW_REVISION_RO); + proto &= FW_REV_PROTOCOL_MSK; + proto >>= FW_REV_PROTOCOL_SHFT; + } + if (proto != GENI_SE_I2C) { dev_err(dev, "Invalid proto %d\n", proto); geni_i2c_disable_clocks(dev, geni);