platform/chrome: correct cros_ec_prepare_tx() usage
authorTzung-Bi Shih <tzungbi@kernel.org>
Fri, 13 May 2022 04:41:38 +0000 (12:41 +0800)
committerTzung-Bi Shih <tzungbi@kernel.org>
Mon, 16 May 2022 02:01:51 +0000 (10:01 +0800)
cros_ec_prepare_tx() returns either:
- >= 0 for number of prepared bytes.
- < 0 for -errno.

Correct the comment and make sure all callers check the return code.

Reviewed-by: Guenter Roeck <groeck@chromium.org>
Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
Link: https://lore.kernel.org/r/20220513044143.1045728-3-tzungbi@kernel.org
drivers/platform/chrome/cros_ec_i2c.c
drivers/platform/chrome/cros_ec_ishtp.c
drivers/platform/chrome/cros_ec_lpc.c
drivers/platform/chrome/cros_ec_proto.c
drivers/platform/chrome/cros_ec_rpmsg.c
drivers/platform/chrome/cros_ec_spi.c

index 22feb0fd4ce71a890db01a695f5d527db471d7fb..a4f305f1eb0eaf3da01dd346df36c4f38a3bec93 100644 (file)
@@ -89,6 +89,8 @@ static int cros_ec_pkt_xfer_i2c(struct cros_ec_device *ec_dev,
 
        ec_dev->dout++;
        ret = cros_ec_prepare_tx(ec_dev, msg);
+       if (ret < 0)
+               goto done;
        ec_dev->dout--;
 
        /* send command to EC and read answer */
index 4020b8354bae90cb783a337c09c724eabe0a3a94..cb2031cf7106fe37749cabad7c5a7f2a2f0dfa3d 100644 (file)
@@ -521,7 +521,9 @@ static int cros_ec_pkt_xfer_ish(struct cros_ec_device *ec_dev,
        out_msg->hdr.status = 0;
 
        ec_dev->dout += OUT_MSG_EC_REQUEST_PREAMBLE;
-       cros_ec_prepare_tx(ec_dev, msg);
+       rv = cros_ec_prepare_tx(ec_dev, msg);
+       if (rv < 0)
+               goto end_error;
        ec_dev->dout -= OUT_MSG_EC_REQUEST_PREAMBLE;
 
        dev_dbg(dev,
index 8eeef85a96b1f7756302fc6c46cb10990b6387ac..7677ab3c0ead9ff66a650fbf253187404dee21d7 100644 (file)
@@ -147,6 +147,8 @@ static int cros_ec_pkt_xfer_lpc(struct cros_ec_device *ec,
        u8 *dout;
 
        ret = cros_ec_prepare_tx(ec, msg);
+       if (ret < 0)
+               goto done;
 
        /* Write buffer */
        cros_ec_lpc_ops.write(EC_LPC_ADDR_HOST_PACKET, ret, ec->dout);
index db1c8ba431715ae6bc71d764b813ef9d404b9157..2d6d3fbfa905e307125c6df41adb9e158e36ff74 100644 (file)
@@ -164,7 +164,7 @@ static int send_command(struct cros_ec_device *ec_dev,
  * only SPI uses it. Once LPC uses the same protocol it can start using it.
  * I2C could use it now, with a refactor of the existing code.
  *
- * Return: 0 on success or negative error code.
+ * Return: number of prepared bytes on success or negative error code.
  */
 int cros_ec_prepare_tx(struct cros_ec_device *ec_dev,
                       struct cros_ec_command *msg)
index d96d15b8ca946de915115df1e9f61ceff9afb5e9..39d3b50a7c09e232516d5d2daf7ba9156ad4c584 100644 (file)
@@ -89,6 +89,8 @@ static int cros_ec_pkt_xfer_rpmsg(struct cros_ec_device *ec_dev,
 
        ec_msg->result = 0;
        len = cros_ec_prepare_tx(ec_dev, ec_msg);
+       if (len < 0)
+               return len;
        dev_dbg(ec_dev->dev, "prepared, len=%d\n", len);
 
        reinit_completion(&ec_rpmsg->xfer_ack);
index 8493af0f680e20adeba56f7ee5cd2db4cb7dca4b..589f18e9537d959cb1b79f87e9ca75762649f20e 100644 (file)
@@ -401,6 +401,8 @@ static int do_cros_ec_pkt_xfer_spi(struct cros_ec_device *ec_dev,
        unsigned long delay;
 
        len = cros_ec_prepare_tx(ec_dev, ec_msg);
+       if (len < 0)
+               return len;
        dev_dbg(ec_dev->dev, "prepared, len=%d\n", len);
 
        /* If it's too soon to do another transaction, wait */
@@ -544,6 +546,8 @@ static int do_cros_ec_cmd_xfer_spi(struct cros_ec_device *ec_dev,
        unsigned long delay;
 
        len = cros_ec_prepare_tx(ec_dev, ec_msg);
+       if (len < 0)
+               return len;
        dev_dbg(ec_dev->dev, "prepared, len=%d\n", len);
 
        /* If it's too soon to do another transaction, wait */