I'm really sorry for my mistake. Also, maybe that there is a simple way to change the clock without rewrite the standard serial setup procedure, but I cannot find it .... Below the correct one: --- linux-3.10.11-200.fc19.i686/drivers/tty/serial/8250/8250_pci.c.orig 2013-09-16 20:13:52.918548000 +0300 +++ linux-3.10.11-200.fc19.i686/drivers/tty/serial/8250/8250_pci.c 2013-10-15 16:20:18.566685996 +0300 @@ -1308,6 +1308,29 @@ static int pci_default_setup(struct seri return setup_port(priv, port, bar, offset, board->reg_shift); } +static int pci_pericom_setup(struct serial_private *priv, + const struct pciserial_board *board, + struct uart_8250_port *port, int idx) +{ + unsigned int bar, offset = board->first_offset, maxnr; + + bar = FL_GET_BASE(board->flags); + if (board->flags & FL_BASE_BARS) + bar += idx; + else + offset += idx * board->uart_offset; + + maxnr = (pci_resource_len(priv->dev, bar) - board->first_offset) >> + (board->reg_shift + 3); + + if (board->flags & FL_REGION_SZ_CAP && idx >= maxnr) + return 1; + + port->port.uartclk = 14745600; + + return setup_port(priv, port, bar, offset, board->reg_shift); +} + static int ce4100_serial_setup(struct serial_private *priv, const struct pciserial_board *board, @@ -1825,6 +1848,31 @@ static struct pci_serial_quirk pci_seria .exit = pci_plx9050_exit, }, /* + * Pericom + */ + { + .vendor = 0x12d8, + .device = 0x7952, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = pci_pericom_setup, + }, + { + .vendor = 0x12d8, + .device = 0x7954, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = pci_pericom_setup, + }, + { + .vendor = 0x12d8, + .device = 0x7958, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = pci_pericom_setup, + }, + + /* * PLX */ { 2013/10/15 Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>: > On Tue, Oct 15, 2013 at 03:48:55PM +0200, Angelo Butti wrote: >> Hi all, >> I'm here again to try to solve and add support to Pericom serial devices. >> >> To solve is really simple, but I don't know if I make the correct >> procedure. The solution is change the clock value from 1.8432 to >> 14.7456. >> To do this I add a new setup specific for pericom devices, and I add >> this 3 devices inside the Master list of serial port. >> >> Now, is possible add this to the standard linux kernel, so also the >> Pericom device will be ok ? >> >> Below the patch for the 3.10.11 kernel .... > > Can you generate the patch with 'diff -u' so that it is in a format that > I can apply it to the kernel tree? Specifics on how to create the > patch, and what you need to include in it is in the > Documentation/SubmittingPatches file. > > If you have any problems or questions after reading that file, please > let us know. > > thanks, > > greg k-h -- 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