serial : Device tree support for multiple serial devices.
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
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
Quoted 8 lines · Simon Glass
What I did for now was to implement a new
fdt_serial.cfile 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
Hi,
Quoted 9 lines · hanumant
Quoted 8 lines · Simon Glass
What I did for now was to implement a new
fdt_serial.cfile 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