[PATCH 05/12] dt-bindings: mtd: brcmnand: Updates for bcmbca SoCs

Miquel Raynal miquel.raynal at bootlin.com
Wed Jun 7 01:14:52 PDT 2023


Hi William,

william.zhang at broadcom.com wrote on Tue,  6 Jun 2023 16:12:45 -0700:

> Use new compatiable brcm,nand-bcmbca to support BCMBCA broadband
> product. The old compatible string is still kept in the driver so old
> dtb can still work.
> 
> Add brcm,nand-use-wp property to have an option for disabling this
> feature on broadband board design that does not use write protection.
> Add brcm,nand-ecc-use-strap to get ecc setting from board strap for
> broadband board designs because they do not specify ecc setting in dts
> but rather using the strap setting.
> 
> Remove the requirement of interrupts and interrupt-names properties to
> reflect the driver code.
> 
> This patch also includes a few minor fixes to the BCM63xx compatibles
> and add myself to the list of maintainers.
> 
> Signed-off-by: William Zhang <william.zhang at broadcom.com>
> ---
> 
>  .../bindings/mtd/brcm,brcmnand.yaml           | 64 +++++++++++++------
>  1 file changed, 43 insertions(+), 21 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/mtd/brcm,brcmnand.yaml b/Documentation/devicetree/bindings/mtd/brcm,brcmnand.yaml
> index 1571024aa119..1fe1c166a9db 100644
> --- a/Documentation/devicetree/bindings/mtd/brcm,brcmnand.yaml
> +++ b/Documentation/devicetree/bindings/mtd/brcm,brcmnand.yaml
> @@ -9,6 +9,7 @@ title: Broadcom STB NAND Controller
>  maintainers:
>    - Brian Norris <computersforpeace at gmail.com>
>    - Kamal Dasu <kdasu.kdev at gmail.com>
> +  - William Zhang <william.zhang at broadcom.com>
>  
>  description: |
>    The Broadcom Set-Top Box NAND controller supports low-level access to raw NAND
> @@ -18,9 +19,10 @@ description: |
>    supports basic PROGRAM and READ functions, among other features.
>  
>    This controller was originally designed for STB SoCs (BCM7xxx) but is now
> -  available on a variety of Broadcom SoCs, including some BCM3xxx, BCM63xx, and
> -  iProc/Cygnus. Its history includes several similar (but not fully register
> -  compatible) versions.
> +  available on a variety of Broadcom SoCs, including some BCM3xxx, MIPS based
> +  Broadband SoC (BCM63xx), ARM based Broadband SoC (BCMBCA) and iProc/Cygnus.
> +  Its history includes several similar (but not fully register compatible)
> +  versions.
>  
>    -- Additional SoC-specific NAND controller properties --
>  
> @@ -53,9 +55,9 @@ properties:
>                - brcm,brcmnand-v7.2
>                - brcm,brcmnand-v7.3
>            - const: brcm,brcmnand
> -      - description: BCM63138 SoC-specific NAND controller
> +      - description: BCMBCA SoC-specific NAND controller
>          items:
> -          - const: brcm,nand-bcm63138
> +          - const: brcm,nand-bcmbca
>            - enum:
>                - brcm,brcmnand-v7.0
>                - brcm,brcmnand-v7.1
> @@ -65,11 +67,15 @@ properties:
>            - const: brcm,nand-iproc
>            - const: brcm,brcmnand-v6.1
>            - const: brcm,brcmnand
> -      - description: BCM63168 SoC-specific NAND controller
> +      - description: BCM63xx SoC-specific NAND controller
>          items:
> -          - const: brcm,nand-bcm63168
> -          - const: brcm,nand-bcm6368
> -          - const: brcm,brcmnand-v4.0
> +          - enum:
> +              - brcm,nand-bcm63168
> +              - brcm,nand-bcm6368
> +          - enum:
> +              - brcm,brcmnand-v2.1
> +              - brcm,brcmnand-v2.2
> +              - brcm,brcmnand-v4.0
>            - const: brcm,brcmnand
>  
>    reg:
> @@ -111,6 +117,19 @@ properties:
>        earlier versions of this core that include WP
>      type: boolean
>  
> +  brcm,nand-use-wp:
> +    description:
> +      Use this integer to indicate if board design uses
> +      controller's write protection feature and connects its
> +      NAND_WPb pin to nand chip's WP_L pin. Driver defaults to
> +      use this feature when this property does not exist.
> +      Set to 0 if WP pins are not connected and feature is not
> +      used. Set to 1 if WP pins are connected and feature is used.
> +      Set to 2 if WP pins are connected but disable this feature
> +      through driver that sets controller to output high on NAND_WPb.
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    enum: [0, 1, 2]

Perhaps strings would be welcome. I'll let binding maintainers say what
they think of it.

> +
>  patternProperties:
>    "^nand@[a-f0-9]$":
>      type: object
> @@ -136,13 +155,23 @@ patternProperties:
>            layout.
>          $ref: /schemas/types.yaml#/definitions/uint32
>  
> +      brcm,nand-ecc-use-strap:
> +        description:
> +          This flag is used by the driver to get the ecc strength and
> +          spare area size from the SoC NAND boot strap setting. This
> +          is commonly used by the BCMBCA SoC board design. If ecc
> +          strength and spare area size are set by nand-ecc-strength
> +          and brcm,nand-oob-sector-size in the dts, these settings
> +          have precedence and override this flag.
> +        $ref: /schemas/types.yaml#/definitions/flag

How in practice do you access the strap value? Don't you need a phandle
over a specific area in the SoC?

> +
>  allOf:
>    - $ref: nand-controller.yaml#
>    - if:
>        properties:
>          compatible:
>            contains:
> -            const: brcm,nand-bcm63138
> +            const: brcm,nand-bcmbca
>      then:
>        properties:
>          reg-names:
> @@ -153,7 +182,9 @@ allOf:
>        properties:
>          compatible:
>            contains:
> -            const: brcm,nand-bcm6368
> +            enum:
> +              - brcm,nand-bcm63168
> +              - brcm,nand-bcm6368
>      then:
>        properties:
>          reg-names:
> @@ -173,20 +204,12 @@ allOf:
>              - const: nand
>              - const: iproc-idm
>              - const: iproc-ext
> -  - if:
> -      properties:
> -        interrupts:
> -          minItems: 2
> -    then:
> -      required:
> -        - interrupt-names

Why do you remove this? Removing "interrupts" from the required
properties is fine, but constraining the interrupts property when it is
relevant is still expected.

>  
>  unevaluatedProperties: false
>  
>  required:
>    - reg
>    - reg-names
> -  - interrupts

This should be done in a separate patch.

>  
>  examples:
>    - |
> @@ -215,8 +238,7 @@ examples:
>      };
>    - |
>      nand-controller at 10000200 {
> -        compatible = "brcm,nand-bcm63168", "brcm,nand-bcm6368",
> -                     "brcm,brcmnand-v4.0", "brcm,brcmnand";
> +        compatible = "brcm,nand-bcm6368", "brcm,brcmnand-v2.1", "brcm,brcmnand";
>          reg = <0x10000200 0x180>,
>                <0x100000b0 0x10>,
>                <0x10000600 0x200>;


Thanks,
Miquèl



More information about the linux-mtd mailing list