162306a36Sopenharmony_ci* Atmel PIO4 Controller 262306a36Sopenharmony_ci 362306a36Sopenharmony_ciThe Atmel PIO4 controller is used to select the function of a pin and to 462306a36Sopenharmony_ciconfigure it. 562306a36Sopenharmony_ci 662306a36Sopenharmony_ciRequired properties: 762306a36Sopenharmony_ci- compatible: 862306a36Sopenharmony_ci "atmel,sama5d2-pinctrl" 962306a36Sopenharmony_ci "microchip,sama7g5-pinctrl" 1062306a36Sopenharmony_ci- reg: base address and length of the PIO controller. 1162306a36Sopenharmony_ci- interrupts: interrupt outputs from the controller, one for each bank. 1262306a36Sopenharmony_ci- interrupt-controller: mark the device node as an interrupt controller. 1362306a36Sopenharmony_ci- #interrupt-cells: should be two. 1462306a36Sopenharmony_ci- gpio-controller: mark the device node as a gpio controller. 1562306a36Sopenharmony_ci- #gpio-cells: should be two. 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciPlease refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for 1862306a36Sopenharmony_cia general description of GPIO and interrupt bindings. 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ciPlease refer to pinctrl-bindings.txt in this directory for details of the 2162306a36Sopenharmony_cicommon pinctrl bindings used by client devices. 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ciSubnode format 2462306a36Sopenharmony_ciEach node (or subnode) will list the pins it needs and how to configured these 2562306a36Sopenharmony_cipins. 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci node { 2862306a36Sopenharmony_ci pinmux = <PIN_NUMBER_PINMUX>; 2962306a36Sopenharmony_ci GENERIC_PINCONFIG; 3062306a36Sopenharmony_ci }; 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ciRequired properties: 3362306a36Sopenharmony_ci- pinmux: integer array. Each integer represents a pin number plus mux and 3462306a36Sopenharmony_ciioset settings. Use the macros from boot/dts/<soc>-pinfunc.h file to get the 3562306a36Sopenharmony_ciright representation of the pin. 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ciOptional properties: 3862306a36Sopenharmony_ci- GENERIC_PINCONFIG: generic pinconfig options to use: 3962306a36Sopenharmony_ci - bias-disable, bias-pull-down, bias-pull-up, drive-open-drain, 4062306a36Sopenharmony_ci drive-push-pull input-schmitt-enable, input-debounce, output-low, 4162306a36Sopenharmony_ci output-high. 4262306a36Sopenharmony_ci - for microchip,sama7g5-pinctrl only: 4362306a36Sopenharmony_ci - slew-rate: 0 - disabled, 1 - enabled (default) 4462306a36Sopenharmony_ci- atmel,drive-strength: 0 or 1 for low drive, 2 for medium drive and 3 for 4562306a36Sopenharmony_cihigh drive. The default value is low drive. 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ciExample: 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci#include <sama5d2-pinfunc.h> 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci... 5262306a36Sopenharmony_ci{ 5362306a36Sopenharmony_ci pioA: pinctrl@fc038000 { 5462306a36Sopenharmony_ci compatible = "atmel,sama5d2-pinctrl"; 5562306a36Sopenharmony_ci reg = <0xfc038000 0x600>; 5662306a36Sopenharmony_ci interrupts = <18 IRQ_TYPE_LEVEL_HIGH 7>, 5762306a36Sopenharmony_ci <68 IRQ_TYPE_LEVEL_HIGH 7>, 5862306a36Sopenharmony_ci <69 IRQ_TYPE_LEVEL_HIGH 7>, 5962306a36Sopenharmony_ci <70 IRQ_TYPE_LEVEL_HIGH 7>; 6062306a36Sopenharmony_ci interrupt-controller; 6162306a36Sopenharmony_ci #interrupt-cells = <2>; 6262306a36Sopenharmony_ci gpio-controller; 6362306a36Sopenharmony_ci #gpio-cells = <2>; 6462306a36Sopenharmony_ci clocks = <&pioA_clk>; 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci pinctrl_i2c0_default: i2c0_default { 6762306a36Sopenharmony_ci pinmux = <PIN_PD21__TWD0>, 6862306a36Sopenharmony_ci <PIN_PD22__TWCK0>; 6962306a36Sopenharmony_ci bias-disable; 7062306a36Sopenharmony_ci }; 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci pinctrl_led_gpio_default: led_gpio_default { 7362306a36Sopenharmony_ci pinmux = <PIN_PB0>, 7462306a36Sopenharmony_ci <PIN_PB5>; 7562306a36Sopenharmony_ci bias-pull-up; 7662306a36Sopenharmony_ci atmel,drive-strength = <ATMEL_PIO_DRVSTR_ME>; 7762306a36Sopenharmony_ci }; 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci pinctrl_sdmmc1_default: sdmmc1_default { 8062306a36Sopenharmony_ci cmd_data { 8162306a36Sopenharmony_ci pinmux = <PIN_PA28__SDMMC1_CMD>, 8262306a36Sopenharmony_ci <PIN_PA18__SDMMC1_DAT0>, 8362306a36Sopenharmony_ci <PIN_PA19__SDMMC1_DAT1>, 8462306a36Sopenharmony_ci <PIN_PA20__SDMMC1_DAT2>, 8562306a36Sopenharmony_ci <PIN_PA21__SDMMC1_DAT3>; 8662306a36Sopenharmony_ci bias-pull-up; 8762306a36Sopenharmony_ci }; 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci ck_cd { 9062306a36Sopenharmony_ci pinmux = <PIN_PA22__SDMMC1_CK>, 9162306a36Sopenharmony_ci <PIN_PA30__SDMMC1_CD>; 9262306a36Sopenharmony_ci bias-disable; 9362306a36Sopenharmony_ci }; 9462306a36Sopenharmony_ci }; 9562306a36Sopenharmony_ci ... 9662306a36Sopenharmony_ci }; 9762306a36Sopenharmony_ci}; 9862306a36Sopenharmony_ci... 99