All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 0/5] Add MediaTek MT7986 SPI NAND support
@ 2023-02-01  2:09 ` Xiangsheng Hou
  0 siblings, 0 replies; 14+ messages in thread
From: Xiangsheng Hou @ 2023-02-01  2:09 UTC (permalink / raw)
  To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Matthias Brugger
  Cc: Chuanhong Guo, Xiangsheng Hou, linux-spi, devicetree,
	linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao,
	bin.zhang

This patch series split from bellow series which pick-up spi relevant patches
https://lore.kernel.org/all/20230130030656.12127-1-xiangsheng.hou@mediatek.com.
This series add MediaTek MT7986 SPI NAND controller support, add read latch
latency, smaple delay adjust and add optional nfi_hclk.

Changes since V5:
 - Split spi relevant patches from previous series V4

Changes since V4:
 - none

Changes since V3:
 - none

Changes since V2:
 - Change snfi mediatek,rx-latch-latency to mediatek,rx-latch-latency-ns.

Changes since V1:
 - Use existing sample delay property.
 - Add restricting for optional nfi_hclk.
 - Improve and perfect dt-bindings documentation.

Xiangsheng Hou (5):
  spi: mtk-snfi: Change default page format to setup default setting
  spi: mtk-snfi: Add optional nfi_hclk which is needed for MT7986
  dt-bindings: spi: mtk-snfi: Add compatible for MT7986
  spi: mtk-snfi: Add snfi sample delay and read latency adjustment
  dt-bindings: spi: mtk-snfi: Add read latch latency property

 .../bindings/spi/mediatek,spi-mtk-snfi.yaml   | 54 +++++++++++++++----
 drivers/spi/spi-mtk-snfi.c                    | 41 +++++++++++++-
 2 files changed, 84 insertions(+), 11 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v6 0/5] Add MediaTek MT7986 SPI NAND support
@ 2023-02-01  2:09 ` Xiangsheng Hou
  0 siblings, 0 replies; 14+ messages in thread
From: Xiangsheng Hou @ 2023-02-01  2:09 UTC (permalink / raw)
  To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Matthias Brugger
  Cc: Chuanhong Guo, Xiangsheng Hou, linux-spi, devicetree,
	linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao,
	bin.zhang

This patch series split from bellow series which pick-up spi relevant patches
https://lore.kernel.org/all/20230130030656.12127-1-xiangsheng.hou@mediatek.com.
This series add MediaTek MT7986 SPI NAND controller support, add read latch
latency, smaple delay adjust and add optional nfi_hclk.

Changes since V5:
 - Split spi relevant patches from previous series V4

Changes since V4:
 - none

Changes since V3:
 - none

Changes since V2:
 - Change snfi mediatek,rx-latch-latency to mediatek,rx-latch-latency-ns.

Changes since V1:
 - Use existing sample delay property.
 - Add restricting for optional nfi_hclk.
 - Improve and perfect dt-bindings documentation.

Xiangsheng Hou (5):
  spi: mtk-snfi: Change default page format to setup default setting
  spi: mtk-snfi: Add optional nfi_hclk which is needed for MT7986
  dt-bindings: spi: mtk-snfi: Add compatible for MT7986
  spi: mtk-snfi: Add snfi sample delay and read latency adjustment
  dt-bindings: spi: mtk-snfi: Add read latch latency property

 .../bindings/spi/mediatek,spi-mtk-snfi.yaml   | 54 +++++++++++++++----
 drivers/spi/spi-mtk-snfi.c                    | 41 +++++++++++++-
 2 files changed, 84 insertions(+), 11 deletions(-)

-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v6 1/5] spi: mtk-snfi: Change default page format to setup default setting
  2023-02-01  2:09 ` Xiangsheng Hou
@ 2023-02-01  2:09   ` Xiangsheng Hou
  -1 siblings, 0 replies; 14+ messages in thread
From: Xiangsheng Hou @ 2023-02-01  2:09 UTC (permalink / raw)
  To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Matthias Brugger
  Cc: Chuanhong Guo, Xiangsheng Hou, linux-spi, devicetree,
	linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao,
	bin.zhang

Change default page format to setup default setting since the sector
size 1024 on MT7986 will lead to probe fail.

Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
---
 drivers/spi/spi-mtk-snfi.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/spi/spi-mtk-snfi.c b/drivers/spi/spi-mtk-snfi.c
index fa8412ba20e2..719fc6f53ab1 100644
--- a/drivers/spi/spi-mtk-snfi.c
+++ b/drivers/spi/spi-mtk-snfi.c
@@ -1430,8 +1430,7 @@ static int mtk_snand_probe(struct platform_device *pdev)
 
 	// setup an initial page format for ops matching page_cache_op template
 	// before ECC is called.
-	ret = mtk_snand_setup_pagefmt(ms, ms->caps->sector_size,
-				      ms->caps->spare_sizes[0]);
+	ret = mtk_snand_setup_pagefmt(ms, SZ_2K, SZ_64);
 	if (ret) {
 		dev_err(ms->dev, "failed to set initial page format\n");
 		goto disable_clk;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v6 1/5] spi: mtk-snfi: Change default page format to setup default setting
@ 2023-02-01  2:09   ` Xiangsheng Hou
  0 siblings, 0 replies; 14+ messages in thread
From: Xiangsheng Hou @ 2023-02-01  2:09 UTC (permalink / raw)
  To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Matthias Brugger
  Cc: Chuanhong Guo, Xiangsheng Hou, linux-spi, devicetree,
	linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao,
	bin.zhang

Change default page format to setup default setting since the sector
size 1024 on MT7986 will lead to probe fail.

Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
---
 drivers/spi/spi-mtk-snfi.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/spi/spi-mtk-snfi.c b/drivers/spi/spi-mtk-snfi.c
index fa8412ba20e2..719fc6f53ab1 100644
--- a/drivers/spi/spi-mtk-snfi.c
+++ b/drivers/spi/spi-mtk-snfi.c
@@ -1430,8 +1430,7 @@ static int mtk_snand_probe(struct platform_device *pdev)
 
 	// setup an initial page format for ops matching page_cache_op template
 	// before ECC is called.
-	ret = mtk_snand_setup_pagefmt(ms, ms->caps->sector_size,
-				      ms->caps->spare_sizes[0]);
+	ret = mtk_snand_setup_pagefmt(ms, SZ_2K, SZ_64);
 	if (ret) {
 		dev_err(ms->dev, "failed to set initial page format\n");
 		goto disable_clk;
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v6 2/5] spi: mtk-snfi: Add optional nfi_hclk which is needed for MT7986
  2023-02-01  2:09 ` Xiangsheng Hou
@ 2023-02-01  2:09   ` Xiangsheng Hou
  -1 siblings, 0 replies; 14+ messages in thread
From: Xiangsheng Hou @ 2023-02-01  2:09 UTC (permalink / raw)
  To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Matthias Brugger
  Cc: Chuanhong Guo, Xiangsheng Hou, linux-spi, devicetree,
	linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao,
	bin.zhang, AngeloGioacchino Del Regno

Add optional nfi_hclk which is needed for MT7986.

Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 drivers/spi/spi-mtk-snfi.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/spi/spi-mtk-snfi.c b/drivers/spi/spi-mtk-snfi.c
index 719fc6f53ab1..85644308df23 100644
--- a/drivers/spi/spi-mtk-snfi.c
+++ b/drivers/spi/spi-mtk-snfi.c
@@ -297,6 +297,7 @@ struct mtk_snand {
 	struct device *dev;
 	struct clk *nfi_clk;
 	struct clk *pad_clk;
+	struct clk *nfi_hclk;
 	void __iomem *nfi_base;
 	int irq;
 	struct completion op_done;
@@ -1339,7 +1340,16 @@ static int mtk_snand_enable_clk(struct mtk_snand *ms)
 		dev_err(ms->dev, "unable to enable pad clk\n");
 		goto err1;
 	}
+	ret = clk_prepare_enable(ms->nfi_hclk);
+	if (ret) {
+		dev_err(ms->dev, "unable to enable nfi hclk\n");
+		goto err2;
+	}
+
 	return 0;
+
+err2:
+	clk_disable_unprepare(ms->pad_clk);
 err1:
 	clk_disable_unprepare(ms->nfi_clk);
 	return ret;
@@ -1347,6 +1357,7 @@ static int mtk_snand_enable_clk(struct mtk_snand *ms)
 
 static void mtk_snand_disable_clk(struct mtk_snand *ms)
 {
+	clk_disable_unprepare(ms->nfi_hclk);
 	clk_disable_unprepare(ms->pad_clk);
 	clk_disable_unprepare(ms->nfi_clk);
 }
@@ -1401,6 +1412,13 @@ static int mtk_snand_probe(struct platform_device *pdev)
 		goto release_ecc;
 	}
 
+	ms->nfi_hclk = devm_clk_get_optional(&pdev->dev, "nfi_hclk");
+	if (IS_ERR(ms->nfi_hclk)) {
+		ret = PTR_ERR(ms->nfi_hclk);
+		dev_err(&pdev->dev, "unable to get nfi_hclk, err = %d\n", ret);
+		goto release_ecc;
+	}
+
 	ret = mtk_snand_enable_clk(ms);
 	if (ret)
 		goto release_ecc;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v6 2/5] spi: mtk-snfi: Add optional nfi_hclk which is needed for MT7986
@ 2023-02-01  2:09   ` Xiangsheng Hou
  0 siblings, 0 replies; 14+ messages in thread
From: Xiangsheng Hou @ 2023-02-01  2:09 UTC (permalink / raw)
  To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Matthias Brugger
  Cc: Chuanhong Guo, Xiangsheng Hou, linux-spi, devicetree,
	linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao,
	bin.zhang, AngeloGioacchino Del Regno

Add optional nfi_hclk which is needed for MT7986.

Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 drivers/spi/spi-mtk-snfi.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/spi/spi-mtk-snfi.c b/drivers/spi/spi-mtk-snfi.c
index 719fc6f53ab1..85644308df23 100644
--- a/drivers/spi/spi-mtk-snfi.c
+++ b/drivers/spi/spi-mtk-snfi.c
@@ -297,6 +297,7 @@ struct mtk_snand {
 	struct device *dev;
 	struct clk *nfi_clk;
 	struct clk *pad_clk;
+	struct clk *nfi_hclk;
 	void __iomem *nfi_base;
 	int irq;
 	struct completion op_done;
@@ -1339,7 +1340,16 @@ static int mtk_snand_enable_clk(struct mtk_snand *ms)
 		dev_err(ms->dev, "unable to enable pad clk\n");
 		goto err1;
 	}
+	ret = clk_prepare_enable(ms->nfi_hclk);
+	if (ret) {
+		dev_err(ms->dev, "unable to enable nfi hclk\n");
+		goto err2;
+	}
+
 	return 0;
+
+err2:
+	clk_disable_unprepare(ms->pad_clk);
 err1:
 	clk_disable_unprepare(ms->nfi_clk);
 	return ret;
@@ -1347,6 +1357,7 @@ static int mtk_snand_enable_clk(struct mtk_snand *ms)
 
 static void mtk_snand_disable_clk(struct mtk_snand *ms)
 {
+	clk_disable_unprepare(ms->nfi_hclk);
 	clk_disable_unprepare(ms->pad_clk);
 	clk_disable_unprepare(ms->nfi_clk);
 }
@@ -1401,6 +1412,13 @@ static int mtk_snand_probe(struct platform_device *pdev)
 		goto release_ecc;
 	}
 
+	ms->nfi_hclk = devm_clk_get_optional(&pdev->dev, "nfi_hclk");
+	if (IS_ERR(ms->nfi_hclk)) {
+		ret = PTR_ERR(ms->nfi_hclk);
+		dev_err(&pdev->dev, "unable to get nfi_hclk, err = %d\n", ret);
+		goto release_ecc;
+	}
+
 	ret = mtk_snand_enable_clk(ms);
 	if (ret)
 		goto release_ecc;
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v6 3/5] dt-bindings: spi: mtk-snfi: Add compatible for MT7986
  2023-02-01  2:09 ` Xiangsheng Hou
@ 2023-02-01  2:09   ` Xiangsheng Hou
  -1 siblings, 0 replies; 14+ messages in thread
From: Xiangsheng Hou @ 2023-02-01  2:09 UTC (permalink / raw)
  To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Matthias Brugger
  Cc: Chuanhong Guo, Xiangsheng Hou, linux-spi, devicetree,
	linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao,
	bin.zhang, Krzysztof Kozlowski, AngeloGioacchino Del Regno

Add dt-bindings documentation of SPI NAND controller
for MediaTek MT7986 SoC platform. And add optional
nfi_hclk property which is needed for MT7986.

Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 .../bindings/spi/mediatek,spi-mtk-snfi.yaml   | 51 +++++++++++++++----
 1 file changed, 42 insertions(+), 9 deletions(-)

diff --git a/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml b/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml
index 6e6e02c91780..bab23f1b11fd 100644
--- a/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml
+++ b/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml
@@ -18,14 +18,12 @@ description: |
   using the accompanying ECC engine. There should be only one spi
   slave device following generic spi bindings.
 
-allOf:
-  - $ref: /schemas/spi/spi-controller.yaml#
-
 properties:
   compatible:
     enum:
       - mediatek,mt7622-snand
       - mediatek,mt7629-snand
+      - mediatek,mt7986-snand
 
   reg:
     items:
@@ -36,14 +34,12 @@ properties:
       - description: NFI interrupt
 
   clocks:
-    items:
-      - description: clock used for the controller
-      - description: clock used for the SPI bus
+    minItems: 2
+    maxItems: 3
 
   clock-names:
-    items:
-      - const: nfi_clk
-      - const: pad_clk
+    minItems: 2
+    maxItems: 3
 
   nand-ecc-engine:
     description: device-tree node of the accompanying ECC engine.
@@ -57,6 +53,43 @@ required:
   - clock-names
   - nand-ecc-engine
 
+allOf:
+  - $ref: /schemas/spi/spi-controller.yaml#
+  - if:
+      properties:
+        compatible:
+          enum:
+            - mediatek,mt7622-snand
+            - mediatek,mt7629-snand
+    then:
+      properties:
+        clocks:
+          items:
+            - description: clock used for the controller
+            - description: clock used for the SPI bus
+        clock-names:
+          items:
+            - const: nfi_clk
+            - const: pad_clk
+
+  - if:
+      properties:
+        compatible:
+          enum:
+            - mediatek,mt7986-snand
+    then:
+      properties:
+        clocks:
+          items:
+            - description: clock used for the controller
+            - description: clock used for the SPI bus
+            - description: clock used for the AHB bus
+        clock-names:
+          items:
+            - const: nfi_clk
+            - const: pad_clk
+            - const: nfi_hclk
+
 unevaluatedProperties: false
 
 examples:
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v6 3/5] dt-bindings: spi: mtk-snfi: Add compatible for MT7986
@ 2023-02-01  2:09   ` Xiangsheng Hou
  0 siblings, 0 replies; 14+ messages in thread
From: Xiangsheng Hou @ 2023-02-01  2:09 UTC (permalink / raw)
  To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Matthias Brugger
  Cc: Chuanhong Guo, Xiangsheng Hou, linux-spi, devicetree,
	linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao,
	bin.zhang, Krzysztof Kozlowski, AngeloGioacchino Del Regno

Add dt-bindings documentation of SPI NAND controller
for MediaTek MT7986 SoC platform. And add optional
nfi_hclk property which is needed for MT7986.

Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 .../bindings/spi/mediatek,spi-mtk-snfi.yaml   | 51 +++++++++++++++----
 1 file changed, 42 insertions(+), 9 deletions(-)

diff --git a/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml b/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml
index 6e6e02c91780..bab23f1b11fd 100644
--- a/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml
+++ b/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml
@@ -18,14 +18,12 @@ description: |
   using the accompanying ECC engine. There should be only one spi
   slave device following generic spi bindings.
 
-allOf:
-  - $ref: /schemas/spi/spi-controller.yaml#
-
 properties:
   compatible:
     enum:
       - mediatek,mt7622-snand
       - mediatek,mt7629-snand
+      - mediatek,mt7986-snand
 
   reg:
     items:
@@ -36,14 +34,12 @@ properties:
       - description: NFI interrupt
 
   clocks:
-    items:
-      - description: clock used for the controller
-      - description: clock used for the SPI bus
+    minItems: 2
+    maxItems: 3
 
   clock-names:
-    items:
-      - const: nfi_clk
-      - const: pad_clk
+    minItems: 2
+    maxItems: 3
 
   nand-ecc-engine:
     description: device-tree node of the accompanying ECC engine.
@@ -57,6 +53,43 @@ required:
   - clock-names
   - nand-ecc-engine
 
+allOf:
+  - $ref: /schemas/spi/spi-controller.yaml#
+  - if:
+      properties:
+        compatible:
+          enum:
+            - mediatek,mt7622-snand
+            - mediatek,mt7629-snand
+    then:
+      properties:
+        clocks:
+          items:
+            - description: clock used for the controller
+            - description: clock used for the SPI bus
+        clock-names:
+          items:
+            - const: nfi_clk
+            - const: pad_clk
+
+  - if:
+      properties:
+        compatible:
+          enum:
+            - mediatek,mt7986-snand
+    then:
+      properties:
+        clocks:
+          items:
+            - description: clock used for the controller
+            - description: clock used for the SPI bus
+            - description: clock used for the AHB bus
+        clock-names:
+          items:
+            - const: nfi_clk
+            - const: pad_clk
+            - const: nfi_hclk
+
 unevaluatedProperties: false
 
 examples:
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v6 4/5] spi: mtk-snfi: Add snfi sample delay and read latency adjustment
  2023-02-01  2:09 ` Xiangsheng Hou
@ 2023-02-01  2:09   ` Xiangsheng Hou
  -1 siblings, 0 replies; 14+ messages in thread
From: Xiangsheng Hou @ 2023-02-01  2:09 UTC (permalink / raw)
  To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Matthias Brugger
  Cc: Chuanhong Guo, Xiangsheng Hou, linux-spi, devicetree,
	linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao,
	bin.zhang, AngeloGioacchino Del Regno

Add snfi sample delay and read latency adjustment which can get
from dts property.

Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 drivers/spi/spi-mtk-snfi.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/drivers/spi/spi-mtk-snfi.c b/drivers/spi/spi-mtk-snfi.c
index 85644308df23..f3f95eb37365 100644
--- a/drivers/spi/spi-mtk-snfi.c
+++ b/drivers/spi/spi-mtk-snfi.c
@@ -195,6 +195,8 @@
 #define DATA_READ_MODE_X4 2
 #define DATA_READ_MODE_DUAL 5
 #define DATA_READ_MODE_QUAD 6
+#define DATA_READ_LATCH_LAT GENMASK(9, 8)
+#define DATA_READ_LATCH_LAT_S 8
 #define PG_LOAD_CUSTOM_EN BIT(7)
 #define DATARD_CUSTOM_EN BIT(6)
 #define CS_DESELECT_CYC_S 0
@@ -205,6 +207,9 @@
 
 #define SNF_DLY_CTL3 0x548
 #define SFCK_SAM_DLY_S 0
+#define SFCK_SAM_DLY GENMASK(5, 0)
+#define SFCK_SAM_DLY_TOTAL 9
+#define SFCK_SAM_DLY_RANGE 47
 
 #define SNF_STA_CTL1 0x550
 #define CUS_PG_DONE BIT(28)
@@ -1368,6 +1373,8 @@ static int mtk_snand_probe(struct platform_device *pdev)
 	const struct of_device_id *dev_id;
 	struct spi_controller *ctlr;
 	struct mtk_snand *ms;
+	unsigned long spi_freq;
+	u32 val = 0;
 	int ret;
 
 	dev_id = of_match_node(mtk_snand_ids, np);
@@ -1446,6 +1453,19 @@ static int mtk_snand_probe(struct platform_device *pdev)
 	// switch to SNFI mode
 	nfi_write32(ms, SNF_CFG, SPI_MODE);
 
+	ret = of_property_read_u32(np, "rx-sample-delay-ns", &val);
+	if (!ret)
+		nfi_rmw32(ms, SNF_DLY_CTL3, SFCK_SAM_DLY,
+			  val * SFCK_SAM_DLY_RANGE / SFCK_SAM_DLY_TOTAL);
+
+	ret = of_property_read_u32(np, "mediatek,rx-latch-latency-ns", &val);
+	if (!ret) {
+		spi_freq = clk_get_rate(ms->pad_clk);
+		val = DIV_ROUND_CLOSEST(val, NSEC_PER_SEC / spi_freq);
+		nfi_rmw32(ms, SNF_MISC_CTL, DATA_READ_LATCH_LAT,
+			  val << DATA_READ_LATCH_LAT_S);
+	}
+
 	// setup an initial page format for ops matching page_cache_op template
 	// before ECC is called.
 	ret = mtk_snand_setup_pagefmt(ms, SZ_2K, SZ_64);
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v6 4/5] spi: mtk-snfi: Add snfi sample delay and read latency adjustment
@ 2023-02-01  2:09   ` Xiangsheng Hou
  0 siblings, 0 replies; 14+ messages in thread
From: Xiangsheng Hou @ 2023-02-01  2:09 UTC (permalink / raw)
  To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Matthias Brugger
  Cc: Chuanhong Guo, Xiangsheng Hou, linux-spi, devicetree,
	linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao,
	bin.zhang, AngeloGioacchino Del Regno

Add snfi sample delay and read latency adjustment which can get
from dts property.

Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 drivers/spi/spi-mtk-snfi.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/drivers/spi/spi-mtk-snfi.c b/drivers/spi/spi-mtk-snfi.c
index 85644308df23..f3f95eb37365 100644
--- a/drivers/spi/spi-mtk-snfi.c
+++ b/drivers/spi/spi-mtk-snfi.c
@@ -195,6 +195,8 @@
 #define DATA_READ_MODE_X4 2
 #define DATA_READ_MODE_DUAL 5
 #define DATA_READ_MODE_QUAD 6
+#define DATA_READ_LATCH_LAT GENMASK(9, 8)
+#define DATA_READ_LATCH_LAT_S 8
 #define PG_LOAD_CUSTOM_EN BIT(7)
 #define DATARD_CUSTOM_EN BIT(6)
 #define CS_DESELECT_CYC_S 0
@@ -205,6 +207,9 @@
 
 #define SNF_DLY_CTL3 0x548
 #define SFCK_SAM_DLY_S 0
+#define SFCK_SAM_DLY GENMASK(5, 0)
+#define SFCK_SAM_DLY_TOTAL 9
+#define SFCK_SAM_DLY_RANGE 47
 
 #define SNF_STA_CTL1 0x550
 #define CUS_PG_DONE BIT(28)
@@ -1368,6 +1373,8 @@ static int mtk_snand_probe(struct platform_device *pdev)
 	const struct of_device_id *dev_id;
 	struct spi_controller *ctlr;
 	struct mtk_snand *ms;
+	unsigned long spi_freq;
+	u32 val = 0;
 	int ret;
 
 	dev_id = of_match_node(mtk_snand_ids, np);
@@ -1446,6 +1453,19 @@ static int mtk_snand_probe(struct platform_device *pdev)
 	// switch to SNFI mode
 	nfi_write32(ms, SNF_CFG, SPI_MODE);
 
+	ret = of_property_read_u32(np, "rx-sample-delay-ns", &val);
+	if (!ret)
+		nfi_rmw32(ms, SNF_DLY_CTL3, SFCK_SAM_DLY,
+			  val * SFCK_SAM_DLY_RANGE / SFCK_SAM_DLY_TOTAL);
+
+	ret = of_property_read_u32(np, "mediatek,rx-latch-latency-ns", &val);
+	if (!ret) {
+		spi_freq = clk_get_rate(ms->pad_clk);
+		val = DIV_ROUND_CLOSEST(val, NSEC_PER_SEC / spi_freq);
+		nfi_rmw32(ms, SNF_MISC_CTL, DATA_READ_LATCH_LAT,
+			  val << DATA_READ_LATCH_LAT_S);
+	}
+
 	// setup an initial page format for ops matching page_cache_op template
 	// before ECC is called.
 	ret = mtk_snand_setup_pagefmt(ms, SZ_2K, SZ_64);
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v6 5/5] dt-bindings: spi: mtk-snfi: Add read latch latency property
  2023-02-01  2:09 ` Xiangsheng Hou
@ 2023-02-01  2:09   ` Xiangsheng Hou
  -1 siblings, 0 replies; 14+ messages in thread
From: Xiangsheng Hou @ 2023-02-01  2:09 UTC (permalink / raw)
  To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Matthias Brugger
  Cc: Chuanhong Guo, Xiangsheng Hou, linux-spi, devicetree,
	linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao,
	bin.zhang, Krzysztof Kozlowski, AngeloGioacchino Del Regno

Add mediatek,rx-latch-latency-ns property which adjust data read
latch latency in the unit of nanoseconds.

Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 .../devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml         | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml b/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml
index bab23f1b11fd..1e5e89a693c3 100644
--- a/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml
+++ b/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml
@@ -45,6 +45,9 @@ properties:
     description: device-tree node of the accompanying ECC engine.
     $ref: /schemas/types.yaml#/definitions/phandle
 
+  mediatek,rx-latch-latency-ns:
+    description: Data read latch latency, unit is nanoseconds.
+
 required:
   - compatible
   - reg
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v6 5/5] dt-bindings: spi: mtk-snfi: Add read latch latency property
@ 2023-02-01  2:09   ` Xiangsheng Hou
  0 siblings, 0 replies; 14+ messages in thread
From: Xiangsheng Hou @ 2023-02-01  2:09 UTC (permalink / raw)
  To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Matthias Brugger
  Cc: Chuanhong Guo, Xiangsheng Hou, linux-spi, devicetree,
	linux-arm-kernel, linux-mediatek, linux-kernel, benliang.zhao,
	bin.zhang, Krzysztof Kozlowski, AngeloGioacchino Del Regno

Add mediatek,rx-latch-latency-ns property which adjust data read
latch latency in the unit of nanoseconds.

Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 .../devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml         | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml b/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml
index bab23f1b11fd..1e5e89a693c3 100644
--- a/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml
+++ b/Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml
@@ -45,6 +45,9 @@ properties:
     description: device-tree node of the accompanying ECC engine.
     $ref: /schemas/types.yaml#/definitions/phandle
 
+  mediatek,rx-latch-latency-ns:
+    description: Data read latch latency, unit is nanoseconds.
+
 required:
   - compatible
   - reg
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH v6 0/5] Add MediaTek MT7986 SPI NAND support
  2023-02-01  2:09 ` Xiangsheng Hou
@ 2023-02-09 19:18   ` Mark Brown
  -1 siblings, 0 replies; 14+ messages in thread
From: Mark Brown @ 2023-02-09 19:18 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Matthias Brugger, Xiangsheng Hou
  Cc: Chuanhong Guo, linux-spi, devicetree, linux-arm-kernel,
	linux-mediatek, linux-kernel, benliang.zhao, bin.zhang

On Wed, 01 Feb 2023 10:09:16 +0800, Xiangsheng Hou wrote:
> This patch series split from bellow series which pick-up spi relevant patches
> https://lore.kernel.org/all/20230130030656.12127-1-xiangsheng.hou@mediatek.com.
> This series add MediaTek MT7986 SPI NAND controller support, add read latch
> latency, smaple delay adjust and add optional nfi_hclk.
> 
> Changes since V5:
>  - Split spi relevant patches from previous series V4
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next

Thanks!

[1/5] spi: mtk-snfi: Change default page format to setup default setting
      commit: 2b1e19811a8ecc776d15da4ca89df48db6974d66
[2/5] spi: mtk-snfi: Add optional nfi_hclk which is needed for MT7986
      commit: e40fa328551dd67d14e5dc3e4ed82b5b770f027f
[3/5] dt-bindings: spi: mtk-snfi: Add compatible for MT7986
      commit: 8aa2ef233fa3b985ced1ed31b86fddddfd6be4b2
[4/5] spi: mtk-snfi: Add snfi sample delay and read latency adjustment
      commit: 1d36c99062bf4e809271cc534486342442508d4a
[5/5] dt-bindings: spi: mtk-snfi: Add read latch latency property
      commit: 351c02cb740472c659145b0027e77a3353e58185

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v6 0/5] Add MediaTek MT7986 SPI NAND support
@ 2023-02-09 19:18   ` Mark Brown
  0 siblings, 0 replies; 14+ messages in thread
From: Mark Brown @ 2023-02-09 19:18 UTC (permalink / raw)
  To: Rob Herring, Krzysztof Kozlowski, Matthias Brugger, Xiangsheng Hou
  Cc: Chuanhong Guo, linux-spi, devicetree, linux-arm-kernel,
	linux-mediatek, linux-kernel, benliang.zhao, bin.zhang

On Wed, 01 Feb 2023 10:09:16 +0800, Xiangsheng Hou wrote:
> This patch series split from bellow series which pick-up spi relevant patches
> https://lore.kernel.org/all/20230130030656.12127-1-xiangsheng.hou@mediatek.com.
> This series add MediaTek MT7986 SPI NAND controller support, add read latch
> latency, smaple delay adjust and add optional nfi_hclk.
> 
> Changes since V5:
>  - Split spi relevant patches from previous series V4
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next

Thanks!

[1/5] spi: mtk-snfi: Change default page format to setup default setting
      commit: 2b1e19811a8ecc776d15da4ca89df48db6974d66
[2/5] spi: mtk-snfi: Add optional nfi_hclk which is needed for MT7986
      commit: e40fa328551dd67d14e5dc3e4ed82b5b770f027f
[3/5] dt-bindings: spi: mtk-snfi: Add compatible for MT7986
      commit: 8aa2ef233fa3b985ced1ed31b86fddddfd6be4b2
[4/5] spi: mtk-snfi: Add snfi sample delay and read latency adjustment
      commit: 1d36c99062bf4e809271cc534486342442508d4a
[5/5] dt-bindings: spi: mtk-snfi: Add read latch latency property
      commit: 351c02cb740472c659145b0027e77a3353e58185

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2023-02-09 19:19 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-01  2:09 [PATCH v6 0/5] Add MediaTek MT7986 SPI NAND support Xiangsheng Hou
2023-02-01  2:09 ` Xiangsheng Hou
2023-02-01  2:09 ` [PATCH v6 1/5] spi: mtk-snfi: Change default page format to setup default setting Xiangsheng Hou
2023-02-01  2:09   ` Xiangsheng Hou
2023-02-01  2:09 ` [PATCH v6 2/5] spi: mtk-snfi: Add optional nfi_hclk which is needed for MT7986 Xiangsheng Hou
2023-02-01  2:09   ` Xiangsheng Hou
2023-02-01  2:09 ` [PATCH v6 3/5] dt-bindings: spi: mtk-snfi: Add compatible " Xiangsheng Hou
2023-02-01  2:09   ` Xiangsheng Hou
2023-02-01  2:09 ` [PATCH v6 4/5] spi: mtk-snfi: Add snfi sample delay and read latency adjustment Xiangsheng Hou
2023-02-01  2:09   ` Xiangsheng Hou
2023-02-01  2:09 ` [PATCH v6 5/5] dt-bindings: spi: mtk-snfi: Add read latch latency property Xiangsheng Hou
2023-02-01  2:09   ` Xiangsheng Hou
2023-02-09 19:18 ` [PATCH v6 0/5] Add MediaTek MT7986 SPI NAND support Mark Brown
2023-02-09 19:18   ` Mark Brown

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.