xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/pinctrl/pinctrl-atlas7.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunCSR SiRFatlas7 pinmux controller
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunRequired properties:
4*4882a593Smuzhiyun- compatible	: "sirf,atlas7-ioc"
5*4882a593Smuzhiyun- reg		: Address range of the pinctrl registers
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunFor example, pinctrl might have properties like the following:
8*4882a593Smuzhiyun	pinctrl: ioc@18880000 {
9*4882a593Smuzhiyun			compatible = "sirf,atlas7-ioc";
10*4882a593Smuzhiyun			reg = <0x18880000 0x1000>;
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun			a_ac97_pmx: ac97@0 {
13*4882a593Smuzhiyun				ac97 {
14*4882a593Smuzhiyun					groups = "audio_ac97_grp";
15*4882a593Smuzhiyun					function = "audio_ac97";
16*4882a593Smuzhiyun				};
17*4882a593Smuzhiyun			};
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun			...
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun			sd2_pmx: sd2@0 {
22*4882a593Smuzhiyun				sd2 {
23*4882a593Smuzhiyun					groups = "sd2_grp0";
24*4882a593Smuzhiyun					function = "sd2";
25*4882a593Smuzhiyun				};
26*4882a593Smuzhiyun			};
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun			...
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun			sample0_cfg: sample0@0 {
32*4882a593Smuzhiyun				sample0 {
33*4882a593Smuzhiyun					pins = "ldd_0", "ldd_1";
34*4882a593Smuzhiyun					bias-pull-up;
35*4882a593Smuzhiyun				};
36*4882a593Smuzhiyun			};
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun			sample1_cfg: sample1@0 {
39*4882a593Smuzhiyun				sample1 {
40*4882a593Smuzhiyun					pins = "ldd_2", "ldd_3";
41*4882a593Smuzhiyun					input-schmitt-enable;
42*4882a593Smuzhiyun				};
43*4882a593Smuzhiyun			};
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun			sample2_cfg: sample2@0 {
46*4882a593Smuzhiyun				sample2 {
47*4882a593Smuzhiyun					groups = "uart4_nopause_grp";
48*4882a593Smuzhiyun					bias-pull-down;
49*4882a593Smuzhiyun				};
50*4882a593Smuzhiyun			};
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun			sample3_cfg: sample3@0 {
53*4882a593Smuzhiyun				sample3 {
54*4882a593Smuzhiyun					pins = "ldd_4", "ldd_5";
55*4882a593Smuzhiyun					drive-strength = <2>;
56*4882a593Smuzhiyun				};
57*4882a593Smuzhiyun			};
58*4882a593Smuzhiyun	};
59*4882a593Smuzhiyun
60*4882a593SmuzhiyunPlease refer to pinctrl-bindings.txt in this directory for details of the common
61*4882a593Smuzhiyunpinctrl bindings used by client devices.
62*4882a593Smuzhiyun
63*4882a593SmuzhiyunSiRFatlas7's pinmux nodes act as a container for an arbitrary number of subnodes.
64*4882a593SmuzhiyunEach of these subnodes represents some desired configuration for a group of pins.
65*4882a593Smuzhiyun
66*4882a593SmuzhiyunRequired subnode-properties:
67*4882a593Smuzhiyun- groups : An array of strings. Each string contains the name of a group.
68*4882a593Smuzhiyun- function: A string containing the name of the function to mux to the
69*4882a593Smuzhiyun  group.
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun  Valid values for group and function names can be found from looking at the
72*4882a593Smuzhiyun  group and function arrays in driver files:
73*4882a593Smuzhiyun  drivers/pinctrl/pinctrl-sirf.c
74*4882a593Smuzhiyun
75*4882a593SmuzhiyunFor example, pinctrl might have subnodes like the following:
76*4882a593Smuzhiyun	sd0_pmx: sd0@0 {
77*4882a593Smuzhiyun		sd0 {
78*4882a593Smuzhiyun			groups = "sd0_grp";
79*4882a593Smuzhiyun			function = "sd0";
80*4882a593Smuzhiyun		};
81*4882a593Smuzhiyun	};
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun	sd1_pmx0: sd1@0 {
84*4882a593Smuzhiyun		sd1 {
85*4882a593Smuzhiyun			groups = "sd1_grp0";
86*4882a593Smuzhiyun			function = "sd1_m0";
87*4882a593Smuzhiyun		};
88*4882a593Smuzhiyun	};
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun	sd1_pmx1: sd1@1 {
91*4882a593Smuzhiyun		sd1 {
92*4882a593Smuzhiyun			groups = "sd1_grp1";
93*4882a593Smuzhiyun			function = "sd1_m1";
94*4882a593Smuzhiyun		};
95*4882a593Smuzhiyun	};
96*4882a593Smuzhiyun
97*4882a593SmuzhiyunFor a specific board, if it wants to use sd1,
98*4882a593Smuzhiyunit can add the following to its board-specific .dts file.
99*4882a593Smuzhiyunsd1: sd@12340000 {
100*4882a593Smuzhiyun	pinctrl-names = "default";
101*4882a593Smuzhiyun	pinctrl-0 = <&sd1_pmx0>;
102*4882a593Smuzhiyun}
103*4882a593Smuzhiyun
104*4882a593Smuzhiyunor
105*4882a593Smuzhiyun
106*4882a593Smuzhiyunsd1: sd@12340000 {
107*4882a593Smuzhiyun	pinctrl-names = "default";
108*4882a593Smuzhiyun	pinctrl-0 = <&sd1_pmx1>;
109*4882a593Smuzhiyun}
110