Skip to content

Commit

Permalink
NFC: nci: Introduce nci_core_cmd
Browse files Browse the repository at this point in the history
This allows sending core commands from the driver. The driver
should be able to send NCI core commands like CORE_GET_CONFIG_CMD.

Signed-off-by: Robert Dolca <[email protected]>
Signed-off-by: Samuel Ortiz <[email protected]>
  • Loading branch information
Robert Dolca authored and Samuel Ortiz committed Oct 25, 2015
1 parent e4dbd62 commit 7bc4824
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
1 change: 1 addition & 0 deletions include/net/nfc/nci_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,7 @@ int nci_request(struct nci_dev *ndev,
unsigned long opt),
unsigned long opt, __u32 timeout);
int nci_prop_cmd(struct nci_dev *ndev, __u8 oid, size_t len, __u8 *payload);
int nci_core_cmd(struct nci_dev *ndev, __u16 opcode, size_t len, __u8 *payload);
int nci_core_reset(struct nci_dev *ndev);
int nci_core_init(struct nci_dev *ndev);

Expand Down
24 changes: 19 additions & 5 deletions net/nfc/nci/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -325,32 +325,46 @@ static void nci_rf_deactivate_req(struct nci_dev *ndev, unsigned long opt)
sizeof(struct nci_rf_deactivate_cmd), &cmd);
}

struct nci_prop_cmd_param {
struct nci_cmd_param {
__u16 opcode;
size_t len;
__u8 *payload;
};

static void nci_prop_cmd_req(struct nci_dev *ndev, unsigned long opt)
static void nci_generic_req(struct nci_dev *ndev, unsigned long opt)
{
struct nci_prop_cmd_param *param = (struct nci_prop_cmd_param *)opt;
struct nci_cmd_param *param =
(struct nci_cmd_param *)opt;

nci_send_cmd(ndev, param->opcode, param->len, param->payload);
}

int nci_prop_cmd(struct nci_dev *ndev, __u8 oid, size_t len, __u8 *payload)
{
struct nci_prop_cmd_param param;
struct nci_cmd_param param;

param.opcode = nci_opcode_pack(NCI_GID_PROPRIETARY, oid);
param.len = len;
param.payload = payload;

return __nci_request(ndev, nci_prop_cmd_req, (unsigned long)&param,
return __nci_request(ndev, nci_generic_req, (unsigned long)&param,
msecs_to_jiffies(NCI_CMD_TIMEOUT));
}
EXPORT_SYMBOL(nci_prop_cmd);

int nci_core_cmd(struct nci_dev *ndev, __u16 opcode, size_t len, __u8 *payload)
{
struct nci_cmd_param param;

param.opcode = opcode;
param.len = len;
param.payload = payload;

return __nci_request(ndev, nci_generic_req, (unsigned long)&param,
msecs_to_jiffies(NCI_CMD_TIMEOUT));
}
EXPORT_SYMBOL(nci_core_cmd);

int nci_core_reset(struct nci_dev *ndev)
{
return __nci_request(ndev, nci_reset_req, 0,
Expand Down

0 comments on commit 7bc4824

Please sign in to comment.