diff options
author | Leo Yan <leo.yan@linaro.org> | 2022-08-10 16:53:01 +0200 |
---|---|---|
committer | Fabien Parent <fabien.parent@linaro.org> | 2022-10-30 12:13:09 +0100 |
commit | 6abcffc7d2ae01192931a2f1efebbdb20e7c543e (patch) | |
tree | 7f2498803e95535b57a42da30e49df18adf4fd5c | |
parent | 7626481570873cf67b4787480efaa2f02ca46622 (diff) |
soc: qcom: cpr: Add support for ACC override parameters
Some SoCs, such as MSM8939, require to use some override parameters for ACC.
This commit use some value from the fuses which indicates whether that
SoC should use the override parameters. The CPR driver updates the pointer
to the ACC descriptor in order to use the override parameters instead.
Signed-off-by: Leo Yan <leo.yan@linaro.org>
Signed-off-by: Fabien Parent <fabien.parent@linaro.org>
-rw-r--r-- | drivers/soc/qcom/cpr.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/soc/qcom/cpr.c b/drivers/soc/qcom/cpr.c index b1cf6879ab7a..8a281e6a9861 100644 --- a/drivers/soc/qcom/cpr.c +++ b/drivers/soc/qcom/cpr.c @@ -196,6 +196,7 @@ struct acc_desc { struct cpr_acc_desc { const struct cpr_desc *cpr_desc; const struct acc_desc *acc_desc; + const struct acc_desc *override_acc_desc; }; struct fuse_corner { @@ -1638,6 +1639,7 @@ static int cpr_probe(struct platform_device *pdev) const struct cpr_acc_desc *data; struct device_node *np; u32 cpr_rev = FUSE_REVISION_UNKNOWN; + u32 cpr_mem_acc; data = of_device_get_match_data(dev); if (!data || !data->cpr_desc || !data->acc_desc) @@ -1650,6 +1652,11 @@ static int cpr_probe(struct platform_device *pdev) drv->desc = data->cpr_desc; drv->acc_desc = data->acc_desc; + ret = nvmem_cell_read_variable_le_u32(drv->dev, "cpr_mem_acc", + &cpr_mem_acc); + if (!ret && cpr_mem_acc && data->override_acc_desc) + drv->acc_desc = data->override_acc_desc; + drv->fuse_corners = devm_kcalloc(dev, drv->desc->num_fuse_corners, sizeof(*drv->fuse_corners), GFP_KERNEL); |