Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp4119278ybg; Fri, 25 Oct 2019 13:37:58 -0700 (PDT) X-Google-Smtp-Source: APXvYqxvfTb4TaZAilGhvJJ0nmdWD42cQVjCphcobbBHtxKTEd11lp440M4EHgCdT9fDftX29+I/ X-Received: by 2002:a50:d713:: with SMTP id t19mr6117082edi.185.1572035878021; Fri, 25 Oct 2019 13:37:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572035878; cv=none; d=google.com; s=arc-20160816; b=dtJ61u3bP1a5vcZcRe+a/CdU/uyRB53LGf7lrRhGBZq1gb7Pl0bYvrYcikAweZsdUE q28cL4S1bDw6lXnG4L7x43fm5NIi+NDD78a6AZJECB8PRTu/hu3X4C6dwFnJzpay48Al jbymGrK7vDv2VRZgPbS2/JiOOiIUBgd2xI9XcRVBMmDiV65K1YFdEbiYJxh9DxxlFrGG 9EfSwsQ2YLaAUdR6W0pn9x1f/Zg/5W/RiDAYNrSmME9a8doMbqS0M9VXhEsnEPDIIuC0 ps2U2xX8W1sJPK5fzqbxFvdwxom8luldd1PPjgk/zvJTg2lDdy6Xk5DWy7Nj+yxhrezH Tuwg== 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=LqbLQQlKJtzzKrbaiyA8e/ZQkiT91Ni/DN6btlFH7IY=; b=kN59KOISVjpqL3yFZ3GY31FOz0u5sSEQFlrPDctoHyh3Anv4tTJxas8g3Khd0bX9Mu KGqB380nA+TdCRRgHxdSJpyPrRLeqA7iPa0UqCPcq12MTtwFAnDIontoeHLfDmmugodq ZIGjKUkYFb96w65qgSC33XhVVeF+dVvva92cCtYYK5G6dzTN/nMGGq7RfXG81e8bwQIW XTtdu77NK59Z+ohKjh4cnDIKTrOkCDT7yyaLc4AzjzO8YTtpMf770Rr2aLBV+jvYevIO FIVg1/K+K4nebv10ifTcJM/+B/5mSgZURfa0TMvpPguWFIgwL4duxi27km16clq6ip+T fZiw== 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 n2si1926274edq.264.2019.10.25.13.37.35; Fri, 25 Oct 2019 13:37:58 -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 S2395357AbfJYOZw (ORCPT + 99 others); Fri, 25 Oct 2019 10:25:52 -0400 Received: from smtp3-1.goneo.de ([85.220.129.38]:41383 "EHLO smtp3-1.goneo.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2395341AbfJYOZw (ORCPT ); Fri, 25 Oct 2019 10:25:52 -0400 Received: from localhost (localhost [127.0.0.1]) by smtp3.goneo.de (Postfix) with ESMTP id 0451023FF75; Fri, 25 Oct 2019 16:25:49 +0200 (CEST) X-Virus-Scanned: by goneo X-Spam-Flag: NO X-Spam-Score: -3.009 X-Spam-Level: X-Spam-Status: No, score=-3.009 tagged_above=-999 tests=[ALL_TRUSTED=-1, AWL=-0.109, 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 CHFPb0pTU72X; Fri, 25 Oct 2019 16:25:47 +0200 (CEST) Received: from lem-wkst-02.lemonage.de. (hq.lemonage.de [87.138.178.34]) by smtp3.goneo.de (Postfix) with ESMTPA id 5883924004B; Fri, 25 Oct 2019 16:25:47 +0200 (CEST) From: Lars Poeschel To: Lars Poeschel , Greg Kroah-Hartman , Thomas Gleixner , Steve Winslow , Kate Stewart , "Gustavo A. R. Silva" , netdev@vger.kernel.org (open list:NFC SUBSYSTEM), linux-kernel@vger.kernel.org (open list) Cc: Johan Hovold Subject: [PATCH v10 3/7] nfc: pn533: Add dev_up/dev_down hooks to phy_ops Date: Fri, 25 Oct 2019 16:25:17 +0200 Message-Id: <20191025142521.22695-4-poeschel@lemonage.de> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191025142521.22695-1-poeschel@lemonage.de> References: <20191025142521.22695-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 v10: - Rebased the patch series on net-next 'Commit 503a64635d5e ("Merge branch 'DPAA-Ethernet-changes'")' Changes in v9: - Rebased the patch series on v5.4-rc2 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