git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rfkill: rewrite
[safe/jmp/linux-2.6]
/
arch
/
arm
/
mach-pxa
/
tosa-bt.c
diff --git
a/arch/arm/mach-pxa/tosa-bt.c
b/arch/arm/mach-pxa/tosa-bt.c
index
bde42aa
..
c31e601
100644
(file)
--- a/
arch/arm/mach-pxa/tosa-bt.c
+++ b/
arch/arm/mach-pxa/tosa-bt.c
@@
-35,21
+35,25
@@
static void tosa_bt_off(struct tosa_bt_data *data)
gpio_set_value(data->gpio_reset, 0);
}
gpio_set_value(data->gpio_reset, 0);
}
-static int tosa_bt_
toggle_radio(void *data, enum rfkill_state state
)
+static int tosa_bt_
set_block(void *data, bool blocked
)
{
{
- pr_info("BT_RADIO going: %s\n",
- state == RFKILL_STATE_UNBLOCKED ? "on" : "off");
+ pr_info("BT_RADIO going: %s\n", blocked ? "off" : "on");
- if (
state == RFKILL_STATE_UNBLOCKED
) {
+ if (
!blocked
) {
pr_info("TOSA_BT: going ON\n");
tosa_bt_on(data);
} else {
pr_info("TOSA_BT: going OFF\n");
tosa_bt_off(data);
}
pr_info("TOSA_BT: going ON\n");
tosa_bt_on(data);
} else {
pr_info("TOSA_BT: going OFF\n");
tosa_bt_off(data);
}
+
return 0;
}
return 0;
}
+static const struct rfkill_ops tosa_bt_rfkill_ops = {
+ .set_block = tosa_bt_set_block,
+};
+
static int tosa_bt_probe(struct platform_device *dev)
{
int rc;
static int tosa_bt_probe(struct platform_device *dev)
{
int rc;
@@
-70,18
+74,14
@@
static int tosa_bt_probe(struct platform_device *dev)
if (rc)
goto err_pwr_dir;
if (rc)
goto err_pwr_dir;
- rfk = rfkill_allocate(&dev->dev, RFKILL_TYPE_BLUETOOTH);
+ rfk = rfkill_alloc("tosa-bt", &dev->dev, RFKILL_TYPE_BLUETOOTH,
+ &tosa_bt_rfkill_ops, data);
if (!rfk) {
rc = -ENOMEM;
goto err_rfk_alloc;
}
if (!rfk) {
rc = -ENOMEM;
goto err_rfk_alloc;
}
- rfk->name = "tosa-bt";
- rfk->toggle_radio = tosa_bt_toggle_radio;
- rfk->data = data;
-#ifdef CONFIG_RFKILL_LEDS
- rfk->led_trigger.name = "tosa-bt";
-#endif
+ rfkill_set_led_trigger_name(rfk, "tosa-bt");
rc = rfkill_register(rfk);
if (rc)
rc = rfkill_register(rfk);
if (rc)
@@
-92,9
+92,7
@@
static int tosa_bt_probe(struct platform_device *dev)
return 0;
err_rfkill:
return 0;
err_rfkill:
- if (rfk)
- rfkill_free(rfk);
- rfk = NULL;
+ rfkill_destroy(rfk);
err_rfk_alloc:
tosa_bt_off(data);
err_pwr_dir:
err_rfk_alloc:
tosa_bt_off(data);
err_pwr_dir:
@@
-113,8
+111,10
@@
static int __devexit tosa_bt_remove(struct platform_device *dev)
platform_set_drvdata(dev, NULL);
platform_set_drvdata(dev, NULL);
- if (rfk)
+ if (rfk)
{
rfkill_unregister(rfk);
rfkill_unregister(rfk);
+ rfkill_destroy(rfk);
+ }
rfk = NULL;
tosa_bt_off(data);
rfk = NULL;
tosa_bt_off(data);