rfkill - RF switch subsystem support
====================================

1 Implementation details
2 Driver support
3 Userspace support

===============================================================================
1: Implementation details

The rfkill switch subsystem exists to add a generic interface to circuitry that
can enable or disable the RF output of a radio *transmitter* of any type.

When a rfkill switch is in the RFKILL_STATE_ON, the radio transmitter is
*enabled*.  When the rfkill switch is in the RFKILL_STATE_OFF, the radio
transmitter is *disabled*.

The rfkill switch subsystem offers support for keys often found on laptops
to enable wireless devices like WiFi and Bluetooth.

This is done by providing the user 3 possibilities:
 1 - The rfkill system handles all events; userspace is not aware of events.
 2 - The rfkill system handles all events; userspace is informed about the events.
 3 - The rfkill system does not handle events; userspace handles all events.

The buttons to enable and disable the wireless radios are important in
situations where the user is for example using his laptop on a location where
wireless radios _must_ be disabled (e.g. airplanes).
Because of this requirement, userspace support for the keys should not be
made mandatory. Because userspace might want to perform some additional smarter
tasks when the key is pressed, rfkill still provides userspace the possibility
to take over the task to handle the key events.

The system inside the kernel has been split into 2 separate sections:
	1 - RFKILL
	2 - RFKILL_INPUT

The first option enables rfkill support and will make sure userspace will
be notified of any events through the input device. It also creates several
sysfs entries which can be used by userspace. See section "Userspace support".

The second option provides an rfkill input handler. This handler will
listen to all rfkill key events and will toggle the radio accordingly.
With this option enabled userspace could either do nothing or simply
perform monitoring tasks.

====================================
2: Driver support

To build a driver with rfkill subsystem support, the driver should
depend on the Kconfig symbol RFKILL; it should _not_ depend on
RKFILL_INPUT.

Unless key events trigger an interrupt to which the driver listens, polling
will be required to determine the key state changes. For this the input
layer providers the input-polldev handler.

A driver should implement a few steps to correctly make use of the
rfkill subsystem. First for non-polling drivers:

	- rfkill_allocate()
	- input_allocate_device()
	- rfkill_register()
	- input_register_device()

For polling drivers:

	- rfkill_allocate()
	- input_allocate_polled_device()
	- rfkill_register()
	- input_register_polled_device()

When a key event has been detected, the correct event should be
sent over the input device which has been registered by the driver.

====================================
3: Userspace support

For each key an input device will be created which will send out the correct
key event when the rfkill key has been pressed.

The following sysfs entries will be created:

	name: Name assigned by driver to this key (interface or driver name).
	type: Name of the key type ("wlan", "bluetooth", etc).
	state: Current state of the key. 1: On, 0: Off.
	claim: 1: Userspace handles events, 0: Kernel handles events

Both the "state" and "claim" entries are also writable. For the "state" entry
this means that when 1 or 0 is written all radios, not yet in the requested
state, will be will be toggled accordingly.
For the "claim" entry writing 1 to it means that the kernel no longer handles
key events even though RFKILL_INPUT input was enabled. When "claim" has been
set to 0, userspace should make sure that it listens for the input events or
check the sysfs "state" entry regularly to correctly perform the required
tasks when the rkfill key is pressed.
