summaryrefslogtreecommitdiff
path: root/recipes-kernel/linux
diff options
context:
space:
mode:
authorJeff Hatch <jhatch@multitech.com>2022-01-14 08:44:58 -0600
committerJeff Hatch <jhatch@multitech.com>2022-01-14 08:44:58 -0600
commite4e1c1ad52397d5807b18349cb6990c3e8364d6d (patch)
treea04b5a0ded6766ec4cc2357759f0cd318e8f5cb9 /recipes-kernel/linux
parentd001624362056286af537f98f57228f32ca50581 (diff)
parent740faaaeb030cee2583488378bd13827ad070fd9 (diff)
downloadmeta-multitech-atmel-e4e1c1ad52397d5807b18349cb6990c3e8364d6d.tar.gz
meta-multitech-atmel-e4e1c1ad52397d5807b18349cb6990c3e8364d6d.tar.bz2
meta-multitech-atmel-e4e1c1ad52397d5807b18349cb6990c3e8364d6d.zip
Merge branch 'vs/mtx-4338' into '6'
Merge all the changes from R.5.3.7 to R.6.0 See merge request !19
Diffstat (limited to 'recipes-kernel/linux')
-rw-r--r--recipes-kernel/linux/linux-at91-4.9.87/defconfig6
-rw-r--r--recipes-kernel/linux/linux-at91-4.9.87/mtcdt/linux-4.9-rs485-atmel-crtscts.patch125
-rw-r--r--recipes-kernel/linux/linux-at91-4.9.87/mtcdt/mtcdt.dts21
-rw-r--r--recipes-kernel/linux/linux-at91-5.4.81/defconfig6
-rw-r--r--recipes-kernel/linux/linux-at91-5.4.81/mtcdt/linux-5.4-rs485-atmel-crtscts.patch132
-rw-r--r--recipes-kernel/linux/linux-at91-5.4.81/mts-dts/mtcdt.dts13
-rw-r--r--recipes-kernel/linux/linux-at91_4.9.87.bb3
-rw-r--r--recipes-kernel/linux/linux-at91_5.4.81.bb1
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 \
"