* [RFC PATCH v3 0/2] mtd: rawnand: meson: add Amlogic NAND driver support
@ 2018-09-07 10:57 Jianxin Pan
2018-09-07 10:57 ` [RFC PATCH v3 1/2] dt-bindings: nand: meson: add Amlogic NAND controller driver Jianxin Pan
0 siblings, 1 reply; 4+ messages in thread
From: Jianxin Pan @ 2018-09-07 10:57 UTC (permalink / raw)
To: Boris Brezillon, linux-mtd
Cc: Jianxin Pan, David Woodhouse, Brian Norris, Marek Vasut,
Richard Weinberger, Jerome Brunet, Neil Armstrong,
Martin Blumenstingl, Carlo Caione, Kevin Hilman, Rob Herring,
Yixun Lan, Jian Hu, Liang Yang, Hanjie Lin, Victor Wan,
linux-amlogic, linux-arm-kernel, linux-kernel, devicetree
These two patches try to add initial NAND driver support for Amlogic Meson
SoCs, current it has been tested on GXL(p212) and AXG(s400) platform.
Changes since v2 at [3]:
- remove some hardcode time value, like twb
- use dev wait R/B instead of nand_soft_waitrdy
- implement nfc ecc init by ecc helper
- rework nfc buffer init to register the maximun buffer when several chips
- free nfc buffer when error and cleanup
- add variable to teack all the already assigned CS lines
- fix mtd->name use the first cs line only
- remove dt "nand-enable-scrambler" and use NAND_NEED_SCRAMBLING instead.
- move setuping ECC fileds after the identification phase
- use nand_scan() and attach_chip()
- check one event to return IRQ_NONE
- delete cast when of_device_get_match_data
- use nand_controller_init() helper
- remove nfc driver complains when calling devm_ioremap_resource
- clear irqs before setting up irq handler
Changes since v1 at [1]:
- adopt property amlogic,nand-enable-scrambler - thanks Martin
- drop nand pins in DT
- convert clk access to emmc clkc model
- fix regiser field definition alignment
- drop nand-user-mode
- parse cs id from DT
- rework n2m, m2n function
- explain why insert two "IDLE" command
- implement exec_op()
- drop meson_nfc_get_nand_chip_dts()
- release resource once error occur in meson_nfc_nand_chips_init(),
- call nand_cleanup(nand) once mtd_device_register fail
Items not addressed ( or confirmed ) in this version:
- convert to ECC conf helper()
- convert to dma coherent API
- how to construct mtd->name
[1] https://lkml.kernel.org/r/20180613161314.14894-1-yixun.lan@amlogic.com
[2] https://lkml.kernel.org/r/20180712211244.11428-1-yixun.lan@amlogic.com
[3] https://lkml.kernel.org/r//20180719094612.5833-1-yixun.lan@amlogic.com
Liang Yang (2):
dt-bindings: nand: meson: add Amlogic NAND controller driver
mtd: rawnand: meson: add support for Amlogic NAND flash controller
.../devicetree/bindings/mtd/amlogic,meson-nand.txt | 91 ++
drivers/mtd/nand/raw/Kconfig | 10 +
drivers/mtd/nand/raw/Makefile | 1 +
drivers/mtd/nand/raw/meson_nand.c | 1372 ++++++++++++++++++++
4 files changed, 1474 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
create mode 100644 drivers/mtd/nand/raw/meson_nand.c
--
1.9.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [RFC PATCH v3 1/2] dt-bindings: nand: meson: add Amlogic NAND controller driver
2018-09-07 10:57 [RFC PATCH v3 0/2] mtd: rawnand: meson: add Amlogic NAND driver support Jianxin Pan
@ 2018-09-07 10:57 ` Jianxin Pan
2018-09-07 12:19 ` Boris Brezillon
0 siblings, 1 reply; 4+ messages in thread
From: Jianxin Pan @ 2018-09-07 10:57 UTC (permalink / raw)
To: Boris Brezillon, linux-mtd
Cc: Liang Yang, Yixun Lan, David Woodhouse, Brian Norris, Marek Vasut,
Richard Weinberger, Jerome Brunet, Neil Armstrong,
Martin Blumenstingl, Carlo Caione, Kevin Hilman, Rob Herring,
Jian Hu, Jianxin Pan, Hanjie Lin, Victor Wan, linux-amlogic,
linux-arm-kernel, linux-kernel, devicetree
From: Liang Yang <liang.yang@amlogic.com>
Add Amlogic NAND controller dt-bindings for Meson SoC,
Current this driver support GXBB/GXL/AXG platform.
Signed-off-by: Liang Yang <liang.yang@amlogic.com>
Signed-off-by: Yixun Lan <yixun.lan@amlogic.com>
---
.../devicetree/bindings/mtd/amlogic,meson-nand.txt | 91 ++++++++++++++++++++++
1 file changed, 91 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
diff --git a/Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt b/Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
new file mode 100644
index 0000000..655a778
--- /dev/null
+++ b/Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
@@ -0,0 +1,91 @@
+Amlogic NAND Flash Controller (NFC) for GXBB/GXL/AXG family SoCs
+
+This file documents the properties in addition to those available in
+the MTD NAND bindings.
+
+Required properties:
+- compatible : contains one of:
+ - "amlogic,meson-gxl-nfc"
+ - "amlogic,meson-axg-nfc"
+- clocks :
+ A list of phandle + clock-specifier pairs for the clocks listed
+ in clock-names.
+
+- clock-names: Should contain the following:
+ "core" - NFC module gate clock
+ "device" - device clock from eMMC sub clock controller
+
+- pins : Select pins which NFC need.
+- nand_pins: Detail NAND pins information.
+- amlogic,mmc-syscon : Required for NAND clocks, it's shared with SD/eMMC
+ controller port C
+
+Optional children nodes:
+Children nodes represent the available nand chips.
+
+
+
+Other properties:
+see Documentation/devicetree/bindings/mtd/nand.txt for generic bindings.
+
+Example demonstrate on AXG SoC:
+
+ sd_emmc_c_clkc: mmc@7000 {
+ compatible = "amlogic,meson-axg-mmc-clkc", "syscon";
+ reg = <0x0 0x7000 0x0 0x800>;
+ status = "okay";
+ };
+
+ nand: nfc@7800 {
+ compatible = "amlogic,meson-axg-nfc";
+ reg = <0x0 0x7800 0x0 0x100>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interrupts = <GIC_SPI 34 IRQ_TYPE_EDGE_RISING>;
+ status = "disabled";
+
+ clocks = <&clkc CLKID_SD_EMMC_C>,
+ <&sd_emmc_c_clkc CLKID_MMC_DIV>;
+ clock-names = "core", "device";
+ amlogic,mmc-syscon = <&sd_emmc_c_clkc>;
+
+ status = "okay";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&nand_pins>;
+
+ nand@0 {
+ reg = <0>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ nand-on-flash-bbt;
+ nand-ecc-mode = "hw";
+ nand-ecc-strength = <8>;
+ nand-ecc-step-size = <1024>;
+
+ amlogic,nand-enable-scrambler;
+
+ partition@0 {
+ label = "boot";
+ reg = <0x00000000 0x00200000>;
+ read-only;
+ };
+ partition@200000 {
+ label = "env";
+ reg = <0x00200000 0x00400000>;
+ };
+ partition@600000 {
+ label = "system";
+ reg = <0x00600000 0x00a00000>;
+ };
+ partition@1000000 {
+ label = "rootfs";
+ reg = <0x01000000 0x03000000>;
+ };
+ partition@4000000 {
+ label = "media";
+ reg = <0x04000000 0x8000000>;
+ };
+ };
+ };
--
1.9.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [RFC PATCH v3 1/2] dt-bindings: nand: meson: add Amlogic NAND controller driver
2018-09-07 10:57 ` [RFC PATCH v3 1/2] dt-bindings: nand: meson: add Amlogic NAND controller driver Jianxin Pan
@ 2018-09-07 12:19 ` Boris Brezillon
2018-09-10 4:46 ` Liang Yang
0 siblings, 1 reply; 4+ messages in thread
From: Boris Brezillon @ 2018-09-07 12:19 UTC (permalink / raw)
To: Jianxin Pan
Cc: linux-mtd, Liang Yang, Yixun Lan, David Woodhouse, Brian Norris,
Marek Vasut, Richard Weinberger, Jerome Brunet, Neil Armstrong,
Martin Blumenstingl, Carlo Caione, Kevin Hilman, Rob Herring,
Jian Hu, Hanjie Lin, Victor Wan, linux-amlogic, linux-arm-kernel,
linux-kernel, devicetree
On Fri, 7 Sep 2018 18:57:10 +0800
Jianxin Pan <jianxin.pan@amlogic.com> wrote:
> From: Liang Yang <liang.yang@amlogic.com>
>
> Add Amlogic NAND controller dt-bindings for Meson SoC,
> Current this driver support GXBB/GXL/AXG platform.
>
> Signed-off-by: Liang Yang <liang.yang@amlogic.com>
> Signed-off-by: Yixun Lan <yixun.lan@amlogic.com>
> ---
> .../devicetree/bindings/mtd/amlogic,meson-nand.txt | 91 ++++++++++++++++++++++
> 1 file changed, 91 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
>
> diff --git a/Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt b/Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
> new file mode 100644
> index 0000000..655a778
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
> @@ -0,0 +1,91 @@
> +Amlogic NAND Flash Controller (NFC) for GXBB/GXL/AXG family SoCs
> +
> +This file documents the properties in addition to those available in
> +the MTD NAND bindings.
> +
> +Required properties:
> +- compatible : contains one of:
> + - "amlogic,meson-gxl-nfc"
> + - "amlogic,meson-axg-nfc"
> +- clocks :
> + A list of phandle + clock-specifier pairs for the clocks listed
> + in clock-names.
> +
> +- clock-names: Should contain the following:
> + "core" - NFC module gate clock
> + "device" - device clock from eMMC sub clock controller
> +
> +- pins : Select pins which NFC need.
> +- nand_pins: Detail NAND pins information.
You mean pinctrl-names and pinctrl-0, right? Not sure it's necessary to
document that, but if you do, please use the correct DT prop names.
> +- amlogic,mmc-syscon : Required for NAND clocks, it's shared with SD/eMMC
> + controller port C
> +
> +Optional children nodes:
> +Children nodes represent the available nand chips.
> +
> +
> +
One too many blank lines here.
> +Other properties:
> +see Documentation/devicetree/bindings/mtd/nand.txt for generic bindings.
> +
> +Example demonstrate on AXG SoC:
> +
> + sd_emmc_c_clkc: mmc@7000 {
> + compatible = "amlogic,meson-axg-mmc-clkc", "syscon";
> + reg = <0x0 0x7000 0x0 0x800>;
> + status = "okay";
> + };
> +
> + nand: nfc@7800 {
> + compatible = "amlogic,meson-axg-nfc";
> + reg = <0x0 0x7800 0x0 0x100>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + interrupts = <GIC_SPI 34 IRQ_TYPE_EDGE_RISING>;
> + status = "disabled";
> +
> + clocks = <&clkc CLKID_SD_EMMC_C>,
> + <&sd_emmc_c_clkc CLKID_MMC_DIV>;
> + clock-names = "core", "device";
> + amlogic,mmc-syscon = <&sd_emmc_c_clkc>;
> +
> + status = "okay";
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&nand_pins>;
> +
> + nand@0 {
> + reg = <0>;
> + #address-cells = <1>;
> + #size-cells = <1>;
> +
> + nand-on-flash-bbt;
> + nand-ecc-mode = "hw";
> + nand-ecc-strength = <8>;
> + nand-ecc-step-size = <1024>;
Drop nand-ecc- props. I guess you have a sensible default value and I
prefer when ECC requirements are directly extracted during chip
detection. Defining that in the DT is a bad habit. The only one that
could make sense (assuming you support it) is nand-ecc-maximize.
> +
> + amlogic,nand-enable-scrambler;
Please drop this property (it's not longer documented).
> +
> + partition@0 {
> + label = "boot";
> + reg = <0x00000000 0x00200000>;
> + read-only;
> + };
> + partition@200000 {
> + label = "env";
> + reg = <0x00200000 0x00400000>;
> + };
> + partition@600000 {
> + label = "system";
> + reg = <0x00600000 0x00a00000>;
> + };
> + partition@1000000 {
> + label = "rootfs";
> + reg = <0x01000000 0x03000000>;
> + };
> + partition@4000000 {
> + label = "media";
> + reg = <0x04000000 0x8000000>;
> + };
No need to define the partitions in your example, especially since they
should be placed in a partitions subnode with a "fixed-partitions"
compat.
> + };
> + };
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [RFC PATCH v3 1/2] dt-bindings: nand: meson: add Amlogic NAND controller driver
2018-09-07 12:19 ` Boris Brezillon
@ 2018-09-10 4:46 ` Liang Yang
0 siblings, 0 replies; 4+ messages in thread
From: Liang Yang @ 2018-09-10 4:46 UTC (permalink / raw)
To: Boris Brezillon, Jianxin Pan
Cc: linux-mtd, Yixun Lan, David Woodhouse, Brian Norris, Marek Vasut,
Richard Weinberger, Jerome Brunet, Neil Armstrong,
Martin Blumenstingl, Carlo Caione, Kevin Hilman, Rob Herring,
Jian Hu, Hanjie Lin, Victor Wan, linux-amlogic, linux-arm-kernel,
linux-kernel, devicetree
Hi boric,
Thanks for your quick reply.
On 9/7/2018 8:19 PM, Boris Brezillon wrote:
> On Fri, 7 Sep 2018 18:57:10 +0800
> Jianxin Pan <jianxin.pan@amlogic.com> wrote:
>
>> From: Liang Yang <liang.yang@amlogic.com>
>>
>> Add Amlogic NAND controller dt-bindings for Meson SoC,
>> Current this driver support GXBB/GXL/AXG platform.
>>
>> Signed-off-by: Liang Yang <liang.yang@amlogic.com>
>> Signed-off-by: Yixun Lan <yixun.lan@amlogic.com>
>> ---
>> .../devicetree/bindings/mtd/amlogic,meson-nand.txt | 91 ++++++++++++++++++++++
>> 1 file changed, 91 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
>>
>> diff --git a/Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt b/Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
>> new file mode 100644
>> index 0000000..655a778
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
>> @@ -0,0 +1,91 @@
>> +Amlogic NAND Flash Controller (NFC) for GXBB/GXL/AXG family SoCs
>> +
>> +This file documents the properties in addition to those available in
>> +the MTD NAND bindings.
>> +
>> +Required properties:
>> +- compatible : contains one of:
>> + - "amlogic,meson-gxl-nfc"
>> + - "amlogic,meson-axg-nfc"
>> +- clocks :
>> + A list of phandle + clock-specifier pairs for the clocks listed
>> + in clock-names.
>> +
>> +- clock-names: Should contain the following:
>> + "core" - NFC module gate clock
>> + "device" - device clock from eMMC sub clock controller
>> +
>> +- pins : Select pins which NFC need.
>> +- nand_pins: Detail NAND pins information.
>
> You mean pinctrl-names and pinctrl-0, right? Not sure it's necessary to
> document that, but if you do, please use the correct DT prop names.
>
I find no documentation for that in other xx_nand.txt; I will consider
to remove it.
>> +- amlogic,mmc-syscon : Required for NAND clocks, it's shared with SD/eMMC
>> + controller port C
>> +
>> +Optional children nodes:
>> +Children nodes represent the available nand chips.
>> +
>> +
>> +
>
> One too many blank lines here.
>
ok, i will remove it.
>> +Other properties:
>> +see Documentation/devicetree/bindings/mtd/nand.txt for generic bindings.
>> +
>> +Example demonstrate on AXG SoC:
>> +
>> + sd_emmc_c_clkc: mmc@7000 {
>> + compatible = "amlogic,meson-axg-mmc-clkc", "syscon";
>> + reg = <0x0 0x7000 0x0 0x800>;
>> + status = "okay";
>> + };
>> +
>> + nand: nfc@7800 {
>> + compatible = "amlogic,meson-axg-nfc";
>> + reg = <0x0 0x7800 0x0 0x100>;
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> + interrupts = <GIC_SPI 34 IRQ_TYPE_EDGE_RISING>;
>> + status = "disabled";
>> +
>> + clocks = <&clkc CLKID_SD_EMMC_C>,
>> + <&sd_emmc_c_clkc CLKID_MMC_DIV>;
>> + clock-names = "core", "device";
>> + amlogic,mmc-syscon = <&sd_emmc_c_clkc>;
>> +
>> + status = "okay";
>> +
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&nand_pins>;
>> +
>> + nand@0 {
>> + reg = <0>;
>> + #address-cells = <1>;
>> + #size-cells = <1>;
>> +
>> + nand-on-flash-bbt;
>> + nand-ecc-mode = "hw";
>> + nand-ecc-strength = <8>;
>> + nand-ecc-step-size = <1024>;
>
> Drop nand-ecc- props. I guess you have a sensible default value and I
> prefer when ECC requirements are directly extracted during chip
> detection. Defining that in the DT is a bad habit. The only one that
> could make sense (assuming you support it) is nand-ecc-maximize.
>
ok, i will drop them.
we adopt auto detection during init stage, it works too.
>> +
>> + amlogic,nand-enable-scrambler;
>
> Please drop this property (it's not longer documented).
>
em, we should have removed it when nfc driver never use it.
>> +
>> + partition@0 {
>> + label = "boot";
>> + reg = <0x00000000 0x00200000>;
>> + read-only;
>> + };
>> + partition@200000 {
>> + label = "env";
>> + reg = <0x00200000 0x00400000>;
>> + };
>> + partition@600000 {
>> + label = "system";
>> + reg = <0x00600000 0x00a00000>;
>> + };
>> + partition@1000000 {
>> + label = "rootfs";
>> + reg = <0x01000000 0x03000000>;
>> + };
>> + partition@4000000 {
>> + label = "media";
>> + reg = <0x04000000 0x8000000>;
>> + };
>
> No need to define the partitions in your example, especially since they
> should be placed in a partitions subnode with a "fixed-partitions"
> compat.
>
ok, i will remove it.
>> + };
>> + };
>
> .
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2018-09-10 4:46 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-09-07 10:57 [RFC PATCH v3 0/2] mtd: rawnand: meson: add Amlogic NAND driver support Jianxin Pan
2018-09-07 10:57 ` [RFC PATCH v3 1/2] dt-bindings: nand: meson: add Amlogic NAND controller driver Jianxin Pan
2018-09-07 12:19 ` Boris Brezillon
2018-09-10 4:46 ` Liang Yang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).