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>;
		};
	};
};
