Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1531734 > unrolled thread

[PATCH v2] platform/chrome: Use proper protocol transfer function

Started byBrian Norris <briannorris@chromium.org>
First post2016-11-28 23:20 +0100
Last post2016-11-29 13:30 +0100
Articles 2 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH v2] platform/chrome: Use proper protocol transfer function Brian Norris <briannorris@chromium.org> - 2016-11-28 23:20 +0100
    Re: [PATCH v2] platform/chrome: Use proper protocol transfer function Javier Martinez Canillas <javier@osg.samsung.com> - 2016-11-29 13:30 +0100

#1531734 — [PATCH v2] platform/chrome: Use proper protocol transfer function

FromBrian Norris <briannorris@chromium.org>
Date2016-11-28 23:20 +0100
Subject[PATCH v2] platform/chrome: Use proper protocol transfer function
Message-ID<sICrf-82A-1@gated-at.bofh.it>
From: Shawn Nematbakhsh <shawnn@chromium.org>

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 <shawnn@chromium.org>
Signed-off-by: Brian Norris <briannorris@chromium.org>
---
Hi Olof / Benson,

This one's been sitting around a while.

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 04053fe1e980..cfa3e850c49f 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.8.0.rc3.226.g39d4020

[toc] | [next] | [standalone]


#1532238

FromJavier Martinez Canillas <javier@osg.samsung.com>
Date2016-11-29 13:30 +0100
Message-ID<sIPHP-8re-5@gated-at.bofh.it>
In reply to#1531734
Hello Brian,

On 11/28/2016 07:19 PM, Brian Norris wrote:
> From: Shawn Nematbakhsh <shawnn@chromium.org>
> 
> 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.
> 

That's correct, sorry for missing this when pushing the patch to mainline.

Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
-- 
Javier Martinez Canillas
Open Source Group
Samsung Research America

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web