platform/chrome: Use proper protocol transfer function

"Linux Kernel Mailing List" <[email protected]> Sat, 10 Feb 2018 22:00:25 +0000 (UTC)
Newsgroups gmane.linux.kernel.commits.head
Message-ID <[email protected]>
Web:        https://git.kernel.org/torvalds/c/d48b8c58c57f6edbe2965f0a5f62c5cf9593ca96
Commit:     d48b8c58c57f6edbe2965f0a5f62c5cf9593ca96
Parent:     e675191729029cfb1cd624a03864f6426906a078
Refname:    refs/heads/master
Author:     Shawn Nematbakhsh <[email protected]>
AuthorDate: Fri Sep 8 13:50:11 2017 -0700
Committer:  Benson Leung <[email protected]>
CommitDate: Sun Dec 17 14:04:21 2017 -0800

    platform/chrome: Use proper protocol transfer function
    
    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 <[email protected]>
    Signed-off-by: Brian Norris <[email protected]>
    Reviewed-by: Javier Martinez Canillas <[email protected]>
    Signed-off-by: Benson Leung <[email protected]>
---
 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;
 
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html