* Re: [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support
[not found] ` <1519407117.10722.124.camel@linux.intel.com>
@ 2018-02-26 9:33 ` John Garry
2018-02-26 9:53 ` Andy Shevchenko
0 siblings, 1 reply; 13+ messages in thread
From: John Garry @ 2018-02-26 9:33 UTC (permalink / raw)
To: Andy Shevchenko, gregkh, jslaby, p.zabel, heiko, ed.blake, jhogan
Cc: linux-serial, linux-kernel, linuxarm
On 23/02/2018 17:31, Andy Shevchenko wrote:
> On Fri, 2018-02-23 at 11:02 +0000, John Garry wrote:
>> On 23/02/2018 10:30, Andy Shevchenko wrote:
>>> On Fri, 2018-02-23 at 02:42 +0800, John Garry wrote:
>>>> There is a requirement
>>
>>> Where?
>>
Hi Andy,
>> We require it for a development board for our hip06 platform.
>
> Okay, and this particular platform uses Synopsys IP?
As I see this uart is really a virtual 8250, so HW details like apb
clocks and the like are hidden, so may not be relevant.
However I will check with the BMC team to know the specific details.
>
>>>> for supporting an 8250-compatible UART with
>>>> the following profile/features:
>>>> - platform device
>>>> - polling mode (i.e. no interrupt support)
>>>> - ACPI FW
>>>
>>> Elaborate this one, please.
>>
>> So we need to define our own HID here, and cannot use PNP compatible
>> CID
>> (like PNP0501) as we cannot use the 8250 PNP driver.
>
> Why not? What are the impediments?
>
To support the host controller for this device, we will create an MFD,
i.e. platform device, per slave device.
>> This is related to the Hisi LPC ACPI support, where we would create
>> an
>> MFD (i.e. platform device) for the UART.
>
> Why you can't do properly in ACPI?
>
>>>> - IO port iotype
>>>> - 16550-compatible
>>>>
>>>> For OF, we have 8250_of.c, and for PNP device we have 8250_pnp.c
>>>> drivers. However there does not seem to any driver satisfying
>>>> the above requirements. So this RFC is to find opinion on
>>>> modifying the Synopsys DW 8250_dw.c driver to support these
>>>> generic features.
>>>
>>> Synopsys 8250 is a particular case of platform drivers. It doesn't
>>> satisfy "8250-compatible UART" requirement.
>
>> Right, but I wanted to try to use the generic parts of the driver to
>> support this UART to save writing yet another driver.
>
> It's still odd. Why this one, why not 8250_foo_bar to touch instead?
>
Agreed, it's odd. I choose as 8250_dw.c as it has ACPI support already.
And I recognise the hw from popularity. No stronger reasons than that.
Thanks,
John
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support
2018-02-26 9:33 ` [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support John Garry
@ 2018-02-26 9:53 ` Andy Shevchenko
2018-02-26 10:45 ` John Garry
0 siblings, 1 reply; 13+ messages in thread
From: Andy Shevchenko @ 2018-02-26 9:53 UTC (permalink / raw)
To: John Garry, gregkh, jslaby, p.zabel, heiko, ed.blake, jhogan
Cc: linux-serial, linux-kernel, linuxarm
On Mon, 2018-02-26 at 09:33 +0000, John Garry wrote:
> On 23/02/2018 17:31, Andy Shevchenko wrote:
> > On Fri, 2018-02-23 at 11:02 +0000, John Garry wrote:
> > > On 23/02/2018 10:30, Andy Shevchenko wrote:
> > > > On Fri, 2018-02-23 at 02:42 +0800, John Garry wrote:
> > > We require it for a development board for our hip06 platform.
> >
> > Okay, and this particular platform uses Synopsys IP?
>
> As I see this uart is really a virtual 8250, so HW details like apb
> clocks and the like are hidden, so may not be relevant.
Good to know.
> However I will check with the BMC team to know the specific details.
> > > > > for supporting an 8250-compatible UART with
> > > > > the following profile/features:
> > > > > - platform device
> > > > > - polling mode (i.e. no interrupt support)
> > > > > - ACPI FW
> > > >
> > > > Elaborate this one, please.
> > >
> > > So we need to define our own HID here, and cannot use PNP
> > > compatible
> > > CID
> > > (like PNP0501) as we cannot use the 8250 PNP driver.
> >
> > Why not? What are the impediments?
> >
>
> To support the host controller for this device, we will create an
> MFD,
> i.e. platform device, per slave device.
There is no answer here...
> > > This is related to the Hisi LPC ACPI support, where we would
> > > create
> > > an
> > > MFD (i.e. platform device) for the UART.
> >
> > 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.
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support
2018-02-26 9:53 ` Andy Shevchenko
@ 2018-02-26 10:45 ` John Garry
2018-02-26 11:28 ` Andy Shevchenko
0 siblings, 1 reply; 13+ messages in thread
From: John Garry @ 2018-02-26 10:45 UTC (permalink / raw)
To: Andy Shevchenko, gregkh, jslaby, p.zabel, heiko, ed.blake, jhogan
Cc: linux-serial, linux-kernel, linuxarm
Hi Andy,
>>>> We require it for a development board for our hip06 platform.
>>>
>>> Okay, and this particular platform uses Synopsys IP?
>>
>> As I see this uart is really a virtual 8250, so HW details like apb
>> clocks and the like are hidden, so may not be relevant.
>
> Good to know.
>
>> However I will check with the BMC team to know the specific details.
>
>>>>>> for supporting an 8250-compatible UART with
>>>>>> the following profile/features:
>>>>>> - platform device
>>>>>> - polling mode (i.e. no interrupt support)
>>>>>> - ACPI FW
>>>>>
>>>>> Elaborate this one, please.
>>>>
>>>> So we need to define our own HID here, and cannot use PNP
>>>> compatible
>>>> CID
>>>> (like PNP0501) as we cannot use the 8250 PNP driver.
>>>
>>> Why not? What are the impediments?
>>>
>>
>> To support the host controller for this device, we will create an
>> MFD,
>> i.e. platform device, per slave device.
>
> There is no answer here...
>
>>>> This is related to the Hisi LPC ACPI support, where we would
>>>> create
>>>> an
>>>> MFD (i.e. platform device) for the UART.
>>>
>>> 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.
Much appreciated,
John
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH 2/2] serial: 8250_dw: support polling mode
[not found] ` <1519407313.10722.127.camel@linux.intel.com>
@ 2018-02-26 10:54 ` John Garry
0 siblings, 0 replies; 13+ messages in thread
From: John Garry @ 2018-02-26 10:54 UTC (permalink / raw)
To: Andy Shevchenko, gregkh, slaby, p.zabel, heiko, ed.blake, jhogan
Cc: linux-serial, linux-kernel, linuxarm
On 23/02/2018 17:35, Andy Shevchenko wrote:
> On Fri, 2018-02-23 at 02:42 +0800, John Garry wrote:
>> It would be useful to make this driver support some
>> 8250-compatible devices which have no interrupt line.
>>
>> For these, we allow for no interrupt, and will fallback on
>> polling mode.
>>
>> Note: the 8250 dt bindings state that "interrupts"
>> is a required property:
>> "interrupts : should contain uart interrupt."
>>
>> But the 8250_of.c driver can live without it. So
>> this patch is going this way also.
>
> It should be documented in the binding.
Agreed. I find the wording a bit ambigious in bindings/serial/8250.txt
and snps-dw-apb-uart.txt:
Required properties:
[...]
- interrupts : should contain uart interrupt.
It uses the word "should", and not "must". Maybe "should" means "must"...
>
>> if (irq < 0) {
>> - if (irq != -EPROBE_DEFER)
>> - dev_err(dev, "cannot get irq\n");
>> - return irq;
>> + if (irq == -EPROBE_DEFER)
>> + return irq;
>> + dev_warn(dev, "cannot get irq, using polling
>> mode\n");
>> + irq = 0;
>
> NO_IRQ _is_ 0. You need to do something like
>
> if (irq < 0) }
> ... leave existing code ...
> }
>
> if (!irq)
> dev_warn(, "Use polling mode\n");
OK
>
Thanks,
John
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support
2018-02-26 10:45 ` John Garry
@ 2018-02-26 11:28 ` Andy Shevchenko
2018-02-26 11:56 ` John Garry
0 siblings, 1 reply; 13+ messages in thread
From: Andy Shevchenko @ 2018-02-26 11:28 UTC (permalink / raw)
To: John Garry, gregkh, jslaby, p.zabel, heiko, ed.blake, jhogan
Cc: linux-serial, linux-kernel, linuxarm
On Mon, 2018-02-26 at 10:45 +0000, John Garry wrote:
> > > > > > > for supporting an 8250-compatible UART with
> > > > > > > the following profile/features:
> > > > > > > - platform device
> > > > > > > - polling mode (i.e. no interrupt support)
> > > > > > > - ACPI FW
> > > > > >
> > > > > > Elaborate this one, please.
> > > > >
> > > > > So we need to define our own HID here, and cannot use PNP
> > > > > compatible
> > > > > CID
> > > > > (like PNP0501) as we cannot use the 8250 PNP driver.
> > > >
> > > > Why not? What are the impediments?
> > > >
> > >
> > > To support the host controller for this device, we will create an
> > > MFD,
> > > i.e. platform device, per slave device.
> >
> > There is no answer here...
> >
> > > > > This is related to the Hisi LPC ACPI support, where we would
> > > > > create
> > > > > an
> > > > > MFD (i.e. platform device) for the UART.
> > > >
> > > > 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.
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.
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support
2018-02-26 11:28 ` Andy Shevchenko
@ 2018-02-26 11:56 ` John Garry
2018-02-26 12:21 ` Andy Shevchenko
0 siblings, 1 reply; 13+ messages in thread
From: John Garry @ 2018-02-26 11:56 UTC (permalink / raw)
To: Andy Shevchenko, gregkh, jslaby, p.zabel, heiko, ed.blake, jhogan
Cc: linux-serial, linux-kernel, linuxarm
>>>>> 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.
>
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
0x0, // _TRA
0x08, // _LEN
, ,
IO02
The latest framework changes and host driver patchset are here:
https://lkml.org/lkml/2018/2/19/465
Here is how we probe the children:
static int hisi_lpc_acpi_set_io_res(struct device *child,
struct device *hostdev,
const struct resource **res,
int *num_res)
{
[ ... In this part we just get the child resources ]
/* translate the I/O resources */
for (i = 0; i < count; i++) {
int ret;
if (!(resources[i].flags & IORESOURCE_IO))
continue;
ret = hisi_lpc_acpi_xlat_io_res(adev, host, &resources[i]);
if (ret) {
dev_err(child, "translate IO range failed(%d)\n", ret);
return ret;
}
}
*res = resources;
*num_res = count;
return 0;
}
static int hisi_lpc_acpi_probe(struct device *hostdev)
{
struct acpi_device *adev = ACPI_COMPANION(hostdev);
struct hisi_lpc_mfd_cell *hisi_lpc_mfd_cells;
struct mfd_cell *mfd_cells;
struct acpi_device *child;
int size, ret, count = 0, cell_num = 0;
list_for_each_entry(child, &adev->children, node)
cell_num++;
/* allocate the mfd cell and companion acpi info, one per child */
size = sizeof(*mfd_cells) + sizeof(*hisi_lpc_mfd_cells);
mfd_cells = devm_kcalloc(hostdev, cell_num, size, GFP_KERNEL);
if (!mfd_cells)
return -ENOMEM;
hisi_lpc_mfd_cells = (struct hisi_lpc_mfd_cell *)
&mfd_cells[cell_num];
/* Only consider the children of the host */
list_for_each_entry(child, &adev->children, node) {
struct mfd_cell *mfd_cell = &mfd_cells[count];
struct hisi_lpc_mfd_cell *hisi_lpc_mfd_cell =
&hisi_lpc_mfd_cells[count];
struct mfd_cell_acpi_match *acpi_match =
&hisi_lpc_mfd_cell->acpi_match;
char *name = hisi_lpc_mfd_cell[count].name;
char *pnpid = hisi_lpc_mfd_cell[count].pnpid;
struct mfd_cell_acpi_match match = {
.pnpid = pnpid,
};
snprintf(name, MFD_CHILD_NAME_LEN, MFD_CHILD_NAME_PREFIX"%s",
acpi_device_hid(child));
snprintf(pnpid, ACPI_ID_LEN, "%s", acpi_device_hid(child));
memcpy(acpi_match, &match, sizeof(*acpi_match));
mfd_cell->name = name;
mfd_cell->acpi_match = acpi_match;
ret = hisi_lpc_acpi_set_io_res(&child->dev, &adev->dev,
&mfd_cell->resources,
&mfd_cell->num_resources);
if (ret) {
dev_warn(&child->dev, "set resource fail(%d)\n", ret);
return ret;
}
count++;
}
ret = mfd_add_devices(hostdev, PLATFORM_DEVID_NONE,
mfd_cells, cell_num, NULL, 0, NULL);
if (ret) {
dev_err(hostdev, "failed to add mfd cells (%d)\n", ret);
return ret;
}
return 0;
}
As you know, this is not accepted upstream yet, but I really hope I'm
close. Hence the RFC tag for the UART patchset.
Please let me know if you require more details.
Thanks,
John
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support
2018-02-26 11:56 ` John Garry
@ 2018-02-26 12:21 ` Andy Shevchenko
2018-02-26 12:27 ` Andy Shevchenko
2018-02-26 12:37 ` John Garry
0 siblings, 2 replies; 13+ messages in thread
From: Andy Shevchenko @ 2018-02-26 12:21 UTC (permalink / raw)
To: John Garry, gregkh, jslaby, p.zabel, heiko, ed.blake, jhogan
Cc: linux-serial, linux-kernel, linuxarm
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.
> >
>
> 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 ?
> 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
- register PNP driver manually for that cell instead of MFD
- 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)
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support
2018-02-26 12:21 ` Andy Shevchenko
@ 2018-02-26 12:27 ` Andy Shevchenko
2018-02-26 13:15 ` John Garry
2018-02-26 12:37 ` John Garry
1 sibling, 1 reply; 13+ messages in thread
From: Andy Shevchenko @ 2018-02-26 12:27 UTC (permalink / raw)
To: John Garry, gregkh, jslaby, p.zabel, heiko, ed.blake, jhogan
Cc: linux-serial, linux-kernel, linuxarm
On Mon, 2018-02-26 at 14:21 +0200, Andy Shevchenko wrote:
> On Mon, 2018-02-26 at 11:56 +0000, John Garry wrote:
> > Device (LPC0.CON0) {
> > Name (_HID, "HISI1031")
> > // Name (_CID, "PNP0501") // cannot support PNP
One more question. What is the problem with this CID? Do you have a race
condition in enumeration?
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support
2018-02-26 12:21 ` Andy Shevchenko
2018-02-26 12:27 ` Andy Shevchenko
@ 2018-02-26 12:37 ` John Garry
1 sibling, 0 replies; 13+ messages in thread
From: John Garry @ 2018-02-26 12:37 UTC (permalink / raw)
To: Andy Shevchenko, gregkh, jslaby, p.zabel, heiko, ed.blake, jhogan
Cc: linux-serial, linux-kernel, linuxarm
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
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support
2018-02-26 12:27 ` Andy Shevchenko
@ 2018-02-26 13:15 ` John Garry
2018-02-26 15:02 ` Andy Shevchenko
0 siblings, 1 reply; 13+ messages in thread
From: John Garry @ 2018-02-26 13:15 UTC (permalink / raw)
To: Andy Shevchenko, gregkh, jslaby, p.zabel, heiko, ed.blake, jhogan
Cc: linux-serial, linux-kernel, linuxarm
On 26/02/2018 12:27, Andy Shevchenko wrote:
> On Mon, 2018-02-26 at 14:21 +0200, Andy Shevchenko wrote:
>> On Mon, 2018-02-26 at 11:56 +0000, John Garry wrote:
>
>
>>> Device (LPC0.CON0) {
>>> Name (_HID, "HISI1031")
>
>>> // Name (_CID, "PNP0501") // cannot support PNP
>
>
> One more question. What is the problem with this CID? Do you have a race
> condition in enumeration?
>
Hi Andy,
Not sure if race condition exactly. I tried enabling this CID and a pnp
device is created in pnpacpi_add_device_handler(), while we have already
marked the corresponding acpi_device to skip enumeration in ACPI scan
handler (by flagging it as a serial bus slave).
Thanks,
John
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support
2018-02-26 13:15 ` John Garry
@ 2018-02-26 15:02 ` Andy Shevchenko
2018-02-26 15:07 ` John Garry
0 siblings, 1 reply; 13+ messages in thread
From: Andy Shevchenko @ 2018-02-26 15:02 UTC (permalink / raw)
To: John Garry, gregkh, jslaby, p.zabel, heiko, ed.blake, jhogan
Cc: linux-serial, linux-kernel, linuxarm
On Mon, 2018-02-26 at 13:15 +0000, John Garry wrote:
> On 26/02/2018 12:27, Andy Shevchenko wrote:
> > On Mon, 2018-02-26 at 14:21 +0200, Andy Shevchenko wrote:
> > > On Mon, 2018-02-26 at 11:56 +0000, John Garry wrote:
> >
> >
> > > > Device (LPC0.CON0) {
> > > > Name (_HID, "HISI1031")
> > > > // Name (_CID, "PNP0501") // cannot support PNP
> >
> >
> > One more question. What is the problem with this CID? Do you have a
> > race
> > condition in enumeration?
> >
>
> Hi Andy,
>
> Not sure if race condition exactly. I tried enabling this CID and a
> pnp
> device is created in pnpacpi_add_device_handler(), while we have
> already
> marked the corresponding acpi_device to skip enumeration in ACPI scan
> handler (by flagging it as a serial bus slave).
Is that code already in upstream?
If no, please, Cc next version to me and possible Mika.
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support
2018-02-26 15:02 ` Andy Shevchenko
@ 2018-02-26 15:07 ` John Garry
2018-04-12 16:31 ` John Garry
0 siblings, 1 reply; 13+ messages in thread
From: John Garry @ 2018-02-26 15:07 UTC (permalink / raw)
To: Andy Shevchenko, gregkh, jslaby, p.zabel, heiko, ed.blake, jhogan
Cc: linux-serial, linux-kernel, linuxarm
On 26/02/2018 15:02, Andy Shevchenko wrote:
> On Mon, 2018-02-26 at 13:15 +0000, John Garry wrote:
>> On 26/02/2018 12:27, Andy Shevchenko wrote:
>>> On Mon, 2018-02-26 at 14:21 +0200, Andy Shevchenko wrote:
>>>> On Mon, 2018-02-26 at 11:56 +0000, John Garry wrote:
>>>
>>>
>>>>> Device (LPC0.CON0) {
>>>>> Name (_HID, "HISI1031")
>>>>> // Name (_CID, "PNP0501") // cannot support PNP
>>>
>>>
>>> One more question. What is the problem with this CID? Do you have a
>>> race
>>> condition in enumeration?
>>>
>>
>> Hi Andy,
>>
>> Not sure if race condition exactly. I tried enabling this CID and a
>> pnp
>> device is created in pnpacpi_add_device_handler(), while we have
>> already
>> marked the corresponding acpi_device to skip enumeration in ACPI scan
>> handler (by flagging it as a serial bus slave).
>
> Is that code already in upstream?
No, not yet.
>
> If no, please, Cc next version to me and possible Mika.
Of course. I should be sending it later today.
>
All the best,
John
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support
2018-02-26 15:07 ` John Garry
@ 2018-04-12 16:31 ` John Garry
0 siblings, 0 replies; 13+ messages in thread
From: John Garry @ 2018-04-12 16:31 UTC (permalink / raw)
To: Andy Shevchenko
Cc: gregkh, jslaby, p.zabel, heiko, ed.blake, jhogan, linux-serial,
linux-kernel, linuxarm
On 26/02/2018 15:07, John Garry wrote:
> On 26/02/2018 15:02, Andy Shevchenko wrote:
>> On Mon, 2018-02-26 at 13:15 +0000, John Garry wrote:
>>> On 26/02/2018 12:27, Andy Shevchenko wrote:
>>>> On Mon, 2018-02-26 at 14:21 +0200, Andy Shevchenko wrote:
>>>>> On Mon, 2018-02-26 at 11:56 +0000, John Garry wrote:
>>>>
>>>>
>>>>>> Device (LPC0.CON0) {
>>>>>> Name (_HID, "HISI1031")
>>>>>> // Name (_CID, "PNP0501") // cannot support PNP
>>>>
>>>>
>>>> One more question. What is the problem with this CID? Do you have a
>>>> race
>>>> condition in enumeration?
>>>>
>>>
>>> Hi Andy,
>>>
>>> Not sure if race condition exactly. I tried enabling this CID and a
>>> pnp
>>> device is created in pnpacpi_add_device_handler(), while we have
>>> already
>>> marked the corresponding acpi_device to skip enumeration in ACPI scan
>>> handler (by flagging it as a serial bus slave).
>>
>> Is that code already in upstream?
>
> No, not yet.
>
>>
>> If no, please, Cc next version to me and possible Mika.
>
> Of course. I should be sending it later today.
>
Hi Andy,
A while ago we discussed on this thread the possibility of adding
generic 8250 IO space platform driver support for ACPI FW.
In this discussion I mentioned that we require specifically platform
device support, and not PNP device support, as this is how we enumerate
the devices in the host controller driver. I think you're familiar with
this driver - here is the thread posting for reference:
https://lkml.org/lkml/2018/3/6/230
I would say that there were 2 main takeaway points:
a. for 8250-compatible UART, we should use a PNP driver for ACPI FW
b. you prefered us to change the host driver to use an ACPI handler approach
For b., I was not keen as we already did try the handler in the ACPI
core code, but this was not so welcome. Reasoning here:
https://lkml.org/lkml/2018/2/14/532
I did also say that I would prefer not to change approach after a very
long upstream effort, with no clear end in sight.
However do you have an idea on creating a PNP device in a.? That is,
enumerate (create) a 8250 PNP device.
If you look at the least driver here:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/bus/hisi_lpc.c
We could have this working with a change in the ACPI probe code, like in
this code snippet:
list_for_each_entry(child, &adev->children, node) {
struct resource_entry *rentry;
LIST_HEAD(resource_list);
int rc;
if (!acpi_is_pnp_device(child))
continue;
acpi_dev_get_resources(child, &resource_list, NULL, NULL);
list_for_each_entry(rentry, &resource_list, node) {
struct resource *res = rentry->res;
if (res->flags | IORESOURCE_IO)
hisi_lpc_acpi_xlat_io_res(child, adev, res); /* bad */
}
rc = pnpacpi_add_device(child);
if (rc)
return rc;
}
Obviously this is not sound as we should not modify the child
acpi_device resources.
Alternatively, as another approach, I could copy the relevant code
pnpacpi_add_device() verbatim into this above code, and xlat the
resource of the PNP device, but it's not good to copy the code like.
Any other ideas?
All the best,
John
>>
> All the best,
> John
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2018-04-12 16:31 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1519324923-196857-1-git-send-email-john.garry@huawei.com>
[not found] ` <1519381801.10722.103.camel@linux.intel.com>
[not found] ` <3c4c5f58-a661-13c8-cc1c-8d43828982cb@huawei.com>
[not found] ` <1519407117.10722.124.camel@linux.intel.com>
2018-02-26 9:33 ` [RFC PATCH 0/2] serial: 8250_dw: IO space + polling mode support John Garry
2018-02-26 9:53 ` Andy Shevchenko
2018-02-26 10:45 ` John Garry
2018-02-26 11:28 ` Andy Shevchenko
2018-02-26 11:56 ` John Garry
2018-02-26 12:21 ` Andy Shevchenko
2018-02-26 12:27 ` Andy Shevchenko
2018-02-26 13:15 ` John Garry
2018-02-26 15:02 ` Andy Shevchenko
2018-02-26 15:07 ` John Garry
2018-04-12 16:31 ` John Garry
2018-02-26 12:37 ` John Garry
[not found] ` <1519324923-196857-3-git-send-email-john.garry@huawei.com>
[not found] ` <1519407313.10722.127.camel@linux.intel.com>
2018-02-26 10:54 ` [RFC PATCH 2/2] serial: 8250_dw: support polling mode John Garry
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).