Skip to contentSkip to conversation

RFC: MPC52xx serial port configuration from DT blob

DISCUSSION Bartlomiej Sieka 4 participants 4 messages Apr 13, 2007 – Apr 17, 2007

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw
Quoted 27 lines · Bartlomiej

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>;
};
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

#2 lore raw
Quoted 31 lines · Dale Farnsworth
Quoted 30 lines · Bartlomiej

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.

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
#3 lore raw
In reply to Bartlomiej Sieka
Quoted 29 lines · Bartlomiej Sieka

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>;
};
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