Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757143AbdIHUzc (ORCPT ); Fri, 8 Sep 2017 16:55:32 -0400 Received: from mail-pf0-f176.google.com ([209.85.192.176]:34855 "EHLO mail-pf0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756063AbdIHUza (ORCPT ); Fri, 8 Sep 2017 16:55:30 -0400 X-Google-Smtp-Source: ADKCNb6LOsFWcZ/yBpvL4ycjFHbldknbmA511hrNt6WwXGlAwFP/YPu1VNGj/QS6u06aDG+jRLiN7A== From: Brian Norris To: Olof Johansson , Benson Leung Cc: Lee Jones , , Doug Anderson , Brian Norris , Javier Martinez Canillas , Shawn Nematbakhsh , Gwendal Grignou , Enric Balletbo , Tomeu Vizoso , Brian Norris Subject: [PATCH v3] platform/chrome: Use proper protocol transfer function Date: Fri, 8 Sep 2017 13:50:11 -0700 Message-Id: <20170908205011.77986-1-briannorris@chromium.org> X-Mailer: git-send-email 2.14.1.581.gf28d330327-goog Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2082 Lines: 61 From: Shawn Nematbakhsh pkt_xfer should be used for protocol v3, and cmd_xfer otherwise. We had one instance of these functions correct, but not the second, fall-back case. We use the fall-back only when the first command returns an IN_PROGRESS status, which is only used on some EC firmwares where we don't want to constantly poll the bus, but instead back off and sleep/retry for a little while. Fixes: 2c7589af3c4d ("mfd: cros_ec: add proto v3 skeleton") Signed-off-by: Shawn Nematbakhsh Signed-off-by: Brian Norris Reviewed-by: Javier Martinez Canillas --- v3: * Added Javier's reviewed tag * It's been > 8 months since [1], so why not? And hey, Benson's officially in MAINTAINERS now! Too bad no one told me. [1] https://patchwork.kernel.org/patch/9450633/ v2: * Add Benson in 'To:' * make subject prefix more obvious drivers/platform/chrome/cros_ec_proto.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/platform/chrome/cros_ec_proto.c b/drivers/platform/chrome/cros_ec_proto.c index 8dfa7fcb1248..e7bbdf947bbc 100644 --- a/drivers/platform/chrome/cros_ec_proto.c +++ b/drivers/platform/chrome/cros_ec_proto.c @@ -60,12 +60,14 @@ static int send_command(struct cros_ec_device *ec_dev, struct cros_ec_command *msg) { int ret; + int (*xfer_fxn)(struct cros_ec_device *ec, struct cros_ec_command *msg); if (ec_dev->proto_version > 2) - ret = ec_dev->pkt_xfer(ec_dev, msg); + xfer_fxn = ec_dev->pkt_xfer; else - ret = ec_dev->cmd_xfer(ec_dev, msg); + xfer_fxn = ec_dev->cmd_xfer; + ret = (*xfer_fxn)(ec_dev, msg); if (msg->result == EC_RES_IN_PROGRESS) { int i; struct cros_ec_command *status_msg; @@ -88,7 +90,7 @@ static int send_command(struct cros_ec_device *ec_dev, for (i = 0; i < EC_COMMAND_RETRIES; i++) { usleep_range(10000, 11000); - ret = ec_dev->cmd_xfer(ec_dev, status_msg); + ret = (*xfer_fxn)(ec_dev, status_msg); if (ret < 0) break; -- 2.14.1.581.gf28d330327-goog