diff options
| -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 b8f8abc422f..1201bdbfb79 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)                  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; diff --git a/drivers/nfc/microread/mei.c b/drivers/nfc/microread/mei.c index 1ad044dce7b..51d44fb18be 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,  		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) diff --git a/drivers/nfc/pn544/mei.c b/drivers/nfc/pn544/mei.c index 1eb48848a35..50cef3a574b 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,  		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)  |