Thread (54 messages) 54 messages, 7 authors, 2012-01-27

RE: Pinmux bindings proposal

From: Dong Aisheng-B29396 <hidden>
Date: 2012-01-18 03:45:07
Also in: linux-arm-kernel, lkml

....
quoted
quoted
It may worth introducing
another level phandle reference.  Something like the following:

	pinmux_sdhci: pinmux-sdhci {
		mux =
			<&tegra_pmx TEGRA_PMX_PG_DTA TEGRA_PMX_MUX_1>
			<&tegra_pmx TEGRA_PMX_PG_DTD TEGRA_PMX_MUX_1>;
	};

	pinconf_sdhci_active: pinconf-sdhci-active {
		config =
			<&tegra_pmx TEGRA_PMX_PG_DTA TEGRA_PMX_CONF_DRIVE_STRENGTH 5>
			<&tegra_pmx TEGRA_PMX_PG_DTD TEGRA_PMX_CONF_DRIVE_STRENGTH 5>
			<&tegra_pmx TEGRA_PMX_PG_DTA TEGRA_PMX_CONF_SLEW_RATE 4>
			<&tegra_pmx TEGRA_PMX_PG_DTD TEGRA_PMX_CONF_SLEW_RATE 8>;
	};

	pinconf_sdhci_suspend: pinconf-sdhci-suspend {
		config =
			<&tegra_pmx TEGRA_PMX_PG_DTA TEGRA_PMX_CONF_TRISTATE 1>
			<&tegra_pmx TEGRA_PMX_PG_DTD TEGRA_PMX_CONF_TRISTATE 1>
			<&tegra_pmx TEGRA_PMX_PG_DTA TEGRA_PMX_CONF_DRIVE_STRENGTH 5>
			<&tegra_pmx TEGRA_PMX_PG_DTD TEGRA_PMX_CONF_DRIVE_STRENGTH 5>
			<&tegra_pmx TEGRA_PMX_PG_DTA TEGRA_PMX_CONF_SLEW_RATE 4>
			<&tegra_pmx TEGRA_PMX_PG_DTD TEGRA_PMX_CONF_SLEW_RATE 8>;
	};
The config makes sense to me.
The only question is how to get group name to match with the predefined groups.
I still incline to say there should not be any predefined groups for DT case, if
we choose to find the group in use only when pinmux_get() gets called. 
Then we have too issue I said before:
1) Inconsistent issue
sysfs pinmux map entry has different meaning
2) need to change the pinmux_maps from arrays to list for better to dynamically
Insert the new created pinmux map detected.
But this does affect the non-dt case a lot.
Even if
you insist to have a global scanning on device tree for all groups to create the
pinmux mapping table, those predefined groups can only be created by your
scanning code, 
The predefined groups and functions are in soc.dts file and will be parsed
Independently with the pinmux map table creation.
so you should know how the name comes from device tree, and you
should be able to recreate the name when you are trying to matching the name in
the table you created before.
quoted
Besides per pin group configuration support, we may also want per pin
configuration Support as the latest patch sent by Linus.
http://www.spinics.net/lists/arm-kernel/msg155712.html
This binding proposal has covered both pin and group configuration, as the
second parameter of 'config' property could be either a pin or group which
depends the on whether the configurable entity at HW level is a pin or group.
The pinctrl driver does not know if it's group or pin.
We may find a way to identify it.
...
quoted
quoted
quoted
If "muxable entities" is pins on IMX, I'm wondering how we define
the predefined Functions and groups or if we still need to do that.
Let's put this in the example below.

	pinmux_usdhc1: pinmux-usdhc1 {
		mux = <IMX6Q_PAD_SD1_DAT1 0>
		      <IMX6Q_PAD_SD1_DAT2 0>
		      ...
	};
Yes, I agree.
And in this way we're still using virtual groups.
It has no big difference as we did before like:
pinmux-groups {
        uart4grp: group@0 {
                grp-name = "uart4grp";
                grp-pins = <107 108>;
                grp-mux = <4 4>;
        };

        sd4grp: group@1 {
                grp-name = "sd4grp";
                grp-pins = <170 171 180 181 182 183 184 185 186 187>;
                grp-mux = <0 0 1 1 1 1 1 1 1 1>;
        };
};
You are right.  They are fundamentally same and just in different format.
quoted
The real problem is do we need to support individual pin mux Or still
using virtual pin group?
For the way Stephen proposed, we can only support individual pin mux
Since IMX pins are not grouped together in HW.
I do not see any problem here.  If you look at the first column of 'mux'
property of node pinmux-usdhc1, it is a group of pins for usdhc1.
Isn't it one virtual pin group for usdhc1?
If we treat the whole pins in 'mux' property as a group,
There may be potential inconsistent issue since Tegra will treat each
One in the list of 'mux' as a group.
And it would be a problem for pinctrl core to parse it in a standard way.

Regards
Dong Aisheng
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help