RFC: MPC52xx serial port configuration from DT blob
Hi All,
We have a MPC5200B-based board running an arch/powerpc kernel and we need the ability to configure a non-console serial port for a particular baud rate during system start-up. It seems that the UART driver in drivers/serial/mpc52xx_uart.c does not support this. It only allows to set parameters for a port that is used as a console, and for which those parameters are passed in the kernel command line. We would like to extend the mpc52xx_uart.c driver to be able to retrieve port options from the DT blob and configure a given port accordingly. A new port-specific property called "options" would be used for this. It would have syntax following its namesake in "console" kernel parameter, as described in Documentation/kernel-parameters.txt.
For example, the following settings in the .dts file would make UART5 to be configured at 115200 baud, no parity, 8 bits.
serial@2800 { // PSC5
device_type = "serial";
compatible = "mpc5200b-psc-uart\0mpc5200-psc-uart";
port-number = <4>; // Logical port assignment
options = "115200n8"
cell-index = <4>;
reg = <2800 100>;
interrupts = <2 c 0>;
interrupt-parent = <500>;
};In case a console port has conflicting options given in the kernel command line and in the DT blob, the command line values would be used.
Any comments on the above will be appreciated.
Thanks in advance,
Bartlomiej
Quoted 27 lines · Bartlomiej
We have a MPC5200B-based board running an
arch/powerpckernel and we need the ability to configure a non-console serial port for a particular baud rate during system start-up. It seems that the UART driver indrivers/serial/mpc52xx_uart.cdoes not support this. It only allows to set parameters for a port that is used as a console, and for which those parameters are passed in the kernel command line. We would like to extend thempc52xx_uart.cdriver to be able to retrieve port options from the DT blob and configure a given port accordingly. A new port-specific property called "options" would be used for this. It would have syntax following its namesake in "console" kernel parameter, as described inDocumentation/kernel-parameters.txt.For example, the following settings in the .dts file would make UART5 to be configured at 115200 baud, no parity, 8 bits.
serial@2800 { // PSC5
device_type = "serial"; compatible = "mpc5200b-psc-uart\0mpc5200-psc-uart"; port-number = <4>; // Logical port assignment options = "115200n8" cell-index = <4>; reg = <2800 100>; interrupts = <2 c 0>; interrupt-parent = <500>; };
Quoted 4 lines
In case a console port has conflicting options given in the kernel command line and in the DT blob, the command line values would be used.
Any comments on the above will be appreciated.
The device tree is intended to be an OS-independent description of the state of the platform hardware as left by firmware (or bootwrapper). It is not intended to contain kernel configuration parameters or options, though there are a few exceptions.
So, this kind of change is unlikely to be accepted.
-Dale
Quoted 31 lines · Dale Farnsworth
Quoted 30 lines · Bartlomiej
We have a MPC5200B-based board running an
arch/powerpckernel and we need the ability to configure a non-console serial port for a particular baud rate during system start-up. It seems that the UART driver indrivers/serial/mpc52xx_uart.cdoes not support this. It only allows to set parameters for a port that is used as a console, and for which those parameters are passed in the kernel command line. We would like to extend thempc52xx_uart.cdriver to be able to retrieve port options from the DT blob and configure a given port accordingly. A new port-specific property called "options" would be used for this. It would have syntax following its namesake in "console" kernel parameter, as described inDocumentation/kernel-parameters.txt.For example, the following settings in the .dts file would make UART5 to be configured at 115200 baud, no parity, 8 bits.
serial@2800 { // PSC5
device_type = "serial"; compatible = "mpc5200b-psc-uart\0mpc5200-psc-uart"; port-number = <4>; // Logical port assignment options = "115200n8" cell-index = <4>; reg = <2800 100>; interrupts = <2 c 0>; interrupt-parent = <500>; };In case a console port has conflicting options given in the kernel command line and in the DT blob, the command line values would be used.
Quoted 8 lines
Quoted 1 line
Any comments on the above will be appreciated.
The device tree is intended to be an OS-independent description of the state of the platform hardware as left by firmware (or bootwrapper). It is not intended to contain kernel configuration parameters or options, though there are a few exceptions.
So, this kind of change is unlikely to be accepted.
Isn't the /chosen node intended for this kind of data? Although I must admit that I'm not at all familiar with the conventions used in /chosen.
g.
Signature · 4 lines
Grant Likely, B.Sc. P.Eng. Secret Lab Technologies Ltd. [email protected] (403) 399-0195
Quoted 29 lines · Bartlomiej Sieka
Hi All,
We have a MPC5200B-based board running an
arch/powerpckernel and we need the ability to configure a non-console serial port for a particular baud rate during system start-up. It seems that the UART driver indrivers/serial/mpc52xx_uart.cdoes not support this. It only allows to set parameters for a port that is used as a console, and for which those parameters are passed in the kernel command line. We would like to extend thempc52xx_uart.cdriver to be able to retrieve port options from the DT blob and configure a given port accordingly. A new port-specific property called "options" would be used for this. It would have syntax following its namesake in "console" kernel parameter, as described inDocumentation/kernel-parameters.txt.For example, the following settings in the .dts file would make UART5 to be configured at 115200 baud, no parity, 8 bits.
serial@2800 { // PSC5
device_type = "serial"; compatible = "mpc5200b-psc-uart\0mpc5200-psc-uart"; port-number = <4>; // Logical port assignment options = "115200n8" cell-index = <4>; reg = <2800 100>; interrupts = <2 c 0>; interrupt-parent = <500>; };
Quoted 5 lines
In case a console port has conflicting options given in the kernel command line and in the DT blob, the command line values would be used.
Any comments on the above will be appreciated.
The kernel only "use" the serial for console. If it's not a console, then it's used
by userspace and it's userspace job to configure it as it sees fit imho ...
Sylvain