Skip to contentSkip to conversation

serial : Device tree support for multiple serial devices.

U-Boot hanumant 2 participants 4 messages Jan 23, 2012 – Feb 21, 2012

lore
Share & tools
lore

hanumant

author
#0 lore raw

Hi

The board that I am working on has multiple serial ports.
I am trying to use device trees to configure board resource of these ports as well as the serial framework. So the driver doesnot know apriori the number of uart ports on the board. But querries the device tree for it.I am facing the following issues.

1) Ports are memory mapped and each port has its own register space. As such the serial framework apis dont provide for passing a port id at the time of the call. So how do i access the correct register space for the corresponding port?. Or should i define for my own set of apis to be called by clients, allowing me to access specific ports corresponding address space, and use the serial framework api's only for the default serial console?

2) the default serial console, also gets configured based on information obtained from the device tree, at run time. If i keep a global representation of the default serial console with its base address etc, it will still have to be reinitialized after relocation. The default_serial_console() gives me an opportunity to reinitialize the global structure. Is that the way to go?

Thanks
Hanumant

#1 lore raw

Hi,

Quoted 16 lines · hanumant

Hi

? ? ? ?The board that I am working on has multiple serial ports. I am trying to use device trees to configure board resource of these ports as well as the serial framework. So the driver doesnot know apriori the number of uart ports on the board. But querries the device tree for it.I am facing the following issues.

1) Ports are memory mapped and each port has its own register space. As such the serial framework apis dont provide for passing a port id at the time of the call. So how do i access the correct register space for the corresponding port?. Or should i define for my own set of apis to be called by clients, allowing me to access specific ports corresponding address space, and use the serial framework api's only for the default serial console?

Quoted 6 lines

2) the default serial console, also gets configured based on information obtained from the device tree, at run time. If i keep a global representation of the default serial console with its base address etc, it will still have to be reinitialized after relocation. The default_serial_console() gives me an opportunity to reinitialize the global structure. Is that the way to go?

I have done similar things. IMO the right way to go is to refactor the serial API so that it takes a device pointer as the first parameter. I haven't done it though.

What I did for now was to implement a new fdt_serial.c file which defines 4 separate sets of function (each set containing putc, getc, etc.) with the device pointer built in to those functions. It's really ugly, and is what eserial does. Those functions look up the device tree during init and redirect to the real serial driver's functions of the same name.

I could probably rustle up a patch if it would help.

Regards,
Simon

Quoted 9 lines

Thanks
Hanumant

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

author
#2 lore raw
Quoted 8 lines · Simon Glass

What I did for now was to implement a new fdt_serial.c file which defines 4 separate sets of function (each set containing putc, getc, etc.) with the device pointer built in to those functions. It's really ugly, and is what eserial does. Those functions look up the device tree during init and redirect to the real serial driver's functions of the same name.

I could probably rustle up a patch if it would help.

Thank you a patch would help a great deal.

Thanks
hanumant

#3 lore raw

Hi,

Quoted 9 lines · hanumant
Quoted 8 lines · Simon Glass

What I did for now was to implement a new fdt_serial.c file which defines 4 separate sets of function (each set containing putc, getc, etc.) with the device pointer built in to those functions. It's really ugly, and is what eserial does. Those functions look up the device tree during init and redirect to the real serial driver's functions of the same name.

Quoted 4 lines
Quoted 1 line

I could probably rustle up a patch if it would help.

Thank you a patch would help a great deal.

Maybe too late to be useful, but I have finally got to this, and sent a patch to the list.

Quoted 3 lines

Thanks
hanumant

Regards,
Simon