Commit 1724ae88 authored by Dhruva Gole's avatar Dhruva Gole Committed by Viresh Kumar
Browse files

cpufreq: ti-cpufreq: Allow backward compatibility for efuse syscon



The AM625 syscon for efuse was being taken earlier from the wkup_conf node
where the entire wkup_conf was marked as "syscon". This is wrong and will
be fixed in the devicetree. However, whenever that does happen will end up
breaking this driver for that device because of the change in efuse offset.

Hence, to avoid breaking any sort of backward compatibility of devicetrees
use a quirk to distinguish and accordingly use 0x0 offset for the new
syscon node.

Suggested-by: default avatarNishanth Menon <nm@ti.com>
Signed-off-by: default avatarDhruva Gole <d-gole@ti.com>
Reviewed-by: default avatarNishanth Menon <nm@ti.com>
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
parent ea1829d4
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -93,6 +93,8 @@ struct ti_cpufreq_soc_data {
	bool multi_regulator;
/* Backward compatibility hack: Might have missing syscon */
#define TI_QUIRK_SYSCON_MAY_BE_MISSING	0x1
/* Backward compatibility hack: new syscon size is 1 register wide */
#define TI_QUIRK_SYSCON_IS_SINGLE_REG	0x2
	u8 quirks;
};

@@ -318,6 +320,7 @@ static struct ti_cpufreq_soc_data am625_soc_data = {
	.efuse_shift = 0x6,
	.rev_offset = 0x0014,
	.multi_regulator = false,
	.quirks = TI_QUIRK_SYSCON_IS_SINGLE_REG,
};

static struct ti_cpufreq_soc_data am62a7_soc_data = {
@@ -354,6 +357,10 @@ static int ti_cpufreq_get_efuse(struct ti_cpufreq_data *opp_data,

	ret = regmap_read(opp_data->syscon, opp_data->soc_data->efuse_offset,
			  &efuse);

	if (opp_data->soc_data->quirks & TI_QUIRK_SYSCON_IS_SINGLE_REG && ret == -EIO)
		ret = regmap_read(opp_data->syscon, 0x0, &efuse);

	if (opp_data->soc_data->quirks & TI_QUIRK_SYSCON_MAY_BE_MISSING && ret == -EIO) {
		/* not a syscon register! */
		void __iomem *regs = ioremap(OMAP3_SYSCON_BASE +