cpufreq: ti-cpufreq: add support for omap34xx and omap36xx
authorH. Nikolaus Schaller <hns@goldelico.com>
Wed, 11 Sep 2019 17:47:07 +0000 (19:47 +0200)
committerViresh Kumar <viresh.kumar@linaro.org>
Thu, 10 Oct 2019 10:41:50 +0000 (16:11 +0530)
commitb4bc9f9e27edd8de76d44675c8f0c6c2ccb6b22c
tree2aaa82d92c1ba008ac398b4f282fb033afeea20b
parent54ecb8f7028c5eb3d740bb82b0f1d90f2df63c5c
cpufreq: ti-cpufreq: add support for omap34xx and omap36xx

This adds code and tables to read the silicon revision and
eFuse (speed binned / 720 MHz grade) bits for selecting
opp-v2 table entries.

Since these bits are not always part of the syscon register
range (like for am33xx, am43, dra7), we add code to directly
read the register values using ioremap() if syscon access fails.

The format of the opp-supported-hw entries is that it has
two 32 bit bitfields. E.g.:

opp-supported-hw = <0xffffffff 3>

The first value is matched against the bit position of the
silicon revision which is (see TRM)

omap34xx:
BIT(0) ES1.0
BIT(1) ES2.0
BIT(2) ES2.1
BIT(3) ES3.0
BIT(4) ES3.1
BIT(7) ES3.1.2

omap36xx:
BIT(0) ES1.0
BIT(1) ES1.1
BIT(2) ES1.2

The second value is matched against the speed grade eFuse:

BIT(0) no high speed OPP
BIT(1) high speed OPP

This means for the example above that it is always enabled
while e.g.

opp-supported-hw = <0x1 2>

enables the OPP only for ES1.0 BIT(0) and if the high speed
eFuse is set BIT(1).

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Reviewed-by: Tony Lindgren <tony@atomide.com>
Tested-by: Adam Ford <aford173@gmail.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/cpufreq/ti-cpufreq.c