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