Re: [PATCH v4 1/1] extcon: usb-gpio: Introduce gpio usb extcon driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Roger, 

On Mon, 2015-03-16 at 15:11 +0200, Roger Quadros wrote:
> Hi Ivan,
> 
> On 16/03/15 14:32, Ivan T. Ivanov wrote:
> > Hi,
> > 
> > On Mon, 2015-02-02 at 12:21 +0200, Roger Quadros wrote:
> > > This driver observes the USB ID pin connected over a GPIO and
> > > updates the USB cable extcon states accordingly.
> > > 
> > > The existing GPIO extcon driver is not suitable for this purpose
> > > as it needs to be taught to understand USB cable states and it
> > > can't handle more than one cable per instance.
> > > 
> > > For the USB case we need to handle 2 cable states.
> > > 1) USB (attach/detach)
> > > 2) USB-HOST (attach/detach)
> > > 
> > > This driver can be easily updated in the future to handle VBUS
> > > events in case it happens to be available on GPIO for any platform.
> > > 
> > > Signed-off-by: Roger Quadros <rogerq@xxxxxx>
> > > ---
> > > v4:
> > > - got rid of id_irqwake flag. Fail if enable/disable_irq_wake() fails
> > > - changed host cable name to "USB-HOST"
> > 
> > I am sorry that I am getting a bit little late into this.
> > 
> > Isn't supposed that we have to use strings defined in
> > const char extcon_cable_name[][]?
> > 
> > 
> > > +
> > > +/* List of detectable cables */
> > > +enum {
> > > +       EXTCON_CABLE_USB = 0,
> > > +       EXTCON_CABLE_USB_HOST,
> > > +
> > 
> > Same here: duplicated with enum extcon_cable_name
> > 
> > > +       EXTCON_CABLE_END,
> > > +};
> > > +
> > > +static const char *usb_extcon_cable[] = {
> > > +       [EXTCON_CABLE_USB] = "USB",
> > > +       [EXTCON_CABLE_USB_HOST] = "USB-HOST",
> > > +       NULL,
> > > +};
> 
> I'm not exactly sure how else it is supposed to work if we
> support only a subset of cables from the global extcon_cable_name[][].

I don't see issue that we use just 2 events. I think that we can
reuse  enum extcon_cable_name and strings already defined in 
extcon_cable_name[][] global variable. It is defined extern in
extcon.h file exactly for this purpose, no?

> 
> > 
> > <snip>
> > 
> > > +
> > > +static int usb_extcon_probe(struct platform_device *pdev)
> > > +{
> > > 
> > 
> > <snip>
> > 
> > > +
> > > +       ret = devm_request_threaded_irq(dev, info->id_irq, NULL,
> > > +                                       usb_irq_handler,
> > > +                                       IRQF_TRIGGER_RISING |
> > > +                                       IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
> > 
> > Shouldn't triggers be defined in DTS files?
> 
> Could be but we're sure that we always need the trigger for both rising/falling edges
> in this case. So the usage is more appropriately decided from application point of view
> rather than h/w point of view. h/w is generic GPIO.

No strong opinion on this. Could it be that GPIO did't support edge
triggered interrupt, but just level triggered?

Regards,
Ivan

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux