• Axel Lin's avatar
    regulator: da9063: Fix up irq leak · d87aef91
    Axel Lin authored
    Current code does not set regulators->irq_ldo_lim and regulators->irq_uvov,
    so it actually calls free_irq(0, regulators) twice in remove() but does not
    free the irq actually used.
    
    Convert to use devm_request_threaded_irq instead and then we don't need to
    take care the clean up irq so remove irq_ldo_lim and irq_uvov from
    struct da9063_regulators. Note, regulators->irq_uvov is not used at all in
    current code.
    
    There is a slightly change in this patch, it will return error in probe()
    if devm_request_threaded_irq fails. If the irq is optional, it should be
    fine to allow platform_get_irq_byname fails. But current code does not
    allow platform_get_irq_byname fails. So I think the reason to allow
    request irq failure is just because the irq leak.
    Signed-off-by: default avatarAxel Lin <axel.lin@ingics.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    d87aef91
da9063-regulator.c 25 KB