mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 14:12:06 +00:00
NFC: Set and get DEP general bytes
Without an API for setting and getting the local and remote general bytes, drivers won't be able to properly establish a DEP link. This API also allows them to propagate the remote general bytes they get from the DEP link establishment up to the LLCP layer. Signed-off-by: Samuel Ortiz <sameo@linux.intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
1ed28f6106
commit
541d920b05
@ -1121,6 +1121,7 @@ static int pn533_activate_target_nfcdep(struct pn533 *dev)
|
||||
{
|
||||
struct pn533_cmd_activate_param param;
|
||||
struct pn533_cmd_activate_response *resp;
|
||||
u16 gt_len;
|
||||
int rc;
|
||||
|
||||
nfc_dev_dbg(&dev->interface->dev, "%s", __func__);
|
||||
@ -1146,7 +1147,11 @@ static int pn533_activate_target_nfcdep(struct pn533 *dev)
|
||||
if (rc != PN533_CMD_RET_SUCCESS)
|
||||
return -EIO;
|
||||
|
||||
return 0;
|
||||
/* ATR_RES general bytes are located at offset 16 */
|
||||
gt_len = PN533_FRAME_CMD_PARAMS_LEN(dev->in_frame) - 16;
|
||||
rc = nfc_set_remote_general_bytes(dev->nfc_dev, resp->gt, gt_len);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int pn533_activate_target(struct nfc_dev *nfc_dev, u32 target_idx,
|
||||
|
@ -170,6 +170,11 @@ struct sk_buff *nfc_alloc_send_skb(struct nfc_dev *dev, struct sock *sk,
|
||||
unsigned int *err);
|
||||
struct sk_buff *nfc_alloc_recv_skb(unsigned int size, gfp_t gfp);
|
||||
|
||||
int nfc_set_remote_general_bytes(struct nfc_dev *dev,
|
||||
u8 *gt, u8 gt_len);
|
||||
|
||||
u8 *nfc_get_local_general_bytes(struct nfc_dev *dev, u8 *gt_len);
|
||||
|
||||
int nfc_targets_found(struct nfc_dev *dev, struct nfc_target *targets,
|
||||
int ntargets);
|
||||
|
||||
|
@ -352,6 +352,24 @@ error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
int nfc_set_remote_general_bytes(struct nfc_dev *dev, u8 *gb, u8 gb_len)
|
||||
{
|
||||
pr_debug("dev_name=%s gb_len=%d\n",
|
||||
dev_name(&dev->dev), gb_len);
|
||||
|
||||
if (gb_len > NFC_MAX_GT_LEN)
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(nfc_set_remote_general_bytes);
|
||||
|
||||
u8 *nfc_get_local_general_bytes(struct nfc_dev *dev, u8 *gt_len)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(nfc_get_local_general_bytes);
|
||||
|
||||
/**
|
||||
* nfc_alloc_send_skb - allocate a skb for data exchange responses
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user