Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

Davinci/Keystone GPIO controller bindings

Required Properties:
- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"

- reg: Physical base address of the controller and the size of memory mapped
       registers.

- gpio-controller : Marks the device node as a gpio controller.

- #gpio-cells : Should be two.
  - first cell is the pin number
  - second cell is used to specify optional parameters (unused)

- interrupt-parent: phandle of the parent interrupt controller.

- interrupts: Array of GPIO interrupt number. Only banked or unbanked IRQs are
	      supported at a time.

- ti,ngpio: The number of GPIO pins supported.

- ti,davinci-gpio-unbanked: The number of GPIOs that have an individual interrupt
		             line to processor.

The GPIO controller also acts as an interrupt controller. It uses the default
two cells specifier as described in Documentation/devicetree/bindings/
interrupt-controller/interrupts.txt.

Example:

gpio: gpio@1e26000 {
	compatible = "ti,dm6441-gpio";
	gpio-controller;
	#gpio-cells = <2>;
	reg = <0x226000 0x1000>;
	interrupt-parent = <&intc>;
	interrupts = <42 IRQ_TYPE_EDGE_BOTH 43 IRQ_TYPE_EDGE_BOTH
		44 IRQ_TYPE_EDGE_BOTH 45 IRQ_TYPE_EDGE_BOTH
		46 IRQ_TYPE_EDGE_BOTH 47 IRQ_TYPE_EDGE_BOTH
		48 IRQ_TYPE_EDGE_BOTH 49 IRQ_TYPE_EDGE_BOTH
		50 IRQ_TYPE_EDGE_BOTH>;
	ti,ngpio = <144>;
	ti,davinci-gpio-unbanked = <0>;
	interrupt-controller;
	#interrupt-cells = <2>;
};

leds {
	compatible = "gpio-leds";

	led1 {
		label = "davinci:green:usr1";
		gpios = <&gpio 10 GPIO_ACTIVE_HIGH>;
		...
	};

	led2 {
		label = "davinci:red:debug1";
		gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
		...
	};
};