Re: [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support

From: John Garry
Date: Mon Feb 26 2018 - 07:38:08 EST


On 26/02/2018 12:21, Andy Shevchenko wrote:
On Mon, 2018-02-26 at 11:56 +0000, John Garry wrote:
Why you can't do properly in ACPI?

No answer here either.

Sorry, but with this level of communication it's no go for the
series.


Sorry if my answers did not tell you want you want to know.

My point was that the 8250_pnp driver would be used for a
pnp_device,
but we are creating a platform device for this UART slave so would
require a platform device driver, that which 8250_dw.c is. But I
will
check on pnp device support.

Hi Andy,

Perhaps it's not visible, though below is a description of the
drivers
we have:

8250_dw - OF/ACPI driver for Synopsys DW (+ DW DMA)
8250_lpss - PCI driver for Synopsys DW (+ DW DMA)
8250_of - generic 8250 compatible driver for OF
8250_pci - generic 8250 compatible driver for PCI
8250_pnp - generic 8250 compatible driver for ACPI

8250_* (except core parts) - custom glue drivers per some IPs

By description you gave your driver fits 8250_pnp if ACPI tables
crafted
properly.

Share the ACPI excerpt and we can discuss further how to improve
them.


Hi Andy,


For a bit of background, MFD support was discussed here initially:
https://lkml.org/lkml/2017/6/13/796

Here is the ACPI table:
Scope(_SB) {
Device (LPC0) {
Name (_HID, "HISI0191") // HiSi LPC
Name (_CRS, ResourceTemplate () {
Memory32Fixed (ReadWrite, 0xa01b0000, 0x1000)
})
}

Device (LPC0.CON0) {
Name (_HID, "HISI1031")
// Name (_CID, "PNP0501") // cannot support PNP
Name (LORS, ResourceTemplate() {
QWordIO (
ResourceConsumer,
MinNotFixed, // _MIF
MaxNotFixed, // _MAF
PosDecode,
EntireRange,
0x0, // _GRA
0x2F8, // _MIN

0x3fff, // _MAX

Shouldn't be 0x2ff ?

Yes, something like this. I have asked for it to be fixed.


0x0, // _TRA
0x08, // _LEN
, ,
IO02


The latest framework changes and host driver patchset are here:
https://lkml.org/lkml/2018/2/19/465


It still doesn't explain impediments you have.

Just few approaches comes to my mind:
- move UART outside of parent device

In this case the UART would not be a child and would not be enumerated to have the correct iobase.

- register PNP driver manually for that cell instead of MFD

Maybe it could work.

- use serial8250 platform driver (I totally forgot that we have a
generic platform driver, so, it might be what you need to use at the
end)

Let me check this also. I am not fimilar.



Thanks for the support!
John