Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 1 | Abilis Systems TB10x pin controller |
| 2 | =================================== |
| 3 | |
| 4 | Required properties |
| 5 | ------------------- |
| 6 | |
| 7 | - compatible: should be "abilis,tb10x-iomux"; |
| 8 | - reg: should contain the physical address and size of the pin controller's |
| 9 | register range. |
| 10 | |
| 11 | |
| 12 | Function definitions |
| 13 | -------------------- |
| 14 | |
| 15 | Functions are defined (and referenced) by sub-nodes of the pin controller. |
| 16 | Every sub-node defines exactly one function (implying a set of pins). |
| 17 | Every function is associated to one named pin group inside the pin controller |
| 18 | driver and these names are used to associate pin group predefinitions to pin |
| 19 | controller sub-nodes. |
| 20 | |
| 21 | Required function definition subnode properties: |
| 22 | - abilis,function: should be set to the name of the function's pin group. |
| 23 | |
| 24 | The following pin groups are available: |
| 25 | - GPIO ports: gpioa, gpiob, gpioc, gpiod, gpioe, gpiof, gpiog, |
| 26 | gpioh, gpioi, gpioj, gpiok, gpiol, gpiom, gpion |
| 27 | - Serial TS input ports: mis0, mis1, mis2, mis3, mis4, mis5, mis6, mis7 |
| 28 | - Parallel TS input ports: mip1, mip3, mip5, mip7 |
| 29 | - Serial TS output ports: mos0, mos1, mos2, mos3 |
| 30 | - Parallel TS output port: mop |
| 31 | - CI+ port: ciplus |
| 32 | - CableCard (Mcard) port: mcard |
| 33 | - Smart card ports: stc0, stc1 |
| 34 | - UART ports: uart0, uart1 |
| 35 | - SPI ports: spi1, spi3 |
| 36 | - JTAG: jtag |
| 37 | |
| 38 | All other ports of the chip are not multiplexed and thus not managed by this |
| 39 | driver. |
| 40 | |
| 41 | |
| 42 | GPIO ranges definition |
| 43 | ---------------------- |
| 44 | |
| 45 | The named pin groups of GPIO ports can be used to define GPIO ranges as |
| 46 | explained in Documentation/devicetree/bindings/gpio/gpio.txt. |
| 47 | |
| 48 | |
| 49 | Example |
| 50 | ------- |
| 51 | |
| 52 | iomux: iomux@ff10601c { |
| 53 | compatible = "abilis,tb10x-iomux"; |
| 54 | reg = <0xFF10601c 0x4>; |
| 55 | pctl_gpio_a: pctl-gpio-a { |
| 56 | abilis,function = "gpioa"; |
| 57 | }; |
| 58 | pctl_uart0: pctl-uart0 { |
| 59 | abilis,function = "uart0"; |
| 60 | }; |
| 61 | }; |
| 62 | uart@ff100000 { |
| 63 | compatible = "snps,dw-apb-uart"; |
| 64 | reg = <0xFF100000 0x100>; |
| 65 | clock-frequency = <166666666>; |
| 66 | interrupts = <25 1>; |
| 67 | reg-shift = <2>; |
| 68 | reg-io-width = <4>; |
| 69 | pinctrl-names = "default"; |
| 70 | pinctrl-0 = <&pctl_uart0>; |
| 71 | }; |
| 72 | gpioa: gpio@ff140000 { |
| 73 | compatible = "abilis,tb10x-gpio"; |
| 74 | reg = <0xFF140000 0x1000>; |
| 75 | gpio-controller; |
| 76 | #gpio-cells = <2>; |
| 77 | ngpio = <3>; |
| 78 | gpio-ranges = <&iomux 0 0>; |
| 79 | gpio-ranges-group-names = "gpioa"; |
| 80 | }; |