Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp699708ybe; Thu, 19 Sep 2019 02:19:35 -0700 (PDT) X-Google-Smtp-Source: APXvYqw8f3wILWPhHi6COlAliRAGt6lp9ogPUdEoVekz9SvWSvzqAm8Xi0pfyxZSvSObE1lbmOxC X-Received: by 2002:a50:d2d4:: with SMTP id q20mr6970100edg.172.1568884775693; Thu, 19 Sep 2019 02:19:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568884775; cv=none; d=google.com; s=arc-20160816; b=b6ZIN2eQt5yCJ6wd8tuzoD+9F636rjC7qL8RSxuBvRxIKbcBalyxiuqCGPKUjJn4sP qygxZ0zaqzklen8cXQgwJ2kdXS9bW58ZIIlbag+W3HSoJ5iHxmIvSnLQje/U8DbmMvZi hJpsRYhKocSbxDGZOgbbrGGcbe2GbcozKhyhN74MsbCqjogVBlAP/6jQtXfGZrkhktIi MLZRWn+EqA0u94PvHwenqk6pJZDmXr/bnFAo1vzZpVWjOGMUNsZlJHeo5K4vaxqOZAbI D7Vg3wyAY/zYbAzz6dHUj2kr68KKpZDmiy3IaBo843yMb6Nm9a5PXPRW8k74rGCDdTyr 2aZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=LDNPfMLgo7DiqXfKZO1QAVHTVZhn44oyNqHUKLg3mwM=; b=ozY82GsucdLbcVD6JLuKxX5o+8hW/VyPATCPAte67TBIsNagAR1ePDABwIveMXnmZz EPXZ8s7nDDAFDmTjHOxM/EsGJSs0o9yAFlMnxZWkdCvXNYCBAezP1xDcaE9zV4JKUGoT 02jqwypaHrHQdH0+XIykM4kQqUWD4I67GNwjUQicpuoZzrQGzeRabXG0mGGWVgSmuXJJ HFynS6mCLA4QFFOa5CFeNghKIK9mch6bBLo7zOwvGnByGNKQadrJuIr/UUuKjE3YMl9F OTdDI4CvPYHmr995H58nk2X2SZLAyVC6QRmWqXDwv69NOzvtDBIDifatNDZgT6j6ktiK t4zw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id ca9si4592497edb.79.2019.09.19.02.19.12; Thu, 19 Sep 2019 02:19:35 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388719AbfISJRK (ORCPT + 99 others); Thu, 19 Sep 2019 05:17:10 -0400 Received: from smtp3.goneo.de ([85.220.129.37]:59222 "EHLO smtp3.goneo.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387637AbfISJRI (ORCPT ); Thu, 19 Sep 2019 05:17:08 -0400 Received: from localhost (localhost [127.0.0.1]) by smtp3.goneo.de (Postfix) with ESMTP id ADF5723FA5D; Thu, 19 Sep 2019 11:17:05 +0200 (CEST) X-Virus-Scanned: by goneo X-Spam-Flag: NO X-Spam-Score: -3.024 X-Spam-Level: X-Spam-Status: No, score=-3.024 tagged_above=-999 tests=[ALL_TRUSTED=-1, AWL=-0.124, BAYES_00=-1.9] autolearn=ham Received: from smtp3.goneo.de ([127.0.0.1]) by localhost (smtp3.goneo.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YW4L9yTwDM2G; Thu, 19 Sep 2019 11:17:04 +0200 (CEST) Received: from lem-wkst-02.lemonage.de. (hq.lemonage.de [87.138.178.34]) by smtp3.goneo.de (Postfix) with ESMTPA id B1E3D23FAD0; Thu, 19 Sep 2019 11:17:03 +0200 (CEST) From: Lars Poeschel To: Thomas Gleixner , Kees Cook , Greg Kroah-Hartman , Allison Randal , Jilayne Lovejoy , Lars Poeschel , "Gustavo A. R. Silva" , Steve Winslow , netdev@vger.kernel.org (open list:NFC SUBSYSTEM), linux-kernel@vger.kernel.org (open list) Cc: Johan Hovold Subject: [PATCH v8 3/7] nfc: pn533: Add dev_up/dev_down hooks to phy_ops Date: Thu, 19 Sep 2019 11:16:40 +0200 Message-Id: <20190919091645.16439-3-poeschel@lemonage.de> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190919091645.16439-1-poeschel@lemonage.de> References: <20190919091645.16439-1-poeschel@lemonage.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This adds hooks for dev_up and dev_down to the phy_ops. They are optional. The idea is to inform the phy driver when the nfc chip is really going to be used. When it is not used, the phy driver can suspend it's interface to the nfc chip to save some power. The nfc chip is considered not in use before dev_up and after dev_down. Cc: Johan Hovold Signed-off-by: Lars Poeschel --- Changes in v6: - Rebased the patch series on v5.3-rc5 Changes in v5: - (dev->phy_ops->dev_up) instead (dev->phy_ops) Changes in v4: - This patch is new in v4 drivers/nfc/pn533/pn533.c | 12 +++++++++++- drivers/nfc/pn533/pn533.h | 9 +++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/nfc/pn533/pn533.c b/drivers/nfc/pn533/pn533.c index a172a32aa9d9..64836c727aee 100644 --- a/drivers/nfc/pn533/pn533.c +++ b/drivers/nfc/pn533/pn533.c @@ -2458,6 +2458,9 @@ static int pn533_dev_up(struct nfc_dev *nfc_dev) { struct pn533 *dev = nfc_get_drvdata(nfc_dev); + if (dev->phy_ops->dev_up) + dev->phy_ops->dev_up(dev); + if (dev->device_type == PN533_DEVICE_PN532) { int rc = pn532_sam_configuration(nfc_dev); @@ -2470,7 +2473,14 @@ static int pn533_dev_up(struct nfc_dev *nfc_dev) static int pn533_dev_down(struct nfc_dev *nfc_dev) { - return pn533_rf_field(nfc_dev, 0); + struct pn533 *dev = nfc_get_drvdata(nfc_dev); + int ret; + + ret = pn533_rf_field(nfc_dev, 0); + if (dev->phy_ops->dev_down && !ret) + dev->phy_ops->dev_down(dev); + + return ret; } static struct nfc_ops pn533_nfc_ops = { diff --git a/drivers/nfc/pn533/pn533.h b/drivers/nfc/pn533/pn533.h index 8bf9d6ece0f5..570ee0a3e832 100644 --- a/drivers/nfc/pn533/pn533.h +++ b/drivers/nfc/pn533/pn533.h @@ -207,6 +207,15 @@ struct pn533_phy_ops { struct sk_buff *out); int (*send_ack)(struct pn533 *dev, gfp_t flags); void (*abort_cmd)(struct pn533 *priv, gfp_t flags); + /* + * dev_up and dev_down are optional. + * They are used to inform the phy layer that the nfc chip + * is going to be really used very soon. The phy layer can then + * bring up it's interface to the chip and have it suspended for power + * saving reasons otherwise. + */ + void (*dev_up)(struct pn533 *priv); + void (*dev_down)(struct pn533 *priv); }; -- 2.23.0