030-serial-divisor.patch 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. Index: linux-2.6.21.7/drivers/serial/pxa.c
  2. ===================================================================
  3. --- linux-2.6.21.7.orig/drivers/serial/pxa.c
  4. +++ linux-2.6.21.7/drivers/serial/pxa.c
  5. @@ -41,6 +41,7 @@
  6. #include <linux/platform_device.h>
  7. #include <linux/tty.h>
  8. #include <linux/tty_flip.h>
  9. +#include <linux/serial.h>
  10. #include <linux/serial_core.h>
  11. #include <asm/io.h>
  12. @@ -577,8 +578,16 @@ static void serial_pxa_config_port(struc
  13. static int
  14. serial_pxa_verify_port(struct uart_port *port, struct serial_struct *ser)
  15. {
  16. - /* we don't want the core code to modify any port params */
  17. - return -EINVAL;
  18. + struct uart_pxa_port *up = (struct uart_pxa_port *)port;
  19. + int ret = 0;
  20. +
  21. + if (up->port.uartclk / 16 != ser->baud_base)
  22. + ret = -EINVAL;
  23. + else if (((up->port.line & 1) == 0) && ser->baud_base > 230400) /* Max baud rate for STUART and FFUART */
  24. + ret = -EINVAL;
  25. + else if (((up->port.line & 1) != 0) && ser->baud_base > 921600) /* Max baud rate for HWUART and BTUART */
  26. + ret = -EINVAL;
  27. + return ret;
  28. }
  29. static const char *