lkml.org 
[lkml]   [2021]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v2 1/2] gpio: mlxbf2: Introduce IRQ support
    > +static int
    > +mlxbf2_gpio_irq_set_type(struct irq_data *irqd, unsigned int type)
    > +{
    > + struct gpio_chip *gc = irq_data_get_irq_chip_data(irqd);
    > + struct mlxbf2_gpio_context *gs = gpiochip_get_data(gc);
    > + int offset = irqd_to_hwirq(irqd);
    > + unsigned long flags;
    > + bool fall = false;
    > + bool rise = false;
    > + u32 val;
    > +
    > + switch (type & IRQ_TYPE_SENSE_MASK) {
    > + case IRQ_TYPE_EDGE_BOTH:
    > + fall = true;
    > + rise = true;
    > + break;
    > + case IRQ_TYPE_EDGE_RISING:
    > + rise = true;
    > + break;
    > + case IRQ_TYPE_EDGE_FALLING:
    > + fall = true;
    > + break;
    > + default:
    > + return -EINVAL;
    > + }

    What PHY are you using? I think every one i've looked at are level
    triggered, not edge. Using an edge interrupt might work 99% of the
    time, but when the timing is just wrong, you can loose an interrupt.
    Which might mean phylib thinks the link is down, when it fact it is
    up. You will need to unplug and replug to recover from that.

    Andrew

    \
     
     \ /
      Last update: 2021-09-22 00:33    [W:3.607 / U:0.420 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site