1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef __NWBUTTON_H 3*4882a593Smuzhiyun #define __NWBUTTON_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun /* 6*4882a593Smuzhiyun * NetWinder Button Driver- 7*4882a593Smuzhiyun * Copyright (C) Alex Holden <alex@linuxhacker.org> 1998, 1999. 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #ifdef __NWBUTTON_C /* Actually compiling the driver itself */ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun /* Various defines: */ 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #define NUM_PRESSES_REBOOT 2 /* How many presses to activate shutdown */ 15*4882a593Smuzhiyun #define BUTTON_DELAY 30 /* How many jiffies for sequence to end */ 16*4882a593Smuzhiyun #define VERSION "0.3" /* Driver version number */ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun /* Structure definitions: */ 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun struct button_callback { 21*4882a593Smuzhiyun void (*callback) (void); 22*4882a593Smuzhiyun int count; 23*4882a593Smuzhiyun }; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun /* Function prototypes: */ 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun static void button_sequence_finished(struct timer_list *unused); 28*4882a593Smuzhiyun static irqreturn_t button_handler (int irq, void *dev_id); 29*4882a593Smuzhiyun int button_init (void); 30*4882a593Smuzhiyun int button_add_callback (void (*callback) (void), int count); 31*4882a593Smuzhiyun int button_del_callback (void (*callback) (void)); 32*4882a593Smuzhiyun static void button_consume_callbacks (int bpcount); 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun #else /* Not compiling the driver itself */ 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun extern int button_add_callback (void (*callback) (void), int count); 37*4882a593Smuzhiyun extern int button_del_callback (void (*callback) (void)); 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun #endif /* __NWBUTTON_C */ 40*4882a593Smuzhiyun #endif /* __NWBUTTON_H */ 41