"Fossies" - the Fresh Open Source Software Archive

Member "linux-5.3.1/Documentation/devicetree/bindings/pinctrl/pinctrl-stmfx.txt" (21 Sep 2019, 3664 Bytes) of package /linux/kernel/v5.3/linux-5.3.1.tar.xz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 STMicroelectronics Multi-Function eXpander (STMFX) GPIO expander bindings
    2 
    3 ST Multi-Function eXpander (STMFX) offers up to 24 GPIOs expansion.
    4 Please refer to ../mfd/stmfx.txt for STMFX Core bindings.
    5 
    6 Required properties:
    7 - compatible: should be "st,stmfx-0300-pinctrl".
    8 - #gpio-cells: should be <2>, the first cell is the GPIO number and the second
    9   cell is the gpio flags in accordance with <dt-bindings/gpio/gpio.h>.
   10 - gpio-controller: marks the device as a GPIO controller.
   11 - #interrupt-cells: should be <2>, the first cell is the GPIO number and the
   12   second cell is the interrupt flags in accordance with
   13   <dt-bindings/interrupt-controller/irq.h>.
   14 - interrupt-controller: marks the device as an interrupt controller.
   15 - gpio-ranges: specifies the mapping between gpio controller and pin
   16   controller pins. Check "Concerning gpio-ranges property" below.
   17 Please refer to ../gpio/gpio.txt.
   18 
   19 Please refer to pinctrl-bindings.txt for pin configuration.
   20 
   21 Required properties for pin configuration sub-nodes:
   22 - pins: list of pins to which the configuration applies.
   23 
   24 Optional properties for pin configuration sub-nodes (pinconf-generic ones):
   25 - bias-disable: disable any bias on the pin.
   26 - bias-pull-up: the pin will be pulled up.
   27 - bias-pull-pin-default: use the pin-default pull state.
   28 - bias-pull-down: the pin will be pulled down.
   29 - drive-open-drain: the pin will be driven with open drain.
   30 - drive-push-pull: the pin will be driven actively high and low.
   31 - output-high: the pin will be configured as an output driving high level.
   32 - output-low: the pin will be configured as an output driving low level.
   33 
   34 Note that STMFX pins[15:0] are called "gpio[15:0]", and STMFX pins[23:16] are
   35 called "agpio[7:0]". Example, to refer to pin 18 of STMFX, use "agpio2".
   36 
   37 Concerning gpio-ranges property:
   38 - if all STMFX pins[24:0] are available (no other STMFX function in use), you
   39   should use gpio-ranges = <&stmfx_pinctrl 0 0 24>;
   40 - if agpio[3:0] are not available (STMFX Touchscreen function in use), you
   41   should use gpio-ranges = <&stmfx_pinctrl 0 0 16>, <&stmfx_pinctrl 20 20 4>;
   42 - if agpio[7:4] are not available (STMFX IDD function in use), you
   43   should use gpio-ranges = <&stmfx_pinctrl 0 0 20>;
   44 
   45 
   46 Example:
   47 
   48 	stmfx: stmfx@42 {
   49 		...
   50 
   51 		stmfx_pinctrl: stmfx-pin-controller {
   52 			compatible = "st,stmfx-0300-pinctrl";
   53 			#gpio-cells = <2>;
   54 			#interrupt-cells = <2>;
   55 			gpio-controller;
   56 			interrupt-controller;
   57 			gpio-ranges = <&stmfx_pinctrl 0 0 24>;
   58 
   59 			joystick_pins: joystick {
   60 				pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4";
   61 				drive-push-pull;
   62 				bias-pull-up;
   63 			};
   64 		};
   65 	};
   66 
   67 Example of STMFX GPIO consumers:
   68 
   69 	joystick {
   70 		compatible = "gpio-keys";
   71 		#address-cells = <1>;
   72 		#size-cells = <0>;
   73 		pinctrl-0 = <&joystick_pins>;
   74 		pinctrl-names = "default";
   75 		button-0 {
   76 			label = "JoySel";
   77 			linux,code = <KEY_ENTER>;
   78 			interrupt-parent = <&stmfx_pinctrl>;
   79 			interrupts = <0 IRQ_TYPE_EDGE_RISING>;
   80 		};
   81 		button-1 {
   82 			label = "JoyDown";
   83 			linux,code = <KEY_DOWN>;
   84 			interrupt-parent = <&stmfx_pinctrl>;
   85 			interrupts = <1 IRQ_TYPE_EDGE_RISING>;
   86 		};
   87 		button-2 {
   88 			label = "JoyLeft";
   89 			linux,code = <KEY_LEFT>;
   90 			interrupt-parent = <&stmfx_pinctrl>;
   91 			interrupts = <2 IRQ_TYPE_EDGE_RISING>;
   92 		};
   93 		button-3 {
   94 			label = "JoyRight";
   95 			linux,code = <KEY_RIGHT>;
   96 			interrupt-parent = <&stmfx_pinctrl>;
   97 			interrupts = <3 IRQ_TYPE_EDGE_RISING>;
   98 		};
   99 		button-4 {
  100 			label = "JoyUp";
  101 			linux,code = <KEY_UP>;
  102 			interrupt-parent = <&stmfx_pinctrl>;
  103 			interrupts = <4 IRQ_TYPE_EDGE_RISING>;
  104 		};
  105 	};
  106 
  107 	leds {
  108 		compatible = "gpio-leds";
  109 		orange {
  110 			gpios = <&stmfx_pinctrl 17 1>;
  111 		};
  112 
  113 		blue {
  114 			gpios = <&stmfx_pinctrl 19 1>;
  115 		};
  116 	}