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>
This commit is contained in:

committed by
John W. Linville

parent
8f77f3849c
commit
b3fa1329ea
@@ -988,7 +988,6 @@ static struct rfkill *acer_rfkill_register(struct device *dev,
|
||||
char *name, u32 cap)
|
||||
{
|
||||
int err;
|
||||
u32 state;
|
||||
struct rfkill *rfkill_dev;
|
||||
|
||||
rfkill_dev = rfkill_alloc(name, dev, type,
|
||||
@@ -996,8 +995,6 @@ static struct rfkill *acer_rfkill_register(struct device *dev,
|
||||
(void *)(unsigned long)cap);
|
||||
if (!rfkill_dev)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
get_u32(&state, cap);
|
||||
rfkill_set_sw_state(rfkill_dev, !state);
|
||||
|
||||
err = rfkill_register(rfkill_dev);
|
||||
if (err) {
|
||||
|
@@ -675,8 +675,8 @@ static int eeepc_hotk_add(struct acpi_device *device)
|
||||
if (!ehotk->eeepc_wlan_rfkill)
|
||||
goto wlan_fail;
|
||||
|
||||
rfkill_set_global_sw_state(RFKILL_TYPE_WLAN,
|
||||
get_acpi(CM_ASL_WLAN) != 1);
|
||||
rfkill_set_sw_state(ehotk->eeepc_wlan_rfkill,
|
||||
get_acpi(CM_ASL_WLAN) != 1);
|
||||
result = rfkill_register(ehotk->eeepc_wlan_rfkill);
|
||||
if (result)
|
||||
goto wlan_fail;
|
||||
@@ -693,8 +693,8 @@ static int eeepc_hotk_add(struct acpi_device *device)
|
||||
if (!ehotk->eeepc_bluetooth_rfkill)
|
||||
goto bluetooth_fail;
|
||||
|
||||
rfkill_set_global_sw_state(RFKILL_TYPE_BLUETOOTH,
|
||||
get_acpi(CM_ASL_BLUETOOTH) != 1);
|
||||
rfkill_set_sw_state(ehotk->eeepc_bluetooth_rfkill,
|
||||
get_acpi(CM_ASL_BLUETOOTH) != 1);
|
||||
result = rfkill_register(ehotk->eeepc_bluetooth_rfkill);
|
||||
if (result)
|
||||
goto bluetooth_fail;
|
||||
|
@@ -422,7 +422,6 @@ static int __init hp_wmi_bios_setup(struct platform_device *device)
|
||||
RFKILL_TYPE_WLAN,
|
||||
&hp_wmi_rfkill_ops,
|
||||
(void *) 0);
|
||||
rfkill_set_sw_state(wifi_rfkill, hp_wmi_wifi_state());
|
||||
err = rfkill_register(wifi_rfkill);
|
||||
if (err)
|
||||
goto register_wifi_error;
|
||||
@@ -433,8 +432,6 @@ static int __init hp_wmi_bios_setup(struct platform_device *device)
|
||||
RFKILL_TYPE_BLUETOOTH,
|
||||
&hp_wmi_rfkill_ops,
|
||||
(void *) 1);
|
||||
rfkill_set_sw_state(bluetooth_rfkill,
|
||||
hp_wmi_bluetooth_state());
|
||||
err = rfkill_register(bluetooth_rfkill);
|
||||
if (err)
|
||||
goto register_bluetooth_error;
|
||||
@@ -445,7 +442,6 @@ static int __init hp_wmi_bios_setup(struct platform_device *device)
|
||||
RFKILL_TYPE_WWAN,
|
||||
&hp_wmi_rfkill_ops,
|
||||
(void *) 2);
|
||||
rfkill_set_sw_state(wwan_rfkill, hp_wmi_wwan_state());
|
||||
err = rfkill_register(wwan_rfkill);
|
||||
if (err)
|
||||
goto register_wwan_err;
|
||||
|
@@ -1168,21 +1168,6 @@ static int __init tpacpi_new_rfkill(const enum tpacpi_rfk_id id,
|
||||
|
||||
BUG_ON(id >= TPACPI_RFK_SW_MAX || tpacpi_rfkill_switches[id]);
|
||||
|
||||
initial_sw_status = (tp_rfkops->get_status)();
|
||||
if (initial_sw_status < 0) {
|
||||
printk(TPACPI_ERR
|
||||
"failed to read initial state for %s, error %d; "
|
||||
"will turn radio off\n", name, initial_sw_status);
|
||||
} else {
|
||||
initial_sw_state = (initial_sw_status == TPACPI_RFK_RADIO_OFF);
|
||||
if (set_default) {
|
||||
/* try to set the initial state as the default for the
|
||||
* rfkill type, since we ask the firmware to preserve
|
||||
* it across S5 in NVRAM */
|
||||
rfkill_set_global_sw_state(rfktype, initial_sw_state);
|
||||
}
|
||||
}
|
||||
|
||||
atp_rfk = kzalloc(sizeof(struct tpacpi_rfk), GFP_KERNEL);
|
||||
if (atp_rfk)
|
||||
atp_rfk->rfkill = rfkill_alloc(name,
|
||||
@@ -1200,8 +1185,20 @@ static int __init tpacpi_new_rfkill(const enum tpacpi_rfk_id id,
|
||||
atp_rfk->id = id;
|
||||
atp_rfk->ops = tp_rfkops;
|
||||
|
||||
rfkill_set_states(atp_rfk->rfkill, initial_sw_state,
|
||||
tpacpi_rfk_check_hwblock_state());
|
||||
initial_sw_status = (tp_rfkops->get_status)();
|
||||
if (initial_sw_status < 0) {
|
||||
printk(TPACPI_ERR
|
||||
"failed to read initial state for %s, error %d\n",
|
||||
name, initial_sw_status);
|
||||
} else {
|
||||
initial_sw_state = (initial_sw_status == TPACPI_RFK_RADIO_OFF);
|
||||
if (set_default) {
|
||||
/* try to keep the initial state, since we ask the
|
||||
* firmware to preserve it across S5 in NVRAM */
|
||||
rfkill_set_sw_state(atp_rfk->rfkill, initial_sw_state);
|
||||
}
|
||||
}
|
||||
rfkill_set_hw_state(atp_rfk->rfkill, tpacpi_rfk_check_hwblock_state());
|
||||
|
||||
res = rfkill_register(atp_rfk->rfkill);
|
||||
if (res < 0) {
|
||||
|
Reference in New Issue
Block a user