Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 492301fb authored by Larry Finger's avatar Larry Finger Committed by John W. Linville
Browse files

rfkill: Fix broken rfkill LED in 2.6.30-rc1



The rfkill system fails to issue a LED trigger event when the rfkill state
changes.

Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 13790728
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ static void update_rfkill_state(struct rfkill *rfkill)
		}
		mutex_unlock(&rfkill->mutex);
	}
	rfkill_led_trigger(rfkill, rfkill->state);
}

/**
@@ -136,8 +137,9 @@ static int rfkill_toggle_radio(struct rfkill *rfkill,
	oldstate = rfkill->state;

	if (rfkill->get_state && !force &&
	    !rfkill->get_state(rfkill->data, &newstate))
	    !rfkill->get_state(rfkill->data, &newstate)) {
		rfkill->state = newstate;
	}

	switch (state) {
	case RFKILL_STATE_HARD_BLOCKED:
@@ -172,6 +174,7 @@ static int rfkill_toggle_radio(struct rfkill *rfkill,
	if (force || rfkill->state != oldstate)
		rfkill_uevent(rfkill);

	rfkill_led_trigger(rfkill, rfkill->state);
	return retval;
}

@@ -204,6 +207,7 @@ static void __rfkill_switch_all(const enum rfkill_type type,
			mutex_lock(&rfkill->mutex);
			rfkill_toggle_radio(rfkill, state, 0);
			mutex_unlock(&rfkill->mutex);
			rfkill_led_trigger(rfkill, rfkill->state);
		}
	}
}
@@ -256,6 +260,7 @@ void rfkill_epo(void)
				RFKILL_STATE_SOFT_BLOCKED;
	}
	mutex_unlock(&rfkill_global_mutex);
	rfkill_led_trigger(rfkill, rfkill->state);
}
EXPORT_SYMBOL_GPL(rfkill_epo);

@@ -358,6 +363,7 @@ int rfkill_force_state(struct rfkill *rfkill, enum rfkill_state state)
		rfkill_uevent(rfkill);

	mutex_unlock(&rfkill->mutex);
	rfkill_led_trigger(rfkill, rfkill->state);

	return 0;
}
@@ -520,6 +526,7 @@ static int rfkill_resume(struct device *dev)
				1);

		mutex_unlock(&rfkill->mutex);
		rfkill_led_trigger(rfkill, rfkill->state);
	}

	return 0;