mirror of
https://github.com/torvalds/linux.git
synced 2024-12-25 20:32:22 +00:00
ff10e353a4
Add support for the drive strength configuration. Usually, this value is expressed in mA. Since the numeric value depends on VDDIOP voltage, a value we can't retrieve at runtime, the controller uses low, medium and high to define the drive strength. The PIO controller accepts two values for the low drive configuration: 0 and 1. Most of the time, we don't care about the drive strength. So we keep the default value which is 0. The drive strength is advertised through the sysfs only when it has been explicitly set in the device tree i.e. if its value is different from 0. Signed-off-by: Ludovic Desroches <ludovic.desroches@microchip.com> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
94 lines
2.4 KiB
Plaintext
94 lines
2.4 KiB
Plaintext
* Atmel PIO4 Controller
|
|
|
|
The Atmel PIO4 controller is used to select the function of a pin and to
|
|
configure it.
|
|
|
|
Required properties:
|
|
- compatible: "atmel,sama5d2-pinctrl".
|
|
- reg: base address and length of the PIO controller.
|
|
- interrupts: interrupt outputs from the controller, one for each bank.
|
|
- interrupt-controller: mark the device node as an interrupt controller.
|
|
- #interrupt-cells: should be two.
|
|
- gpio-controller: mark the device node as a gpio controller.
|
|
- #gpio-cells: should be two.
|
|
|
|
Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
|
|
a general description of GPIO and interrupt bindings.
|
|
|
|
Please refer to pinctrl-bindings.txt in this directory for details of the
|
|
common pinctrl bindings used by client devices.
|
|
|
|
Subnode format
|
|
Each node (or subnode) will list the pins it needs and how to configured these
|
|
pins.
|
|
|
|
node {
|
|
pinmux = <PIN_NUMBER_PINMUX>;
|
|
GENERIC_PINCONFIG;
|
|
};
|
|
|
|
Required properties:
|
|
- pinmux: integer array. Each integer represents a pin number plus mux and
|
|
ioset settings. Use the macros from boot/dts/<soc>-pinfunc.h file to get the
|
|
right representation of the pin.
|
|
|
|
Optional properties:
|
|
- GENERIC_PINCONFIG: generic pinconfig options to use, bias-disable,
|
|
bias-pull-down, bias-pull-up, drive-open-drain, input-schmitt-enable,
|
|
input-debounce, output-low, output-high.
|
|
- atmel,drive-strength: 0 or 1 for low drive, 2 for medium drive and 3 for
|
|
high drive. The default value is low drive.
|
|
|
|
Example:
|
|
|
|
#include <sama5d2-pinfunc.h>
|
|
|
|
...
|
|
{
|
|
pioA: pinctrl@fc038000 {
|
|
compatible = "atmel,sama5d2-pinctrl";
|
|
reg = <0xfc038000 0x600>;
|
|
interrupts = <18 IRQ_TYPE_LEVEL_HIGH 7>,
|
|
<68 IRQ_TYPE_LEVEL_HIGH 7>,
|
|
<69 IRQ_TYPE_LEVEL_HIGH 7>,
|
|
<70 IRQ_TYPE_LEVEL_HIGH 7>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
clocks = <&pioA_clk>;
|
|
|
|
pinctrl_i2c0_default: i2c0_default {
|
|
pinmux = <PIN_PD21__TWD0>,
|
|
<PIN_PD22__TWCK0>;
|
|
bias-disable;
|
|
};
|
|
|
|
pinctrl_led_gpio_default: led_gpio_default {
|
|
pinmux = <PIN_PB0>,
|
|
<PIN_PB5>;
|
|
bias-pull-up;
|
|
atmel,drive-strength = <ATMEL_PIO_DRVSTR_ME>;
|
|
};
|
|
|
|
pinctrl_sdmmc1_default: sdmmc1_default {
|
|
cmd_data {
|
|
pinmux = <PIN_PA28__SDMMC1_CMD>,
|
|
<PIN_PA18__SDMMC1_DAT0>,
|
|
<PIN_PA19__SDMMC1_DAT1>,
|
|
<PIN_PA20__SDMMC1_DAT2>,
|
|
<PIN_PA21__SDMMC1_DAT3>;
|
|
bias-pull-up;
|
|
};
|
|
|
|
ck_cd {
|
|
pinmux = <PIN_PA22__SDMMC1_CK>,
|
|
<PIN_PA30__SDMMC1_CD>;
|
|
bias-disable;
|
|
};
|
|
};
|
|
...
|
|
};
|
|
};
|
|
...
|