diff options
| author | Alan Jenkins <alan-jenkins@tuffmail.co.uk> | 2009-06-16 09:54:04 -0400 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2009-06-19 11:50:18 -0400 |
| commit | 464902e812025792c9e33e19e1555c343672d5cf (patch) | |
| tree | cc243de464a7935291c52ac93d6bd0a24c6c08c5 /net/rfkill | |
| parent | 96e9cfeb9692b0bc6e03f9b6f9cb3c67a40b76d1 (diff) | |
rfkill: export persistent attribute in sysfs
This information allows userspace to implement a hybrid policy where
it can store the rfkill soft-blocked state in platform non-volatile
storage if available, and if not then file-based storage can be used.
Some users prefer platform non-volatile storage because of the behaviour
when dual-booting multiple versions of Linux, or if the rfkill setting
is changed in the BIOS setting screens, or if the BIOS responds to
wireless-toggle hotkeys itself before the relevant platform driver has
been loaded.
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 'net/rfkill')
| -rw-r--r-- | net/rfkill/core.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/net/rfkill/core.c b/net/rfkill/core.c index dcf8df7c573..79693fe2001 100644 --- a/net/rfkill/core.c +++ b/net/rfkill/core.c | |||
| @@ -610,6 +610,15 @@ static ssize_t rfkill_idx_show(struct device *dev, | |||
| 610 | return sprintf(buf, "%d\n", rfkill->idx); | 610 | return sprintf(buf, "%d\n", rfkill->idx); |
| 611 | } | 611 | } |
| 612 | 612 | ||
| 613 | static ssize_t rfkill_persistent_show(struct device *dev, | ||
| 614 | struct device_attribute *attr, | ||
| 615 | char *buf) | ||
| 616 | { | ||
| 617 | struct rfkill *rfkill = to_rfkill(dev); | ||
| 618 | |||
| 619 | return sprintf(buf, "%d\n", rfkill->persistent); | ||
| 620 | } | ||
| 621 | |||
| 613 | static u8 user_state_from_blocked(unsigned long state) | 622 | static u8 user_state_from_blocked(unsigned long state) |
| 614 | { | 623 | { |
| 615 | if (state & RFKILL_BLOCK_HW) | 624 | if (state & RFKILL_BLOCK_HW) |
| @@ -668,6 +677,7 @@ static struct device_attribute rfkill_dev_attrs[] = { | |||
| 668 | __ATTR(name, S_IRUGO, rfkill_name_show, NULL), | 677 | __ATTR(name, S_IRUGO, rfkill_name_show, NULL), |
| 669 | __ATTR(type, S_IRUGO, rfkill_type_show, NULL), | 678 | __ATTR(type, S_IRUGO, rfkill_type_show, NULL), |
| 670 | __ATTR(index, S_IRUGO, rfkill_idx_show, NULL), | 679 | __ATTR(index, S_IRUGO, rfkill_idx_show, NULL), |
| 680 | __ATTR(persistent, S_IRUGO, rfkill_persistent_show, NULL), | ||
| 671 | __ATTR(state, S_IRUGO|S_IWUSR, rfkill_state_show, rfkill_state_store), | 681 | __ATTR(state, S_IRUGO|S_IWUSR, rfkill_state_show, rfkill_state_store), |
| 672 | __ATTR(claim, S_IRUGO|S_IWUSR, rfkill_claim_show, rfkill_claim_store), | 682 | __ATTR(claim, S_IRUGO|S_IWUSR, rfkill_claim_show, rfkill_claim_store), |
| 673 | __ATTR_NULL | 683 | __ATTR_NULL |
