Re: [PATCH v3 11/13] Documentation: devicetree: ufs: Add DT bindings for exynos UFS host controller

Arnd Bergmann
2015-10-01T11:37:52Z

On Thursday 01 October 2015 13:39:28 Alim Akhtar wrote:
> From: Seungwon Jeon <essuuj@gmail.com>
>
> This adds Exynos Universal Flash Storage (UFS) Host Controller DT bindings.
>
> Signed-off-by: Seungwon Jeon <essuuj@gmail.com>
> Signed-off-by: Alim Akhtar <alim.akhtar@samsung.com>
> ---
> .../devicetree/bindings/ufs/ufs-exynos.txt | 93 ++++++++++++++++++++
> 1 file changed, 93 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/ufs/ufs-exynos.txt
>
> diff --git a/Documentation/devicetree/bindings/ufs/ufs-exynos.txt b/Documentation/devicetree/bindings/ufs/ufs-exynos.txt
> new file mode 100644
> index 0000000..00df72e
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/ufs/ufs-exynos.txt
> @@ -0,0 +1,93 @@
> +* Exynos Universal Flash Storage (UFS) Host Controller
> +
> +UFSHC nodes are defined to describe on-chip UFS host controllers.
> +Each UFS controller instance should have its own node.
> +
> +Required properties:
> +- compatible : compatible name, contains "samsung,exynos7-ufs"
> +- interrupts : <interrupt mapping for UFS host controller IRQ>
> +- reg : <registers mapping>

This needs a list of all the register ranges, which order they are in
and what the respective strings must be.

> +- clocks : List of phandle and clock specifier pairs
> +- clock-names : List of clock input name strings sorted in the same
> + order as the clocks property.

You need to list the names you require here. Also the 'clock specifier' includes
the phandle, it's not a pair but just a list of specifiers.

> +- ufs,pwr-attr-mode : specifies mode value for power mode change
> +- ufs,pwr-attr-lane : specifies lane count value for power mode change
> +- ufs,pwr-attr-gear : specifies gear count value for power mode change
> +- ufs,pwr-attr-hs-series : specifies HS rate series for power mode change
> +- ufs,pwr-local-l2-timer : specifies array of local UNIPRO L2 timer values
> + <FC0ProtectionTimeOutVal,TC0ReplayTimeOutVal, AFC0ReqTimeOutVal>
> +- ufs,pwr-remote-l2-timer : specifies array of remote UNIPRO L2 timer values
> + <FC0ProtectionTimeOutVal,TC0ReplayTimeOutVal, AFC0ReqTimeOutVal>
> +- ufs-rx-adv-fine-gran-sup_en : specifies support of fine granularity of MPHY,
> + this is a boolean property.
> +- ufs-rx-adv-fine-gran-step : specifies granularity steps of MPHY
> +- ufs-rx-adv-min-activate-time-cap : specifies rx advanced minimum activate time of MPHY
> +- ufs-pa-granularity : specifies Granularity for PA_TActivate and PA_Hibern8Time
> +- ufs-pa-tacctivate : specifies time wake-up remote M-RX
> +- ufs-pa-hibern8time : specifies minimum time to wait in HIBERN8 state

These all require a specification of what the allowed values are and/or the units
for the numbers.

> +
> + clocks = <&core 0>, <&ref 0>, <&iface 0>;
> + clock-names = "core_clk", "ref_clk", "iface_clk";

Better rename them to "core", "ref" and "iface", no point requiring to
spell out "clk" here.

> + ufs,pwr-attr-mode = "FAST";

A string is rather unusual here, what are the allowed values? Could you
use a boolean property instead?

> + ufs,pwr-attr-lane = /bits/ 8 <2>;
> + ufs,pwr-attr-gear = /bits/ 8 <2>;

Why the "/bits/ 8" ?

Arnd