On Wed, Feb 25, 2015 at 09:28:36PM +0800, zhangfei wrote: > >>>>>>>>+static void hi6220_detect_work(struct work_struct *work) > >>>>>>>>+{ > >>>>>>>>+ struct hi6220_priv *priv = > >>>>>>>>+ container_of(work, struct hi6220_priv, work.work); > >>>>>>>>+ int gpio_id, gpio_vbus; > >>>>>>>>+ enum usb_otg_state state; > >>>>>>>>+ > >>>>>>>>+ if (!gpio_is_valid(priv->gpio_id) || !gpio_is_valid(priv->gpio_vbus)) > >>>>>>>>+ return; > >>>>>>>>+ > >>>>>>>>+ gpio_id = gpio_get_value_cansleep(priv->gpio_id); > >>>>>>>>+ gpio_vbus = gpio_get_value_cansleep(priv->gpio_vbus); > >>>>>>> > >>>>>>>looks like this should be using extcon > >>>>>>Not used extcon before. > >>>>>>However, we need gpio_vbus interrupt. > >>>>>>Checked phy-tahvo.c and phy-omap-otg.c, not find extcon related with > >>>>>>interrupt. > >>>>>>Will investigate tomorrow. > >>>>> > >>>>>drivers/extcon/extcon-gpio.c > >>>>I think there is no need to use extcon, gpio is clear enough. > >>>>extcon-gpio.c even do not support dt. > >>> > >>>well, add DT. The whole idea of free software is that we improve on > >>>things we already have. EXTCON is *the* API to handle such things. > >> > >>I think I am still not understanding extcon-gpio, not sure why need > >>use this API here. > > > >because extcon is the API to use for external connectors. The same way > >you use regulator framework to control that single GPIO tied to an > >enable signal of a fixed regulator, you use extcon when you need to read > >that gpio signal tied to id pin of the USB connector. > > > >>Here two gpio requires, one gpio as interrupt, in the interrupt > >>handler, we detect the gpio status judging the otg status. > >>extcon-gpio.c use the interrupt, then can we also use the gpio > >>interrupt. Using extcon-gpio is used for saving gpio_request? > > > >extcon is used to hide gpio_request from dwc2. dwc2 only knows about > >extcon, not gpios. extcon will request the gpio and use it as interrupt > >source. When an IRQ fires, it will read the gpio state and decide if it > >should broadcast a message to tell dwc2 to become host or peripheral. > > Thanks for the kind education, understand now. hey, no problem ;-) -- balbi
Attachment:
signature.asc
Description: Digital signature