All of lore.kernel.org
 help / color / mirror / Atom feed
From: mkl@pengutronix.de (Marc Kleine-Budde)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/9] USB: add devicetree helpers for determining dr_mode and phy_type
Date: Thu, 14 Feb 2013 11:11:55 +0100	[thread overview]
Message-ID: <511CB86B.3070504@pengutronix.de> (raw)
In-Reply-To: <20130214095822.GD15275@arwen.pp.htv.fi>

On 02/14/2013 10:58 AM, Felipe Balbi wrote:
> Hi,
> 
> On Thu, Feb 14, 2013 at 10:49:44AM +0100, Marc Kleine-Budde wrote:
>>>> diff --git a/drivers/usb/usb-common.c b/drivers/usb/usb-common.c
>>>> index d29503e..ad4d87d 100644
>>>> --- a/drivers/usb/usb-common.c
>>>> +++ b/drivers/usb/usb-common.c
>>>> @@ -14,6 +14,9 @@
>>>>  #include <linux/kernel.h>
>>>>  #include <linux/module.h>
>>>>  #include <linux/usb/ch9.h>
>>>> +#include <linux/of.h>
>>>> +#include <linux/usb/of.h>
>>>> +#include <linux/usb/otg.h>
>>>>  
>>>>  const char *usb_speed_string(enum usb_device_speed speed)
>>>>  {
>>>> @@ -32,4 +35,37 @@ const char *usb_speed_string(enum usb_device_speed speed)
>>>>  }
>>>>  EXPORT_SYMBOL_GPL(usb_speed_string);
>>>>  
>>>> +#ifdef CONFIG_OF
>>>> +static const char *usb_dr_modes[] = {
>>>> +	[USB_DR_MODE_UNKNOWN]		= "",
>>>> +	[USB_DR_MODE_HOST]		= "host",
>>>> +	[USB_DR_MODE_PERIPHERAL]	= "peripheral",
>>>> +	[USB_DR_MODE_OTG]		= "otg",
>>>> +};
>>>
>>> It turns out this is a problem, especially since this is generic usb
>>> code: we have a chipidea controller (a patchset just arrived) that does
>>> both host and peripheral, but not otg. And I'm told now that dwc3
>>> controller can be synthesized like that too.
> 
> I wonder if this part is really necessary. Usually you would read it
> from HW's registers. For dwc3, it's quite recently that we allowed the
> driver to be built with host-only, device-only or DRD functionality.

The imx25 USB version of the chipidea IP Core get's really confused if
you read from the CAP_DCCPARAMS register on the host only port. In
freescale's documentation the register is marked as reserved. The host
port will not work then.

> Also, this is likely to create troubles if not done correctly. Imagine
> user compiles a host-only driver and board passes dr_mode = peripheral ?

Use dev_err() and inform the user.

> Maybe we can ignore dr_mode in host-only and device-only builds and only
> look at it for DRD builds ?
> 
>> You mean a single instance of the controller (i.e. USB port) is host and
>> peripheral but has no otg registers. This means the mode of the port is
>> configured by userspace via the debugfs file? Is this possible?
> 
> yes, it is possible. Dual-Role doesn't imply OTG, but OTG implies
> Dual-Role.

Thanks for the info. Then we need a fourth value for the helper code.
What's a sensible sting: "dual-role", "dr"?

>> The above property describes a single port not the whole controller. If
>> there is a controller with one host and one peripheral port the code in
>> this patch should be sufficient, as you have a property in the DT for
>> each port.
> 
> I don't think you can have a single controller like that, but good that
> it supports.

The DT binding is per USB port, so that's a by product of good
abstraction :)

Marc

-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 263 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130214/2e0c3ad9/attachment.sig>

  parent reply	other threads:[~2013-02-14 10:11 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-04 13:24 [PATCH v4] USB: add devicetree helpers for determining dr_mode and phy_type Sascha Hauer
2013-02-04 13:24 ` [PATCH 1/9] usb: otg: use try_module_get in all usb_get_phy functions and add missing module_put Sascha Hauer
2013-02-04 13:59   ` Roger Quadros
2013-02-04 14:10     ` Marc Kleine-Budde
2013-02-04 14:39       ` Roger Quadros
2013-02-04 13:24 ` [PATCH 2/9] USB: move bulk of otg/otg.c to phy/phy.c Sascha Hauer
2013-02-19  9:30   ` Felipe Balbi
2013-02-19 19:06     ` Sascha Hauer
2013-02-19 19:48       ` Felipe Balbi
2013-02-04 13:24 ` [PATCH 3/9] USB: add devicetree helpers for determining dr_mode and phy_type Sascha Hauer
2013-02-14  9:36   ` Alexander Shishkin
2013-02-14  9:49     ` Marc Kleine-Budde
2013-02-14  9:58       ` Felipe Balbi
2013-02-14 10:07         ` Sascha Hauer
2013-02-14 10:15           ` Felipe Balbi
2013-02-14 11:24             ` Sascha Hauer
2013-02-14 13:10               ` Felipe Balbi
2013-02-14 16:06                 ` Sascha Hauer
2013-02-14 18:04                   ` Felipe Balbi
2013-02-14 18:30                     ` Sascha Hauer
2013-02-14 19:36                       ` Felipe Balbi
2013-02-15 10:54                         ` Sascha Hauer
2013-02-17  9:00                           ` Peter Chen
2013-02-14 10:11         ` Marc Kleine-Budde [this message]
2013-02-14 10:16           ` Felipe Balbi
2013-03-13  9:43   ` Peter Chen
2013-02-04 13:24 ` [PATCH 4/9] USB: chipidea: ci13xxx-imx: create dynamic platformdata Sascha Hauer
2013-02-04 13:24 ` [PATCH 5/9] USB: chipidea: add PTW and PTS handling Sascha Hauer
2013-02-14 13:07   ` Alexander Shishkin
2013-02-27 10:23     ` Marc Kleine-Budde
2013-02-04 13:24 ` [PATCH 6/9] USB chipidea: introduce dual role mode pdata flags Sascha Hauer
2013-02-22  2:09   ` Peter Chen
2013-02-27 10:42     ` Marc Kleine-Budde
2013-02-04 13:24 ` [PATCH 7/9] USB chipidea i.MX: introduce dr_mode property Sascha Hauer
2013-02-04 13:24 ` [PATCH 8/9] USB mxs-phy: Register phy with framework Sascha Hauer
2013-02-04 13:24 ` [PATCH 9/9] USB chipidea i.MX: use devm_usb_get_phy_by_phandle to get phy Sascha Hauer
2013-02-05 11:45   ` Sergei Shtylyov
2013-02-05 11:58     ` Sascha Hauer
2013-02-05  5:54 ` [PATCH v4] USB: add devicetree helpers for determining dr_mode and phy_type Peter Chen
2013-02-07 10:56 ` Sascha Hauer
2013-02-12 13:59   ` Sascha Hauer
2013-02-14 13:22 ` Alexander Shishkin
  -- strict thread matches above, loose matches on Subject: below --
2013-02-27 12:27 [PATCH v5 0/9] " Marc Kleine-Budde
2013-02-27 12:27 ` [PATCH 3/9] " Marc Kleine-Budde
2013-02-27 12:31   ` Marc Kleine-Budde
2013-02-27 12:32     ` Felipe Balbi
2013-02-27 12:32   ` Felipe Balbi
2013-02-27 12:38     ` Marc Kleine-Budde
2013-02-27 12:41       ` Felipe Balbi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=511CB86B.3070504@pengutronix.de \
    --to=mkl@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.