2019-11-03 01:38:58

by Andreas Färber

[permalink] [raw]
Subject: [RFC 05/11] dt-bindings: soc: realtek: rtd1195-chip: Extend reg property

Allow to optionally specify a second register to identify the chip.
Whether needed and which register to specify depends on the family;
RTD1295 family will want the CHIP_INFO1 register.

Signed-off-by: Andreas Färber <[email protected]>
---
A SoC specific binding would defeat the purpose of the generic Linux driver;
is it possible to check the root node's compatible in an if: expression
to prohibit using more than one reg on "realtek,rtd1195"?

.../devicetree/bindings/soc/realtek/realtek,rtd1195-chip.yaml | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/soc/realtek/realtek,rtd1195-chip.yaml b/Documentation/devicetree/bindings/soc/realtek/realtek,rtd1195-chip.yaml
index 565ad2419553..e431cf559b66 100644
--- a/Documentation/devicetree/bindings/soc/realtek/realtek,rtd1195-chip.yaml
+++ b/Documentation/devicetree/bindings/soc/realtek/realtek,rtd1195-chip.yaml
@@ -11,13 +11,15 @@ maintainers:

description: |
The Realtek SoCs have some registers to identify the chip and revision.
+ To identify the exact model within a family, further registers are needed.

properties:
compatible:
const: "realtek,rtd1195-chip"

reg:
- maxItems: 1
+ minItems: 1
+ maxItems: 2

required:
- compatible
@@ -29,4 +31,10 @@ examples:
compatible = "realtek,rtd1195-chip";
reg = <0x1801a200 0x8>;
};
+ - |
+ chip-info@9801a200 {
+ compatible = "realtek,rtd1195-chip";
+ reg = <0x9801a200 0x8>,
+ <0x98007028 0x4>;
+ };
...
--
2.16.4


2019-11-06 04:48:28

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [RFC 05/11] dt-bindings: soc: realtek: rtd1195-chip: Extend reg property

On Sun, Nov 03, 2019 at 02:36:39AM +0100, Andreas F?rber wrote:
> Allow to optionally specify a second register to identify the chip.
> Whether needed and which register to specify depends on the family;
> RTD1295 family will want the CHIP_INFO1 register.
>
> Signed-off-by: Andreas F?rber <[email protected]>
> ---
> A SoC specific binding would defeat the purpose of the generic Linux driver;

Why? You can map any number of compatibles to a generic driver.

> is it possible to check the root node's compatible in an if: expression
> to prohibit using more than one reg on "realtek,rtd1195"?

The "rule" is different programming model, different compatible string
for the block. But this looks simple enough, I don't really care.

>
> .../devicetree/bindings/soc/realtek/realtek,rtd1195-chip.yaml | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/soc/realtek/realtek,rtd1195-chip.yaml b/Documentation/devicetree/bindings/soc/realtek/realtek,rtd1195-chip.yaml
> index 565ad2419553..e431cf559b66 100644
> --- a/Documentation/devicetree/bindings/soc/realtek/realtek,rtd1195-chip.yaml
> +++ b/Documentation/devicetree/bindings/soc/realtek/realtek,rtd1195-chip.yaml
> @@ -11,13 +11,15 @@ maintainers:
>
> description: |
> The Realtek SoCs have some registers to identify the chip and revision.
> + To identify the exact model within a family, further registers are needed.
>
> properties:
> compatible:
> const: "realtek,rtd1195-chip"
>
> reg:
> - maxItems: 1
> + minItems: 1
> + maxItems: 2
>
> required:
> - compatible
> @@ -29,4 +31,10 @@ examples:
> compatible = "realtek,rtd1195-chip";
> reg = <0x1801a200 0x8>;
> };
> + - |
> + chip-info@9801a200 {
> + compatible = "realtek,rtd1195-chip";
> + reg = <0x9801a200 0x8>,
> + <0x98007028 0x4>;
> + };
> ...
> --
> 2.16.4
>

2019-11-06 08:43:07

by Andreas Färber

[permalink] [raw]
Subject: Re: [RFC 05/11] dt-bindings: soc: realtek: rtd1195-chip: Extend reg property

Am 06.11.19 um 05:46 schrieb Rob Herring:
> On Sun, Nov 03, 2019 at 02:36:39AM +0100, Andreas Färber wrote:
>> Allow to optionally specify a second register to identify the chip.
>> Whether needed and which register to specify depends on the family;
>> RTD1295 family will want the CHIP_INFO1 register.
>>
>> Signed-off-by: Andreas Färber <[email protected]>
>> ---
>> A SoC specific binding would defeat the purpose of the generic Linux driver;
>
> Why? You can map any number of compatibles to a generic driver.

Because the purpose of the driver is to read from the registers which
chip it is. If we tell it via the compatible what it is supposed to be,
1) only the revision would need to be read, and 2) how should it react
if the compatible tells it one thing and the register value another.

Also it doesn't solve the problem that we may need to extend the binding
as new models emerge, or instead of just rtd1195, rtd1295, rtd1395, etc.
we'd also need one for each chip, i.e., rtd1296, cf. 1) above.

>> is it possible to check the root node's compatible in an if: expression
>> to prohibit using more than one reg on "realtek,rtd1195"?
>
> The "rule" is different programming model, different compatible string
> for the block.

Agreed in general.

> But this looks simple enough, I don't really care.

Hope you also read the cover letter wrt syscon? That would probably
obsolete this binding then and require to move the driver's logic into a
module init instead for lack of dedicated compatible to bind against,
like Meson does.

Regards,
Andreas

--
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer
HRB 36809 (AG Nürnberg)