mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 08:31:55 +00:00
nfc: pn533: Add dev_up/dev_down hooks to phy_ops
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> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3c57b39547
commit
0bf2840ccc
@ -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 = {
|
||||
|
@ -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);
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user