100 lines
3.3 KiB
Plaintext
100 lines
3.3 KiB
Plaintext
Cirrus Logic Madera class audio codecs pinctrl driver
|
|
|
|
The Cirrus Logic Madera codecs provide a number of GPIO functions for
|
|
interfacing to external hardware and to provide logic outputs to other devices.
|
|
Certain groups of GPIO pins also have an alternate function, normally as an
|
|
audio interface.
|
|
|
|
The set of available GPIOs, functions and alternate function groups differs
|
|
between codecs so refer to the datasheet for the codec for further information
|
|
on what is supported on that device.
|
|
|
|
The properties for this driver exist within the parent MFD driver node.
|
|
|
|
See also
|
|
the core bindings for the parent MFD driver:
|
|
Documentation/devicetree/bindings/mfd/madera.txt
|
|
|
|
the generic pinmix bindings:
|
|
Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
|
|
|
|
Required properties of parent mfd node:
|
|
- pinctrl-names : must be "default"
|
|
- pinctrl-0 : a phandle to the node containing the subnodes containing default
|
|
configurations
|
|
|
|
Required subnodes:
|
|
One subnode is required to contain the default settings. It contains an
|
|
arbitrary number of configuration subnodes, one for each group or pin
|
|
configuration you want to apply as a default.
|
|
|
|
Required properties of configuration subnodes:
|
|
- groups : name of one pin group to configure. One of:
|
|
aif1, aif2, aif3, aif4, mif1, mif2, mif3, pdmspk1, pdmspk2,
|
|
dmic4, dmic5, dmic6,
|
|
gpio1, gpio2, ..., gpio40
|
|
The gpioN groups select the single pin of this name for configuration
|
|
|
|
Optional properties of configuration subnodes:
|
|
Any configuration option not explicitly listed in the dts will be left at
|
|
chip default setting.
|
|
|
|
- function : name of function to assign to this group. One of:
|
|
aif1, aif2, aif3, aif4, mif1, mif2, mif3, pdmspk1, pdmspk2,
|
|
dmic3, dmic4, dmic5, dmic6,
|
|
io, dsp-gpio, irq1, irq2,
|
|
fll1-clk, fll1-lock, fll2-clk, fll2-lock, fll3-clk, fll3-lock,
|
|
fllao-clk, fllao-lock,
|
|
opclk, opclk-async, pwm1, pwm2, spdif,
|
|
asrc1-in1-lock, asrc1-in2-lock, asrc2-in1-lock, asrc2-in2-lock,
|
|
spkl-short-circuit, spkr-short-circuit, spk-shutdown,
|
|
spk-overheat-shutdown, spk-overheat-warn,
|
|
timer1-sts, timer2-sts, timer3-sts, timer4-sts, timer5-sts, timer6-sts,
|
|
timer7-sts, timer8-sts,
|
|
log1-fifo-ne, log2-fifo-ne, log3-fifo-ne, log4-fifo-ne, log5-fifo-ne,
|
|
log6-fifo-ne, log7-fifo-ne, log8-fifo-ne,
|
|
|
|
- bias-disable : disable pull-up and pull-down
|
|
- bias-bus-hold : enable buskeeper
|
|
- bias-pull-up : output is pulled-up
|
|
- bias-pull-down : output is pulled-down
|
|
- drive-push-pull : CMOS output
|
|
- drive-open-drain : open-drain output
|
|
- drive-strength : drive strength in mA. Valid values are 4 or 8
|
|
- input-schmitt-enable : enable schmitt-trigger mode
|
|
- input-schmitt-disable : disable schmitt-trigger mode
|
|
- input-debounce : A value of 0 disables debounce, a value !=0 enables
|
|
debounce
|
|
- output-low : set the pin to output mode with low level
|
|
- output-high : set the pin to output mode with high level
|
|
|
|
Example:
|
|
|
|
cs47l85@0 {
|
|
compatible = "cirrus,cs47l85";
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&cs47l85_defaults>;
|
|
|
|
cs47l85_defaults: cs47l85-gpio-defaults {
|
|
aif1 {
|
|
groups = "aif1";
|
|
function = "aif1";
|
|
bias-bus-hold;
|
|
};
|
|
|
|
aif2 {
|
|
groups = "aif2";
|
|
function = "aif2";
|
|
bias-bus-hold;
|
|
};
|
|
|
|
opclk {
|
|
groups = "gpio1";
|
|
function = "opclk";
|
|
bias-pull-up;
|
|
drive-strength = <8>;
|
|
};
|
|
};
|
|
};
|