[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <55F19030.9090800@ti.com>
Date: Thu, 10 Sep 2015 17:14:08 +0300
From: Roger Quadros <rogerq@...com>
To: Li Jun <b47624@...escale.com>
CC: <stern@...land.harvard.edu>, <balbi@...com>,
<gregkh@...uxfoundation.org>, <peter.chen@...escale.com>,
<dan.j.williams@...el.com>, <jun.li@...escale.com>,
<mathias.nyman@...ux.intel.com>, <tony@...mide.com>,
<Joao.Pinto@...opsys.com>, <abrestic@...omium.org>,
<linux-usb@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
<linux-omap@...r.kernel.org>
Subject: Re: [PATCH v4 07/13] usb: otg: add OTG core
On 10/09/15 12:28, Li Jun wrote:
> On Wed, Sep 09, 2015 at 01:01:14PM +0300, Roger Quadros wrote:
> ... ...
>
>>>>>> + return -EINVAL;
>>>>>
>>>>> Return non-zero, then if err, do we need call usb_otg_add_hcd() after
>>>>> usb_otg_register_hcd() fails?
>>>>
>>>> You should not call usb_otg_register_hcd() but usb_add_hcd().
>>>> If that fails then you fail as ususal.
>>>
>>> My point is if we use usb_add_hcd(), but failed in usb_otg_register_hcd(),
>>> then usb_otg_add_hcd() will be called in *all* error case, is this your
>>> expectation?
>>> if (usb_otg_register_hcd(hcd, irqnum, irqflags, &otg_hcd_intf))
>>> return usb_otg_add_hcd(hcd, irqnum, irqflags);
>>>
>>
>> Yes, my intention was that if otg fails then it is a non otg HCD so register normally.
>> Let me correct my previous statement. If you are absolutely sure
>> that the HCD is for otg/dual-role usage then you should call usb_otg_register_hcd().
>>
>
> I think this is not just about a statement, in your usb_otg_register_hcd()
> implementation, there are several places will return error, I think only
> the first two are for a non-otg HCD case, the following error cases seems
> mean this is for otg usage, but it fails in middle of registration, if that
> is the case, is it reasonable to call usb_otg_add_hcd()?
OK. We need to check the return value then and differentiate if it is non-otg
or otg with failure.
If it is non-otg then only we must call usb_otg_add_hcd().
I will fix usb_add_hcd().
>
>>>>>> + * @fsm_running: state machine running/stopped indicator
>>>>>> + */
>>>>>> struct usb_otg {
>>>>>> u8 default_a;
>>>>>>
>>>>>> struct phy *phy;
>>>>>> /* old usb_phy interface */
>>>>>> struct usb_phy *usb_phy;
>>>>>> +
>>>>>
>>>>> add a blank line?
>>>>>
>>>
>>> You missed this.
>>
>> Sorry. Did you suggest to remove that blank line
>> or add a new one before usb_phy?
>>
>
> Remove it.
OK.
>
>>>
>>>>>> struct usb_bus *host;
>>>>>> struct usb_gadget *gadget;
>>>>>>
>>>>>> enum usb_otg_state state;
>>>>>>
>>>>>> + struct device *dev;
>>>>>> + struct usb_otg_caps *caps;
>>>>>> + struct otg_fsm fsm;
>>>>>> + struct otg_fsm_ops fsm_ops;
>>>>>> +
>>>>>> + /* internal use only */
>>>>>> + struct otg_hcd primary_hcd;
>>>>>> + struct otg_hcd shared_hcd;
>>>>>> + struct otg_gadget_ops *gadget_ops;
>>>>>> + struct otg_timer timers[NUM_OTG_FSM_TIMERS];
>>>>>> + struct list_head list;
>>>>>> + struct work_struct work;
>>>>>> --
>>>>>> 2.1.4
>>>
--
cheers,
-roger
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists