| From 811e26d8f942680e9f9faed1b6bb91bd8702cdcc Mon Sep 17 00:00:00 2001 |
| From: Chanwoo Choi <cw00.choi@samsung.com> |
| Date: Thu, 21 Sep 2017 12:11:24 +0900 |
| Subject: [PATCH 0116/1795] extcon: Split out extcon header file for consumer |
| and provider device |
| |
| The extcon has two type of extcon devices as following. |
| - 'extcon provider deivce' adds new extcon device and detect the |
| state/properties of external connector. Also, it notifies the |
| state/properties to the extcon consumer device. |
| - 'extcon consumer device' gets the change state/properties |
| from extcon provider device. |
| Prior to that, include/linux/extcon.h contains all exported API for |
| both provider and consumer device driver. To clarify the meaning of |
| header file and to remove the wrong use-case on consumer device, |
| this patch separates into extcon.h and extcon-provider.h. |
| |
| [Description for include/linux/{extcon.h|extcon-provider.h}] |
| - extcon.h includes the extcon API and data structure for extcon consumer |
| device driver. This header file contains the following APIs: |
| : Register/unregister the notifier to catch the change of extcon device |
| : Get the extcon device instance |
| : Get the extcon device name |
| : Get the state of each external connector |
| : Get the property value of each external connector |
| : Get the property capability of each external connector |
| |
| - extcon-provider.h includes the extcon API and data structure for extcon |
| provider device driver. This header file contains the following APIs: |
| : Include 'include/linux/extcon.h' |
| : Allocate the memory for extcon device instance |
| : Register/unregister extcon device |
| : Set the state of each external connector |
| : Set the property value of each external connector |
| : Set the property capability of each external connector |
| |
| Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> |
| Acked-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk> |
| Acked-by: Chen-Yu Tsai <wens@csie.org> |
| Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com> |
| Acked-by: Lee Jones <lee.jones@linaro.org> |
| Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com> |
| Acked-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> |
| Acked-by: Kishon Vijay Abraham I <kishon@ti.com> |
| (cherry picked from commit 176aa36012135d172394a928a03fb03dfecd83f9) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| --- |
| drivers/extcon/extcon-adc-jack.c | 2 +- |
| drivers/extcon/extcon-arizona.c | 2 +- |
| drivers/extcon/extcon-axp288.c | 2 +- |
| drivers/extcon/extcon-gpio.c | 2 +- |
| drivers/extcon/extcon-intel-cht-wc.c | 2 +- |
| drivers/extcon/extcon-intel-int3496.c | 2 +- |
| drivers/extcon/extcon-max14577.c | 2 +- |
| drivers/extcon/extcon-max3355.c | 2 +- |
| drivers/extcon/extcon-max77693.c | 2 +- |
| drivers/extcon/extcon-max77843.c | 2 +- |
| drivers/extcon/extcon-max8997.c | 2 +- |
| drivers/extcon/extcon-qcom-spmi-misc.c | 2 +- |
| drivers/extcon/extcon-rt8973a.c | 2 +- |
| drivers/extcon/extcon-sm5502.c | 2 +- |
| drivers/extcon/extcon-usb-gpio.c | 2 +- |
| drivers/extcon/extcon-usbc-cros-ec.c | 2 +- |
| drivers/extcon/extcon.h | 2 +- |
| drivers/phy/allwinner/phy-sun4i-usb.c | 2 +- |
| drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c | 2 +- |
| drivers/phy/renesas/phy-rcar-gen3-usb2.c | 2 +- |
| drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 2 +- |
| drivers/power/supply/qcom_smbb.c | 2 +- |
| drivers/usb/gadget/udc/renesas_usb3.c | 2 +- |
| drivers/usb/phy/phy-tahvo.c | 2 +- |
| include/linux/extcon-provider.h | 142 ++++++++++++++++++ |
| include/linux/extcon.h | 109 +------------- |
| include/linux/mfd/palmas.h | 2 +- |
| 27 files changed, 172 insertions(+), 129 deletions(-) |
| create mode 100644 include/linux/extcon-provider.h |
| |
| diff --git a/drivers/extcon/extcon-adc-jack.c b/drivers/extcon/extcon-adc-jack.c |
| index 6f6537ab0a79..3877d86c746a 100644 |
| --- a/drivers/extcon/extcon-adc-jack.c |
| +++ b/drivers/extcon/extcon-adc-jack.c |
| @@ -26,7 +26,7 @@ |
| #include <linux/workqueue.h> |
| #include <linux/iio/consumer.h> |
| #include <linux/extcon/extcon-adc-jack.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| |
| /** |
| * struct adc_jack_data - internal data for adc_jack device driver |
| diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c |
| index f84da4a17724..da0e9bc4262f 100644 |
| --- a/drivers/extcon/extcon-arizona.c |
| +++ b/drivers/extcon/extcon-arizona.c |
| @@ -27,7 +27,7 @@ |
| #include <linux/pm_runtime.h> |
| #include <linux/property.h> |
| #include <linux/regulator/consumer.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| |
| #include <sound/soc.h> |
| |
| diff --git a/drivers/extcon/extcon-axp288.c b/drivers/extcon/extcon-axp288.c |
| index f4fd03e58e37..981fba56bc18 100644 |
| --- a/drivers/extcon/extcon-axp288.c |
| +++ b/drivers/extcon/extcon-axp288.c |
| @@ -22,7 +22,7 @@ |
| #include <linux/platform_device.h> |
| #include <linux/property.h> |
| #include <linux/notifier.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/regmap.h> |
| #include <linux/gpio.h> |
| #include <linux/gpio/consumer.h> |
| diff --git a/drivers/extcon/extcon-gpio.c b/drivers/extcon/extcon-gpio.c |
| index ebed22f22d75..ab770adcca7e 100644 |
| --- a/drivers/extcon/extcon-gpio.c |
| +++ b/drivers/extcon/extcon-gpio.c |
| @@ -17,7 +17,7 @@ |
| * GNU General Public License for more details. |
| */ |
| |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/extcon/extcon-gpio.h> |
| #include <linux/gpio.h> |
| #include <linux/gpio/consumer.h> |
| diff --git a/drivers/extcon/extcon-intel-cht-wc.c b/drivers/extcon/extcon-intel-cht-wc.c |
| index 60baaf693103..b7e9ea377d70 100644 |
| --- a/drivers/extcon/extcon-intel-cht-wc.c |
| +++ b/drivers/extcon/extcon-intel-cht-wc.c |
| @@ -15,7 +15,7 @@ |
| * more details. |
| */ |
| |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/interrupt.h> |
| #include <linux/kernel.h> |
| #include <linux/mfd/intel_soc_pmic.h> |
| diff --git a/drivers/extcon/extcon-intel-int3496.c b/drivers/extcon/extcon-intel-int3496.c |
| index a6661097b2f9..191e99f06a9a 100644 |
| --- a/drivers/extcon/extcon-intel-int3496.c |
| +++ b/drivers/extcon/extcon-intel-int3496.c |
| @@ -19,7 +19,7 @@ |
| */ |
| |
| #include <linux/acpi.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/gpio.h> |
| #include <linux/interrupt.h> |
| #include <linux/module.h> |
| diff --git a/drivers/extcon/extcon-max14577.c b/drivers/extcon/extcon-max14577.c |
| index f6414b7fa5bc..6c2c9996eb71 100644 |
| --- a/drivers/extcon/extcon-max14577.c |
| +++ b/drivers/extcon/extcon-max14577.c |
| @@ -23,7 +23,7 @@ |
| #include <linux/platform_device.h> |
| #include <linux/mfd/max14577.h> |
| #include <linux/mfd/max14577-private.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| |
| #define DELAY_MS_DEFAULT 17000 /* unit: millisecond */ |
| |
| diff --git a/drivers/extcon/extcon-max3355.c b/drivers/extcon/extcon-max3355.c |
| index 533e16a952b8..0aa410836f4e 100644 |
| --- a/drivers/extcon/extcon-max3355.c |
| +++ b/drivers/extcon/extcon-max3355.c |
| @@ -9,7 +9,7 @@ |
| * may be copied, distributed, and modified under those terms. |
| */ |
| |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/gpio.h> |
| #include <linux/gpio/consumer.h> |
| #include <linux/interrupt.h> |
| diff --git a/drivers/extcon/extcon-max77693.c b/drivers/extcon/extcon-max77693.c |
| index 7a5856809047..643411066ad9 100644 |
| --- a/drivers/extcon/extcon-max77693.c |
| +++ b/drivers/extcon/extcon-max77693.c |
| @@ -26,7 +26,7 @@ |
| #include <linux/mfd/max77693.h> |
| #include <linux/mfd/max77693-common.h> |
| #include <linux/mfd/max77693-private.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/regmap.h> |
| #include <linux/irqdomain.h> |
| |
| diff --git a/drivers/extcon/extcon-max77843.c b/drivers/extcon/extcon-max77843.c |
| index 6e722d552cf1..28f251ff0fa2 100644 |
| --- a/drivers/extcon/extcon-max77843.c |
| +++ b/drivers/extcon/extcon-max77843.c |
| @@ -11,7 +11,7 @@ |
| * (at your option) any later version. |
| */ |
| |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/i2c.h> |
| #include <linux/interrupt.h> |
| #include <linux/kernel.h> |
| diff --git a/drivers/extcon/extcon-max8997.c b/drivers/extcon/extcon-max8997.c |
| index 4a0612fb9c07..8152790d72e1 100644 |
| --- a/drivers/extcon/extcon-max8997.c |
| +++ b/drivers/extcon/extcon-max8997.c |
| @@ -25,7 +25,7 @@ |
| #include <linux/kobject.h> |
| #include <linux/mfd/max8997.h> |
| #include <linux/mfd/max8997-private.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/irqdomain.h> |
| |
| #define DEV_NAME "max8997-muic" |
| diff --git a/drivers/extcon/extcon-qcom-spmi-misc.c b/drivers/extcon/extcon-qcom-spmi-misc.c |
| index b8cde096a808..660bbf163bf5 100644 |
| --- a/drivers/extcon/extcon-qcom-spmi-misc.c |
| +++ b/drivers/extcon/extcon-qcom-spmi-misc.c |
| @@ -15,7 +15,7 @@ |
| * GNU General Public License for more details. |
| */ |
| |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/init.h> |
| #include <linux/interrupt.h> |
| #include <linux/kernel.h> |
| diff --git a/drivers/extcon/extcon-rt8973a.c b/drivers/extcon/extcon-rt8973a.c |
| index eaa355e7d9e4..e059bd5f2041 100644 |
| --- a/drivers/extcon/extcon-rt8973a.c |
| +++ b/drivers/extcon/extcon-rt8973a.c |
| @@ -20,7 +20,7 @@ |
| #include <linux/platform_device.h> |
| #include <linux/regmap.h> |
| #include <linux/slab.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| |
| #include "extcon-rt8973a.h" |
| |
| diff --git a/drivers/extcon/extcon-sm5502.c b/drivers/extcon/extcon-sm5502.c |
| index 106ef0297b53..0cfb5a3efdf6 100644 |
| --- a/drivers/extcon/extcon-sm5502.c |
| +++ b/drivers/extcon/extcon-sm5502.c |
| @@ -19,7 +19,7 @@ |
| #include <linux/platform_device.h> |
| #include <linux/regmap.h> |
| #include <linux/slab.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| |
| #include "extcon-sm5502.h" |
| |
| diff --git a/drivers/extcon/extcon-usb-gpio.c b/drivers/extcon/extcon-usb-gpio.c |
| index 9c925b05b7aa..53762864a9f7 100644 |
| --- a/drivers/extcon/extcon-usb-gpio.c |
| +++ b/drivers/extcon/extcon-usb-gpio.c |
| @@ -14,7 +14,7 @@ |
| * GNU General Public License for more details. |
| */ |
| |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/gpio.h> |
| #include <linux/gpio/consumer.h> |
| #include <linux/init.h> |
| diff --git a/drivers/extcon/extcon-usbc-cros-ec.c b/drivers/extcon/extcon-usbc-cros-ec.c |
| index 598956f1dcae..6187f731b29d 100644 |
| --- a/drivers/extcon/extcon-usbc-cros-ec.c |
| +++ b/drivers/extcon/extcon-usbc-cros-ec.c |
| @@ -14,7 +14,7 @@ |
| * GNU General Public License for more details. |
| */ |
| |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/kernel.h> |
| #include <linux/mfd/cros_ec.h> |
| #include <linux/module.h> |
| diff --git a/drivers/extcon/extcon.h b/drivers/extcon/extcon.h |
| index 61358479bfcc..93b5e0306966 100644 |
| --- a/drivers/extcon/extcon.h |
| +++ b/drivers/extcon/extcon.h |
| @@ -2,7 +2,7 @@ |
| #ifndef __LINUX_EXTCON_INTERNAL_H__ |
| #define __LINUX_EXTCON_INTERNAL_H__ |
| |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| |
| /** |
| * struct extcon_dev - An extcon device represents one external connector. |
| diff --git a/drivers/phy/allwinner/phy-sun4i-usb.c b/drivers/phy/allwinner/phy-sun4i-usb.c |
| index afedb8cd1990..263e2562de3b 100644 |
| --- a/drivers/phy/allwinner/phy-sun4i-usb.c |
| +++ b/drivers/phy/allwinner/phy-sun4i-usb.c |
| @@ -24,7 +24,7 @@ |
| #include <linux/clk.h> |
| #include <linux/delay.h> |
| #include <linux/err.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/io.h> |
| #include <linux/interrupt.h> |
| #include <linux/kernel.h> |
| diff --git a/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c b/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c |
| index d099a0c8cee5..7ceea5ae2704 100644 |
| --- a/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c |
| +++ b/drivers/phy/broadcom/phy-bcm-ns2-usbdrd.c |
| @@ -12,7 +12,7 @@ |
| */ |
| |
| #include <linux/delay.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/gpio.h> |
| #include <linux/gpio/consumer.h> |
| #include <linux/init.h> |
| diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c |
| index 54c34298a000..b33e2994ccce 100644 |
| --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c |
| +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c |
| @@ -12,7 +12,7 @@ |
| * published by the Free Software Foundation. |
| */ |
| |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/interrupt.h> |
| #include <linux/io.h> |
| #include <linux/module.h> |
| diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c |
| index ee7ce5ee53f9..5049dac79bd0 100644 |
| --- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c |
| +++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c |
| @@ -17,7 +17,7 @@ |
| #include <linux/clk.h> |
| #include <linux/clk-provider.h> |
| #include <linux/delay.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/interrupt.h> |
| #include <linux/io.h> |
| #include <linux/gpio/consumer.h> |
| diff --git a/drivers/power/supply/qcom_smbb.c b/drivers/power/supply/qcom_smbb.c |
| index f6a0d245731d..11de691b9a71 100644 |
| --- a/drivers/power/supply/qcom_smbb.c |
| +++ b/drivers/power/supply/qcom_smbb.c |
| @@ -34,7 +34,7 @@ |
| #include <linux/power_supply.h> |
| #include <linux/regmap.h> |
| #include <linux/slab.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/regulator/driver.h> |
| |
| #define SMBB_CHG_VMAX 0x040 |
| diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c |
| index c12a1a6554ba..8de7d72b130b 100644 |
| --- a/drivers/usb/gadget/udc/renesas_usb3.c |
| +++ b/drivers/usb/gadget/udc/renesas_usb3.c |
| @@ -12,7 +12,7 @@ |
| #include <linux/delay.h> |
| #include <linux/dma-mapping.h> |
| #include <linux/err.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/interrupt.h> |
| #include <linux/io.h> |
| #include <linux/module.h> |
| diff --git a/drivers/usb/phy/phy-tahvo.c b/drivers/usb/phy/phy-tahvo.c |
| index 1ec00eae339a..bf2c364867a0 100644 |
| --- a/drivers/usb/phy/phy-tahvo.c |
| +++ b/drivers/usb/phy/phy-tahvo.c |
| @@ -23,7 +23,7 @@ |
| #include <linux/io.h> |
| #include <linux/clk.h> |
| #include <linux/usb.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/kernel.h> |
| #include <linux/module.h> |
| #include <linux/usb/otg.h> |
| diff --git a/include/linux/extcon-provider.h b/include/linux/extcon-provider.h |
| new file mode 100644 |
| index 000000000000..2feca5881fa7 |
| --- /dev/null |
| +++ b/include/linux/extcon-provider.h |
| @@ -0,0 +1,142 @@ |
| +/* |
| + * External Connector (extcon) framework |
| + * - linux/include/linux/extcon-provider.h for extcon provider device driver. |
| + * |
| + * Copyright (C) 2017 Samsung Electronics |
| + * Author: Chanwoo Choi <cw00.choi@samsung.com> |
| + * |
| + * This software is licensed under the terms of the GNU General Public |
| + * License version 2, as published by the Free Software Foundation, and |
| + * may be copied, distributed, and modified under those terms. |
| + * |
| + * This program is distributed in the hope that it will be useful, |
| + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| + * GNU General Public License for more details. |
| + */ |
| + |
| +#ifndef __LINUX_EXTCON_PROVIDER_H__ |
| +#define __LINUX_EXTCON_PROVIDER_H__ |
| + |
| +#include <linux/extcon.h> |
| + |
| +struct extcon_dev; |
| + |
| +#if IS_ENABLED(CONFIG_EXTCON) |
| + |
| +/* Following APIs register/unregister the extcon device. */ |
| +extern int extcon_dev_register(struct extcon_dev *edev); |
| +extern void extcon_dev_unregister(struct extcon_dev *edev); |
| +extern int devm_extcon_dev_register(struct device *dev, |
| + struct extcon_dev *edev); |
| +extern void devm_extcon_dev_unregister(struct device *dev, |
| + struct extcon_dev *edev); |
| + |
| +/* Following APIs allocate/free the memory of the extcon device. */ |
| +extern struct extcon_dev *extcon_dev_allocate(const unsigned int *cable); |
| +extern void extcon_dev_free(struct extcon_dev *edev); |
| +extern struct extcon_dev *devm_extcon_dev_allocate(struct device *dev, |
| + const unsigned int *cable); |
| +extern void devm_extcon_dev_free(struct device *dev, struct extcon_dev *edev); |
| + |
| +/* Synchronize the state and property value for each external connector. */ |
| +extern int extcon_sync(struct extcon_dev *edev, unsigned int id); |
| + |
| +/* |
| + * Following APIs set the connected state of each external connector. |
| + * The 'id' argument indicates the defined external connector. |
| + */ |
| +extern int extcon_set_state(struct extcon_dev *edev, unsigned int id, |
| + bool state); |
| +extern int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, |
| + bool state); |
| + |
| +/* |
| + * Following APIs set the property of each external connector. |
| + * The 'id' argument indicates the defined external connector |
| + * and the 'prop' indicates the extcon property. |
| + * |
| + * And extcon_set_property_capability() set the capability of the property |
| + * for each external connector. They are used to set the capability of the |
| + * property of each external connector based on the id and property. |
| + */ |
| +extern int extcon_set_property(struct extcon_dev *edev, unsigned int id, |
| + unsigned int prop, |
| + union extcon_property_value prop_val); |
| +extern int extcon_set_property_sync(struct extcon_dev *edev, unsigned int id, |
| + unsigned int prop, |
| + union extcon_property_value prop_val); |
| +extern int extcon_set_property_capability(struct extcon_dev *edev, |
| + unsigned int id, unsigned int prop); |
| + |
| +#else /* CONFIG_EXTCON */ |
| +static inline int extcon_dev_register(struct extcon_dev *edev) |
| +{ |
| + return 0; |
| +} |
| + |
| +static inline void extcon_dev_unregister(struct extcon_dev *edev) { } |
| + |
| +static inline int devm_extcon_dev_register(struct device *dev, |
| + struct extcon_dev *edev) |
| +{ |
| + return -EINVAL; |
| +} |
| + |
| +static inline void devm_extcon_dev_unregister(struct device *dev, |
| + struct extcon_dev *edev) { } |
| + |
| +static inline struct extcon_dev *extcon_dev_allocate(const unsigned int *cable) |
| +{ |
| + return ERR_PTR(-ENOSYS); |
| +} |
| + |
| +static inline void extcon_dev_free(struct extcon_dev *edev) { } |
| + |
| +static inline struct extcon_dev *devm_extcon_dev_allocate(struct device *dev, |
| + const unsigned int *cable) |
| +{ |
| + return ERR_PTR(-ENOSYS); |
| +} |
| + |
| +static inline void devm_extcon_dev_free(struct extcon_dev *edev) { } |
| + |
| + |
| +static inline int extcon_set_state(struct extcon_dev *edev, unsigned int id, |
| + bool state) |
| +{ |
| + return 0; |
| +} |
| + |
| +static inline int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, |
| + bool state) |
| +{ |
| + return 0; |
| +} |
| + |
| +static inline int extcon_sync(struct extcon_dev *edev, unsigned int id) |
| +{ |
| + return 0; |
| +} |
| + |
| +static inline int extcon_set_property(struct extcon_dev *edev, unsigned int id, |
| + unsigned int prop, |
| + union extcon_property_value prop_val) |
| +{ |
| + return 0; |
| +} |
| + |
| +static inline int extcon_set_property_sync(struct extcon_dev *edev, |
| + unsigned int id, unsigned int prop, |
| + union extcon_property_value prop_val) |
| +{ |
| + return 0; |
| +} |
| + |
| +static inline int extcon_set_property_capability(struct extcon_dev *edev, |
| + unsigned int id, unsigned int prop) |
| +{ |
| + return 0; |
| +} |
| +#endif /* CONFIG_EXTCON */ |
| +#endif /* __LINUX_EXTCON_PROVIDER_H__ */ |
| diff --git a/include/linux/extcon.h b/include/linux/extcon.h |
| index 744d60ca80c3..6d94e82c8ad9 100644 |
| --- a/include/linux/extcon.h |
| +++ b/include/linux/extcon.h |
| @@ -1,5 +1,6 @@ |
| /* |
| * External Connector (extcon) framework |
| + * - linux/include/linux/extcon.h for extcon consumer device driver. |
| * |
| * Copyright (C) 2015 Samsung Electronics |
| * Author: Chanwoo Choi <cw00.choi@samsung.com> |
| @@ -170,61 +171,29 @@ union extcon_property_value { |
| int intval; /* type : integer (intval) */ |
| }; |
| |
| -struct extcon_cable; |
| struct extcon_dev; |
| |
| #if IS_ENABLED(CONFIG_EXTCON) |
| - |
| -/* Following APIs register/unregister the extcon device. */ |
| -extern int extcon_dev_register(struct extcon_dev *edev); |
| -extern void extcon_dev_unregister(struct extcon_dev *edev); |
| -extern int devm_extcon_dev_register(struct device *dev, |
| - struct extcon_dev *edev); |
| -extern void devm_extcon_dev_unregister(struct device *dev, |
| - struct extcon_dev *edev); |
| - |
| -/* Following APIs allocate/free the memory of the extcon device. */ |
| -extern struct extcon_dev *extcon_dev_allocate(const unsigned int *cable); |
| -extern void extcon_dev_free(struct extcon_dev *edev); |
| -extern struct extcon_dev *devm_extcon_dev_allocate(struct device *dev, |
| - const unsigned int *cable); |
| -extern void devm_extcon_dev_free(struct device *dev, struct extcon_dev *edev); |
| - |
| -/* Synchronize the state and property value for each external connector. */ |
| -extern int extcon_sync(struct extcon_dev *edev, unsigned int id); |
| - |
| /* |
| - * Following APIs get/set the connected state of each external connector. |
| + * Following APIs get the connected state of each external connector. |
| * The 'id' argument indicates the defined external connector. |
| */ |
| extern int extcon_get_state(struct extcon_dev *edev, unsigned int id); |
| -extern int extcon_set_state(struct extcon_dev *edev, unsigned int id, |
| - bool state); |
| -extern int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, |
| - bool state); |
| |
| /* |
| - * Following APIs get/set the property of each external connector. |
| + * Following APIs get the property of each external connector. |
| * The 'id' argument indicates the defined external connector |
| * and the 'prop' indicates the extcon property. |
| * |
| - * And extcon_get/set_property_capability() set the capability of the property |
| - * for each external connector. They are used to set the capability of the |
| + * And extcon_get_property_capability() get the capability of the property |
| + * for each external connector. They are used to get the capability of the |
| * property of each external connector based on the id and property. |
| */ |
| extern int extcon_get_property(struct extcon_dev *edev, unsigned int id, |
| unsigned int prop, |
| union extcon_property_value *prop_val); |
| -extern int extcon_set_property(struct extcon_dev *edev, unsigned int id, |
| - unsigned int prop, |
| - union extcon_property_value prop_val); |
| -extern int extcon_set_property_sync(struct extcon_dev *edev, unsigned int id, |
| - unsigned int prop, |
| - union extcon_property_value prop_val); |
| extern int extcon_get_property_capability(struct extcon_dev *edev, |
| unsigned int id, unsigned int prop); |
| -extern int extcon_set_property_capability(struct extcon_dev *edev, |
| - unsigned int id, unsigned int prop); |
| |
| /* |
| * Following APIs register the notifier block in order to detect |
| @@ -268,79 +237,17 @@ extern struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev, |
| extern const char *extcon_get_edev_name(struct extcon_dev *edev); |
| |
| #else /* CONFIG_EXTCON */ |
| -static inline int extcon_dev_register(struct extcon_dev *edev) |
| -{ |
| - return 0; |
| -} |
| - |
| -static inline void extcon_dev_unregister(struct extcon_dev *edev) { } |
| - |
| -static inline int devm_extcon_dev_register(struct device *dev, |
| - struct extcon_dev *edev) |
| -{ |
| - return -EINVAL; |
| -} |
| - |
| -static inline void devm_extcon_dev_unregister(struct device *dev, |
| - struct extcon_dev *edev) { } |
| - |
| -static inline struct extcon_dev *extcon_dev_allocate(const unsigned int *cable) |
| -{ |
| - return ERR_PTR(-ENOSYS); |
| -} |
| - |
| -static inline void extcon_dev_free(struct extcon_dev *edev) { } |
| - |
| -static inline struct extcon_dev *devm_extcon_dev_allocate(struct device *dev, |
| - const unsigned int *cable) |
| -{ |
| - return ERR_PTR(-ENOSYS); |
| -} |
| - |
| -static inline void devm_extcon_dev_free(struct extcon_dev *edev) { } |
| - |
| - |
| static inline int extcon_get_state(struct extcon_dev *edev, unsigned int id) |
| { |
| return 0; |
| } |
| |
| -static inline int extcon_set_state(struct extcon_dev *edev, unsigned int id, |
| - bool state) |
| -{ |
| - return 0; |
| -} |
| - |
| -static inline int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, |
| - bool state) |
| -{ |
| - return 0; |
| -} |
| - |
| -static inline int extcon_sync(struct extcon_dev *edev, unsigned int id) |
| -{ |
| - return 0; |
| -} |
| - |
| static inline int extcon_get_property(struct extcon_dev *edev, unsigned int id, |
| unsigned int prop, |
| union extcon_property_value *prop_val) |
| { |
| return 0; |
| } |
| -static inline int extcon_set_property(struct extcon_dev *edev, unsigned int id, |
| - unsigned int prop, |
| - union extcon_property_value prop_val) |
| -{ |
| - return 0; |
| -} |
| - |
| -static inline int extcon_set_property_sync(struct extcon_dev *edev, |
| - unsigned int id, unsigned int prop, |
| - union extcon_property_value prop_val) |
| -{ |
| - return 0; |
| -} |
| |
| static inline int extcon_get_property_capability(struct extcon_dev *edev, |
| unsigned int id, unsigned int prop) |
| @@ -348,12 +255,6 @@ static inline int extcon_get_property_capability(struct extcon_dev *edev, |
| return 0; |
| } |
| |
| -static inline int extcon_set_property_capability(struct extcon_dev *edev, |
| - unsigned int id, unsigned int prop) |
| -{ |
| - return 0; |
| -} |
| - |
| static inline int extcon_register_notifier(struct extcon_dev *edev, |
| unsigned int id, struct notifier_block *nb) |
| { |
| diff --git a/include/linux/mfd/palmas.h b/include/linux/mfd/palmas.h |
| index 6dec43826303..3c8568aa82a5 100644 |
| --- a/include/linux/mfd/palmas.h |
| +++ b/include/linux/mfd/palmas.h |
| @@ -20,7 +20,7 @@ |
| #include <linux/leds.h> |
| #include <linux/regmap.h> |
| #include <linux/regulator/driver.h> |
| -#include <linux/extcon.h> |
| +#include <linux/extcon-provider.h> |
| #include <linux/of_gpio.h> |
| #include <linux/usb/phy_companion.h> |
| |
| -- |
| 2.19.0 |
| |