diff mbox

[RFC] usb: dwc3: Set GCTL.PrtCapDir based on selected mode.

Message ID CAFp+6iHaP96F0OF9_C1DTsfmkPNZMVC78tj7m0YGdV=d_znWrA@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Vivek Gautam Feb. 25, 2013, 8:51 a.m. UTC
Hi Balbi,


On Mon, Feb 25, 2013 at 1:47 PM, Felipe Balbi <balbi@ti.com> wrote:
> Hi,
>
> On Tue, Feb 05, 2013 at 07:15:58PM +0530, Vivek Gautam wrote:
>> Now that machines may select the mode of working of DWC3,
>> we can set the Port capability direction based on selected mode.
>>
>> Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
>> ---
>>  drivers/usb/dwc3/core.c |   11 ++++++++---
>>  1 files changed, 8 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
>> index 177f4c6..f4c47f7 100644
>> --- a/drivers/usb/dwc3/core.c
>> +++ b/drivers/usb/dwc3/core.c
>> @@ -479,7 +479,6 @@ static int dwc3_probe(struct platform_device *pdev)
>>
>>       switch (mode) {
>>       case DWC3_MODE_DEVICE:
>> -             dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_DEVICE);
>>               ret = dwc3_gadget_init(dwc);
>>               if (ret) {
>>                       dev_err(dev, "failed to initialize gadget\n");
>> @@ -487,7 +486,6 @@ static int dwc3_probe(struct platform_device *pdev)
>>               }
>>               break;
>>       case DWC3_MODE_HOST:
>> -             dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_HOST);
>>               ret = dwc3_host_init(dwc);
>>               if (ret) {
>>                       dev_err(dev, "failed to initialize host\n");
>> @@ -495,7 +493,6 @@ static int dwc3_probe(struct platform_device *pdev)
>>               }
>>               break;
>>       case DWC3_MODE_DRD:
>> -             dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_OTG);
>>               ret = dwc3_host_init(dwc);
>>               if (ret) {
>>                       dev_err(dev, "failed to initialize host\n");
>> @@ -514,6 +511,14 @@ static int dwc3_probe(struct platform_device *pdev)
>>       }
>>       dwc->mode = mode;
>>
>> +#if IS_ENABLED(CONFIG_USB_DWC3_HOST)
>> +     dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_HOST);
>> +#elif IS_ENABLED(CONFIG_USB_DWC3_GADGET)
>> +     dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_DEVICE);
>> +#else
>> +     dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_OTG);
>> +#endif
>
> you can actually use:
>
> if (IS_ENABLED(CONFIG_USB_DWC3_HOST))
>         dwc3_set_mode(dwc...
> else if (IS_ENABLED( ...
>         ...
> else
>         ...
>

I am actually hoping to change this to something like below (after
of course changing the preprocessor conditionals) :

commit 9a62ed948dcb6ac5d78aff41f5355c0a5ea86475
Author: Vivek Gautam <gautam.vivek@samsung.com>
Date:   Thu Jan 24 11:58:05 2013 +0530

    usb: dwc3: Set GCTL.PrtCapDir based on selected mode.

    Now that machines may select the mode of working of DWC3,
    we can set the Port capability direction based on selected mode.

    Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>



Since the mode is now software dependent, we can skip
initializing gadget/host in case of Host-only/Gadget-only modes respectively.
Can't guess how much this is valid though :-(

> instead of pre-processor conditionals. In fact, I have recently written
> a patch converting #if IS_ENABLED() to if (IS_ENABLED()) but I haven't
> posted yet:
>

Right, very valid change. Missed this in earlier change :-(

> commit 42dbbbc272bc941ec2b0cac51342609e61e13a01
> Author: Felipe Balbi <balbi@ti.com>
> Date:   Fri Feb 22 16:24:49 2013 +0200
>
>     usb: dwc3: debugfs: improve debugfs file creation
>
>     when commit 388e5c5 (usb: dwc3: remove dwc3
>     dependency on host AND gadget.) changed the
>     way debugfs files are created, it failed to
>     note that 'mode' is necessary in Dual Role
>     mode only while 'testmode' and 'link_state'
>     are valid in Dual Role and Peripheral-only
>     builds. Fix this while also converting pre-
>     processor conditional to C conditionals.
>
>     Signed-off-by: Felipe Balbi <balbi@ti.com>
>
> diff --git a/drivers/usb/dwc3/debugfs.c b/drivers/usb/dwc3/debugfs.c
> index a1bac9a..8b23d045 100644
> --- a/drivers/usb/dwc3/debugfs.c
> +++ b/drivers/usb/dwc3/debugfs.c
> @@ -667,28 +667,31 @@ int dwc3_debugfs_init(struct dwc3 *dwc)
>                 goto err1;
>         }
>
> -#if IS_ENABLED(CONFIG_USB_DWC3_GADGET)
> -       file = debugfs_create_file("mode", S_IRUGO | S_IWUSR, root,
> -                       dwc, &dwc3_mode_fops);
> -       if (!file) {
> -               ret = -ENOMEM;
> -               goto err1;
> +       if (IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE)) {
> +               file = debugfs_create_file("mode", S_IRUGO | S_IWUSR, root,
> +                               dwc, &dwc3_mode_fops);
> +               if (!file) {
> +                       ret = -ENOMEM;
> +                       goto err1;
> +               }
>         }
>
> -       file = debugfs_create_file("testmode", S_IRUGO | S_IWUSR, root,
> -                       dwc, &dwc3_testmode_fops);
> -       if (!file) {
> -               ret = -ENOMEM;
> -               goto err1;
> -       }
> -
> -       file = debugfs_create_file("link_state", S_IRUGO | S_IWUSR, root,
> -                       dwc, &dwc3_link_state_fops);
> -       if (!file) {
> -               ret = -ENOMEM;
> -               goto err1;
> +       if (IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE) ||
> +                       IS_ENABLED(CONFIG_USB_DWC3_GADGET)) {
> +               file = debugfs_create_file("testmode", S_IRUGO | S_IWUSR, root,
> +                               dwc, &dwc3_testmode_fops);
> +               if (!file) {
> +                       ret = -ENOMEM;
> +                       goto err1;
> +               }
> +
> +               file = debugfs_create_file("link_state", S_IRUGO | S_IWUSR, root,
> +                               dwc, &dwc3_link_state_fops);
> +               if (!file) {
> +                       ret = -ENOMEM;
> +                       goto err1;
> +               }
>         }
> -#endif
>
>         return 0;
>
>
> --
> balbi

Comments

Felipe Balbi Feb. 25, 2013, 9:19 a.m. UTC | #1
Hi,

On Mon, Feb 25, 2013 at 02:21:46PM +0530, Vivek Gautam wrote:
> >> @@ -514,6 +511,14 @@ static int dwc3_probe(struct platform_device *pdev)
> >>       }
> >>       dwc->mode = mode;
> >>
> >> +#if IS_ENABLED(CONFIG_USB_DWC3_HOST)
> >> +     dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_HOST);
> >> +#elif IS_ENABLED(CONFIG_USB_DWC3_GADGET)
> >> +     dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_DEVICE);
> >> +#else
> >> +     dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_OTG);
> >> +#endif
> >
> > you can actually use:
> >
> > if (IS_ENABLED(CONFIG_USB_DWC3_HOST))
> >         dwc3_set_mode(dwc...
> > else if (IS_ENABLED( ...
> >         ...
> > else
> >         ...
> >
> 
> I am actually hoping to change this to something like below (after
> of course changing the preprocessor conditionals) :
> 
> commit 9a62ed948dcb6ac5d78aff41f5355c0a5ea86475
> Author: Vivek Gautam <gautam.vivek@samsung.com>
> Date:   Thu Jan 24 11:58:05 2013 +0530
> 
>     usb: dwc3: Set GCTL.PrtCapDir based on selected mode.
> 
>     Now that machines may select the mode of working of DWC3,
>     we can set the Port capability direction based on selected mode.
> 
>     Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
> 
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> index 79f335f..9444fbe 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -478,7 +478,13 @@ static int dwc3_probe(struct platform_device *pdev)
>                 goto err1;
>         }
> 
> -       mode = DWC3_MODE(dwc->hwparams.hwparams0);
> +#if IS_ENABLED(CONFIG_USB_DWC3_HOST)
> +       mode = DWC3_MODE_HOST;
> +#elif IS_ENABLED(CONFIG_USB_DWC3_GADGET)
> +       mode = DWC3_MODE_DEVICE;
> +#else
> +       mode = DWC3_MODE_DRD;

looks alright.
Vivek Gautam Feb. 25, 2013, 9:29 a.m. UTC | #2
On Mon, Feb 25, 2013 at 2:49 PM, Felipe Balbi <balbi@ti.com> wrote:
> Hi,
>
> On Mon, Feb 25, 2013 at 02:21:46PM +0530, Vivek Gautam wrote:
>> >> @@ -514,6 +511,14 @@ static int dwc3_probe(struct platform_device *pdev)
>> >>       }
>> >>       dwc->mode = mode;
>> >>
>> >> +#if IS_ENABLED(CONFIG_USB_DWC3_HOST)
>> >> +     dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_HOST);
>> >> +#elif IS_ENABLED(CONFIG_USB_DWC3_GADGET)
>> >> +     dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_DEVICE);
>> >> +#else
>> >> +     dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_OTG);
>> >> +#endif
>> >
>> > you can actually use:
>> >
>> > if (IS_ENABLED(CONFIG_USB_DWC3_HOST))
>> >         dwc3_set_mode(dwc...
>> > else if (IS_ENABLED( ...
>> >         ...
>> > else
>> >         ...
>> >
>>
>> I am actually hoping to change this to something like below (after
>> of course changing the preprocessor conditionals) :
>>
>> commit 9a62ed948dcb6ac5d78aff41f5355c0a5ea86475
>> Author: Vivek Gautam <gautam.vivek@samsung.com>
>> Date:   Thu Jan 24 11:58:05 2013 +0530
>>
>>     usb: dwc3: Set GCTL.PrtCapDir based on selected mode.
>>
>>     Now that machines may select the mode of working of DWC3,
>>     we can set the Port capability direction based on selected mode.
>>
>>     Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
>>
>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
>> index 79f335f..9444fbe 100644
>> --- a/drivers/usb/dwc3/core.c
>> +++ b/drivers/usb/dwc3/core.c
>> @@ -478,7 +478,13 @@ static int dwc3_probe(struct platform_device *pdev)
>>                 goto err1;
>>         }
>>
>> -       mode = DWC3_MODE(dwc->hwparams.hwparams0);
>> +#if IS_ENABLED(CONFIG_USB_DWC3_HOST)
>> +       mode = DWC3_MODE_HOST;
>> +#elif IS_ENABLED(CONFIG_USB_DWC3_GADGET)
>> +       mode = DWC3_MODE_DEVICE;
>> +#else
>> +       mode = DWC3_MODE_DRD;
>
> looks alright.
>
Fine then, i'll post this.
diff mbox

Patch

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 79f335f..9444fbe 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -478,7 +478,13 @@  static int dwc3_probe(struct platform_device *pdev)
                goto err1;
        }

-       mode = DWC3_MODE(dwc->hwparams.hwparams0);
+#if IS_ENABLED(CONFIG_USB_DWC3_HOST)
+       mode = DWC3_MODE_HOST;
+#elif IS_ENABLED(CONFIG_USB_DWC3_GADGET)
+       mode = DWC3_MODE_DEVICE;
+#else
+       mode = DWC3_MODE_DRD;
+#endif

        switch (mode) {
        case DWC3_MODE_DEVICE: