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

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-7-viken.dadhaniya@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
drivers/tty/serial/qcom_geni_serial.c

index 32ec632fd0807fd0a41afe3713ec2145d05ba2a9..3f5b87c4cc54c3019763f1c9a122fd02ead6581d 100644 (file)
@@ -1200,7 +1200,13 @@ static int qcom_geni_serial_port_setup(struct uart_port *uport)
        int ret;
 
        proto = geni_se_read_proto(&port->se);
-       if (proto != GENI_SE_UART) {
+       if (proto == GENI_SE_INVALID_PROTO) {
+               ret = geni_load_se_firmware(&port->se, GENI_SE_UART);
+               if (ret) {
+                       dev_err(uport->dev, "UART firmware load failed ret: %d\n", ret);
+                       return ret;
+               }
+       } else if (proto != GENI_SE_UART) {
                dev_err(uport->dev, "Invalid FW loaded, proto: %d\n", proto);
                return -ENXIO;
        }