diff options
Diffstat (limited to 'sys/arm/at91/uart_dev_at91usart.c')
-rw-r--r-- | sys/arm/at91/uart_dev_at91usart.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/arm/at91/uart_dev_at91usart.c b/sys/arm/at91/uart_dev_at91usart.c index 77ab0ca..89ed2d2 100644 --- a/sys/arm/at91/uart_dev_at91usart.c +++ b/sys/arm/at91/uart_dev_at91usart.c @@ -190,9 +190,10 @@ at91_usart_param(struct uart_bas *bas, int baudrate, int databits, WR4(bas, USART_MR, mr); /* - * Set the baud rate + * Set the baud rate (only if we know our master clock rate) */ - WR4(bas, USART_BRGR, BAUD2DIVISOR(baudrate)); + if (DEFAULT_RCLK != 0) + WR4(bas, USART_BRGR, BAUD2DIVISOR(baudrate)); /* XXX Need to take possible synchronous mode into account */ return (0); @@ -674,7 +675,10 @@ at91_usart_bus_ioctl(struct uart_softc *sc, int request, intptr_t data) case UART_IOCTL_OFLOW: break; case UART_IOCTL_BAUD: - WR4(&sc->sc_bas, USART_BRGR, BAUD2DIVISOR(*(int *)data)); + /* only if we know our master clock rate */ + if (DEFAULT_RCLK != 0) + WR4(&sc->sc_bas, USART_BRGR, + BAUD2DIVISOR(*(int *)data)); return (0); } return (EINVAL); |