18c2ecf20Sopenharmony_ci* Atmel PIO4 Controller
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciThe Atmel PIO4 controller is used to select the function of a pin and to
48c2ecf20Sopenharmony_ciconfigure it.
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ciRequired properties:
78c2ecf20Sopenharmony_ci- compatible:
88c2ecf20Sopenharmony_ci	"atmel,sama5d2-pinctrl"
98c2ecf20Sopenharmony_ci	"microchip,sama7g5-pinctrl"
108c2ecf20Sopenharmony_ci- reg: base address and length of the PIO controller.
118c2ecf20Sopenharmony_ci- interrupts: interrupt outputs from the controller, one for each bank.
128c2ecf20Sopenharmony_ci- interrupt-controller: mark the device node as an interrupt controller.
138c2ecf20Sopenharmony_ci- #interrupt-cells: should be two.
148c2ecf20Sopenharmony_ci- gpio-controller: mark the device node as a gpio controller.
158c2ecf20Sopenharmony_ci- #gpio-cells: should be two.
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciPlease refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
188c2ecf20Sopenharmony_cia general description of GPIO and interrupt bindings.
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ciPlease refer to pinctrl-bindings.txt in this directory for details of the
218c2ecf20Sopenharmony_cicommon pinctrl bindings used by client devices.
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ciSubnode format
248c2ecf20Sopenharmony_ciEach node (or subnode) will list the pins it needs and how to configured these
258c2ecf20Sopenharmony_cipins.
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci	node {
288c2ecf20Sopenharmony_ci		pinmux = <PIN_NUMBER_PINMUX>;
298c2ecf20Sopenharmony_ci		GENERIC_PINCONFIG;
308c2ecf20Sopenharmony_ci	};
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ciRequired properties:
338c2ecf20Sopenharmony_ci- pinmux: integer array. Each integer represents a pin number plus mux and
348c2ecf20Sopenharmony_ciioset settings. Use the macros from boot/dts/<soc>-pinfunc.h file to get the
358c2ecf20Sopenharmony_ciright representation of the pin.
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ciOptional properties:
388c2ecf20Sopenharmony_ci- GENERIC_PINCONFIG: generic pinconfig options to use, bias-disable,
398c2ecf20Sopenharmony_cibias-pull-down, bias-pull-up, drive-open-drain, input-schmitt-enable,
408c2ecf20Sopenharmony_ciinput-debounce, output-low, output-high.
418c2ecf20Sopenharmony_ci- atmel,drive-strength: 0 or 1 for low drive, 2 for medium drive and 3 for
428c2ecf20Sopenharmony_cihigh drive. The default value is low drive.
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ciExample:
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci#include <sama5d2-pinfunc.h>
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci...
498c2ecf20Sopenharmony_ci{
508c2ecf20Sopenharmony_ci	pioA: pinctrl@fc038000 {
518c2ecf20Sopenharmony_ci		compatible = "atmel,sama5d2-pinctrl";
528c2ecf20Sopenharmony_ci		reg = <0xfc038000 0x600>;
538c2ecf20Sopenharmony_ci		interrupts = <18 IRQ_TYPE_LEVEL_HIGH 7>,
548c2ecf20Sopenharmony_ci			     <68 IRQ_TYPE_LEVEL_HIGH 7>,
558c2ecf20Sopenharmony_ci			     <69 IRQ_TYPE_LEVEL_HIGH 7>,
568c2ecf20Sopenharmony_ci			     <70 IRQ_TYPE_LEVEL_HIGH 7>;
578c2ecf20Sopenharmony_ci		interrupt-controller;
588c2ecf20Sopenharmony_ci		#interrupt-cells = <2>;
598c2ecf20Sopenharmony_ci		gpio-controller;
608c2ecf20Sopenharmony_ci		#gpio-cells = <2>;
618c2ecf20Sopenharmony_ci		clocks = <&pioA_clk>;
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ci		pinctrl_i2c0_default: i2c0_default {
648c2ecf20Sopenharmony_ci			pinmux = <PIN_PD21__TWD0>,
658c2ecf20Sopenharmony_ci				 <PIN_PD22__TWCK0>;
668c2ecf20Sopenharmony_ci			bias-disable;
678c2ecf20Sopenharmony_ci		};
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci		pinctrl_led_gpio_default: led_gpio_default {
708c2ecf20Sopenharmony_ci			pinmux = <PIN_PB0>,
718c2ecf20Sopenharmony_ci				 <PIN_PB5>;
728c2ecf20Sopenharmony_ci			bias-pull-up;
738c2ecf20Sopenharmony_ci			atmel,drive-strength = <ATMEL_PIO_DRVSTR_ME>;
748c2ecf20Sopenharmony_ci		};
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci		pinctrl_sdmmc1_default: sdmmc1_default {
778c2ecf20Sopenharmony_ci			cmd_data {
788c2ecf20Sopenharmony_ci				pinmux = <PIN_PA28__SDMMC1_CMD>,
798c2ecf20Sopenharmony_ci					 <PIN_PA18__SDMMC1_DAT0>,
808c2ecf20Sopenharmony_ci					 <PIN_PA19__SDMMC1_DAT1>,
818c2ecf20Sopenharmony_ci					 <PIN_PA20__SDMMC1_DAT2>,
828c2ecf20Sopenharmony_ci					 <PIN_PA21__SDMMC1_DAT3>;
838c2ecf20Sopenharmony_ci				bias-pull-up;
848c2ecf20Sopenharmony_ci			};
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ci			ck_cd {
878c2ecf20Sopenharmony_ci				pinmux = <PIN_PA22__SDMMC1_CK>,
888c2ecf20Sopenharmony_ci					 <PIN_PA30__SDMMC1_CD>;
898c2ecf20Sopenharmony_ci				bias-disable;
908c2ecf20Sopenharmony_ci			};
918c2ecf20Sopenharmony_ci		};
928c2ecf20Sopenharmony_ci		...
938c2ecf20Sopenharmony_ci	};
948c2ecf20Sopenharmony_ci};
958c2ecf20Sopenharmony_ci...
96