* [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).