Re: [RFC] serial: sc16is7xx: Use DT sub-nodes for UART ports
From: Rob Herring <robh@kernel.org>
Date: 2018-08-10 18:11:57
Also in:
linux-mips, lkml
On Fri, Aug 10, 2018 at 11:45 AM Andreas Färber [off-list ref] wrote:
Am 10.08.2018 um 19:34 schrieb Rob Herring:quoted
On Sun, Aug 5, 2018 at 5:27 PM Andreas Färber [off-list ref] wrote:quoted
This is to allow using serdev. Signed-off-by: Andreas Färber <afaerber@suse.de> --- drivers/tty/serial/sc16is7xx.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c index 243c96025053..ad7267274f65 100644 --- a/drivers/tty/serial/sc16is7xx.c +++ b/drivers/tty/serial/sc16is7xx.c@@ -1213,9 +1213,31 @@ static int sc16is7xx_probe(struct device *dev, SC16IS7XX_IOCONTROL_SRESET_BIT); for (i = 0; i < devtype->nr_uart; ++i) { +#ifdef CONFIG_OF + struct device_node *np; + struct platform_device *pdev; + char name[6] = "uartx"; +#endif + s->p[i].line = i; /* Initialize port data */ +#ifdef CONFIG_OF + name[4] = '0' + i; + np = of_get_child_by_name(dev->of_node, name); + if (IS_ERR(np)) { + ret = PTR_ERR(np); + goto out_ports; + } + pdev = of_platform_device_create(np, NULL, dev);Ideally, you would use of_platform_default_populate here. I think you'd have to add a compatible to the child nodes, but that wouldn't be a bad thing. I could envision that the child nodes ultimately become their own driver utilizing the standard 8250 driver and a compatible string would be needed in that case.Separate compatibles would mean separate drivers.
No. Having a compatible doesn't mean you have to have a driver.
Unlike your DUART example this is not an MMIO device that we can easily split but a SPI slave (well, regmap due to some I2C models).
A SPI slave could provide a regmap, right?
I don't see how separate drivers could work, given that the whole spi_device has a single interrupt for all functions of this device.
A shared interrupt or a parent driver that creates an irqchip like MFD drivers often do.
That left me with this ugly but working construct.
In any case, I'm was suggesting that you do any of this now. I just want the binding to be designed to work either way.
Is the uartX naming correct, or should it be serialX?
Ah, yes. Should be serial@... I'm fine if both the parent and child are named serial@... Rob