diff options
author | Alan Jenkins <alan-jenkins@tuffmail.co.uk> | 2009-06-08 08:27:27 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-06-10 13:28:37 -0400 |
commit | b3fa1329eaf2a7b97124dacf5b663fd51346ac19 (patch) | |
tree | 93fd6a76af00568e8317e3e4f084135379ec6c25 /drivers/platform/x86/thinkpad_acpi.c | |
parent | 8f77f3849cc3ae2d6df9301785a3d316ea7d7ee1 (diff) |
rfkill: remove set_global_sw_state
rfkill_set_global_sw_state() (previously rfkill_set_default()) will no
longer be exported by the rewritten rfkill core.
Instead, platform drivers which can provide persistent soft-rfkill state
across power-down/reboot should indicate their initial state by calling
rfkill_set_sw_state() before registration. Otherwise, they will be
initialized to a default value during registration by a set_block call.
We remove existing calls to rfkill_set_sw_state() which happen before
registration, since these had no effect in the old model. If these
drivers do have persistent state, the calls can be put back (subject
to testing :-). This affects hp-wmi and acer-wmi.
Drivers with persistent state will affect the global state only if
rfkill-input is enabled. This is required, otherwise booting with
wireless soft-blocked and pressing the wireless-toggle key once would
have no apparent effect. This special case will be removed in future
along with rfkill-input, in favour of a more flexible userspace daemon
(see Documentation/feature-removal-schedule.txt).
Now rfkill_global_states[n].def is only used to preserve global states
over EPO, it is renamed to ".sav".
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Acked-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/platform/x86/thinkpad_acpi.c')
-rw-r--r-- | drivers/platform/x86/thinkpad_acpi.c | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c index cfcafa4e9473..86e958539f46 100644 --- a/drivers/platform/x86/thinkpad_acpi.c +++ b/drivers/platform/x86/thinkpad_acpi.c | |||
@@ -1168,21 +1168,6 @@ static int __init tpacpi_new_rfkill(const enum tpacpi_rfk_id id, | |||
1168 | 1168 | ||
1169 | BUG_ON(id >= TPACPI_RFK_SW_MAX || tpacpi_rfkill_switches[id]); | 1169 | BUG_ON(id >= TPACPI_RFK_SW_MAX || tpacpi_rfkill_switches[id]); |
1170 | 1170 | ||
1171 | initial_sw_status = (tp_rfkops->get_status)(); | ||
1172 | if (initial_sw_status < 0) { | ||
1173 | printk(TPACPI_ERR | ||
1174 | "failed to read initial state for %s, error %d; " | ||
1175 | "will turn radio off\n", name, initial_sw_status); | ||
1176 | } else { | ||
1177 | initial_sw_state = (initial_sw_status == TPACPI_RFK_RADIO_OFF); | ||
1178 | if (set_default) { | ||
1179 | /* try to set the initial state as the default for the | ||
1180 | * rfkill type, since we ask the firmware to preserve | ||
1181 | * it across S5 in NVRAM */ | ||
1182 | rfkill_set_global_sw_state(rfktype, initial_sw_state); | ||
1183 | } | ||
1184 | } | ||
1185 | |||
1186 | atp_rfk = kzalloc(sizeof(struct tpacpi_rfk), GFP_KERNEL); | 1171 | atp_rfk = kzalloc(sizeof(struct tpacpi_rfk), GFP_KERNEL); |
1187 | if (atp_rfk) | 1172 | if (atp_rfk) |
1188 | atp_rfk->rfkill = rfkill_alloc(name, | 1173 | atp_rfk->rfkill = rfkill_alloc(name, |
@@ -1200,8 +1185,20 @@ static int __init tpacpi_new_rfkill(const enum tpacpi_rfk_id id, | |||
1200 | atp_rfk->id = id; | 1185 | atp_rfk->id = id; |
1201 | atp_rfk->ops = tp_rfkops; | 1186 | atp_rfk->ops = tp_rfkops; |
1202 | 1187 | ||
1203 | rfkill_set_states(atp_rfk->rfkill, initial_sw_state, | 1188 | initial_sw_status = (tp_rfkops->get_status)(); |
1204 | tpacpi_rfk_check_hwblock_state()); | 1189 | if (initial_sw_status < 0) { |
1190 | printk(TPACPI_ERR | ||
1191 | "failed to read initial state for %s, error %d\n", | ||
1192 | name, initial_sw_status); | ||
1193 | } else { | ||
1194 | initial_sw_state = (initial_sw_status == TPACPI_RFK_RADIO_OFF); | ||
1195 | if (set_default) { | ||
1196 | /* try to keep the initial state, since we ask the | ||
1197 | * firmware to preserve it across S5 in NVRAM */ | ||
1198 | rfkill_set_sw_state(atp_rfk->rfkill, initial_sw_state); | ||
1199 | } | ||
1200 | } | ||
1201 | rfkill_set_hw_state(atp_rfk->rfkill, tpacpi_rfk_check_hwblock_state()); | ||
1205 | 1202 | ||
1206 | res = rfkill_register(atp_rfk->rfkill); | 1203 | res = rfkill_register(atp_rfk->rfkill); |
1207 | if (res < 0) { | 1204 | if (res < 0) { |