18c2ecf20Sopenharmony_ciQualcomm Atheros IPQ4019 TLMM block
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciThis is the Top Level Mode Multiplexor block found on the Qualcomm IPQ8019
48c2ecf20Sopenharmony_ciplatform, it provides pinctrl, pinmux, pinconf, and gpiolib facilities.
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ciRequired properties:
78c2ecf20Sopenharmony_ci- compatible: "qcom,ipq4019-pinctrl"
88c2ecf20Sopenharmony_ci- reg: Should be the base address and length of the TLMM block.
98c2ecf20Sopenharmony_ci- interrupts: Should be the parent IRQ of the TLMM block.
108c2ecf20Sopenharmony_ci- interrupt-controller: Marks the device node as an interrupt controller.
118c2ecf20Sopenharmony_ci- #interrupt-cells: Should be two.
128c2ecf20Sopenharmony_ci- gpio-controller: Marks the device node as a GPIO controller.
138c2ecf20Sopenharmony_ci- #gpio-cells : Should be two.
148c2ecf20Sopenharmony_ci                The first cell is the gpio pin number and the
158c2ecf20Sopenharmony_ci                second cell is used for optional parameters.
168c2ecf20Sopenharmony_ci- gpio-ranges: see ../gpio/gpio.txt
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ciOptional properties:
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci- gpio-reserved-ranges: see ../gpio/gpio.txt
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ciPlease refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
238c2ecf20Sopenharmony_cia general description of GPIO and interrupt bindings.
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciPlease refer to pinctrl-bindings.txt in this directory for details of the
268c2ecf20Sopenharmony_cicommon pinctrl bindings used by client devices, including the meaning of the
278c2ecf20Sopenharmony_ciphrase "pin configuration node".
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ciThe pin configuration nodes act as a container for an arbitrary number of
308c2ecf20Sopenharmony_cisubnodes. Each of these subnodes represents some desired configuration for a
318c2ecf20Sopenharmony_cipin, a group, or a list of pins or groups. This configuration can include the
328c2ecf20Sopenharmony_cimux function to select on those pin(s)/group(s), and various pin configuration
338c2ecf20Sopenharmony_ciparameters, such as pull-up, drive strength, etc.
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ciThe name of each subnode is not important; all subnodes should be enumerated
368c2ecf20Sopenharmony_ciand processed purely based on their content.
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ciEach subnode only affects those parameters that are explicitly listed. In
398c2ecf20Sopenharmony_ciother words, a subnode that lists a mux function but no pin configuration
408c2ecf20Sopenharmony_ciparameters implies no information about any pin configuration parameters.
418c2ecf20Sopenharmony_ciSimilarly, a pin subnode that describes a pullup parameter implies no
428c2ecf20Sopenharmony_ciinformation about e.g. the mux function.
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ciThe following generic properties as defined in pinctrl-bindings.txt are valid
468c2ecf20Sopenharmony_cito specify in a pin configuration subnode:
478c2ecf20Sopenharmony_ci pins, function, bias-disable, bias-pull-down, bias-pull-up, drive-open-drain,
488c2ecf20Sopenharmony_ci drive-strength.
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ciNon-empty subnodes must specify the 'pins' property.
518c2ecf20Sopenharmony_ciNote that not all properties are valid for all pins.
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ciValid values for qcom,pins are:
558c2ecf20Sopenharmony_ci  gpio0-gpio99
568c2ecf20Sopenharmony_ci    Supports mux, bias and drive-strength
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ciValid values for qcom,function are:
598c2ecf20Sopenharmony_ciaud_pin, audio_pwm, blsp_i2c0, blsp_i2c1, blsp_spi0, blsp_spi1, blsp_uart0,
608c2ecf20Sopenharmony_ciblsp_uart1, chip_rst, gpio, i2s_rx, i2s_spdif_in, i2s_spdif_out, i2s_td, i2s_tx,
618c2ecf20Sopenharmony_cijtag, led0, led1, led2, led3, led4, led5, led6, led7, led8, led9, led10, led11,
628c2ecf20Sopenharmony_cimdc, mdio, pcie, pmu, prng_rosc, qpic, rgmii, rmii, sdio, smart0, smart1,
638c2ecf20Sopenharmony_cismart2, smart3, tm, wifi0, wifi1
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ciExample:
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_ci	tlmm: pinctrl@1000000 {
688c2ecf20Sopenharmony_ci		compatible = "qcom,ipq4019-pinctrl";
698c2ecf20Sopenharmony_ci		reg = <0x1000000 0x300000>;
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ci		gpio-controller;
728c2ecf20Sopenharmony_ci		#gpio-cells = <2>;
738c2ecf20Sopenharmony_ci		gpio-ranges = <&tlmm 0 0 100>;
748c2ecf20Sopenharmony_ci		interrupt-controller;
758c2ecf20Sopenharmony_ci		#interrupt-cells = <2>;
768c2ecf20Sopenharmony_ci		interrupts = <0 208 0>;
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci		serial_pins: serial_pinmux {
798c2ecf20Sopenharmony_ci			mux {
808c2ecf20Sopenharmony_ci				pins = "gpio60", "gpio61";
818c2ecf20Sopenharmony_ci				function = "blsp_uart0";
828c2ecf20Sopenharmony_ci				bias-disable;
838c2ecf20Sopenharmony_ci			};
848c2ecf20Sopenharmony_ci		};
858c2ecf20Sopenharmony_ci	};
86