110 lines
2.1 KiB
Plaintext
110 lines
2.1 KiB
Plaintext
|
CSR SiRFatlas7 pinmux controller
|
||
|
|
||
|
Required properties:
|
||
|
- compatible : "sirf,atlas7-ioc"
|
||
|
- reg : Address range of the pinctrl registers
|
||
|
|
||
|
For example, pinctrl might have properties like the following:
|
||
|
pinctrl: ioc@18880000 {
|
||
|
compatible = "sirf,atlas7-ioc";
|
||
|
reg = <0x18880000 0x1000>;
|
||
|
|
||
|
a_ac97_pmx: ac97@0 {
|
||
|
ac97 {
|
||
|
groups = "audio_ac97_grp";
|
||
|
function = "audio_ac97";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
...
|
||
|
|
||
|
sd2_pmx: sd2@0 {
|
||
|
sd2 {
|
||
|
groups = "sd2_grp0";
|
||
|
function = "sd2";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
...
|
||
|
|
||
|
|
||
|
sample0_cfg: sample0@0 {
|
||
|
sample0 {
|
||
|
pins = "ldd_0", "ldd_1";
|
||
|
bias-pull-up;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
sample1_cfg: sample1@0 {
|
||
|
sample1 {
|
||
|
pins = "ldd_2", "ldd_3";
|
||
|
input-schmitt-enable;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
sample2_cfg: sample2@0 {
|
||
|
sample2 {
|
||
|
groups = "uart4_nopause_grp";
|
||
|
bias-pull-down;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
sample3_cfg: sample3@0 {
|
||
|
sample3 {
|
||
|
pins = "ldd_4", "ldd_5";
|
||
|
drive-strength = <2>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
Please refer to pinctrl-bindings.txt in this directory for details of the common
|
||
|
pinctrl bindings used by client devices.
|
||
|
|
||
|
SiRFatlas7's pinmux nodes act as a container for an abitrary number of subnodes.
|
||
|
Each of these subnodes represents some desired configuration for a group of pins.
|
||
|
|
||
|
Required subnode-properties:
|
||
|
- groups : An array of strings. Each string contains the name of a group.
|
||
|
- function: A string containing the name of the function to mux to the
|
||
|
group.
|
||
|
|
||
|
Valid values for group and function names can be found from looking at the
|
||
|
group and function arrays in driver files:
|
||
|
drivers/pinctrl/pinctrl-sirf.c
|
||
|
|
||
|
For example, pinctrl might have subnodes like the following:
|
||
|
sd0_pmx: sd0@0 {
|
||
|
sd0 {
|
||
|
groups = "sd0_grp";
|
||
|
function = "sd0";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
sd1_pmx0: sd1@0 {
|
||
|
sd1 {
|
||
|
groups = "sd1_grp0";
|
||
|
function = "sd1_m0";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
sd1_pmx1: sd1@1 {
|
||
|
sd1 {
|
||
|
groups = "sd1_grp1";
|
||
|
function = "sd1_m1";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
For a specific board, if it wants to use sd1,
|
||
|
it can add the following to its board-specific .dts file.
|
||
|
sd1: sd@12340000 {
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&sd1_pmx0>;
|
||
|
}
|
||
|
|
||
|
or
|
||
|
|
||
|
sd1: sd@12340000 {
|
||
|
pinctrl-names = "default";
|
||
|
pinctrl-0 = <&sd1_pmx1>;
|
||
|
}
|