Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp3948364ybl; Tue, 20 Aug 2019 04:53:20 -0700 (PDT) X-Google-Smtp-Source: APXvYqz552dmAvNJPoYkPUVz3HhJdjxjtW79HkNAhAAyT2FZ9girBiKSQ/Tfhl/7k5fUYn67YGKB X-Received: by 2002:a65:4243:: with SMTP id d3mr25115821pgq.119.1566302000803; Tue, 20 Aug 2019 04:53:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566302000; cv=none; d=google.com; s=arc-20160816; b=isd2r2cZl+9BqeiS7XgV9cm76oukvNuHcM+xa58AN5ntGnour/7qJLN/JzMFNaIpcw 6782IuXVL7cfGzaHm+qnMCzHrvWMbBvq2NilN000bx54YsT4dO+UBC2vP6haDDA+OsZr 6TqTTkUj5IFv0YZavQksftD9YZtwoXCJHrdICfLND4oZ3dicRWwPJIdeFGp96nZt9MFM TRlmcX8OR+x4ang4yRdU+HqyF5Yc1ZVaK3KAdp2dzRN/HSEBDPXDudvDtfZAk80fJXk6 lAaVmESubiV25o2+RN/t8Q8X5UN5keCt0UtXxwmlVzqCLaIpjlcLntQ326tlyTKDH2jk 0QJA== 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=+TX6vwVpm/y02ZiWlD+UcZ2jktTxJWp0KwsIhMqytck=; b=MlQ6/t6dnS8Omu7jlU8TrfIQC+NoyDs0ADFvRVVN4Uo+gQ3z/tzERrXjhJlWP4idzc ZOKKdhB+yCrhdiuXgXFcoRjs+n2DFk0P3hmEzIBPLzoUtBB0wLB9EmHPMkJuBSKWuwR8 eSftmBbJ1jRM01e+2L4ybVmsQX1ZKAI1Ca2eyM27SPcn0uKZoIRvIuwwoqDFqhqU1Ize aKwOAEY5As26JpDAi6a2HvAM+h8o0TvresBG4fWALp8hak86VHVa9QfEEv0cltqL8HaK 7UmzEuURyIe0e1L4CqwMMBwtJtupXxW3qXBR8YbEV/MbpvEn8rRYtnhgicsDRj5OoG0q BkXQ== 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 n5si11977911pgq.154.2019.08.20.04.53.05; Tue, 20 Aug 2019 04:53:20 -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 S1729900AbfHTLv6 (ORCPT + 99 others); Tue, 20 Aug 2019 07:51:58 -0400 Received: from smtp2.goneo.de ([85.220.129.33]:52138 "EHLO smtp2.goneo.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729556AbfHTLv6 (ORCPT ); Tue, 20 Aug 2019 07:51:58 -0400 Received: from localhost (localhost [127.0.0.1]) by smtp2.goneo.de (Postfix) with ESMTP id 0AA7723F823; Tue, 20 Aug 2019 13:51:56 +0200 (CEST) X-Virus-Scanned: by goneo X-Spam-Flag: NO X-Spam-Score: -3.132 X-Spam-Level: X-Spam-Status: No, score=-3.132 tagged_above=-999 tests=[ALL_TRUSTED=-1, AWL=-0.232, 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 zXhvGlGSKiFQ; Tue, 20 Aug 2019 13:51:51 +0200 (CEST) Received: from lem-wkst-02.lemonage.de. (hq.lemonage.de [87.138.178.34]) by smtp2.goneo.de (Postfix) with ESMTPA id CD11B23FAF4; Tue, 20 Aug 2019 13:51:50 +0200 (CEST) From: Lars Poeschel To: Steve Winslow , Thomas Gleixner , Kees Cook , Allison Randal , "Gustavo A. R. Silva" , Lars Poeschel , Jilayne Lovejoy , Kate Stewart , netdev@vger.kernel.org (open list:NFC SUBSYSTEM), linux-kernel@vger.kernel.org (open list) Cc: Johan Hovold Subject: [PATCH v6 3/7] nfc: pn533: Add dev_up/dev_down hooks to phy_ops Date: Tue, 20 Aug 2019 14:03:40 +0200 Message-Id: <20190820120345.22593-3-poeschel@lemonage.de> X-Mailer: git-send-email 2.23.0.rc1 In-Reply-To: <20190820120345.22593-1-poeschel@lemonage.de> References: <20190820120345.22593-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.rc1