Skip to contentSkip to conversation

arm/imx6: convert clock to device tree

RFC PATCH New Rob Herring 2 participants 2 messages Nov 21, 2011 – Nov 22, 2011 1 message not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

RFC PATCH 1/1 arm/imx6: convert clock to device tree

Quoted 30 lines · Shawn Guo

It converts imx6 clock code to common clock frame and device tree.

---
As I promised to Arnd, I will convert imx6 clock code to common clock frame and in turn device tree. Here it is.

It's based on Mike's common-clk pre-v3 and Grant's clock device tree binding series.

Along with the conversion to device tree, I feel it's a great idea to introduce '#clock-cells'. With adopting it, I'm using 70 nodes to describe 110 clocks (~35% nodes reduced). However, the current design of '#clock-cells' makes the user a little difficult. For example, when a consumer node references to provider node which is a blob of 4 clocks, it has to fill 4 parameters into the phandle.

usdhc at 02198000 { /* uSDHC3 */

	compatible = "fsl,imx6q-usdhc";
	reg = <0x02198000 0x4000>;
	interrupts = <0 24 0x04>;
	clock-input = <&usdhc_clk 2 0 0 0>; <--
	clock-input-name = "usdhc3";
};

But we actually need to pass only one parameter to point out the index of the clock in the blob. It's a little silly to put a number of meaningless 0 there to fill the length of the phandle parameters. Can we rework the dt core code to make the following one work?

Quoted 7 lines

usdhc at 02198000 { /* uSDHC3 */

	compatible = "fsl,imx6q-usdhc";
	reg = <0x02198000 0x4000>;
	interrupts = <0 24 0x04>;
	clock-input = <&usdhc_clk 2>; <--
	clock-input-name = "usdhc3";
};

What you want is how it is supposed to work. Why do you think it is not this way?

Rob

#2 lore raw

RFC PATCH 1/1 arm/imx6: convert clock to device tree

Quoted 39 lines · Rob Herring
Quoted 30 lines · Shawn Guo

It converts imx6 clock code to common clock frame and device tree.

---
As I promised to Arnd, I will convert imx6 clock code to common clock frame and in turn device tree. Here it is.

It's based on Mike's common-clk pre-v3 and Grant's clock device tree binding series.

Along with the conversion to device tree, I feel it's a great idea to introduce '#clock-cells'. With adopting it, I'm using 70 nodes to describe 110 clocks (~35% nodes reduced). However, the current design of '#clock-cells' makes the user a little difficult. For example, when a consumer node references to provider node which is a blob of 4 clocks, it has to fill 4 parameters into the phandle.

usdhc at 02198000 { /* uSDHC3 */

	compatible = "fsl,imx6q-usdhc";
	reg = <0x02198000 0x4000>;
	interrupts = <0 24 0x04>;
	clock-input = <&usdhc_clk 2 0 0 0>; <--
	clock-input-name = "usdhc3";
};

But we actually need to pass only one parameter to point out the index of the clock in the blob. It's a little silly to put a number of meaningless 0 there to fill the length of the phandle parameters. Can we rework the dt core code to make the following one work?

Quoted 7 lines

usdhc at 02198000 { /* uSDHC3 */

	compatible = "fsl,imx6q-usdhc";
	reg = <0x02198000 0x4000>;
	interrupts = <0 24 0x04>;
	clock-input = <&usdhc_clk 2>; <--
	clock-input-name = "usdhc3";
};
Quoted 3 lines

What you want is how it is supposed to work. Why do you think it is not this way?

Looking at of_parse_phandle_with_args(), if we do not fill up these zeros, it will bail out as following.

		/*
		 * Make sure that the arguments actually fit in the
		 * remaining property data length
		 */
		if (list + count > list_end) {
			pr_debug("%s: insufficient arguments length\n",
				 np->full_name);
			goto err1;
		}

BTW, it seems the patch is too big to reach the mailing list. I will split it and repost.

Signature · 2 lines
Regards,
Shawn