^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef __ASM_SH_PUSH_SWITCH_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define __ASM_SH_PUSH_SWITCH_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <linux/timer.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #include <linux/interrupt.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include <linux/workqueue.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <linux/platform_device.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) struct push_switch {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) /* switch state */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) unsigned int state:1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) /* debounce timer */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) struct timer_list debounce;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) /* workqueue */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) struct work_struct work;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) /* platform device, for workqueue handler */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) struct platform_device *pdev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) struct push_switch_platform_info {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) /* IRQ handler */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) irqreturn_t (*irq_handler)(int irq, void *data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) /* Special IRQ flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) unsigned int irq_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) /* Bit location of switch */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) unsigned int bit;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) /* Symbolic switch name */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) const char *name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #endif /* __ASM_SH_PUSH_SWITCH_H */