OSDN Git Service

scsi: ufs: core: Read device property for ref clock
authorDaniil Lunev <dlunev@chromium.org>
Fri, 15 Jul 2022 11:03:53 +0000 (21:03 +1000)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 19 Jul 2022 03:04:12 +0000 (23:04 -0400)
commitca452621b82916a81ea0f10f9f0158815f3365d0
treec2ae5efdac5f1b69ac38598a5a346d70db2ca017
parent1e82e4627a795aa33af0309c8f526df09abad188
scsi: ufs: core: Read device property for ref clock

UFS storage devices require bRefClkFreq attribute to be set to operate
correctly at high speed mode. The necessary value is determined by what the
SoC / board supports. The standard doesn't specify a method to query the
value, so the information needs to be fed in separately.

DT information feeds into setting up the clock framework, so platforms
using DT can get the UFS reference clock frequency from the clock
framework. A special node "ref_clk" from the clock array for the UFS
controller node is used as the source for the information.

On the platforms that do not use DT (e.g. Intel), the alternative mechanism
to feed the intended reference clock frequency is necessary. Specifying the
necessary information in DSD of the UFS controller ACPI node is an
alternative mechanism proposed in this patch. Those can be accessed via
firmware property facility in the kernel and in many ways simillar to
querying properties defined in DT.

This patch introduces a small helper function to query a predetermined ACPI
supplied property of the UFS controller, and uses it to attempt retrieving
reference clock value, unless that was already done by the clock
infrastructure.

Link: https://lore.kernel.org/r/20220715210230.1.I365d113d275117dee8fd055ce4fc7e6aebd0bce9@changeid
Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Daniil Lunev <dlunev@chromium.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Documentation/scsi/ufs.rst
drivers/ufs/core/ufshcd.c