diff mbox series

[2/2] ARM: dts: exynos: use Exynos5420 dedicated USB2 PHY compatible

Message ID 20201120085637.7299-3-m.szyprowski@samsung.com
State New
Headers show
Series Fix USB2 PHY operation on Exynos542x | expand

Commit Message

Marek Szyprowski Nov. 20, 2020, 8:56 a.m. UTC
USB2.0 PHY in Exynos5420 differs from Exynos5250 variant a bit, so use the
recently introduced dedicated compatible for Exynos5420.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

---
 arch/arm/boot/dts/exynos54xx.dtsi | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

-- 
2.17.1

Comments

Krzysztof Kozlowski Nov. 20, 2020, 11:05 a.m. UTC | #1
On Fri, Nov 20, 2020 at 09:56:37AM +0100, Marek Szyprowski wrote:
> USB2.0 PHY in Exynos5420 differs from Exynos5250 variant a bit, so use the

> recently introduced dedicated compatible for Exynos5420.

> 

> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

> ---

>  arch/arm/boot/dts/exynos54xx.dtsi | 6 +++---

>  1 file changed, 3 insertions(+), 3 deletions(-)

> 

> diff --git a/arch/arm/boot/dts/exynos54xx.dtsi b/arch/arm/boot/dts/exynos54xx.dtsi

> index fe9d34c23374..2ddb7a5f12b3 100644

> --- a/arch/arm/boot/dts/exynos54xx.dtsi

> +++ b/arch/arm/boot/dts/exynos54xx.dtsi

> @@ -188,7 +188,7 @@

>  			compatible = "samsung,exynos4210-ehci";

>  			reg = <0x12110000 0x100>;

>  			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;

> -			phys = <&usb2_phy 1>;

> +			phys = <&usb2_phy 0>;

>  			phy-names = "host";

>  		};

>  

> @@ -196,12 +196,12 @@

>  			compatible = "samsung,exynos4210-ohci";

>  			reg = <0x12120000 0x100>;

>  			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;

> -			phys = <&usb2_phy 1>;

> +			phys = <&usb2_phy 0>;

>  			phy-names = "host";

>  		};

>  

>  		usb2_phy: phy@12130000 {

> -			compatible = "samsung,exynos5250-usb2-phy";

> +			compatible = "samsung,exynos5420-usb2-phy";


The DTS change will wait till PHY driver adjustements get merged... or
if the difference is not critical, maybe using both compatibles (5420
and 5250) would have sense?

Best regards,
Krzysztof
Marek Szyprowski Nov. 20, 2020, 11:07 a.m. UTC | #2
Hi Krzysztof,

On 20.11.2020 12:05, Krzysztof Kozlowski wrote:
> On Fri, Nov 20, 2020 at 09:56:37AM +0100, Marek Szyprowski wrote:

>> USB2.0 PHY in Exynos5420 differs from Exynos5250 variant a bit, so use the

>> recently introduced dedicated compatible for Exynos5420.

>>

>> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

>> ---

>>   arch/arm/boot/dts/exynos54xx.dtsi | 6 +++---

>>   1 file changed, 3 insertions(+), 3 deletions(-)

>>

>> diff --git a/arch/arm/boot/dts/exynos54xx.dtsi b/arch/arm/boot/dts/exynos54xx.dtsi

>> index fe9d34c23374..2ddb7a5f12b3 100644

>> --- a/arch/arm/boot/dts/exynos54xx.dtsi

>> +++ b/arch/arm/boot/dts/exynos54xx.dtsi

>> @@ -188,7 +188,7 @@

>>   			compatible = "samsung,exynos4210-ehci";

>>   			reg = <0x12110000 0x100>;

>>   			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;

>> -			phys = <&usb2_phy 1>;

>> +			phys = <&usb2_phy 0>;

>>   			phy-names = "host";

>>   		};

>>   

>> @@ -196,12 +196,12 @@

>>   			compatible = "samsung,exynos4210-ohci";

>>   			reg = <0x12120000 0x100>;

>>   			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;

>> -			phys = <&usb2_phy 1>;

>> +			phys = <&usb2_phy 0>;

>>   			phy-names = "host";

>>   		};

>>   

>>   		usb2_phy: phy@12130000 {

>> -			compatible = "samsung,exynos5250-usb2-phy";

>> +			compatible = "samsung,exynos5420-usb2-phy";

> The DTS change will wait till PHY driver adjustements get merged... or

> if the difference is not critical, maybe using both compatibles (5420

> and 5250) would have sense?


It won't work easily with both compatibles, because in the 5420 variant 
I've also changed the PHY indices (5420 has no device and second hsic 
phy). IMHO the dts change can wait for the next release.

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland
Krzysztof Kozlowski Dec. 29, 2020, 3:31 p.m. UTC | #3
On Fri, Nov 20, 2020 at 12:07:44PM +0100, Marek Szyprowski wrote:
> Hi Krzysztof,

> 

> On 20.11.2020 12:05, Krzysztof Kozlowski wrote:

> > On Fri, Nov 20, 2020 at 09:56:37AM +0100, Marek Szyprowski wrote:

> >> USB2.0 PHY in Exynos5420 differs from Exynos5250 variant a bit, so use the

> >> recently introduced dedicated compatible for Exynos5420.

> >>

> >> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

> >> ---

> >>   arch/arm/boot/dts/exynos54xx.dtsi | 6 +++---

> >>   1 file changed, 3 insertions(+), 3 deletions(-)

> >>

> >> diff --git a/arch/arm/boot/dts/exynos54xx.dtsi b/arch/arm/boot/dts/exynos54xx.dtsi

> >> index fe9d34c23374..2ddb7a5f12b3 100644

> >> --- a/arch/arm/boot/dts/exynos54xx.dtsi

> >> +++ b/arch/arm/boot/dts/exynos54xx.dtsi

> >> @@ -188,7 +188,7 @@

> >>   			compatible = "samsung,exynos4210-ehci";

> >>   			reg = <0x12110000 0x100>;

> >>   			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;

> >> -			phys = <&usb2_phy 1>;

> >> +			phys = <&usb2_phy 0>;

> >>   			phy-names = "host";

> >>   		};

> >>   

> >> @@ -196,12 +196,12 @@

> >>   			compatible = "samsung,exynos4210-ohci";

> >>   			reg = <0x12120000 0x100>;

> >>   			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;

> >> -			phys = <&usb2_phy 1>;

> >> +			phys = <&usb2_phy 0>;

> >>   			phy-names = "host";

> >>   		};

> >>   

> >>   		usb2_phy: phy@12130000 {

> >> -			compatible = "samsung,exynos5250-usb2-phy";

> >> +			compatible = "samsung,exynos5420-usb2-phy";

> > The DTS change will wait till PHY driver adjustements get merged... or

> > if the difference is not critical, maybe using both compatibles (5420

> > and 5250) would have sense?

> 

> It won't work easily with both compatibles, because in the 5420 variant 

> I've also changed the PHY indices (5420 has no device and second hsic 

> phy). IMHO the dts change can wait for the next release.


Thanks, applied.

Best regards,
Krzysztof
Arnd Bergmann Jan. 26, 2021, 10:44 p.m. UTC | #4
On Fri, Nov 20, 2020 at 12:10 PM Marek Szyprowski
<m.szyprowski@samsung.com> wrote:
> On 20.11.2020 12:05, Krzysztof Kozlowski wrote:

> > On Fri, Nov 20, 2020 at 09:56:37AM +0100, Marek Szyprowski wrote:

> >> USB2.0 PHY in Exynos5420 differs from Exynos5250 variant a bit, so use the

> >> recently introduced dedicated compatible for Exynos5420.

> >>

> >> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

> >> ---

> >>   arch/arm/boot/dts/exynos54xx.dtsi | 6 +++---

> >>   1 file changed, 3 insertions(+), 3 deletions(-)

> >>

> >> diff --git a/arch/arm/boot/dts/exynos54xx.dtsi b/arch/arm/boot/dts/exynos54xx.dtsi

> >> index fe9d34c23374..2ddb7a5f12b3 100644

> >> --- a/arch/arm/boot/dts/exynos54xx.dtsi

> >> +++ b/arch/arm/boot/dts/exynos54xx.dtsi

> >> @@ -188,7 +188,7 @@

> >>                      compatible = "samsung,exynos4210-ehci";

> >>                      reg = <0x12110000 0x100>;

> >>                      interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;

> >> -                    phys = <&usb2_phy 1>;

> >> +                    phys = <&usb2_phy 0>;

> >>                      phy-names = "host";

> >>              };

> >>

> >> @@ -196,12 +196,12 @@

> >>                      compatible = "samsung,exynos4210-ohci";

> >>                      reg = <0x12120000 0x100>;

> >>                      interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;

> >> -                    phys = <&usb2_phy 1>;

> >> +                    phys = <&usb2_phy 0>;

> >>                      phy-names = "host";

> >>              };

> >>

> >>              usb2_phy: phy@12130000 {

> >> -                    compatible = "samsung,exynos5250-usb2-phy";

> >> +                    compatible = "samsung,exynos5420-usb2-phy";

> > The DTS change will wait till PHY driver adjustements get merged... or

> > if the difference is not critical, maybe using both compatibles (5420

> > and 5250) would have sense?

>

> It won't work easily with both compatibles, because in the 5420 variant

> I've also changed the PHY indices (5420 has no device and second hsic

> phy). IMHO the dts change can wait for the next release.


I see this made it into the pull request now, but I had not been aware
of the change earlier, and I'm slightly annoyed to have received it this
way:

- This is clearly an incompatible change to the dtb, and you all
   noticed that because it would cause a bisection problem. As
   a general rule, if a dts change does not work across bisection,
   we should not merge it at all, because it causes problems for
   anyone with external dts or dtb files.

- It would likely have been possible to define the new binding in
  a backward-compatible way. I don't see a reason why the index
  values in the binding had to change here, other than a slight
  inconvenience for the driver.

- If the change was really unavoidable, I would have expected
  a long explanation about why it had to be done in both the
  commit message and in the tag description for the pull
  request.

I've dropped the pull request for now, maybe this can still
be sorted out with another driver change that makes the
new compatible string backward-compatible.

        Arnd
Krzysztof Kozlowski Jan. 27, 2021, 7:59 a.m. UTC | #5
On Tue, Jan 26, 2021 at 11:44:26PM +0100, Arnd Bergmann wrote:
> On Fri, Nov 20, 2020 at 12:10 PM Marek Szyprowski

> <m.szyprowski@samsung.com> wrote:

> > On 20.11.2020 12:05, Krzysztof Kozlowski wrote:

> > > On Fri, Nov 20, 2020 at 09:56:37AM +0100, Marek Szyprowski wrote:

> > >> USB2.0 PHY in Exynos5420 differs from Exynos5250 variant a bit, so use the

> > >> recently introduced dedicated compatible for Exynos5420.

> > >>

> > >> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

> > >> ---

> > >>   arch/arm/boot/dts/exynos54xx.dtsi | 6 +++---

> > >>   1 file changed, 3 insertions(+), 3 deletions(-)

> > >>

> > >> diff --git a/arch/arm/boot/dts/exynos54xx.dtsi b/arch/arm/boot/dts/exynos54xx.dtsi

> > >> index fe9d34c23374..2ddb7a5f12b3 100644

> > >> --- a/arch/arm/boot/dts/exynos54xx.dtsi

> > >> +++ b/arch/arm/boot/dts/exynos54xx.dtsi

> > >> @@ -188,7 +188,7 @@

> > >>                      compatible = "samsung,exynos4210-ehci";

> > >>                      reg = <0x12110000 0x100>;

> > >>                      interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;

> > >> -                    phys = <&usb2_phy 1>;

> > >> +                    phys = <&usb2_phy 0>;

> > >>                      phy-names = "host";

> > >>              };

> > >>

> > >> @@ -196,12 +196,12 @@

> > >>                      compatible = "samsung,exynos4210-ohci";

> > >>                      reg = <0x12120000 0x100>;

> > >>                      interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;

> > >> -                    phys = <&usb2_phy 1>;

> > >> +                    phys = <&usb2_phy 0>;

> > >>                      phy-names = "host";

> > >>              };

> > >>

> > >>              usb2_phy: phy@12130000 {

> > >> -                    compatible = "samsung,exynos5250-usb2-phy";

> > >> +                    compatible = "samsung,exynos5420-usb2-phy";

> > > The DTS change will wait till PHY driver adjustements get merged... or

> > > if the difference is not critical, maybe using both compatibles (5420

> > > and 5250) would have sense?

> >

> > It won't work easily with both compatibles, because in the 5420 variant

> > I've also changed the PHY indices (5420 has no device and second hsic

> > phy). IMHO the dts change can wait for the next release.

> 

> I see this made it into the pull request now, but I had not been aware

> of the change earlier, and I'm slightly annoyed to have received it this

> way:

> 

> - This is clearly an incompatible change to the dtb, and you all

>    noticed that because it would cause a bisection problem. As

>    a general rule, if a dts change does not work across bisection,

>    we should not merge it at all, because it causes problems for

>    anyone with external dts or dtb files.


Hi Arnd,

No, it does not create a bisection problem. The driver change adding new
compatible is already in v5.11-rc1.

> 

> - It would likely have been possible to define the new binding in

>   a backward-compatible way. I don't see a reason why the index

>   values in the binding had to change here, other than a slight

>   inconvenience for the driver.


It does not matter since it's a new compatible and old one is not
affected. Nothing got broken before this patch, nothing got broken after
applying it via samsung-soc. No backwards compatibility is affected.

> 

> - If the change was really unavoidable, I would have expected

>   a long explanation about why it had to be done in both the

>   commit message and in the tag description for the pull

>   request.

> 

> I've dropped the pull request for now, maybe this can still

> be sorted out with another driver change that makes the

> new compatible string backward-compatible.


It's a different hardware. New hardware does not have to be compatible
with old hardware. However old DTB is still doing fine (although with
the original issue not fixed).

Best regards,
Krzysztof
Arnd Bergmann Jan. 30, 2021, 2:14 p.m. UTC | #6
On Wed, Jan 27, 2021 at 8:59 AM Krzysztof Kozlowski <krzk@kernel.org> wrote:
> On Tue, Jan 26, 2021 at 11:44:26PM +0100, Arnd Bergmann wrote:

> > On Fri, Nov 20, 2020 at 12:10 PM Marek Szyprowski <m.szyprowski@samsung.com> wrote:


> > > It won't work easily with both compatibles, because in the 5420 variant

> > > I've also changed the PHY indices (5420 has no device and second hsic

> > > phy). IMHO the dts change can wait for the next release.

> >

> > I see this made it into the pull request now, but I had not been aware

> > of the change earlier, and I'm slightly annoyed to have received it this

> > way:

> >

> > - This is clearly an incompatible change to the dtb, and you all

> >    noticed that because it would cause a bisection problem. As

> >    a general rule, if a dts change does not work across bisection,

> >    we should not merge it at all, because it causes problems for

> >    anyone with external dts or dtb files.

>

> Hi Arnd,

>

> No, it does not create a bisection problem. The driver change adding new

> compatible is already in v5.11-rc1.


What I meant is that you knew there would be a bisection problem
if you had not delayed this patch.

> > - It would likely have been possible to define the new binding in

> >   a backward-compatible way. I don't see a reason why the index

> >   values in the binding had to change here, other than a slight

> >   inconvenience for the driver.

>

> It does not matter since it's a new compatible and old one is not

> affected. Nothing got broken before this patch, nothing got broken after

> applying it via samsung-soc. No backwards compatibility is affected.

>

> > - If the change was really unavoidable, I would have expected

> >   a long explanation about why it had to be done in both the

> >   commit message and in the tag description for the pull

> >   request.

> >

> > I've dropped the pull request for now, maybe this can still

> > be sorted out with another driver change that makes the

> > new compatible string backward-compatible.

>

> It's a different hardware. New hardware does not have to be compatible

> with old hardware. However old DTB is still doing fine (although with

> the original issue not fixed).


There are around ten boards including this file, and most (maybe all)
of them are not newly added machines, so there is a good chance
that there are existing users. You are right that you took care that
the combination of an old dtb with a new kernel would not be any
worse than before, and that is good. What is however missing is
the consideration of the reverse: If anyone wants to dual-boot between
old and new kernels, they are stuck with the old dtb and is missing
the bugfix along with any additional changes that may get added
in the future.

The same is true if there are any non-Linux operating systems running
on these. For instance, FreeBSD runs on Peach Pit, and if they
were using the old dtb from Linux (I have not checked if they
were compatible before this change), then booting with the latest
dtb from Linux will require the same changes to their driver to avoid
a regression.

I can live with an explanation of "we've looked at all the alternatives
and decided to break old kernels with new dtbs in this particular
case because ...", but I don't like the idea of silently changing dts
in a way that breaks using them with anything but the latest kernel
and arguing that it's not even worth debating.

       Arnd
Krzysztof Kozlowski Jan. 30, 2021, 2:39 p.m. UTC | #7
On Sat, Jan 30, 2021 at 03:14:22PM +0100, Arnd Bergmann wrote:
> On Wed, Jan 27, 2021 at 8:59 AM Krzysztof Kozlowski <krzk@kernel.org> wrote:

> > On Tue, Jan 26, 2021 at 11:44:26PM +0100, Arnd Bergmann wrote:

> > > On Fri, Nov 20, 2020 at 12:10 PM Marek Szyprowski <m.szyprowski@samsung.com> wrote:

> 

> > > > It won't work easily with both compatibles, because in the 5420 variant

> > > > I've also changed the PHY indices (5420 has no device and second hsic

> > > > phy). IMHO the dts change can wait for the next release.

> > >

> > > I see this made it into the pull request now, but I had not been aware

> > > of the change earlier, and I'm slightly annoyed to have received it this

> > > way:

> > >

> > > - This is clearly an incompatible change to the dtb, and you all

> > >    noticed that because it would cause a bisection problem. As

> > >    a general rule, if a dts change does not work across bisection,

> > >    we should not merge it at all, because it causes problems for

> > >    anyone with external dts or dtb files.

> >

> > Hi Arnd,

> >

> > No, it does not create a bisection problem. The driver change adding new

> > compatible is already in v5.11-rc1.

> 

> What I meant is that you knew there would be a bisection problem

> if you had not delayed this patch.


Of course, there are tons of such examples and delaying a patch for DTS
is perfectly safe, sane and regular way to deal with it.

>

> > > - It would likely have been possible to define the new binding in

> > >   a backward-compatible way. I don't see a reason why the index

> > >   values in the binding had to change here, other than a slight

> > >   inconvenience for the driver.

> >

> > It does not matter since it's a new compatible and old one is not

> > affected. Nothing got broken before this patch, nothing got broken after

> > applying it via samsung-soc. No backwards compatibility is affected.

> >

> > > - If the change was really unavoidable, I would have expected

> > >   a long explanation about why it had to be done in both the

> > >   commit message and in the tag description for the pull

> > >   request.

> > >

> > > I've dropped the pull request for now, maybe this can still

> > > be sorted out with another driver change that makes the

> > > new compatible string backward-compatible.

> >

> > It's a different hardware. New hardware does not have to be compatible

> > with old hardware. However old DTB is still doing fine (although with

> > the original issue not fixed).

> 

> There are around ten boards including this file, and most (maybe all)

> of them are not newly added machines, so there is a good chance

> that there are existing users. You are right that you took care that

> the combination of an old dtb with a new kernel would not be any

> worse than before, and that is good. What is however missing is

> the consideration of the reverse: If anyone wants to dual-boot between

> old and new kernels, they are stuck with the old dtb and is missing

> the bugfix along with any additional changes that may get added

> in the future.


First of all, out of tree is not our concern. Let me quote DT guru, Rob:
"If it's not upstream, it doesn't exist."
https://lore.kernel.org/lkml/20201028152303.GA4041470@bogus/T/#m602ef29cade6f9ed49efd52159210d2a6813eec9

Second of all, out of tree DTB (so old DTB in your meaning) will work
perfectly fine (the same) and nothing is broken. So why I would need to
care about something which "does not exist" while I also do not break
it?

> The same is true if there are any non-Linux operating systems running

> on these. For instance, FreeBSD runs on Peach Pit, and if they

> were using the old dtb from Linux (I have not checked if they

> were compatible before this change), then booting with the latest

> dtb from Linux will require the same changes to their driver to avoid

> a regression.


If anyone takes kernel DTS and applies to his project, and then he takes
blindly the latter changes to DTS (but without earlier changes to
bindings! so he picks up only selective choice), then it's his
responsibility to be up to date. I am sorry, but I cannot take care
about any ridiculous and irresponsible idea in the world.

Seriously, do you expect us to think about out of tree unkown users of
an intree DTS when that *user does not follow bindings*?

It's the first time I hear it.

> I can live with an explanation of "we've looked at all the alternatives

> and decided to break old kernels with new dtbs in this particular

> case because ...", but I don't like the idea of silently changing dts

> in a way that breaks using them with anything but the latest kernel

> and arguing that it's not even worth debating.


There is no single need for intree kernel DTS to be backwards compatible
with old kernel. There is no single rule for it, either (because it's
not ABI). 

Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/arch/arm/boot/dts/exynos54xx.dtsi b/arch/arm/boot/dts/exynos54xx.dtsi
index fe9d34c23374..2ddb7a5f12b3 100644
--- a/arch/arm/boot/dts/exynos54xx.dtsi
+++ b/arch/arm/boot/dts/exynos54xx.dtsi
@@ -188,7 +188,7 @@ 
 			compatible = "samsung,exynos4210-ehci";
 			reg = <0x12110000 0x100>;
 			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
-			phys = <&usb2_phy 1>;
+			phys = <&usb2_phy 0>;
 			phy-names = "host";
 		};
 
@@ -196,12 +196,12 @@ 
 			compatible = "samsung,exynos4210-ohci";
 			reg = <0x12120000 0x100>;
 			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
-			phys = <&usb2_phy 1>;
+			phys = <&usb2_phy 0>;
 			phy-names = "host";
 		};
 
 		usb2_phy: phy@12130000 {
-			compatible = "samsung,exynos5250-usb2-phy";
+			compatible = "samsung,exynos5420-usb2-phy";
 			reg = <0x12130000 0x100>;
 			#phy-cells = <1>;
 		};