From: Hanjun Guo <hanjun.guo@xxxxxxxxxx> Add hisi timer specific erratum fixes. v3: add hisilicon erratum 161601 for ACPI mode. Signed-off-by: Hanjun Guo <hanjun.guo@xxxxxxxxxx> Signed-off-by: Ding Tianhong <dingtianhong@xxxxxxxxxx> --- drivers/clocksource/arm_arch_timer.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c index 9bc93e5..270d179 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c @@ -1078,10 +1078,26 @@ struct gtdt_arch_timer_fixup { u32 erratum; }; +#ifdef CONFIG_HISILICON_ERRATUM_161601 +static void __init erratum_workaround_enable(u32 erratum) +{ + if (erratum & HISILICON_161601) { + timer_unstable_counter_workaround = &arch_timer_hisi_161601; + static_branch_enable(&arch_timer_read_ool_enabled); + pr_info("Enabling workaround for HISILICON ERRATUM 161601\n"); + } +} +#endif + /* note: this needs to be updated according to the doc of OEM ID * and TABLE ID for different board. */ struct gtdt_arch_timer_fixup arch_timer_quirks[] __initdata = { +#ifdef CONFIG_HISILICON_ERRATUM_161601 + {"HISI", "hip05", 0, &erratum_workaround_enable, HISILICON_161601}, + {"HISI", "hip06", 0, &erratum_workaround_enable, HISILICON_161601}, + {"HISI", "hip07", 0, &erratum_workaround_enable, HISILICON_161601}, +#endif }; void __init arch_timer_acpi_quirks_handler(char *oem_id, -- 1.9.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html