Message ID | 20150714003427.GA31197@shlinux2 (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 14/07/15 03:34, Peter Chen wrote: > On Mon, Jul 13, 2015 at 01:13:54PM +0300, Roger Quadros wrote: >> Peter, >> >> On 13/07/15 04:58, Peter Chen wrote: >>> On Wed, Jul 08, 2015 at 01:19:30PM +0300, Roger Quadros wrote: >>>> This is to prevent missing symbol build error if OTG is >>>> enabled (built-in) and HCD core (CONFIG_USB) is module. >>>> >>> >>> We may let the OTG-DRD/OTG-FSM depends on CONFIG_USB to fix it. >> >> CONFIG_OTG already depends on CONFIG_USB as it is a sub-option of >> CONFIG_USB. It doesn't depend on CONFIG_USB_GADGET and that can >> be fixed. >> >> But dependency is not the problem here. Symbols not available to >> OTG driver when USB/GADGET is 'm' is the problem. >> >> e.g. >> CONFIG_USB_OTG is always built-in. >> we need to work if CONFIG_USB is 'm'/'y' >> _and_ if CONFIG_USB_GADGET is 'm'/'y' >> > > below should fix this issue, but we may need to make some > changes for code which are defined by CONFIG_USB_OTG. > > diff --git a/drivers/usb/core/Kconfig b/drivers/usb/core/Kconfig > index a99c89e..5e374ad 100644 > --- a/drivers/usb/core/Kconfig > +++ b/drivers/usb/core/Kconfig > @@ -42,8 +42,9 @@ config USB_DYNAMIC_MINORS > If you are unsure about this, say N here. > > config USB_OTG > - bool "OTG support" > + tristate "OTG support" > depends on PM > + depends on USB && USB_GADGET > default n > help > The most notable feature of > USB OTG is support for a With this USB_OTG will become 'm' when either USB or USB_GADGET is m and will break if either USB or USB_GADGET is made y as all OTG core API symbols won't be available. :) cheers, -roger >> >>> >>> Peter >>> >>>> Signed-off-by: Roger Quadros <rogerq@ti.com> >>>> --- >>>> drivers/usb/common/usb-otg-fsm.c | 6 ++++-- >>>> drivers/usb/phy/phy-fsl-usb.c | 2 ++ >>>> include/linux/usb/otg-fsm.h | 1 + >>>> 3 files changed, 7 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/drivers/usb/common/usb-otg-fsm.c b/drivers/usb/common/usb-otg-fsm.c >>>> index 1873eb3..156fd25 100644 >>>> --- a/drivers/usb/common/usb-otg-fsm.c >>>> +++ b/drivers/usb/common/usb-otg-fsm.c >>>> @@ -166,8 +166,10 @@ static int otg_set_state(struct otg_fsm *fsm, enum usb_otg_state new_state) >>>> otg_loc_conn(fsm, 0); >>>> otg_loc_sof(fsm, 1); >>>> otg_set_protocol(fsm, PROTO_HOST); >>>> - usb_bus_start_enum(fsm->otg->host, >>>> - fsm->otg->host->otg_port); >>>> + if (fsm->ops->start_enum) { >>>> + fsm->ops->start_enum(fsm->otg->host, >>>> + fsm->otg->host->otg_port); >>>> + } >>>> break; >>>> case OTG_STATE_A_IDLE: >>>> otg_drv_vbus(fsm, 0); >>>> diff --git a/drivers/usb/phy/phy-fsl-usb.c b/drivers/usb/phy/phy-fsl-usb.c >>>> index ee3f2c2..19541ed 100644 >>>> --- a/drivers/usb/phy/phy-fsl-usb.c >>>> +++ b/drivers/usb/phy/phy-fsl-usb.c >>>> @@ -783,6 +783,8 @@ static struct otg_fsm_ops fsl_otg_ops = { >>>> >>>> .start_host = fsl_otg_start_host, >>>> .start_gadget = fsl_otg_start_gadget, >>>> + >>>> + .start_enum = usb_bus_start_enum, >>>> }; >>>> >>>> /* Initialize the global variable fsl_otg_dev and request IRQ for OTG */ >>>> diff --git a/include/linux/usb/otg-fsm.h b/include/linux/usb/otg-fsm.h >>>> index c631dde..22d8baa 100644 >>>> --- a/include/linux/usb/otg-fsm.h >>>> +++ b/include/linux/usb/otg-fsm.h >>>> @@ -198,6 +198,7 @@ struct otg_fsm_ops { >>>> void (*del_timer)(struct otg_fsm *fsm, enum otg_fsm_timer timer); >>>> int (*start_host)(struct otg_fsm *fsm, int on); >>>> int (*start_gadget)(struct otg_fsm *fsm, int on); >>>> + int (*start_enum)(struct usb_bus *bus, unsigned port_num); >>>> }; >>>> >>>> >>>> -- >>>> 2.1.4 >>>> >>> > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Jul 15, 2015 at 04:30:27PM +0300, Roger Quadros wrote: > On 14/07/15 03:34, Peter Chen wrote: > > On Mon, Jul 13, 2015 at 01:13:54PM +0300, Roger Quadros wrote: > >> Peter, > >> > >> On 13/07/15 04:58, Peter Chen wrote: > >>> On Wed, Jul 08, 2015 at 01:19:30PM +0300, Roger Quadros wrote: > >>>> This is to prevent missing symbol build error if OTG is > >>>> enabled (built-in) and HCD core (CONFIG_USB) is module. > >>>> > >>> > >>> We may let the OTG-DRD/OTG-FSM depends on CONFIG_USB to fix it. > >> > >> CONFIG_OTG already depends on CONFIG_USB as it is a sub-option of > >> CONFIG_USB. It doesn't depend on CONFIG_USB_GADGET and that can > >> be fixed. > >> > >> But dependency is not the problem here. Symbols not available to > >> OTG driver when USB/GADGET is 'm' is the problem. > >> > >> e.g. > >> CONFIG_USB_OTG is always built-in. > >> we need to work if CONFIG_USB is 'm'/'y' > >> _and_ if CONFIG_USB_GADGET is 'm'/'y' > >> > > > > below should fix this issue, but we may need to make some > > changes for code which are defined by CONFIG_USB_OTG. > > > > diff --git a/drivers/usb/core/Kconfig b/drivers/usb/core/Kconfig > > index a99c89e..5e374ad 100644 > > --- a/drivers/usb/core/Kconfig > > +++ b/drivers/usb/core/Kconfig > > @@ -42,8 +42,9 @@ config USB_DYNAMIC_MINORS > > If you are unsure about this, say N here. > > > > config USB_OTG > > - bool "OTG support" > > + tristate "OTG support" > > depends on PM > > + depends on USB && USB_GADGET > > default n > > help > > The most notable feature of > > USB OTG is support for a > > With this USB_OTG will become 'm' when either USB or USB_GADGET is m > and will break if either USB or USB_GADGET is made y as all OTG core > API symbols won't be available. :) > Ok, after thinking more, seems we can't handle properly if USB_OTG as 'm', your idea that using host/gadget/fsm->ops to call hcd/gadget API and the controller driver will defines these ops (due to it will use hcd/gadget function) is proper way currently.
On 16/07/15 03:54, Peter Chen wrote: > On Wed, Jul 15, 2015 at 04:30:27PM +0300, Roger Quadros wrote: >> On 14/07/15 03:34, Peter Chen wrote: >>> On Mon, Jul 13, 2015 at 01:13:54PM +0300, Roger Quadros wrote: >>>> Peter, >>>> >>>> On 13/07/15 04:58, Peter Chen wrote: >>>>> On Wed, Jul 08, 2015 at 01:19:30PM +0300, Roger Quadros wrote: >>>>>> This is to prevent missing symbol build error if OTG is >>>>>> enabled (built-in) and HCD core (CONFIG_USB) is module. >>>>>> >>>>> >>>>> We may let the OTG-DRD/OTG-FSM depends on CONFIG_USB to fix it. >>>> >>>> CONFIG_OTG already depends on CONFIG_USB as it is a sub-option of >>>> CONFIG_USB. It doesn't depend on CONFIG_USB_GADGET and that can >>>> be fixed. >>>> >>>> But dependency is not the problem here. Symbols not available to >>>> OTG driver when USB/GADGET is 'm' is the problem. >>>> >>>> e.g. >>>> CONFIG_USB_OTG is always built-in. >>>> we need to work if CONFIG_USB is 'm'/'y' >>>> _and_ if CONFIG_USB_GADGET is 'm'/'y' >>>> >>> >>> below should fix this issue, but we may need to make some >>> changes for code which are defined by CONFIG_USB_OTG. >>> >>> diff --git a/drivers/usb/core/Kconfig b/drivers/usb/core/Kconfig >>> index a99c89e..5e374ad 100644 >>> --- a/drivers/usb/core/Kconfig >>> +++ b/drivers/usb/core/Kconfig >>> @@ -42,8 +42,9 @@ config USB_DYNAMIC_MINORS >>> If you are unsure about this, say N here. >>> >>> config USB_OTG >>> - bool "OTG support" >>> + tristate "OTG support" >>> depends on PM >>> + depends on USB && USB_GADGET >>> default n >>> help >>> The most notable feature of >>> USB OTG is support for a >> >> With this USB_OTG will become 'm' when either USB or USB_GADGET is m >> and will break if either USB or USB_GADGET is made y as all OTG core >> API symbols won't be available. :) >> > > Ok, after thinking more, seems we can't handle properly if USB_OTG as > 'm', your idea that using host/gadget/fsm->ops to call hcd/gadget API > and the controller driver will defines these ops (due to it will use > hcd/gadget function) is proper way currently. > Can I take this as your Ack for this patch? :) cheers, -roger -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/usb/core/Kconfig b/drivers/usb/core/Kconfig index a99c89e..5e374ad 100644 --- a/drivers/usb/core/Kconfig +++ b/drivers/usb/core/Kconfig @@ -42,8 +42,9 @@ config USB_DYNAMIC_MINORS If you are unsure about this, say N here. config USB_OTG - bool "OTG support" + tristate "OTG support" depends on PM + depends on USB && USB_GADGET default n help The most notable feature of