sensors_ariesve: gp2a_proximity: Fix unbalanced enable for proximity IRQ

This commit fix the following reported issue:

WARNING: at kernel/irq/manage.c:428 enable_irq+0x3c/0x74()
Unbalanced enable for IRQ 246
Modules linked in: dhd cifs [last unloaded: dhd]
[<c00133dc>] (unwind_backtrace+0x0/0xf4) from [<c00a3648>] (warn_slowpath_fmt+0x5c/0x74)
[<c00a3648>] (warn_slowpath_fmt+0x5c/0x74) from [<c00f9ae8>] (enable_irq+0x3c/0x74)
[<c00f9ae8>] (enable_irq+0x3c/0x74) from [<c04f4d70>] (proximity_enable_store+0x174/0x1b0)
[<c04f4d70>] (proximity_enable_store+0x174/0x1b0) from [<c01aebd8>] (sysfs_write_file+0x15c/0x18c)
[<c01aebd8>] (sysfs_write_file+0x15c/0x18c) from [<c01508c0>] (vfs_write+0x9c/0x148)
[<c01508c0>] (vfs_write+0x9c/0x148) from [<c0150bbc>] (sys_write+0x38/0x78)
[<c0150bbc>] (sys_write+0x38/0x78) from [<c000df80>] (ret_fast_syscall+0x0/0x30)
misc: bln: New implementation and changes for BLNv10

This patch includes new implementations and changes for BLN module
to better manage existent features and provide additional in-kernel
features.

1) Add in-kernel management of notifications with static lights:
    Two new sysfs attributes allow to enable in-kernel notifications
    with static lights.
    Set "/sys/class/misc/backlightnotification/in_kernel_static" to 0
    if you want to disable this feature, otherwise set it to 1 to
    enable it, the default value is 0 (disabled).
    Set "/sys/class/misc/backlightnotification/static_maxtime" with the
    preferred lights timeout in seconds (from 1 to 3600 sec = 1 hour),
    the default value is 60 seconds = 1 minute.
2) Possibility to set separate intervals for blink ON and OFF transitions:
    Two new sysfs attributes allow to set separate intervals for blink
    ON and OFF transitions.
    Set "/sys/class/misc/backlightnotification/blink_interval_on" and
    "/sys/class/misc/backlightnotification/blink_interval_off" with the
    preferred interval in milliseconds for the related blink transition,
    the default value is 500 milliseconds.
    The attribute "/sys/class/misc/backlightnotification/blink_interval"
    is still provided to ensure compatibility with other apps, if set,
    both intervals for blink ON and OFF will be updated with the same
    provided value.
3) Possibility to set or not set static lights after the timeout of
   blinking lights:
    A new sysfs attribute allows to enable in-kernel notifications with
    static lights after the expiration of blinking timeout.
    Set "/sys/class/misc/backlightnotification/status_after_blinking"
    to 0 if you want to turn the lights off after blinking timeout,
    otherwise set it to 1 to turn the lights on, the default value is 0.
4) Better timeout management for in-kernel blinking lights
    The code to manage the timeout of blinking lights has been revised
    to use a more reliable comparison between jiffies times instead of a
    simple counter.
5) Use a dedicated workqueue for scheduled works for blinking and static
   lights instead of the shared workqueue
    By using a dedicated workqueue,  blinking and static lights operations
    are performed more efficiently without taking account of the various
    scheduled works from other drivers/processes.
6) Turn the lights off after system resume if a notification is ongoing
7) Remove duplicated calls to wakelock routines
8) Free up the reserved space when the module is removed
9) Some code cleanup, comments, copyright updates and other minor changes

Signed-off-by: Cristoforo Cataldo <cristoforo.cataldo@gmail.com>