diff options
| author | Samuel Ortiz <sameo@linux.intel.com> | 2013-04-30 17:48:50 -0400 |
|---|---|---|
| committer | Samuel Ortiz <sameo@linux.intel.com> | 2013-05-21 04:48:40 -0400 |
| commit | 73f3adb9b91efac04e4e7f8379a85400fc57121e (patch) | |
| tree | 2b11e413e51aae905d2853a177f804cfff07c4cc | |
| parent | d999e4db0ac409c582cb15e6b120241ed9105064 (diff) | |
NFC: mei_phy: Register event callback when enabling the device
The callback registration starts a waiting read, so it needs to be fired
everytime the device is enabled. Otherwise following writes will never get
an answer back.
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
| -rw-r--r-- | drivers/nfc/mei_phy.c | 9 | ||||
| -rw-r--r-- | drivers/nfc/microread/mei.c | 18 | ||||
| -rw-r--r-- | drivers/nfc/pn544/mei.c | 18 |
3 files changed, 19 insertions, 26 deletions
diff --git a/drivers/nfc/mei_phy.c b/drivers/nfc/mei_phy.c index b8f8abc422f0..1201bdbfb791 100644 --- a/drivers/nfc/mei_phy.c +++ b/drivers/nfc/mei_phy.c | |||
| @@ -64,6 +64,15 @@ int nfc_mei_phy_enable(void *phy_id) | |||
| 64 | return r; | 64 | return r; |
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | r = mei_cl_register_event_cb(phy->device, nfc_mei_event_cb, phy); | ||
| 68 | if (r) { | ||
| 69 | pr_err("MEY_PHY: Event cb registration failed\n"); | ||
| 70 | mei_cl_disable_device(phy->device); | ||
| 71 | phy->powered = 0; | ||
| 72 | |||
| 73 | return r; | ||
| 74 | } | ||
| 75 | |||
| 67 | phy->powered = 1; | 76 | phy->powered = 1; |
| 68 | 77 | ||
| 69 | return 0; | 78 | return 0; |
diff --git a/drivers/nfc/microread/mei.c b/drivers/nfc/microread/mei.c index 1ad044dce7b6..51d44fb18be9 100644 --- a/drivers/nfc/microread/mei.c +++ b/drivers/nfc/microread/mei.c | |||
| @@ -43,24 +43,16 @@ static int microread_mei_probe(struct mei_cl_device *device, | |||
| 43 | return -ENOMEM; | 43 | return -ENOMEM; |
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | r = mei_cl_register_event_cb(device, nfc_mei_event_cb, phy); | ||
| 47 | if (r) { | ||
| 48 | pr_err(MICROREAD_DRIVER_NAME ": event cb registration failed\n"); | ||
| 49 | goto err_out; | ||
| 50 | } | ||
| 51 | |||
| 52 | r = microread_probe(phy, &mei_phy_ops, LLC_NOP_NAME, | 46 | r = microread_probe(phy, &mei_phy_ops, LLC_NOP_NAME, |
| 53 | MEI_NFC_HEADER_SIZE, 0, MEI_NFC_MAX_HCI_PAYLOAD, | 47 | MEI_NFC_HEADER_SIZE, 0, MEI_NFC_MAX_HCI_PAYLOAD, |
| 54 | &phy->hdev); | 48 | &phy->hdev); |
| 55 | if (r < 0) | 49 | if (r < 0) { |
| 56 | goto err_out; | 50 | nfc_mei_phy_free(phy); |
| 57 | |||
| 58 | return 0; | ||
| 59 | 51 | ||
| 60 | err_out: | 52 | return r; |
| 61 | nfc_mei_phy_free(phy); | 53 | } |
| 62 | 54 | ||
| 63 | return r; | 55 | return 0; |
| 64 | } | 56 | } |
| 65 | 57 | ||
| 66 | static int microread_mei_remove(struct mei_cl_device *device) | 58 | static int microread_mei_remove(struct mei_cl_device *device) |
diff --git a/drivers/nfc/pn544/mei.c b/drivers/nfc/pn544/mei.c index 1eb48848a35a..50cef3a574b5 100644 --- a/drivers/nfc/pn544/mei.c +++ b/drivers/nfc/pn544/mei.c | |||
| @@ -43,24 +43,16 @@ static int pn544_mei_probe(struct mei_cl_device *device, | |||
| 43 | return -ENOMEM; | 43 | return -ENOMEM; |
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | r = mei_cl_register_event_cb(device, nfc_mei_event_cb, phy); | ||
| 47 | if (r) { | ||
| 48 | pr_err(PN544_DRIVER_NAME ": event cb registration failed\n"); | ||
| 49 | goto err_out; | ||
| 50 | } | ||
| 51 | |||
| 52 | r = pn544_hci_probe(phy, &mei_phy_ops, LLC_NOP_NAME, | 46 | r = pn544_hci_probe(phy, &mei_phy_ops, LLC_NOP_NAME, |
| 53 | MEI_NFC_HEADER_SIZE, 0, MEI_NFC_MAX_HCI_PAYLOAD, | 47 | MEI_NFC_HEADER_SIZE, 0, MEI_NFC_MAX_HCI_PAYLOAD, |
| 54 | &phy->hdev); | 48 | &phy->hdev); |
| 55 | if (r < 0) | 49 | if (r < 0) { |
| 56 | goto err_out; | 50 | nfc_mei_phy_free(phy); |
| 57 | |||
| 58 | return 0; | ||
| 59 | 51 | ||
| 60 | err_out: | 52 | return r; |
| 61 | nfc_mei_phy_free(phy); | 53 | } |
| 62 | 54 | ||
| 63 | return r; | 55 | return 0; |
| 64 | } | 56 | } |
| 65 | 57 | ||
| 66 | static int pn544_mei_remove(struct mei_cl_device *device) | 58 | static int pn544_mei_remove(struct mei_cl_device *device) |
