On 30.04.2019 20:35, Aisheng Dong wrote: > MX8QM and MX8QXP LPCG Clocks are mostly the same except they may reside > in different subsystems across CPUs and also vary a bit on the availability. > > Same as SCU clock, we want to move the clock definition into device tree > which can fully decouple the dependency of Clock ID definition from device > tree and make us be able to write a fully generic lpcg clock driver. > > And we can also use the existence of clock nodes in device tree to address > the device and clock availability differences across different SoCs. > > diff --git a/Documentation/devicetree/bindings/clock/imx8qxp-lpcg.txt b/Documentation/devicetree/bindings/clock/imx8qxp-lpcg.txt > > Required properties: > +- compatible: Should be one of: > + "fsl,imx8qxp-lpcg" > + "fsl,imx8qm-lpcg" followed by "fsl,imx8qxp-lpcg". > +- reg: Address and length of the register set. > +- #clock-cells: Should be 1. One LPCG supports multiple clocks. > +- clocks: Input parent clocks phandle array for each clock. > +- bit-offset: An integer array indicating the bit offset for each clock. > +- hw-autogate: Boolean array indicating whether supports HW autogate for > + each clock. > +- clock-output-names: Shall be the corresponding names of the outputs. > + NOTE this property must be specified in the same order > + as the clock bit-offset and hw-autogate property. Splitting the LPCG areas is good but describing "bit-offset" and similar inside devicetree seems excessively generic. Perhaps we could have many smaller imx8qxp-lpcg-sdhc, imx8qxp-lpcg-enet etc where the actual clks inside each node are still defined in driver code. > usdhc1: mmc@5b010000 { > @@ -44,8 +66,8 @@ usdhc1: mmc@5b010000 { > interrupt-parent = <&gic>; > interrupts = <GIC_SPI 232 IRQ_TYPE_LEVEL_HIGH>; > reg = <0x5b010000 0x10000>; > - clocks = <&conn_lpcg IMX8QXP_CONN_LPCG_SDHC0_IPG_CLK>, > - <&conn_lpcg IMX8QXP_CONN_LPCG_SDHC0_PER_CLK>, > - <&conn_lpcg IMX8QXP_CONN_LPCG_SDHC0_HCLK>; > + clocks = <&sdhc0_lpcg 1>, > + <&sdhc0_lpcg 0>, > + <&sdhc0_lpcg 2>; This is less readable, can't we keep symbolic constants?