Re: Pericom PCIe Serial board Support (12d8:7952/4/8) - Chip PI7C9X7952/4/8

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

 



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 ....

1311,1333d1310
< 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);
< }
<
1850,1874d1826
< /*
< * 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,
< },
<

Regards,
Angelo

2013/6/26 Angelo Butti <buttiangelo@xxxxxxxx>:
> Hi all,
> my name is Angelo and I have a problem with some Pericom Serial boards.
> This hardware is compatible to 16C550 but is not working good.
>
> Now I can workaround the problem, I understand it but I'm not able to make some
> patch for the serial driver inside the linux kernel. So, now I want
> try to explain the
> problems and if you can adjust the driver also for this device will be
> great; or if you can
> explain me with some example how I can do it and send to you the patch .....
>
> Anyway, the problem is related to Pericom serial boards, pci-id:
> 12d8:7952 (2 serials)
> 12d8:7954 (4 serials)
> 12d8:7958 (8 serials)
>
> The first problem is related to the kind of the serial ports. This
> hardware can be
> 232-422-4852W-4854W mode, and must be set inside the PCI express
> registers at the offset b4h.
> For example if you have a 2 serial port 485-2W board, before use it
> you must set that
> register to 0xFF ( I make this with setpci command and all is ok)
>
> Te second problem, more critical for me, is the bps setting. The board
> that I want use have
> on board a 14.7456 Mhz, and there are a table inside datasheet with
> the configuration example
> and the formula to set proper bps settings. The problem is related to
> the standard linux driver that use the clock equal to  1.8432 MHz.
> So every time that I open the serial, this bps isn't correct. I must
> adjust it writing inside the registers (after open) to fix the
> problem.
> Is possible add this kind of board inside the standard linux driver to
> have a good bps setting ?
>
> En example, to set 115200bps:
> Standard linux driver: DLL:0x1 DLH:0x0
> Pericom formula: DLL:0x8 DLH:0x0
>
> (Ref. PI7C9X7952/4/8 (Datasheet))
>
> Thanks, best regards
> Angelo
--
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