[PATCH] ARM: Support for IXP4xx CPU.

Krzysztof Halasa khc at pm.waw.pl
Sun Apr 14 06:30:40 EDT 2013


Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com> writes:

>> +static int ixp4xx_console_init(void)
>> +{
>> +	/* Register the serial port */
>> +	add_ns16550_device(0, (u32)IXP4XX_UART1_BASE, 1024, IORESOURCE_MEM_8BIT, &serial_plat);
> we have multiple uart on ixp do no hard code it

Yes, but there is a single console, at least on all devices I have
access to. I can add CONFIG_* item for this, but it will be forced to 0
for now anyway (on all supported boards).

>> --- a/drivers/serial/serial_ns16550.c
>> +++ b/drivers/serial/serial_ns16550.c
> please split this in an other patch
>
> and pass this as a pdata
>> @@ -137,7 +137,11 @@ static void ns16550_serial_init_port(struct console_device *cdev)
>>  {
>>  	/* initializing the device for the first time */
>>  	ns16550_write(cdev, 0x00, lcr); /* select ier reg */
>> +#ifdef CONFIG_ARCH_IXP4XX
>> +	ns16550_write(cdev, IER_UUE, ier); /* Enable UART operation */
>> +#else
>>  	ns16550_write(cdev, 0x00, ier);
>> +#endif
>>  
>>  #ifdef CONFIG_DRIVER_SERIAL_NS16550_OMAP_EXTENSIONS
>>  	ns16550_write(cdev, 0x07, mdr1);	/* Disable */

What do you mean?

ns16550_probe() doesn't seem to accept anything which could be used for
custom init:

static int ns16550_probe(struct device_d *dev)
{
	struct console_device *cdev;
	struct NS16550_plat *plat = (struct NS16550_plat *)dev->platform_data;

	/* we do expect platform specific data */
	if (plat == NULL)
		return -EINVAL;
	dev->priv = dev_request_mem_region(dev, 0);

	cdev = xzalloc(sizeof(*cdev));

	cdev->dev = dev;
	if (plat->f_caps)
		cdev->f_caps = plat->f_caps;
	else
		cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR;
	cdev->tstc = ns16550_tstc;
	cdev->putc = ns16550_putc;
	cdev->getc = ns16550_getc;
	cdev->setbrg = ns16550_setbaudrate;

	ns16550_serial_init_port(cdev);

	return console_register(cdev);
}

-- 
Krzysztof Halasa



More information about the barebox mailing list