mirror of
https://github.com/VIKINGYFY/immortalwrt.git
synced 2025-12-16 17:15:26 +00:00
airoha: spi: update en7523 airoha snfi patches & dts
Use latest patch version Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu> Link: https://github.com/openwrt/openwrt/pull/20400 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
This commit is contained in:
parent
a19ccd9d15
commit
6e3867e5b1
@ -204,8 +204,8 @@
|
||||
};
|
||||
};
|
||||
|
||||
spi_ctrl: spi_controller@1fa10000 {
|
||||
compatible = "airoha,en7523-snand";
|
||||
spi_ctrl: spi@1fa10000 {
|
||||
compatible = "airoha,en7523-snand", "airoha,en7581-snand";
|
||||
reg = <0x1fa10000 0x140>,
|
||||
<0x1fa11000 0x160>;
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
From 0299de52cbb2274345e12518298a8014adb56411 Mon Sep 17 00:00:00 2001
|
||||
From 86f88e604305186aec1fb6eebbf8f0a42c2435d3 Mon Sep 17 00:00:00 2001
|
||||
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
|
||||
Date: Thu, 9 Oct 2025 19:33:23 +0300
|
||||
Subject: [PATCH 2/2] spi: airoha-snfi: en7523: workaround flash damaging if
|
||||
UART_TXD was short to GND
|
||||
Subject: [PATCH] spi: airoha-snfi: en7523: workaround flash damaging
|
||||
if UART_TXD was short to GND
|
||||
|
||||
We found that some serial console may pull TX line to GROUND during board
|
||||
boot time. Airoha uses TX line as one of it's BOOT pins. This will lead
|
||||
@ -27,8 +27,8 @@ fat warning.
|
||||
|
||||
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
|
||||
---
|
||||
drivers/spi/spi-airoha-snfi.c | 38 ++++++++++++++++++++++++++++++++---
|
||||
1 file changed, 35 insertions(+), 3 deletions(-)
|
||||
drivers/spi/spi-airoha-snfi.c | 40 ++++++++++++++++++++++++++++++-----
|
||||
1 file changed, 35 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/drivers/spi/spi-airoha-snfi.c
|
||||
+++ b/drivers/spi/spi-airoha-snfi.c
|
||||
@ -44,49 +44,49 @@ Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
|
||||
static int airoha_snand_setup(struct spi_device *spi)
|
||||
{
|
||||
struct airoha_snand_ctrl *as_ctrl;
|
||||
@@ -1059,7 +1064,10 @@ static int airoha_snand_probe(struct pla
|
||||
@@ -1058,7 +1063,8 @@ static int airoha_snand_probe(struct pla
|
||||
struct device *dev = &pdev->dev;
|
||||
struct spi_controller *ctrl;
|
||||
void __iomem *base;
|
||||
- int err;
|
||||
+ int err, dma_enabled;
|
||||
+#if defined(CONFIG_ARM)
|
||||
+ u32 sfc_strap;
|
||||
+#endif
|
||||
|
||||
ctrl = devm_spi_alloc_host(dev, sizeof(*as_ctrl));
|
||||
if (!ctrl)
|
||||
@@ -1093,12 +1101,36 @@ static int airoha_snand_probe(struct pla
|
||||
@@ -1092,12 +1098,36 @@ static int airoha_snand_probe(struct pla
|
||||
return dev_err_probe(dev, PTR_ERR(as_ctrl->spi_clk),
|
||||
"unable to get spi clk\n");
|
||||
|
||||
- err = dma_set_mask(as_ctrl->dev, DMA_BIT_MASK(32));
|
||||
- if (err)
|
||||
- return err;
|
||||
+ dma_enabled = 1;
|
||||
+#if defined(CONFIG_ARM)
|
||||
+ err = regmap_read(as_ctrl->regmap_ctrl,
|
||||
+ REG_SPI_CTRL_SFC_STRAP, &sfc_strap);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
+ if (!(sfc_strap & 0x04)) {
|
||||
+ dma_enabled = 0;
|
||||
+ printk(KERN_WARNING "\n"
|
||||
+ "=== WARNING ======================================================\n"
|
||||
+ "Detected booting in RESERVED mode (UART_TXD was short to GND).\n"
|
||||
+ "This mode is known for incorrect DMA reading of some flashes.\n"
|
||||
+ "Usage of DMA for flash operations will be disabled to prevent data\n"
|
||||
+ "damage. Unplug your serial console and power cycle the board\n"
|
||||
+ "to boot with full performance.\n"
|
||||
+ "==================================================================\n\n");
|
||||
+ if (device_is_compatible(dev, "airoha,en7523-snand")) {
|
||||
+ err = regmap_read(as_ctrl->regmap_ctrl,
|
||||
+ REG_SPI_CTRL_SFC_STRAP, &sfc_strap);
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+
|
||||
+ if (!(sfc_strap & 0x04)) {
|
||||
+ dma_enabled = 0;
|
||||
+ printk(KERN_WARNING "\n"
|
||||
+ "=== WARNING ======================================================\n"
|
||||
+ "Detected booting in RESERVED mode (UART_TXD was short to GND).\n"
|
||||
+ "This mode is known for incorrect DMA reading of some flashes.\n"
|
||||
+ "Usage of DMA for flash operations will be disabled to prevent data\n"
|
||||
+ "damage. Unplug your serial console and power cycle the board\n"
|
||||
+ "to boot with full performance.\n"
|
||||
+ "==================================================================\n\n");
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ if (dma_enabled) {
|
||||
+ err = dma_set_mask(as_ctrl->dev, DMA_BIT_MASK(32));
|
||||
+ if (err)
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
|
||||
ctrl->num_chipselect = 2;
|
||||
- ctrl->mem_ops = &airoha_snand_mem_ops;
|
||||
+ ctrl->mem_ops = dma_enabled ?
|
||||
@ -1,27 +0,0 @@
|
||||
From 12664d09a94bd0f50f31a3811447f70275ea9bb8 Mon Sep 17 00:00:00 2001
|
||||
From: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
|
||||
Date: Thu, 9 Oct 2025 19:49:18 +0300
|
||||
Subject: [PATCH 1/2] spi: airoha-snfi: make compatible with EN7523 SoC
|
||||
|
||||
The driver is fully compatible with EN7523 based SoCs, so add
|
||||
corresponding compatible string.
|
||||
|
||||
This driver is better than en7523-spi because it supports DMA.
|
||||
Measurements shows that DMA based flash reading is 4 times faster
|
||||
than non-dma one.
|
||||
|
||||
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
|
||||
---
|
||||
drivers/spi/spi-airoha-snfi.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/spi/spi-airoha-snfi.c
|
||||
+++ b/drivers/spi/spi-airoha-snfi.c
|
||||
@@ -1047,6 +1047,7 @@ static const struct regmap_config spi_nf
|
||||
};
|
||||
|
||||
static const struct of_device_id airoha_snand_ids[] = {
|
||||
+ { .compatible = "airoha,en7523-snand" },
|
||||
{ .compatible = "airoha,en7581-snand" },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
Loading…
Reference in New Issue
Block a user