NFC: Driver: Add SW WAR to enable and disable NFC clock
Added SW WAR to enable NFC clock at NFC ON and disable NFC clock at NFC OFF. Change-Id: Id617efb53ba06caa735927b4d271990be7e4766c
This commit is contained in:
@@ -161,3 +161,44 @@ int nfc_ldo_unvote(struct nfc_dev *nfc_dev)
|
||||
pr_err("%s: set load failed\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Routine to enable clock.
|
||||
* this routine can be extended to select from multiple
|
||||
* sources based on clk name.
|
||||
*/
|
||||
int nfc_clock_select(struct nfc_dev *nfc_dev)
|
||||
{
|
||||
int r = 0;
|
||||
|
||||
nfc_dev->s_clk = clk_get(&nfc_dev->i2c_dev.client->dev, "nfc_ref_clk");
|
||||
|
||||
if (IS_ERR(nfc_dev->s_clk))
|
||||
return PTR_ERR(nfc_dev->s_clk);
|
||||
|
||||
if (!nfc_dev->clk_run)
|
||||
r = clk_prepare_enable(nfc_dev->s_clk);
|
||||
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
nfc_dev->clk_run = true;
|
||||
return r;
|
||||
}
|
||||
|
||||
/*
|
||||
* Routine to disable clocks
|
||||
*/
|
||||
int nfc_clock_deselect(struct nfc_dev *nfc_dev)
|
||||
{
|
||||
int r = -EINVAL;
|
||||
|
||||
if (nfc_dev->s_clk != NULL) {
|
||||
if (nfc_dev->clk_run) {
|
||||
clk_disable_unprepare(nfc_dev->s_clk);
|
||||
nfc_dev->clk_run = false;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
Reference in New Issue
Block a user