Loading drivers/soc/qcom/fsa4480-i2c.c +23 −3 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. /* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. */ #include <linux/kernel.h> Loading Loading @@ -228,8 +228,11 @@ EXPORT_SYMBOL(fsa4480_reg_notifier); int fsa4480_unreg_notifier(struct notifier_block *nb, struct device_node *node) { int rc = 0; struct i2c_client *client = of_find_i2c_device_by_node(node); struct fsa4480_priv *fsa_priv; struct device *dev; union power_supply_propval mode; if (!client) return -EINVAL; Loading @@ -237,10 +240,27 @@ int fsa4480_unreg_notifier(struct notifier_block *nb, fsa_priv = (struct fsa4480_priv *)i2c_get_clientdata(client); if (!fsa_priv) return -EINVAL; dev = fsa_priv->dev; if (!dev) return -EINVAL; mutex_lock(&fsa_priv->notification_lock); /* get latest mode within locked context */ rc = power_supply_get_property(fsa_priv->usb_psy, POWER_SUPPLY_PROP_TYPEC_MODE, &mode); if (rc) { dev_dbg(dev, "%s: Unable to read USB TYPEC_MODE: %d\n", __func__, rc); goto done; } /* Do not reset switch settings for usb digital hs */ if (mode.intval != POWER_SUPPLY_TYPEC_SINK) fsa4480_usbc_update_settings(fsa_priv, 0x18, 0x98); return blocking_notifier_chain_unregister rc = blocking_notifier_chain_unregister (&fsa_priv->fsa4480_notifier, nb); done: mutex_unlock(&fsa_priv->notification_lock); return rc; } EXPORT_SYMBOL(fsa4480_unreg_notifier); Loading Loading
drivers/soc/qcom/fsa4480-i2c.c +23 −3 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. /* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. */ #include <linux/kernel.h> Loading Loading @@ -228,8 +228,11 @@ EXPORT_SYMBOL(fsa4480_reg_notifier); int fsa4480_unreg_notifier(struct notifier_block *nb, struct device_node *node) { int rc = 0; struct i2c_client *client = of_find_i2c_device_by_node(node); struct fsa4480_priv *fsa_priv; struct device *dev; union power_supply_propval mode; if (!client) return -EINVAL; Loading @@ -237,10 +240,27 @@ int fsa4480_unreg_notifier(struct notifier_block *nb, fsa_priv = (struct fsa4480_priv *)i2c_get_clientdata(client); if (!fsa_priv) return -EINVAL; dev = fsa_priv->dev; if (!dev) return -EINVAL; mutex_lock(&fsa_priv->notification_lock); /* get latest mode within locked context */ rc = power_supply_get_property(fsa_priv->usb_psy, POWER_SUPPLY_PROP_TYPEC_MODE, &mode); if (rc) { dev_dbg(dev, "%s: Unable to read USB TYPEC_MODE: %d\n", __func__, rc); goto done; } /* Do not reset switch settings for usb digital hs */ if (mode.intval != POWER_SUPPLY_TYPEC_SINK) fsa4480_usbc_update_settings(fsa_priv, 0x18, 0x98); return blocking_notifier_chain_unregister rc = blocking_notifier_chain_unregister (&fsa_priv->fsa4480_notifier, nb); done: mutex_unlock(&fsa_priv->notification_lock); return rc; } EXPORT_SYMBOL(fsa4480_unreg_notifier); Loading