* [PATCH 0/2] Simplify compatible matching for brcmstb_memc @ 2025-05-23 18:43 Florian Fainelli 2025-05-23 18:43 ` [PATCH 1/2] dt-bindings: memory-controller: Define fallback compatible Florian Fainelli 2025-05-23 18:43 ` [PATCH 2/2] memory: brcmstb_memc: Simplify compatible matching Florian Fainelli 0 siblings, 2 replies; 7+ messages in thread From: Florian Fainelli @ 2025-05-23 18:43 UTC (permalink / raw) To: linux-kernel Cc: justin.chen, Florian Fainelli, Krzysztof Kozlowski, Rob Herring, Conor Dooley, Broadcom internal kernel review list, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, moderated list:BROADCOM BCM7XXX ARM ARCHITECTURE Since the conversation died off in https://lore.kernel.org/all/20241217194439.929040-2-florian.fainelli@broadcom.com/ here is a second attempt at addressing what I understood from the conversation back then. Thank you Florian Fainelli (2): dt-bindings: memory-controller: Define fallback compatible memory: brcmstb_memc: Simplify compatible matching .../brcm,brcmstb-memc-ddr.yaml | 51 +++++++++------- drivers/memory/brcmstb_memc.c | 58 +------------------ 2 files changed, 34 insertions(+), 75 deletions(-) -- 2.43.0 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] dt-bindings: memory-controller: Define fallback compatible 2025-05-23 18:43 [PATCH 0/2] Simplify compatible matching for brcmstb_memc Florian Fainelli @ 2025-05-23 18:43 ` Florian Fainelli 2025-05-23 18:43 ` [PATCH 2/2] memory: brcmstb_memc: Simplify compatible matching Florian Fainelli 1 sibling, 0 replies; 7+ messages in thread From: Florian Fainelli @ 2025-05-23 18:43 UTC (permalink / raw) To: linux-kernel Cc: justin.chen, Florian Fainelli, Krzysztof Kozlowski, Rob Herring, Conor Dooley, Broadcom internal kernel review list, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, moderated list:BROADCOM BCM7XXX ARM ARCHITECTURE All of the DDR controllers beyond revision b.2.1 have had a consistent layout, therefore define a "brcm,brcmstb-memc-ddr-rev-b.2.x" fallback compatible string to match them all rather than having to continuously add to the list. Link: https://lore.kernel.org/all/20241217194439.929040-2-florian.fainelli@broadcom.com/ Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com> --- .../brcm,brcmstb-memc-ddr.yaml | 51 +++++++++++-------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/Documentation/devicetree/bindings/memory-controllers/brcm,brcmstb-memc-ddr.yaml b/Documentation/devicetree/bindings/memory-controllers/brcm,brcmstb-memc-ddr.yaml index 4b072c879b02..f08eb69fde47 100644 --- a/Documentation/devicetree/bindings/memory-controllers/brcm,brcmstb-memc-ddr.yaml +++ b/Documentation/devicetree/bindings/memory-controllers/brcm,brcmstb-memc-ddr.yaml @@ -11,25 +11,34 @@ maintainers: properties: compatible: - items: - - enum: - - brcm,brcmstb-memc-ddr-rev-b.1.x - - brcm,brcmstb-memc-ddr-rev-b.2.0 - - brcm,brcmstb-memc-ddr-rev-b.2.1 - - brcm,brcmstb-memc-ddr-rev-b.2.2 - - brcm,brcmstb-memc-ddr-rev-b.2.3 - - brcm,brcmstb-memc-ddr-rev-b.2.5 - - brcm,brcmstb-memc-ddr-rev-b.2.6 - - brcm,brcmstb-memc-ddr-rev-b.2.7 - - brcm,brcmstb-memc-ddr-rev-b.2.8 - - brcm,brcmstb-memc-ddr-rev-b.3.0 - - brcm,brcmstb-memc-ddr-rev-b.3.1 - - brcm,brcmstb-memc-ddr-rev-c.1.0 - - brcm,brcmstb-memc-ddr-rev-c.1.1 - - brcm,brcmstb-memc-ddr-rev-c.1.2 - - brcm,brcmstb-memc-ddr-rev-c.1.3 - - brcm,brcmstb-memc-ddr-rev-c.1.4 - - const: brcm,brcmstb-memc-ddr + oneOf: + - description: Revision 2.x controllers + items: + - enum: + - brcm,brcmstb-memc-ddr-rev-b.2.1 + - brcm,brcmstb-memc-ddr-rev-b.2.2 + - brcm,brcmstb-memc-ddr-rev-b.2.3 + - brcm,brcmstb-memc-ddr-rev-b.2.5 + - brcm,brcmstb-memc-ddr-rev-b.2.6 + - brcm,brcmstb-memc-ddr-rev-b.2.7 + - brcm,brcmstb-memc-ddr-rev-b.2.8 + - brcm,brcmstb-memc-ddr-rev-b.3.0 + - brcm,brcmstb-memc-ddr-rev-b.3.1 + - brcm,brcmstb-memc-ddr-rev-c.1.0 + - brcm,brcmstb-memc-ddr-rev-c.1.1 + - brcm,brcmstb-memc-ddr-rev-c.1.2 + - brcm,brcmstb-memc-ddr-rev-c.1.3 + - brcm,brcmstb-memc-ddr-rev-c.1.4 + - const: brcm,brcmstb-memc-ddr-rev-b.2.x + - const: brcm,brcmstb-memc-ddr + - description: Revision 2.0 controllers + items: + - const: brcm,brcmstb-memc-ddr-rev-b.2.0 + - const: brcm,brcmstb-memc-ddr + - description: Revision 1.x controllers + items: + - const: brcm,brcmstb-memc-ddr-rev-b.1.x + - const: brcm,brcmstb-memc-ddr reg: maxItems: 1 @@ -46,7 +55,9 @@ additionalProperties: false examples: - | memory-controller@9902000 { - compatible = "brcm,brcmstb-memc-ddr-rev-c.1.1", "brcm,brcmstb-memc-ddr"; + compatible = "brcm,brcmstb-memc-ddr-rev-c.1.1", + "brcm,brcmstb-memc-ddr-rev-b.2.x", + "brcm,brcmstb-memc-ddr"; reg = <0x9902000 0x600>; clock-frequency = <2133000000>; }; -- 2.43.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] memory: brcmstb_memc: Simplify compatible matching 2025-05-23 18:43 [PATCH 0/2] Simplify compatible matching for brcmstb_memc Florian Fainelli 2025-05-23 18:43 ` [PATCH 1/2] dt-bindings: memory-controller: Define fallback compatible Florian Fainelli @ 2025-05-23 18:43 ` Florian Fainelli 2025-06-05 18:55 ` Rob Herring 1 sibling, 1 reply; 7+ messages in thread From: Florian Fainelli @ 2025-05-23 18:43 UTC (permalink / raw) To: linux-kernel Cc: justin.chen, Florian Fainelli, Krzysztof Kozlowski, Rob Herring, Conor Dooley, Broadcom internal kernel review list, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, moderated list:BROADCOM BCM7XXX ARM ARCHITECTURE Now that a "brcm,brcmstb-memc-ddr-rev-b.2.x" fallback compatible string has been defined, we can greatly simplify the matching within the driver to only look for that compatible string and nothing else. The fallback "brcm,brcmstb-memc-ddr" is also updated to assume the V21 register layout since that is the most common nowadays. Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com> --- drivers/memory/brcmstb_memc.c | 58 ++--------------------------------- 1 file changed, 3 insertions(+), 55 deletions(-) diff --git a/drivers/memory/brcmstb_memc.c b/drivers/memory/brcmstb_memc.c index c87b37e2c1f0..ec4c198ddc49 100644 --- a/drivers/memory/brcmstb_memc.c +++ b/drivers/memory/brcmstb_memc.c @@ -181,65 +181,13 @@ static const struct of_device_id brcmstb_memc_of_match[] = { .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V20] }, { - .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.1", + .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.x", .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] }, - { - .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.2", - .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] - }, - { - .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.3", - .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] - }, - { - .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.5", - .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] - }, - { - .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.6", - .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] - }, - { - .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.7", - .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] - }, - { - .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.8", - .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] - }, - { - .compatible = "brcm,brcmstb-memc-ddr-rev-b.3.0", - .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] - }, - { - .compatible = "brcm,brcmstb-memc-ddr-rev-b.3.1", - .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] - }, - { - .compatible = "brcm,brcmstb-memc-ddr-rev-c.1.0", - .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] - }, - { - .compatible = "brcm,brcmstb-memc-ddr-rev-c.1.1", - .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] - }, - { - .compatible = "brcm,brcmstb-memc-ddr-rev-c.1.2", - .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] - }, - { - .compatible = "brcm,brcmstb-memc-ddr-rev-c.1.3", - .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] - }, - { - .compatible = "brcm,brcmstb-memc-ddr-rev-c.1.4", - .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] - }, - /* default to the original offset */ + /* default to the V21 offset */ { .compatible = "brcm,brcmstb-memc-ddr", - .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V1X] + .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] }, {} }; -- 2.43.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] memory: brcmstb_memc: Simplify compatible matching 2025-05-23 18:43 ` [PATCH 2/2] memory: brcmstb_memc: Simplify compatible matching Florian Fainelli @ 2025-06-05 18:55 ` Rob Herring 2025-06-05 19:10 ` Florian Fainelli 0 siblings, 1 reply; 7+ messages in thread From: Rob Herring @ 2025-06-05 18:55 UTC (permalink / raw) To: Florian Fainelli Cc: linux-kernel, justin.chen, Krzysztof Kozlowski, Conor Dooley, Broadcom internal kernel review list, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, moderated list:BROADCOM BCM7XXX ARM ARCHITECTURE On Fri, May 23, 2025 at 11:43:54AM -0700, Florian Fainelli wrote: > Now that a "brcm,brcmstb-memc-ddr-rev-b.2.x" fallback compatible string > has been defined, we can greatly simplify the matching within the driver > to only look for that compatible string and nothing else. > > The fallback "brcm,brcmstb-memc-ddr" is also updated to assume the V21 > register layout since that is the most common nowadays. > > Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com> > --- > drivers/memory/brcmstb_memc.c | 58 ++--------------------------------- > 1 file changed, 3 insertions(+), 55 deletions(-) > > diff --git a/drivers/memory/brcmstb_memc.c b/drivers/memory/brcmstb_memc.c > index c87b37e2c1f0..ec4c198ddc49 100644 > --- a/drivers/memory/brcmstb_memc.c > +++ b/drivers/memory/brcmstb_memc.c > @@ -181,65 +181,13 @@ static const struct of_device_id brcmstb_memc_of_match[] = { > .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V20] > }, > { > - .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.1", > + .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.x", > .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] This entry is pointless because the default will get V21. In fact, I don't think you need the new compatible string at all. It doesn't work to add fallbacks after the fact. Rob ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] memory: brcmstb_memc: Simplify compatible matching 2025-06-05 18:55 ` Rob Herring @ 2025-06-05 19:10 ` Florian Fainelli 2025-06-05 20:30 ` Krzysztof Kozlowski 0 siblings, 1 reply; 7+ messages in thread From: Florian Fainelli @ 2025-06-05 19:10 UTC (permalink / raw) To: Rob Herring Cc: linux-kernel, justin.chen, Krzysztof Kozlowski, Conor Dooley, Broadcom internal kernel review list, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, moderated list:BROADCOM BCM7XXX ARM ARCHITECTURE On 6/5/25 11:55, Rob Herring wrote: > On Fri, May 23, 2025 at 11:43:54AM -0700, Florian Fainelli wrote: >> Now that a "brcm,brcmstb-memc-ddr-rev-b.2.x" fallback compatible string >> has been defined, we can greatly simplify the matching within the driver >> to only look for that compatible string and nothing else. >> >> The fallback "brcm,brcmstb-memc-ddr" is also updated to assume the V21 >> register layout since that is the most common nowadays. >> >> Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com> >> --- >> drivers/memory/brcmstb_memc.c | 58 ++--------------------------------- >> 1 file changed, 3 insertions(+), 55 deletions(-) >> >> diff --git a/drivers/memory/brcmstb_memc.c b/drivers/memory/brcmstb_memc.c >> index c87b37e2c1f0..ec4c198ddc49 100644 >> --- a/drivers/memory/brcmstb_memc.c >> +++ b/drivers/memory/brcmstb_memc.c >> @@ -181,65 +181,13 @@ static const struct of_device_id brcmstb_memc_of_match[] = { >> .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V20] >> }, >> { >> - .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.1", >> + .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.x", >> .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] > > This entry is pointless because the default will get V21. > > In fact, I don't think you need the new compatible string at all. It > doesn't work to add fallbacks after the fact. I agree and would prefer to keep adding new compatible strings which is what I initially did here: https://lore.kernel.org/all/20241217194439.929040-2-florian.fainelli@broadcom.com/ but the feedback was that this should not be done, and hence this attempt at defining a compatible string that would avoid needless churn. So which way should I go now? -- Florian ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] memory: brcmstb_memc: Simplify compatible matching 2025-06-05 19:10 ` Florian Fainelli @ 2025-06-05 20:30 ` Krzysztof Kozlowski 2025-06-05 21:15 ` Florian Fainelli 0 siblings, 1 reply; 7+ messages in thread From: Krzysztof Kozlowski @ 2025-06-05 20:30 UTC (permalink / raw) To: Florian Fainelli, Rob Herring Cc: linux-kernel, justin.chen, Conor Dooley, Broadcom internal kernel review list, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, moderated list:BROADCOM BCM7XXX ARM ARCHITECTURE On 05/06/2025 21:10, Florian Fainelli wrote: > On 6/5/25 11:55, Rob Herring wrote: >> On Fri, May 23, 2025 at 11:43:54AM -0700, Florian Fainelli wrote: >>> Now that a "brcm,brcmstb-memc-ddr-rev-b.2.x" fallback compatible string >>> has been defined, we can greatly simplify the matching within the driver >>> to only look for that compatible string and nothing else. >>> >>> The fallback "brcm,brcmstb-memc-ddr" is also updated to assume the V21 >>> register layout since that is the most common nowadays. >>> >>> Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com> >>> --- >>> drivers/memory/brcmstb_memc.c | 58 ++--------------------------------- >>> 1 file changed, 3 insertions(+), 55 deletions(-) >>> >>> diff --git a/drivers/memory/brcmstb_memc.c b/drivers/memory/brcmstb_memc.c >>> index c87b37e2c1f0..ec4c198ddc49 100644 >>> --- a/drivers/memory/brcmstb_memc.c >>> +++ b/drivers/memory/brcmstb_memc.c >>> @@ -181,65 +181,13 @@ static const struct of_device_id brcmstb_memc_of_match[] = { >>> .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V20] >>> }, >>> { >>> - .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.1", >>> + .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.x", >>> .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] >> >> This entry is pointless because the default will get V21. >> >> In fact, I don't think you need the new compatible string at all. It >> doesn't work to add fallbacks after the fact. > > I agree and would prefer to keep adding new compatible strings which is So you agree that adding such entries is pointless? > what I initially did here: > > https://lore.kernel.org/all/20241217194439.929040-2-florian.fainelli@broadcom.com/ > > but the feedback was that this should not be done, and hence this > attempt at defining a compatible string that would avoid needless churn. > > So which way should I go now? And the advice was to use v2.1 fallback, not replace v2.1 with something else or keep adding pointless entries: https://lore.kernel.org/all/2e33t7ft5ermsfr7c4ympxrn6l5sqdef3wml4hlbnhdupoouwj@gfjpbmowjadi/ Best regards, Krzysztof ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] memory: brcmstb_memc: Simplify compatible matching 2025-06-05 20:30 ` Krzysztof Kozlowski @ 2025-06-05 21:15 ` Florian Fainelli 0 siblings, 0 replies; 7+ messages in thread From: Florian Fainelli @ 2025-06-05 21:15 UTC (permalink / raw) To: Krzysztof Kozlowski, Rob Herring Cc: linux-kernel, justin.chen, Conor Dooley, Broadcom internal kernel review list, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, moderated list:BROADCOM BCM7XXX ARM ARCHITECTURE On 6/5/25 13:30, Krzysztof Kozlowski wrote: > On 05/06/2025 21:10, Florian Fainelli wrote: >> On 6/5/25 11:55, Rob Herring wrote: >>> On Fri, May 23, 2025 at 11:43:54AM -0700, Florian Fainelli wrote: >>>> Now that a "brcm,brcmstb-memc-ddr-rev-b.2.x" fallback compatible string >>>> has been defined, we can greatly simplify the matching within the driver >>>> to only look for that compatible string and nothing else. >>>> >>>> The fallback "brcm,brcmstb-memc-ddr" is also updated to assume the V21 >>>> register layout since that is the most common nowadays. >>>> >>>> Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com> >>>> --- >>>> drivers/memory/brcmstb_memc.c | 58 ++--------------------------------- >>>> 1 file changed, 3 insertions(+), 55 deletions(-) >>>> >>>> diff --git a/drivers/memory/brcmstb_memc.c b/drivers/memory/brcmstb_memc.c >>>> index c87b37e2c1f0..ec4c198ddc49 100644 >>>> --- a/drivers/memory/brcmstb_memc.c >>>> +++ b/drivers/memory/brcmstb_memc.c >>>> @@ -181,65 +181,13 @@ static const struct of_device_id brcmstb_memc_of_match[] = { >>>> .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V20] >>>> }, >>>> { >>>> - .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.1", >>>> + .compatible = "brcm,brcmstb-memc-ddr-rev-b.2.x", >>>> .data = &brcmstb_memc_versions[BRCMSTB_MEMC_V21] >>> >>> This entry is pointless because the default will get V21. >>> >>> In fact, I don't think you need the new compatible string at all. It >>> doesn't work to add fallbacks after the fact. >> >> I agree and would prefer to keep adding new compatible strings which is > > So you agree that adding such entries is pointless? I don't think it is pointless, it's overly descriptive and we don't key off of it for now. > >> what I initially did here: >> >> https://lore.kernel.org/all/20241217194439.929040-2-florian.fainelli@broadcom.com/ >> >> but the feedback was that this should not be done, and hence this >> attempt at defining a compatible string that would avoid needless churn. >> >> So which way should I go now? > > And the advice was to use v2.1 fallback, not replace v2.1 with something > else or keep adding pointless entries: > https://lore.kernel.org/all/2e33t7ft5ermsfr7c4ympxrn6l5sqdef3wml4hlbnhdupoouwj@gfjpbmowjadi/ Fair enough then, I will re-spin accordingly. Thank you both. -- Florian ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-06-05 21:15 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-05-23 18:43 [PATCH 0/2] Simplify compatible matching for brcmstb_memc Florian Fainelli 2025-05-23 18:43 ` [PATCH 1/2] dt-bindings: memory-controller: Define fallback compatible Florian Fainelli 2025-05-23 18:43 ` [PATCH 2/2] memory: brcmstb_memc: Simplify compatible matching Florian Fainelli 2025-06-05 18:55 ` Rob Herring 2025-06-05 19:10 ` Florian Fainelli 2025-06-05 20:30 ` Krzysztof Kozlowski 2025-06-05 21:15 ` Florian Fainelli
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).