LKML Archive on lore.kernel.org
 help / color / Atom feed
From: Lars Poeschel <poeschel@lemonage.de>
To: devicetree@vger.kernel.org, Samuel Ortiz <sameo@linux.intel.com>,
	"GitAuthor: Lars Poeschel" <poeschel@lemonage.de>,
	linux-wireless@vger.kernel.org (open list:NFC SUBSYSTEM),
	linux-kernel@vger.kernel.org (open list)
Cc: Johan Hovold <johan@kernel.org>
Subject: [PATCH v5 3/7] nfc: pn533: Add dev_up/dev_down hooks to phy_ops
Date: Fri, 11 Jan 2019 17:18:06 +0100
Message-ID: <20190111161812.26325-3-poeschel@lemonage.de> (raw)
In-Reply-To: <20190111161812.26325-1-poeschel@lemonage.de>

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 <johan@kernel.org>
Signed-off-by: Lars Poeschel <poeschel@lemonage.de>
---
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 a0cc1cc45292..1bc097d03789 100644
--- a/drivers/nfc/pn533/pn533.c
+++ b/drivers/nfc/pn533/pn533.c
@@ -2468,6 +2468,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);
 
@@ -2480,7 +2483,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 88d569666c51..eb5ccefc32e5 100644
--- a/drivers/nfc/pn533/pn533.h
+++ b/drivers/nfc/pn533/pn533.h
@@ -219,6 +219,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.20.1


  parent reply index

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-11 16:18 [PATCH v5 1/7] nfc: pn533: i2c: "pn532" as dt compatible string Lars Poeschel
2019-01-11 16:18 ` [PATCH v5 2/7] nfc: pn532_uart: Add NXP PN532 to devicetree docs Lars Poeschel
2019-01-15 19:59   ` Rob Herring
2019-01-24 10:02     ` Lars Poeschel
2019-01-11 16:18 ` Lars Poeschel [this message]
2019-01-11 16:18 ` [PATCH v5 4/7] nfc: pn533: Split pn533 init & nfc_register Lars Poeschel
2019-01-11 16:18 ` [PATCH v5 5/7] nfc: pn533: add UART phy driver Lars Poeschel
2019-01-11 16:18 ` [PATCH v5 6/7] nfc: pn533: Add autopoll capability Lars Poeschel
2019-01-11 16:18 ` [PATCH v5 7/7] nfc: pn532_uart: Make use of pn532 autopoll Lars Poeschel
2019-02-28 10:48 ` [PING] [PATCH v5 1/7] nfc: pn533: i2c: "pn532" as dt compatible string Lars Poeschel
2019-04-03  9:47   ` [PING 2] " Lars Poeschel
2019-08-05 12:42     ` Johan Hovold
2019-08-12  7:40       ` Lars Poeschel

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190111161812.26325-3-poeschel@lemonage.de \
    --to=poeschel@lemonage.de \
    --cc=devicetree@vger.kernel.org \
    --cc=johan@kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=sameo@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

LKML Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git
	git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git
	git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git
	git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git
	git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git
	git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git
	git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git
	git clone --mirror https://lore.kernel.org/lkml/7 lkml/git/7.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \
		linux-kernel@vger.kernel.org linux-kernel@archiver.kernel.org
	public-inbox-index lkml


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel


AGPL code for this site: git clone https://public-inbox.org/ public-inbox