Re: [PATCH] serial: 8250: Integrate Fintek into pnp

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01/27/2016 09:49 AM, Ricardo Ribalda Delgado wrote:
> Hi Peter
> 
> 
> On Wed, Jan 27, 2016 at 6:17 PM, Peter Hurley <peter@xxxxxxxxxxxxxxxxxx> wrote:
> 
>> The ACPI device definition block is not right.
>> I mean, the whole point of ACPI is to _define_ the h/w so the OS
>> doesn't h/w probe.
>>
>> Is this in your firmware that you can update?
>>
> 
> Unfortunately, it is part of the BIOS blob that I am not in control of.

Ok.


>>
>>> I cannot find anything that makes it differentiable form a standard
>>> 16550A, but ACPI is definately not my mother tonge :)
>>>
>>>                     Device (UAR1)
>>>                     {
>>>                         Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */)  // _HID: Hardware ID
>>
>> Instead of using an _HID of PNP0501, this device definition should be
>> using a Fintek-specific _HID (Fintek has an assigned PNP prefix of "FIT").
>>
>> Then it could *also* have a _CID of PNP0501, which allows the OS to
>> "fallback" to generic uart support in the absence of a "FITxxxx" driver.
> 
> I see, but even if I was in control of the ACPI table, which FITxxx
> string should I use? The documentation from the chip does not mention
> any.
> 
> If I chose one myself there is no warrantee that the rest of the world
> would follow my decision, resulting in a driver that can be used
> exclusively on my board :S.

Yeah, that's not ideal either.

Does one of the ACPI SYS descriptors at least claim ioport 2e-2f
or 4e-4f?


> The approach from this patch is similar to the parport_pc
> 
> ./drivers/parport/parport_pc.c ->
> 
> static void __init parport_pc_find_ports(int autoirq, int autodma)
> {
> int count = 0, err;
> 
> #ifdef CONFIG_PARPORT_PC_SUPERIO
> detect_and_report_it87();
> detect_and_report_winbond();
> detect_and_report_smsc();
> #endif
> 
> 
> static void detect_and_report_winbond(void)
> {
> if (verbose_probing)
> printk(KERN_DEBUG "Winbond Super-IO detection, now testing ports
> 3F0,370,250,4E,2E ...\n");
> winbond_check(0x3f0, 0x87);
> winbond_check(0x370, 0x87);
> winbond_check(0x2e , 0x87);
> winbond_check(0x4e , 0x87);
> winbond_check(0x3f0, 0x86);
> winbond_check2(0x250, 0x88);
> winbond_check2(0x250, 0x89);
> }
> 
> Here they probe all those io  ports, including 0x4e and 0x2e like in my chip.

Yeah, I reviewed all of the Super I/O use in mainline; none of it
is a very good model.


> If I have to guess I would say that all the fintek serial ports on the
> field are declared only as PNP0501, not only my board :S

Probably.

Now I'm wondering if we should just probe this as a standard part of
the 8250 port driver's autoconfig() instead.

The PNP id isn't really adding more confidence to whether this is a
Super I/O device.

Regards,
Peter Hurley
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux