diff options
Diffstat (limited to 'recipes-kernel/linux')
8 files changed, 285 insertions, 22 deletions
diff --git a/recipes-kernel/linux/linux-at91-4.9.87/defconfig b/recipes-kernel/linux/linux-at91-4.9.87/defconfig index 05971d9..bd91c7e 100644 --- a/recipes-kernel/linux/linux-at91-4.9.87/defconfig +++ b/recipes-kernel/linux/linux-at91-4.9.87/defconfig @@ -1885,9 +1885,9 @@ CONFIG_I2C_GPIO=m # CONFIG_I2C_STUB is not set CONFIG_I2C_SLAVE=y CONFIG_I2C_SLAVE_EEPROM=m -CONFIG_I2C_DEBUG_CORE=y -CONFIG_I2C_DEBUG_ALGO=y -CONFIG_I2C_DEBUG_BUS=y +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set CONFIG_SPI=y # CONFIG_SPI_DEBUG is not set CONFIG_SPI_MASTER=y diff --git a/recipes-kernel/linux/linux-at91-4.9.87/mtcdt/linux-4.9-rs485-atmel-crtscts.patch b/recipes-kernel/linux/linux-at91-4.9.87/mtcdt/linux-4.9-rs485-atmel-crtscts.patch new file mode 100644 index 0000000..5642aee --- /dev/null +++ b/recipes-kernel/linux/linux-at91-4.9.87/mtcdt/linux-4.9-rs485-atmel-crtscts.patch @@ -0,0 +1,125 @@ +This patch allows RS485 Half Duplex (ATMEL_US_USMODE_RS485 is half duplex) to +work even if handshaking is turned on. This mimics the behavior of the EXAR +USB/Serial driver known as Vizzini. It is impossible to use handshaking when +using ATMEL_US_USMODE_RS485. This provides compatibility between MTCDT-0.1 and +MTCDT-0.2. Note that frequently the state of the driver will be stopped if +handshaking was turned on before RS485 was set. We need to take steps to enable +transmit and receive when we go to RS485 mode, or the driver will be blocked. +======================================================================================= +diff -Naru orig/drivers/tty/serial/atmel_serial.c new/drivers/tty/serial/atmel_serial.c +--- orig/drivers/tty/serial/atmel_serial.c 2021-11-30 14:54:49.313993839 -0600 ++++ new/drivers/tty/serial/atmel_serial.c 2021-11-30 16:14:58.430090773 -0600 +@@ -74,6 +74,7 @@ + + static void atmel_start_rx(struct uart_port *port); + static void atmel_stop_rx(struct uart_port *port); ++static void atmel_start_tx(struct uart_port *port); + + #ifdef CONFIG_SERIAL_ATMEL_TTYAT + +@@ -357,6 +358,7 @@ + { + struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); + unsigned int mode; ++ unsigned int sav_c_cflag = 0; + + /* Disable interrupts */ + atmel_uart_writel(port, ATMEL_US_IDR, atmel_port->tx_done_mask); +@@ -369,11 +371,33 @@ + port->rs485 = *rs485conf; + + if (rs485conf->flags & SER_RS485_ENABLED) { +- dev_dbg(port->dev, "Setting UART to RS485\n"); +- atmel_port->tx_done_mask = ATMEL_US_TXEMPTY; +- atmel_uart_writel(port, ATMEL_US_TTGR, ++ struct uart_state *state_p = port->state; ++ struct tty_struct *tty_struct_p = NULL; ++ ++ dev_dbg(port->dev, "Setting UART to RS485\n"); ++ if (state_p) ++ tty_struct_p = state_p->port.tty; ++ ++ if(tty_struct_p) { ++ struct ktermios *termios = &(tty_struct_p->termios); ++ sav_c_cflag = termios->c_cflag; ++ termios->c_cflag &= ~CRTSCTS; ++ } ++ ++ atmel_port->tx_done_mask = ATMEL_US_TXEMPTY; ++ atmel_uart_writel(port, ATMEL_US_TTGR, + rs485conf->delay_rts_after_send); ++ dev_dbg(port->dev, ++ "atmel_config_rs485: orig: c_cflag 0x%x port status 0x%x, hw_stopped %d\n", ++ sav_c_cflag,port->status,port->hw_stopped ++ ); ++ ++ port->status &= ~UPSTAT_CTS_ENABLE; + mode |= ATMEL_US_USMODE_RS485; ++ port->hw_stopped = 0; // No longer possible ++ if (atmel_port->tx_stopped == true) ++ atmel_start_tx(port); ++ atmel_start_rx(port); + } else { + dev_dbg(port->dev, "Setting UART to RS232\n"); + if (atmel_use_pdc_tx(port)) +@@ -413,13 +437,36 @@ + unsigned int mode = atmel_uart_readl(port, ATMEL_US_MR); + unsigned int rts_paused, rts_ready; + struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); ++ unsigned int sav_c_cflag = 0; + + /* override mode to RS485 if needed, otherwise keep the current mode */ + if (port->rs485.flags & SER_RS485_ENABLED) { +- atmel_uart_writel(port, ATMEL_US_TTGR, +- port->rs485.delay_rts_after_send); +- mode &= ~ATMEL_US_USMODE; +- mode |= ATMEL_US_USMODE_RS485; ++ struct uart_state *state_p = port->state; ++ struct tty_struct *tty_struct_p = NULL; ++ ++ if (state_p) ++ tty_struct_p = state_p->port.tty; ++ ++ if(tty_struct_p) { ++ struct ktermios *termios = &(tty_struct_p->termios); ++ ++ sav_c_cflag = termios->c_cflag; ++ termios->c_cflag &= ~CRTSCTS; ++ } ++ ++ atmel_uart_writel(port, ATMEL_US_TTGR, ++ port->rs485.delay_rts_after_send); ++ mode &= ~ATMEL_US_USMODE; ++ mode |= ATMEL_US_USMODE_RS485; ++ dev_dbg(port->dev, ++ "atmel_set_mctrl: SER_RS485_ENABLED: c_cflag 0x%x port status 0x%x, hw_stopped %d\n", ++ sav_c_cflag,port->status,port->hw_stopped ++ ); ++ port->status &= ~UPSTAT_CTS_ENABLE; ++ port->hw_stopped = 0; // No longer possible ++ if (atmel_port->tx_stopped == true) ++ atmel_start_tx(port); ++ atmel_start_rx(port); + } + + /* set the RTS line state according to the mode */ +@@ -2168,6 +2215,19 @@ + atmel_uart_writel(port, ATMEL_US_TTGR, + port->rs485.delay_rts_after_send); + mode |= ATMEL_US_USMODE_RS485; ++ /* CRTSCTS is impossible in RS485 mode, and breaks the driver ++ * so we cannot do a send. */ ++ dev_dbg(port->dev, ++ "atmel_set_termios: SER_RS485_ENABLED: original: c_cflag 0x%x status 0x%x, hw_stopped %d\n", ++ termios->c_cflag,port->status,port->hw_stopped ++ ); ++ ++ termios->c_cflag &= ~CRTSCTS; ++ port->status &= ~UPSTAT_CTS_ENABLE; ++ port->hw_stopped = 0; // Not possible ++ if (atmel_port->tx_stopped == true) ++ atmel_start_tx(port); ++ atmel_start_rx(port); + } else if (termios->c_cflag & CRTSCTS) { + /* RS232 with hardware handshake (RTS/CTS) */ + if (atmel_use_fifo(port) && diff --git a/recipes-kernel/linux/linux-at91-4.9.87/mtcdt/mtcdt.dts b/recipes-kernel/linux/linux-at91-4.9.87/mtcdt/mtcdt.dts index f485baa..79e8fef 100644 --- a/recipes-kernel/linux/linux-at91-4.9.87/mtcdt/mtcdt.dts +++ b/recipes-kernel/linux/linux-at91-4.9.87/mtcdt/mtcdt.dts @@ -8,6 +8,7 @@ #include <dt-bindings/gpio/mt-at91.h> + / { model = "Multi-Tech Systems MTCDT"; compatible = "atmel,at91sam9g25ek", "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9"; @@ -71,7 +72,6 @@ atmel,pins = <AT91_PIOA 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; /* PA1 gpio SD card pin pull up and deglitch */ }; - /* /delete-property/ cd-gpios; */ }; /delete-node/ mmc@f000c000; @@ -100,22 +100,21 @@ pinctrl_mts_io_out: mts_io-0 { // gpio4 and gpio5 are reset in at91bootstrap. They should not be touched in Linux. atmel,pins = - <AT91_PIOD 14 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(1)) /* PD14 WiFi BT reset */ - AT91_PIOD 16 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(1)) /* PD16 Secure reset or gpio4 reset */ - AT91_PIOD 17 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(1)) /* PD17 MTQ reset */ - AT91_PIOD 18 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(1))>; /* PD18 USB Hub reset */ + <AT91_PIOD 17 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(1)) /* PD17 MTQ reset */ + AT91_PIOD 20 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>; /* PD20 WiFi_BT_LPMode Output */ output-high; // ignored by at91_pinctrl }; pinctrl_mts_io_in: mts_io-1 { atmel,pins = - <AT91_PIOD 19 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP /* PD19 GNSS Int */ - AT91_PIOD 20 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>; /* PD20 WiFi_BT_LPMode Input */ + <AT91_PIOD 19 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>; /* PD19 GNSS Int */ }; // GNSS kept in reset to prevent EXAR from hanging pinctrl_mts_io_gnss: mts_io-2 { atmel,pins = <AT91_PIOC 4 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(0)) /* PC16 ETH_NRST */ - AT91_PIOD 15 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(0))>; /* PD15 N_GNSS_RESET */ + AT91_PIOD 14 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(0)) /* PD14 WiFi BT reset */ + AT91_PIOD 15 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(0)) /* PD15 N_GNSS_RESET */ + AT91_PIOD 18 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(0))>; /* PD18 USB Hub reset */ output-low; // ignored by at91_pinctrl }; }; @@ -439,3 +438,9 @@ phandle,linux = <GPIO5_PCA9557_PH>; // gpio-base = <136>; }; +&mmc0 { + slot@0 { + cd-gpios = <&pioA 1 GPIO_ACTIVE_HIGH>; + }; +}; + diff --git a/recipes-kernel/linux/linux-at91-5.4.81/defconfig b/recipes-kernel/linux/linux-at91-5.4.81/defconfig index 022b72d..3b6613b 100644 --- a/recipes-kernel/linux/linux-at91-5.4.81/defconfig +++ b/recipes-kernel/linux/linux-at91-5.4.81/defconfig @@ -2090,9 +2090,9 @@ CONFIG_I2C_GPIO=m # CONFIG_I2C_STUB is not set CONFIG_I2C_SLAVE=y CONFIG_I2C_SLAVE_EEPROM=m -CONFIG_I2C_DEBUG_CORE=y -CONFIG_I2C_DEBUG_ALGO=y -CONFIG_I2C_DEBUG_BUS=y +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set # end of I2C support # CONFIG_I3C is not set diff --git a/recipes-kernel/linux/linux-at91-5.4.81/mtcdt/linux-5.4-rs485-atmel-crtscts.patch b/recipes-kernel/linux/linux-at91-5.4.81/mtcdt/linux-5.4-rs485-atmel-crtscts.patch new file mode 100644 index 0000000..30cc7d5 --- /dev/null +++ b/recipes-kernel/linux/linux-at91-5.4.81/mtcdt/linux-5.4-rs485-atmel-crtscts.patch @@ -0,0 +1,132 @@ +This patch allows RS485 Half Duplex (ATMEL_US_USMODE_RS485 is half duplex) to +work even if handshaking is turned on. This mimics the behavior of the EXAR +USB/Serial driver known as Vizzini. It is impossible to use handshaking when +using ATMEL_US_USMODE_RS485. This provides compatibility between MTCDT-0.1 and +MTCDT-0.2. Note that frequently the state of the driver will be stopped if +handshaking was turned on before RS485 was set. We need to take steps to enable +transmit and receive when we go to RS485 mode, or the driver will be blocked. +======================================================================================= +diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c +index 2d17558a807d..e721e2028b4a 100644 +--- a/drivers/tty/serial/atmel_serial.c ++++ b/drivers/tty/serial/atmel_serial.c +@@ -62,6 +62,7 @@ + + static void atmel_start_rx(struct uart_port *port); + static void atmel_stop_rx(struct uart_port *port); ++static void atmel_start_tx(struct uart_port *port); + + #ifdef CONFIG_SERIAL_ATMEL_TTYAT + +@@ -300,6 +301,7 @@ static int atmel_config_rs485(struct uart_port *port, + { + struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); + unsigned int mode; ++ unsigned int sav_c_cflag = 0; + + /* Disable interrupts */ + atmel_uart_writel(port, ATMEL_US_IDR, atmel_port->tx_done_mask); +@@ -312,15 +314,33 @@ static int atmel_config_rs485(struct uart_port *port, + port->rs485 = *rs485conf; + + if (rs485conf->flags & SER_RS485_ENABLED) { +- dev_dbg(port->dev, "Setting UART to RS485\n"); +- if (port->rs485.flags & SER_RS485_RX_DURING_TX) +- atmel_port->tx_done_mask = ATMEL_US_TXRDY; +- else +- atmel_port->tx_done_mask = ATMEL_US_TXEMPTY; ++ struct uart_state *state_p = port->state; ++ struct tty_struct *tty_struct_p = NULL; + +- atmel_uart_writel(port, ATMEL_US_TTGR, ++ dev_dbg(port->dev, "Setting UART to RS485\n"); ++ if (state_p) ++ tty_struct_p = state_p->port.tty; ++ ++ if(tty_struct_p) { ++ struct ktermios *termios = &(tty_struct_p->termios); ++ sav_c_cflag = termios->c_cflag; ++ termios->c_cflag &= ~CRTSCTS; ++ } ++ ++ atmel_port->tx_done_mask = ATMEL_US_TXEMPTY; ++ atmel_uart_writel(port, ATMEL_US_TTGR, + rs485conf->delay_rts_after_send); ++ dev_dbg(port->dev, ++ "atmel_config_rs485: orig: c_cflag 0x%x port status 0x%x, hw_stopped %d\n", ++ sav_c_cflag,port->status,port->hw_stopped ++ ); ++ ++ port->status &= ~UPSTAT_CTS_ENABLE; + mode |= ATMEL_US_USMODE_RS485; ++ port->hw_stopped = 0; // No longer possible ++ if (atmel_port->tx_stopped == true) ++ atmel_start_tx(port); ++ atmel_start_rx(port); + } else { + dev_dbg(port->dev, "Setting UART to RS232\n"); + if (atmel_use_pdc_tx(port)) +@@ -481,13 +501,36 @@ static void atmel_set_mctrl(struct uart_port *port, u_int mctrl) + unsigned int mode = atmel_uart_readl(port, ATMEL_US_MR); + unsigned int rts_paused, rts_ready; + struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); ++ unsigned int sav_c_cflag = 0; + + /* override mode to RS485 if needed, otherwise keep the current mode */ + if (port->rs485.flags & SER_RS485_ENABLED) { +- atmel_uart_writel(port, ATMEL_US_TTGR, +- port->rs485.delay_rts_after_send); +- mode &= ~ATMEL_US_USMODE; +- mode |= ATMEL_US_USMODE_RS485; ++ struct uart_state *state_p = port->state; ++ struct tty_struct *tty_struct_p = NULL; ++ ++ if (state_p) ++ tty_struct_p = state_p->port.tty; ++ ++ if(tty_struct_p) { ++ struct ktermios *termios = &(tty_struct_p->termios); ++ ++ sav_c_cflag = termios->c_cflag; ++ termios->c_cflag &= ~CRTSCTS; ++ } ++ ++ atmel_uart_writel(port, ATMEL_US_TTGR, ++ port->rs485.delay_rts_after_send); ++ mode &= ~ATMEL_US_USMODE; ++ mode |= ATMEL_US_USMODE_RS485; ++ dev_dbg(port->dev, ++ "atmel_set_mctrl: SER_RS485_ENABLED: c_cflag 0x%x port status 0x%x, hw_stopped %d\n", ++ sav_c_cflag,port->status,port->hw_stopped ++ ); ++ port->status &= ~UPSTAT_CTS_ENABLE; ++ port->hw_stopped = 0; // No longer possible ++ if (atmel_port->tx_stopped == true) ++ atmel_start_tx(port); ++ atmel_start_rx(port); + } + + /* set the RTS line state according to the mode */ +@ -2250,6 +2250,19 @@ static void atmel_set_termios(struct uart_port *port, struct ktermios *termios, + atmel_uart_writel(port, ATMEL_US_TTGR, + port->rs485.delay_rts_after_send); + mode |= ATMEL_US_USMODE_RS485; ++ /* CRTSCTS is impossible in RS485 mode, and breaks the driver ++ * so we cannot do a send. */ ++ dev_dbg(port->dev, ++ "atmel_set_termios: SER_RS485_ENABLED: original: c_cflag 0x%x status 0x%x, hw_stopped %d\n", ++ termios->c_cflag,port->status,port->hw_stopped ++ ); ++ ++ termios->c_cflag &= ~CRTSCTS; ++ port->status &= ~UPSTAT_CTS_ENABLE; ++ port->hw_stopped = 0; // Not possible ++ if (atmel_port->tx_stopped == true) ++ atmel_start_tx(port); ++ atmel_start_rx(port); + } else if (port->iso7816.flags & SER_ISO7816_ENABLED) { + atmel_uart_writel(port, ATMEL_US_TTGR, port->iso7816.tg); + /* select mck clock, and output */ +-- +2.25.1 + diff --git a/recipes-kernel/linux/linux-at91-5.4.81/mts-dts/mtcdt.dts b/recipes-kernel/linux/linux-at91-5.4.81/mts-dts/mtcdt.dts index b7f05c4..a33b936 100644 --- a/recipes-kernel/linux/linux-at91-5.4.81/mts-dts/mtcdt.dts +++ b/recipes-kernel/linux/linux-at91-5.4.81/mts-dts/mtcdt.dts @@ -488,22 +488,21 @@ pinctrl_mts_io_out: mts_io-0 { // gpio4 and gpio5 are reset in at91bootstrap. They should not be touched in Linux. atmel,pins = - <AT91_PIOD 14 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(1)) /* PD14 WiFi BT reset */ - AT91_PIOD 16 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(1)) /* PD16 Secure reset or gpio4 reset */ - AT91_PIOD 17 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(1)) /* PD17 MTQ reset */ - AT91_PIOD 18 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(1))>; /* PD18 USB Hub reset */ + <AT91_PIOD 17 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(1)) /* PD17 MTQ reset */ + AT91_PIOD 20 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>; /* PD20 WiFi_BT_LPMode Output */ output-high; // ignored by at91_pinctrl }; pinctrl_mts_io_in: mts_io-1 { atmel,pins = - <AT91_PIOD 19 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP /* PD19 GNSS Int */ - AT91_PIOD 20 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>; /* PD20 WiFi_BT_LPMode Input */ + <AT91_PIOD 19 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>; /* PD19 GNSS Int */ }; // GNSS kept in reset to prevent EXAR from hanging pinctrl_mts_io_gnss: mts_io-2 { atmel,pins = <AT91_PIOC 4 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(0)) /* PC16 ETH_NRST */ - AT91_PIOD 15 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(0))>; /* PD15 N_GNSS_RESET */ + AT91_PIOD 14 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(0)) /* PD14 WiFi BT reset */ + AT91_PIOD 15 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(0)) /* PD15 N_GNSS_RESET */ + AT91_PIOD 18 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT|AT91_PINCTRL_OUTPUT_VAL(0))>; /* PD18 USB Hub reset */ output-low; // ignored by at91_pinctrl }; }; diff --git a/recipes-kernel/linux/linux-at91_4.9.87.bb b/recipes-kernel/linux/linux-at91_4.9.87.bb index 7fc0e5d..3b10efd 100644 --- a/recipes-kernel/linux/linux-at91_4.9.87.bb +++ b/recipes-kernel/linux/linux-at91_4.9.87.bb @@ -19,7 +19,7 @@ RDEPENDS_kernel-modules_remove = "kernel-module-softdog" FILESEXTRAPATHS_prepend := "${THISDIR}/${P}:" KERNEL_EXTRA_ARGS ="LOADADDR=0x20008000" -PR = "r15" +PR = "r16" PKGR_kernel-module-i2c-at91 = "${PR}a${EXTENDPRAUTO}" PKGR_kernel-module-atmel-mci = "${PR}a${EXTENDPRAUTO}" KERNEL_VERSION = "${PV}" @@ -64,6 +64,7 @@ SRC_URI_append_mtcdt = "\ file://mt-at91.h \ file://linux-4.9-mtcdt-device-tree.patch \ file://linux-4.9-mtcdt-atmel-multidrop.patch \ + file://linux-4.9-rs485-atmel-crtscts.patch \ " SRC_URI_append_mtrv1 = "\ ${COMMON_PATCHES} \ diff --git a/recipes-kernel/linux/linux-at91_5.4.81.bb b/recipes-kernel/linux/linux-at91_5.4.81.bb index 25839a9..6d0d9cb 100644 --- a/recipes-kernel/linux/linux-at91_5.4.81.bb +++ b/recipes-kernel/linux/linux-at91_5.4.81.bb @@ -45,6 +45,7 @@ COMMON_PATCHES = " \ file://linux-5.4-OF-DT-Overlay-configfs-interface.patch \ file://linux-5.4-revert-net-macb-Properly-handle-phylink-on-at91rm9200.patch \ file://linux-5.4-bring-back-PAE-bit-and-fix-NCFGR-values-applicable-f.patch \ + file://linux-5.4-rs485-atmel-crtscts.patch \ file://mt-at91.h \ " |