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:
Khageswararao Rao B
2022-02-17 14:54:11 +05:30
parent a6c862cb8a
commit 414ee1d668
4 changed files with 79 additions and 6 deletions

View File

@@ -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;
}