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