lkml.org 
[lkml]   [2022]   [Jun]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 03/49] regmap-irq: Remove an unnecessary restriction on type_in_mask
    Date
    Check types_supported instead of checking type_rising/falling_val
    when using type_in_mask interrupts. This makes the intent clearer
    and allows a type_in_mask irq to support level or edge triggers,
    rather than only edge triggers. Update the comment to reflect the
    new behavior.

    Signed-off-by: Aidan MacDonald <aidanmacdonald.0x0@gmail.com>
    ---
    drivers/base/regmap/regmap-irq.c | 19 ++++++++-----------
    1 file changed, 8 insertions(+), 11 deletions(-)

    diff --git a/drivers/base/regmap/regmap-irq.c b/drivers/base/regmap/regmap-irq.c
    index a6db605707b0..59cfd4000e63 100644
    --- a/drivers/base/regmap/regmap-irq.c
    +++ b/drivers/base/regmap/regmap-irq.c
    @@ -253,22 +253,19 @@ static void regmap_irq_enable(struct irq_data *data)
    struct regmap *map = d->map;
    const struct regmap_irq *irq_data = irq_to_regmap_irq(d, data->hwirq);
    unsigned int reg = irq_data->reg_offset / map->reg_stride;
    - unsigned int mask, type;
    -
    - type = irq_data->type.type_falling_val | irq_data->type.type_rising_val;
    + unsigned int mask;

    /*
    * The type_in_mask flag means that the underlying hardware uses
    - * separate mask bits for rising and falling edge interrupts, but
    - * we want to make them into a single virtual interrupt with
    - * configurable edge.
    + * separate mask bits for each interrupt trigger type, but we want
    + * to have a single logical interrupt with a configurable type.
    *
    - * If the interrupt we're enabling defines the falling or rising
    - * masks then instead of using the regular mask bits for this
    - * interrupt, use the value previously written to the type buffer
    - * at the corresponding offset in regmap_irq_set_type().
    + * If the interrupt we're enabling defines any supported types
    + * then instead of using the regular mask bits for this interrupt,
    + * use the value previously written to the type buffer at the
    + * corresponding offset in regmap_irq_set_type().
    */
    - if (d->chip->type_in_mask && type)
    + if (d->chip->type_in_mask && irq_data->type.types_supported)
    mask = d->type_buf[reg] & irq_data->mask;
    else
    mask = irq_data->mask;
    --
    2.35.1
    \
     
     \ /
      Last update: 2022-06-20 22:06    [W:2.492 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site