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

William Zhang
2023-06-15T00:28:56Z

[-- Attachment #1: Type: text/plain, Size: 4896 bytes --]

Hi Rob,

On 06/14/2023 03:43 PM, Rob Herring wrote:
> On Tue, Jun 06, 2023 at 04:12:45PM -0700, William Zhang wrote:
>> 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.
>
> I don't understand why you need to change this.
>
>
Same as the iProc SoC NAND controller flavor for our BCMBCA SoC
controller. And the existing binding is wrong. It shows
brcm,nand-bcm63138 can be backward compatible to either v7.0 and v7.1
controller. But in fact 63138 only use v7.0.

I understand we had discussion before and chip specific name is the
preferred method but the nand controller here is different and it has
well defined and documented version control and our bcmbca SoCs
integrate the controller exactly the same way so no chip specific
compatible is needed. In the unlikely event that a future bcmbca SoC
has a different implementation, we can always add new chip specific
compatible.

If you are concerned about ABI breakage on the 63138 compatible, I can
add it back, although I find only a few 63138 and 4908 boards use it
and I did keep it in the driver so they can still bind.

>> 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@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@gmail.com>
>> - Kamal Dasu <kdasu.kdev@gmail.com>
>> + - William Zhang <william.zhang@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
>
> Completely changing what's valid here too. You're breaking the ABI.
>
This binding is wrong, 63168 is not backward compatible to 6368. They
should backward compatible to their specific controller version. If you
looks arch/mips/boot/dts/brcm/bcm6328.dtsi, bcm6368.dtsi, bcm63268.dtsi
and bcm6362.dtsi, their compatible list is correct but the yaml was not
updated.

> Rob