With the introduction of f1d981eaecf8 ("PM / devfreq: Use the available min/max
frequency") the UFS host controller driver (UFSHCD) stopped probing for
platforms that supports frequency scaling, e.g. all modern Qualcomm platforms.
The cause of this was UFSHCD's reliance of not registering any frequencies and
then being called by devfreq to switch between the frequencies 0 and UINT_MAX.
The devfreq code implies that the client is able to pass the frequency table,
instead of relying on opp tables, but as concluded after v1 this is not
compliant with devfreq cooling, which will enable and disable opp entries in
order to limit the valid frequencies. So instead the UFSHCD driver is modified
to read the freq-table and register the first clock's two rates as the two
available opp levels.
This follows the first patch which facilitates the implementation of this in a
clean fashion, and removes the kernel panic which previously happened when
devfreq initialization failed.
With this UFS is once again functional on the db820c, and is needed to get UFS
working on SDM845 (both tested).
Added in v3 is the dts patch for Andy to introduce UFS in msm8996 and db820c,
now that it finally works again.
Bjorn Andersson (3):
scsi: ufs: Extract devfreq registration
scsi: ufs: Use freq table with devfreq
arm64: dts: qcom: msm8996: Add ufs related nodes
arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi | 8 ++
arch/arm64/boot/dts/qcom/msm8996.dtsi | 85 ++++++++++++++++++++
drivers/scsi/ufs/ufshcd.c | 76 +++++++++++++----
3 files changed, 154 insertions(+), 15 deletions(-)