Re: [PATCH v1 2/3] Documentation: firmware-guide: gpio-properties: active_low only for GpioIo()

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

 



On Thu, Oct 29, 2020 at 8:10 PM Ricardo Ribalda <ribalda@xxxxxxxxxx> wrote:
> On Thu, Oct 29, 2020 at 6:32 PM Ricardo Ribalda <ribalda@xxxxxxxxxx> wrote:
> > On Thu, Oct 29, 2020 at 6:26 PM Andy Shevchenko
> > <andy.shevchenko@xxxxxxxxx> wrote:
> > > On Thu, Oct 29, 2020 at 7:20 PM Andy Shevchenko
> > > <andy.shevchenko@xxxxxxxxx> wrote:
> > > > On Thu, Oct 29, 2020 at 7:17 PM Andy Shevchenko
> > > > <andy.shevchenko@xxxxxxxxx> wrote:
> > > > > On Thu, Oct 29, 2020 at 4:55 PM Ricardo Ribalda <ribalda@xxxxxxxxxx> wrote:
> > > > > > On Thu, Oct 29, 2020 at 3:45 PM Andy Shevchenko
> > > > > > <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:
> > > > > > > On Wed, Oct 28, 2020 at 10:10:42PM +0100, Ricardo Ribalda wrote:
> > > > >
> > > > > ...
> > > > >
> > > > > > > ActiveLevel field is described in 19.6.55 GpioInt (GPIO Interrupt Connection
> > > > > > > Resource Descriptor Macro).
> > > > > > >
> > > > > > > > Without using the active_low, how can we describe  a pin that is
> > > > > > > > active low and has to trigger an irq on both edges?
> > > > > > >
> > > > > > > This is nonsense.
> > > > > > > What does it mean?
> > > > > >
> > > > > > Let me try to explain myself again:
> > > > > >
> > > > > > I have a gpio pin that produces IRQs on both edges. so ActiveLevel is Both
> > > > > >
> > > > > > The problem is that the value of that pin is inverted: Low means 1 and
> > > > > > high means 0.
> > > > > >
> > > > > > How can I describe that the pin "is inverted" without using the _DSD field?
> > > > >
> > > > > "Both edges" and "inverted" or "polarity low" in one sentence make no sense.
> > > >
> > > > To be on the constructive side, I can *imagine* so badly designed
> > > > hardware that uses level and edge at the same time, but before I go to
> > > > conclusions, can you share relevant (pieces of) datasheet?
> > >
> > > The [1] is a real example of how GPIO is being used to detect changing
> > > of current level of the signal.
> > > Note, ACPI tables for that device have problems [2], but I guess you
> > > may get the idea.
> >
> >
> > This is exactly what I need to do. Get an IRQ whenever the value
> > changes. But the pin is "inverted"
> >
> > This is the "schematic" :  https://ibb.co/f8GMBbP . I want to pass to
> > userspace a "1" when the switch is closed and "0"  when it is open.
> >
> And there are also other devices where the swith works the other way
> around, so the acpi should be verbose enough to describe both
> situations.
>
> With my proposal (use the same active_low field as with GpioIO) we
> cover both usecases.

Even without your proposal it's feasible.
You see, the problem here is that if you describe GPIO as Interrupt,
the edge and level together make complete nonsense.

Solution: do *not* describe it as Interrupt.

> > > [1]: https://elixir.bootlin.com/linux/latest/source/drivers/extcon/extcon-intel-int3496.c#L138
> > > [2]: https://elixir.bootlin.com/linux/latest/source/drivers/extcon/extcon-intel-int3496.c#L45


-- 
With Best Regards,
Andy Shevchenko



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux