Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

rfkill: remove rfkill-regulator

There are no users of this ("vrfkill") in the tree, so it's just
dead code - remove it.

This also isn't really how rfkill is supposed to be used - it's
intended as a signalling mechanism to/from the device, which the
driver (and partially cfg80211) will handle - having a separate
rfkill instance for a regulator is confusing, the driver should
use the regulator instead to turn off the device when requested.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>

-214
-48
include/linux/rfkill-regulator.h
··· 1 - /* 2 - * rfkill-regulator.c - Regulator consumer driver for rfkill 3 - * 4 - * Copyright (C) 2009 Guiming Zhuo <gmzhuo@gmail.com> 5 - * Copyright (C) 2011 Antonio Ospite <ospite@studenti.unina.it> 6 - * 7 - * This program is free software; you can redistribute it and/or modify 8 - * it under the terms of the GNU General Public License version 2 as 9 - * published by the Free Software Foundation. 10 - * 11 - */ 12 - 13 - #ifndef __LINUX_RFKILL_REGULATOR_H 14 - #define __LINUX_RFKILL_REGULATOR_H 15 - 16 - /* 17 - * Use "vrfkill" as supply id when declaring the regulator consumer: 18 - * 19 - * static struct regulator_consumer_supply pcap_regulator_V6_consumers [] = { 20 - * { .dev_name = "rfkill-regulator.0", .supply = "vrfkill" }, 21 - * }; 22 - * 23 - * If you have several regulator driven rfkill, you can append a numerical id to 24 - * .dev_name as done above, and use the same id when declaring the platform 25 - * device: 26 - * 27 - * static struct rfkill_regulator_platform_data ezx_rfkill_bt_data = { 28 - * .name = "ezx-bluetooth", 29 - * .type = RFKILL_TYPE_BLUETOOTH, 30 - * }; 31 - * 32 - * static struct platform_device a910_rfkill = { 33 - * .name = "rfkill-regulator", 34 - * .id = 0, 35 - * .dev = { 36 - * .platform_data = &ezx_rfkill_bt_data, 37 - * }, 38 - * }; 39 - */ 40 - 41 - #include <linux/rfkill.h> 42 - 43 - struct rfkill_regulator_platform_data { 44 - char *name; /* the name for the rfkill switch */ 45 - enum rfkill_type type; /* the type as specified in rfkill.h */ 46 - }; 47 - 48 - #endif /* __LINUX_RFKILL_REGULATOR_H */
-11
net/rfkill/Kconfig
··· 23 23 depends on INPUT = y || RFKILL = INPUT 24 24 default y if !EXPERT 25 25 26 - config RFKILL_REGULATOR 27 - tristate "Generic rfkill regulator driver" 28 - depends on RFKILL || !RFKILL 29 - depends on REGULATOR 30 - help 31 - This options enable controlling radio transmitters connected to 32 - voltage regulator using the regulator framework. 33 - 34 - To compile this driver as a module, choose M here: the module will 35 - be called rfkill-regulator. 36 - 37 26 config RFKILL_GPIO 38 27 tristate "GPIO RFKILL driver" 39 28 depends on RFKILL
-1
net/rfkill/Makefile
··· 5 5 rfkill-y += core.o 6 6 rfkill-$(CONFIG_RFKILL_INPUT) += input.o 7 7 obj-$(CONFIG_RFKILL) += rfkill.o 8 - obj-$(CONFIG_RFKILL_REGULATOR) += rfkill-regulator.o 9 8 obj-$(CONFIG_RFKILL_GPIO) += rfkill-gpio.o
-154
net/rfkill/rfkill-regulator.c
··· 1 - /* 2 - * rfkill-regulator.c - Regulator consumer driver for rfkill 3 - * 4 - * Copyright (C) 2009 Guiming Zhuo <gmzhuo@gmail.com> 5 - * Copyright (C) 2011 Antonio Ospite <ospite@studenti.unina.it> 6 - * 7 - * Implementation inspired by leds-regulator driver. 8 - * 9 - * This program is free software; you can redistribute it and/or modify 10 - * it under the terms of the GNU General Public License version 2 as 11 - * published by the Free Software Foundation. 12 - * 13 - */ 14 - 15 - #include <linux/module.h> 16 - #include <linux/err.h> 17 - #include <linux/slab.h> 18 - #include <linux/platform_device.h> 19 - #include <linux/regulator/consumer.h> 20 - #include <linux/rfkill.h> 21 - #include <linux/rfkill-regulator.h> 22 - 23 - struct rfkill_regulator_data { 24 - struct rfkill *rf_kill; 25 - bool reg_enabled; 26 - 27 - struct regulator *vcc; 28 - }; 29 - 30 - static int rfkill_regulator_set_block(void *data, bool blocked) 31 - { 32 - struct rfkill_regulator_data *rfkill_data = data; 33 - int ret = 0; 34 - 35 - pr_debug("%s: blocked: %d\n", __func__, blocked); 36 - 37 - if (blocked) { 38 - if (rfkill_data->reg_enabled) { 39 - regulator_disable(rfkill_data->vcc); 40 - rfkill_data->reg_enabled = false; 41 - } 42 - } else { 43 - if (!rfkill_data->reg_enabled) { 44 - ret = regulator_enable(rfkill_data->vcc); 45 - if (!ret) 46 - rfkill_data->reg_enabled = true; 47 - } 48 - } 49 - 50 - pr_debug("%s: regulator_is_enabled after set_block: %d\n", __func__, 51 - regulator_is_enabled(rfkill_data->vcc)); 52 - 53 - return ret; 54 - } 55 - 56 - static struct rfkill_ops rfkill_regulator_ops = { 57 - .set_block = rfkill_regulator_set_block, 58 - }; 59 - 60 - static int rfkill_regulator_probe(struct platform_device *pdev) 61 - { 62 - struct rfkill_regulator_platform_data *pdata = pdev->dev.platform_data; 63 - struct rfkill_regulator_data *rfkill_data; 64 - struct regulator *vcc; 65 - struct rfkill *rf_kill; 66 - int ret = 0; 67 - 68 - if (pdata == NULL) { 69 - dev_err(&pdev->dev, "no platform data\n"); 70 - return -ENODEV; 71 - } 72 - 73 - if (pdata->name == NULL || pdata->type == 0) { 74 - dev_err(&pdev->dev, "invalid name or type in platform data\n"); 75 - return -EINVAL; 76 - } 77 - 78 - vcc = regulator_get_exclusive(&pdev->dev, "vrfkill"); 79 - if (IS_ERR(vcc)) { 80 - dev_err(&pdev->dev, "Cannot get vcc for %s\n", pdata->name); 81 - ret = PTR_ERR(vcc); 82 - goto out; 83 - } 84 - 85 - rfkill_data = kzalloc(sizeof(*rfkill_data), GFP_KERNEL); 86 - if (rfkill_data == NULL) { 87 - ret = -ENOMEM; 88 - goto err_data_alloc; 89 - } 90 - 91 - rf_kill = rfkill_alloc(pdata->name, &pdev->dev, 92 - pdata->type, 93 - &rfkill_regulator_ops, rfkill_data); 94 - if (rf_kill == NULL) { 95 - ret = -ENOMEM; 96 - goto err_rfkill_alloc; 97 - } 98 - 99 - if (regulator_is_enabled(vcc)) { 100 - dev_dbg(&pdev->dev, "Regulator already enabled\n"); 101 - rfkill_data->reg_enabled = true; 102 - } 103 - rfkill_data->vcc = vcc; 104 - rfkill_data->rf_kill = rf_kill; 105 - 106 - ret = rfkill_register(rf_kill); 107 - if (ret) { 108 - dev_err(&pdev->dev, "Cannot register rfkill device\n"); 109 - goto err_rfkill_register; 110 - } 111 - 112 - platform_set_drvdata(pdev, rfkill_data); 113 - dev_info(&pdev->dev, "%s initialized\n", pdata->name); 114 - 115 - return 0; 116 - 117 - err_rfkill_register: 118 - rfkill_destroy(rf_kill); 119 - err_rfkill_alloc: 120 - kfree(rfkill_data); 121 - err_data_alloc: 122 - regulator_put(vcc); 123 - out: 124 - return ret; 125 - } 126 - 127 - static int rfkill_regulator_remove(struct platform_device *pdev) 128 - { 129 - struct rfkill_regulator_data *rfkill_data = platform_get_drvdata(pdev); 130 - struct rfkill *rf_kill = rfkill_data->rf_kill; 131 - 132 - rfkill_unregister(rf_kill); 133 - rfkill_destroy(rf_kill); 134 - regulator_put(rfkill_data->vcc); 135 - kfree(rfkill_data); 136 - 137 - return 0; 138 - } 139 - 140 - static struct platform_driver rfkill_regulator_driver = { 141 - .probe = rfkill_regulator_probe, 142 - .remove = rfkill_regulator_remove, 143 - .driver = { 144 - .name = "rfkill-regulator", 145 - }, 146 - }; 147 - 148 - module_platform_driver(rfkill_regulator_driver); 149 - 150 - MODULE_AUTHOR("Guiming Zhuo <gmzhuo@gmail.com>"); 151 - MODULE_AUTHOR("Antonio Ospite <ospite@studenti.unina.it>"); 152 - MODULE_DESCRIPTION("Regulator consumer driver for rfkill"); 153 - MODULE_LICENSE("GPL"); 154 - MODULE_ALIAS("platform:rfkill-regulator");