[PATCH 2/2] [v3] spi: spi-mtk-nor: Modify and optimization the SNFC.
Meiker Gao
ot_meiker.gao at mediatek.com
Mon Mar 23 20:26:18 PDT 2026
Changes in v3:
-this patch is a further optimization for version v2.
Changes in v2:
-Use clk_bulk_xxx related functions to enable/disable clocks.
Changes in v1:
-Add new function mtk_nor_parse_clk() to parse nor clock parameters.
Signed-off-by: Meiker Gao <ot_meiker.gao at mediatek.com>
Change-Id: Ifa13f9f08aebf6feb376ca98b0fd69f379037ff3
---
drivers/spi/spi-mtk-nor.c | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
diff --git a/drivers/spi/spi-mtk-nor.c b/drivers/spi/spi-mtk-nor.c
index 702339a6c817..6d24932053e5 100644
--- a/drivers/spi/spi-mtk-nor.c
+++ b/drivers/spi/spi-mtk-nor.c
@@ -100,7 +100,6 @@
#define CLK_TO_US(sp, clkcnt) DIV_ROUND_UP(clkcnt, sp->spi_freq / 1000000)
-#define MAX_CLOCK_CNT 6
struct mtk_nor_caps {
u8 dma_bits;
@@ -119,8 +118,8 @@ struct mtk_nor {
void __iomem *base;
u8 *buffer;
dma_addr_t buffer_dma;
- struct clk_bulk_data clocks[MAX_CLOCK_CNT];
- int clock_cnt;
+ struct clk_bulk_data *clocks;
+ u8 clock_cnt;
unsigned int spi_freq;
bool wbuf_en;
bool has_irq;
@@ -733,19 +732,16 @@ static int mtk_nor_enable_clk(struct mtk_nor *sp)
static int mtk_nor_parse_clk(struct device *dev, struct mtk_nor *sp)
{
struct device_node *np = dev->of_node;
- int ret;
const char *name;
- int cnt,i;
+ int cnt,i,ret;
cnt = of_property_count_strings(np, "clock-names");
if (!cnt || (cnt == -EINVAL)) {
dev_err(dev, "Unable to find clocks\n");
- ret = -EINVAL;
- goto out;
+ return -EINVAL;
} else if (cnt < 0) {
dev_err(dev, "Count clock strings failed, err %d\n", cnt);
- ret = cnt;
- goto out;
+ return cnt;
}
sp->clock_cnt = cnt;
@@ -760,9 +756,10 @@ static int mtk_nor_parse_clk(struct device *dev, struct mtk_nor *sp)
}
ret = devm_clk_bulk_get(dev, sp->clock_cnt, sp->clocks);
+ if (ret)
+ return ret;
-out:
- return ret;
+ return 0;
}
static void mtk_nor_init(struct mtk_nor *sp)
--
2.45.2
More information about the Linux-mediatek
mailing list