• Tomas Janousek's avatar
    rtc-dev: stop periodic interrupts on device release · 5cdc98b8
    Tomas Janousek authored
    Solves http://bugzilla.kernel.org/show_bug.cgi?id=11127
    
    The old rtc.c driver did it and some drivers (like rtc-sh) do it in their
    release function, though they should not -- because they should provide
    the irq_set_state op and the rtc framework itself should care about it.
    This patch makes it do so.
    
    I am aware that some drivers, like rtc-sh, handle userspace PIE sets in
    their ioctl op (instead of having the framework call the op), exporting
    the irq_set_state op at the same time.  The logic in rtc_irq_set_state
    should make sure it doesn't matter and the driver should not need to care
    stopping periodic interrupts in its release routine any more.
    
    The correct way, in my opinion, should be this:
    1) The driver provides the irq_set_state op and does not care closing the
       interrupts in its release op.
    2) If the driver does not provide the op and handles PIE in the ioctl op, it's
       reponsible for closing them in its release op.
    3) Something similar for other IRQs, like UIE -- if there's no in-kernel API
       like irq_set_state, handle it in ioctl and release ops. The framework will
       be responsible either for everything or for nothing. (This will probably
       change later.)
    Signed-off-by: default avatarTomas Janousek <tomi@nomi.cz>
    Acked-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Acked-by: default avatarAlessandro Zummo <a.zummo@towertech.it>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5cdc98b8
rtc-dev.c 11.4 KB