Message ID | 1456107350-12100-2-git-send-email-horms+renesas@verge.net.au (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Geert Uytterhoeven |
Headers | show |
On Mon, Feb 22, 2016 at 11:15:49AM +0900, Simon Horman wrote: > Add fallback compatibility string for R-Car Gen 1 and Gen2 families. > This is in keeping with the fallback scheme being adopted wherever > appropriate for drivers for Renesas SoCs. > > Signed-off-by: Simon Horman <horms+renesas@verge.net.au> > --- > Documentation/devicetree/bindings/net/can/rcar_can.txt | 4 +++- > drivers/net/can/rcar_can.c | 2 ++ > 2 files changed, 5 insertions(+), 1 deletion(-) Acked-by: Rob Herring <robh@kernel.org>
On 02/22/2016 04:37 AM, Rob Herring wrote: > On Mon, Feb 22, 2016 at 11:15:49AM +0900, Simon Horman wrote: >> Add fallback compatibility string for R-Car Gen 1 and Gen2 families. >> This is in keeping with the fallback scheme being adopted wherever >> appropriate for drivers for Renesas SoCs. >> >> Signed-off-by: Simon Horman <horms+renesas@verge.net.au> >> --- >> Documentation/devicetree/bindings/net/can/rcar_can.txt | 4 +++- >> drivers/net/can/rcar_can.c | 2 ++ >> 2 files changed, 5 insertions(+), 1 deletion(-) > > Acked-by: Rob Herring <robh@kernel.org> I'm not following the latest DT discussions, is there a (new) decision to add such "generic" compatibles? AFAIK you add the oldest device that's compatible with your driver to your SoC dtsi at rightmost compatible. You can add one that identifies your SoC's IP core in front of it. So there's no need to modify the driver until an IP core needs different handling. In your case you'd identify the oldest SoC that implements the Gen1 IP core and use this instead of "renesas,can-gen1. Same for Gen2 IP core. regards, Marc
On Mon, Feb 22, 2016 at 3:15 AM, Simon Horman <horms+renesas@verge.net.au> wrote: > Add fallback compatibility string for R-Car Gen 1 and Gen2 families. > This is in keeping with the fallback scheme being adopted wherever > appropriate for drivers for Renesas SoCs. > > Signed-off-by: Simon Horman <horms+renesas@verge.net.au> > --- > Documentation/devicetree/bindings/net/can/rcar_can.txt | 4 +++- > drivers/net/can/rcar_can.c | 2 ++ > 2 files changed, 5 insertions(+), 1 deletion(-) > > diff --git a/Documentation/devicetree/bindings/net/can/rcar_can.txt b/Documentation/devicetree/bindings/net/can/rcar_can.txt > index 002d8440bf66..036786e1f70d 100644 > --- a/Documentation/devicetree/bindings/net/can/rcar_can.txt > +++ b/Documentation/devicetree/bindings/net/can/rcar_can.txt > @@ -6,6 +6,8 @@ Required properties: > "renesas,can-r8a7779" if CAN controller is a part of R8A7779 SoC. > "renesas,can-r8a7790" if CAN controller is a part of R8A7790 SoC. > "renesas,can-r8a7791" if CAN controller is a part of R8A7791 SoC. > + "renesas,can-gen1" for a generic R-Car Gen1 compatible device. > + "renesas,can-gen2" for a generic R-Car Gen2 compatible device. "renesas,rcar-gen1-can", "renesas,rcar-gen2-can"? (Yeah, "can" looks a lot like "rcar" ;-) Nothing further to say about SoC-specific vs. generic compatible values? > - reg: physical base address and size of the R-Car CAN register map. > - interrupts: interrupt specifier for the sole interrupt. > - clocks: phandles and clock specifiers for 3 CAN clock inputs. > @@ -25,7 +27,7 @@ Example > SoC common .dtsi file: > > can0: can@e6e80000 { > - compatible = "renesas,can-r8a7791"; > + compatible = "renesas,can-r8a7791", "renesas,can-gen2"; "renesas,rcar-gen2-can". > reg = <0 0xe6e80000 0 0x1000>; > interrupts = <0 186 IRQ_TYPE_LEVEL_HIGH>; > clocks = <&mstp9_clks R8A7791_CLK_RCAN0>, > diff --git a/drivers/net/can/rcar_can.c b/drivers/net/can/rcar_can.c > index bc46be39549d..c70a1f795933 100644 > --- a/drivers/net/can/rcar_can.c > +++ b/drivers/net/can/rcar_can.c > @@ -904,6 +904,8 @@ static const struct of_device_id rcar_can_of_table[] __maybe_unused = { > { .compatible = "renesas,can-r8a7779" }, > { .compatible = "renesas,can-r8a7790" }, > { .compatible = "renesas,can-r8a7791" }, > + { .compatible = "renesas,can-gen1" }, > + { .compatible = "renesas,can-gen2" }, "renesas,rcar-gen1-can" "renesas,rcar-gen2-can". Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
On Mon, Feb 22, 2016 at 04:40:39PM +0100, Geert Uytterhoeven wrote: > On Mon, Feb 22, 2016 at 3:15 AM, Simon Horman > <horms+renesas@verge.net.au> wrote: > > Add fallback compatibility string for R-Car Gen 1 and Gen2 families. > > This is in keeping with the fallback scheme being adopted wherever > > appropriate for drivers for Renesas SoCs. > > > > Signed-off-by: Simon Horman <horms+renesas@verge.net.au> > > --- > > Documentation/devicetree/bindings/net/can/rcar_can.txt | 4 +++- > > drivers/net/can/rcar_can.c | 2 ++ > > 2 files changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/Documentation/devicetree/bindings/net/can/rcar_can.txt b/Documentation/devicetree/bindings/net/can/rcar_can.txt > > index 002d8440bf66..036786e1f70d 100644 > > --- a/Documentation/devicetree/bindings/net/can/rcar_can.txt > > +++ b/Documentation/devicetree/bindings/net/can/rcar_can.txt > > @@ -6,6 +6,8 @@ Required properties: > > "renesas,can-r8a7779" if CAN controller is a part of R8A7779 SoC. > > "renesas,can-r8a7790" if CAN controller is a part of R8A7790 SoC. > > "renesas,can-r8a7791" if CAN controller is a part of R8A7791 SoC. > > + "renesas,can-gen1" for a generic R-Car Gen1 compatible device. > > + "renesas,can-gen2" for a generic R-Car Gen2 compatible device. > > "renesas,rcar-gen1-can", "renesas,rcar-gen2-can"? > > (Yeah, "can" looks a lot like "rcar" ;-) Sure, I'll update that as you suggest. > Nothing further to say about SoC-specific vs. generic compatible values? Sure, I'll add some text about that. > > - reg: physical base address and size of the R-Car CAN register map. > > - interrupts: interrupt specifier for the sole interrupt. > > - clocks: phandles and clock specifiers for 3 CAN clock inputs. > > @@ -25,7 +27,7 @@ Example > > SoC common .dtsi file: > > > > can0: can@e6e80000 { > > - compatible = "renesas,can-r8a7791"; > > + compatible = "renesas,can-r8a7791", "renesas,can-gen2"; > > "renesas,rcar-gen2-can". > > > reg = <0 0xe6e80000 0 0x1000>; > > interrupts = <0 186 IRQ_TYPE_LEVEL_HIGH>; > > clocks = <&mstp9_clks R8A7791_CLK_RCAN0>, > > diff --git a/drivers/net/can/rcar_can.c b/drivers/net/can/rcar_can.c > > index bc46be39549d..c70a1f795933 100644 > > --- a/drivers/net/can/rcar_can.c > > +++ b/drivers/net/can/rcar_can.c > > @@ -904,6 +904,8 @@ static const struct of_device_id rcar_can_of_table[] __maybe_unused = { > > { .compatible = "renesas,can-r8a7779" }, > > { .compatible = "renesas,can-r8a7790" }, > > { .compatible = "renesas,can-r8a7791" }, > > + { .compatible = "renesas,can-gen1" }, > > + { .compatible = "renesas,can-gen2" }, > > "renesas,rcar-gen1-can" > "renesas,rcar-gen2-can". > > Gr{oetje,eeting}s, > > Geert > > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org > > In personal conversations with technical people, I call myself a hacker. But > when I'm talking to journalists I just say "programmer" or something like that. > -- Linus Torvalds
On Mon, Feb 22, 2016 at 10:40:37AM +0100, Marc Kleine-Budde wrote: > On 02/22/2016 04:37 AM, Rob Herring wrote: > > On Mon, Feb 22, 2016 at 11:15:49AM +0900, Simon Horman wrote: > >> Add fallback compatibility string for R-Car Gen 1 and Gen2 families. > >> This is in keeping with the fallback scheme being adopted wherever > >> appropriate for drivers for Renesas SoCs. > >> > >> Signed-off-by: Simon Horman <horms+renesas@verge.net.au> > >> --- > >> Documentation/devicetree/bindings/net/can/rcar_can.txt | 4 +++- > >> drivers/net/can/rcar_can.c | 2 ++ > >> 2 files changed, 5 insertions(+), 1 deletion(-) > > > > Acked-by: Rob Herring <robh@kernel.org> > > I'm not following the latest DT discussions, is there a (new) decision > to add such "generic" compatibles? AFAIK you add the oldest device > that's compatible with your driver to your SoC dtsi at rightmost > compatible. You can add one that identifies your SoC's IP core in front > of it. So there's no need to modify the driver until an IP core needs > different handling. > > In your case you'd identify the oldest SoC that implements the Gen1 IP > core and use this instead of "renesas,can-gen1. Same for Gen2 IP core. In the case of Renesas R-Car hardware we know that there are generations of SoCs, e.g. Gen 1 and Gen 2, but beyond that its not clear what the relationship between IP blocks might be. For example, I believe that r8a7779 is older than r8a7778 but that doesn't imply that the latter is a descendant of the former or vice versa.
diff --git a/Documentation/devicetree/bindings/net/can/rcar_can.txt b/Documentation/devicetree/bindings/net/can/rcar_can.txt index 002d8440bf66..036786e1f70d 100644 --- a/Documentation/devicetree/bindings/net/can/rcar_can.txt +++ b/Documentation/devicetree/bindings/net/can/rcar_can.txt @@ -6,6 +6,8 @@ Required properties: "renesas,can-r8a7779" if CAN controller is a part of R8A7779 SoC. "renesas,can-r8a7790" if CAN controller is a part of R8A7790 SoC. "renesas,can-r8a7791" if CAN controller is a part of R8A7791 SoC. + "renesas,can-gen1" for a generic R-Car Gen1 compatible device. + "renesas,can-gen2" for a generic R-Car Gen2 compatible device. - reg: physical base address and size of the R-Car CAN register map. - interrupts: interrupt specifier for the sole interrupt. - clocks: phandles and clock specifiers for 3 CAN clock inputs. @@ -25,7 +27,7 @@ Example SoC common .dtsi file: can0: can@e6e80000 { - compatible = "renesas,can-r8a7791"; + compatible = "renesas,can-r8a7791", "renesas,can-gen2"; reg = <0 0xe6e80000 0 0x1000>; interrupts = <0 186 IRQ_TYPE_LEVEL_HIGH>; clocks = <&mstp9_clks R8A7791_CLK_RCAN0>, diff --git a/drivers/net/can/rcar_can.c b/drivers/net/can/rcar_can.c index bc46be39549d..c70a1f795933 100644 --- a/drivers/net/can/rcar_can.c +++ b/drivers/net/can/rcar_can.c @@ -904,6 +904,8 @@ static const struct of_device_id rcar_can_of_table[] __maybe_unused = { { .compatible = "renesas,can-r8a7779" }, { .compatible = "renesas,can-r8a7790" }, { .compatible = "renesas,can-r8a7791" }, + { .compatible = "renesas,can-gen1" }, + { .compatible = "renesas,can-gen2" }, { } }; MODULE_DEVICE_TABLE(of, rcar_can_of_table);
Add fallback compatibility string for R-Car Gen 1 and Gen2 families. This is in keeping with the fallback scheme being adopted wherever appropriate for drivers for Renesas SoCs. Signed-off-by: Simon Horman <horms+renesas@verge.net.au> --- Documentation/devicetree/bindings/net/can/rcar_can.txt | 4 +++- drivers/net/can/rcar_can.c | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-)