summaryrefslogtreecommitdiffstats
path: root/sys/arm/at91/uart_dev_at91usart.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arm/at91/uart_dev_at91usart.c')
-rw-r--r--sys/arm/at91/uart_dev_at91usart.c10
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);
OpenPOWER on IntegriCloud