Skip to content

Commit

Permalink
NFC: st21nfcb: Configure CLF with NCI proprietary command
Browse files Browse the repository at this point in the history
In order to prevent any NFC feature when NFC is disable and
to save power, (down to 4uA) put the CLF in hibernate mode
with RF deactivated.
Add the equivalent to enable the NFC feature when initiating
the st21nfcb driver.

Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
  • Loading branch information
Christophe Ricard authored and Samuel Ortiz committed Jun 8, 2015
1 parent 05f0939 commit 41fc2f5
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
12 changes: 11 additions & 1 deletion drivers/nfc/st21nfcb/ndlc.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,19 @@ EXPORT_SYMBOL(ndlc_open);

void ndlc_close(struct llt_ndlc *ndlc)
{
struct nci_mode_set_cmd cmd;

cmd.cmd_type = ST21NFCB_NCI_SET_NFC_MODE;
cmd.mode = 0;

/* toggle reset pin */
ndlc->ops->disable(ndlc->phy_id);
ndlc->ops->enable(ndlc->phy_id);

nci_prop_cmd(ndlc->ndev, ST21NFCB_NCI_CORE_PROP,
sizeof(struct nci_mode_set_cmd), (__u8 *)&cmd);

ndlc->powered = 0;
ndlc->ops->disable(ndlc->phy_id);
}
EXPORT_SYMBOL(ndlc_close);

Expand Down
12 changes: 12 additions & 0 deletions drivers/nfc/st21nfcb/st21nfcb.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,17 @@

#define ST21NFCB_NCI1_X_PROPRIETARY_ISO15693 0x83

static int st21nfcb_nci_init(struct nci_dev *ndev)
{
struct nci_mode_set_cmd cmd;

cmd.cmd_type = ST21NFCB_NCI_SET_NFC_MODE;
cmd.mode = 1;

return nci_prop_cmd(ndev, ST21NFCB_NCI_CORE_PROP,
sizeof(struct nci_mode_set_cmd), (__u8 *)&cmd);
}

static int st21nfcb_nci_open(struct nci_dev *ndev)
{
struct st21nfcb_nci_info *info = nci_get_drvdata(ndev);
Expand Down Expand Up @@ -96,6 +107,7 @@ static struct nci_prop_ops st21nfcb_nci_prop_ops[] = {
};

static struct nci_ops st21nfcb_nci_ops = {
.init = st21nfcb_nci_init,
.open = st21nfcb_nci_open,
.close = st21nfcb_nci_close,
.send = st21nfcb_nci_send,
Expand Down
6 changes: 6 additions & 0 deletions drivers/nfc/st21nfcb/st21nfcb.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@
#define ST21NFCB_NCI_RUNNING 1

#define ST21NFCB_NCI_CORE_PROP 0x01
#define ST21NFCB_NCI_SET_NFC_MODE 0x02

struct nci_mode_set_cmd {
u8 cmd_type;
u8 mode;
} __packed;

struct nci_mode_set_rsp {
u8 status;
Expand Down

0 comments on commit 41fc2f5

Please sign in to comment.