lkml.org 
[lkml]   [2016]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v6 07/12] usb: otg: add OTG/dual-role core
    On Tue, Apr 26, 2016 at 05:11:36AM +0000, Jun Li wrote:
    > Hi
    >
    > > -----Original Message-----
    > > From: Peter Chen [mailto:hzpeterchen@gmail.com]
    > > Sent: Tuesday, April 26, 2016 11:47 AM
    > > To: Jun Li <jun.li@nxp.com>
    > > Cc: Roger Quadros <rogerq@ti.com>; stern@rowland.harvard.edu;
    > > balbi@kernel.org; gregkh@linuxfoundation.org; peter.chen@freescale.com;
    > > dan.j.williams@intel.com; jun.li@freescale.com;
    > > mathias.nyman@linux.intel.com; tony@atomide.com; Joao.Pinto@synopsys.com;
    > > abrestic@chromium.org; r.baldyga@samsung.com; linux-usb@vger.kernel.org;
    > > linux-kernel@vger.kernel.org; linux-omap@vger.kernel.org
    > > Subject: Re: [PATCH v6 07/12] usb: otg: add OTG/dual-role core
    > >
    > > On Tue, Apr 26, 2016 at 02:07:56AM +0000, Jun Li wrote:
    > > > > +struct usb_otg *usb_otg_register(struct device *dev,
    > > > > + struct usb_otg_config *config) {
    > > > > + struct usb_otg *otg;
    > > > > + struct otg_wait_data *wait;
    > > > > + int ret = 0;
    > > > > +
    > > > > + if (!dev || !config || !config->fsm_ops)
    > > > > + return ERR_PTR(-EINVAL);
    > > > > +
    > > > > + /* already in list? */
    > > > > + mutex_lock(&otg_list_mutex);
    > > > > + if (usb_otg_get_data(dev)) {
    > > > > + dev_err(dev, "otg: %s: device already in otg list\n",
    > > > > + __func__);
    > > > > + ret = -EINVAL;
    > > > > + goto unlock;
    > > > > + }
    > > > > +
    > > > > + /* allocate and add to list */
    > > > > + otg = kzalloc(sizeof(*otg), GFP_KERNEL);
    > > > > + if (!otg) {
    > > > > + ret = -ENOMEM;
    > > > > + goto unlock;
    > > > > + }
    > > > > +
    > > > > + otg->dev = dev;
    > > > > + otg->caps = config->otg_caps;
    > > > > +
    > > > > + if ((otg->caps->hnp_support || otg->caps->srp_support ||
    > > > > + otg->caps->adp_support) && !config->otg_work)
    > > > > + dev_info(dev, "otg: limiting to dual-role\n");
    > > >
    > > > dev_err, this should be an error.
    > >
    > > The condition may be wrong, but it is an information to show that current
    > > OTG is dual-role.
    >
    > This should not happen in any correct design, I even doubt if we
    > should try to continue by "downgrade" it to be duel role, currently
    > the only example user is dual role, so doing like this can't be
    > tested by real case, this downgrade is not so easy like we image,
    > at least for chipidea otg driver, simply replace a queue worker may
    > not work, as we have much more difference between the 2 configs.
    >

    Would you show more why chipidea can't work just replace the work item,
    and see if anything we still can improve for this framework?

    --
    Best Regards,
    Peter Chen

    \
     
     \ /
      Last update: 2016-04-26 08:41    [W:3.566 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site