]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
i2c: qcom-geni: Load i2c qup Firmware from linux side
authorViken Dadhaniya <viken.dadhaniya@oss.qualcomm.com>
Thu, 11 Sep 2025 04:32:54 +0000 (10:02 +0530)
committerBjorn Andersson <andersson@kernel.org>
Wed, 17 Sep 2025 18:50:23 +0000 (13:50 -0500)
Add provision to load firmware of Serial engine for I2C protocol from
Linux Execution Environment on running on APPS processor.

Acked-by: Andi Shyti <andi.shyti@kernel.org>
Co-developed-by: Mukesh Kumar Savaliya <mukesh.savaliya@oss.qualcomm.com>
Signed-off-by: Mukesh Kumar Savaliya <mukesh.savaliya@oss.qualcomm.com>
Signed-off-by: Viken Dadhaniya <viken.dadhaniya@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250911043256.3523057-5-viken.dadhaniya@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
drivers/i2c/busses/i2c-qcom-geni.c

index ff2289b52c84ccf9ef786c2618bd869453c5f611..95a577764d5c010777b814d5094f16eb8b673bce 100644 (file)
@@ -870,7 +870,13 @@ static int geni_i2c_probe(struct platform_device *pdev)
                goto err_clk;
        }
        proto = geni_se_read_proto(&gi2c->se);
-       if (proto != GENI_SE_I2C) {
+       if (proto == GENI_SE_INVALID_PROTO) {
+               ret = geni_load_se_firmware(&gi2c->se, GENI_SE_I2C);
+               if (ret) {
+                       dev_err_probe(dev, ret, "i2c firmware load failed ret: %d\n", ret);
+                       goto err_resources;
+               }
+       } else if (proto != GENI_SE_I2C) {
                ret = dev_err_probe(dev, -ENXIO, "Invalid proto %d\n", proto);
                goto err_resources;
        }