diff options
author | Peter Rosin <peda@axentia.se> | 2017-02-13 18:06:56 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2017-02-14 08:54:59 +0100 |
commit | 31e16d17690e39e9ca8170a0066404e1069aa072 (patch) | |
tree | d337f538366557ba4b8f35983f3ef507fd85ba25 /arch/arm/mach-at91/at91rm9200_devices.c | |
parent | b225bbf295c92263adbcec2c385c5e8d83542c72 (diff) | |
download | barebox-31e16d17690e39e9ca8170a0066404e1069aa072.tar.gz barebox-31e16d17690e39e9ca8170a0066404e1069aa072.tar.xz |
at91: serial: pullup RX pins, do not pullup TX pins
We have a number of sama5d3 devices that sometimes hangs at the
barebox prompt during boot due to floating RX pins. This patch
fixes the problem for us (and probably others). It is similar in
nature to linux kernel commit 138c2b2f175b ("ARM: dts: at91: fixes
dbgu pinctrl, set pullup on rx, clear pullup on tx")
While at it, remove pointless waste of power that the pullup of
the TX pins causes and fix the signal comments for SAMA5D4.
Signed-off-by: Peter Rosin <peda@axentia.se>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-at91/at91rm9200_devices.c')
-rw-r--r-- | arch/arm/mach-at91/at91rm9200_devices.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c index 7b68cdac29..a110ee3e3c 100644 --- a/arch/arm/mach-at91/at91rm9200_devices.c +++ b/arch/arm/mach-at91/at91rm9200_devices.c @@ -250,16 +250,16 @@ void __init at91_add_device_spi(int spi_id, struct at91_spi_platform_data *pdata resource_size_t __init at91_configure_dbgu(void) { - at91_set_A_periph(AT91_PIN_PA30, 0); /* DRXD */ - at91_set_A_periph(AT91_PIN_PA31, 1); /* DTXD */ + at91_set_A_periph(AT91_PIN_PA30, 1); /* DRXD */ + at91_set_A_periph(AT91_PIN_PA31, 0); /* DTXD */ return AT91_BASE_SYS + AT91_DBGU; } resource_size_t __init at91_configure_usart0(unsigned pins) { - at91_set_A_periph(AT91_PIN_PA17, 1); /* TXD0 */ - at91_set_A_periph(AT91_PIN_PA18, 0); /* RXD0 */ + at91_set_A_periph(AT91_PIN_PA17, 0); /* TXD0 */ + at91_set_A_periph(AT91_PIN_PA18, 1); /* RXD0 */ if (pins & ATMEL_UART_CTS) at91_set_A_periph(AT91_PIN_PA20, 0); /* CTS0 */ @@ -277,8 +277,8 @@ resource_size_t __init at91_configure_usart0(unsigned pins) resource_size_t __init at91_configure_usart1(unsigned pins) { - at91_set_A_periph(AT91_PIN_PB20, 1); /* TXD1 */ - at91_set_A_periph(AT91_PIN_PB21, 0); /* RXD1 */ + at91_set_A_periph(AT91_PIN_PB20, 0); /* TXD1 */ + at91_set_A_periph(AT91_PIN_PB21, 1); /* RXD1 */ if (pins & ATMEL_UART_RI) at91_set_A_periph(AT91_PIN_PB18, 0); /* RI1 */ @@ -298,8 +298,8 @@ resource_size_t __init at91_configure_usart1(unsigned pins) resource_size_t __init at91_configure_usart2(unsigned pins) { - at91_set_A_periph(AT91_PIN_PA22, 0); /* RXD2 */ - at91_set_A_periph(AT91_PIN_PA23, 1); /* TXD2 */ + at91_set_A_periph(AT91_PIN_PA22, 1); /* RXD2 */ + at91_set_A_periph(AT91_PIN_PA23, 0); /* TXD2 */ if (pins & ATMEL_UART_CTS) at91_set_B_periph(AT91_PIN_PA30, 0); /* CTS2 */ @@ -311,8 +311,8 @@ resource_size_t __init at91_configure_usart2(unsigned pins) resource_size_t __init at91_configure_usart3(unsigned pins) { - at91_set_B_periph(AT91_PIN_PA5, 1); /* TXD3 */ - at91_set_B_periph(AT91_PIN_PA6, 0); /* RXD3 */ + at91_set_B_periph(AT91_PIN_PA5, 0); /* TXD3 */ + at91_set_B_periph(AT91_PIN_PA6, 1); /* RXD3 */ if (pins & ATMEL_UART_CTS) at91_set_B_periph(AT91_PIN_PB1, 0); /* CTS3 */ |