diff options
Diffstat (limited to 'include/linux/rfkill.h')
-rw-r--r-- | include/linux/rfkill.h | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/include/linux/rfkill.h b/include/linux/rfkill.h index 98667becdee4..c5f6e54ec6ae 100644 --- a/include/linux/rfkill.h +++ b/include/linux/rfkill.h | |||
@@ -46,16 +46,25 @@ enum rfkill_type { | |||
46 | }; | 46 | }; |
47 | 47 | ||
48 | enum rfkill_state { | 48 | enum rfkill_state { |
49 | RFKILL_STATE_OFF = 0, /* Radio output blocked */ | 49 | RFKILL_STATE_SOFT_BLOCKED = 0, /* Radio output blocked */ |
50 | RFKILL_STATE_ON = 1, /* Radio output active */ | 50 | RFKILL_STATE_UNBLOCKED = 1, /* Radio output allowed */ |
51 | RFKILL_STATE_HARD_BLOCKED = 2, /* Output blocked, non-overrideable */ | ||
51 | }; | 52 | }; |
52 | 53 | ||
54 | /* | ||
55 | * These are DEPRECATED, drivers using them should be verified to | ||
56 | * comply with the rfkill usage guidelines in Documentation/rfkill.txt | ||
57 | * and then converted to use the new names for rfkill_state | ||
58 | */ | ||
59 | #define RFKILL_STATE_OFF RFKILL_STATE_SOFT_BLOCKED | ||
60 | #define RFKILL_STATE_ON RFKILL_STATE_UNBLOCKED | ||
61 | |||
53 | /** | 62 | /** |
54 | * struct rfkill - rfkill control structure. | 63 | * struct rfkill - rfkill control structure. |
55 | * @name: Name of the switch. | 64 | * @name: Name of the switch. |
56 | * @type: Radio type which the button controls, the value stored | 65 | * @type: Radio type which the button controls, the value stored |
57 | * here should be a value from enum rfkill_type. | 66 | * here should be a value from enum rfkill_type. |
58 | * @state: State of the switch, "ON" means radio can operate. | 67 | * @state: State of the switch, "UNBLOCKED" means radio can operate. |
59 | * @user_claim_unsupported: Whether the hardware supports exclusive | 68 | * @user_claim_unsupported: Whether the hardware supports exclusive |
60 | * RF-kill control by userspace. Set this before registering. | 69 | * RF-kill control by userspace. Set this before registering. |
61 | * @user_claim: Set when the switch is controlled exlusively by userspace. | 70 | * @user_claim: Set when the switch is controlled exlusively by userspace. |
@@ -63,8 +72,12 @@ enum rfkill_state { | |||
63 | * @data: Pointer to the RF button drivers private data which will be | 72 | * @data: Pointer to the RF button drivers private data which will be |
64 | * passed along when toggling radio state. | 73 | * passed along when toggling radio state. |
65 | * @toggle_radio(): Mandatory handler to control state of the radio. | 74 | * @toggle_radio(): Mandatory handler to control state of the radio. |
75 | * only RFKILL_STATE_SOFT_BLOCKED and RFKILL_STATE_UNBLOCKED are | ||
76 | * valid parameters. | ||
66 | * @get_state(): handler to read current radio state from hardware, | 77 | * @get_state(): handler to read current radio state from hardware, |
67 | * may be called from atomic context, should return 0 on success. | 78 | * may be called from atomic context, should return 0 on success. |
79 | * Either this handler OR judicious use of rfkill_force_state() is | ||
80 | * MANDATORY for any driver capable of RFKILL_STATE_HARD_BLOCKED. | ||
68 | * @led_trigger: A LED trigger for this button's LED. | 81 | * @led_trigger: A LED trigger for this button's LED. |
69 | * @dev: Device structure integrating the switch into device tree. | 82 | * @dev: Device structure integrating the switch into device tree. |
70 | * @node: Used to place switch into list of all switches known to the | 83 | * @node: Used to place switch into list of all switches known to the |
@@ -103,6 +116,19 @@ void rfkill_unregister(struct rfkill *rfkill); | |||
103 | int rfkill_force_state(struct rfkill *rfkill, enum rfkill_state state); | 116 | int rfkill_force_state(struct rfkill *rfkill, enum rfkill_state state); |
104 | 117 | ||
105 | /** | 118 | /** |
119 | * rfkill_state_complement - return complementar state | ||
120 | * @state: state to return the complement of | ||
121 | * | ||
122 | * Returns RFKILL_STATE_SOFT_BLOCKED if @state is RFKILL_STATE_UNBLOCKED, | ||
123 | * returns RFKILL_STATE_UNBLOCKED otherwise. | ||
124 | */ | ||
125 | static inline enum rfkill_state rfkill_state_complement(enum rfkill_state state) | ||
126 | { | ||
127 | return (state == RFKILL_STATE_UNBLOCKED) ? | ||
128 | RFKILL_STATE_SOFT_BLOCKED : RFKILL_STATE_UNBLOCKED; | ||
129 | } | ||
130 | |||
131 | /** | ||
106 | * rfkill_get_led_name - Get the LED trigger name for the button's LED. | 132 | * rfkill_get_led_name - Get the LED trigger name for the button's LED. |
107 | * This function might return a NULL pointer if registering of the | 133 | * This function might return a NULL pointer if registering of the |
108 | * LED trigger failed. | 134 | * LED trigger failed. |