mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
synced 2025-09-26 02:20:25 +10:00
Some variants in this series of UART controllers have GPIO pins that are shared between GPIO and modem control lines. The pin mux mode (GPIO or modem control lines) can be set for each ports (channels) supported by the variant. This adds a property to the device tree to set the GPIO pin mux to modem control lines on selected ports if needed. Cc: stable@vger.kernel.org # 6.1.x Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com> Acked-by: Conor Dooley <conor.dooley@microchip.com> Reviewed-by: Lech Perczak <lech.perczak@camlingroup.com> Acked-by: Rob Herring <robh@kernel.org> Link: https://lore.kernel.org/r/20230807214556.540627-4-hugo@hugovil.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
119 lines
3.8 KiB
Plaintext
119 lines
3.8 KiB
Plaintext
* NXP SC16IS7xx advanced Universal Asynchronous Receiver-Transmitter (UART)
|
|
* i2c as bus
|
|
|
|
Required properties:
|
|
- compatible: Should be one of the following:
|
|
- "nxp,sc16is740" for NXP SC16IS740,
|
|
- "nxp,sc16is741" for NXP SC16IS741,
|
|
- "nxp,sc16is750" for NXP SC16IS750,
|
|
- "nxp,sc16is752" for NXP SC16IS752,
|
|
- "nxp,sc16is760" for NXP SC16IS760,
|
|
- "nxp,sc16is762" for NXP SC16IS762.
|
|
- reg: I2C address of the SC16IS7xx device.
|
|
- interrupts: Should contain the UART interrupt
|
|
- clocks: Reference to the IC source clock.
|
|
OR (when there is no clock provider visible to the platform)
|
|
- clock-frequency: The source clock frequency for the IC.
|
|
|
|
Optional properties:
|
|
- gpio-controller: Marks the device node as a GPIO controller.
|
|
- #gpio-cells: Should be two. The first cell is the GPIO number and
|
|
the second cell is used to specify the GPIO polarity:
|
|
0 = active high,
|
|
1 = active low.
|
|
- irda-mode-ports: An array that lists the indices of the port that
|
|
should operate in IrDA mode.
|
|
- nxp,modem-control-line-ports: An array that lists the indices of the port that
|
|
should have shared GPIO lines configured as
|
|
modem control lines.
|
|
|
|
Example:
|
|
sc16is750: sc16is750@51 {
|
|
compatible = "nxp,sc16is750";
|
|
reg = <0x51>;
|
|
clocks = <&clk20m>;
|
|
interrupt-parent = <&gpio3>;
|
|
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
};
|
|
|
|
sc16is752: sc16is752@53 {
|
|
compatible = "nxp,sc16is752";
|
|
reg = <0x53>;
|
|
clocks = <&clk20m>;
|
|
interrupt-parent = <&gpio3>;
|
|
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
|
|
nxp,modem-control-line-ports = <1>; /* Port 1 as modem control lines */
|
|
gpio-controller; /* Port 0 as GPIOs */
|
|
#gpio-cells = <2>;
|
|
};
|
|
|
|
sc16is752: sc16is752@54 {
|
|
compatible = "nxp,sc16is752";
|
|
reg = <0x54>;
|
|
clocks = <&clk20m>;
|
|
interrupt-parent = <&gpio3>;
|
|
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
|
|
nxp,modem-control-line-ports = <0 1>; /* Ports 0 and 1 as modem control lines */
|
|
};
|
|
|
|
* spi as bus
|
|
|
|
Required properties:
|
|
- compatible: Should be one of the following:
|
|
- "nxp,sc16is740" for NXP SC16IS740,
|
|
- "nxp,sc16is741" for NXP SC16IS741,
|
|
- "nxp,sc16is750" for NXP SC16IS750,
|
|
- "nxp,sc16is752" for NXP SC16IS752,
|
|
- "nxp,sc16is760" for NXP SC16IS760,
|
|
- "nxp,sc16is762" for NXP SC16IS762.
|
|
- reg: SPI chip select number.
|
|
- interrupts: Specifies the interrupt source of the parent interrupt
|
|
controller. The format of the interrupt specifier depends on the
|
|
parent interrupt controller.
|
|
- clocks: phandle to the IC source clock.
|
|
|
|
Optional properties:
|
|
- gpio-controller: Marks the device node as a GPIO controller.
|
|
- #gpio-cells: Should be two. The first cell is the GPIO number and
|
|
the second cell is used to specify the GPIO polarity:
|
|
0 = active high,
|
|
1 = active low.
|
|
- irda-mode-ports: An array that lists the indices of the port that
|
|
should operate in IrDA mode.
|
|
- nxp,modem-control-line-ports: An array that lists the indices of the port that
|
|
should have shared GPIO lines configured as
|
|
modem control lines.
|
|
|
|
Example:
|
|
sc16is750: sc16is750@0 {
|
|
compatible = "nxp,sc16is750";
|
|
reg = <0>;
|
|
clocks = <&clk20m>;
|
|
interrupt-parent = <&gpio3>;
|
|
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
};
|
|
|
|
sc16is752: sc16is752@1 {
|
|
compatible = "nxp,sc16is752";
|
|
reg = <1>;
|
|
clocks = <&clk20m>;
|
|
interrupt-parent = <&gpio3>;
|
|
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
|
|
nxp,modem-control-line-ports = <1>; /* Port 1 as modem control lines */
|
|
gpio-controller; /* Port 0 as GPIOs */
|
|
#gpio-cells = <2>;
|
|
};
|
|
|
|
sc16is752: sc16is752@2 {
|
|
compatible = "nxp,sc16is752";
|
|
reg = <2>;
|
|
clocks = <&clk20m>;
|
|
interrupt-parent = <&gpio3>;
|
|
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
|
|
nxp,modem-control-line-ports = <0 1>; /* Ports 0 and 1 as modem control lines */
|
|
};
|