diff options
author | Max Krummenacher <max.krummenacher@toradex.com> | 2015-12-27 13:53:50 +0100 |
---|---|---|
committer | Stefan Agner <stefan.agner@toradex.com> | 2016-03-08 10:23:00 -0800 |
commit | 9b680321787c09c00e13d6a3a9edeb16e6f27041 (patch) | |
tree | ec001a440d2e4267fdd0b56fb1576e13ed49d92d | |
parent | 0824a2b7aa7e1f7ea6accad280b6e4d8f1b9a3c9 (diff) |
chipidea: make usb charger optional
The USB charger functionality depends on functions provided by
CONFIG_POWER_SUPPLY but this dependency is not forced through Kconfig.
Don't compile the functionality in when CONFIG_POWER_SUPPLY is not set.
This fixes linker errors of not found symbols.
power_supply_changed
power_supply_register
power_supply_unregister
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
-rw-r--r-- | drivers/usb/chipidea/ci_hdrc_imx.c | 13 | ||||
-rw-r--r-- | drivers/usb/chipidea/usbmisc_imx.c | 12 |
2 files changed, 25 insertions, 0 deletions
diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c index dc7c9f14d364..ea8e2673879b 100644 --- a/drivers/usb/chipidea/ci_hdrc_imx.c +++ b/drivers/usb/chipidea/ci_hdrc_imx.c @@ -123,6 +123,7 @@ struct ci_hdrc_imx_data { const struct ci_hdrc_imx_platform_flag *data; }; +#ifdef CONFIG_POWER_SUPPLY static char *imx_usb_charger_supplied_to[] = { "imx_usb_charger", }; @@ -132,6 +133,7 @@ static enum power_supply_property imx_usb_charger_power_props[] = { POWER_SUPPLY_PROP_ONLINE, /* VBUS online */ POWER_SUPPLY_PROP_CURRENT_MAX, /* Maximum current in mA */ }; +#endif static inline bool is_imx6q_con(struct ci_hdrc_imx_data *imx_data) { @@ -318,6 +320,7 @@ static int ci_hdrc_imx_notify_event(struct ci_hdrc *ci, unsigned event) return ret; } +#ifdef CONFIG_POWER_SUPPLY static int imx_usb_charger_get_property(struct power_supply *psy, enum power_supply_property psp, union power_supply_propval *val) @@ -374,6 +377,7 @@ static int imx_usb_register_charger(struct usb_charger *charger, return power_supply_register(charger->dev, psy); } +#endif static int ci_hdrc_imx_probe(struct platform_device *pdev) { @@ -506,6 +510,7 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev) } if (of_find_property(np, "imx-usb-charger-detection", NULL)) { +#ifdef CONFIG_POWER_SUPPLY data->imx_usb_charger_detection = true; data->charger.dev = &pdev->dev; data->usbmisc_data->charger = &data->charger; @@ -516,6 +521,10 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev) if (!ret) dev_dbg(&pdev->dev, "USB Charger is created\n"); +#else + dev_err(&pdev->dev, + "USB Charger requires CONFIG_POWER_SUPPLY\n"); +#endif } ret = imx_usbmisc_init(data->usbmisc_data); @@ -569,8 +578,10 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev) disable_device: ci_hdrc_remove_device(data->ci_pdev); remove_charger: +#ifdef CONFIG_POWER_SUPPLY if (data->imx_usb_charger_detection) power_supply_unregister(&data->charger.psy); +#endif disable_hsic_regulator: if (data->hsic_pad_regulator) ret = regulator_disable(data->hsic_pad_regulator); @@ -592,8 +603,10 @@ static int ci_hdrc_imx_remove(struct platform_device *pdev) ci_hdrc_remove_device(data->ci_pdev); clk_disable_unprepare(data->clk); release_bus_freq(BUS_FREQ_HIGH); +#ifdef CONFIG_POWER_SUPPLY if (data->imx_usb_charger_detection) power_supply_unregister(&data->charger.psy); +#endif if (data->hsic_pad_regulator) regulator_disable(data->hsic_pad_regulator); diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index e768eb7b03fa..bd4117d2f4e7 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -805,6 +805,7 @@ static int usbmisc_term_select_override(struct imx_usbmisc_data *data, return 0; } +#ifdef CONFIG_POWER_SUPPLY /***************************************************************************/ /* imx usb charger detecton */ /***************************************************************************/ @@ -1099,6 +1100,7 @@ int imx7d_charger_secondary_detection(struct imx_usbmisc_data *data) return 0; } +#endif static const struct usbmisc_ops imx25_usbmisc_ops = { .init = usbmisc_imx25_init, @@ -1118,8 +1120,10 @@ static const struct usbmisc_ops imx6q_usbmisc_ops = { .init = usbmisc_imx6q_init, .hsic_set_connect = usbmisc_imx6_hsic_set_connect, .hsic_set_clk = usbmisc_imx6_hsic_set_clk, +#ifdef CONFIG_POWER_SUPPLY .charger_primary_detection = imx6_charger_primary_detection, .charger_secondary_detection = imx6_charger_secondary_detection, +#endif }; static const struct usbmisc_ops vf610_usbmisc_ops = { @@ -1132,8 +1136,10 @@ static const struct usbmisc_ops imx6sx_usbmisc_ops = { .power_lost_check = usbmisc_imx6sx_power_lost_check, .hsic_set_connect = usbmisc_imx6_hsic_set_connect, .hsic_set_clk = usbmisc_imx6_hsic_set_clk, +#ifdef CONFIG_POWER_SUPPLY .charger_primary_detection = imx6_charger_primary_detection, .charger_secondary_detection = imx6_charger_secondary_detection, +#endif }; static const struct usbmisc_ops imx7d_usbmisc_ops = { @@ -1148,8 +1154,10 @@ static const struct usbmisc_ops imx7d_usbmisc_ops = { .adp_sense_connection = usbmisc_otg_adp_sense_connection, .adp_attach_event = usbmisc_otg_adp_is_attach_event, .term_select_override = usbmisc_term_select_override, +#ifdef CONFIG_POWER_SUPPLY .charger_primary_detection = imx7d_charger_primary_detection, .charger_secondary_detection = imx7d_charger_secondary_detection, +#endif }; int imx_usbmisc_init(struct imx_usbmisc_data *data) @@ -1351,6 +1359,7 @@ EXPORT_SYMBOL_GPL(imx_usbmisc_term_select_override); int imx_usbmisc_charger_detection(struct imx_usbmisc_data *data, bool connect) { +#ifdef CONFIG_POWER_SUPPLY struct imx_usbmisc *usbmisc; struct usb_charger *charger = data->charger; int ret = 0; @@ -1383,6 +1392,9 @@ int imx_usbmisc_charger_detection(struct imx_usbmisc_data *data, bool connect) } mutex_unlock(&charger->lock); return ret; +#else + return -ENOTSUPP; +#endif } EXPORT_SYMBOL_GPL(imx_usbmisc_charger_detection); |