+++ /dev/null
-From 29c281b0c3ac3ab2bcefdf4e2bec2578cf0cf112 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 20 Sep 2018 14:23:47 +0300
-Subject: usb: typec: Group all TCPCI/TCPM code together
-
-From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
-
-[ Upstream commit ae8a2ca8a2215c7e31e6d874f7303801bb15fbbc ]
-
-Moving all the drivers that depend on the Port Controller
-Manager under a new directory drivers/usb/typec/tcpm/ and
-making Guenter Roeck the designated reviewer of that code.
-
-Acked-by: Guenter Roeck <linux@roeck-us.net>
-Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Stable-dep-of: 0384e87e3fec ("usb: typec: tcpci: fix of node refcount leak in tcpci_register_port()")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- MAINTAINERS | 6 +++
- drivers/usb/typec/Kconfig | 45 +---------------
- drivers/usb/typec/Makefile | 6 +--
- drivers/usb/typec/fusb302/Kconfig | 7 ---
- drivers/usb/typec/fusb302/Makefile | 2 -
- drivers/usb/typec/tcpm/Kconfig | 52 +++++++++++++++++++
- drivers/usb/typec/tcpm/Makefile | 7 +++
- drivers/usb/typec/{fusb302 => tcpm}/fusb302.c | 0
- .../usb/typec/{fusb302 => tcpm}/fusb302_reg.h | 0
- drivers/usb/typec/{ => tcpm}/tcpci.c | 0
- drivers/usb/typec/{ => tcpm}/tcpci.h | 0
- drivers/usb/typec/{ => tcpm}/tcpci_rt1711h.c | 0
- drivers/usb/typec/{ => tcpm}/tcpm.c | 0
- .../usb/typec/{typec_wcove.c => tcpm/wcove.c} | 0
- 14 files changed, 67 insertions(+), 58 deletions(-)
- delete mode 100644 drivers/usb/typec/fusb302/Kconfig
- delete mode 100644 drivers/usb/typec/fusb302/Makefile
- create mode 100644 drivers/usb/typec/tcpm/Kconfig
- create mode 100644 drivers/usb/typec/tcpm/Makefile
- rename drivers/usb/typec/{fusb302 => tcpm}/fusb302.c (100%)
- rename drivers/usb/typec/{fusb302 => tcpm}/fusb302_reg.h (100%)
- rename drivers/usb/typec/{ => tcpm}/tcpci.c (100%)
- rename drivers/usb/typec/{ => tcpm}/tcpci.h (100%)
- rename drivers/usb/typec/{ => tcpm}/tcpci_rt1711h.c (100%)
- rename drivers/usb/typec/{ => tcpm}/tcpm.c (100%)
- rename drivers/usb/typec/{typec_wcove.c => tcpm/wcove.c} (100%)
-
-diff --git a/MAINTAINERS b/MAINTAINERS
-index af0f322cf2f7..4a2f805dee95 100644
---- a/MAINTAINERS
-+++ b/MAINTAINERS
-@@ -15314,6 +15314,12 @@ F: Documentation/driver-api/usb/typec_bus.rst
- F: drivers/usb/typec/altmodes/
- F: include/linux/usb/typec_altmode.h
-
-+USB TYPEC PORT CONTROLLER DRIVERS
-+M: Guenter Roeck <linux@roeck-us.net>
-+L: linux-usb@vger.kernel.org
-+S: Maintained
-+F: drivers/usb/typec/tcpm/
-+
- USB UHCI DRIVER
- M: Alan Stern <stern@rowland.harvard.edu>
- L: linux-usb@vger.kernel.org
-diff --git a/drivers/usb/typec/Kconfig b/drivers/usb/typec/Kconfig
-index 8445890accdf..e078f23e3f8d 100644
---- a/drivers/usb/typec/Kconfig
-+++ b/drivers/usb/typec/Kconfig
-@@ -45,50 +45,7 @@ menuconfig TYPEC
-
- if TYPEC
-
--config TYPEC_TCPM
-- tristate "USB Type-C Port Controller Manager"
-- depends on USB
-- select USB_ROLE_SWITCH
-- select POWER_SUPPLY
-- help
-- The Type-C Port Controller Manager provides a USB PD and USB Type-C
-- state machine for use with Type-C Port Controllers.
--
--if TYPEC_TCPM
--
--config TYPEC_TCPCI
-- tristate "Type-C Port Controller Interface driver"
-- depends on I2C
-- select REGMAP_I2C
-- help
-- Type-C Port Controller driver for TCPCI-compliant controller.
--
--config TYPEC_RT1711H
-- tristate "Richtek RT1711H Type-C chip driver"
-- depends on I2C
-- select TYPEC_TCPCI
-- help
-- Richtek RT1711H Type-C chip driver that works with
-- Type-C Port Controller Manager to provide USB PD and USB
-- Type-C functionalities.
--
--source "drivers/usb/typec/fusb302/Kconfig"
--
--config TYPEC_WCOVE
-- tristate "Intel WhiskeyCove PMIC USB Type-C PHY driver"
-- depends on ACPI
-- depends on INTEL_SOC_PMIC
-- depends on INTEL_PMC_IPC
-- depends on BXT_WC_PMIC_OPREGION
-- help
-- This driver adds support for USB Type-C detection on Intel Broxton
-- platforms that have Intel Whiskey Cove PMIC. The driver can detect the
-- role and cable orientation.
--
-- To compile this driver as module, choose M here: the module will be
-- called typec_wcove
--
--endif # TYPEC_TCPM
-+source "drivers/usb/typec/tcpm/Kconfig"
-
- source "drivers/usb/typec/ucsi/Kconfig"
-
-diff --git a/drivers/usb/typec/Makefile b/drivers/usb/typec/Makefile
-index 45b0aef428a8..6696b7263d61 100644
---- a/drivers/usb/typec/Makefile
-+++ b/drivers/usb/typec/Makefile
-@@ -2,11 +2,7 @@
- obj-$(CONFIG_TYPEC) += typec.o
- typec-y := class.o mux.o bus.o
- obj-$(CONFIG_TYPEC) += altmodes/
--obj-$(CONFIG_TYPEC_TCPM) += tcpm.o
--obj-y += fusb302/
--obj-$(CONFIG_TYPEC_WCOVE) += typec_wcove.o
-+obj-$(CONFIG_TYPEC_TCPM) += tcpm/
- obj-$(CONFIG_TYPEC_UCSI) += ucsi/
- obj-$(CONFIG_TYPEC_TPS6598X) += tps6598x.o
- obj-$(CONFIG_TYPEC) += mux/
--obj-$(CONFIG_TYPEC_TCPCI) += tcpci.o
--obj-$(CONFIG_TYPEC_RT1711H) += tcpci_rt1711h.o
-diff --git a/drivers/usb/typec/fusb302/Kconfig b/drivers/usb/typec/fusb302/Kconfig
-deleted file mode 100644
-index fce099ff39fe..000000000000
---- a/drivers/usb/typec/fusb302/Kconfig
-+++ /dev/null
-@@ -1,7 +0,0 @@
--config TYPEC_FUSB302
-- tristate "Fairchild FUSB302 Type-C chip driver"
-- depends on I2C
-- help
-- The Fairchild FUSB302 Type-C chip driver that works with
-- Type-C Port Controller Manager to provide USB PD and USB
-- Type-C functionalities.
-diff --git a/drivers/usb/typec/fusb302/Makefile b/drivers/usb/typec/fusb302/Makefile
-deleted file mode 100644
-index 3b51b33631a0..000000000000
---- a/drivers/usb/typec/fusb302/Makefile
-+++ /dev/null
-@@ -1,2 +0,0 @@
--# SPDX-License-Identifier: GPL-2.0
--obj-$(CONFIG_TYPEC_FUSB302) += fusb302.o
-diff --git a/drivers/usb/typec/tcpm/Kconfig b/drivers/usb/typec/tcpm/Kconfig
-new file mode 100644
-index 000000000000..f03ea8a61768
---- /dev/null
-+++ b/drivers/usb/typec/tcpm/Kconfig
-@@ -0,0 +1,52 @@
-+config TYPEC_TCPM
-+ tristate "USB Type-C Port Controller Manager"
-+ depends on USB
-+ select USB_ROLE_SWITCH
-+ select POWER_SUPPLY
-+ help
-+ The Type-C Port Controller Manager provides a USB PD and USB Type-C
-+ state machine for use with Type-C Port Controllers.
-+
-+if TYPEC_TCPM
-+
-+config TYPEC_TCPCI
-+ tristate "Type-C Port Controller Interface driver"
-+ depends on I2C
-+ select REGMAP_I2C
-+ help
-+ Type-C Port Controller driver for TCPCI-compliant controller.
-+
-+if TYPEC_TCPCI
-+
-+config TYPEC_RT1711H
-+ tristate "Richtek RT1711H Type-C chip driver"
-+ help
-+ Richtek RT1711H Type-C chip driver that works with
-+ Type-C Port Controller Manager to provide USB PD and USB
-+ Type-C functionalities.
-+
-+endif # TYPEC_TCPCI
-+
-+config TYPEC_FUSB302
-+ tristate "Fairchild FUSB302 Type-C chip driver"
-+ depends on I2C
-+ help
-+ The Fairchild FUSB302 Type-C chip driver that works with
-+ Type-C Port Controller Manager to provide USB PD and USB
-+ Type-C functionalities.
-+
-+config TYPEC_WCOVE
-+ tristate "Intel WhiskeyCove PMIC USB Type-C PHY driver"
-+ depends on ACPI
-+ depends on INTEL_SOC_PMIC
-+ depends on INTEL_PMC_IPC
-+ depends on BXT_WC_PMIC_OPREGION
-+ help
-+ This driver adds support for USB Type-C on Intel Broxton platforms
-+ that have Intel Whiskey Cove PMIC. The driver works with USB Type-C
-+ Port Controller Manager to provide USB PD and Type-C functionalities.
-+
-+ To compile this driver as module, choose M here: the module will be
-+ called typec_wcove.ko
-+
-+endif # TYPEC_TCPM
-diff --git a/drivers/usb/typec/tcpm/Makefile b/drivers/usb/typec/tcpm/Makefile
-new file mode 100644
-index 000000000000..a5ff6c8eb892
---- /dev/null
-+++ b/drivers/usb/typec/tcpm/Makefile
-@@ -0,0 +1,7 @@
-+# SPDX-License-Identifier: GPL-2.0
-+obj-$(CONFIG_TYPEC_TCPM) += tcpm.o
-+obj-$(CONFIG_TYPEC_FUSB302) += fusb302.o
-+obj-$(CONFIG_TYPEC_WCOVE) += typec_wcove.o
-+typec_wcove-y := wcove.o
-+obj-$(CONFIG_TYPEC_TCPCI) += tcpci.o
-+obj-$(CONFIG_TYPEC_RT1711H) += tcpci_rt1711h.o
-diff --git a/drivers/usb/typec/fusb302/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
-similarity index 100%
-rename from drivers/usb/typec/fusb302/fusb302.c
-rename to drivers/usb/typec/tcpm/fusb302.c
-diff --git a/drivers/usb/typec/fusb302/fusb302_reg.h b/drivers/usb/typec/tcpm/fusb302_reg.h
-similarity index 100%
-rename from drivers/usb/typec/fusb302/fusb302_reg.h
-rename to drivers/usb/typec/tcpm/fusb302_reg.h
-diff --git a/drivers/usb/typec/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c
-similarity index 100%
-rename from drivers/usb/typec/tcpci.c
-rename to drivers/usb/typec/tcpm/tcpci.c
-diff --git a/drivers/usb/typec/tcpci.h b/drivers/usb/typec/tcpm/tcpci.h
-similarity index 100%
-rename from drivers/usb/typec/tcpci.h
-rename to drivers/usb/typec/tcpm/tcpci.h
-diff --git a/drivers/usb/typec/tcpci_rt1711h.c b/drivers/usb/typec/tcpm/tcpci_rt1711h.c
-similarity index 100%
-rename from drivers/usb/typec/tcpci_rt1711h.c
-rename to drivers/usb/typec/tcpm/tcpci_rt1711h.c
-diff --git a/drivers/usb/typec/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
-similarity index 100%
-rename from drivers/usb/typec/tcpm.c
-rename to drivers/usb/typec/tcpm/tcpm.c
-diff --git a/drivers/usb/typec/typec_wcove.c b/drivers/usb/typec/tcpm/wcove.c
-similarity index 100%
-rename from drivers/usb/typec/typec_wcove.c
-rename to drivers/usb/typec/tcpm/wcove.c
---
-2.35.1
-
+++ /dev/null
-From c60d7eadc9e21ad23adf30f3739835655bc97a93 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 21 Nov 2022 14:24:16 +0800
-Subject: usb: typec: tcpci: fix of node refcount leak in tcpci_register_port()
-
-From: Yang Yingliang <yangyingliang@huawei.com>
-
-[ Upstream commit 0384e87e3fec735e47f1c133c796f32ef7a72a9b ]
-
-I got the following report while doing device(mt6370-tcpc) load
-test with CONFIG_OF_UNITTEST and CONFIG_OF_DYNAMIC enabled:
-
- OF: ERROR: memory leak, expected refcount 1 instead of 2,
- of_node_get()/of_node_put() unbalanced - destroy cset entry:
- attach overlay node /i2c/pmic@34/tcpc/connector
-
-The 'fwnode' set in tcpci_parse_config() which is called
-in tcpci_register_port(), its node refcount is increased
-in device_get_named_child_node(). It needs be put while
-exiting, so call fwnode_handle_put() in the error path of
-tcpci_register_port() and in tcpci_unregister_port() to
-avoid leak.
-
-Fixes: 5e85a04c8c0d ("usb: typec: add fwnode to tcpc")
-Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
-Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
-Link: https://lore.kernel.org/r/20221121062416.1026192-1-yangyingliang@huawei.com
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/usb/typec/tcpm/tcpci.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c
-index 9f98376d9bef..e5dbd14f0881 100644
---- a/drivers/usb/typec/tcpm/tcpci.c
-+++ b/drivers/usb/typec/tcpm/tcpci.c
-@@ -541,8 +541,10 @@ struct tcpci *tcpci_register_port(struct device *dev, struct tcpci_data *data)
- return ERR_PTR(err);
-
- tcpci->port = tcpm_register_port(tcpci->dev, &tcpci->tcpc);
-- if (IS_ERR(tcpci->port))
-+ if (IS_ERR(tcpci->port)) {
-+ fwnode_handle_put(tcpci->tcpc.fwnode);
- return ERR_CAST(tcpci->port);
-+ }
-
- return tcpci;
- }
-@@ -551,6 +553,7 @@ EXPORT_SYMBOL_GPL(tcpci_register_port);
- void tcpci_unregister_port(struct tcpci *tcpci)
- {
- tcpm_unregister_port(tcpci->port);
-+ fwnode_handle_put(tcpci->tcpc.fwnode);
- }
- EXPORT_SYMBOL_GPL(tcpci_unregister_port);
-
---
-2.35.1
-