* [PATCH v3 0/4] usb: typec: Add new driver for Parade PS8830 Type-C Retimer
@ 2024-10-22 10:26 Abel Vesa
2024-10-22 10:26 ` [PATCH v3 1/4] dt-bindings: usb: Add Parade PS8830 Type-C retimer bindings Abel Vesa
` (4 more replies)
0 siblings, 5 replies; 13+ messages in thread
From: Abel Vesa @ 2024-10-22 10:26 UTC (permalink / raw)
To: Heikki Krogerus, Greg Kroah-Hartman, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, Bjorn Andersson, Konrad Dybcio, Rajendra Nayak,
Sibi Sankar, Johan Hovold, Dmitry Baryshkov, Trilok Soni,
linux-kernel, linux-usb, devicetree, Abel Vesa
The Parade PS8830 is a Type-C multi-protocol retimer that is controlled
via I2C. It provides altmode and orientation handling and usually sits
between the Type-C port and the PHY.
It is currently used alongside Qualcomm Snapdragon X Elite SoCs on quite
a few laptops already.
This new driver adds support for the following 3 modes:
- DP 4lanes (pin assignments C and E)
- DP 2lanes + USB3 (pin assignment D)
- USB3
This retimer is a LTTPR (Link-Training Tunable PHY Repeater) which means
it can support link training from source to itself. This means that the
DP driver needs to be aware of the repeater presence and to handle
the link training accordingly. This is currently missing from msm dp
driver, but there is already effort going on to add it. Once done,
full external DP will be working on all X1E laptops that make use of
this retimer.
NOTE: Currently, due to both LTTPR missing support in msm DP and a
reported crash that can happen on DP unplug, the DP DT patch is not
supposed to be merged yet. That patch is only shared for testing purposes.
Once those 2 issues have been resolved, the MDSS DP 0-2 enablement patch
will be respun.
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
---
Changes in v3:
- Reworked the schema binding by using the usb/usb-switch.yaml defined
port graph and properties. Addressed all comments from Johan and
Dmitry.
- Dropped the manual caching of the config values on regmap write in the
driver.
- Reordered the DP pin assignment states within the switch clause, as
Dmitry suggested.
- Added SVID check to not allow any altmode other than DP.
- Added DT patches (retimer for USB orientation handling and DP
enablement). Did this in order to offer a full picture of how it all
fits together.
- Split the DP enablement in DT in a separate patchset so the USB
handling can be merged separately.
- Added ps8830,boot-on to let the driver know it is supposed to skip
resetting the retimer on driver probe, as the bootloader might already
let it in a pre-configured state.
- Marked all retimer voltage regulators as boot-on since we want to
maintain the state for coldplug orientation.
- Added pinconf for all retimer0 gpios.
- Didn't pick up Konrad's T-b tags and Krzysztof's R-b tag as the rework
is quite extensive. Especially because of the ps8830,boot-on and what
it does.
- Link to v2: https://lore.kernel.org/r/20241004-x1e80100-ps8830-v2-0-5cd8008c8c40@linaro.org
Changes in v2:
- Addressed all comments from Johan and Konrad.
- Reworked the handling of the vregs so it would be more cleaner.
Dropped the usage of bulk regulators API and handled them separately.
Also discribed all regulators according to data sheet.
- Added all delays according to data sheet.
- Fixed coldplug (on boot) orientation detection.
- Didn't pick Krzysztof's R-b tag because the bindings changed w.r.t
supplies.
- Link to v1: https://lore.kernel.org/r/20240829-x1e80100-ps8830-v1-0-bcc4790b1d45@linaro.org
---
Abel Vesa (4):
dt-bindings: usb: Add Parade PS8830 Type-C retimer bindings
usb: typec: Add support for Parade PS8830 Type-C Retimer
arm64: dts: qcom: x1e80100-crd: Add Parade PS8830 related nodes
arm64: dts: qcom: x1e80100-crd: Enable external DP
.../devicetree/bindings/usb/parade,ps8830.yaml | 129 ++++++
arch/arm64/boot/dts/qcom/x1e80100-crd.dts | 472 ++++++++++++++++++++-
drivers/usb/typec/mux/Kconfig | 10 +
drivers/usb/typec/mux/Makefile | 1 +
drivers/usb/typec/mux/ps8830.c | 423 ++++++++++++++++++
5 files changed, 1029 insertions(+), 6 deletions(-)
---
base-commit: 63b3ff03d91ae8f875fe8747c781a521f78cde17
change-id: 20240521-x1e80100-ps8830-d5ccca95b557
Best regards,
--
Abel Vesa <abel.vesa@linaro.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 1/4] dt-bindings: usb: Add Parade PS8830 Type-C retimer bindings
2024-10-22 10:26 [PATCH v3 0/4] usb: typec: Add new driver for Parade PS8830 Type-C Retimer Abel Vesa
@ 2024-10-22 10:26 ` Abel Vesa
2024-10-22 16:30 ` Conor Dooley
2024-10-23 0:29 ` Bjorn Andersson
2024-10-22 10:26 ` [PATCH v3 2/4] usb: typec: Add support for Parade PS8830 Type-C Retimer Abel Vesa
` (3 subsequent siblings)
4 siblings, 2 replies; 13+ messages in thread
From: Abel Vesa @ 2024-10-22 10:26 UTC (permalink / raw)
To: Heikki Krogerus, Greg Kroah-Hartman, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, Bjorn Andersson, Konrad Dybcio, Rajendra Nayak,
Sibi Sankar, Johan Hovold, Dmitry Baryshkov, Trilok Soni,
linux-kernel, linux-usb, devicetree, Abel Vesa
Document bindings for the Parade PS8830 Type-C retimer. This retimer is
currently found on all boards featuring Qualcomm Snapdragon X Elite SoCs
and it is needed to provide altmode muxing between DP and USB, but also
connector orientation handling between.
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
---
.../devicetree/bindings/usb/parade,ps8830.yaml | 129 +++++++++++++++++++++
1 file changed, 129 insertions(+)
diff --git a/Documentation/devicetree/bindings/usb/parade,ps8830.yaml b/Documentation/devicetree/bindings/usb/parade,ps8830.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ee4c69eca6066e4da0373fad6c25d6e9fff83366
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/parade,ps8830.yaml
@@ -0,0 +1,129 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/usb/parade,ps8830.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Parade PS8830 USB and DisplayPort Retimer
+
+maintainers:
+ - Abel Vesa <abel.vesa@linaro.org>
+
+properties:
+ compatible:
+ enum:
+ - parade,ps8830
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ items:
+ - description: XO Clock
+
+ clock-names:
+ items:
+ - const: xo
+
+ ps8830,boot-on:
+ description: Left enabled at boot, so skip resetting
+ type: boolean
+
+ reset-gpios:
+ maxItems: 1
+
+ vdd-supply:
+ description: power supply (1.07V)
+
+ vdd33-supply:
+ description: power supply (3.3V)
+
+ vdd33-cap-supply:
+ description: power supply (3.3V)
+
+ vddar-supply:
+ description: power supply (1.07V)
+
+ vddat-supply:
+ description: power supply (1.07V)
+
+ vddio-supply:
+ description: power supply (1.2V or 1.8V)
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - clock-names
+ - reset-gpios
+ - vdd-supply
+ - vdd33-supply
+ - vdd33-cap-supply
+ - vddat-supply
+ - vddio-supply
+ - orientation-switch
+ - retimer-switch
+
+allOf:
+ - $ref: usb-switch.yaml#
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ typec-mux@8 {
+ compatible = "parade,ps8830";
+ reg = <0x8>;
+
+ clocks = <&clk_rtmr_xo>;
+ clock-names = "xo";
+
+ vdd-supply = <&vreg_rtmr_1p15>;
+ vdd33-supply = <&vreg_rtmr_3p3>;
+ vdd33-cap-supply = <&vreg_rtmr_3p3>;
+ vddar-supply = <&vreg_rtmr_1p15>;
+ vddat-supply = <&vreg_rtmr_1p15>;
+ vddio-supply = <&vreg_rtmr_1p8>;
+
+ reset-gpios = <&tlmm 10 GPIO_ACTIVE_LOW>;
+
+ retimer-switch;
+ orientation-switch;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ endpoint {
+ remote-endpoint = <&typec_con_ss>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ endpoint {
+ remote-endpoint = <&usb_phy_ss>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ endpoint {
+ remote-endpoint = <&typec_dp_aux>;
+ };
+ };
+ };
+ };
+ };
+...
--
2.34.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v3 2/4] usb: typec: Add support for Parade PS8830 Type-C Retimer
2024-10-22 10:26 [PATCH v3 0/4] usb: typec: Add new driver for Parade PS8830 Type-C Retimer Abel Vesa
2024-10-22 10:26 ` [PATCH v3 1/4] dt-bindings: usb: Add Parade PS8830 Type-C retimer bindings Abel Vesa
@ 2024-10-22 10:26 ` Abel Vesa
2024-10-22 14:11 ` Heikki Krogerus
2024-10-22 10:26 ` [PATCH v3 3/4] arm64: dts: qcom: x1e80100-crd: Add Parade PS8830 related nodes Abel Vesa
` (2 subsequent siblings)
4 siblings, 1 reply; 13+ messages in thread
From: Abel Vesa @ 2024-10-22 10:26 UTC (permalink / raw)
To: Heikki Krogerus, Greg Kroah-Hartman, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, Bjorn Andersson, Konrad Dybcio, Rajendra Nayak,
Sibi Sankar, Johan Hovold, Dmitry Baryshkov, Trilok Soni,
linux-kernel, linux-usb, devicetree, Abel Vesa
The Parade PS8830 is a Type-C muti-protocol retimer controlled over I2C.
It provides both altmode and orientation handling.
Add a driver with support for the following modes:
- DP 4lanes
- DP 2lanes + USB3
- USB3
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
---
drivers/usb/typec/mux/Kconfig | 10 +
drivers/usb/typec/mux/Makefile | 1 +
drivers/usb/typec/mux/ps8830.c | 423 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 434 insertions(+)
diff --git a/drivers/usb/typec/mux/Kconfig b/drivers/usb/typec/mux/Kconfig
index ce7db6ad30572a0a74890f5f11944fb3ff07f635..48613b67f1c5dacd14d54baf91c3066377cf97be 100644
--- a/drivers/usb/typec/mux/Kconfig
+++ b/drivers/usb/typec/mux/Kconfig
@@ -56,6 +56,16 @@ config TYPEC_MUX_NB7VPQ904M
Say Y or M if your system has a On Semiconductor NB7VPQ904M Type-C
redriver chip found on some devices with a Type-C port.
+config TYPEC_MUX_PS8830
+ tristate "Parade PS8830 Type-C retimer driver"
+ depends on I2C
+ depends on DRM || DRM=n
+ select DRM_AUX_BRIDGE if DRM_BRIDGE && OF
+ select REGMAP_I2C
+ help
+ Say Y or M if your system has a Parade PS8830 Type-C retimer chip
+ found on some devices with a Type-C port.
+
config TYPEC_MUX_PTN36502
tristate "NXP PTN36502 Type-C redriver driver"
depends on I2C
diff --git a/drivers/usb/typec/mux/Makefile b/drivers/usb/typec/mux/Makefile
index bb96f30267af05b33b9277dcf1cc0e1527d2dcdd..4b23b12cfe45a0ff8a37f38c7ba050f572d556e7 100644
--- a/drivers/usb/typec/mux/Makefile
+++ b/drivers/usb/typec/mux/Makefile
@@ -6,5 +6,6 @@ obj-$(CONFIG_TYPEC_MUX_PI3USB30532) += pi3usb30532.o
obj-$(CONFIG_TYPEC_MUX_INTEL_PMC) += intel_pmc_mux.o
obj-$(CONFIG_TYPEC_MUX_IT5205) += it5205.o
obj-$(CONFIG_TYPEC_MUX_NB7VPQ904M) += nb7vpq904m.o
+obj-$(CONFIG_TYPEC_MUX_PS8830) += ps8830.o
obj-$(CONFIG_TYPEC_MUX_PTN36502) += ptn36502.o
obj-$(CONFIG_TYPEC_MUX_WCD939X_USBSS) += wcd939x-usbss.o
diff --git a/drivers/usb/typec/mux/ps8830.c b/drivers/usb/typec/mux/ps8830.c
new file mode 100644
index 0000000000000000000000000000000000000000..df83b2f3b562aec3794a27ca643325898c45c6ae
--- /dev/null
+++ b/drivers/usb/typec/mux/ps8830.c
@@ -0,0 +1,423 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Parade PS8830 usb retimer driver
+ *
+ * Copyright (C) 2024 Linaro Ltd.
+ */
+
+#include <drm/bridge/aux-bridge.h>
+#include <linux/clk.h>
+#include <linux/gpio/consumer.h>
+#include <linux/i2c.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/mutex.h>
+#include <linux/regmap.h>
+#include <linux/regulator/consumer.h>
+#include <linux/usb/typec_altmode.h>
+#include <linux/usb/typec_dp.h>
+#include <linux/usb/typec_mux.h>
+#include <linux/usb/typec_retimer.h>
+
+struct ps8830_retimer {
+ struct i2c_client *client;
+ struct gpio_desc *reset_gpio;
+ struct regmap *regmap;
+ struct typec_switch_dev *sw;
+ struct typec_retimer *retimer;
+ struct clk *xo_clk;
+ struct regulator *vdd_supply;
+ struct regulator *vdd33_supply;
+ struct regulator *vdd33_cap_supply;
+ struct regulator *vddat_supply;
+ struct regulator *vddar_supply;
+ struct regulator *vddio_supply;
+
+ struct typec_switch *typec_switch;
+ struct typec_mux *typec_mux;
+
+ struct mutex lock; /* protect non-concurrent retimer & switch */
+
+ enum typec_orientation orientation;
+ unsigned long mode;
+ unsigned int svid;
+};
+
+static void ps8830_write(struct ps8830_retimer *retimer, int cfg0, int cfg1, int cfg2)
+{
+ regmap_write(retimer->regmap, 0x0, cfg0);
+ regmap_write(retimer->regmap, 0x1, cfg1);
+ regmap_write(retimer->regmap, 0x2, cfg2);
+}
+
+static void ps8830_configure(struct ps8830_retimer *retimer, int cfg0, int cfg1, int cfg2)
+{
+ /* Write safe-mode config before switching to new config */
+ ps8830_write(retimer, 0x1, 0x0, 0x0);
+
+ ps8830_write(retimer, cfg0, cfg1, cfg2);
+}
+
+static int ps8380_set(struct ps8830_retimer *retimer)
+{
+ int cfg0 = 0x00;
+ int cfg1 = 0x00;
+ int cfg2 = 0x00;
+
+ if (retimer->orientation == TYPEC_ORIENTATION_NONE ||
+ retimer->mode == TYPEC_STATE_SAFE) {
+ ps8830_write(retimer, 0x1, 0x0, 0x0);
+ return 0;
+ }
+
+ if (retimer->mode != TYPEC_STATE_USB && retimer->svid != USB_TYPEC_DP_SID)
+ return -EINVAL;
+
+ if (retimer->orientation == TYPEC_ORIENTATION_NORMAL)
+ cfg0 = 0x01;
+ else
+ cfg0 = 0x03;
+
+ switch (retimer->mode) {
+ case TYPEC_STATE_USB:
+ cfg0 |= 0x20;
+ break;
+
+ case TYPEC_DP_STATE_C:
+ cfg1 = 0x85;
+ break;
+
+ case TYPEC_DP_STATE_D:
+ cfg0 |= 0x20;
+ cfg1 = 0x85;
+ break;
+
+ case TYPEC_DP_STATE_E:
+ cfg1 = 0x81;
+ break;
+
+ default:
+ return -EOPNOTSUPP;
+ }
+
+ ps8830_configure(retimer, cfg0, cfg1, cfg2);
+
+ return 0;
+}
+
+static int ps8830_sw_set(struct typec_switch_dev *sw,
+ enum typec_orientation orientation)
+{
+ struct ps8830_retimer *retimer = typec_switch_get_drvdata(sw);
+ int ret = 0;
+
+ ret = typec_switch_set(retimer->typec_switch, orientation);
+ if (ret)
+ return ret;
+
+ mutex_lock(&retimer->lock);
+
+ if (retimer->orientation != orientation) {
+ retimer->orientation = orientation;
+
+ ret = ps8380_set(retimer);
+ }
+
+ mutex_unlock(&retimer->lock);
+
+ return ret;
+}
+
+static int ps8830_retimer_set(struct typec_retimer *rtmr,
+ struct typec_retimer_state *state)
+{
+ struct ps8830_retimer *retimer = typec_retimer_get_drvdata(rtmr);
+ struct typec_mux_state mux_state;
+ int ret = 0;
+
+ mutex_lock(&retimer->lock);
+
+ if (state->mode != retimer->mode) {
+ retimer->mode = state->mode;
+
+ if (state->alt)
+ retimer->svid = state->alt->svid;
+ else
+ retimer->svid = 0; // No SVID
+
+ ret = ps8380_set(retimer);
+ }
+
+ mutex_unlock(&retimer->lock);
+
+ if (ret)
+ return ret;
+
+ mux_state.alt = state->alt;
+ mux_state.data = state->data;
+ mux_state.mode = state->mode;
+
+ return typec_mux_set(retimer->typec_mux, &mux_state);
+}
+
+static int ps8830_enable_vregs(struct ps8830_retimer *retimer)
+{
+ struct device *dev = &retimer->client->dev;
+ int ret;
+
+ ret = regulator_enable(retimer->vdd33_supply);
+ if (ret) {
+ dev_err(dev, "cannot enable VDD 3.3V regulator: %d\n", ret);
+ return ret;
+ }
+
+ ret = regulator_enable(retimer->vdd33_cap_supply);
+ if (ret) {
+ dev_err(dev, "cannot enable VDD 3.3V CAP regulator: %d\n", ret);
+ goto err_vdd33_disable;
+ }
+
+ usleep_range(4000, 10000);
+
+ ret = regulator_enable(retimer->vdd_supply);
+ if (ret) {
+ dev_err(dev, "cannot enable VDD regulator: %d\n", ret);
+ goto err_vdd33_cap_disable;
+ }
+
+ ret = regulator_enable(retimer->vddar_supply);
+ if (ret) {
+ dev_err(dev, "cannot enable VDD AR regulator: %d\n", ret);
+ goto err_vdd_disable;
+ }
+
+ ret = regulator_enable(retimer->vddat_supply);
+ if (ret) {
+ dev_err(dev, "cannot enable VDD AT regulator: %d\n", ret);
+ goto err_vddar_disable;
+ }
+
+ ret = regulator_enable(retimer->vddio_supply);
+ if (ret) {
+ dev_err(dev, "cannot enable VDD IO regulator: %d\n", ret);
+ goto err_vddat_disable;
+ }
+
+ return 0;
+
+err_vddat_disable:
+ regulator_disable(retimer->vddat_supply);
+err_vddar_disable:
+ regulator_disable(retimer->vddar_supply);
+err_vdd_disable:
+ regulator_disable(retimer->vdd_supply);
+err_vdd33_cap_disable:
+ regulator_disable(retimer->vdd33_cap_supply);
+err_vdd33_disable:
+ regulator_disable(retimer->vdd33_supply);
+
+ return ret;
+}
+
+static int ps8830_get_vregs(struct ps8830_retimer *retimer)
+{
+ struct device *dev = &retimer->client->dev;
+
+ retimer->vdd_supply = devm_regulator_get(dev, "vdd");
+ if (IS_ERR(retimer->vdd_supply))
+ return dev_err_probe(dev, PTR_ERR(retimer->vdd_supply),
+ "failed to get VDD\n");
+
+ retimer->vdd33_supply = devm_regulator_get(dev, "vdd33");
+ if (IS_ERR(retimer->vdd33_supply))
+ return dev_err_probe(dev, PTR_ERR(retimer->vdd33_supply),
+ "failed to get VDD 3.3V\n");
+
+ retimer->vdd33_cap_supply = devm_regulator_get(dev, "vdd33-cap");
+ if (IS_ERR(retimer->vdd33_cap_supply))
+ return dev_err_probe(dev, PTR_ERR(retimer->vdd33_cap_supply),
+ "failed to get VDD CAP 3.3V\n");
+
+ retimer->vddat_supply = devm_regulator_get(dev, "vddat");
+ if (IS_ERR(retimer->vddat_supply))
+ return dev_err_probe(dev, PTR_ERR(retimer->vddat_supply),
+ "failed to get VDD AT\n");
+
+ retimer->vddar_supply = devm_regulator_get(dev, "vddar");
+ if (IS_ERR(retimer->vddar_supply))
+ return dev_err_probe(dev, PTR_ERR(retimer->vddar_supply),
+ "failed to get VDD AR\n");
+
+ retimer->vddio_supply = devm_regulator_get(dev, "vddio");
+ if (IS_ERR(retimer->vddio_supply))
+ return dev_err_probe(dev, PTR_ERR(retimer->vddio_supply),
+ "failed to get VDD IO\n");
+
+ return 0;
+}
+
+static const struct regmap_config ps8830_retimer_regmap = {
+ .max_register = 0x1f,
+ .reg_bits = 8,
+ .val_bits = 8,
+ .cache_type = REGCACHE_FLAT,
+};
+
+static int ps8830_retimer_probe(struct i2c_client *client)
+{
+ struct device *dev = &client->dev;
+ struct typec_switch_desc sw_desc = { };
+ struct typec_retimer_desc rtmr_desc = { };
+ struct ps8830_retimer *retimer;
+ bool skip_reset = false;
+ int ret;
+
+ retimer = devm_kzalloc(dev, sizeof(*retimer), GFP_KERNEL);
+ if (!retimer)
+ return -ENOMEM;
+
+ retimer->client = client;
+
+ mutex_init(&retimer->lock);
+
+ if (of_property_read_bool(dev->of_node, "ps8830,boot-on"))
+ skip_reset = true;
+
+ retimer->regmap = devm_regmap_init_i2c(client, &ps8830_retimer_regmap);
+ if (IS_ERR(retimer->regmap)) {
+ ret = PTR_ERR(retimer->regmap);
+ dev_err(dev, "failed to allocate register map: %d\n", ret);
+ return ret;
+ }
+
+ ret = ps8830_get_vregs(retimer);
+ if (ret)
+ return ret;
+
+ retimer->xo_clk = devm_clk_get(dev, "xo");
+ if (IS_ERR(retimer->xo_clk))
+ return dev_err_probe(dev, PTR_ERR(retimer->xo_clk),
+ "failed to get xo clock\n");
+
+ retimer->reset_gpio = devm_gpiod_get(dev, "reset",
+ skip_reset ? GPIOD_OUT_LOW : GPIOD_OUT_HIGH);
+ if (IS_ERR(retimer->reset_gpio))
+ return dev_err_probe(dev, PTR_ERR(retimer->reset_gpio),
+ "failed to get reset gpio\n");
+
+ retimer->typec_switch = fwnode_typec_switch_get(dev->fwnode);
+ if (IS_ERR(retimer->typec_switch))
+ return dev_err_probe(dev, PTR_ERR(retimer->typec_switch),
+ "failed to acquire orientation-switch\n");
+
+ retimer->typec_mux = fwnode_typec_mux_get(dev->fwnode);
+ if (IS_ERR(retimer->typec_mux)) {
+ ret = dev_err_probe(dev, PTR_ERR(retimer->typec_mux),
+ "failed to acquire mode-mux\n");
+ goto err_switch_put;
+ }
+
+ sw_desc.drvdata = retimer;
+ sw_desc.fwnode = dev_fwnode(dev);
+ sw_desc.set = ps8830_sw_set;
+
+ ret = drm_aux_bridge_register(dev);
+ if (ret)
+ goto err_mux_put;
+
+ retimer->sw = typec_switch_register(dev, &sw_desc);
+ if (IS_ERR(retimer->sw)) {
+ ret = PTR_ERR(retimer->sw);
+ dev_err(dev, "failed to register typec switch: %d\n", ret);
+ goto err_aux_bridge_unregister;
+ }
+
+ rtmr_desc.drvdata = retimer;
+ rtmr_desc.fwnode = dev_fwnode(dev);
+ rtmr_desc.set = ps8830_retimer_set;
+
+ retimer->retimer = typec_retimer_register(dev, &rtmr_desc);
+ if (IS_ERR(retimer->retimer)) {
+ ret = PTR_ERR(retimer->retimer);
+ dev_err(dev, "failed to register typec retimer: %d\n", ret);
+ goto err_switch_unregister;
+ }
+
+ ret = clk_prepare_enable(retimer->xo_clk);
+ if (ret) {
+ dev_err(dev, "failed to enable XO: %d\n", ret);
+ goto err_retimer_unregister;
+ }
+
+ ret = ps8830_enable_vregs(retimer);
+ if (ret)
+ goto err_clk_disable;
+
+ /* delay needed as per datasheet */
+ usleep_range(4000, 14000);
+
+ if (!skip_reset)
+ gpiod_set_value(retimer->reset_gpio, 0);
+
+ return 0;
+
+err_clk_disable:
+ clk_disable_unprepare(retimer->xo_clk);
+err_retimer_unregister:
+ typec_retimer_unregister(retimer->retimer);
+err_switch_unregister:
+ typec_switch_unregister(retimer->sw);
+err_aux_bridge_unregister:
+ if (!skip_reset)
+ gpiod_set_value(retimer->reset_gpio, 1);
+
+ clk_disable_unprepare(retimer->xo_clk);
+err_mux_put:
+ typec_mux_put(retimer->typec_mux);
+err_switch_put:
+ typec_switch_put(retimer->typec_switch);
+
+ return ret;
+}
+
+static void ps8830_retimer_remove(struct i2c_client *client)
+{
+ struct ps8830_retimer *retimer = i2c_get_clientdata(client);
+
+ typec_retimer_unregister(retimer->retimer);
+ typec_switch_unregister(retimer->sw);
+
+ gpiod_set_value(retimer->reset_gpio, 1);
+
+ regulator_disable(retimer->vddio_supply);
+ regulator_disable(retimer->vddat_supply);
+ regulator_disable(retimer->vddar_supply);
+ regulator_disable(retimer->vdd_supply);
+ regulator_disable(retimer->vdd33_cap_supply);
+ regulator_disable(retimer->vdd33_supply);
+
+ clk_disable_unprepare(retimer->xo_clk);
+
+ typec_mux_put(retimer->typec_mux);
+ typec_switch_put(retimer->typec_switch);
+}
+
+static const struct of_device_id ps8830_retimer_of_table[] = {
+ { .compatible = "parade,ps8830" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, ps8830_retimer_of_table);
+
+static struct i2c_driver ps8830_retimer_driver = {
+ .driver = {
+ .name = "ps8830_retimer",
+ .of_match_table = ps8830_retimer_of_table,
+ },
+ .probe = ps8830_retimer_probe,
+ .remove = ps8830_retimer_remove,
+};
+
+module_i2c_driver(ps8830_retimer_driver);
+
+MODULE_DESCRIPTION("Parade PS8830 Type-C Retimer driver");
+MODULE_LICENSE("GPL");
--
2.34.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v3 3/4] arm64: dts: qcom: x1e80100-crd: Add Parade PS8830 related nodes
2024-10-22 10:26 [PATCH v3 0/4] usb: typec: Add new driver for Parade PS8830 Type-C Retimer Abel Vesa
2024-10-22 10:26 ` [PATCH v3 1/4] dt-bindings: usb: Add Parade PS8830 Type-C retimer bindings Abel Vesa
2024-10-22 10:26 ` [PATCH v3 2/4] usb: typec: Add support for Parade PS8830 Type-C Retimer Abel Vesa
@ 2024-10-22 10:26 ` Abel Vesa
2024-10-23 0:24 ` Bjorn Andersson
2024-10-22 10:26 ` [PATCH v3 4/4] arm64: dts: qcom: x1e80100-crd: Enable external DP Abel Vesa
2024-10-24 16:33 ` [PATCH v3 0/4] usb: typec: Add new driver for Parade PS8830 Type-C Retimer Rob Herring (Arm)
4 siblings, 1 reply; 13+ messages in thread
From: Abel Vesa @ 2024-10-22 10:26 UTC (permalink / raw)
To: Heikki Krogerus, Greg Kroah-Hartman, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, Bjorn Andersson, Konrad Dybcio, Rajendra Nayak,
Sibi Sankar, Johan Hovold, Dmitry Baryshkov, Trilok Soni,
linux-kernel, linux-usb, devicetree, Abel Vesa
Add nodes for all 3 Parade PS8830 Type-C retimers found on Qualcomm
X Elite CRD board, along with all of their voltage regulators. These
retimers sit between the Type-C connectors and the PHYs, so describe the
pmic glink graph accordingly. On this board, these retimers might be left
enabled and configured by the bootloader, so make sure the retimers don't
reset their configuration on driver probe.
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
---
arch/arm64/boot/dts/qcom/x1e80100-crd.dts | 448 +++++++++++++++++++++++++++++-
1 file changed, 442 insertions(+), 6 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/x1e80100-crd.dts b/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
index f5f2659690915f9ba50d15a27c54e3c0f504a14b..7cc45a5cd7eb7e70915d04ea7e181b56f693f768 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
+++ b/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
@@ -99,7 +99,15 @@ port@1 {
reg = <1>;
pmic_glink_ss0_ss_in: endpoint {
- remote-endpoint = <&usb_1_ss0_qmpphy_out>;
+ remote-endpoint = <&retimer_ss0_ss_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ pmic_glink_ss0_con_sbu_in: endpoint {
+ remote-endpoint = <&retimer_ss0_con_sbu_out>;
};
};
};
@@ -128,7 +136,15 @@ port@1 {
reg = <1>;
pmic_glink_ss1_ss_in: endpoint {
- remote-endpoint = <&usb_1_ss1_qmpphy_out>;
+ remote-endpoint = <&retimer_ss1_ss_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ pmic_glink_ss1_con_sbu_in: endpoint {
+ remote-endpoint = <&retimer_ss1_con_sbu_out>;
};
};
};
@@ -157,7 +173,15 @@ port@1 {
reg = <1>;
pmic_glink_ss2_ss_in: endpoint {
- remote-endpoint = <&usb_1_ss2_qmpphy_out>;
+ remote-endpoint = <&retimer_ss2_ss_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ pmic_glink_ss2_con_sbu_in: endpoint {
+ remote-endpoint = <&retimer_ss2_con_sbu_out>;
};
};
};
@@ -291,6 +315,150 @@ vreg_nvme: regulator-nvme {
pinctrl-0 = <&nvme_reg_en>;
};
+ vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR0_1P15";
+ regulator-min-microvolt = <1150000>;
+ regulator-max-microvolt = <1150000>;
+
+ gpio = <&pmc8380_5_gpios 8 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&rtmr0_1p15_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr0_1p8: regulator-rtmr0-1p8 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR0_1P8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+
+ gpio = <&pm8550ve_9_gpios 8 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&rtmr0_1p8_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr0_3p3: regulator-rtmr0-3p3 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR0_3P3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpio = <&pm8550_gpios 11 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&rtmr0_3p3_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr1_1p15: regulator-rtmr1-1p15 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR1_1P15";
+ regulator-min-microvolt = <1150000>;
+ regulator-max-microvolt = <1150000>;
+
+ gpio = <&tlmm 188 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&rtmr1_1p15_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr1_1p8: regulator-rtmr1-1p8 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR1_1P8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+
+ gpio = <&tlmm 175 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&rtmr1_1p8_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr1_3p3: regulator-rtmr1-3p3 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR1_3P3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpio = <&tlmm 186 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&rtmr1_3p3_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr2_1p15: regulator-rtmr2-1p15 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR2_1P15";
+ regulator-min-microvolt = <1150000>;
+ regulator-max-microvolt = <1150000>;
+
+ gpio = <&tlmm 189 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&rtmr2_1p15_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr2_1p8: regulator-rtmr2-1p8 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR2_1P8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+
+ gpio = <&tlmm 126 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&rtmr2_1p8_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr2_3p3: regulator-rtmr2-3p3 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR2_3P3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpio = <&tlmm 187 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&rtmr2_3p3_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
vph_pwr: regulator-vph-pwr {
compatible = "regulator-fixed";
@@ -709,6 +877,187 @@ keyboard@3a {
};
};
+&i2c1 {
+ clock-frequency = <400000>;
+
+ status = "okay";
+
+ typec-mux@8 {
+ compatible = "parade,ps8830";
+ reg = <0x08>;
+
+ clocks = <&rpmhcc RPMH_RF_CLK5>;
+ clock-names = "xo";
+
+ vdd-supply = <&vreg_rtmr2_1p15>;
+ vdd33-supply = <&vreg_rtmr2_3p3>;
+ vdd33-cap-supply = <&vreg_rtmr2_3p3>;
+ vddar-supply = <&vreg_rtmr2_1p15>;
+ vddat-supply = <&vreg_rtmr2_1p15>;
+ vddio-supply = <&vreg_rtmr2_1p8>;
+
+ reset-gpios = <&tlmm 185 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&rtmr2_default>;
+ pinctrl-names = "default";
+
+ orientation-switch;
+ retimer-switch;
+
+ ps8830,boot-on;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ retimer_ss2_ss_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss2_ss_in>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ retimer_ss2_ss_in: endpoint {
+ remote-endpoint = <&usb_1_ss2_qmpphy_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ retimer_ss2_con_sbu_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss2_con_sbu_in>;
+ };
+ };
+ };
+ };
+};
+
+&i2c3 {
+ clock-frequency = <400000>;
+
+ status = "okay";
+
+ typec-mux@8 {
+ compatible = "parade,ps8830";
+ reg = <0x08>;
+
+ clocks = <&rpmhcc RPMH_RF_CLK3>;
+ clock-names = "xo";
+
+ vdd-supply = <&vreg_rtmr0_1p15>;
+ vdd33-supply = <&vreg_rtmr0_3p3>;
+ vdd33-cap-supply = <&vreg_rtmr0_3p3>;
+ vddar-supply = <&vreg_rtmr0_1p15>;
+ vddat-supply = <&vreg_rtmr0_1p15>;
+ vddio-supply = <&vreg_rtmr0_1p8>;
+
+ reset-gpios = <&pm8550_gpios 10 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&rtmr0_default>;
+ pinctrl-names = "default";
+
+ retimer-switch;
+ orientation-switch;
+
+ ps8830,boot-on;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ retimer_ss0_ss_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss0_ss_in>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ retimer_ss0_ss_in: endpoint {
+ remote-endpoint = <&usb_1_ss0_qmpphy_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ retimer_ss0_con_sbu_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss0_con_sbu_in>;
+ };
+ };
+ };
+ };
+};
+
+&i2c7 {
+ clock-frequency = <400000>;
+
+ status = "okay";
+
+ typec-mux@8 {
+ compatible = "parade,ps8830";
+ reg = <0x8>;
+
+ clocks = <&rpmhcc RPMH_RF_CLK4>;
+ clock-names = "xo";
+
+ vdd-supply = <&vreg_rtmr1_1p15>;
+ vdd33-supply = <&vreg_rtmr1_3p3>;
+ vdd33-cap-supply = <&vreg_rtmr1_3p3>;
+ vddar-supply = <&vreg_rtmr1_1p15>;
+ vddat-supply = <&vreg_rtmr1_1p15>;
+ vddio-supply = <&vreg_rtmr1_1p8>;
+
+ reset-gpios = <&tlmm 176 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&rtmr1_default>;
+ pinctrl-names = "default";
+
+ retimer-switch;
+ orientation-switch;
+
+ ps8830,boot-on;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ retimer_ss1_ss_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss1_ss_in>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ retimer_ss1_ss_in: endpoint {
+ remote-endpoint = <&usb_1_ss1_qmpphy_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ retimer_ss1_con_sbu_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss1_con_sbu_in>;
+ };
+ };
+
+ };
+ };
+};
+
&i2c8 {
clock-frequency = <400000>;
@@ -854,6 +1203,37 @@ &pcie6a_phy {
status = "okay";
};
+&pm8550_gpios {
+ rtmr0_default: rtmr0-reset-n-active-state {
+ pins = "gpio10";
+ function = "normal";
+ power-source = <1>; /* 1.8V */
+ };
+
+ rtmr0_3p3_reg_en: rtmr0-3p3-reg-en-state {
+ pins = "gpio11";
+ function = "normal";
+ power-source = <1>; /* 1.8V */
+ };
+};
+
+&pmc8380_5_gpios {
+ rtmr0_1p15_reg_en: rtmr0-1p15-reg-en-state {
+ pins = "gpio8";
+ function = "normal";
+ power-source = <1>; /* 1.8V */
+ bias-disable;
+ };
+};
+
+&pm8550ve_9_gpios {
+ rtmr0_1p8_reg_en: rtmr0-1p8-reg-en-state {
+ pins = "gpio8";
+ function = "normal";
+ power-source = <1>; /* 1.8V */
+ };
+};
+
&pmc8380_3_gpios {
edp_bl_en: edp-bl-en-state {
pins = "gpio4";
@@ -1093,6 +1473,62 @@ wake-n-pins {
};
};
+ rtmr1_1p15_reg_en: rtmr1-1p15-reg-en-state {
+ pins = "gpio188";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rtmr1_1p8_reg_en: rtmr1-1p8-reg-en-state {
+ pins = "gpio175";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rtmr1_3p3_reg_en: rtmr1-3p3-reg-en-state {
+ pins = "gpio186";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rtmr1_default: rtmr1-reset-n-active-state {
+ pins = "gpio176";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rtmr2_1p15_reg_en: rtmr2-1p15-reg-en-state {
+ pins = "gpio189";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rtmr2_1p8_reg_en: rtmr2-1p8-reg-en-state {
+ pins = "gpio126";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rtmr2_3p3_reg_en: rtmr2-3p3-reg-en-state {
+ pins = "gpio187";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rtmr2_default: rtmr2-reset-n-active-state {
+ pins = "gpio185";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
tpad_default: tpad-default-state {
pins = "gpio3";
function = "gpio";
@@ -1160,7 +1596,7 @@ &usb_1_ss0_dwc3_hs {
};
&usb_1_ss0_qmpphy_out {
- remote-endpoint = <&pmic_glink_ss0_ss_in>;
+ remote-endpoint = <&retimer_ss0_ss_in>;
};
&usb_1_ss1_hsphy {
@@ -1188,7 +1624,7 @@ &usb_1_ss1_dwc3_hs {
};
&usb_1_ss1_qmpphy_out {
- remote-endpoint = <&pmic_glink_ss1_ss_in>;
+ remote-endpoint = <&retimer_ss1_ss_in>;
};
&usb_1_ss2_hsphy {
@@ -1216,5 +1652,5 @@ &usb_1_ss2_dwc3_hs {
};
&usb_1_ss2_qmpphy_out {
- remote-endpoint = <&pmic_glink_ss2_ss_in>;
+ remote-endpoint = <&retimer_ss2_ss_in>;
};
--
2.34.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v3 4/4] arm64: dts: qcom: x1e80100-crd: Enable external DP
2024-10-22 10:26 [PATCH v3 0/4] usb: typec: Add new driver for Parade PS8830 Type-C Retimer Abel Vesa
` (2 preceding siblings ...)
2024-10-22 10:26 ` [PATCH v3 3/4] arm64: dts: qcom: x1e80100-crd: Add Parade PS8830 related nodes Abel Vesa
@ 2024-10-22 10:26 ` Abel Vesa
2024-10-23 0:32 ` Bjorn Andersson
2024-10-24 16:33 ` [PATCH v3 0/4] usb: typec: Add new driver for Parade PS8830 Type-C Retimer Rob Herring (Arm)
4 siblings, 1 reply; 13+ messages in thread
From: Abel Vesa @ 2024-10-22 10:26 UTC (permalink / raw)
To: Heikki Krogerus, Greg Kroah-Hartman, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, Bjorn Andersson, Konrad Dybcio, Rajendra Nayak,
Sibi Sankar, Johan Hovold, Dmitry Baryshkov, Trilok Soni,
linux-kernel, linux-usb, devicetree, Abel Vesa
Enable the remaining MDSS DP instances and force 2 data lanes for each DP.
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
---
arch/arm64/boot/dts/qcom/x1e80100-crd.dts | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/x1e80100-crd.dts b/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
index 7cc45a5cd7eb7e70915d04ea7e181b56f693f768..db36e3e1a3660f3bcd7d7ddc8286e1ff5d00c94a 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
+++ b/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
@@ -1105,6 +1105,30 @@ &mdss {
status = "okay";
};
+&mdss_dp0 {
+ status = "okay";
+};
+
+&mdss_dp0_out {
+ data-lanes = <0 1>;
+};
+
+&mdss_dp1 {
+ status = "okay";
+};
+
+&mdss_dp1_out {
+ data-lanes = <0 1>;
+};
+
+&mdss_dp2 {
+ status = "okay";
+};
+
+&mdss_dp2_out {
+ data-lanes = <0 1>;
+};
+
&mdss_dp3 {
compatible = "qcom,x1e80100-dp";
/delete-property/ #sound-dai-cells;
--
2.34.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v3 2/4] usb: typec: Add support for Parade PS8830 Type-C Retimer
2024-10-22 10:26 ` [PATCH v3 2/4] usb: typec: Add support for Parade PS8830 Type-C Retimer Abel Vesa
@ 2024-10-22 14:11 ` Heikki Krogerus
0 siblings, 0 replies; 13+ messages in thread
From: Heikki Krogerus @ 2024-10-22 14:11 UTC (permalink / raw)
To: Abel Vesa
Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, Bjorn Andersson, Konrad Dybcio,
Rajendra Nayak, Sibi Sankar, Johan Hovold, Dmitry Baryshkov,
Trilok Soni, linux-kernel, linux-usb, devicetree
Hi,
Couple of nitpicks.
On Tue, Oct 22, 2024 at 01:26:55PM +0300, Abel Vesa wrote:
> +static int ps8830_retimer_probe(struct i2c_client *client)
> +{
> + struct device *dev = &client->dev;
> + struct typec_switch_desc sw_desc = { };
> + struct typec_retimer_desc rtmr_desc = { };
> + struct ps8830_retimer *retimer;
> + bool skip_reset = false;
> + int ret;
> +
> + retimer = devm_kzalloc(dev, sizeof(*retimer), GFP_KERNEL);
> + if (!retimer)
> + return -ENOMEM;
> +
> + retimer->client = client;
> +
> + mutex_init(&retimer->lock);
> +
> + if (of_property_read_bool(dev->of_node, "ps8830,boot-on"))
> + skip_reset = true;
skip_reset = device_property_present(dev, "ps8830,boot-on");
> + retimer->regmap = devm_regmap_init_i2c(client, &ps8830_retimer_regmap);
> + if (IS_ERR(retimer->regmap)) {
> + ret = PTR_ERR(retimer->regmap);
> + dev_err(dev, "failed to allocate register map: %d\n", ret);
> + return ret;
> + }
> +
> + ret = ps8830_get_vregs(retimer);
> + if (ret)
> + return ret;
> +
> + retimer->xo_clk = devm_clk_get(dev, "xo");
> + if (IS_ERR(retimer->xo_clk))
> + return dev_err_probe(dev, PTR_ERR(retimer->xo_clk),
> + "failed to get xo clock\n");
> +
> + retimer->reset_gpio = devm_gpiod_get(dev, "reset",
> + skip_reset ? GPIOD_OUT_LOW : GPIOD_OUT_HIGH);
> + if (IS_ERR(retimer->reset_gpio))
> + return dev_err_probe(dev, PTR_ERR(retimer->reset_gpio),
> + "failed to get reset gpio\n");
> +
> + retimer->typec_switch = fwnode_typec_switch_get(dev->fwnode);
retimer->typec_switch = typec_switch_get(dev);
> + if (IS_ERR(retimer->typec_switch))
> + return dev_err_probe(dev, PTR_ERR(retimer->typec_switch),
> + "failed to acquire orientation-switch\n");
> +
> + retimer->typec_mux = fwnode_typec_mux_get(dev->fwnode);
retimer->typec_mux = typec_mux_get(dev);
> + if (IS_ERR(retimer->typec_mux)) {
> + ret = dev_err_probe(dev, PTR_ERR(retimer->typec_mux),
> + "failed to acquire mode-mux\n");
> + goto err_switch_put;
> + }
> +
> + sw_desc.drvdata = retimer;
> + sw_desc.fwnode = dev_fwnode(dev);
> + sw_desc.set = ps8830_sw_set;
> +
> + ret = drm_aux_bridge_register(dev);
> + if (ret)
> + goto err_mux_put;
> +
> + retimer->sw = typec_switch_register(dev, &sw_desc);
> + if (IS_ERR(retimer->sw)) {
> + ret = PTR_ERR(retimer->sw);
> + dev_err(dev, "failed to register typec switch: %d\n", ret);
> + goto err_aux_bridge_unregister;
> + }
> +
> + rtmr_desc.drvdata = retimer;
> + rtmr_desc.fwnode = dev_fwnode(dev);
> + rtmr_desc.set = ps8830_retimer_set;
> +
> + retimer->retimer = typec_retimer_register(dev, &rtmr_desc);
> + if (IS_ERR(retimer->retimer)) {
> + ret = PTR_ERR(retimer->retimer);
> + dev_err(dev, "failed to register typec retimer: %d\n", ret);
> + goto err_switch_unregister;
> + }
> +
> + ret = clk_prepare_enable(retimer->xo_clk);
> + if (ret) {
> + dev_err(dev, "failed to enable XO: %d\n", ret);
> + goto err_retimer_unregister;
> + }
> +
> + ret = ps8830_enable_vregs(retimer);
> + if (ret)
> + goto err_clk_disable;
> +
> + /* delay needed as per datasheet */
> + usleep_range(4000, 14000);
> +
> + if (!skip_reset)
> + gpiod_set_value(retimer->reset_gpio, 0);
> +
> + return 0;
> +
> +err_clk_disable:
> + clk_disable_unprepare(retimer->xo_clk);
> +err_retimer_unregister:
> + typec_retimer_unregister(retimer->retimer);
> +err_switch_unregister:
> + typec_switch_unregister(retimer->sw);
> +err_aux_bridge_unregister:
> + if (!skip_reset)
> + gpiod_set_value(retimer->reset_gpio, 1);
> +
> + clk_disable_unprepare(retimer->xo_clk);
> +err_mux_put:
> + typec_mux_put(retimer->typec_mux);
> +err_switch_put:
> + typec_switch_put(retimer->typec_switch);
> +
> + return ret;
> +}
thanks,
--
heikki
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 1/4] dt-bindings: usb: Add Parade PS8830 Type-C retimer bindings
2024-10-22 10:26 ` [PATCH v3 1/4] dt-bindings: usb: Add Parade PS8830 Type-C retimer bindings Abel Vesa
@ 2024-10-22 16:30 ` Conor Dooley
2024-10-23 0:29 ` Bjorn Andersson
1 sibling, 0 replies; 13+ messages in thread
From: Conor Dooley @ 2024-10-22 16:30 UTC (permalink / raw)
To: Abel Vesa
Cc: Heikki Krogerus, Greg Kroah-Hartman, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, Bjorn Andersson,
Konrad Dybcio, Rajendra Nayak, Sibi Sankar, Johan Hovold,
Dmitry Baryshkov, Trilok Soni, linux-kernel, linux-usb,
devicetree
[-- Attachment #1: Type: text/plain, Size: 1598 bytes --]
On Tue, Oct 22, 2024 at 01:26:54PM +0300, Abel Vesa wrote:
> Document bindings for the Parade PS8830 Type-C retimer. This retimer is
> currently found on all boards featuring Qualcomm Snapdragon X Elite SoCs
> and it is needed to provide altmode muxing between DP and USB, but also
> connector orientation handling between.
>
> Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
> ---
> .../devicetree/bindings/usb/parade,ps8830.yaml | 129 +++++++++++++++++++++
> 1 file changed, 129 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/usb/parade,ps8830.yaml b/Documentation/devicetree/bindings/usb/parade,ps8830.yaml
> new file mode 100644
> index 0000000000000000000000000000000000000000..ee4c69eca6066e4da0373fad6c25d6e9fff83366
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/usb/parade,ps8830.yaml
> @@ -0,0 +1,129 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/usb/parade,ps8830.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Parade PS8830 USB and DisplayPort Retimer
> +
> +maintainers:
> + - Abel Vesa <abel.vesa@linaro.org>
> +
> +properties:
> + compatible:
> + enum:
> + - parade,ps8830
> +
> + reg:
> + maxItems: 1
> +
> + clocks:
> + items:
> + - description: XO Clock
> +
> + clock-names:
> + items:
> + - const: xo
> +
> + ps8830,boot-on:
The prefix here should be the vendor, not the model. How come whether or
not it is enabled at boot cannot be detected at runtime?
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 3/4] arm64: dts: qcom: x1e80100-crd: Add Parade PS8830 related nodes
2024-10-22 10:26 ` [PATCH v3 3/4] arm64: dts: qcom: x1e80100-crd: Add Parade PS8830 related nodes Abel Vesa
@ 2024-10-23 0:24 ` Bjorn Andersson
2024-10-23 7:51 ` Abel Vesa
0 siblings, 1 reply; 13+ messages in thread
From: Bjorn Andersson @ 2024-10-23 0:24 UTC (permalink / raw)
To: Abel Vesa
Cc: Heikki Krogerus, Greg Kroah-Hartman, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, Konrad Dybcio,
Rajendra Nayak, Sibi Sankar, Johan Hovold, Dmitry Baryshkov,
Trilok Soni, linux-kernel, linux-usb, devicetree
On Tue, Oct 22, 2024 at 01:26:56PM GMT, Abel Vesa wrote:
> Add nodes for all 3 Parade PS8830 Type-C retimers found on Qualcomm
> X Elite CRD board, along with all of their voltage regulators. These
> retimers sit between the Type-C connectors and the PHYs, so describe the
> pmic glink graph accordingly. On this board, these retimers might be left
^ Here would be a good point to split this hunk into two paragraphs.
> enabled and configured by the bootloader, so make sure the retimers don't
> reset their configuration on driver probe.
It would be nice if there was a hint here about how this statement
manifest itself in the patch.
Hint:
https://docs.kernel.org/process/submitting-patches.html#describe-your-changes
is a good read for how to structure ones commit message - with a problem
description, then a technical description of the change (i.e. probably
not something starting with the word "Add"...)
Regards,
Bjorn
>
> Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
> ---
> arch/arm64/boot/dts/qcom/x1e80100-crd.dts | 448 +++++++++++++++++++++++++++++-
> 1 file changed, 442 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/x1e80100-crd.dts b/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
> index f5f2659690915f9ba50d15a27c54e3c0f504a14b..7cc45a5cd7eb7e70915d04ea7e181b56f693f768 100644
> --- a/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
> +++ b/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
> @@ -99,7 +99,15 @@ port@1 {
> reg = <1>;
>
> pmic_glink_ss0_ss_in: endpoint {
> - remote-endpoint = <&usb_1_ss0_qmpphy_out>;
> + remote-endpoint = <&retimer_ss0_ss_out>;
> + };
> + };
> +
> + port@2 {
> + reg = <2>;
> +
> + pmic_glink_ss0_con_sbu_in: endpoint {
> + remote-endpoint = <&retimer_ss0_con_sbu_out>;
> };
> };
> };
> @@ -128,7 +136,15 @@ port@1 {
> reg = <1>;
>
> pmic_glink_ss1_ss_in: endpoint {
> - remote-endpoint = <&usb_1_ss1_qmpphy_out>;
> + remote-endpoint = <&retimer_ss1_ss_out>;
> + };
> + };
> +
> + port@2 {
> + reg = <2>;
> +
> + pmic_glink_ss1_con_sbu_in: endpoint {
> + remote-endpoint = <&retimer_ss1_con_sbu_out>;
> };
> };
> };
> @@ -157,7 +173,15 @@ port@1 {
> reg = <1>;
>
> pmic_glink_ss2_ss_in: endpoint {
> - remote-endpoint = <&usb_1_ss2_qmpphy_out>;
> + remote-endpoint = <&retimer_ss2_ss_out>;
> + };
> + };
> +
> + port@2 {
> + reg = <2>;
> +
> + pmic_glink_ss2_con_sbu_in: endpoint {
> + remote-endpoint = <&retimer_ss2_con_sbu_out>;
> };
> };
> };
> @@ -291,6 +315,150 @@ vreg_nvme: regulator-nvme {
> pinctrl-0 = <&nvme_reg_en>;
> };
>
> + vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
> + compatible = "regulator-fixed";
> +
> + regulator-name = "VREG_RTMR0_1P15";
> + regulator-min-microvolt = <1150000>;
> + regulator-max-microvolt = <1150000>;
> +
> + gpio = <&pmc8380_5_gpios 8 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-0 = <&rtmr0_1p15_reg_en>;
> + pinctrl-names = "default";
> +
> + regulator-boot-on;
> + };
> +
> + vreg_rtmr0_1p8: regulator-rtmr0-1p8 {
> + compatible = "regulator-fixed";
> +
> + regulator-name = "VREG_RTMR0_1P8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> +
> + gpio = <&pm8550ve_9_gpios 8 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-0 = <&rtmr0_1p8_reg_en>;
> + pinctrl-names = "default";
> +
> + regulator-boot-on;
> + };
> +
> + vreg_rtmr0_3p3: regulator-rtmr0-3p3 {
> + compatible = "regulator-fixed";
> +
> + regulator-name = "VREG_RTMR0_3P3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> +
> + gpio = <&pm8550_gpios 11 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-0 = <&rtmr0_3p3_reg_en>;
> + pinctrl-names = "default";
> +
> + regulator-boot-on;
> + };
> +
> + vreg_rtmr1_1p15: regulator-rtmr1-1p15 {
> + compatible = "regulator-fixed";
> +
> + regulator-name = "VREG_RTMR1_1P15";
> + regulator-min-microvolt = <1150000>;
> + regulator-max-microvolt = <1150000>;
> +
> + gpio = <&tlmm 188 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-0 = <&rtmr1_1p15_reg_en>;
> + pinctrl-names = "default";
> +
> + regulator-boot-on;
> + };
> +
> + vreg_rtmr1_1p8: regulator-rtmr1-1p8 {
> + compatible = "regulator-fixed";
> +
> + regulator-name = "VREG_RTMR1_1P8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> +
> + gpio = <&tlmm 175 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-0 = <&rtmr1_1p8_reg_en>;
> + pinctrl-names = "default";
> +
> + regulator-boot-on;
> + };
> +
> + vreg_rtmr1_3p3: regulator-rtmr1-3p3 {
> + compatible = "regulator-fixed";
> +
> + regulator-name = "VREG_RTMR1_3P3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> +
> + gpio = <&tlmm 186 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-0 = <&rtmr1_3p3_reg_en>;
> + pinctrl-names = "default";
> +
> + regulator-boot-on;
> + };
> +
> + vreg_rtmr2_1p15: regulator-rtmr2-1p15 {
> + compatible = "regulator-fixed";
> +
> + regulator-name = "VREG_RTMR2_1P15";
> + regulator-min-microvolt = <1150000>;
> + regulator-max-microvolt = <1150000>;
> +
> + gpio = <&tlmm 189 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-0 = <&rtmr2_1p15_reg_en>;
> + pinctrl-names = "default";
> +
> + regulator-boot-on;
> + };
> +
> + vreg_rtmr2_1p8: regulator-rtmr2-1p8 {
> + compatible = "regulator-fixed";
> +
> + regulator-name = "VREG_RTMR2_1P8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> +
> + gpio = <&tlmm 126 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-0 = <&rtmr2_1p8_reg_en>;
> + pinctrl-names = "default";
> +
> + regulator-boot-on;
> + };
> +
> + vreg_rtmr2_3p3: regulator-rtmr2-3p3 {
> + compatible = "regulator-fixed";
> +
> + regulator-name = "VREG_RTMR2_3P3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> +
> + gpio = <&tlmm 187 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-0 = <&rtmr2_3p3_reg_en>;
> + pinctrl-names = "default";
> +
> + regulator-boot-on;
> + };
> +
> vph_pwr: regulator-vph-pwr {
> compatible = "regulator-fixed";
>
> @@ -709,6 +877,187 @@ keyboard@3a {
> };
> };
>
> +&i2c1 {
> + clock-frequency = <400000>;
> +
> + status = "okay";
> +
> + typec-mux@8 {
> + compatible = "parade,ps8830";
> + reg = <0x08>;
> +
> + clocks = <&rpmhcc RPMH_RF_CLK5>;
> + clock-names = "xo";
> +
> + vdd-supply = <&vreg_rtmr2_1p15>;
> + vdd33-supply = <&vreg_rtmr2_3p3>;
> + vdd33-cap-supply = <&vreg_rtmr2_3p3>;
> + vddar-supply = <&vreg_rtmr2_1p15>;
> + vddat-supply = <&vreg_rtmr2_1p15>;
> + vddio-supply = <&vreg_rtmr2_1p8>;
> +
> + reset-gpios = <&tlmm 185 GPIO_ACTIVE_LOW>;
> +
> + pinctrl-0 = <&rtmr2_default>;
> + pinctrl-names = "default";
> +
> + orientation-switch;
> + retimer-switch;
> +
> + ps8830,boot-on;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + retimer_ss2_ss_out: endpoint {
> + remote-endpoint = <&pmic_glink_ss2_ss_in>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> +
> + retimer_ss2_ss_in: endpoint {
> + remote-endpoint = <&usb_1_ss2_qmpphy_out>;
> + };
> + };
> +
> + port@2 {
> + reg = <2>;
> +
> + retimer_ss2_con_sbu_out: endpoint {
> + remote-endpoint = <&pmic_glink_ss2_con_sbu_in>;
> + };
> + };
> + };
> + };
> +};
> +
> +&i2c3 {
> + clock-frequency = <400000>;
> +
> + status = "okay";
> +
> + typec-mux@8 {
> + compatible = "parade,ps8830";
> + reg = <0x08>;
> +
> + clocks = <&rpmhcc RPMH_RF_CLK3>;
> + clock-names = "xo";
> +
> + vdd-supply = <&vreg_rtmr0_1p15>;
> + vdd33-supply = <&vreg_rtmr0_3p3>;
> + vdd33-cap-supply = <&vreg_rtmr0_3p3>;
> + vddar-supply = <&vreg_rtmr0_1p15>;
> + vddat-supply = <&vreg_rtmr0_1p15>;
> + vddio-supply = <&vreg_rtmr0_1p8>;
> +
> + reset-gpios = <&pm8550_gpios 10 GPIO_ACTIVE_LOW>;
> +
> + pinctrl-0 = <&rtmr0_default>;
> + pinctrl-names = "default";
> +
> + retimer-switch;
> + orientation-switch;
> +
> + ps8830,boot-on;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + retimer_ss0_ss_out: endpoint {
> + remote-endpoint = <&pmic_glink_ss0_ss_in>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> +
> + retimer_ss0_ss_in: endpoint {
> + remote-endpoint = <&usb_1_ss0_qmpphy_out>;
> + };
> + };
> +
> + port@2 {
> + reg = <2>;
> +
> + retimer_ss0_con_sbu_out: endpoint {
> + remote-endpoint = <&pmic_glink_ss0_con_sbu_in>;
> + };
> + };
> + };
> + };
> +};
> +
> +&i2c7 {
> + clock-frequency = <400000>;
> +
> + status = "okay";
> +
> + typec-mux@8 {
> + compatible = "parade,ps8830";
> + reg = <0x8>;
> +
> + clocks = <&rpmhcc RPMH_RF_CLK4>;
> + clock-names = "xo";
> +
> + vdd-supply = <&vreg_rtmr1_1p15>;
> + vdd33-supply = <&vreg_rtmr1_3p3>;
> + vdd33-cap-supply = <&vreg_rtmr1_3p3>;
> + vddar-supply = <&vreg_rtmr1_1p15>;
> + vddat-supply = <&vreg_rtmr1_1p15>;
> + vddio-supply = <&vreg_rtmr1_1p8>;
> +
> + reset-gpios = <&tlmm 176 GPIO_ACTIVE_LOW>;
> +
> + pinctrl-0 = <&rtmr1_default>;
> + pinctrl-names = "default";
> +
> + retimer-switch;
> + orientation-switch;
> +
> + ps8830,boot-on;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + retimer_ss1_ss_out: endpoint {
> + remote-endpoint = <&pmic_glink_ss1_ss_in>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> +
> + retimer_ss1_ss_in: endpoint {
> + remote-endpoint = <&usb_1_ss1_qmpphy_out>;
> + };
> + };
> +
> + port@2 {
> + reg = <2>;
> +
> + retimer_ss1_con_sbu_out: endpoint {
> + remote-endpoint = <&pmic_glink_ss1_con_sbu_in>;
> + };
> + };
> +
> + };
> + };
> +};
> +
> &i2c8 {
> clock-frequency = <400000>;
>
> @@ -854,6 +1203,37 @@ &pcie6a_phy {
> status = "okay";
> };
>
> +&pm8550_gpios {
> + rtmr0_default: rtmr0-reset-n-active-state {
> + pins = "gpio10";
> + function = "normal";
> + power-source = <1>; /* 1.8V */
> + };
> +
> + rtmr0_3p3_reg_en: rtmr0-3p3-reg-en-state {
> + pins = "gpio11";
> + function = "normal";
> + power-source = <1>; /* 1.8V */
> + };
> +};
> +
> +&pmc8380_5_gpios {
> + rtmr0_1p15_reg_en: rtmr0-1p15-reg-en-state {
> + pins = "gpio8";
> + function = "normal";
> + power-source = <1>; /* 1.8V */
> + bias-disable;
> + };
> +};
> +
> +&pm8550ve_9_gpios {
> + rtmr0_1p8_reg_en: rtmr0-1p8-reg-en-state {
> + pins = "gpio8";
> + function = "normal";
> + power-source = <1>; /* 1.8V */
> + };
> +};
> +
> &pmc8380_3_gpios {
> edp_bl_en: edp-bl-en-state {
> pins = "gpio4";
> @@ -1093,6 +1473,62 @@ wake-n-pins {
> };
> };
>
> + rtmr1_1p15_reg_en: rtmr1-1p15-reg-en-state {
> + pins = "gpio188";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + rtmr1_1p8_reg_en: rtmr1-1p8-reg-en-state {
> + pins = "gpio175";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + rtmr1_3p3_reg_en: rtmr1-3p3-reg-en-state {
> + pins = "gpio186";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + rtmr1_default: rtmr1-reset-n-active-state {
> + pins = "gpio176";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + rtmr2_1p15_reg_en: rtmr2-1p15-reg-en-state {
> + pins = "gpio189";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + rtmr2_1p8_reg_en: rtmr2-1p8-reg-en-state {
> + pins = "gpio126";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + rtmr2_3p3_reg_en: rtmr2-3p3-reg-en-state {
> + pins = "gpio187";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + rtmr2_default: rtmr2-reset-n-active-state {
> + pins = "gpio185";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> tpad_default: tpad-default-state {
> pins = "gpio3";
> function = "gpio";
> @@ -1160,7 +1596,7 @@ &usb_1_ss0_dwc3_hs {
> };
>
> &usb_1_ss0_qmpphy_out {
> - remote-endpoint = <&pmic_glink_ss0_ss_in>;
> + remote-endpoint = <&retimer_ss0_ss_in>;
> };
>
> &usb_1_ss1_hsphy {
> @@ -1188,7 +1624,7 @@ &usb_1_ss1_dwc3_hs {
> };
>
> &usb_1_ss1_qmpphy_out {
> - remote-endpoint = <&pmic_glink_ss1_ss_in>;
> + remote-endpoint = <&retimer_ss1_ss_in>;
> };
>
> &usb_1_ss2_hsphy {
> @@ -1216,5 +1652,5 @@ &usb_1_ss2_dwc3_hs {
> };
>
> &usb_1_ss2_qmpphy_out {
> - remote-endpoint = <&pmic_glink_ss2_ss_in>;
> + remote-endpoint = <&retimer_ss2_ss_in>;
> };
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 1/4] dt-bindings: usb: Add Parade PS8830 Type-C retimer bindings
2024-10-22 10:26 ` [PATCH v3 1/4] dt-bindings: usb: Add Parade PS8830 Type-C retimer bindings Abel Vesa
2024-10-22 16:30 ` Conor Dooley
@ 2024-10-23 0:29 ` Bjorn Andersson
1 sibling, 0 replies; 13+ messages in thread
From: Bjorn Andersson @ 2024-10-23 0:29 UTC (permalink / raw)
To: Abel Vesa
Cc: Heikki Krogerus, Greg Kroah-Hartman, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, Konrad Dybcio,
Rajendra Nayak, Sibi Sankar, Johan Hovold, Dmitry Baryshkov,
Trilok Soni, linux-kernel, linux-usb, devicetree
On Tue, Oct 22, 2024 at 01:26:54PM GMT, Abel Vesa wrote:
> Document bindings for the Parade PS8830 Type-C retimer. This retimer is
> currently found on all boards featuring Qualcomm Snapdragon X Elite SoCs
> and it is needed to provide altmode muxing between DP and USB, but also
> connector orientation handling between.
This sentence ends a bit weird to me, please polish it (although
preferably, rewrite it according to "describe your changes")
>
> Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
> ---
> .../devicetree/bindings/usb/parade,ps8830.yaml | 129 +++++++++++++++++++++
> 1 file changed, 129 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/usb/parade,ps8830.yaml b/Documentation/devicetree/bindings/usb/parade,ps8830.yaml
> new file mode 100644
> index 0000000000000000000000000000000000000000..ee4c69eca6066e4da0373fad6c25d6e9fff83366
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/usb/parade,ps8830.yaml
> @@ -0,0 +1,129 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/usb/parade,ps8830.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Parade PS8830 USB and DisplayPort Retimer
> +
> +maintainers:
> + - Abel Vesa <abel.vesa@linaro.org>
> +
> +properties:
> + compatible:
> + enum:
> + - parade,ps8830
> +
> + reg:
> + maxItems: 1
> +
> + clocks:
> + items:
> + - description: XO Clock
> +
> + clock-names:
> + items:
> + - const: xo
Don't know if the guidelines has changed on this, but for a single clock
we used to omit clock-names, as it doesn't add any/much value.
Regards,
Bjorn
> +
> + ps8830,boot-on:
> + description: Left enabled at boot, so skip resetting
> + type: boolean
> +
> + reset-gpios:
> + maxItems: 1
> +
> + vdd-supply:
> + description: power supply (1.07V)
> +
> + vdd33-supply:
> + description: power supply (3.3V)
> +
> + vdd33-cap-supply:
> + description: power supply (3.3V)
> +
> + vddar-supply:
> + description: power supply (1.07V)
> +
> + vddat-supply:
> + description: power supply (1.07V)
> +
> + vddio-supply:
> + description: power supply (1.2V or 1.8V)
> +
> +required:
> + - compatible
> + - reg
> + - clocks
> + - clock-names
> + - reset-gpios
> + - vdd-supply
> + - vdd33-supply
> + - vdd33-cap-supply
> + - vddat-supply
> + - vddio-supply
> + - orientation-switch
> + - retimer-switch
> +
> +allOf:
> + - $ref: usb-switch.yaml#
> +
> +unevaluatedProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/gpio/gpio.h>
> +
> + i2c {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + typec-mux@8 {
> + compatible = "parade,ps8830";
> + reg = <0x8>;
> +
> + clocks = <&clk_rtmr_xo>;
> + clock-names = "xo";
> +
> + vdd-supply = <&vreg_rtmr_1p15>;
> + vdd33-supply = <&vreg_rtmr_3p3>;
> + vdd33-cap-supply = <&vreg_rtmr_3p3>;
> + vddar-supply = <&vreg_rtmr_1p15>;
> + vddat-supply = <&vreg_rtmr_1p15>;
> + vddio-supply = <&vreg_rtmr_1p8>;
> +
> + reset-gpios = <&tlmm 10 GPIO_ACTIVE_LOW>;
> +
> + retimer-switch;
> + orientation-switch;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + endpoint {
> + remote-endpoint = <&typec_con_ss>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> +
> + endpoint {
> + remote-endpoint = <&usb_phy_ss>;
> + };
> + };
> +
> + port@2 {
> + reg = <2>;
> +
> + endpoint {
> + remote-endpoint = <&typec_dp_aux>;
> + };
> + };
> + };
> + };
> + };
> +...
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: x1e80100-crd: Enable external DP
2024-10-22 10:26 ` [PATCH v3 4/4] arm64: dts: qcom: x1e80100-crd: Enable external DP Abel Vesa
@ 2024-10-23 0:32 ` Bjorn Andersson
2024-10-23 7:46 ` Abel Vesa
0 siblings, 1 reply; 13+ messages in thread
From: Bjorn Andersson @ 2024-10-23 0:32 UTC (permalink / raw)
To: Abel Vesa
Cc: Heikki Krogerus, Greg Kroah-Hartman, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, Konrad Dybcio,
Rajendra Nayak, Sibi Sankar, Johan Hovold, Dmitry Baryshkov,
Trilok Soni, linux-kernel, linux-usb, devicetree
On Tue, Oct 22, 2024 at 01:26:57PM GMT, Abel Vesa wrote:
> Enable the remaining MDSS DP instances and force 2 data lanes for each DP.
Please document why you're forcing 2 data lanes for each DP (should this
restriction remain when we add support for 4 lanes?) - and I would be
extra happy if you spelled out your abbreviations.
Regards,
Bjorn
>
> Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
> ---
> arch/arm64/boot/dts/qcom/x1e80100-crd.dts | 24 ++++++++++++++++++++++++
> 1 file changed, 24 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/x1e80100-crd.dts b/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
> index 7cc45a5cd7eb7e70915d04ea7e181b56f693f768..db36e3e1a3660f3bcd7d7ddc8286e1ff5d00c94a 100644
> --- a/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
> +++ b/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
> @@ -1105,6 +1105,30 @@ &mdss {
> status = "okay";
> };
>
> +&mdss_dp0 {
> + status = "okay";
> +};
> +
> +&mdss_dp0_out {
> + data-lanes = <0 1>;
> +};
> +
> +&mdss_dp1 {
> + status = "okay";
> +};
> +
> +&mdss_dp1_out {
> + data-lanes = <0 1>;
> +};
> +
> +&mdss_dp2 {
> + status = "okay";
> +};
> +
> +&mdss_dp2_out {
> + data-lanes = <0 1>;
> +};
> +
> &mdss_dp3 {
> compatible = "qcom,x1e80100-dp";
> /delete-property/ #sound-dai-cells;
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: x1e80100-crd: Enable external DP
2024-10-23 0:32 ` Bjorn Andersson
@ 2024-10-23 7:46 ` Abel Vesa
0 siblings, 0 replies; 13+ messages in thread
From: Abel Vesa @ 2024-10-23 7:46 UTC (permalink / raw)
To: Bjorn Andersson
Cc: Heikki Krogerus, Greg Kroah-Hartman, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, Konrad Dybcio,
Rajendra Nayak, Sibi Sankar, Johan Hovold, Dmitry Baryshkov,
Trilok Soni, linux-kernel, linux-usb, devicetree
On 24-10-22 19:32:18, Bjorn Andersson wrote:
> On Tue, Oct 22, 2024 at 01:26:57PM GMT, Abel Vesa wrote:
> > Enable the remaining MDSS DP instances and force 2 data lanes for each DP.
>
> Please document why you're forcing 2 data lanes for each DP (should this
> restriction remain when we add support for 4 lanes?) - and I would be
> extra happy if you spelled out your abbreviations.
Will do.
>
> Regards,
> Bjorn
Thanks for reviewing.
Abel
>
> >
> > Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
> > ---
> > arch/arm64/boot/dts/qcom/x1e80100-crd.dts | 24 ++++++++++++++++++++++++
> > 1 file changed, 24 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/x1e80100-crd.dts b/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
> > index 7cc45a5cd7eb7e70915d04ea7e181b56f693f768..db36e3e1a3660f3bcd7d7ddc8286e1ff5d00c94a 100644
> > --- a/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
> > +++ b/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
> > @@ -1105,6 +1105,30 @@ &mdss {
> > status = "okay";
> > };
> >
> > +&mdss_dp0 {
> > + status = "okay";
> > +};
> > +
> > +&mdss_dp0_out {
> > + data-lanes = <0 1>;
> > +};
> > +
> > +&mdss_dp1 {
> > + status = "okay";
> > +};
> > +
> > +&mdss_dp1_out {
> > + data-lanes = <0 1>;
> > +};
> > +
> > +&mdss_dp2 {
> > + status = "okay";
> > +};
> > +
> > +&mdss_dp2_out {
> > + data-lanes = <0 1>;
> > +};
> > +
> > &mdss_dp3 {
> > compatible = "qcom,x1e80100-dp";
> > /delete-property/ #sound-dai-cells;
> >
> > --
> > 2.34.1
> >
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 3/4] arm64: dts: qcom: x1e80100-crd: Add Parade PS8830 related nodes
2024-10-23 0:24 ` Bjorn Andersson
@ 2024-10-23 7:51 ` Abel Vesa
0 siblings, 0 replies; 13+ messages in thread
From: Abel Vesa @ 2024-10-23 7:51 UTC (permalink / raw)
To: Bjorn Andersson
Cc: Heikki Krogerus, Greg Kroah-Hartman, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, Konrad Dybcio,
Rajendra Nayak, Sibi Sankar, Johan Hovold, Dmitry Baryshkov,
Trilok Soni, linux-kernel, linux-usb, devicetree
On 24-10-22 19:24:19, Bjorn Andersson wrote:
> On Tue, Oct 22, 2024 at 01:26:56PM GMT, Abel Vesa wrote:
> > Add nodes for all 3 Parade PS8830 Type-C retimers found on Qualcomm
> > X Elite CRD board, along with all of their voltage regulators. These
> > retimers sit between the Type-C connectors and the PHYs, so describe the
> > pmic glink graph accordingly. On this board, these retimers might be left
> ^ Here would be a good point to split this hunk into two paragraphs.
Will do.
>
> > enabled and configured by the bootloader, so make sure the retimers don't
> > reset their configuration on driver probe.
>
> It would be nice if there was a hint here about how this statement
> manifest itself in the patch.
I'll add the property in the phrasing.
>
>
> Hint:
> https://docs.kernel.org/process/submitting-patches.html#describe-your-changes
> is a good read for how to structure ones commit message - with a problem
> description, then a technical description of the change (i.e. probably
> not something starting with the word "Add"...)
Sure, will reword with "Describe all 3 Parade ...".
>
> Regards,
> Bjorn
Thanks for reviewing.
Abel
>
> >
> > Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
> > ---
> > arch/arm64/boot/dts/qcom/x1e80100-crd.dts | 448 +++++++++++++++++++++++++++++-
> > 1 file changed, 442 insertions(+), 6 deletions(-)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/x1e80100-crd.dts b/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
> > index f5f2659690915f9ba50d15a27c54e3c0f504a14b..7cc45a5cd7eb7e70915d04ea7e181b56f693f768 100644
> > --- a/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
> > +++ b/arch/arm64/boot/dts/qcom/x1e80100-crd.dts
> > @@ -99,7 +99,15 @@ port@1 {
> > reg = <1>;
> >
> > pmic_glink_ss0_ss_in: endpoint {
> > - remote-endpoint = <&usb_1_ss0_qmpphy_out>;
> > + remote-endpoint = <&retimer_ss0_ss_out>;
> > + };
> > + };
> > +
> > + port@2 {
> > + reg = <2>;
> > +
> > + pmic_glink_ss0_con_sbu_in: endpoint {
> > + remote-endpoint = <&retimer_ss0_con_sbu_out>;
> > };
> > };
> > };
> > @@ -128,7 +136,15 @@ port@1 {
> > reg = <1>;
> >
> > pmic_glink_ss1_ss_in: endpoint {
> > - remote-endpoint = <&usb_1_ss1_qmpphy_out>;
> > + remote-endpoint = <&retimer_ss1_ss_out>;
> > + };
> > + };
> > +
> > + port@2 {
> > + reg = <2>;
> > +
> > + pmic_glink_ss1_con_sbu_in: endpoint {
> > + remote-endpoint = <&retimer_ss1_con_sbu_out>;
> > };
> > };
> > };
> > @@ -157,7 +173,15 @@ port@1 {
> > reg = <1>;
> >
> > pmic_glink_ss2_ss_in: endpoint {
> > - remote-endpoint = <&usb_1_ss2_qmpphy_out>;
> > + remote-endpoint = <&retimer_ss2_ss_out>;
> > + };
> > + };
> > +
> > + port@2 {
> > + reg = <2>;
> > +
> > + pmic_glink_ss2_con_sbu_in: endpoint {
> > + remote-endpoint = <&retimer_ss2_con_sbu_out>;
> > };
> > };
> > };
> > @@ -291,6 +315,150 @@ vreg_nvme: regulator-nvme {
> > pinctrl-0 = <&nvme_reg_en>;
> > };
> >
> > + vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
> > + compatible = "regulator-fixed";
> > +
> > + regulator-name = "VREG_RTMR0_1P15";
> > + regulator-min-microvolt = <1150000>;
> > + regulator-max-microvolt = <1150000>;
> > +
> > + gpio = <&pmc8380_5_gpios 8 GPIO_ACTIVE_HIGH>;
> > + enable-active-high;
> > +
> > + pinctrl-0 = <&rtmr0_1p15_reg_en>;
> > + pinctrl-names = "default";
> > +
> > + regulator-boot-on;
> > + };
> > +
> > + vreg_rtmr0_1p8: regulator-rtmr0-1p8 {
> > + compatible = "regulator-fixed";
> > +
> > + regulator-name = "VREG_RTMR0_1P8";
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > +
> > + gpio = <&pm8550ve_9_gpios 8 GPIO_ACTIVE_HIGH>;
> > + enable-active-high;
> > +
> > + pinctrl-0 = <&rtmr0_1p8_reg_en>;
> > + pinctrl-names = "default";
> > +
> > + regulator-boot-on;
> > + };
> > +
> > + vreg_rtmr0_3p3: regulator-rtmr0-3p3 {
> > + compatible = "regulator-fixed";
> > +
> > + regulator-name = "VREG_RTMR0_3P3";
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > +
> > + gpio = <&pm8550_gpios 11 GPIO_ACTIVE_HIGH>;
> > + enable-active-high;
> > +
> > + pinctrl-0 = <&rtmr0_3p3_reg_en>;
> > + pinctrl-names = "default";
> > +
> > + regulator-boot-on;
> > + };
> > +
> > + vreg_rtmr1_1p15: regulator-rtmr1-1p15 {
> > + compatible = "regulator-fixed";
> > +
> > + regulator-name = "VREG_RTMR1_1P15";
> > + regulator-min-microvolt = <1150000>;
> > + regulator-max-microvolt = <1150000>;
> > +
> > + gpio = <&tlmm 188 GPIO_ACTIVE_HIGH>;
> > + enable-active-high;
> > +
> > + pinctrl-0 = <&rtmr1_1p15_reg_en>;
> > + pinctrl-names = "default";
> > +
> > + regulator-boot-on;
> > + };
> > +
> > + vreg_rtmr1_1p8: regulator-rtmr1-1p8 {
> > + compatible = "regulator-fixed";
> > +
> > + regulator-name = "VREG_RTMR1_1P8";
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > +
> > + gpio = <&tlmm 175 GPIO_ACTIVE_HIGH>;
> > + enable-active-high;
> > +
> > + pinctrl-0 = <&rtmr1_1p8_reg_en>;
> > + pinctrl-names = "default";
> > +
> > + regulator-boot-on;
> > + };
> > +
> > + vreg_rtmr1_3p3: regulator-rtmr1-3p3 {
> > + compatible = "regulator-fixed";
> > +
> > + regulator-name = "VREG_RTMR1_3P3";
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > +
> > + gpio = <&tlmm 186 GPIO_ACTIVE_HIGH>;
> > + enable-active-high;
> > +
> > + pinctrl-0 = <&rtmr1_3p3_reg_en>;
> > + pinctrl-names = "default";
> > +
> > + regulator-boot-on;
> > + };
> > +
> > + vreg_rtmr2_1p15: regulator-rtmr2-1p15 {
> > + compatible = "regulator-fixed";
> > +
> > + regulator-name = "VREG_RTMR2_1P15";
> > + regulator-min-microvolt = <1150000>;
> > + regulator-max-microvolt = <1150000>;
> > +
> > + gpio = <&tlmm 189 GPIO_ACTIVE_HIGH>;
> > + enable-active-high;
> > +
> > + pinctrl-0 = <&rtmr2_1p15_reg_en>;
> > + pinctrl-names = "default";
> > +
> > + regulator-boot-on;
> > + };
> > +
> > + vreg_rtmr2_1p8: regulator-rtmr2-1p8 {
> > + compatible = "regulator-fixed";
> > +
> > + regulator-name = "VREG_RTMR2_1P8";
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > +
> > + gpio = <&tlmm 126 GPIO_ACTIVE_HIGH>;
> > + enable-active-high;
> > +
> > + pinctrl-0 = <&rtmr2_1p8_reg_en>;
> > + pinctrl-names = "default";
> > +
> > + regulator-boot-on;
> > + };
> > +
> > + vreg_rtmr2_3p3: regulator-rtmr2-3p3 {
> > + compatible = "regulator-fixed";
> > +
> > + regulator-name = "VREG_RTMR2_3P3";
> > + regulator-min-microvolt = <3300000>;
> > + regulator-max-microvolt = <3300000>;
> > +
> > + gpio = <&tlmm 187 GPIO_ACTIVE_HIGH>;
> > + enable-active-high;
> > +
> > + pinctrl-0 = <&rtmr2_3p3_reg_en>;
> > + pinctrl-names = "default";
> > +
> > + regulator-boot-on;
> > + };
> > +
> > vph_pwr: regulator-vph-pwr {
> > compatible = "regulator-fixed";
> >
> > @@ -709,6 +877,187 @@ keyboard@3a {
> > };
> > };
> >
> > +&i2c1 {
> > + clock-frequency = <400000>;
> > +
> > + status = "okay";
> > +
> > + typec-mux@8 {
> > + compatible = "parade,ps8830";
> > + reg = <0x08>;
> > +
> > + clocks = <&rpmhcc RPMH_RF_CLK5>;
> > + clock-names = "xo";
> > +
> > + vdd-supply = <&vreg_rtmr2_1p15>;
> > + vdd33-supply = <&vreg_rtmr2_3p3>;
> > + vdd33-cap-supply = <&vreg_rtmr2_3p3>;
> > + vddar-supply = <&vreg_rtmr2_1p15>;
> > + vddat-supply = <&vreg_rtmr2_1p15>;
> > + vddio-supply = <&vreg_rtmr2_1p8>;
> > +
> > + reset-gpios = <&tlmm 185 GPIO_ACTIVE_LOW>;
> > +
> > + pinctrl-0 = <&rtmr2_default>;
> > + pinctrl-names = "default";
> > +
> > + orientation-switch;
> > + retimer-switch;
> > +
> > + ps8830,boot-on;
> > +
> > + ports {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + port@0 {
> > + reg = <0>;
> > +
> > + retimer_ss2_ss_out: endpoint {
> > + remote-endpoint = <&pmic_glink_ss2_ss_in>;
> > + };
> > + };
> > +
> > + port@1 {
> > + reg = <1>;
> > +
> > + retimer_ss2_ss_in: endpoint {
> > + remote-endpoint = <&usb_1_ss2_qmpphy_out>;
> > + };
> > + };
> > +
> > + port@2 {
> > + reg = <2>;
> > +
> > + retimer_ss2_con_sbu_out: endpoint {
> > + remote-endpoint = <&pmic_glink_ss2_con_sbu_in>;
> > + };
> > + };
> > + };
> > + };
> > +};
> > +
> > +&i2c3 {
> > + clock-frequency = <400000>;
> > +
> > + status = "okay";
> > +
> > + typec-mux@8 {
> > + compatible = "parade,ps8830";
> > + reg = <0x08>;
> > +
> > + clocks = <&rpmhcc RPMH_RF_CLK3>;
> > + clock-names = "xo";
> > +
> > + vdd-supply = <&vreg_rtmr0_1p15>;
> > + vdd33-supply = <&vreg_rtmr0_3p3>;
> > + vdd33-cap-supply = <&vreg_rtmr0_3p3>;
> > + vddar-supply = <&vreg_rtmr0_1p15>;
> > + vddat-supply = <&vreg_rtmr0_1p15>;
> > + vddio-supply = <&vreg_rtmr0_1p8>;
> > +
> > + reset-gpios = <&pm8550_gpios 10 GPIO_ACTIVE_LOW>;
> > +
> > + pinctrl-0 = <&rtmr0_default>;
> > + pinctrl-names = "default";
> > +
> > + retimer-switch;
> > + orientation-switch;
> > +
> > + ps8830,boot-on;
> > +
> > + ports {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + port@0 {
> > + reg = <0>;
> > +
> > + retimer_ss0_ss_out: endpoint {
> > + remote-endpoint = <&pmic_glink_ss0_ss_in>;
> > + };
> > + };
> > +
> > + port@1 {
> > + reg = <1>;
> > +
> > + retimer_ss0_ss_in: endpoint {
> > + remote-endpoint = <&usb_1_ss0_qmpphy_out>;
> > + };
> > + };
> > +
> > + port@2 {
> > + reg = <2>;
> > +
> > + retimer_ss0_con_sbu_out: endpoint {
> > + remote-endpoint = <&pmic_glink_ss0_con_sbu_in>;
> > + };
> > + };
> > + };
> > + };
> > +};
> > +
> > +&i2c7 {
> > + clock-frequency = <400000>;
> > +
> > + status = "okay";
> > +
> > + typec-mux@8 {
> > + compatible = "parade,ps8830";
> > + reg = <0x8>;
> > +
> > + clocks = <&rpmhcc RPMH_RF_CLK4>;
> > + clock-names = "xo";
> > +
> > + vdd-supply = <&vreg_rtmr1_1p15>;
> > + vdd33-supply = <&vreg_rtmr1_3p3>;
> > + vdd33-cap-supply = <&vreg_rtmr1_3p3>;
> > + vddar-supply = <&vreg_rtmr1_1p15>;
> > + vddat-supply = <&vreg_rtmr1_1p15>;
> > + vddio-supply = <&vreg_rtmr1_1p8>;
> > +
> > + reset-gpios = <&tlmm 176 GPIO_ACTIVE_LOW>;
> > +
> > + pinctrl-0 = <&rtmr1_default>;
> > + pinctrl-names = "default";
> > +
> > + retimer-switch;
> > + orientation-switch;
> > +
> > + ps8830,boot-on;
> > +
> > + ports {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + port@0 {
> > + reg = <0>;
> > +
> > + retimer_ss1_ss_out: endpoint {
> > + remote-endpoint = <&pmic_glink_ss1_ss_in>;
> > + };
> > + };
> > +
> > + port@1 {
> > + reg = <1>;
> > +
> > + retimer_ss1_ss_in: endpoint {
> > + remote-endpoint = <&usb_1_ss1_qmpphy_out>;
> > + };
> > + };
> > +
> > + port@2 {
> > + reg = <2>;
> > +
> > + retimer_ss1_con_sbu_out: endpoint {
> > + remote-endpoint = <&pmic_glink_ss1_con_sbu_in>;
> > + };
> > + };
> > +
> > + };
> > + };
> > +};
> > +
> > &i2c8 {
> > clock-frequency = <400000>;
> >
> > @@ -854,6 +1203,37 @@ &pcie6a_phy {
> > status = "okay";
> > };
> >
> > +&pm8550_gpios {
> > + rtmr0_default: rtmr0-reset-n-active-state {
> > + pins = "gpio10";
> > + function = "normal";
> > + power-source = <1>; /* 1.8V */
> > + };
> > +
> > + rtmr0_3p3_reg_en: rtmr0-3p3-reg-en-state {
> > + pins = "gpio11";
> > + function = "normal";
> > + power-source = <1>; /* 1.8V */
> > + };
> > +};
> > +
> > +&pmc8380_5_gpios {
> > + rtmr0_1p15_reg_en: rtmr0-1p15-reg-en-state {
> > + pins = "gpio8";
> > + function = "normal";
> > + power-source = <1>; /* 1.8V */
> > + bias-disable;
> > + };
> > +};
> > +
> > +&pm8550ve_9_gpios {
> > + rtmr0_1p8_reg_en: rtmr0-1p8-reg-en-state {
> > + pins = "gpio8";
> > + function = "normal";
> > + power-source = <1>; /* 1.8V */
> > + };
> > +};
> > +
> > &pmc8380_3_gpios {
> > edp_bl_en: edp-bl-en-state {
> > pins = "gpio4";
> > @@ -1093,6 +1473,62 @@ wake-n-pins {
> > };
> > };
> >
> > + rtmr1_1p15_reg_en: rtmr1-1p15-reg-en-state {
> > + pins = "gpio188";
> > + function = "gpio";
> > + drive-strength = <2>;
> > + bias-disable;
> > + };
> > +
> > + rtmr1_1p8_reg_en: rtmr1-1p8-reg-en-state {
> > + pins = "gpio175";
> > + function = "gpio";
> > + drive-strength = <2>;
> > + bias-disable;
> > + };
> > +
> > + rtmr1_3p3_reg_en: rtmr1-3p3-reg-en-state {
> > + pins = "gpio186";
> > + function = "gpio";
> > + drive-strength = <2>;
> > + bias-disable;
> > + };
> > +
> > + rtmr1_default: rtmr1-reset-n-active-state {
> > + pins = "gpio176";
> > + function = "gpio";
> > + drive-strength = <2>;
> > + bias-disable;
> > + };
> > +
> > + rtmr2_1p15_reg_en: rtmr2-1p15-reg-en-state {
> > + pins = "gpio189";
> > + function = "gpio";
> > + drive-strength = <2>;
> > + bias-disable;
> > + };
> > +
> > + rtmr2_1p8_reg_en: rtmr2-1p8-reg-en-state {
> > + pins = "gpio126";
> > + function = "gpio";
> > + drive-strength = <2>;
> > + bias-disable;
> > + };
> > +
> > + rtmr2_3p3_reg_en: rtmr2-3p3-reg-en-state {
> > + pins = "gpio187";
> > + function = "gpio";
> > + drive-strength = <2>;
> > + bias-disable;
> > + };
> > +
> > + rtmr2_default: rtmr2-reset-n-active-state {
> > + pins = "gpio185";
> > + function = "gpio";
> > + drive-strength = <2>;
> > + bias-disable;
> > + };
> > +
> > tpad_default: tpad-default-state {
> > pins = "gpio3";
> > function = "gpio";
> > @@ -1160,7 +1596,7 @@ &usb_1_ss0_dwc3_hs {
> > };
> >
> > &usb_1_ss0_qmpphy_out {
> > - remote-endpoint = <&pmic_glink_ss0_ss_in>;
> > + remote-endpoint = <&retimer_ss0_ss_in>;
> > };
> >
> > &usb_1_ss1_hsphy {
> > @@ -1188,7 +1624,7 @@ &usb_1_ss1_dwc3_hs {
> > };
> >
> > &usb_1_ss1_qmpphy_out {
> > - remote-endpoint = <&pmic_glink_ss1_ss_in>;
> > + remote-endpoint = <&retimer_ss1_ss_in>;
> > };
> >
> > &usb_1_ss2_hsphy {
> > @@ -1216,5 +1652,5 @@ &usb_1_ss2_dwc3_hs {
> > };
> >
> > &usb_1_ss2_qmpphy_out {
> > - remote-endpoint = <&pmic_glink_ss2_ss_in>;
> > + remote-endpoint = <&retimer_ss2_ss_in>;
> > };
> >
> > --
> > 2.34.1
> >
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 0/4] usb: typec: Add new driver for Parade PS8830 Type-C Retimer
2024-10-22 10:26 [PATCH v3 0/4] usb: typec: Add new driver for Parade PS8830 Type-C Retimer Abel Vesa
` (3 preceding siblings ...)
2024-10-22 10:26 ` [PATCH v3 4/4] arm64: dts: qcom: x1e80100-crd: Enable external DP Abel Vesa
@ 2024-10-24 16:33 ` Rob Herring (Arm)
4 siblings, 0 replies; 13+ messages in thread
From: Rob Herring (Arm) @ 2024-10-24 16:33 UTC (permalink / raw)
To: Abel Vesa
Cc: Bjorn Andersson, Conor Dooley, Rajendra Nayak, linux-usb,
Krzysztof Kozlowski, linux-kernel, Heikki Krogerus, Konrad Dybcio,
linux-arm-msm, Sibi Sankar, Dmitry Baryshkov, devicetree,
Johan Hovold, Trilok Soni, Greg Kroah-Hartman
On Tue, 22 Oct 2024 13:26:53 +0300, Abel Vesa wrote:
> The Parade PS8830 is a Type-C multi-protocol retimer that is controlled
> via I2C. It provides altmode and orientation handling and usually sits
> between the Type-C port and the PHY.
>
> It is currently used alongside Qualcomm Snapdragon X Elite SoCs on quite
> a few laptops already.
>
> This new driver adds support for the following 3 modes:
> - DP 4lanes (pin assignments C and E)
> - DP 2lanes + USB3 (pin assignment D)
> - USB3
>
> This retimer is a LTTPR (Link-Training Tunable PHY Repeater) which means
> it can support link training from source to itself. This means that the
> DP driver needs to be aware of the repeater presence and to handle
> the link training accordingly. This is currently missing from msm dp
> driver, but there is already effort going on to add it. Once done,
> full external DP will be working on all X1E laptops that make use of
> this retimer.
>
> NOTE: Currently, due to both LTTPR missing support in msm DP and a
> reported crash that can happen on DP unplug, the DP DT patch is not
> supposed to be merged yet. That patch is only shared for testing purposes.
> Once those 2 issues have been resolved, the MDSS DP 0-2 enablement patch
> will be respun.
>
> Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
> ---
> Changes in v3:
> - Reworked the schema binding by using the usb/usb-switch.yaml defined
> port graph and properties. Addressed all comments from Johan and
> Dmitry.
> - Dropped the manual caching of the config values on regmap write in the
> driver.
> - Reordered the DP pin assignment states within the switch clause, as
> Dmitry suggested.
> - Added SVID check to not allow any altmode other than DP.
> - Added DT patches (retimer for USB orientation handling and DP
> enablement). Did this in order to offer a full picture of how it all
> fits together.
> - Split the DP enablement in DT in a separate patchset so the USB
> handling can be merged separately.
> - Added ps8830,boot-on to let the driver know it is supposed to skip
> resetting the retimer on driver probe, as the bootloader might already
> let it in a pre-configured state.
> - Marked all retimer voltage regulators as boot-on since we want to
> maintain the state for coldplug orientation.
> - Added pinconf for all retimer0 gpios.
> - Didn't pick up Konrad's T-b tags and Krzysztof's R-b tag as the rework
> is quite extensive. Especially because of the ps8830,boot-on and what
> it does.
> - Link to v2: https://lore.kernel.org/r/20241004-x1e80100-ps8830-v2-0-5cd8008c8c40@linaro.org
>
> Changes in v2:
> - Addressed all comments from Johan and Konrad.
> - Reworked the handling of the vregs so it would be more cleaner.
> Dropped the usage of bulk regulators API and handled them separately.
> Also discribed all regulators according to data sheet.
> - Added all delays according to data sheet.
> - Fixed coldplug (on boot) orientation detection.
> - Didn't pick Krzysztof's R-b tag because the bindings changed w.r.t
> supplies.
> - Link to v1: https://lore.kernel.org/r/20240829-x1e80100-ps8830-v1-0-bcc4790b1d45@linaro.org
>
> ---
> Abel Vesa (4):
> dt-bindings: usb: Add Parade PS8830 Type-C retimer bindings
> usb: typec: Add support for Parade PS8830 Type-C Retimer
> arm64: dts: qcom: x1e80100-crd: Add Parade PS8830 related nodes
> arm64: dts: qcom: x1e80100-crd: Enable external DP
>
> .../devicetree/bindings/usb/parade,ps8830.yaml | 129 ++++++
> arch/arm64/boot/dts/qcom/x1e80100-crd.dts | 472 ++++++++++++++++++++-
> drivers/usb/typec/mux/Kconfig | 10 +
> drivers/usb/typec/mux/Makefile | 1 +
> drivers/usb/typec/mux/ps8830.c | 423 ++++++++++++++++++
> 5 files changed, 1029 insertions(+), 6 deletions(-)
> ---
> base-commit: 63b3ff03d91ae8f875fe8747c781a521f78cde17
> change-id: 20240521-x1e80100-ps8830-d5ccca95b557
>
> Best regards,
> --
> Abel Vesa <abel.vesa@linaro.org>
>
>
>
My bot found new DTB warnings on the .dts files added or changed in this
series.
Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
are fixed by another series. Ultimately, it is up to the platform
maintainer whether these warnings are acceptable or not. No need to reply
unless the platform maintainer has comments.
If you already ran DT checks and didn't see these error(s), then
make sure dt-schema is up to date:
pip3 install dtschema --upgrade
New warnings running 'make CHECK_DTBS=y qcom/x1e80100-crd.dtb' for 20241022-x1e80100-ps8830-v3-0-68a95f351e99@linaro.org:
arch/arm64/boot/dts/qcom/x1e80100-crd.dtb: typec-mux@8: 'ps8830,boot-on' does not match any of the regexes: '^#.*', '^(at25|bm|devbus|dmacap|dsa|exynos|fsi[ab]|gpio-fan|gpio-key|gpio|gpmc|hdmi|i2c-gpio),.*', '^(keypad|m25p|max8952|max8997|max8998|mpmc),.*', '^(pinctrl-single|#pinctrl-single|PowerPC),.*', '^(pl022|pxa-mmc|rcar_sound|rotary-encoder|s5m8767|sdhci),.*', '^(simple-audio-card|st-plgpio|st-spics|ts),.*', '^100ask,.*', '^70mai,.*', '^8dev,.*', '^GEFanuc,.*', '^IBM,.*', '^ORCL,.*', '^SUNW,.*', '^[a-zA-Z0-9#_][a-zA-Z0-9+\-._@]{0,63}$', '^[a-zA-Z0-9+\-._]*@[0-9a-zA-Z,]*$', '^abb,.*', '^abilis,.*', '^abracon,.*', '^abt,.*', '^acbel,.*', '^acelink,.*', '^acer,.*', '^acme,.*', '^actions,.*', '^active-semi,.*', '^ad,.*', '^adafruit,.*', '^adapteva,.*', '^adaptrum,.*', '^adh,.*', '^adi,.*', '^adieng,.*', '^admatec,.*', '^advantech,.*', '^aeroflexgaisler,.*', '^aesop,.*', '^airoha,.*', '^al,.*', '^alcatel,.*', '^aldec,.*', '^alfa-network,.*', '^allegro,.*', '^alliedvision,.*', '^allo,.*', '^allwinner,.*', '^alphascale,.*', '^alps,.*', '^alt,.*', '^altr,.*', '^amarula,.*', '^amazon,.*', '^amcc,.*', '^amd,.*', '^amediatech,.*', '^amlogic,.*', '^ampere,.*', '^amphenol,.*', '^ampire,.*', '^ams,.*', '^amstaos,.*', '^analogix,.*', '^anbernic,.*', '^andestech,.*', '^anvo,.*', '^aosong,.*', '^apm,.*', '^apple,.*', '^aptina,.*', '^arasan,.*', '^archermind,.*', '^arcom,.*', '^arctic,.*', '^arcx,.*', '^aries,.*', '^arm,.*', '^armadeus,.*', '^armsom,.*', '^arrow,.*', '^artesyn,.*', '^asahi-kasei,.*', '^asc,.*', '^asix,.*', '^aspeed,.*', '^asrock,.*', '^asteralabs,.*', '^asus,.*', '^atheros,.*', '^atlas,.*', '^atmel,.*', '^auo,.*', '^auvidea,.*', '^avago,.*', '^avia,.*', '^avic,.*', '^avnet,.*', '^awinic,.*', '^axentia,.*', '^axis,.*', '^azoteq,.*', '^azw,.*', '^baikal,.*', '^bananapi,.*', '^beacon,.*', '^beagle,.*', '^belling,.*', '^bhf,.*', '^bigtreetech,.*', '^bitmain,.*', '^blutek,.*', '^boe,.*', '^bosch,.*', '^boundary,.*', '^brcm,.*', '^broadmobi,.*', '^bsh,.*', '^bticino,.*', '^buffalo,.*', '^bur,.*', '^bytedance,.*', '^calamp,.*', '^calao,.*', '^calaosystems,.*', '^calxeda,.*', '^cameo,.*', '^canaan,.*', '^caninos,.*', '^capella,.*', '^cascoda,.*', '^catalyst,.*', '^cavium,.*', '^cct,.*', '^cdns,.*', '^cdtech,.*', '^cellwise,.*', '^ceva,.*', '^chargebyte,.*', '^checkpoint,.*', '^chefree,.*', '^chipidea,.*', '^chipone,.*', '^chipspark,.*', '^chongzhou,.*', '^chrontel,.*', '^chrp,.*', '^chunghwa,.*', '^chuwi,.*', '^ciaa,.*', '^cirrus,.*', '^cisco,.*', '^clockwork,.*', '^cloos,.*', '^cloudengines,.*', '^cnm,.*', '^cnxt,.*', '^colorfly,.*', '^compulab,.*', '^comvetia,.*', '^congatec,.*', '^coolpi,.*', '^coreriver,.*', '^corpro,.*', '^cortina,.*', '^cosmic,.*', '^crane,.*', '^creative,.*', '^crystalfontz,.*', '^csky,.*', '^csq,.*', '^ctera,.*', '^ctu,.*', '^cubietech,.*', '^cudy,.*', '^cui,.*', '^cypress,.*', '^cyx,.*', '^cznic,.*', '^dallas,.*', '^dataimage,.*', '^davicom,.*', '^dell,.*', '^delta,.*', '^densitron,.*', '^denx,.*', '^devantech,.*', '^dfi,.*', '^dfrobot,.*', '^dh,.*', '^difrnce,.*', '^digi,.*', '^digilent,.*', '^dimonoff,.*', '^diodes,.*', '^dioo,.*', '^dlc,.*', '^dlg,.*', '^dlink,.*', '^dmo,.*', '^domintech,.*', '^dongwoon,.*', '^dptechnics,.*', '^dragino,.*', '^dream,.*', '^ds,.*', '^dserve,.*', '^dynaimage,.*', '^ea,.*', '^ebang,.*', '^ebbg,.*', '^ebs-systart,.*', '^ebv,.*', '^eckelmann,.*', '^edgeble,.*', '^edimax,.*', '^edt,.*', '^ees,.*', '^eeti,.*', '^einfochips,.*', '^eink,.*', '^elan,.*', '^element14,.*', '^elgin,.*', '^elida,.*', '^elimo,.*', '^elpida,.*', '^embedfire,.*', '^embest,.*', '^emcraft,.*', '^emlid,.*', '^emmicro,.*', '^empire-electronix,.*', '^emtrion,.*', '^enclustra,.*', '^endless,.*', '^ene,.*', '^energymicro,.*', '^engicam,.*', '^engleder,.*', '^epcos,.*', '^epfl,.*', '^epson,.*', '^esp,.*', '^est,.*', '^ettus,.*', '^eukrea,.*', '^everest,.*', '^everspin,.*', '^evervision,.*', '^exar,.*', '^excito,.*', '^exegin,.*', '^ezchip,.*', '^facebook,.*', '^fairchild,.*', '^fairphone,.*', '^faraday,.*', '^fascontek,.*', '^fastrax,.*', '^fcs,.*', '^feixin,.*', '^feiyang,.*', '^fii,.*', '^firefly,.*', '^focaltech,.*', '^forlinx,.*', '^freebox,.*', '^freecom,.*', '^frida,.*', '^friendlyarm,.*', '^fsl,.*', '^fujitsu,.*', '^fxtec,.*', '^galaxycore,.*', '^gameforce,.*', '^gardena,.*', '^gateway,.*', '^gateworks,.*', '^gcw,.*', '^ge,.*', '^geekbuying,.*', '^gef,.*', '^gehc,.*', '^gemei,.*', '^gemtek,.*', '^genesys,.*', '^geniatech,.*', '^giantec,.*', '^giantplus,.*', '^glinet,.*', '^globalscale,.*', '^globaltop,.*', '^gmt,.*', '^goldelico,.*', '^goodix,.*', '^google,.*', '^goramo,.*', '^gplus,.*', '^grinn,.*', '^grmn,.*', '^gumstix,.*', '^gw,.*', '^hannstar,.*', '^haochuangyi,.*', '^haoyu,.*', '^hardkernel,.*', '^hechuang,.*', '^hideep,.*', '^himax,.*', '^hirschmann,.*', '^hisi,.*', '^hisilicon,.*', '^hit,.*', '^hitex,.*', '^holt,.*', '^holtek,.*', '^honestar,.*', '^honeywell,.*', '^hoperf,.*', '^hoperun,.*', '^hp,.*', '^hpe,.*', '^hsg,.*', '^htc,.*', '^huawei,.*', '^hugsun,.*', '^hwacom,.*', '^hxt,.*', '^hycon,.*', '^hydis,.*', '^hynitron,.*', '^hynix,.*', '^hyundai,.*', '^i2se,.*', '^ibm,.*', '^icplus,.*', '^idt,.*', '^iei,.*', '^ifi,.*', '^ilitek,.*', '^imagis,.*', '^img,.*', '^imi,.*', '^inanbo,.*', '^incircuit,.*', '^indiedroid,.*', '^inet-tek,.*', '^infineon,.*', '^inforce,.*', '^ingenic,.*', '^ingrasys,.*', '^injoinic,.*', '^innocomm,.*', '^innolux,.*', '^inside-secure,.*', '^insignal,.*', '^inspur,.*', '^intel,.*', '^intercontrol,.*', '^invensense,.*', '^inventec,.*', '^inversepath,.*', '^iom,.*', '^irondevice,.*', '^isee,.*', '^isil,.*', '^issi,.*', '^ite,.*', '^itead,.*', '^itian,.*', '^ivo,.*', '^iwave,.*', '^jadard,.*', '^jasonic,.*', '^jdi,.*', '^jedec,.*', '^jenson,.*', '^jesurun,.*', '^jethome,.*', '^jianda,.*', '^jide,.*', '^joz,.*', '^kam,.*', '^karo,.*', '^keithkoep,.*', '^keymile,.*', '^khadas,.*', '^kiebackpeter,.*', '^kinetic,.*', '^kingdisplay,.*', '^kingnovel,.*', '^kionix,.*', '^kobo,.*', '^kobol,.*', '^koe,.*', '^kontron,.*', '^kosagi,.*', '^kvg,.*', '^kyo,.*', '^lacie,.*', '^laird,.*', '^lamobo,.*', '^lantiq,.*', '^lattice,.*', '^lckfb,.*', '^lctech,.*', '^leadtek,.*', '^leez,.*', '^lego,.*', '^lemaker,.*', '^lenovo,.*', '^lg,.*', '^lgphilips,.*', '^libretech,.*', '^licheepi,.*', '^linaro,.*', '^lincolntech,.*', '^lineartechnology,.*', '^linksprite,.*', '^linksys,.*', '^linutronix,.*', '^linux,.*', '^linx,.*', '^liteon,.*', '^litex,.*', '^lltc,.*', '^logicpd,.*', '^logictechno,.*', '^longcheer,.*', '^lontium,.*', '^loongmasses,.*', '^loongson,.*', '^lsi,.*', '^lunzn,.*', '^luxul,.*', '^lwn,.*', '^lxa,.*', '^m5stack,.*', '^macnica,.*', '^mantix,.*', '^mapleboard,.*', '^marantec,.*', '^marvell,.*', '^maxbotix,.*', '^maxim,.*', '^maxlinear,.*', '^mbvl,.*', '^mcube,.*', '^meas,.*', '^mecer,.*', '^mediatek,.*', '^megachips,.*', '^mele,.*', '^melexis,.*', '^melfas,.*', '^mellanox,.*', '^memsensing,.*', '^memsic,.*', '^menlo,.*', '^mentor,.*', '^meraki,.*', '^merrii,.*', '^methode,.*', '^micrel,.*', '^microchip,.*', '^microcrystal,.*', '^micron,.*', '^microsoft,.*', '^microsys,.*', '^microtips,.*', '^mikroe,.*', '^mikrotik,.*', '^milkv,.*', '^miniand,.*', '^minix,.*', '^mips,.*', '^miramems,.*', '^mitsubishi,.*', '^mitsumi,.*', '^mixel,.*', '^miyoo,.*', '^mntre,.*', '^mobileye,.*', '^modtronix,.*', '^moortec,.*', '^mosaixtech,.*', '^motorcomm,.*', '^motorola,.*', '^moxa,.*', '^mpl,.*', '^mps,.*', '^mqmaker,.*', '^mrvl,.*', '^mscc,.*', '^msi,.*', '^mstar,.*', '^mti,.*', '^multi-inno,.*', '^mundoreader,.*', '^murata,.*', '^mxic,.*', '^mxicy,.*', '^myir,.*', '^national,.*', '^neardi,.*', '^nec,.*', '^neofidelity,.*', '^neonode,.*', '^netgear,.*', '^netlogic,.*', '^netron-dy,.*', '^netronix,.*', '^netxeon,.*', '^neweast,.*', '^newhaven,.*', '^newvision,.*', '^nexbox,.*', '^nextthing,.*', '^ni,.*', '^nintendo,.*', '^nlt,.*', '^nokia,.*', '^nordic,.*', '^novatek,.*', '^novtech,.*', '^numonyx,.*', '^nutsboard,.*', '^nuvoton,.*', '^nvd,.*', '^nvidia,.*', '^nxp,.*', '^oceanic,.*', '^ocs,.*', '^oct,.*', '^okaya,.*', '^oki,.*', '^olimex,.*', '^olpc,.*', '^oneplus,.*', '^onie,.*', '^onion,.*', '^onnn,.*', '^ontat,.*', '^opalkelly,.*', '^openailab,.*', '^opencores,.*', '^openembed,.*', '^openpandora,.*', '^openrisc,.*', '^openwrt,.*', '^option,.*', '^oranth,.*', '^orisetech,.*', '^ortustech,.*', '^osddisplays,.*', '^osmc,.*', '^ouya,.*', '^overkiz,.*', '^ovti,.*', '^oxsemi,.*', '^ozzmaker,.*', '^panasonic,.*', '^parade,.*', '^parallax,.*', '^pda,.*', '^pericom,.*', '^pervasive,.*', '^phicomm,.*', '^phytec,.*', '^picochip,.*', '^pine64,.*', '^pineriver,.*', '^pixcir,.*', '^plantower,.*', '^plathome,.*', '^plda,.*', '^plx,.*', '^ply,.*', '^pni,.*', '^pocketbook,.*', '^polaroid,.*', '^polyhex,.*', '^portwell,.*', '^poslab,.*', '^pov,.*', '^powertip,.*', '^powervr,.*', '^powkiddy,.*', '^primeview,.*', '^primux,.*', '^probox2,.*', '^prt,.*', '^pulsedlight,.*', '^purism,.*', '^qca,.*', '^qcom,.*', '^qemu,.*', '^qi,.*', '^qiaodian,.*', '^qihua,.*', '^qishenglong,.*', '^qnap,.*', '^quanta,.*', '^radxa,.*', '^raidsonic,.*', '^ralink,.*', '^ramtron,.*', '^raspberrypi,.*', '^raydium,.*', '^rda,.*', '^realtek,.*', '^relfor,.*', '^remarkable,.*', '^renesas,.*', '^rervision,.*', '^revotics,.*', '^rex,.*', '^richtek,.*', '^ricoh,.*', '^rikomagic,.*', '^riot,.*', '^riscv,.*', '^rockchip,.*', '^rocktech,.*', '^rohm,.*', '^ronbo,.*', '^roofull,.*', '^roseapplepi,.*', '^rve,.*', '^saef,.*', '^samsung,.*', '^samtec,.*', '^sancloud,.*', '^sandisk,.*', '^satoz,.*', '^sbs,.*', '^schindler,.*', '^schneider,.*', '^sciosense,.*', '^seagate,.*', '^seeed,.*', '^seirobotics,.*', '^semtech,.*', '^senseair,.*', '^sensirion,.*', '^sensortek,.*', '^sercomm,.*', '^sff,.*', '^sgd,.*', '^sgmicro,.*', '^sgx,.*', '^sharp,.*', '^shift,.*', '^shimafuji,.*', '^shineworld,.*', '^shiratech,.*', '^si-en,.*', '^si-linux,.*', '^siemens,.*', '^sifive,.*', '^sigma,.*', '^sii,.*', '^sil,.*', '^silabs,.*', '^silan,.*', '^silead,.*', '^silergy,.*', '^silex-insight,.*', '^siliconfile,.*', '^siliconmitus,.*', '^silvaco,.*', '^simtek,.*', '^sinlinx,.*', '^sinovoip,.*', '^sinowealth,.*', '^sipeed,.*', '^sirf,.*', '^sis,.*', '^sitronix,.*', '^skov,.*', '^skyworks,.*', '^smartlabs,.*', '^smartrg,.*', '^smi,.*', '^smsc,.*', '^snps,.*', '^sochip,.*', '^socionext,.*', '^solidrun,.*', '^solomon,.*', '^sony,.*', '^sophgo,.*', '^sourceparts,.*', '^spacemit,.*', '^spansion,.*', '^sparkfun,.*', '^spinalhdl,.*', '^sprd,.*', '^square,.*', '^ssi,.*', '^sst,.*', '^sstar,.*', '^st,.*', '^st-ericsson,.*', '^starfive,.*', '^starry,.*', '^startek,.*', '^starterkit,.*', '^ste,.*', '^stericsson,.*', '^storlink,.*', '^storm,.*', '^storopack,.*', '^summit,.*', '^sunchip,.*', '^sundance,.*', '^sunplus,.*', '^supermicro,.*', '^swir,.*', '^syna,.*', '^synology,.*', '^synopsys,.*', '^tbs,.*', '^tbs-biometrics,.*', '^tcg,.*', '^tcl,.*', '^tcs,.*', '^tdo,.*', '^team-source-display,.*', '^technexion,.*', '^technologic,.*', '^techstar,.*', '^techwell,.*', '^teejet,.*', '^teltonika,.*', '^tempo,.*', '^terasic,.*', '^tesla,.*', '^test,.*', '^tfc,.*', '^thead,.*', '^thine,.*', '^thingyjp,.*', '^thundercomm,.*', '^thwc,.*', '^ti,.*', '^tianma,.*', '^tlm,.*', '^tmt,.*', '^topeet,.*', '^topic,.*', '^toppoly,.*', '^topwise,.*', '^toradex,.*', '^toshiba,.*', '^toumaz,.*', '^tpk,.*', '^tplink,.*', '^tpo,.*', '^tq,.*', '^transpeed,.*', '^traverse,.*', '^tronfy,.*', '^tronsmart,.*', '^truly,.*', '^tsd,.*', '^turing,.*', '^tyan,.*', '^tyhx,.*', '^u-blox,.*', '^u-boot,.*', '^ubnt,.*', '^ucrobotics,.*', '^udoo,.*', '^ufispace,.*', '^ugoos,.*', '^uni-t,.*', '^uniwest,.*', '^upisemi,.*', '^urt,.*', '^usi,.*', '^usr,.*', '^utoo,.*', '^v3,.*', '^vaisala,.*', '^vamrs,.*', '^variscite,.*', '^vdl,.*', '^vertexcom,.*', '^via,.*', '^vialab,.*', '^vicor,.*', '^videostrong,.*', '^virtio,.*', '^virtual,.*', '^vishay,.*', '^visionox,.*', '^vitesse,.*', '^vivante,.*', '^vivax,.*', '^vocore,.*', '^voipac,.*', '^voltafield,.*', '^vot,.*', '^vscom,.*', '^vxt,.*', '^wacom,.*', '^wanchanglong,.*', '^wand,.*', '^waveshare,.*', '^wd,.*', '^we,.*', '^welltech,.*', '^wetek,.*', '^wexler,.*', '^whwave,.*', '^wi2wi,.*', '^widora,.*', '^wiligear,.*', '^willsemi,.*', '^winbond,.*', '^wingtech,.*', '^winlink,.*', '^winstar,.*', '^wirelesstag,.*', '^wits,.*', '^wlf,.*', '^wm,.*', '^wobo,.*', '^wolfvision,.*', '^x-powers,.*', '^xen,.*', '^xes,.*', '^xiaomi,.*', '^xillybus,.*', '^xingbangda,.*', '^xinpeng,.*', '^xiphera,.*', '^xlnx,.*', '^xnano,.*', '^xunlong,.*', '^xylon,.*', '^yadro,.*', '^yamaha,.*', '^yes-optoelectronics,.*', '^yic,.*', '^yiming,.*', '^ylm,.*', '^yna,.*', '^yones-toptech,.*', '^ys,.*', '^ysoft,.*', '^zarlink,.*', '^zealz,.*', '^zeitec,.*', '^zidoo,.*', '^zii,.*', '^zinitix,.*', '^zkmagic,.*', '^zte,.*', '^zyxel,.*', 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/vendor-prefixes.yaml#
arch/arm64/boot/dts/qcom/x1e80100-crd.dtb: typec-mux@8: 'ps8830,boot-on' does not match any of the regexes: '^#.*', '^(at25|bm|devbus|dmacap|dsa|exynos|fsi[ab]|gpio-fan|gpio-key|gpio|gpmc|hdmi|i2c-gpio),.*', '^(keypad|m25p|max8952|max8997|max8998|mpmc),.*', '^(pinctrl-single|#pinctrl-single|PowerPC),.*', '^(pl022|pxa-mmc|rcar_sound|rotary-encoder|s5m8767|sdhci),.*', '^(simple-audio-card|st-plgpio|st-spics|ts),.*', '^100ask,.*', '^70mai,.*', '^8dev,.*', '^GEFanuc,.*', '^IBM,.*', '^ORCL,.*', '^SUNW,.*', '^[a-zA-Z0-9#_][a-zA-Z0-9+\-._@]{0,63}$', '^[a-zA-Z0-9+\-._]*@[0-9a-zA-Z,]*$', '^abb,.*', '^abilis,.*', '^abracon,.*', '^abt,.*', '^acbel,.*', '^acelink,.*', '^acer,.*', '^acme,.*', '^actions,.*', '^active-semi,.*', '^ad,.*', '^adafruit,.*', '^adapteva,.*', '^adaptrum,.*', '^adh,.*', '^adi,.*', '^adieng,.*', '^admatec,.*', '^advantech,.*', '^aeroflexgaisler,.*', '^aesop,.*', '^airoha,.*', '^al,.*', '^alcatel,.*', '^aldec,.*', '^alfa-network,.*', '^allegro,.*', '^alliedvision,.*', '^allo,.*', '^allwinner,.*', '^alphascale,.*', '^alps,.*', '^alt,.*', '^altr,.*', '^amarula,.*', '^amazon,.*', '^amcc,.*', '^amd,.*', '^amediatech,.*', '^amlogic,.*', '^ampere,.*', '^amphenol,.*', '^ampire,.*', '^ams,.*', '^amstaos,.*', '^analogix,.*', '^anbernic,.*', '^andestech,.*', '^anvo,.*', '^aosong,.*', '^apm,.*', '^apple,.*', '^aptina,.*', '^arasan,.*', '^archermind,.*', '^arcom,.*', '^arctic,.*', '^arcx,.*', '^aries,.*', '^arm,.*', '^armadeus,.*', '^armsom,.*', '^arrow,.*', '^artesyn,.*', '^asahi-kasei,.*', '^asc,.*', '^asix,.*', '^aspeed,.*', '^asrock,.*', '^asteralabs,.*', '^asus,.*', '^atheros,.*', '^atlas,.*', '^atmel,.*', '^auo,.*', '^auvidea,.*', '^avago,.*', '^avia,.*', '^avic,.*', '^avnet,.*', '^awinic,.*', '^axentia,.*', '^axis,.*', '^azoteq,.*', '^azw,.*', '^baikal,.*', '^bananapi,.*', '^beacon,.*', '^beagle,.*', '^belling,.*', '^bhf,.*', '^bigtreetech,.*', '^bitmain,.*', '^blutek,.*', '^boe,.*', '^bosch,.*', '^boundary,.*', '^brcm,.*', '^broadmobi,.*', '^bsh,.*', '^bticino,.*', '^buffalo,.*', '^bur,.*', '^bytedance,.*', '^calamp,.*', '^calao,.*', '^calaosystems,.*', '^calxeda,.*', '^cameo,.*', '^canaan,.*', '^caninos,.*', '^capella,.*', '^cascoda,.*', '^catalyst,.*', '^cavium,.*', '^cct,.*', '^cdns,.*', '^cdtech,.*', '^cellwise,.*', '^ceva,.*', '^chargebyte,.*', '^checkpoint,.*', '^chefree,.*', '^chipidea,.*', '^chipone,.*', '^chipspark,.*', '^chongzhou,.*', '^chrontel,.*', '^chrp,.*', '^chunghwa,.*', '^chuwi,.*', '^ciaa,.*', '^cirrus,.*', '^cisco,.*', '^clockwork,.*', '^cloos,.*', '^cloudengines,.*', '^cnm,.*', '^cnxt,.*', '^colorfly,.*', '^compulab,.*', '^comvetia,.*', '^congatec,.*', '^coolpi,.*', '^coreriver,.*', '^corpro,.*', '^cortina,.*', '^cosmic,.*', '^crane,.*', '^creative,.*', '^crystalfontz,.*', '^csky,.*', '^csq,.*', '^ctera,.*', '^ctu,.*', '^cubietech,.*', '^cudy,.*', '^cui,.*', '^cypress,.*', '^cyx,.*', '^cznic,.*', '^dallas,.*', '^dataimage,.*', '^davicom,.*', '^dell,.*', '^delta,.*', '^densitron,.*', '^denx,.*', '^devantech,.*', '^dfi,.*', '^dfrobot,.*', '^dh,.*', '^difrnce,.*', '^digi,.*', '^digilent,.*', '^dimonoff,.*', '^diodes,.*', '^dioo,.*', '^dlc,.*', '^dlg,.*', '^dlink,.*', '^dmo,.*', '^domintech,.*', '^dongwoon,.*', '^dptechnics,.*', '^dragino,.*', '^dream,.*', '^ds,.*', '^dserve,.*', '^dynaimage,.*', '^ea,.*', '^ebang,.*', '^ebbg,.*', '^ebs-systart,.*', '^ebv,.*', '^eckelmann,.*', '^edgeble,.*', '^edimax,.*', '^edt,.*', '^ees,.*', '^eeti,.*', '^einfochips,.*', '^eink,.*', '^elan,.*', '^element14,.*', '^elgin,.*', '^elida,.*', '^elimo,.*', '^elpida,.*', '^embedfire,.*', '^embest,.*', '^emcraft,.*', '^emlid,.*', '^emmicro,.*', '^empire-electronix,.*', '^emtrion,.*', '^enclustra,.*', '^endless,.*', '^ene,.*', '^energymicro,.*', '^engicam,.*', '^engleder,.*', '^epcos,.*', '^epfl,.*', '^epson,.*', '^esp,.*', '^est,.*', '^ettus,.*', '^eukrea,.*', '^everest,.*', '^everspin,.*', '^evervision,.*', '^exar,.*', '^excito,.*', '^exegin,.*', '^ezchip,.*', '^facebook,.*', '^fairchild,.*', '^fairphone,.*', '^faraday,.*', '^fascontek,.*', '^fastrax,.*', '^fcs,.*', '^feixin,.*', '^feiyang,.*', '^fii,.*', '^firefly,.*', '^focaltech,.*', '^forlinx,.*', '^freebox,.*', '^freecom,.*', '^frida,.*', '^friendlyarm,.*', '^fsl,.*', '^fujitsu,.*', '^fxtec,.*', '^galaxycore,.*', '^gameforce,.*', '^gardena,.*', '^gateway,.*', '^gateworks,.*', '^gcw,.*', '^ge,.*', '^geekbuying,.*', '^gef,.*', '^gehc,.*', '^gemei,.*', '^gemtek,.*', '^genesys,.*', '^geniatech,.*', '^giantec,.*', '^giantplus,.*', '^glinet,.*', '^globalscale,.*', '^globaltop,.*', '^gmt,.*', '^goldelico,.*', '^goodix,.*', '^google,.*', '^goramo,.*', '^gplus,.*', '^grinn,.*', '^grmn,.*', '^gumstix,.*', '^gw,.*', '^hannstar,.*', '^haochuangyi,.*', '^haoyu,.*', '^hardkernel,.*', '^hechuang,.*', '^hideep,.*', '^himax,.*', '^hirschmann,.*', '^hisi,.*', '^hisilicon,.*', '^hit,.*', '^hitex,.*', '^holt,.*', '^holtek,.*', '^honestar,.*', '^honeywell,.*', '^hoperf,.*', '^hoperun,.*', '^hp,.*', '^hpe,.*', '^hsg,.*', '^htc,.*', '^huawei,.*', '^hugsun,.*', '^hwacom,.*', '^hxt,.*', '^hycon,.*', '^hydis,.*', '^hynitron,.*', '^hynix,.*', '^hyundai,.*', '^i2se,.*', '^ibm,.*', '^icplus,.*', '^idt,.*', '^iei,.*', '^ifi,.*', '^ilitek,.*', '^imagis,.*', '^img,.*', '^imi,.*', '^inanbo,.*', '^incircuit,.*', '^indiedroid,.*', '^inet-tek,.*', '^infineon,.*', '^inforce,.*', '^ingenic,.*', '^ingrasys,.*', '^injoinic,.*', '^innocomm,.*', '^innolux,.*', '^inside-secure,.*', '^insignal,.*', '^inspur,.*', '^intel,.*', '^intercontrol,.*', '^invensense,.*', '^inventec,.*', '^inversepath,.*', '^iom,.*', '^irondevice,.*', '^isee,.*', '^isil,.*', '^issi,.*', '^ite,.*', '^itead,.*', '^itian,.*', '^ivo,.*', '^iwave,.*', '^jadard,.*', '^jasonic,.*', '^jdi,.*', '^jedec,.*', '^jenson,.*', '^jesurun,.*', '^jethome,.*', '^jianda,.*', '^jide,.*', '^joz,.*', '^kam,.*', '^karo,.*', '^keithkoep,.*', '^keymile,.*', '^khadas,.*', '^kiebackpeter,.*', '^kinetic,.*', '^kingdisplay,.*', '^kingnovel,.*', '^kionix,.*', '^kobo,.*', '^kobol,.*', '^koe,.*', '^kontron,.*', '^kosagi,.*', '^kvg,.*', '^kyo,.*', '^lacie,.*', '^laird,.*', '^lamobo,.*', '^lantiq,.*', '^lattice,.*', '^lckfb,.*', '^lctech,.*', '^leadtek,.*', '^leez,.*', '^lego,.*', '^lemaker,.*', '^lenovo,.*', '^lg,.*', '^lgphilips,.*', '^libretech,.*', '^licheepi,.*', '^linaro,.*', '^lincolntech,.*', '^lineartechnology,.*', '^linksprite,.*', '^linksys,.*', '^linutronix,.*', '^linux,.*', '^linx,.*', '^liteon,.*', '^litex,.*', '^lltc,.*', '^logicpd,.*', '^logictechno,.*', '^longcheer,.*', '^lontium,.*', '^loongmasses,.*', '^loongson,.*', '^lsi,.*', '^lunzn,.*', '^luxul,.*', '^lwn,.*', '^lxa,.*', '^m5stack,.*', '^macnica,.*', '^mantix,.*', '^mapleboard,.*', '^marantec,.*', '^marvell,.*', '^maxbotix,.*', '^maxim,.*', '^maxlinear,.*', '^mbvl,.*', '^mcube,.*', '^meas,.*', '^mecer,.*', '^mediatek,.*', '^megachips,.*', '^mele,.*', '^melexis,.*', '^melfas,.*', '^mellanox,.*', '^memsensing,.*', '^memsic,.*', '^menlo,.*', '^mentor,.*', '^meraki,.*', '^merrii,.*', '^methode,.*', '^micrel,.*', '^microchip,.*', '^microcrystal,.*', '^micron,.*', '^microsoft,.*', '^microsys,.*', '^microtips,.*', '^mikroe,.*', '^mikrotik,.*', '^milkv,.*', '^miniand,.*', '^minix,.*', '^mips,.*', '^miramems,.*', '^mitsubishi,.*', '^mitsumi,.*', '^mixel,.*', '^miyoo,.*', '^mntre,.*', '^mobileye,.*', '^modtronix,.*', '^moortec,.*', '^mosaixtech,.*', '^motorcomm,.*', '^motorola,.*', '^moxa,.*', '^mpl,.*', '^mps,.*', '^mqmaker,.*', '^mrvl,.*', '^mscc,.*', '^msi,.*', '^mstar,.*', '^mti,.*', '^multi-inno,.*', '^mundoreader,.*', '^murata,.*', '^mxic,.*', '^mxicy,.*', '^myir,.*', '^national,.*', '^neardi,.*', '^nec,.*', '^neofidelity,.*', '^neonode,.*', '^netgear,.*', '^netlogic,.*', '^netron-dy,.*', '^netronix,.*', '^netxeon,.*', '^neweast,.*', '^newhaven,.*', '^newvision,.*', '^nexbox,.*', '^nextthing,.*', '^ni,.*', '^nintendo,.*', '^nlt,.*', '^nokia,.*', '^nordic,.*', '^novatek,.*', '^novtech,.*', '^numonyx,.*', '^nutsboard,.*', '^nuvoton,.*', '^nvd,.*', '^nvidia,.*', '^nxp,.*', '^oceanic,.*', '^ocs,.*', '^oct,.*', '^okaya,.*', '^oki,.*', '^olimex,.*', '^olpc,.*', '^oneplus,.*', '^onie,.*', '^onion,.*', '^onnn,.*', '^ontat,.*', '^opalkelly,.*', '^openailab,.*', '^opencores,.*', '^openembed,.*', '^openpandora,.*', '^openrisc,.*', '^openwrt,.*', '^option,.*', '^oranth,.*', '^orisetech,.*', '^ortustech,.*', '^osddisplays,.*', '^osmc,.*', '^ouya,.*', '^overkiz,.*', '^ovti,.*', '^oxsemi,.*', '^ozzmaker,.*', '^panasonic,.*', '^parade,.*', '^parallax,.*', '^pda,.*', '^pericom,.*', '^pervasive,.*', '^phicomm,.*', '^phytec,.*', '^picochip,.*', '^pine64,.*', '^pineriver,.*', '^pixcir,.*', '^plantower,.*', '^plathome,.*', '^plda,.*', '^plx,.*', '^ply,.*', '^pni,.*', '^pocketbook,.*', '^polaroid,.*', '^polyhex,.*', '^portwell,.*', '^poslab,.*', '^pov,.*', '^powertip,.*', '^powervr,.*', '^powkiddy,.*', '^primeview,.*', '^primux,.*', '^probox2,.*', '^prt,.*', '^pulsedlight,.*', '^purism,.*', '^qca,.*', '^qcom,.*', '^qemu,.*', '^qi,.*', '^qiaodian,.*', '^qihua,.*', '^qishenglong,.*', '^qnap,.*', '^quanta,.*', '^radxa,.*', '^raidsonic,.*', '^ralink,.*', '^ramtron,.*', '^raspberrypi,.*', '^raydium,.*', '^rda,.*', '^realtek,.*', '^relfor,.*', '^remarkable,.*', '^renesas,.*', '^rervision,.*', '^revotics,.*', '^rex,.*', '^richtek,.*', '^ricoh,.*', '^rikomagic,.*', '^riot,.*', '^riscv,.*', '^rockchip,.*', '^rocktech,.*', '^rohm,.*', '^ronbo,.*', '^roofull,.*', '^roseapplepi,.*', '^rve,.*', '^saef,.*', '^samsung,.*', '^samtec,.*', '^sancloud,.*', '^sandisk,.*', '^satoz,.*', '^sbs,.*', '^schindler,.*', '^schneider,.*', '^sciosense,.*', '^seagate,.*', '^seeed,.*', '^seirobotics,.*', '^semtech,.*', '^senseair,.*', '^sensirion,.*', '^sensortek,.*', '^sercomm,.*', '^sff,.*', '^sgd,.*', '^sgmicro,.*', '^sgx,.*', '^sharp,.*', '^shift,.*', '^shimafuji,.*', '^shineworld,.*', '^shiratech,.*', '^si-en,.*', '^si-linux,.*', '^siemens,.*', '^sifive,.*', '^sigma,.*', '^sii,.*', '^sil,.*', '^silabs,.*', '^silan,.*', '^silead,.*', '^silergy,.*', '^silex-insight,.*', '^siliconfile,.*', '^siliconmitus,.*', '^silvaco,.*', '^simtek,.*', '^sinlinx,.*', '^sinovoip,.*', '^sinowealth,.*', '^sipeed,.*', '^sirf,.*', '^sis,.*', '^sitronix,.*', '^skov,.*', '^skyworks,.*', '^smartlabs,.*', '^smartrg,.*', '^smi,.*', '^smsc,.*', '^snps,.*', '^sochip,.*', '^socionext,.*', '^solidrun,.*', '^solomon,.*', '^sony,.*', '^sophgo,.*', '^sourceparts,.*', '^spacemit,.*', '^spansion,.*', '^sparkfun,.*', '^spinalhdl,.*', '^sprd,.*', '^square,.*', '^ssi,.*', '^sst,.*', '^sstar,.*', '^st,.*', '^st-ericsson,.*', '^starfive,.*', '^starry,.*', '^startek,.*', '^starterkit,.*', '^ste,.*', '^stericsson,.*', '^storlink,.*', '^storm,.*', '^storopack,.*', '^summit,.*', '^sunchip,.*', '^sundance,.*', '^sunplus,.*', '^supermicro,.*', '^swir,.*', '^syna,.*', '^synology,.*', '^synopsys,.*', '^tbs,.*', '^tbs-biometrics,.*', '^tcg,.*', '^tcl,.*', '^tcs,.*', '^tdo,.*', '^team-source-display,.*', '^technexion,.*', '^technologic,.*', '^techstar,.*', '^techwell,.*', '^teejet,.*', '^teltonika,.*', '^tempo,.*', '^terasic,.*', '^tesla,.*', '^test,.*', '^tfc,.*', '^thead,.*', '^thine,.*', '^thingyjp,.*', '^thundercomm,.*', '^thwc,.*', '^ti,.*', '^tianma,.*', '^tlm,.*', '^tmt,.*', '^topeet,.*', '^topic,.*', '^toppoly,.*', '^topwise,.*', '^toradex,.*', '^toshiba,.*', '^toumaz,.*', '^tpk,.*', '^tplink,.*', '^tpo,.*', '^tq,.*', '^transpeed,.*', '^traverse,.*', '^tronfy,.*', '^tronsmart,.*', '^truly,.*', '^tsd,.*', '^turing,.*', '^tyan,.*', '^tyhx,.*', '^u-blox,.*', '^u-boot,.*', '^ubnt,.*', '^ucrobotics,.*', '^udoo,.*', '^ufispace,.*', '^ugoos,.*', '^uni-t,.*', '^uniwest,.*', '^upisemi,.*', '^urt,.*', '^usi,.*', '^usr,.*', '^utoo,.*', '^v3,.*', '^vaisala,.*', '^vamrs,.*', '^variscite,.*', '^vdl,.*', '^vertexcom,.*', '^via,.*', '^vialab,.*', '^vicor,.*', '^videostrong,.*', '^virtio,.*', '^virtual,.*', '^vishay,.*', '^visionox,.*', '^vitesse,.*', '^vivante,.*', '^vivax,.*', '^vocore,.*', '^voipac,.*', '^voltafield,.*', '^vot,.*', '^vscom,.*', '^vxt,.*', '^wacom,.*', '^wanchanglong,.*', '^wand,.*', '^waveshare,.*', '^wd,.*', '^we,.*', '^welltech,.*', '^wetek,.*', '^wexler,.*', '^whwave,.*', '^wi2wi,.*', '^widora,.*', '^wiligear,.*', '^willsemi,.*', '^winbond,.*', '^wingtech,.*', '^winlink,.*', '^winstar,.*', '^wirelesstag,.*', '^wits,.*', '^wlf,.*', '^wm,.*', '^wobo,.*', '^wolfvision,.*', '^x-powers,.*', '^xen,.*', '^xes,.*', '^xiaomi,.*', '^xillybus,.*', '^xingbangda,.*', '^xinpeng,.*', '^xiphera,.*', '^xlnx,.*', '^xnano,.*', '^xunlong,.*', '^xylon,.*', '^yadro,.*', '^yamaha,.*', '^yes-optoelectronics,.*', '^yic,.*', '^yiming,.*', '^ylm,.*', '^yna,.*', '^yones-toptech,.*', '^ys,.*', '^ysoft,.*', '^zarlink,.*', '^zealz,.*', '^zeitec,.*', '^zidoo,.*', '^zii,.*', '^zinitix,.*', '^zkmagic,.*', '^zte,.*', '^zyxel,.*', 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/vendor-prefixes.yaml#
arch/arm64/boot/dts/qcom/x1e80100-crd.dtb: typec-mux@8: 'ps8830,boot-on' does not match any of the regexes: '^#.*', '^(at25|bm|devbus|dmacap|dsa|exynos|fsi[ab]|gpio-fan|gpio-key|gpio|gpmc|hdmi|i2c-gpio),.*', '^(keypad|m25p|max8952|max8997|max8998|mpmc),.*', '^(pinctrl-single|#pinctrl-single|PowerPC),.*', '^(pl022|pxa-mmc|rcar_sound|rotary-encoder|s5m8767|sdhci),.*', '^(simple-audio-card|st-plgpio|st-spics|ts),.*', '^100ask,.*', '^70mai,.*', '^8dev,.*', '^GEFanuc,.*', '^IBM,.*', '^ORCL,.*', '^SUNW,.*', '^[a-zA-Z0-9#_][a-zA-Z0-9+\-._@]{0,63}$', '^[a-zA-Z0-9+\-._]*@[0-9a-zA-Z,]*$', '^abb,.*', '^abilis,.*', '^abracon,.*', '^abt,.*', '^acbel,.*', '^acelink,.*', '^acer,.*', '^acme,.*', '^actions,.*', '^active-semi,.*', '^ad,.*', '^adafruit,.*', '^adapteva,.*', '^adaptrum,.*', '^adh,.*', '^adi,.*', '^adieng,.*', '^admatec,.*', '^advantech,.*', '^aeroflexgaisler,.*', '^aesop,.*', '^airoha,.*', '^al,.*', '^alcatel,.*', '^aldec,.*', '^alfa-network,.*', '^allegro,.*', '^alliedvision,.*', '^allo,.*', '^allwinner,.*', '^alphascale,.*', '^alps,.*', '^alt,.*', '^altr,.*', '^amarula,.*', '^amazon,.*', '^amcc,.*', '^amd,.*', '^amediatech,.*', '^amlogic,.*', '^ampere,.*', '^amphenol,.*', '^ampire,.*', '^ams,.*', '^amstaos,.*', '^analogix,.*', '^anbernic,.*', '^andestech,.*', '^anvo,.*', '^aosong,.*', '^apm,.*', '^apple,.*', '^aptina,.*', '^arasan,.*', '^archermind,.*', '^arcom,.*', '^arctic,.*', '^arcx,.*', '^aries,.*', '^arm,.*', '^armadeus,.*', '^armsom,.*', '^arrow,.*', '^artesyn,.*', '^asahi-kasei,.*', '^asc,.*', '^asix,.*', '^aspeed,.*', '^asrock,.*', '^asteralabs,.*', '^asus,.*', '^atheros,.*', '^atlas,.*', '^atmel,.*', '^auo,.*', '^auvidea,.*', '^avago,.*', '^avia,.*', '^avic,.*', '^avnet,.*', '^awinic,.*', '^axentia,.*', '^axis,.*', '^azoteq,.*', '^azw,.*', '^baikal,.*', '^bananapi,.*', '^beacon,.*', '^beagle,.*', '^belling,.*', '^bhf,.*', '^bigtreetech,.*', '^bitmain,.*', '^blutek,.*', '^boe,.*', '^bosch,.*', '^boundary,.*', '^brcm,.*', '^broadmobi,.*', '^bsh,.*', '^bticino,.*', '^buffalo,.*', '^bur,.*', '^bytedance,.*', '^calamp,.*', '^calao,.*', '^calaosystems,.*', '^calxeda,.*', '^cameo,.*', '^canaan,.*', '^caninos,.*', '^capella,.*', '^cascoda,.*', '^catalyst,.*', '^cavium,.*', '^cct,.*', '^cdns,.*', '^cdtech,.*', '^cellwise,.*', '^ceva,.*', '^chargebyte,.*', '^checkpoint,.*', '^chefree,.*', '^chipidea,.*', '^chipone,.*', '^chipspark,.*', '^chongzhou,.*', '^chrontel,.*', '^chrp,.*', '^chunghwa,.*', '^chuwi,.*', '^ciaa,.*', '^cirrus,.*', '^cisco,.*', '^clockwork,.*', '^cloos,.*', '^cloudengines,.*', '^cnm,.*', '^cnxt,.*', '^colorfly,.*', '^compulab,.*', '^comvetia,.*', '^congatec,.*', '^coolpi,.*', '^coreriver,.*', '^corpro,.*', '^cortina,.*', '^cosmic,.*', '^crane,.*', '^creative,.*', '^crystalfontz,.*', '^csky,.*', '^csq,.*', '^ctera,.*', '^ctu,.*', '^cubietech,.*', '^cudy,.*', '^cui,.*', '^cypress,.*', '^cyx,.*', '^cznic,.*', '^dallas,.*', '^dataimage,.*', '^davicom,.*', '^dell,.*', '^delta,.*', '^densitron,.*', '^denx,.*', '^devantech,.*', '^dfi,.*', '^dfrobot,.*', '^dh,.*', '^difrnce,.*', '^digi,.*', '^digilent,.*', '^dimonoff,.*', '^diodes,.*', '^dioo,.*', '^dlc,.*', '^dlg,.*', '^dlink,.*', '^dmo,.*', '^domintech,.*', '^dongwoon,.*', '^dptechnics,.*', '^dragino,.*', '^dream,.*', '^ds,.*', '^dserve,.*', '^dynaimage,.*', '^ea,.*', '^ebang,.*', '^ebbg,.*', '^ebs-systart,.*', '^ebv,.*', '^eckelmann,.*', '^edgeble,.*', '^edimax,.*', '^edt,.*', '^ees,.*', '^eeti,.*', '^einfochips,.*', '^eink,.*', '^elan,.*', '^element14,.*', '^elgin,.*', '^elida,.*', '^elimo,.*', '^elpida,.*', '^embedfire,.*', '^embest,.*', '^emcraft,.*', '^emlid,.*', '^emmicro,.*', '^empire-electronix,.*', '^emtrion,.*', '^enclustra,.*', '^endless,.*', '^ene,.*', '^energymicro,.*', '^engicam,.*', '^engleder,.*', '^epcos,.*', '^epfl,.*', '^epson,.*', '^esp,.*', '^est,.*', '^ettus,.*', '^eukrea,.*', '^everest,.*', '^everspin,.*', '^evervision,.*', '^exar,.*', '^excito,.*', '^exegin,.*', '^ezchip,.*', '^facebook,.*', '^fairchild,.*', '^fairphone,.*', '^faraday,.*', '^fascontek,.*', '^fastrax,.*', '^fcs,.*', '^feixin,.*', '^feiyang,.*', '^fii,.*', '^firefly,.*', '^focaltech,.*', '^forlinx,.*', '^freebox,.*', '^freecom,.*', '^frida,.*', '^friendlyarm,.*', '^fsl,.*', '^fujitsu,.*', '^fxtec,.*', '^galaxycore,.*', '^gameforce,.*', '^gardena,.*', '^gateway,.*', '^gateworks,.*', '^gcw,.*', '^ge,.*', '^geekbuying,.*', '^gef,.*', '^gehc,.*', '^gemei,.*', '^gemtek,.*', '^genesys,.*', '^geniatech,.*', '^giantec,.*', '^giantplus,.*', '^glinet,.*', '^globalscale,.*', '^globaltop,.*', '^gmt,.*', '^goldelico,.*', '^goodix,.*', '^google,.*', '^goramo,.*', '^gplus,.*', '^grinn,.*', '^grmn,.*', '^gumstix,.*', '^gw,.*', '^hannstar,.*', '^haochuangyi,.*', '^haoyu,.*', '^hardkernel,.*', '^hechuang,.*', '^hideep,.*', '^himax,.*', '^hirschmann,.*', '^hisi,.*', '^hisilicon,.*', '^hit,.*', '^hitex,.*', '^holt,.*', '^holtek,.*', '^honestar,.*', '^honeywell,.*', '^hoperf,.*', '^hoperun,.*', '^hp,.*', '^hpe,.*', '^hsg,.*', '^htc,.*', '^huawei,.*', '^hugsun,.*', '^hwacom,.*', '^hxt,.*', '^hycon,.*', '^hydis,.*', '^hynitron,.*', '^hynix,.*', '^hyundai,.*', '^i2se,.*', '^ibm,.*', '^icplus,.*', '^idt,.*', '^iei,.*', '^ifi,.*', '^ilitek,.*', '^imagis,.*', '^img,.*', '^imi,.*', '^inanbo,.*', '^incircuit,.*', '^indiedroid,.*', '^inet-tek,.*', '^infineon,.*', '^inforce,.*', '^ingenic,.*', '^ingrasys,.*', '^injoinic,.*', '^innocomm,.*', '^innolux,.*', '^inside-secure,.*', '^insignal,.*', '^inspur,.*', '^intel,.*', '^intercontrol,.*', '^invensense,.*', '^inventec,.*', '^inversepath,.*', '^iom,.*', '^irondevice,.*', '^isee,.*', '^isil,.*', '^issi,.*', '^ite,.*', '^itead,.*', '^itian,.*', '^ivo,.*', '^iwave,.*', '^jadard,.*', '^jasonic,.*', '^jdi,.*', '^jedec,.*', '^jenson,.*', '^jesurun,.*', '^jethome,.*', '^jianda,.*', '^jide,.*', '^joz,.*', '^kam,.*', '^karo,.*', '^keithkoep,.*', '^keymile,.*', '^khadas,.*', '^kiebackpeter,.*', '^kinetic,.*', '^kingdisplay,.*', '^kingnovel,.*', '^kionix,.*', '^kobo,.*', '^kobol,.*', '^koe,.*', '^kontron,.*', '^kosagi,.*', '^kvg,.*', '^kyo,.*', '^lacie,.*', '^laird,.*', '^lamobo,.*', '^lantiq,.*', '^lattice,.*', '^lckfb,.*', '^lctech,.*', '^leadtek,.*', '^leez,.*', '^lego,.*', '^lemaker,.*', '^lenovo,.*', '^lg,.*', '^lgphilips,.*', '^libretech,.*', '^licheepi,.*', '^linaro,.*', '^lincolntech,.*', '^lineartechnology,.*', '^linksprite,.*', '^linksys,.*', '^linutronix,.*', '^linux,.*', '^linx,.*', '^liteon,.*', '^litex,.*', '^lltc,.*', '^logicpd,.*', '^logictechno,.*', '^longcheer,.*', '^lontium,.*', '^loongmasses,.*', '^loongson,.*', '^lsi,.*', '^lunzn,.*', '^luxul,.*', '^lwn,.*', '^lxa,.*', '^m5stack,.*', '^macnica,.*', '^mantix,.*', '^mapleboard,.*', '^marantec,.*', '^marvell,.*', '^maxbotix,.*', '^maxim,.*', '^maxlinear,.*', '^mbvl,.*', '^mcube,.*', '^meas,.*', '^mecer,.*', '^mediatek,.*', '^megachips,.*', '^mele,.*', '^melexis,.*', '^melfas,.*', '^mellanox,.*', '^memsensing,.*', '^memsic,.*', '^menlo,.*', '^mentor,.*', '^meraki,.*', '^merrii,.*', '^methode,.*', '^micrel,.*', '^microchip,.*', '^microcrystal,.*', '^micron,.*', '^microsoft,.*', '^microsys,.*', '^microtips,.*', '^mikroe,.*', '^mikrotik,.*', '^milkv,.*', '^miniand,.*', '^minix,.*', '^mips,.*', '^miramems,.*', '^mitsubishi,.*', '^mitsumi,.*', '^mixel,.*', '^miyoo,.*', '^mntre,.*', '^mobileye,.*', '^modtronix,.*', '^moortec,.*', '^mosaixtech,.*', '^motorcomm,.*', '^motorola,.*', '^moxa,.*', '^mpl,.*', '^mps,.*', '^mqmaker,.*', '^mrvl,.*', '^mscc,.*', '^msi,.*', '^mstar,.*', '^mti,.*', '^multi-inno,.*', '^mundoreader,.*', '^murata,.*', '^mxic,.*', '^mxicy,.*', '^myir,.*', '^national,.*', '^neardi,.*', '^nec,.*', '^neofidelity,.*', '^neonode,.*', '^netgear,.*', '^netlogic,.*', '^netron-dy,.*', '^netronix,.*', '^netxeon,.*', '^neweast,.*', '^newhaven,.*', '^newvision,.*', '^nexbox,.*', '^nextthing,.*', '^ni,.*', '^nintendo,.*', '^nlt,.*', '^nokia,.*', '^nordic,.*', '^novatek,.*', '^novtech,.*', '^numonyx,.*', '^nutsboard,.*', '^nuvoton,.*', '^nvd,.*', '^nvidia,.*', '^nxp,.*', '^oceanic,.*', '^ocs,.*', '^oct,.*', '^okaya,.*', '^oki,.*', '^olimex,.*', '^olpc,.*', '^oneplus,.*', '^onie,.*', '^onion,.*', '^onnn,.*', '^ontat,.*', '^opalkelly,.*', '^openailab,.*', '^opencores,.*', '^openembed,.*', '^openpandora,.*', '^openrisc,.*', '^openwrt,.*', '^option,.*', '^oranth,.*', '^orisetech,.*', '^ortustech,.*', '^osddisplays,.*', '^osmc,.*', '^ouya,.*', '^overkiz,.*', '^ovti,.*', '^oxsemi,.*', '^ozzmaker,.*', '^panasonic,.*', '^parade,.*', '^parallax,.*', '^pda,.*', '^pericom,.*', '^pervasive,.*', '^phicomm,.*', '^phytec,.*', '^picochip,.*', '^pine64,.*', '^pineriver,.*', '^pixcir,.*', '^plantower,.*', '^plathome,.*', '^plda,.*', '^plx,.*', '^ply,.*', '^pni,.*', '^pocketbook,.*', '^polaroid,.*', '^polyhex,.*', '^portwell,.*', '^poslab,.*', '^pov,.*', '^powertip,.*', '^powervr,.*', '^powkiddy,.*', '^primeview,.*', '^primux,.*', '^probox2,.*', '^prt,.*', '^pulsedlight,.*', '^purism,.*', '^qca,.*', '^qcom,.*', '^qemu,.*', '^qi,.*', '^qiaodian,.*', '^qihua,.*', '^qishenglong,.*', '^qnap,.*', '^quanta,.*', '^radxa,.*', '^raidsonic,.*', '^ralink,.*', '^ramtron,.*', '^raspberrypi,.*', '^raydium,.*', '^rda,.*', '^realtek,.*', '^relfor,.*', '^remarkable,.*', '^renesas,.*', '^rervision,.*', '^revotics,.*', '^rex,.*', '^richtek,.*', '^ricoh,.*', '^rikomagic,.*', '^riot,.*', '^riscv,.*', '^rockchip,.*', '^rocktech,.*', '^rohm,.*', '^ronbo,.*', '^roofull,.*', '^roseapplepi,.*', '^rve,.*', '^saef,.*', '^samsung,.*', '^samtec,.*', '^sancloud,.*', '^sandisk,.*', '^satoz,.*', '^sbs,.*', '^schindler,.*', '^schneider,.*', '^sciosense,.*', '^seagate,.*', '^seeed,.*', '^seirobotics,.*', '^semtech,.*', '^senseair,.*', '^sensirion,.*', '^sensortek,.*', '^sercomm,.*', '^sff,.*', '^sgd,.*', '^sgmicro,.*', '^sgx,.*', '^sharp,.*', '^shift,.*', '^shimafuji,.*', '^shineworld,.*', '^shiratech,.*', '^si-en,.*', '^si-linux,.*', '^siemens,.*', '^sifive,.*', '^sigma,.*', '^sii,.*', '^sil,.*', '^silabs,.*', '^silan,.*', '^silead,.*', '^silergy,.*', '^silex-insight,.*', '^siliconfile,.*', '^siliconmitus,.*', '^silvaco,.*', '^simtek,.*', '^sinlinx,.*', '^sinovoip,.*', '^sinowealth,.*', '^sipeed,.*', '^sirf,.*', '^sis,.*', '^sitronix,.*', '^skov,.*', '^skyworks,.*', '^smartlabs,.*', '^smartrg,.*', '^smi,.*', '^smsc,.*', '^snps,.*', '^sochip,.*', '^socionext,.*', '^solidrun,.*', '^solomon,.*', '^sony,.*', '^sophgo,.*', '^sourceparts,.*', '^spacemit,.*', '^spansion,.*', '^sparkfun,.*', '^spinalhdl,.*', '^sprd,.*', '^square,.*', '^ssi,.*', '^sst,.*', '^sstar,.*', '^st,.*', '^st-ericsson,.*', '^starfive,.*', '^starry,.*', '^startek,.*', '^starterkit,.*', '^ste,.*', '^stericsson,.*', '^storlink,.*', '^storm,.*', '^storopack,.*', '^summit,.*', '^sunchip,.*', '^sundance,.*', '^sunplus,.*', '^supermicro,.*', '^swir,.*', '^syna,.*', '^synology,.*', '^synopsys,.*', '^tbs,.*', '^tbs-biometrics,.*', '^tcg,.*', '^tcl,.*', '^tcs,.*', '^tdo,.*', '^team-source-display,.*', '^technexion,.*', '^technologic,.*', '^techstar,.*', '^techwell,.*', '^teejet,.*', '^teltonika,.*', '^tempo,.*', '^terasic,.*', '^tesla,.*', '^test,.*', '^tfc,.*', '^thead,.*', '^thine,.*', '^thingyjp,.*', '^thundercomm,.*', '^thwc,.*', '^ti,.*', '^tianma,.*', '^tlm,.*', '^tmt,.*', '^topeet,.*', '^topic,.*', '^toppoly,.*', '^topwise,.*', '^toradex,.*', '^toshiba,.*', '^toumaz,.*', '^tpk,.*', '^tplink,.*', '^tpo,.*', '^tq,.*', '^transpeed,.*', '^traverse,.*', '^tronfy,.*', '^tronsmart,.*', '^truly,.*', '^tsd,.*', '^turing,.*', '^tyan,.*', '^tyhx,.*', '^u-blox,.*', '^u-boot,.*', '^ubnt,.*', '^ucrobotics,.*', '^udoo,.*', '^ufispace,.*', '^ugoos,.*', '^uni-t,.*', '^uniwest,.*', '^upisemi,.*', '^urt,.*', '^usi,.*', '^usr,.*', '^utoo,.*', '^v3,.*', '^vaisala,.*', '^vamrs,.*', '^variscite,.*', '^vdl,.*', '^vertexcom,.*', '^via,.*', '^vialab,.*', '^vicor,.*', '^videostrong,.*', '^virtio,.*', '^virtual,.*', '^vishay,.*', '^visionox,.*', '^vitesse,.*', '^vivante,.*', '^vivax,.*', '^vocore,.*', '^voipac,.*', '^voltafield,.*', '^vot,.*', '^vscom,.*', '^vxt,.*', '^wacom,.*', '^wanchanglong,.*', '^wand,.*', '^waveshare,.*', '^wd,.*', '^we,.*', '^welltech,.*', '^wetek,.*', '^wexler,.*', '^whwave,.*', '^wi2wi,.*', '^widora,.*', '^wiligear,.*', '^willsemi,.*', '^winbond,.*', '^wingtech,.*', '^winlink,.*', '^winstar,.*', '^wirelesstag,.*', '^wits,.*', '^wlf,.*', '^wm,.*', '^wobo,.*', '^wolfvision,.*', '^x-powers,.*', '^xen,.*', '^xes,.*', '^xiaomi,.*', '^xillybus,.*', '^xingbangda,.*', '^xinpeng,.*', '^xiphera,.*', '^xlnx,.*', '^xnano,.*', '^xunlong,.*', '^xylon,.*', '^yadro,.*', '^yamaha,.*', '^yes-optoelectronics,.*', '^yic,.*', '^yiming,.*', '^ylm,.*', '^yna,.*', '^yones-toptech,.*', '^ys,.*', '^ysoft,.*', '^zarlink,.*', '^zealz,.*', '^zeitec,.*', '^zidoo,.*', '^zii,.*', '^zinitix,.*', '^zkmagic,.*', '^zte,.*', '^zyxel,.*', 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/vendor-prefixes.yaml#
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2024-10-24 16:33 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-22 10:26 [PATCH v3 0/4] usb: typec: Add new driver for Parade PS8830 Type-C Retimer Abel Vesa
2024-10-22 10:26 ` [PATCH v3 1/4] dt-bindings: usb: Add Parade PS8830 Type-C retimer bindings Abel Vesa
2024-10-22 16:30 ` Conor Dooley
2024-10-23 0:29 ` Bjorn Andersson
2024-10-22 10:26 ` [PATCH v3 2/4] usb: typec: Add support for Parade PS8830 Type-C Retimer Abel Vesa
2024-10-22 14:11 ` Heikki Krogerus
2024-10-22 10:26 ` [PATCH v3 3/4] arm64: dts: qcom: x1e80100-crd: Add Parade PS8830 related nodes Abel Vesa
2024-10-23 0:24 ` Bjorn Andersson
2024-10-23 7:51 ` Abel Vesa
2024-10-22 10:26 ` [PATCH v3 4/4] arm64: dts: qcom: x1e80100-crd: Enable external DP Abel Vesa
2024-10-23 0:32 ` Bjorn Andersson
2024-10-23 7:46 ` Abel Vesa
2024-10-24 16:33 ` [PATCH v3 0/4] usb: typec: Add new driver for Parade PS8830 Type-C Retimer Rob Herring (Arm)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).