[packages/kernel/LINUX_6_17: 2/2] remove pinebook-pro patch
atler
atler at pld-linux.org
Sun Dec 7 17:25:53 CET 2025
commit 9f714f0e64a384a043780d24cbef2e85ea14611f
Author: Jan Palus <atler at pld-linux.org>
Date: Sun Dec 7 17:22:05 2025 +0100
remove pinebook-pro patch
most likely no longer works and seems to conflict with some recent
mainline change resulting in cw2015 batttery not being detected anymore.
there's an upstream effort to make alt-dp work in rk3399 so let's just
wait for it.
kernel-pinebook-pro.patch | 756 ----------------------------------------------
kernel.spec | 2 -
2 files changed, 758 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index 60b042d6..620c799d 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -174,7 +174,6 @@ Patch7000: kernel-inittmpfs.patch
# ARM only
Patch8000: rpi-sound.patch
-Patch8001: kernel-pinebook-pro.patch
Patch8004: ath-regd.patch
Patch8005: rkvdec-hevc.patch
# Patch8005-md5: be31dd14250cc9e4eb496a5471e88d0f
@@ -577,7 +576,6 @@ cd linux-%{basever}
%ifarch %{arm} aarch64
%patch -P8000 -p1
-%patch -P8001 -p1
%patch -P8004 -p1
%patch -P8005 -p1
%endif
diff --git a/kernel-pinebook-pro.patch b/kernel-pinebook-pro.patch
deleted file mode 100644
index 3db8048a..00000000
--- a/kernel-pinebook-pro.patch
+++ /dev/null
@@ -1,756 +0,0 @@
-From 94a83bcc1e22b9a6d78b8ae961c6675aa2382ff3 Mon Sep 17 00:00:00 2001
-From: Ondřej Jirman
-Date: Sun, 7 Nov 2021 19:24:40 +0100
-Subject: usb: typec: typec-extcon: Add typec -> extcon bridge driver
-
-This bridge connects standard Type C port interfaces for controling
-muxes, switches and usb roles to muxes, switches and usb role
-drivers controlled via extcon interface.
-
-Signed-off-by: Ondrej Jirman <megi at xff.cz>
----
- drivers/usb/typec/Kconfig | 7 +
- drivers/usb/typec/Makefile | 1 +
- drivers/usb/typec/typec-extcon.c | 332 +++++++++++++++++++++++++++++++++++++++
- 3 files changed, 340 insertions(+)
- create mode 100644 drivers/usb/typec/typec-extcon.c
-
-diff --git a/drivers/usb/typec/Kconfig b/drivers/usb/typec/Kconfig
-index 2f80c2792dbd..40a2934691d6 100644
---- a/drivers/usb/typec/Kconfig
-+++ b/drivers/usb/typec/Kconfig
-@@ -110,6 +110,13 @@ config TYPEC_WUSB3801
- If you choose to build this driver as a dynamically linked module, the
- module will be called wusb3801.ko.
-
-+config TYPEC_EXTCON
-+ tristate "Type-C switch/mux -> extcon interface bridge driver"
-+ depends on USB_ROLE_SWITCH
-+ help
-+ Say Y or M here if your system needs bridging between typec class
-+ and extcon interfaces.
-+
- source "drivers/usb/typec/mux/Kconfig"
-
- source "drivers/usb/typec/altmodes/Kconfig"
-diff --git a/drivers/usb/typec/Makefile b/drivers/usb/typec/Makefile
-index 7a368fea61bc..fe4bf3b8ff60 100644
---- a/drivers/usb/typec/Makefile
-+++ b/drivers/usb/typec/Makefile
-@@ -11,4 +11,5 @@ obj-$(CONFIG_TYPEC_HD3SS3220) += hd3ss3220.o
- obj-$(CONFIG_TYPEC_STUSB160X) += stusb160x.o
- obj-$(CONFIG_TYPEC_RT1719) += rt1719.o
- obj-$(CONFIG_TYPEC_WUSB3801) += wusb3801.o
-+obj-$(CONFIG_TYPEC_EXTCON) += typec-extcon.o
- obj-$(CONFIG_TYPEC) += mux/
-diff --git a/drivers/usb/typec/typec-extcon.c b/drivers/usb/typec/typec-extcon.c
-new file mode 100644
-index 000000000000..e460f35c8390
---- /dev/null
-+++ b/drivers/usb/typec/typec-extcon.c
-@@ -0,0 +1,330 @@
-+/*
-+ * typec -> extcon bridge
-+ * Copyright (c) 2021 Ondřej Jirman <megi at xff.cz>
-+ *
-+ * This driver bridges standard type-c interfaces to drivers that
-+ * expect extcon interface.
-+ */
-+
-+#include <linux/delay.h>
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/power_supply.h>
-+#include <linux/platform_device.h>
-+#include <linux/usb/pd.h>
-+#include <linux/usb/role.h>
-+#include <linux/usb/typec.h>
-+#include <linux/usb/typec_dp.h>
-+#include <linux/usb/typec_mux.h>
-+#include <linux/extcon-provider.h>
-+
-+struct typec_extcon {
-+ struct device *dev;
-+
-+ /* consumers */
-+ struct usb_role_switch *role_sw;
-+ struct typec_switch_dev *sw;
-+ struct typec_mux_dev *mux;
-+
-+ /* providers */
-+ struct extcon_dev *extcon;
-+ struct notifier_block extcon_nb;
-+
-+ /* cached state from typec controller */
-+ enum usb_role role;
-+ enum typec_orientation orientation;
-+ struct typec_altmode alt;
-+ unsigned long mode;
-+ bool has_alt;
-+ struct mutex lock;
-+};
-+
-+static const unsigned int typec_extcon_cable[] = {
-+ EXTCON_DISP_DP,
-+
-+ EXTCON_USB,
-+ EXTCON_USB_HOST,
-+
-+ EXTCON_CHG_USB_SDP,
-+ EXTCON_CHG_USB_CDP,
-+ EXTCON_CHG_USB_DCP,
-+ EXTCON_CHG_USB_ACA,
-+
-+ EXTCON_NONE,
-+};
-+
-+static void typec_extcon_set_cable(struct typec_extcon *tce, int id, bool on,
-+ union extcon_property_value prop_ss,
-+ union extcon_property_value prop_or)
-+{
-+ union extcon_property_value cur_ss, cur_or;
-+ bool prop_diff = false;
-+ int ret;
-+
-+ ret = extcon_get_property(tce->extcon, id,
-+ EXTCON_PROP_USB_SS, &cur_ss);
-+ if (ret || cur_ss.intval != prop_ss.intval)
-+ prop_diff = true;
-+
-+ ret = extcon_get_property(tce->extcon, id,
-+ EXTCON_PROP_USB_TYPEC_POLARITY, &cur_or);
-+ if (ret || cur_or.intval != prop_or.intval)
-+ prop_diff = true;
-+
-+ if (!on && extcon_get_state(tce->extcon, id)) {
-+ extcon_set_state_sync(tce->extcon, id, false);
-+ } else if (on && (!extcon_get_state(tce->extcon, id) || prop_diff)) {
-+ extcon_set_state(tce->extcon, id, true);
-+ extcon_set_property(tce->extcon, id,
-+ EXTCON_PROP_USB_SS, prop_ss);
-+ extcon_set_property(tce->extcon, id,
-+ EXTCON_PROP_USB_TYPEC_POLARITY, prop_or);
-+ extcon_sync(tce->extcon, id);
-+ }
-+}
-+
-+static int typec_extcon_sync_extcon(struct typec_extcon *tce)
-+{
-+ union extcon_property_value prop_ss, prop_or;
-+ bool has_dp = false;
-+
-+ mutex_lock(&tce->lock);
-+
-+ /* connector is disconnected */
-+ if (tce->orientation == TYPEC_ORIENTATION_NONE) {
-+ typec_extcon_set_cable(tce, EXTCON_USB, false, prop_ss, prop_or);
-+ typec_extcon_set_cable(tce, EXTCON_USB_HOST, false, prop_ss, prop_or);
-+ typec_extcon_set_cable(tce, EXTCON_DISP_DP, false, prop_ss, prop_or);
-+
-+ goto out_unlock;
-+ }
-+
-+ prop_or.intval = tce->orientation == TYPEC_ORIENTATION_NORMAL ? 0 : 1;
-+ prop_ss.intval = 0;
-+
-+ if (tce->has_alt && tce->alt.svid == USB_TYPEC_DP_SID) {
-+ switch (tce->mode) {
-+ case TYPEC_STATE_SAFE:
-+ break;
-+ case TYPEC_DP_STATE_C:
-+ case TYPEC_DP_STATE_E:
-+ has_dp = true;
-+ break;
-+ case TYPEC_DP_STATE_D:
-+ has_dp = true;
-+ fallthrough;
-+ case TYPEC_STATE_USB:
-+ prop_ss.intval = 1;
-+ break;
-+ default:
-+ dev_err(tce->dev, "unhandled mux mode=%lu\n", tce->mode);
-+ break;
-+ }
-+ }
-+
-+ typec_extcon_set_cable(tce, EXTCON_USB,
-+ tce->role == USB_ROLE_DEVICE, prop_ss, prop_or);
-+ typec_extcon_set_cable(tce, EXTCON_USB_HOST,
-+ tce->role == USB_ROLE_HOST, prop_ss, prop_or);
-+
-+ typec_extcon_set_cable(tce, EXTCON_DISP_DP, has_dp, prop_ss, prop_or);
-+
-+out_unlock:
-+ mutex_unlock(&tce->lock);
-+ return 0;
-+}
-+
-+static int typec_extcon_sw_set(struct typec_switch_dev *sw,
-+ enum typec_orientation orientation)
-+{
-+ struct typec_extcon *tce = typec_switch_get_drvdata(sw);
-+
-+ dev_dbg(tce->dev, "SW SET: orientation=%d\n", orientation);
-+
-+ mutex_lock(&tce->lock);
-+ tce->orientation = orientation;
-+ mutex_unlock(&tce->lock);
-+
-+ typec_extcon_sync_extcon(tce);
-+
-+ return 0;
-+}
-+
-+static int typec_extcon_mux_set(struct typec_mux_dev *mux,
-+ struct typec_mux_state *state)
-+{
-+ struct typec_extcon *tce = typec_mux_get_drvdata(mux);
-+ struct typec_altmode *alt = state->alt;
-+
-+ dev_dbg(tce->dev, "MUX SET: state->mode=%lu\n", state->mode);
-+ if (alt)
-+ dev_dbg(tce->dev, " ...alt: svid=%04hx mode=%d vdo=%08x active=%u\n",
-+ alt->svid, alt->mode, alt->vdo, alt->active);
-+
-+ mutex_lock(&tce->lock);
-+ tce->mode = state->mode;
-+ tce->has_alt = alt != NULL;
-+ if (alt)
-+ tce->alt = *alt;
-+ mutex_unlock(&tce->lock);
-+
-+ typec_extcon_sync_extcon(tce);
-+
-+ return 0;
-+}
-+
-+static int typec_extcon_usb_set_role(struct usb_role_switch *sw,
-+ enum usb_role role)
-+{
-+ struct typec_extcon *tce = usb_role_switch_get_drvdata(sw);
-+
-+ dev_dbg(tce->dev, "ROLE SET: role=%d\n", role);
-+
-+ mutex_lock(&tce->lock);
-+ tce->role = role;
-+ mutex_unlock(&tce->lock);
-+
-+ typec_extcon_sync_extcon(tce);
-+
-+ return 0;
-+}
-+
-+static int typec_extcon_notifier(struct notifier_block *nb,
-+ unsigned long action, void *data)
-+{
-+ struct typec_extcon *tce = container_of(nb, struct typec_extcon, extcon_nb);
-+
-+ bool sdp = extcon_get_state(tce->extcon, EXTCON_CHG_USB_SDP);
-+ bool cdp = extcon_get_state(tce->extcon, EXTCON_CHG_USB_CDP);
-+ bool dcp = extcon_get_state(tce->extcon, EXTCON_CHG_USB_DCP);
-+ bool usb = extcon_get_state(tce->extcon, EXTCON_USB);
-+ bool usb_host = extcon_get_state(tce->extcon, EXTCON_USB_HOST);
-+ bool dp = extcon_get_state(tce->extcon, EXTCON_DISP_DP);
-+
-+ dev_info(tce->dev, "extcon changed sdp=%d cdp=%d dcp=%d usb=%d usb_host=%d dp=%d\n",
-+ sdp, cdp, dcp, usb, usb_host, dp);
-+
-+ return NOTIFY_OK;
-+}
-+
-+static int typec_extcon_probe(struct platform_device *pdev)
-+{
-+ struct typec_switch_desc sw_desc = { };
-+ struct typec_mux_desc mux_desc = { };
-+ struct usb_role_switch_desc role_desc = { };
-+ struct device *dev = &pdev->dev;
-+ struct typec_extcon *tce;
-+ int ret = 0;
-+
-+ tce = devm_kzalloc(dev, sizeof(*tce), GFP_KERNEL);
-+ if (!tce)
-+ return -ENOMEM;
-+
-+ tce->dev = &pdev->dev;
-+ mutex_init(&tce->lock);
-+ tce->mode = TYPEC_STATE_SAFE;
-+
-+ sw_desc.drvdata = tce;
-+ sw_desc.fwnode = dev->fwnode;
-+ sw_desc.set = typec_extcon_sw_set;
-+
-+ tce->sw = typec_switch_register(dev, &sw_desc);
-+ if (IS_ERR(tce->sw))
-+ return dev_err_probe(dev, PTR_ERR(tce->sw),
-+ "Error registering typec switch\n");
-+
-+ mux_desc.drvdata = tce;
-+ mux_desc.fwnode = dev->fwnode;
-+ mux_desc.set = typec_extcon_mux_set;
-+
-+ tce->mux = typec_mux_register(dev, &mux_desc);
-+ if (IS_ERR(tce->mux)) {
-+ ret = dev_err_probe(dev, PTR_ERR(tce->mux),
-+ "Error registering typec mux\n");
-+ goto err_sw;
-+ }
-+
-+ role_desc.driver_data = tce;
-+ role_desc.fwnode = dev->fwnode;
-+ role_desc.name = fwnode_get_name(dev->fwnode);
-+ role_desc.set = typec_extcon_usb_set_role;
-+
-+ tce->role_sw = usb_role_switch_register(dev, &role_desc);
-+ if (IS_ERR(tce->role_sw)) {
-+ ret = dev_err_probe(dev, PTR_ERR(tce->role_sw),
-+ "Error registering USB role switch\n");
-+ goto err_mux;
-+ }
-+
-+ tce->extcon = devm_extcon_dev_allocate(dev, typec_extcon_cable);
-+ if (IS_ERR(tce->extcon)) {
-+ ret = PTR_ERR(tce->extcon);
-+ goto err_role;
-+ }
-+
-+ ret = devm_extcon_dev_register(dev, tce->extcon);
-+ if (ret) {
-+ ret = dev_err_probe(dev, ret, "failed to register extcon device\n");
-+ goto err_role;
-+ }
-+
-+ extcon_set_property_capability(tce->extcon, EXTCON_USB,
-+ EXTCON_PROP_USB_SS);
-+ extcon_set_property_capability(tce->extcon, EXTCON_USB,
-+ EXTCON_PROP_USB_TYPEC_POLARITY);
-+ extcon_set_property_capability(tce->extcon, EXTCON_USB_HOST,
-+ EXTCON_PROP_USB_SS);
-+ extcon_set_property_capability(tce->extcon, EXTCON_USB_HOST,
-+ EXTCON_PROP_USB_TYPEC_POLARITY);
-+ extcon_set_property_capability(tce->extcon, EXTCON_DISP_DP,
-+ EXTCON_PROP_USB_SS);
-+ extcon_set_property_capability(tce->extcon, EXTCON_DISP_DP,
-+ EXTCON_PROP_USB_TYPEC_POLARITY);
-+
-+ tce->extcon_nb.notifier_call = typec_extcon_notifier;
-+ ret = devm_extcon_register_notifier_all(dev, tce->extcon, &tce->extcon_nb);
-+ if (ret) {
-+ dev_err_probe(dev, ret, "Failed to register extcon notifier\n");
-+ goto err_role;
-+ }
-+
-+ return 0;
-+
-+err_role:
-+ usb_role_switch_unregister(tce->role_sw);
-+err_mux:
-+ typec_mux_unregister(tce->mux);
-+err_sw:
-+ typec_switch_unregister(tce->sw);
-+ return ret;
-+}
-+
-+static void typec_extcon_remove(struct platform_device *pdev)
-+{
-+ struct typec_extcon *tce = platform_get_drvdata(pdev);
-+
-+ usb_role_switch_unregister(tce->role_sw);
-+ typec_mux_unregister(tce->mux);
-+ typec_switch_unregister(tce->sw);
-+}
-+
-+static struct of_device_id typec_extcon_of_match_table[] = {
-+ { .compatible = "linux,typec-extcon-bridge" },
-+ { },
-+};
-+MODULE_DEVICE_TABLE(of, typec_extcon_of_match_table);
-+
-+static struct platform_driver typec_extcon_driver = {
-+ .driver = {
-+ .name = "typec-extcon",
-+ .of_match_table = typec_extcon_of_match_table,
-+ },
-+ .probe = typec_extcon_probe,
-+ .remove = typec_extcon_remove,
-+};
-+
-+module_platform_driver(typec_extcon_driver);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Ondrej Jirman <megi at xff.cz>");
-+MODULE_DESCRIPTION("typec -> extcon bridge driver");
---
-cgit v1.2.3-54-g00ecf
-
-From 1302523f1541a27e51833bddbdfb049829b65707 Mon Sep 17 00:00:00 2001
-From: Ondřej Jirman
-Date: Sun, 7 Nov 2021 19:28:27 +0100
-Subject: usb: typec: fusb302: Set the current before enabling pullups
-
-This seems more reasonable and should avoid short period of incorrect
-current setting being applied to CC pin.
-
-Signed-off-by: Ondrej Jirman <megi at xff.cz>
----
- drivers/usb/typec/tcpm/fusb302.c | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
-index 00247497bf29..24962413fe2c 100644
---- a/drivers/usb/typec/tcpm/fusb302.c
-+++ b/drivers/usb/typec/tcpm/fusb302.c
-@@ -635,6 +635,14 @@ static int tcpm_set_cc(struct tcpc_dev *dev, enum typec_cc_status cc)
- goto done;
- }
-
-+ /* adjust current for SRC */
-+ ret = fusb302_set_src_current(chip, cc_src_current[cc]);
-+ if (ret < 0) {
-+ fusb302_log(chip, "cannot set src current %s, ret=%d",
-+ typec_cc_status_name[cc], ret);
-+ goto done;
-+ }
-+
- ret = fusb302_i2c_mask_write(chip, FUSB_REG_SWITCHES0,
- switches0_mask, switches0_data);
- if (ret < 0) {
-@@ -645,14 +653,6 @@ static int tcpm_set_cc(struct tcpc_dev *dev, enum typec_cc_status cc)
- chip->cc1 = TYPEC_CC_OPEN;
- chip->cc2 = TYPEC_CC_OPEN;
-
-- /* adjust current for SRC */
-- ret = fusb302_set_src_current(chip, cc_src_current[cc]);
-- if (ret < 0) {
-- fusb302_log(chip, "cannot set src current %s, ret=%d",
-- typec_cc_status_name[cc], ret);
-- goto done;
-- }
--
- /* enable/disable interrupts, BC_LVL for SNK and COMP_CHNG for SRC */
- switch (cc) {
- case TYPEC_CC_RP_DEF:
---
-cgit v1.2.3-54-g00ecf
-
-From e13be95df1f26f57393fdb25f130e6eb9046793f Mon Sep 17 00:00:00 2001
-From: Ondřej Jirman
-Date: Tue, 23 Nov 2021 17:57:06 +0100
-Subject: usb: typec: fusb302: Update VBUS state even if VBUS interrupt is not
- triggered
-
-This seems to improve robustness.
-
-Signed-off-by: Ondrej Jirman <megi at xff.cz>
----
- drivers/usb/typec/tcpm/fusb302.c | 14 ++++++++------
- 1 file changed, 8 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
-index 32d894e1b247..35ddbaf50f64 100644
---- a/drivers/usb/typec/tcpm/fusb302.c
-+++ b/drivers/usb/typec/tcpm/fusb302.c
-@@ -1716,14 +1716,16 @@ static void fusb302_irq_work(struct work_struct *work)
- "IRQ: 0x%02x, a: 0x%02x, b: 0x%02x, status0: 0x%02x",
- interrupt, interrupta, interruptb, status0);
-
-- if (interrupt & FUSB_REG_INTERRUPT_VBUSOK) {
-- vbus_present = !!(status0 & FUSB_REG_STATUS0_VBUSOK);
-+ vbus_present = !!(status0 & FUSB_REG_STATUS0_VBUSOK);
-+ if (interrupt & FUSB_REG_INTERRUPT_VBUSOK)
- fusb302_log(chip, "IRQ: VBUS_OK, vbus=%s",
- str_on_off(vbus_present));
-- if (vbus_present != chip->vbus_present) {
-- chip->vbus_present = vbus_present;
-- tcpm_vbus_change(chip->tcpm_port);
-- }
-+ if (vbus_present != chip->vbus_present) {
-+ chip->vbus_present = vbus_present;
-+ if (!(interrupt & FUSB_REG_INTERRUPT_VBUSOK))
-+ fusb302_log(chip, "IRQ: VBUS changed without interrupt, vbus=%s",
-+ vbus_present ? "On" : "Off");
-+ tcpm_vbus_change(chip->tcpm_port);
- }
-
- if ((interrupta & FUSB_REG_INTERRUPTA_TOGDONE) && intr_togdone) {
---
-cgit v1.2.3-54-g00ecf
-
-From 47c7957ea4779762aaa0ba1f9e9d662a4cb7c172 Mon Sep 17 00:00:00 2001
-From: Ondřej Jirman
-Date: Sun, 14 Nov 2021 01:14:25 +0100
-Subject: usb: typec: fusb302: Add OF extcon support
-
-It's possible to create a dependency cycle between fusb302 and
-other drivers via extcon device, so we retrieve the device on
-demand after probe and not during probe.
-
-Signed-off-by: Ondrej Jirman <megi at xff.cz>
----
- drivers/usb/typec/tcpm/fusb302.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
-index 35ddbaf50f64..954803316d5e 100644
---- a/drivers/usb/typec/tcpm/fusb302.c
-+++ b/drivers/usb/typec/tcpm/fusb302.c
-@@ -518,6 +518,16 @@ static int tcpm_get_current_limit(struct tcpc_dev *dev)
- int current_limit = 0;
- unsigned long timeout;
-
-+ /*
-+ * To avoid cycles in OF dependencies, we get extcon when necessary
-+ * outside of probe function.
-+ */
-+ if (of_property_read_bool(chip->dev->of_node, "extcon") && !chip->extcon) {
-+ chip->extcon = extcon_get_edev_by_phandle(chip->dev, 0);
-+ if (IS_ERR(chip->extcon))
-+ chip->extcon = NULL;
-+ }
-+
- if (!chip->extcon)
- return 0;
-
---
-cgit v1.2.3-54-g00ecf
-
-From e58ba5d3b5b56e48b00a8931b7206c360f3c92d7 Mon Sep 17 00:00:00 2001
-From: Ondřej Jirman
-Date: Sat, 20 Nov 2021 14:33:58 +0100
-Subject: usb: typec: fusb302: Fix register definitions
-
-MEASURE_VBUS bit is at position 6. MDAC bits are also wrong.
-
-Signed-off-by: Ondrej Jirman <megi at xff.cz>
----
- drivers/usb/typec/tcpm/fusb302_reg.h | 16 +++++++---------
- 1 file changed, 7 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/usb/typec/tcpm/fusb302_reg.h b/drivers/usb/typec/tcpm/fusb302_reg.h
-index edc0e4b0f1e6..f37d226c5027 100644
---- a/drivers/usb/typec/tcpm/fusb302_reg.h
-+++ b/drivers/usb/typec/tcpm/fusb302_reg.h
-@@ -27,14 +27,13 @@
- #define FUSB_REG_SWITCHES1_TXCC2_EN BIT(1)
- #define FUSB_REG_SWITCHES1_TXCC1_EN BIT(0)
- #define FUSB_REG_MEASURE 0x04
--#define FUSB_REG_MEASURE_MDAC5 BIT(7)
--#define FUSB_REG_MEASURE_MDAC4 BIT(6)
--#define FUSB_REG_MEASURE_MDAC3 BIT(5)
--#define FUSB_REG_MEASURE_MDAC2 BIT(4)
--#define FUSB_REG_MEASURE_MDAC1 BIT(3)
--#define FUSB_REG_MEASURE_MDAC0 BIT(2)
--#define FUSB_REG_MEASURE_VBUS BIT(1)
--#define FUSB_REG_MEASURE_XXXX5 BIT(0)
-+#define FUSB_REG_MEASURE_VBUS BIT(6)
-+#define FUSB_REG_MEASURE_MDAC5 BIT(5)
-+#define FUSB_REG_MEASURE_MDAC4 BIT(4)
-+#define FUSB_REG_MEASURE_MDAC3 BIT(3)
-+#define FUSB_REG_MEASURE_MDAC2 BIT(2)
-+#define FUSB_REG_MEASURE_MDAC1 BIT(1)
-+#define FUSB_REG_MEASURE_MDAC0 BIT(0)
- #define FUSB_REG_CONTROL0 0x06
- #define FUSB_REG_CONTROL0_TX_FLUSH BIT(6)
- #define FUSB_REG_CONTROL0_INT_MASK BIT(5)
-@@ -105,7 +104,6 @@
- #define FUSB_REG_STATUS0A_RX_SOFT_RESET BIT(1)
- #define FUSB_REG_STATUS0A_RX_HARD_RESET BIT(0)
- #define FUSB_REG_STATUS1A 0x3D
--#define FUSB_REG_STATUS1A_TOGSS BIT(3)
- #define FUSB_REG_STATUS1A_TOGSS_RUNNING 0x0
- #define FUSB_REG_STATUS1A_TOGSS_SRC1 0x1
- #define FUSB_REG_STATUS1A_TOGSS_SRC2 0x2
---
-cgit v1.2.3-54-g00ecf
-
-From c9c5b140f5b0d46a38aa1edc87fd65856b018572 Mon Sep 17 00:00:00 2001
-From: Ondřej Jirman
-Date: Sat, 20 Nov 2021 14:35:10 +0100
-Subject: usb: typec: fusb302: Clear interrupts before we start toggling
-
-This is recommended by the datasheet.
-
-Signed-off-by: Ondrej Jirman <megi at xff.cz>
----
- drivers/usb/typec/tcpm/fusb302.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
-index 954803316d5e..ab9b01a490cc 100644
---- a/drivers/usb/typec/tcpm/fusb302.c
-+++ b/drivers/usb/typec/tcpm/fusb302.c
-@@ -586,6 +586,7 @@ static int fusb302_set_toggling(struct fusb302_chip *chip,
- enum toggling_mode mode)
- {
- int ret = 0;
-+ u8 reg;
-
- /* first disable toggling */
- ret = fusb302_i2c_clear_bits(chip, FUSB_REG_CONTROL2,
-@@ -644,6 +645,12 @@ static int fusb302_set_toggling(struct fusb302_chip *chip,
- } else {
- /* Datasheet says vconn MUST be off when toggling */
- WARN(chip->vconn_on, "Vconn is on during toggle start");
-+
-+ /* clear interrupts */
-+ ret = fusb302_i2c_read(chip, FUSB_REG_INTERRUPT, ®);
-+ if (ret < 0)
-+ return ret;
-+
- /* unmask TOGDONE interrupt */
- ret = fusb302_i2c_clear_bits(chip, FUSB_REG_MASKA,
- FUSB_REG_MASKA_TOGDONE);
---
-cgit v1.2.3-54-g00ecf
-
-From 55a777f8c934af7c1a7cda91dc680b708dd8ea14 Mon Sep 17 00:00:00 2001
-From: Ondřej Jirman
-Date: Wed, 2 Dec 2020 12:09:45 +0100
-Subject: arm64: dts: rk3399-pinebook-pro: Improve Type-C support on Pinebook
- Pro
-
-This is using the same extcon bridge developed by me for Pinephone Pro.
-
-Signed-off-by: Ondrej Jirman <megi at xff.cz>
----
- .../boot/dts/rockchip/rk3399-pinebook-pro.dts | 57 +++++++++++++++++++---
- 1 file changed, 50 insertions(+), 7 deletions(-)
-
-diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
-index 8e959085e230..698977db2962 100644
---- a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
-+++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
-@@ -335,7 +335,7 @@ regulator-state-mem {
-
- /* Regulators supplied by vcc5v0_usb */
- /* Type C port power supply regulator */
-- vbus_5vout: vbus_typec: regulator-vbus-5vout {
-+ vbus_5vout: regulator-vbus-5vout {
- compatible = "regulator-fixed";
- enable-active-high;
- gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>;
-@@ -374,6 +374,14 @@ mains_charger: dc-charger {
- pinctrl-names = "default";
- pinctrl-0 = <&dc_det_pin>;
- };
-+
-+ typec_extcon_bridge: typec-extcon {
-+ compatible = "linux,typec-extcon-bridge";
-+ usb-role-switch;
-+ orientation-switch;
-+ mode-switch;
-+ svid = /bits/ 16 <0xff01>;
-+ };
- };
-
- &cpu_b0 {
-@@ -400,6 +408,12 @@ &cpu_l3 {
- cpu-supply = <&vdd_cpu_l>;
- };
-
-+&cdn_dp {
-+ status = "okay";
-+ extcon = <&typec_extcon_bridge>;
-+ phys = <&tcphy0_dp>;
-+};
-+
- &edp {
- force-hpd;
- pinctrl-names = "default";
-@@ -691,7 +705,9 @@ fusb0: fusb30x at 22 {
- interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>;
- pinctrl-names = "default";
- pinctrl-0 = <&fusb0_int_pin>;
-- vbus-supply = <&vbus_typec>;
-+ vbus-supply = <&vbus_5vout>;
-+ usb-role-switch = <&typec_extcon_bridge>;
-+ extcon = <&typec_extcon_bridge>;
-
- connector {
- compatible = "usb-c-connector";
-@@ -700,10 +716,19 @@ connector {
- op-sink-microwatt = <1000000>;
- power-role = "dual";
- sink-pdos =
-- <PDO_FIXED(5000, 2500, PDO_FIXED_USB_COMM)>;
-+ <PDO_FIXED(5000, 2500, PDO_FIXED_USB_COMM | PDO_FIXED_DUAL_ROLE | PDO_FIXED_DATA_SWAP)>;
- source-pdos =
-- <PDO_FIXED(5000, 1400, PDO_FIXED_USB_COMM)>;
-+ <PDO_FIXED(5000, 1400, PDO_FIXED_USB_COMM | PDO_FIXED_DUAL_ROLE | PDO_FIXED_DATA_SWAP)>;
- try-power-role = "sink";
-+ mode-switch = <&typec_extcon_bridge>;
-+ orientation-switch = <&typec_extcon_bridge>;
-+
-+ altmodes {
-+ dp {
-+ svid = /bits/ 16 <0xff01>;
-+ vdo = <0x0c46>;
-+ };
-+ };
-
- ports {
- #address-cells = <1>;
-@@ -970,6 +995,7 @@ spiflash: flash at 0 {
- };
-
- &tcphy0 {
-+ extcon = <&typec_extcon_bridge>;
- status = "okay";
- };
-
-@@ -1003,13 +1029,21 @@ &tsadc {
-
- &u2phy0 {
- status = "okay";
-+ extcon = <&typec_extcon_bridge>;
-+ extcon,ignore-usb;
-
- u2phy0_otg: otg-port {
-+ /*
-+ * Type-C port on the left side of the chasis.
-+ */
- status = "okay";
- };
-
- u2phy0_host: host-port {
-- phy-supply = <&vcc5v0_otg>;
-+ /*
-+ * USB 2.0 host port for the keyboard (internally connected).
-+ */
-+ phy-supply = <&vcc5v0_usb>;
- status = "okay";
- };
-
-@@ -1024,11 +1058,18 @@ &u2phy1 {
- status = "okay";
-
- u2phy1_otg: otg-port {
-+ /*
-+ * USB 3.0 A port on the left side of the chasis.
-+ */
- status = "okay";
- };
-
- u2phy1_host: host-port {
-- phy-supply = <&vcc5v0_otg>;
-+ /*
-+ * To the HUB that has USB camera and USB 2.0 port on the right
-+ * side of the chasis.
-+ */
-+ phy-supply = <&vcc5v0_usb>;
- status = "okay";
- };
- };
-@@ -1079,7 +1120,9 @@ &usbdrd3_0 {
- };
-
- &usbdrd_dwc3_0 {
-- dr_mode = "host";
-+ dr_mode = "otg";
-+ extcon = <&typec_extcon_bridge>;
-+ snps,usb3-phy-reset-quirk;
- status = "okay";
- };
-
---
-cgit v1.2.3-54-g00ecf
-
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/9f714f0e64a384a043780d24cbef2e85ea14611f
More information about the pld-cvs-commit
mailing list