From patchwork Mon Jun 16 21:39:59 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Anderson X-Patchwork-Id: 4362941 Return-Path: X-Original-To: patchwork-linux-samsung-soc@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 4FB9FBEEAA for ; Mon, 16 Jun 2014 21:42:44 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 84684201BF for ; Mon, 16 Jun 2014 21:42:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A31CF20179 for ; Mon, 16 Jun 2014 21:42:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756032AbaFPVlE (ORCPT ); Mon, 16 Jun 2014 17:41:04 -0400 Received: from mail-ie0-f201.google.com ([209.85.223.201]:53886 "EHLO mail-ie0-f201.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755963AbaFPVkU (ORCPT ); Mon, 16 Jun 2014 17:40:20 -0400 Received: by mail-ie0-f201.google.com with SMTP id lx4so1220056iec.2 for ; Mon, 16 Jun 2014 14:40:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=qBOKeaGrY9vBTz0p2KeM65GuGHcQFKdZ66wNp8MDG0g=; b=ZURl9Grr6P5uUhl1DTWjhqohM0fFxhRXe7mP7KRyJjUlJpPUqLmXaJEtymEvh0xuYq DQbND/oOGj6F8pplpCIdiOVqJZlCjsCnzcEYo6nqhefmTwTg47+ZQAYxCG1Am1p8k9UK 3D6oiQOIeD+UEZrxzhU5eTkJGaBBAAMM6WofLkXhW3bRyvFlKp1QGxAovuD+w2P+AwIT rokNKMHqK6Mviuo2R3kTocY4ja7HsYAmIddx2wGgsDVbmyEIyh8eIsfCxyzSgV9CmA6i NP/qvud22MLlggLaXhnVvWRrkcEhprCxvhPU/rB39sfMNNNJoT7dJn6vtkItlnbE/RfP jLKQ== X-Gm-Message-State: ALoCoQnh47u+ZaVblXl7ajw0OI0Bl9kHVJjY5pPdmRg8/Xp9WUq0VRlovac+e8Emy/DIW5bSl6Gz X-Received: by 10.182.86.5 with SMTP id l5mr10962033obz.32.1402954819044; Mon, 16 Jun 2014 14:40:19 -0700 (PDT) Received: from corp2gmr1-1.hot.corp.google.com (corp2gmr1-1.hot.corp.google.com [172.24.189.92]) by gmr-mx.google.com with ESMTPS id i65si1039069yhg.2.2014.06.16.14.40.19 for (version=TLSv1.1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 16 Jun 2014 14:40:19 -0700 (PDT) Received: from tictac.mtv.corp.google.com (tictac.mtv.corp.google.com [172.22.72.141]) by corp2gmr1-1.hot.corp.google.com (Postfix) with ESMTP id DC79831C3EE; Mon, 16 Jun 2014 14:40:18 -0700 (PDT) Received: by tictac.mtv.corp.google.com (Postfix, from userid 121310) id BEE1580A72; Mon, 16 Jun 2014 14:40:18 -0700 (PDT) From: Doug Anderson To: Lee Jones Cc: Andrew Bresticker , swarren@wwwdotorg.org, olof@lixom.net, Sonny Rao , linux-samsung-soc@vger.kernel.org, Javier Martinez Canillas , Bill Richardson , sjg@chromium.org, Wolfram Sang , broonie@kernel.org, Doug Anderson , sameo@linux.intel.com, linux-kernel@vger.kernel.org Subject: [PATCH 09/10] mfd: cros_ec: Check result code from EC messages Date: Mon, 16 Jun 2014 14:39:59 -0700 Message-Id: <1402954800-28215-10-git-send-email-dianders@chromium.org> X-Mailer: git-send-email 2.0.0.526.g5318336 In-Reply-To: <1402954800-28215-1-git-send-email-dianders@chromium.org> References: <1402954800-28215-1-git-send-email-dianders@chromium.org> Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org X-Spam-Status: No, score=-7.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Bill Richardson Just because the host was able to talk to the EC doesn't mean that the EC was happy with what it was told. Errors in communincation are not the same as error messages from the EC itself. This change lets the EC report its errors separately. Signed-off-by: Bill Richardson Signed-off-by: Doug Anderson --- drivers/mfd/cros_ec_i2c.c | 15 +++++++++++---- drivers/mfd/cros_ec_spi.c | 26 ++++++++++++++------------ 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/drivers/mfd/cros_ec_i2c.c b/drivers/mfd/cros_ec_i2c.c index 5bb32f5..2276096 100644 --- a/drivers/mfd/cros_ec_i2c.c +++ b/drivers/mfd/cros_ec_i2c.c @@ -92,11 +92,18 @@ static int cros_ec_cmd_xfer_i2c(struct cros_ec_device *ec_dev, } /* check response error code */ - if (i2c_msg[1].buf[0]) { - dev_warn(ec_dev->dev, "command 0x%02x returned an error %d\n", - msg->command, i2c_msg[1].buf[0]); - ret = -EINVAL; + msg->result = i2c_msg[1].buf[0]; + switch (msg->result) { + case EC_RES_SUCCESS: + break; + case EC_RES_IN_PROGRESS: + ret = -EAGAIN; + dev_dbg(ec_dev->dev, "command 0x%02x in progress\n", + msg->command); goto done; + default: + dev_warn(ec_dev->dev, "command 0x%02x returned %d\n", + msg->command, msg->result); } /* copy response packet payload and compute checksum */ diff --git a/drivers/mfd/cros_ec_spi.c b/drivers/mfd/cros_ec_spi.c index 09ca789..4d34f1c 100644 --- a/drivers/mfd/cros_ec_spi.c +++ b/drivers/mfd/cros_ec_spi.c @@ -289,21 +289,23 @@ static int cros_ec_cmd_xfer_spi(struct cros_ec_device *ec_dev, goto exit; } - /* check response error code */ ptr = ec_dev->din; - if (ptr[0]) { - if (ptr[0] == EC_RES_IN_PROGRESS) { - dev_dbg(ec_dev->dev, "command 0x%02x in progress\n", - ec_msg->command); - ret = -EAGAIN; - goto exit; - } - dev_warn(ec_dev->dev, "command 0x%02x returned an error %d\n", - ec_msg->command, ptr[0]); - debug_packet(ec_dev->dev, "in_err", ptr, len); - ret = -EINVAL; + + /* check response error code */ + ec_msg->result = ptr[0]; + switch (ec_msg->result) { + case EC_RES_SUCCESS: + break; + case EC_RES_IN_PROGRESS: + ret = -EAGAIN; + dev_dbg(ec_dev->dev, "command 0x%02x in progress\n", + ec_msg->command); goto exit; + default: + dev_warn(ec_dev->dev, "command 0x%02x returned %d\n", + ec_msg->command, ec_msg->result); } + len = ptr[1]; sum = ptr[0] + ptr[1]; if (len > ec_msg->insize) {