summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Elder <elder@linaro.org>2015-05-07 13:00:21 -0500
committerGreg Kroah-Hartman <gregkh@google.com>2015-05-07 22:55:43 +0200
commit5c58640d8d66504c43c062e6e7d4ed0ade6bde9e (patch)
tree62a4a1e06c1c100bd8928c561816669ad93765c1
parent9ade6d312287fd1729a02e349f5f23483ffc4e1c (diff)
downloadop-kernel-dev-5c58640d8d66504c43c062e6e7d4ed0ade6bde9e.zip
op-kernel-dev-5c58640d8d66504c43c062e6e7d4ed0ade6bde9e.tar.gz
greybus: battery: use feature tag rather than kernel version
Conditionally define a new symbol DRIVER_OWNS_PSY_STRUCT, which is set in "kernel_ver.h" based on on the kernel version. Use it to distinguish code used for kernels that differ in whether a power supply structure is owned by the driver, or by the power supply core. Signed-off-by: Alex Elder <elder@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
-rw-r--r--drivers/staging/greybus/battery.c7
-rw-r--r--drivers/staging/greybus/kernel_ver.h7
2 files changed, 9 insertions, 5 deletions
diff --git a/drivers/staging/greybus/battery.c b/drivers/staging/greybus/battery.c
index c815338..aad1749 100644
--- a/drivers/staging/greybus/battery.c
+++ b/drivers/staging/greybus/battery.c
@@ -7,7 +7,6 @@
* Released under the GPLv2 only.
*/
-#include <linux/version.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/slab.h>
@@ -20,7 +19,7 @@ struct gb_battery {
* and new apis in the same driver for now, until this is merged
* upstream, when all of these version checks can be removed.
*/
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)
+#ifdef DRIVER_OWNS_PSY_STRUCT
struct power_supply bat;
#define to_gb_battery(x) container_of(x, struct gb_battery, bat)
#else
@@ -295,7 +294,7 @@ static enum power_supply_property battery_props[] = {
POWER_SUPPLY_PROP_VOLTAGE_NOW,
};
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)
+#ifdef DRIVER_OWNS_PSY_STRUCT
static int init_and_register(struct gb_connection *connection,
struct gb_battery *gb)
{
@@ -362,7 +361,7 @@ static void gb_battery_connection_exit(struct gb_connection *connection)
{
struct gb_battery *gb = connection->private;
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)
+#ifdef DRIVER_OWNS_PSY_STRUCT
power_supply_unregister(&gb->bat);
#else
power_supply_unregister(gb->bat);
diff --git a/drivers/staging/greybus/kernel_ver.h b/drivers/staging/greybus/kernel_ver.h
index e63d6cb..8b8e712 100644
--- a/drivers/staging/greybus/kernel_ver.h
+++ b/drivers/staging/greybus/kernel_ver.h
@@ -15,6 +15,12 @@
#define __GREYBUS_KERNEL_VER_H
#include <linux/kernel.h>
+#include <linux/version.h>
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)
+/* Commit: 297d716 power_supply: Change ownership from driver to core */
+#define DRIVER_OWNS_PSY_STRUCT
+#endif
#ifndef __ATTR_WO
#define __ATTR_WO(_name) { \
@@ -57,7 +63,6 @@
* 3.17, which they explicitly changed in the 3.17 kernel. Consistency is
* overrated.
*/
-#include <linux/version.h>
#include <linux/gpio.h>
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0)
OpenPOWER on IntegriCloud