On Tue, Aug 20, 2013 at 05:35:47PM +0100, Sebastian Andrzej Siewior wrote:
> This relfects the code and dts requires changes due to recent .dts
> binding updates:
> - use mg prefix for the Metor Graphics specific attributes
> - use power in mA not in mA/2 as specifed in the USB2.0 specification
> - remove the child node for USB. This is driver specific on won't be
>   reflected in the device tree
> - use the "mentor" prefix instead of "mg".
> - use "dr_mode" istead of "mg,port-mode" for the port mode. The former
>   is used by a few other drivers.
> 
> Cc: Rob Herring <rob.herr...@calxeda.com>
> Cc: Pawel Moll <pawel.m...@arm.com>
> Cc: Mark Rutland <mark.rutl...@arm.com>
> Cc: Stephen Warren <swar...@wwwdotorg.org>
> Cc: Ian Campbell <ian.campb...@citrix.com>
> Cc: devicet...@vger.kernel.org
> Signed-off-by: Sebastian Andrzej Siewior <bige...@linutronix.de>
> ---
>  arch/arm/boot/dts/am335x-bone.dts  |  2 +-
>  arch/arm/boot/dts/am335x-evm.dts   |  6 ++--
>  arch/arm/boot/dts/am335x-evmsk.dts |  2 +-
>  arch/arm/boot/dts/am33xx.dtsi      | 67 
> +++++++++++++++-----------------------
>  drivers/usb/musb/musb_dsps.c       | 54 ++++++++++++++++++++----------
>  5 files changed, 67 insertions(+), 64 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/am335x-bone.dts 
> b/arch/arm/boot/dts/am335x-bone.dts
> index a8907b5..e8447a7 100644
> --- a/arch/arm/boot/dts/am335x-bone.dts
> +++ b/arch/arm/boot/dts/am335x-bone.dts
> @@ -127,7 +127,7 @@
>                               status = "okay";
>                       };
>  
> -                     phy@47401300 {
> +                     usb-phy@47401300 {
>                               status = "okay";
>                       };
>  
> diff --git a/arch/arm/boot/dts/am335x-evm.dts 
> b/arch/arm/boot/dts/am335x-evm.dts
> index c26c16c..648a67e 100644
> --- a/arch/arm/boot/dts/am335x-evm.dts
> +++ b/arch/arm/boot/dts/am335x-evm.dts
> @@ -178,11 +178,11 @@
>                               status = "okay";
>                       };
>  
> -                     phy@47401300 {
> +                     usb-phy@47401300 {
>                               status = "okay";
>                       };
>  
> -                     phy@47401b00 {
> +                     usb-phy@47401b00 {
>                               status = "okay";
>                       };
>  
> @@ -194,7 +194,7 @@
>                               status = "okay";
>                       };
>  
> -                     dma@07402000  {
> +                     dma-controller@07402000  {
>                               status = "okay";
>                       };
>               };
> diff --git a/arch/arm/boot/dts/am335x-evmsk.dts 
> b/arch/arm/boot/dts/am335x-evmsk.dts
> index e92446c..a6c5033 100644
> --- a/arch/arm/boot/dts/am335x-evmsk.dts
> +++ b/arch/arm/boot/dts/am335x-evmsk.dts
> @@ -214,7 +214,7 @@
>                               status = "okay";
>                       };
>  
> -                     phy@47401300 {
> +                     usb-phy@47401300 {
>                               status = "okay";
>                       };
>  
> diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
> index a38f8d3..f9c5da9 100644
> --- a/arch/arm/boot/dts/am33xx.dtsi
> +++ b/arch/arm/boot/dts/am33xx.dtsi
> @@ -354,7 +354,7 @@
>                               status = "disabled";
>                       };
>  
> -                     usb0_phy: phy@47401300 {
> +                     usb0_phy: usb-phy@47401300 {
>                               compatible = "ti,am335x-usb-phy";
>                               reg = <0x47401300 0x100>;
>                               reg-names = "phy";
> @@ -364,25 +364,19 @@
>  
>                       usb0: usb@47401000 {
>                               compatible = "ti,musb-am33xx";
> -                             ranges;
> -                             #address-cells = <1>;
> -                             #size-cells = <1>;
> -                             reg = <0x47401000 0x200>;
> -                             reg-names = "control";
>                               status = "disabled";
> -
> -                             musb0: usb@47401400 {
> -                                     compatible = "mg,musbmhdrc";
> -                                     reg = <0x47401400 0x400>;
> -                                     reg-names = "mc";
> -                                     interrupts = <18>;
> -                                     interrupt-names = "mc";
> -                                     multipoint = <1>;
> -                                     num-eps = <16>;
> -                                     ram-bits = <12>;
> -                                     port-mode = <3>;
> -                                     power = <250>;
> -                                     phys = <&usb0_phy>;
> +                             reg = <0x47401400 0x400
> +                                     0x47401000 0x200>;
> +                             reg-names = "mc", "control";
> +
> +                             interrupts = <18>;
> +                             interrupt-names = "mc";
> +                             dr_mode = "otg";
> +                             mentor,multipoint = <1>;
> +                             mentor,num-eps = <16>;
> +                             mentor,ram-bits = <12>;
> +                             mentor,power = <500>;
> +                             phys = <&usb0_phy>;
>  
>                               dmas = <&cppi41dma  0 0 &cppi41dma  1 0
>                                       &cppi41dma  2 0 &cppi41dma  3 0
> @@ -406,10 +400,9 @@
>                                       "tx1", "tx2", "tx3", "tx4", "tx5", 
> "tx6", "tx7",
>                                       "tx8", "tx9", "tx10", "tx11", "tx12", 
> "tx13",
>                                       "tx14", "tx15";
> -                             };
>                       };
>  
> -                     usb1_phy: phy@47401b00 {
> +                     usb1_phy: usb-phy@47401b00 {
>                               compatible = "ti,am335x-usb-phy";
>                               reg = <0x47401b00 0x100>;
>                               reg-names = "phy";
> @@ -419,25 +412,18 @@
>  
>                       usb1: usb@47401800 {
>                               compatible = "ti,musb-am33xx";
> -                             ranges;
> -                             #address-cells = <1>;
> -                             #size-cells = <1>;
> -                             reg = <0x47401800 0x200>;
> -                             reg-names = "control";
>                               status = "disabled";
> -
> -                             musb1: usb@47401c00 {
> -                                     compatible = "mg,musbmhdrc";
> -                                     reg = <0x47401c00 0x400>;
> -                                     reg-names = "mc";
> -                                     interrupts = <19>;
> -                                     interrupt-names = "mc";
> -                                     multipoint = <1>;
> -                                     num-eps = <16>;
> -                                     ram-bits = <12>;
> -                                     port-mode = <3>;
> -                                     power = <250>;
> -                                     phys = <&usb1_phy>;
> +                             reg = <0x47401c00 0x400
> +                                     0x47401800 0x200>;
> +                             reg-names = "mc", "control";
> +                             interrupts = <19>;
> +                             interrupt-names = "mc";
> +                             dr_mode = "otg";
> +                             mentor,multipoint = <1>;
> +                             mentor,num-eps = <16>;
> +                             mentor,ram-bits = <12>;
> +                             mentor,power = <500>;
> +                             phys = <&usb1_phy>;
>  
>                               dmas = <&cppi41dma 15 0 &cppi41dma 16 0
>                                       &cppi41dma 17 0 &cppi41dma 18 0
> @@ -461,10 +447,9 @@
>                                       "tx1", "tx2", "tx3", "tx4", "tx5", 
> "tx6", "tx7",
>                                       "tx8", "tx9", "tx10", "tx11", "tx12", 
> "tx13",
>                                       "tx14", "tx15";
> -                             };
>                       };
>  
> -                     cppi41dma: dma@07402000 {
> +                     cppi41dma: dma-controller@07402000 {
>                               compatible = "ti,am3359-cppi41";
>                               reg =  <0x47400000 0x1000
>                                       0x47402000 0x1000
> diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c
> index 4ffbaac..5b007d1 100644
> --- a/drivers/usb/musb/musb_dsps.c
> +++ b/drivers/usb/musb/musb_dsps.c
> @@ -44,6 +44,7 @@
>  #include <linux/of_device.h>
>  #include <linux/of_address.h>
>  #include <linux/of_irq.h>
> +#include <linux/usb/of.h>
>  
>  #include "musb_core.h"
>  
> @@ -425,35 +426,51 @@ static int get_int_prop(struct device_node *dn, const 
> char *s)
>       return val;
>  }
>  
> +static int get_musb_port_mode(struct device *dev)
> +{
> +     enum usb_dr_mode mode;
> +
> +     mode = of_usb_get_dr_mode(dev->of_node);
> +     switch (mode) {
> +     case USB_DR_MODE_HOST:
> +             return MUSB_PORT_MODE_HOST;
> +
> +     case USB_DR_MODE_PERIPHERAL:
> +             return MUSB_PORT_MODE_GADGET;
> +
> +     case USB_DR_MODE_UNKNOWN:
> +     case USB_DR_MODE_OTG:
> +     default:
> +             return MUSB_PORT_MODE_DUAL_ROLE;
> +     };
> +}
> +
>  static int dsps_create_musb_pdev(struct dsps_glue *glue,
>               struct platform_device *parent)
>  {
>       struct musb_hdrc_platform_data pdata;
>       struct resource resources[2];
> +     struct resource *res;
>       struct device *dev = &parent->dev;
>       struct musb_hdrc_config *config;
>       struct platform_device *musb;
>       struct device_node *dn = parent->dev.of_node;
> -     struct device_node *child_node;
>       int ret;
>  
> -     child_node = of_get_child_by_name(dn, "usb");
> -     if (!child_node)
> -             return -EINVAL;
> -
>       memset(resources, 0, sizeof(resources));
> -     ret = of_address_to_resource(child_node, 0, &resources[0]);
> -     if (ret) {
> +     res = platform_get_resource_byname(parent, IORESOURCE_MEM, "mc");
> +     if (!res) {
>               dev_err(dev, "failed to get memory.\n");
> -             return ret;
> +             return -EINVAL;
>       }
> +     resources[0] = *res;
>  
> -     ret = of_irq_to_resource(child_node, 0, &resources[1]);
> -     if (ret == 0) {
> +     res = platform_get_resource_byname(parent, IORESOURCE_IRQ, "mc");
> +     if (!res) {
>               dev_err(dev, "failed to get irq.\n");
> -             ret = -EINVAL;
> -             return ret;
> +             return -EINVAL;
>       }
> +     resources[1] = *res;
>  
>       /* allocate the child platform device */
>       musb = platform_device_alloc("musb-hdrc", PLATFORM_DEVID_AUTO);
> @@ -465,7 +482,7 @@ static int dsps_create_musb_pdev(struct dsps_glue *glue,
>       musb->dev.parent                = dev;
>       musb->dev.dma_mask              = &musb_dmamask;
>       musb->dev.coherent_dma_mask     = musb_dmamask;
> -     musb->dev.of_node               = of_node_get(child_node);
> +     musb->dev.of_node               = of_node_get(dn);
>  
>       glue->musb = musb;
>  
> @@ -485,11 +502,12 @@ static int dsps_create_musb_pdev(struct dsps_glue *glue,
>       pdata.config = config;
>       pdata.platform_ops = &dsps_ops;
>  
> -     config->num_eps = get_int_prop(child_node, "num-eps");
> -     config->ram_bits = get_int_prop(child_node, "ram-bits");
> -     pdata.mode = get_int_prop(child_node, "port-mode");
> -     pdata.power = get_int_prop(child_node, "power");
> -     config->multipoint = of_property_read_bool(child_node, "multipoint");
> +     config->num_eps = get_int_prop(dn, "mentor,num-eps");
> +     config->ram_bits = get_int_prop(dn, "mentor,ram-bits");
> +     pdata.mode = get_musb_port_mode(dev);
> +     /* DT keeps this entry in mA, musb expects it as per USB spec */
> +     pdata.power = get_int_prop(dn, "mentor,power") / 2;

Surely this will break existing DTs (the driver will decide they operate
at half the mA the old dt described)?

Thanks,
Mark.

> +     config->multipoint = of_property_read_bool(dn, "mentor,multipoint");

So this is a boolean property, as I asked in my last reply.

In DTs this can be:

        mentor,multipoint;

Rather than:

        mentor,multipoint = <1>;

Thanks,
Mark.
--
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

Reply via email to