Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp5516163ybe; Tue, 10 Sep 2019 05:06:17 -0700 (PDT) X-Google-Smtp-Source: APXvYqzxwnDG3O4EI4IMTdilZx40Hf1sSe73xs/Xwfg0P7LYeJUx69+o0pLcflmoZABC75+hIOBK X-Received: by 2002:a2e:80cf:: with SMTP id r15mr19051104ljg.219.1568117177077; Tue, 10 Sep 2019 05:06:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568117177; cv=none; d=google.com; s=arc-20160816; b=jvPYw+h3Ff19ugH78NWkzxR3uJMp5338XmVp012B6Mhf5hWSXitD0ezCakOMapiIH0 ia7pNpZCFB0SkuDjtJG4gobXIGmwmMP765fVFcDAjGSkAPuXaL7qQgDRBuOZKoikRIZ5 as9Z0A8Ze/0FpOAz3cybOcV7QnZeBic1OvqdZ9z4LnW0GhXrERHpBMl0PhyWublId2Iy YnWaX4vEzCbjs7M8dqngPbCDYrSQY2f8MRnEdPe6773t1qdtUEJ0iQK9afy3KXGMWA4I ZHrZ+uYGVJdHwgbgF6LU2Of4XIGXzVlGl0Qu/8S6UVrmWKq76TcdIknGcfXhMmHJG7W5 1XXg== 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 :message-id:date:subject:cc:to:from; bh=LDNPfMLgo7DiqXfKZO1QAVHTVZhn44oyNqHUKLg3mwM=; b=Kbb1MAztfJqPDZK7u9yeKSpYxYRirSIFZ9fTQNOKdJqdM6cR77qhcEnrJuK//FGVA6 zHDI69ZcHRBpt+WrzTBtuk4acGre8EEOEJtTgaIwfVaTQB3mXFt8k+jXRANymHsy2STU RMAA85XLZP7qdbFXah4MJ/D/5LbuOqfA72dsXL60irGiMNB7JaQtiixQgdnsyWDLx7Se y5Xbg+F1oFtEMQ8PYiybRuunGPBC4H8hUS3UebdJWoy88jaT5fGx16w0l8o8N20mNZrf nr+cQklgrX1J+CEmOnMu40HqHKO5LWyH3Xyifycs3GQIm3j0JXWnUA6gAUjDEed0jt9l 5cPA== 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 c6si889877edv.210.2019.09.10.05.05.31; Tue, 10 Sep 2019 05:06:17 -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 S2389564AbfIJJTw (ORCPT + 99 others); Tue, 10 Sep 2019 05:19:52 -0400 Received: from smtp2.goneo.de ([85.220.129.33]:33154 "EHLO smtp2.goneo.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729360AbfIJJTv (ORCPT ); Tue, 10 Sep 2019 05:19:51 -0400 Received: from localhost (localhost [127.0.0.1]) by smtp2.goneo.de (Postfix) with ESMTP id 66E5823F688; Tue, 10 Sep 2019 11:19:49 +0200 (CEST) X-Virus-Scanned: by goneo X-Spam-Flag: NO X-Spam-Score: -3.111 X-Spam-Level: X-Spam-Status: No, score=-3.111 tagged_above=-999 tests=[ALL_TRUSTED=-1, AWL=-0.211, BAYES_00=-1.9] autolearn=ham Received: from smtp2.goneo.de ([127.0.0.1]) by localhost (smtp2.goneo.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mHjNSwEED_oc; Tue, 10 Sep 2019 11:19:48 +0200 (CEST) Received: from lem-wkst-02.lemonage.de. (hq.lemonage.de [87.138.178.34]) by smtp2.goneo.de (Postfix) with ESMTPA id BE12323F063; Tue, 10 Sep 2019 11:19:47 +0200 (CEST) From: Lars Poeschel To: Kate Stewart , "Gustavo A. R. Silva" , Kees Cook , Allison Randal , Greg Kroah-Hartman , Lars Poeschel , Thomas Gleixner , Jilayne Lovejoy , Steve Winslow , netdev@vger.kernel.org (open list:NFC SUBSYSTEM), linux-kernel@vger.kernel.org (open list) Cc: Johan Hovold Subject: [PATCH v7 3/7] nfc: pn533: Add dev_up/dev_down hooks to phy_ops Date: Tue, 10 Sep 2019 11:33:09 +0200 Message-Id: <20190910093312.1981-1-poeschel@lemonage.de> X-Mailer: git-send-email 2.23.0 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