Re: [PATCH v8 6/8] scsi: ufs: make the UFS variant a platform device
On Sun, Oct 25, 2015 at 5:50 AM, Yaniv Gardi wrote: > This change turns the UFS variant (SCSI_UFS_QCOM) into a UFS > a platform device. > In order to do so a few additional changes are required: > 1. The ufshcd-pltfrm is no longer serves as a platform device. >Now it only serves as a group of platform APIs such as PM APIs >(runtime suspend/resume, system suspend/resume etc), parsers of >clocks, regulators and pm_levels from DT. > 2. What used to be the old platform "probe" is now "only" >a pltfrm_init() routine, that does exactly the same, but only >being called by the new probe function of the UFS variant. > > Signed-off-by: Yaniv Gardi I already gave you a reviewed-by, so please include them when posting new versions. (But no need to repost just to add them). Rob > > --- > Documentation/devicetree/bindings/ufs/ufs-qcom.txt | 58 + > .../devicetree/bindings/ufs/ufshcd-pltfrm.txt | 11 ++- > drivers/scsi/ufs/ufs-qcom.c| 62 +- > drivers/scsi/ufs/ufshcd-pltfrm.c | 98 > ++ > drivers/scsi/ufs/ufshcd-pltfrm.h | 41 + > drivers/scsi/ufs/ufshcd.c | 10 +++ > drivers/scsi/ufs/ufshcd.h | 1 + > 7 files changed, 207 insertions(+), 74 deletions(-) > create mode 100644 Documentation/devicetree/bindings/ufs/ufs-qcom.txt > create mode 100644 drivers/scsi/ufs/ufshcd-pltfrm.h > > diff --git a/Documentation/devicetree/bindings/ufs/ufs-qcom.txt > b/Documentation/devicetree/bindings/ufs/ufs-qcom.txt > new file mode 100644 > index 000..070baf4 > --- /dev/null > +++ b/Documentation/devicetree/bindings/ufs/ufs-qcom.txt > @@ -0,0 +1,58 @@ > +* Qualcomm Technologies Inc Universal Flash Storage (UFS) PHY > + > +UFSPHY nodes are defined to describe on-chip UFS PHY hardware macro. > +Each UFS PHY node should have its own node. > + > +To bind UFS PHY with UFS host controller, the controller node should > +contain a phandle reference to UFS PHY node. > + > +Required properties: > +- compatible: compatible list, contains "qcom,ufs-phy-qmp-20nm" > + or "qcom,ufs-phy-qmp-14nm" according to the relevant > phy in use. > +- reg : should contain PHY register address space (mandatory), > +- reg-names : indicates various resources passed to driver (via reg > proptery) by name. > + Required "reg-names" is "phy_mem". > +- #phy-cells: This property shall be set to 0 > +- vdda-phy-supply : phandle to main PHY supply for analog domain > +- vdda-pll-supply : phandle to PHY PLL and Power-Gen block power supply > +- 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. "ref_clk_src", "ref_clk", > + "tx_iface_clk" & "rx_iface_clk" are mandatory but > + "ref_clk_parent" is optional > + > +Optional properties: > +- vdda-phy-max-microamp : specifies max. load that can be drawn from phy > supply > +- vdda-pll-max-microamp : specifies max. load that can be drawn from pll > supply > +- vddp-ref-clk-supply : phandle to UFS device ref_clk pad power supply > +- vddp-ref-clk-max-microamp : specifies max. load that can be drawn from > this supply > +- vddp-ref-clk-always-on : specifies if this supply needs to be kept always > on > + > +Example: > + > + ufsphy1: ufsphy@0xfc597000 { > + compatible = "qcom,ufs-phy-qmp-20nm"; > + reg = <0xfc597000 0x800>; > + reg-names = "phy_mem"; > + #phy-cells = <0>; > + vdda-phy-supply = <&pma8084_l4>; > + vdda-pll-supply = <&pma8084_l12>; > + vdda-phy-max-microamp = <5>; > + vdda-pll-max-microamp = <1000>; > + clock-names = "ref_clk_src", > + "ref_clk_parent", > + "ref_clk", > + "tx_iface_clk", > + "rx_iface_clk"; > + clocks = <&clock_rpm clk_ln_bb_clk>, > + <&clock_gcc clk_pcie_1_phy_ldo >, > + <&clock_gcc clk_ufs_phy_ldo>, > + <&clock_gcc clk_gcc_ufs_tx_cfg_clk>, > + <&clock_gcc clk_gcc_ufs_rx_cfg_clk>; > + }; > + > + ufshc@0xfc598000 { > + ... > + phys = <&ufsphy1>; > + phy-names = "ufsphy"; > + }; > diff --git a/Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt > b/Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt > index 5357919..03c0e98 100644 > --- a/Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt > +++ b/Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt > @@ -4,11 +4,18 @@ UFSHC nodes are defined to describe on-chip UFS host > controllers. > Each UFS
Re: [PATCH v8 6/8] scsi: ufs: make the UFS variant a platform device
Reviewed-by: Gilad Broner > This change turns the UFS variant (SCSI_UFS_QCOM) into a UFS > a platform device. > In order to do so a few additional changes are required: > 1. The ufshcd-pltfrm is no longer serves as a platform device. >Now it only serves as a group of platform APIs such as PM APIs >(runtime suspend/resume, system suspend/resume etc), parsers of >clocks, regulators and pm_levels from DT. > 2. What used to be the old platform "probe" is now "only" >a pltfrm_init() routine, that does exactly the same, but only >being called by the new probe function of the UFS variant. > > Signed-off-by: Yaniv Gardi > > --- > Documentation/devicetree/bindings/ufs/ufs-qcom.txt | 58 + > .../devicetree/bindings/ufs/ufshcd-pltfrm.txt | 11 ++- > drivers/scsi/ufs/ufs-qcom.c| 62 +- > drivers/scsi/ufs/ufshcd-pltfrm.c | 98 > ++ > drivers/scsi/ufs/ufshcd-pltfrm.h | 41 + > drivers/scsi/ufs/ufshcd.c | 10 +++ > drivers/scsi/ufs/ufshcd.h | 1 + > 7 files changed, 207 insertions(+), 74 deletions(-) > create mode 100644 Documentation/devicetree/bindings/ufs/ufs-qcom.txt > create mode 100644 drivers/scsi/ufs/ufshcd-pltfrm.h > > diff --git a/Documentation/devicetree/bindings/ufs/ufs-qcom.txt > b/Documentation/devicetree/bindings/ufs/ufs-qcom.txt > new file mode 100644 > index 000..070baf4 > --- /dev/null > +++ b/Documentation/devicetree/bindings/ufs/ufs-qcom.txt > @@ -0,0 +1,58 @@ > +* Qualcomm Technologies Inc Universal Flash Storage (UFS) PHY > + > +UFSPHY nodes are defined to describe on-chip UFS PHY hardware macro. > +Each UFS PHY node should have its own node. > + > +To bind UFS PHY with UFS host controller, the controller node should > +contain a phandle reference to UFS PHY node. > + > +Required properties: > +- compatible: compatible list, contains "qcom,ufs-phy-qmp-20nm" > + or "qcom,ufs-phy-qmp-14nm" according to the relevant phy > in use. > +- reg : should contain PHY register address space > (mandatory), > +- reg-names : indicates various resources passed to driver (via > reg proptery) by name. > + Required "reg-names" is "phy_mem". > +- #phy-cells: This property shall be set to 0 > +- vdda-phy-supply : phandle to main PHY supply for analog domain > +- vdda-pll-supply : phandle to PHY PLL and Power-Gen block power supply > +- 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. "ref_clk_src", "ref_clk", > + "tx_iface_clk" & "rx_iface_clk" are mandatory but > + "ref_clk_parent" is optional > + > +Optional properties: > +- vdda-phy-max-microamp : specifies max. load that can be drawn from phy > supply > +- vdda-pll-max-microamp : specifies max. load that can be drawn from pll > supply > +- vddp-ref-clk-supply : phandle to UFS device ref_clk pad power supply > +- vddp-ref-clk-max-microamp : specifies max. load that can be drawn from > this supply > +- vddp-ref-clk-always-on : specifies if this supply needs to be kept > always on > + > +Example: > + > + ufsphy1: ufsphy@0xfc597000 { > + compatible = "qcom,ufs-phy-qmp-20nm"; > + reg = <0xfc597000 0x800>; > + reg-names = "phy_mem"; > + #phy-cells = <0>; > + vdda-phy-supply = <&pma8084_l4>; > + vdda-pll-supply = <&pma8084_l12>; > + vdda-phy-max-microamp = <5>; > + vdda-pll-max-microamp = <1000>; > + clock-names = "ref_clk_src", > + "ref_clk_parent", > + "ref_clk", > + "tx_iface_clk", > + "rx_iface_clk"; > + clocks = <&clock_rpm clk_ln_bb_clk>, > + <&clock_gcc clk_pcie_1_phy_ldo >, > + <&clock_gcc clk_ufs_phy_ldo>, > + <&clock_gcc clk_gcc_ufs_tx_cfg_clk>, > + <&clock_gcc clk_gcc_ufs_rx_cfg_clk>; > + }; > + > + ufshc@0xfc598000 { > + ... > + phys = <&ufsphy1>; > + phy-names = "ufsphy"; > + }; > diff --git a/Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt > b/Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt > index 5357919..03c0e98 100644 > --- a/Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt > +++ b/Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt > @@ -4,11 +4,18 @@ UFSHC nodes are defined to describe on-chip UFS host > controllers. > Each UFS controller instance should have its own node. > > Required properties: > -- compatible: compatible list, contains "jedec,ufs-1.1" > +- compatible : must contain "jedec,ufs-1.1", may also list one or > more