[PATCH v2 2/2] usb: typec: tcpm: Add vid and chip info for Etek ET7304

From: Yuanshen Cao

Date: Wed Feb 18 2026 - 22:04:31 EST


Move the VID to chip info to accommodate different VIDs
Add chip info for Etek ET7304. ET7304 is functionally identical to
the Richtek RT1715, with the only difference being the VID.

Signed-off-by: Yuanshen Cao <alex.caoys@xxxxxxxxx>
---
drivers/usb/typec/tcpm/tcpci_rt1711h.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/typec/tcpm/tcpci_rt1711h.c b/drivers/usb/typec/tcpm/tcpci_rt1711h.c
index 88c50b984e8a..4848748a10dd 100644
--- a/drivers/usb/typec/tcpm/tcpci_rt1711h.c
+++ b/drivers/usb/typec/tcpm/tcpci_rt1711h.c
@@ -19,9 +19,11 @@
#include <linux/regulator/consumer.h>

#define RT1711H_VID 0x29CF
+#define ET7304_VID 0x6DCF
#define RT1711H_PID 0x1711
#define RT1711H_DID 0x2171
#define RT1715_DID 0x2173
+#define ET7304_DID 0x2173

#define RT1711H_PHYCTRL1 0x80
#define RT1711H_PHYCTRL2 0x81
@@ -55,6 +57,7 @@

struct rt1711h_chip_info {
u32 rxdz_sel;
+ u16 vid;
u16 did;
bool enable_pd30_extended_message;
};
@@ -308,7 +311,7 @@ static int rt1711h_check_revision(struct i2c_client *i2c, struct rt1711h_chip *c
ret = i2c_smbus_read_word_data(i2c, TCPC_VENDOR_ID);
if (ret < 0)
return ret;
- if (ret != RT1711H_VID) {
+ if (ret != chip->info->vid) {
dev_err(&i2c->dev, "vid is not correct, 0x%04x\n", ret);
return -ENODEV;
}
@@ -406,18 +409,28 @@ static void rt1711h_remove(struct i2c_client *client)
}

static const struct rt1711h_chip_info rt1711h = {
+ .vid = RT1711H_VID,
.did = RT1711H_DID,
};

static const struct rt1711h_chip_info rt1715 = {
.rxdz_sel = RT1711H_BMCIO_RXDZSEL,
+ .vid = RT1711H_VID,
.did = RT1715_DID,
.enable_pd30_extended_message = true,
};

+static const struct rt1711h_chip_info et7304 = {
+ .rxdz_sel = RT1711H_BMCIO_RXDZSEL,
+ .vid = ET7304_VID,
+ .did = ET7304_DID,
+ .enable_pd30_extended_message = true,
+};
+
static const struct i2c_device_id rt1711h_id[] = {
{ "rt1711h", (kernel_ulong_t)&rt1711h },
{ "rt1715", (kernel_ulong_t)&rt1715 },
+ { "et7304", (kernel_ulong_t)&et7304 },
{}
};
MODULE_DEVICE_TABLE(i2c, rt1711h_id);
@@ -425,6 +438,7 @@ MODULE_DEVICE_TABLE(i2c, rt1711h_id);
static const struct of_device_id rt1711h_of_match[] = {
{ .compatible = "richtek,rt1711h", .data = &rt1711h },
{ .compatible = "richtek,rt1715", .data = &rt1715 },
+ { .compatible = "etek,et7304", .data = &et7304 },
{}
};
MODULE_DEVICE_TABLE(of, rt1711h_of_match);

--
2.53.0