Serocco PEB/PEF 20532 Linux 2.6.12 driver.

This is a device driver for the chip called "Serocco-M 2 Channel Serial Optimized Communication Controller (PEB/PEF 20532)". It was developed on a Linux 2.6.12 kernel running on a custom PXA255 board.

The driver supports both ports on the serocco and each one can be configured in async or HDLC mode. Async mode was tested both with a PC and an ISDN modem. The throughput is as expected. Hardware flow control is supported too but standard Linux way of doing it is used (no specific HW support for flow-control is used). HDLC mode was tested between 2 serocco based boards (for now, further testing with third party devices is planned ASAP). The standard Linux sethdlc utility may be used for tuning the communications parameters.

The platform data needed is rather simple, I had no control over the main kernel:

static struct resource serocco_resource = {
        .start  = SEROCCO_PHYS,
        .end    = (SEROCCO_PHYS + SEROCCO_SIZE),
        .flags  = IORESOURCE_MEM,

static struct platform_device serocco_device = {
        .name           = "serocco",
        .id             = 0,
        .num_resources  = 1,
        .resource       = &serocco_resource,
The configuration of the driver is done "the old way" with some defines and some module parameters. There are other parameters and defines used mostly for debugging purposes. Have a look at the comments if you want to know about them. Last but not least I wish to thank: Download the driver here.