Re: [PATCH 9/9] usb: {ohci,ehci}-platform: Use new OF big-endian helper function
On Wed, 26 Nov 2014, Kevin Cernekee wrote: > On Wed, Nov 26, 2014 at 7:14 AM, Alan Stern wrote: > >> diff --git a/Documentation/devicetree/bindings/usb/usb-ehci.txt > >> b/Documentation/devicetree/bindings/usb/usb-ehci.txt > >> index 43c1a4e..9505c31 100644 > >> --- a/Documentation/devicetree/bindings/usb/usb-ehci.txt > >> +++ b/Documentation/devicetree/bindings/usb/usb-ehci.txt > >> @@ -12,6 +12,8 @@ Optional properties: > >> - big-endian-regs : boolean, set this for hcds with big-endian registers > >> - big-endian-desc : boolean, set this for hcds with big-endian > >> descriptors > >> - big-endian : boolean, for hcds with big-endian-regs + big-endian-desc > >> + - native-endian : boolean, enables big-endian-regs + big-endian-desc > >> + iff the kernel was compiled for big endian > > > > Is this really a property of the hardware? It appears to depend on the > > kernel configuration. As such, is it appropriate for DT? > > Yes, the peripheral registers automatically adjust their endianness to > match the CPU. So if the CPU is running an LE kernel, the peripheral > needs to be accessed in LE mode; if the CPU is running a BE kernel, > the peripheral needs to be accessed in BE mode. Okay, then: Acked-by: Alan Stern But you might want to update the description slightly to say: - native-endian : boolean, enables big-endian-regs + big-endian-desc iff the CPU is running in big-endian mode It's a very minor distinction, since you can't run a kernel that was compiled for little endian if the CPU is running in big-endian mode, but this makes it clear that you're talking about the hardware rather than the software. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 9/9] usb: {ohci,ehci}-platform: Use new OF big-endian helper function
On Wed, Nov 26, 2014 at 7:14 AM, Alan Stern wrote: >> diff --git a/Documentation/devicetree/bindings/usb/usb-ehci.txt >> b/Documentation/devicetree/bindings/usb/usb-ehci.txt >> index 43c1a4e..9505c31 100644 >> --- a/Documentation/devicetree/bindings/usb/usb-ehci.txt >> +++ b/Documentation/devicetree/bindings/usb/usb-ehci.txt >> @@ -12,6 +12,8 @@ Optional properties: >> - big-endian-regs : boolean, set this for hcds with big-endian registers >> - big-endian-desc : boolean, set this for hcds with big-endian descriptors >> - big-endian : boolean, for hcds with big-endian-regs + big-endian-desc >> + - native-endian : boolean, enables big-endian-regs + big-endian-desc >> + iff the kernel was compiled for big endian > > Is this really a property of the hardware? It appears to depend on the > kernel configuration. As such, is it appropriate for DT? Yes, the peripheral registers automatically adjust their endianness to match the CPU. So if the CPU is running an LE kernel, the peripheral needs to be accessed in LE mode; if the CPU is running a BE kernel, the peripheral needs to be accessed in BE mode. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 9/9] usb: {ohci,ehci}-platform: Use new OF big-endian helper function
On Tue, 25 Nov 2014, Kevin Cernekee wrote: > This handles the existing "big-endian" case, and in addition, it also does > the right thing when "native-endian" is specified. > > Signed-off-by: Kevin Cernekee > --- > Documentation/devicetree/bindings/usb/usb-ehci.txt | 2 ++ > Documentation/devicetree/bindings/usb/usb-ohci.txt | 2 ++ > drivers/usb/host/ehci-platform.c | 2 +- > drivers/usb/host/ohci-platform.c | 2 +- > 4 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/Documentation/devicetree/bindings/usb/usb-ehci.txt > b/Documentation/devicetree/bindings/usb/usb-ehci.txt > index 43c1a4e..9505c31 100644 > --- a/Documentation/devicetree/bindings/usb/usb-ehci.txt > +++ b/Documentation/devicetree/bindings/usb/usb-ehci.txt > @@ -12,6 +12,8 @@ Optional properties: > - big-endian-regs : boolean, set this for hcds with big-endian registers > - big-endian-desc : boolean, set this for hcds with big-endian descriptors > - big-endian : boolean, for hcds with big-endian-regs + big-endian-desc > + - native-endian : boolean, enables big-endian-regs + big-endian-desc > + iff the kernel was compiled for big endian Is this really a property of the hardware? It appears to depend on the kernel configuration. As such, is it appropriate for DT? Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 9/9] usb: {ohci,ehci}-platform: Use new OF big-endian helper function
On 26/11/14 13:49, Kevin Cernekee wrote: This handles the existing "big-endian" case, and in addition, it also does the right thing when "native-endian" is specified. Signed-off-by: Kevin Cernekee --- Documentation/devicetree/bindings/usb/usb-ehci.txt | 2 ++ Documentation/devicetree/bindings/usb/usb-ohci.txt | 2 ++ drivers/usb/host/ehci-platform.c | 2 +- drivers/usb/host/ohci-platform.c | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/usb/usb-ehci.txt b/Documentation/devicetree/bindings/usb/usb-ehci.txt index 43c1a4e..9505c31 100644 --- a/Documentation/devicetree/bindings/usb/usb-ehci.txt +++ b/Documentation/devicetree/bindings/usb/usb-ehci.txt @@ -12,6 +12,8 @@ Optional properties: - big-endian-regs : boolean, set this for hcds with big-endian registers - big-endian-desc : boolean, set this for hcds with big-endian descriptors - big-endian : boolean, for hcds with big-endian-regs + big-endian-desc + - native-endian : boolean, enables big-endian-regs + big-endian-desc + iff the kernel was compiled for big endian s/iff/if - clocks : a list of phandle + clock specifier pairs - phys : phandle + phy specifier pair - phy-names : "usb" diff --git a/Documentation/devicetree/bindings/usb/usb-ohci.txt b/Documentation/devicetree/bindings/usb/usb-ohci.txt index 19233b7..3bb9673 100644 --- a/Documentation/devicetree/bindings/usb/usb-ohci.txt +++ b/Documentation/devicetree/bindings/usb/usb-ohci.txt @@ -9,6 +9,8 @@ Optional properties: - big-endian-regs : boolean, set this for hcds with big-endian registers - big-endian-desc : boolean, set this for hcds with big-endian descriptors - big-endian : boolean, for hcds with big-endian-regs + big-endian-desc +- native-endian : boolean, enables big-endian-regs + big-endian-desc + iff the kernel was compiled for big endian s/iff/if - no-big-frame-no : boolean, set if frame_no lives in bits [15:0] of HCCA - num-ports : u32, to override the detected port count - clocks : a list of phandle + clock specifier pairs diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c index 2f5b9ce..0da9d70 100644 --- a/drivers/usb/host/ehci-platform.c +++ b/drivers/usb/host/ehci-platform.c @@ -187,7 +187,7 @@ static int ehci_platform_probe(struct platform_device *dev) if (of_property_read_bool(dev->dev.of_node, "big-endian-desc")) ehci->big_endian_desc = 1; - if (of_property_read_bool(dev->dev.of_node, "big-endian")) + if (of_device_is_big_endian(dev->dev.of_node)) ehci->big_endian_mmio = ehci->big_endian_desc = 1; priv->phy = devm_phy_get(&dev->dev, "usb"); diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c index 7793c3c..029a606 100644 --- a/drivers/usb/host/ohci-platform.c +++ b/drivers/usb/host/ohci-platform.c @@ -157,7 +157,7 @@ static int ohci_platform_probe(struct platform_device *dev) if (of_property_read_bool(dev->dev.of_node, "big-endian-desc")) ohci->flags |= OHCI_QUIRK_BE_DESC; - if (of_property_read_bool(dev->dev.of_node, "big-endian")) + if (of_device_is_big_endian(dev->dev.of_node)) ohci->flags |= OHCI_QUIRK_BE_MMIO | OHCI_QUIRK_BE_DESC; if (of_property_read_bool(dev->dev.of_node, "no-big-frame-no")) -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 9/9] usb: {ohci,ehci}-platform: Use new OF big-endian helper function
This handles the existing "big-endian" case, and in addition, it also does the right thing when "native-endian" is specified. Signed-off-by: Kevin Cernekee --- Documentation/devicetree/bindings/usb/usb-ehci.txt | 2 ++ Documentation/devicetree/bindings/usb/usb-ohci.txt | 2 ++ drivers/usb/host/ehci-platform.c | 2 +- drivers/usb/host/ohci-platform.c | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/usb/usb-ehci.txt b/Documentation/devicetree/bindings/usb/usb-ehci.txt index 43c1a4e..9505c31 100644 --- a/Documentation/devicetree/bindings/usb/usb-ehci.txt +++ b/Documentation/devicetree/bindings/usb/usb-ehci.txt @@ -12,6 +12,8 @@ Optional properties: - big-endian-regs : boolean, set this for hcds with big-endian registers - big-endian-desc : boolean, set this for hcds with big-endian descriptors - big-endian : boolean, for hcds with big-endian-regs + big-endian-desc + - native-endian : boolean, enables big-endian-regs + big-endian-desc + iff the kernel was compiled for big endian - clocks : a list of phandle + clock specifier pairs - phys : phandle + phy specifier pair - phy-names : "usb" diff --git a/Documentation/devicetree/bindings/usb/usb-ohci.txt b/Documentation/devicetree/bindings/usb/usb-ohci.txt index 19233b7..3bb9673 100644 --- a/Documentation/devicetree/bindings/usb/usb-ohci.txt +++ b/Documentation/devicetree/bindings/usb/usb-ohci.txt @@ -9,6 +9,8 @@ Optional properties: - big-endian-regs : boolean, set this for hcds with big-endian registers - big-endian-desc : boolean, set this for hcds with big-endian descriptors - big-endian : boolean, for hcds with big-endian-regs + big-endian-desc +- native-endian : boolean, enables big-endian-regs + big-endian-desc + iff the kernel was compiled for big endian - no-big-frame-no : boolean, set if frame_no lives in bits [15:0] of HCCA - num-ports : u32, to override the detected port count - clocks : a list of phandle + clock specifier pairs diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c index 2f5b9ce..0da9d70 100644 --- a/drivers/usb/host/ehci-platform.c +++ b/drivers/usb/host/ehci-platform.c @@ -187,7 +187,7 @@ static int ehci_platform_probe(struct platform_device *dev) if (of_property_read_bool(dev->dev.of_node, "big-endian-desc")) ehci->big_endian_desc = 1; - if (of_property_read_bool(dev->dev.of_node, "big-endian")) + if (of_device_is_big_endian(dev->dev.of_node)) ehci->big_endian_mmio = ehci->big_endian_desc = 1; priv->phy = devm_phy_get(&dev->dev, "usb"); diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c index 7793c3c..029a606 100644 --- a/drivers/usb/host/ohci-platform.c +++ b/drivers/usb/host/ohci-platform.c @@ -157,7 +157,7 @@ static int ohci_platform_probe(struct platform_device *dev) if (of_property_read_bool(dev->dev.of_node, "big-endian-desc")) ohci->flags |= OHCI_QUIRK_BE_DESC; - if (of_property_read_bool(dev->dev.of_node, "big-endian")) + if (of_device_is_big_endian(dev->dev.of_node)) ohci->flags |= OHCI_QUIRK_BE_MMIO | OHCI_QUIRK_BE_DESC; if (of_property_read_bool(dev->dev.of_node, "no-big-frame-no")) -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html