b43legacy: Use input-polldev for the rfkill switch

This removes the direct call to rfkill on an rfkill event
and replaces it with an input device. This way userspace is also
notified about the event.

This patch is the port to b43legacy of a patch for b43 by Michael Buesch
<mb@bu3sch.de>.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Larry Finger
2007-10-10 22:48:17 -05:00
committed by David S. Miller
parent 93bb7f3a7b
commit 6be50837e3
4 changed files with 112 additions and 106 deletions

View File

@@ -7,21 +7,27 @@ struct b43legacy_wldev;
#include <linux/rfkill.h>
#include <linux/workqueue.h>
#include <linux/input-polldev.h>
struct b43legacy_rfkill {
/* The RFKILL subsystem data structure */
struct rfkill *rfkill;
/* The poll device for the RFKILL input button */
struct input_polled_dev *poll_dev;
/* The unique name of this rfkill switch */
char name[32];
/* Workqueue for asynchronous notification. */
struct work_struct notify_work;
};
/* All the init functions return void, because we are not interested
* in failing the b43 init process when rfkill init failed. */
void b43legacy_rfkill_alloc(struct b43legacy_wldev *dev);
void b43legacy_rfkill_free(struct b43legacy_wldev *dev);
void b43legacy_rfkill_init(struct b43legacy_wldev *dev);
void b43legacy_rfkill_exit(struct b43legacy_wldev *dev);
void b43legacy_rfkill_toggled(struct b43legacy_wldev *dev, bool on);
char *b43legacy_rfkill_led_name(struct b43legacy_wldev *dev);
char * b43legacy_rfkill_led_name(struct b43legacy_wldev *dev);
#else /* CONFIG_B43LEGACY_RFKILL */
@@ -31,17 +37,19 @@ struct b43legacy_rfkill {
/* empty */
};
static inline void b43legacy_rfkill_alloc(struct b43legacy_wldev *dev)
{
}
static inline void b43legacy_rfkill_free(struct b43legacy_wldev *dev)
{
}
static inline void b43legacy_rfkill_init(struct b43legacy_wldev *dev)
{
}
static inline void b43legacy_rfkill_exit(struct b43legacy_wldev *dev)
{
}
static inline void b43legacy_rfkill_toggled(struct b43legacy_wldev *dev,
bool on)
{
}
static inline char *b43legacy_rfkill_led_name(struct b43legacy_wldev *dev)
static inline char * b43legacy_rfkill_led_name(struct b43legacy_wldev *dev)
{
return NULL;
}