update rt-linux patch

1. resolve i2c transfer timeout issue

Change-Id: I8e9f0f787350eeddab52b75a7d200906a8b63011
This commit is contained in:
lijuan
2024-11-15 14:22:07 +08:00
committed by zhangmeng
parent fcbf0ec9ca
commit 0e01081890

View File

@@ -472,6 +472,36 @@ index 0327fcba0b6a..b39f552241a5 100644
select HAVE_REGS_AND_STACK_ACCESS_API
select HAVE_RETHOOK if !XIP_KERNEL
select HAVE_RSEQ
diff --git a/arch/riscv/configs/k1_rt_defconfig b/arch/riscv/configs/k1_rt_defconfig
index e214683ef063..50312319ee15 100644
--- a/arch/riscv/configs/k1_rt_defconfig
+++ b/arch/riscv/configs/k1_rt_defconfig
@@ -44,6 +44,7 @@ CONFIG_INITRAMFS_SOURCE="rootfs.cpio.gz"
# CONFIG_RD_ZSTD is not set
CONFIG_BOOT_CONFIG=y
CONFIG_EXPERT=y
+CONFIG_KALLSYMS_ALL=y
CONFIG_PROFILING=y
CONFIG_SOC_SPACEMIT=y
CONFIG_SOC_SPACEMIT_K1X=y
@@ -877,7 +878,6 @@ CONFIG_SPACEMIT_K1X_SENSOR_V2=y
# CONFIG_DVB_DRX39XYJ is not set
# CONFIG_DVB_CXD2099 is not set
# CONFIG_DVB_SP2 is not set
-# CONFIG_DRM_DEBUG_MODESET_LOCK is not set
CONFIG_DRM_SPACEMIT=y
CONFIG_SPACEMIT_MIPI_PANEL=y
CONFIG_SPACEMIT_HDMI=y
@@ -1309,9 +1309,6 @@ CONFIG_DEBUG_WX=y
CONFIG_SCHED_STACK_END_CHECK=y
CONFIG_KFENCE=y
CONFIG_DETECT_HUNG_TASK=y
-CONFIG_LOCK_STAT=y
-CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y
-CONFIG_DEBUG_RWSEMS=y
CONFIG_DEBUG_ATOMIC_SLEEP=y
# CONFIG_RCU_TRACE is not set
# CONFIG_RUNTIME_TESTING_MENU is not set
diff --git a/arch/riscv/include/asm/thread_info.h b/arch/riscv/include/asm/thread_info.h
index 1047a97ddbc8..b42255e0b688 100644
--- a/arch/riscv/include/asm/thread_info.h
@@ -1201,7 +1231,7 @@ index c61066498bf2..48e19e55d6b0 100644
#else
# define _WAIT_FOR_ATOMIC_CHECK(ATOMIC) do { } while (0)
diff --git a/drivers/i2c/busses/i2c-k1x.c b/drivers/i2c/busses/i2c-k1x.c
index f1761704f182..9eedcdb3755d 100644
index f1761704f182..551472b75223 100644
--- a/drivers/i2c/busses/i2c-k1x.c
+++ b/drivers/i2c/busses/i2c-k1x.c
@@ -1096,9 +1096,9 @@ static void spacemit_i2c_choose_xfer_mode(struct spacemit_i2c_dev *spacemit_i2c)
@@ -1216,6 +1246,15 @@ index f1761704f182..9eedcdb3755d 100644
}
static void spacemit_i2c_init_xfer_params(struct spacemit_i2c_dev *spacemit_i2c)
@@ -1928,7 +1928,7 @@ static int spacemit_i2c_probe(struct platform_device *pdev)
}
ret = devm_request_irq(spacemit_i2c->dev, spacemit_i2c->irq, spacemit_i2c_int_handler,
- IRQF_NO_SUSPEND | IRQF_NO_AUTOEN,
+ IRQF_NO_SUSPEND | IRQF_NO_AUTOEN | IRQF_NO_THREAD,
dev_name(spacemit_i2c->dev), spacemit_i2c);
if (ret) {
dev_err(spacemit_i2c->dev, "failed to request irq\n");
diff --git a/drivers/tty/serial/21285.c b/drivers/tty/serial/21285.c
index d756fcc884cb..4de0c975ebdc 100644
--- a/drivers/tty/serial/21285.c
@@ -6413,7 +6452,7 @@ index 73c60f5ea027..46e70e155aab 100644
clk_disable(up->clk);
diff --git a/drivers/tty/serial/pxa_k1x.c b/drivers/tty/serial/pxa_k1x.c
index af1d2d0cad70..54d2750d37cb 100644
index af1d2d0cad70..b1a182b71b4b 100644
--- a/drivers/tty/serial/pxa_k1x.c
+++ b/drivers/tty/serial/pxa_k1x.c
@@ -175,13 +175,13 @@ static inline void stop_dma(struct uart_pxa_port *up, int read)
@@ -6716,28 +6755,34 @@ index af1d2d0cad70..54d2750d37cb 100644
return;
}
@@ -1706,9 +1706,9 @@ serial_pxa_console_write(struct console *co, const char *s, unsigned int count)
if (up->port.sysrq)
locked = 0;
else if (oops_in_progress)
@@ -1702,13 +1702,10 @@ serial_pxa_console_write(struct console *co, const char *s, unsigned int count)
clk_enable(up->gclk);
clk_enable(up->fclk);
- local_irq_save(flags);
- if (up->port.sysrq)
- locked = 0;
- else if (oops_in_progress)
- locked = spin_trylock(&up->port.lock);
+ locked = uart_port_trylock(&up->port);
+ if (up->port.sysrq || oops_in_progress)
+ locked = uart_port_trylock_irqsave(&up->port, &flags);
else
- spin_lock(&up->port.lock);
+ uart_port_lock(&up->port);
+ uart_port_lock_irqsave(&up->port, &flags);
/*
* First save the IER then disable the interrupts
@@ -1726,7 +1726,7 @@ serial_pxa_console_write(struct console *co, const char *s, unsigned int count)
@@ -1726,8 +1723,7 @@ serial_pxa_console_write(struct console *co, const char *s, unsigned int count)
serial_out(up, UART_IER, ier);
if (locked)
- spin_unlock(&up->port.lock);
+ uart_port_unlock(&up->port);
local_irq_restore(flags);
- local_irq_restore(flags);
+ uart_port_unlock_irqrestore(&up->port, flags);
clk_disable(up->fclk);
clk_disable(up->gclk);
@@ -1937,9 +1937,9 @@ static int serial_pxa_suspend(struct device *dev)
}
@@ -1937,9 +1933,9 @@ static int serial_pxa_suspend(struct device *dev)
if (dma_async_is_tx_complete(pxa_dma->rxdma_chan,
pxa_dma->rx_cookie, NULL, NULL) != DMA_COMPLETE) {
/* before stop receive, de-assert RTS */