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