pinctrl: madera: Move binding over to dtschema

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Rob Herring <robh@kernel.org>
This commit is contained in:
Charles Keepax 2020-05-13 10:57:19 +01:00 committed by Rob Herring
parent 8b3f0ed9e0
commit 067243bab9
2 changed files with 122 additions and 99 deletions

View File

@ -1,99 +0,0 @@
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>;
};
};
};

View File

@ -0,0 +1,122 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/pinctrl/cirrus,madera.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Cirrus Logic Madera class audio CODECs pinctrl driver
maintainers:
- patches@opensource.cirrus.com
description: |
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/cirrus,madera.yaml
And the generic pinmix bindings:
Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
properties:
pinctrl-0:
description:
A phandle to the node containing the subnodes containing default
configurations.
pinctrl-names:
description:
A pinctrl state named "default" must be defined.
const: default
pin-settings:
description:
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.
type: object
patternProperties:
'-pins$':
type: object
allOf:
- $ref: "pincfg-node.yaml#"
- $ref: "pinmux-node.yaml#"
properties:
groups:
description:
Name of one pin group to configure.
enum: [ aif1, aif2, aif3, aif4, mif1, mif2, mif3, pdmspk1,
pdmspk2, dmic4, dmic5, dmic6, gpio1, gpio2, gpio3,
gpio4, gpio5, gpio6, gpio7, gpio7, gpio8, gpio9,
gpio10, gpio11, gpio12, gpio13, gpio14, gpio15,
gpio16, gpio17, gpio17, gpio18, gpio19, gpio20,
gpio21, gpio22, gpio23, gpio24, gpio25, gpio26,
gpio27, gpio27, gpio28, gpio29, gpio30, gpio31,
gpio32, gpio33, gpio34, gpio35, gpio36, gpio37,
gpio37, gpio38, gpio39 ]
function:
description:
Name of function to assign to this group.
enum: [ 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: true
bias-bus-hold: true
bias-pull-up: true
bias-pull-down: true
drive-push-pull: true
drive-open-drain: true
drive-strength:
enum: [ 4, 8 ]
input-schmitt-enable: true
input-schmitt-disable: true
input-debounce: true
output-low: true
output-high: true
additionalProperties: false
required:
- groups
additionalProperties: false
required:
- pinctrl-0
- pinctrl-names