Re: [-next] serial: 8250: Match legacy NS16550A UARTs

From: Andy Shevchenko
Date: Wed Apr 21 2021 - 15:58:17 EST


On Wed, Apr 21, 2021 at 10:04 PM Alan Cooper <alcooperx@xxxxxxxxx> wrote:
> On Thu, Apr 15, 2021 at 6:44 AM Andy Shevchenko
> <andy.shevchenko@xxxxxxxxx> wrote:
> > On Wed, Apr 14, 2021 at 7:13 PM Al Cooper <alcooperx@xxxxxxxxx> wrote:

> The problem is that when both the 8250_of and 8250_bcm7271 drivers
> were running, occasionally the 8250_of driver would be bound to the
> enhanced UART instead of the 8250_bcm7271 driver. This was happening
> because we use SCMI based clocks which come up late in initialization
> and cause probe DEFER's when the two drivers get their clocks.
> Occasionally the SCMI clock would become ready between the
> 8250_bcm7271 probe and the 8250_of probe and the 8250_of driver would
> be bound. To fix this we decided to config only our 8250_bcm7271
> driver and added "ns16665a0" to the compatible string so the driver
> would work on our older system.

Interesting reading.

As far as I understand the 8250 approach (*), you blacklist (or
whatever naming you prefer, b/c 8250_of seems does not have such) the
binding based on the presence of the specific compatible string.

I.o.w. in 8250_of you need to check if you are trying to probe the
device which has both compatible strings. In that case you simply
return -ENODEV.

*) 8250_pci does like this.

--
With Best Regards,
Andy Shevchenko