Skip to content

Commit

Permalink
NFC: mei_phy: Register event callback when enabling the device
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Samuel Ortiz committed May 21, 2013
1 parent d999e4d commit 73f3adb
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 26 deletions.
9 changes: 9 additions & 0 deletions drivers/nfc/mei_phy.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,15 @@ int nfc_mei_phy_enable(void *phy_id)
return r;
}

r = mei_cl_register_event_cb(phy->device, nfc_mei_event_cb, phy);
if (r) {
pr_err("MEY_PHY: Event cb registration failed\n");
mei_cl_disable_device(phy->device);
phy->powered = 0;

return r;
}

phy->powered = 1;

return 0;
Expand Down
18 changes: 5 additions & 13 deletions drivers/nfc/microread/mei.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,24 +43,16 @@ static int microread_mei_probe(struct mei_cl_device *device,
return -ENOMEM;
}

r = mei_cl_register_event_cb(device, nfc_mei_event_cb, phy);
if (r) {
pr_err(MICROREAD_DRIVER_NAME ": event cb registration failed\n");
goto err_out;
}

r = microread_probe(phy, &mei_phy_ops, LLC_NOP_NAME,
MEI_NFC_HEADER_SIZE, 0, MEI_NFC_MAX_HCI_PAYLOAD,
&phy->hdev);
if (r < 0)
goto err_out;

return 0;
if (r < 0) {
nfc_mei_phy_free(phy);

err_out:
nfc_mei_phy_free(phy);
return r;
}

return r;
return 0;
}

static int microread_mei_remove(struct mei_cl_device *device)
Expand Down
18 changes: 5 additions & 13 deletions drivers/nfc/pn544/mei.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,24 +43,16 @@ static int pn544_mei_probe(struct mei_cl_device *device,
return -ENOMEM;
}

r = mei_cl_register_event_cb(device, nfc_mei_event_cb, phy);
if (r) {
pr_err(PN544_DRIVER_NAME ": event cb registration failed\n");
goto err_out;
}

r = pn544_hci_probe(phy, &mei_phy_ops, LLC_NOP_NAME,
MEI_NFC_HEADER_SIZE, 0, MEI_NFC_MAX_HCI_PAYLOAD,
&phy->hdev);
if (r < 0)
goto err_out;

return 0;
if (r < 0) {
nfc_mei_phy_free(phy);

err_out:
nfc_mei_phy_free(phy);
return r;
}

return r;
return 0;
}

static int pn544_mei_remove(struct mei_cl_device *device)
Expand Down

0 comments on commit 73f3adb

Please sign in to comment.