* [PATCH 0/3] usb: typec: tipd: improve probe diagnostics and POWER_STATUS handling
@ 2026-05-13 18:28 Radhey Shyam Pandey
2026-05-13 18:28 ` [PATCH 1/3] usb: typec: tipd: add error message for vendor ID read failure Radhey Shyam Pandey
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Radhey Shyam Pandey @ 2026-05-13 18:28 UTC (permalink / raw)
To: heikki.krogerus, gregkh; +Cc: linux-usb, linux-kernel, git, Radhey Shyam Pandey
This series tightens TI TIPD (TPS6598x family) bring-up ergonomics and
cleans up register bit definitions:
- Log vendor ID read failures with I2C return code and register value so
boards with wiring or address mistakes are easier to debug at probe
time.
- Treat operation without an interrupt line as a normal polling setup and
log at info instead of warning.
- Name TPS_REG_POWER_STATUS connection/source-sink bit masks and use
them consistently with TPS_FIELD_GET (no behavior change).
Radhey Shyam Pandey (3):
usb: typec: tipd: add error message for vendor ID read failure
usb: typec: tipd: demote missing IRQ log to info for polling mode
usb: typec: tipd: name TPS_REG_POWER_STATUS field masks
drivers/usb/typec/tipd/core.c | 9 ++++++---
drivers/usb/typec/tipd/tps6598x.h | 10 +++++++---
2 files changed, 13 insertions(+), 6 deletions(-)
base-commit: 1f63dd8ca0dc05a8272bb8155f643c691d29bb11
--
2.44.4
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/3] usb: typec: tipd: add error message for vendor ID read failure
2026-05-13 18:28 [PATCH 0/3] usb: typec: tipd: improve probe diagnostics and POWER_STATUS handling Radhey Shyam Pandey
@ 2026-05-13 18:28 ` Radhey Shyam Pandey
2026-05-18 10:19 ` Heikki Krogerus
2026-05-13 18:28 ` [PATCH 2/3] usb: typec: tipd: demote missing IRQ log to info for polling mode Radhey Shyam Pandey
2026-05-13 18:28 ` [PATCH 3/3] usb: typec: tipd: name TPS_REG_POWER_STATUS field masks Radhey Shyam Pandey
2 siblings, 1 reply; 11+ messages in thread
From: Radhey Shyam Pandey @ 2026-05-13 18:28 UTC (permalink / raw)
To: heikki.krogerus, gregkh; +Cc: linux-usb, linux-kernel, git, Radhey Shyam Pandey
Log when the vendor ID read fails or returns zero, including the I2C error
code and register value, to ease probe diagnostics.
Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
---
drivers/usb/typec/tipd/core.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
index 43faec794b95..b282366b5326 100644
--- a/drivers/usb/typec/tipd/core.c
+++ b/drivers/usb/typec/tipd/core.c
@@ -1744,7 +1744,7 @@ static int tps6598x_probe(struct i2c_client *client)
struct tps6598x *tps;
struct fwnode_handle *fwnode;
u32 status;
- u32 vid;
+ u32 vid = 0;
int ret;
data = i2c_get_match_data(client);
@@ -1772,8 +1772,11 @@ static int tps6598x_probe(struct i2c_client *client)
if (!device_is_compatible(tps->dev, "ti,tps25750")) {
ret = tps6598x_read32(tps, TPS_REG_VID, &vid);
- if (ret < 0 || !vid)
+ if (ret < 0 || !vid) {
+ dev_err(tps->dev, "failed to read vendor ID: %d, vid: %#x\n",
+ ret, vid);
return -ENODEV;
+ }
}
/*
--
2.44.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/3] usb: typec: tipd: demote missing IRQ log to info for polling mode
2026-05-13 18:28 [PATCH 0/3] usb: typec: tipd: improve probe diagnostics and POWER_STATUS handling Radhey Shyam Pandey
2026-05-13 18:28 ` [PATCH 1/3] usb: typec: tipd: add error message for vendor ID read failure Radhey Shyam Pandey
@ 2026-05-13 18:28 ` Radhey Shyam Pandey
2026-05-18 10:26 ` Heikki Krogerus
2026-05-13 18:28 ` [PATCH 3/3] usb: typec: tipd: name TPS_REG_POWER_STATUS field masks Radhey Shyam Pandey
2 siblings, 1 reply; 11+ messages in thread
From: Radhey Shyam Pandey @ 2026-05-13 18:28 UTC (permalink / raw)
To: heikki.krogerus, gregkh; +Cc: linux-usb, linux-kernel, git, Radhey Shyam Pandey
Operating without an interrupt line and using the driver's polling path
is valid. Log at info level instead of warning.
Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
---
drivers/usb/typec/tipd/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
index b282366b5326..fcd56bcffab8 100644
--- a/drivers/usb/typec/tipd/core.c
+++ b/drivers/usb/typec/tipd/core.c
@@ -1853,7 +1853,7 @@ static int tps6598x_probe(struct i2c_client *client)
IRQF_SHARED | IRQF_ONESHOT,
dev_name(&client->dev), tps);
} else {
- dev_warn(tps->dev, "Unable to find the interrupt, switching to polling\n");
+ dev_info(tps->dev, "no IRQ specified, using polling mode\n");
INIT_DELAYED_WORK(&tps->wq_poll, tps6598x_poll_work);
queue_delayed_work(system_power_efficient_wq, &tps->wq_poll,
msecs_to_jiffies(POLL_INTERVAL));
--
2.44.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/3] usb: typec: tipd: name TPS_REG_POWER_STATUS field masks
2026-05-13 18:28 [PATCH 0/3] usb: typec: tipd: improve probe diagnostics and POWER_STATUS handling Radhey Shyam Pandey
2026-05-13 18:28 ` [PATCH 1/3] usb: typec: tipd: add error message for vendor ID read failure Radhey Shyam Pandey
2026-05-13 18:28 ` [PATCH 2/3] usb: typec: tipd: demote missing IRQ log to info for polling mode Radhey Shyam Pandey
@ 2026-05-13 18:28 ` Radhey Shyam Pandey
2026-05-18 10:34 ` Heikki Krogerus
2 siblings, 1 reply; 11+ messages in thread
From: Radhey Shyam Pandey @ 2026-05-13 18:28 UTC (permalink / raw)
To: heikki.krogerus, gregkh; +Cc: linux-usb, linux-kernel, git, Radhey Shyam Pandey
Define named masks for Power Status fields (connection and source/sink)
and reuse them consistently for both field extraction and value
construction. This avoids raw bit usage, keeps the definitions aligned.
No functional change.
Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
---
drivers/usb/typec/tipd/tps6598x.h | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/usb/typec/tipd/tps6598x.h b/drivers/usb/typec/tipd/tps6598x.h
index 03edbb77bbd6..d4140f4da5bb 100644
--- a/drivers/usb/typec/tipd/tps6598x.h
+++ b/drivers/usb/typec/tipd/tps6598x.h
@@ -142,9 +142,13 @@
#define TPS_SYSTEM_POWER_STATE_S4 0x04
#define TPS_SYSTEM_POWER_STATE_S5 0x05
-/* TPS_REG_POWER_STATUS bits */
-#define TPS_POWER_STATUS_CONNECTION(x) TPS_FIELD_GET(BIT(0), (x))
-#define TPS_POWER_STATUS_SOURCESINK(x) TPS_FIELD_GET(BIT(1), (x))
+/* TPS_REG_POWER_STATUS bits (masks shared by TPS_FIELD_GET accessors and FIELD_PREP) */
+#define TPS_POWER_STATUS_CONNECTION_MASK BIT(0)
+#define TPS_POWER_STATUS_SOURCESINK_MASK BIT(1)
+#define TPS_POWER_STATUS_CONNECTION(x) \
+ TPS_FIELD_GET(TPS_POWER_STATUS_CONNECTION_MASK, (x))
+#define TPS_POWER_STATUS_SOURCESINK(x) \
+ TPS_FIELD_GET(TPS_POWER_STATUS_SOURCESINK_MASK, (x))
#define TPS_POWER_STATUS_BC12_DET(x) TPS_FIELD_GET(BIT(2), (x))
#define TPS_POWER_STATUS_TYPEC_CURRENT_MASK GENMASK(3, 2)
--
2.44.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] usb: typec: tipd: add error message for vendor ID read failure
2026-05-13 18:28 ` [PATCH 1/3] usb: typec: tipd: add error message for vendor ID read failure Radhey Shyam Pandey
@ 2026-05-18 10:19 ` Heikki Krogerus
2026-05-18 15:53 ` Pandey, Radhey Shyam
0 siblings, 1 reply; 11+ messages in thread
From: Heikki Krogerus @ 2026-05-18 10:19 UTC (permalink / raw)
To: Radhey Shyam Pandey; +Cc: gregkh, linux-usb, linux-kernel, git
On Wed, May 13, 2026 at 11:58:48PM +0530, Radhey Shyam Pandey wrote:
> Log when the vendor ID read fails or returns zero, including the I2C error
> code and register value, to ease probe diagnostics.
>
> Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
> ---
> drivers/usb/typec/tipd/core.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
> index 43faec794b95..b282366b5326 100644
> --- a/drivers/usb/typec/tipd/core.c
> +++ b/drivers/usb/typec/tipd/core.c
> @@ -1744,7 +1744,7 @@ static int tps6598x_probe(struct i2c_client *client)
> struct tps6598x *tps;
> struct fwnode_handle *fwnode;
> u32 status;
> - u32 vid;
> + u32 vid = 0;
Why is this necessary?
> int ret;
>
> data = i2c_get_match_data(client);
> @@ -1772,8 +1772,11 @@ static int tps6598x_probe(struct i2c_client *client)
>
> if (!device_is_compatible(tps->dev, "ti,tps25750")) {
> ret = tps6598x_read32(tps, TPS_REG_VID, &vid);
> - if (ret < 0 || !vid)
> + if (ret < 0 || !vid) {
> + dev_err(tps->dev, "failed to read vendor ID: %d, vid: %#x\n",
> + ret, vid);
> return -ENODEV;
> + }
> }
>
> /*
> --
> 2.44.4
--
heikki
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/3] usb: typec: tipd: demote missing IRQ log to info for polling mode
2026-05-13 18:28 ` [PATCH 2/3] usb: typec: tipd: demote missing IRQ log to info for polling mode Radhey Shyam Pandey
@ 2026-05-18 10:26 ` Heikki Krogerus
2026-05-18 15:56 ` Pandey, Radhey Shyam
0 siblings, 1 reply; 11+ messages in thread
From: Heikki Krogerus @ 2026-05-18 10:26 UTC (permalink / raw)
To: Radhey Shyam Pandey; +Cc: gregkh, linux-usb, linux-kernel, git
On Wed, May 13, 2026 at 11:58:49PM +0530, Radhey Shyam Pandey wrote:
> Operating without an interrupt line and using the driver's polling path
> is valid. Log at info level instead of warning.
>
> Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
> ---
> drivers/usb/typec/tipd/core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
> index b282366b5326..fcd56bcffab8 100644
> --- a/drivers/usb/typec/tipd/core.c
> +++ b/drivers/usb/typec/tipd/core.c
> @@ -1853,7 +1853,7 @@ static int tps6598x_probe(struct i2c_client *client)
> IRQF_SHARED | IRQF_ONESHOT,
> dev_name(&client->dev), tps);
> } else {
> - dev_warn(tps->dev, "Unable to find the interrupt, switching to polling\n");
> + dev_info(tps->dev, "no IRQ specified, using polling mode\n");
If this is a valid case, then the driver should not make any noise.
Let's use deb_dbg() instead.
> INIT_DELAYED_WORK(&tps->wq_poll, tps6598x_poll_work);
> queue_delayed_work(system_power_efficient_wq, &tps->wq_poll,
> msecs_to_jiffies(POLL_INTERVAL));
thanks,
--
heikki
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] usb: typec: tipd: name TPS_REG_POWER_STATUS field masks
2026-05-13 18:28 ` [PATCH 3/3] usb: typec: tipd: name TPS_REG_POWER_STATUS field masks Radhey Shyam Pandey
@ 2026-05-18 10:34 ` Heikki Krogerus
0 siblings, 0 replies; 11+ messages in thread
From: Heikki Krogerus @ 2026-05-18 10:34 UTC (permalink / raw)
To: Radhey Shyam Pandey; +Cc: gregkh, linux-usb, linux-kernel, git
On Wed, May 13, 2026 at 11:58:50PM +0530, Radhey Shyam Pandey wrote:
> Define named masks for Power Status fields (connection and source/sink)
> and reuse them consistently for both field extraction and value
> construction. This avoids raw bit usage, keeps the definitions aligned.
> No functional change.
>
> Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> ---
> drivers/usb/typec/tipd/tps6598x.h | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/usb/typec/tipd/tps6598x.h b/drivers/usb/typec/tipd/tps6598x.h
> index 03edbb77bbd6..d4140f4da5bb 100644
> --- a/drivers/usb/typec/tipd/tps6598x.h
> +++ b/drivers/usb/typec/tipd/tps6598x.h
> @@ -142,9 +142,13 @@
> #define TPS_SYSTEM_POWER_STATE_S4 0x04
> #define TPS_SYSTEM_POWER_STATE_S5 0x05
>
> -/* TPS_REG_POWER_STATUS bits */
> -#define TPS_POWER_STATUS_CONNECTION(x) TPS_FIELD_GET(BIT(0), (x))
> -#define TPS_POWER_STATUS_SOURCESINK(x) TPS_FIELD_GET(BIT(1), (x))
> +/* TPS_REG_POWER_STATUS bits (masks shared by TPS_FIELD_GET accessors and FIELD_PREP) */
> +#define TPS_POWER_STATUS_CONNECTION_MASK BIT(0)
> +#define TPS_POWER_STATUS_SOURCESINK_MASK BIT(1)
> +#define TPS_POWER_STATUS_CONNECTION(x) \
> + TPS_FIELD_GET(TPS_POWER_STATUS_CONNECTION_MASK, (x))
> +#define TPS_POWER_STATUS_SOURCESINK(x) \
> + TPS_FIELD_GET(TPS_POWER_STATUS_SOURCESINK_MASK, (x))
> #define TPS_POWER_STATUS_BC12_DET(x) TPS_FIELD_GET(BIT(2), (x))
>
> #define TPS_POWER_STATUS_TYPEC_CURRENT_MASK GENMASK(3, 2)
> --
> 2.44.4
--
heikki
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] usb: typec: tipd: add error message for vendor ID read failure
2026-05-18 10:19 ` Heikki Krogerus
@ 2026-05-18 15:53 ` Pandey, Radhey Shyam
2026-05-19 13:54 ` Heikki Krogerus
0 siblings, 1 reply; 11+ messages in thread
From: Pandey, Radhey Shyam @ 2026-05-18 15:53 UTC (permalink / raw)
To: Heikki Krogerus, Radhey Shyam Pandey; +Cc: gregkh, linux-usb, linux-kernel, git
On 5/18/2026 3:49 PM, Heikki Krogerus wrote:
> On Wed, May 13, 2026 at 11:58:48PM +0530, Radhey Shyam Pandey wrote:
>> Log when the vendor ID read fails or returns zero, including the I2C error
>> code and register value, to ease probe diagnostics.
>>
>> Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
>> ---
>> drivers/usb/typec/tipd/core.c | 7 +++++--
>> 1 file changed, 5 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
>> index 43faec794b95..b282366b5326 100644
>> --- a/drivers/usb/typec/tipd/core.c
>> +++ b/drivers/usb/typec/tipd/core.c
>> @@ -1744,7 +1744,7 @@ static int tps6598x_probe(struct i2c_client *client)
>> struct tps6598x *tps;
>> struct fwnode_handle *fwnode;
>> u32 status;
>> - u32 vid;
>> + u32 vid = 0;
>
> Why is this necessary?
Thanks for the review.
When ret < 0, tps6598x_read32() → tps6598x_block_read() returns on
error before writing *val. So vid is never set; passing it to
dev_err with %#x would read an uninitialized u32(random log noise).
ret captures if I2C/regmap path reported an error and vid tells what
came back when the transport layer did not fail. Hope that clarifies.
Thanks,
Radhey
>
>> int ret;
>>
>> data = i2c_get_match_data(client);
>> @@ -1772,8 +1772,11 @@ static int tps6598x_probe(struct i2c_client *client)
>>
>> if (!device_is_compatible(tps->dev, "ti,tps25750")) {
>> ret = tps6598x_read32(tps, TPS_REG_VID, &vid);
>> - if (ret < 0 || !vid)
>> + if (ret < 0 || !vid) {
>> + dev_err(tps->dev, "failed to read vendor ID: %d, vid: %#x\n",
>> + ret, vid);
>> return -ENODEV;
>> + }
>> }
>>
>> /*
>> --
>> 2.44.4
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/3] usb: typec: tipd: demote missing IRQ log to info for polling mode
2026-05-18 10:26 ` Heikki Krogerus
@ 2026-05-18 15:56 ` Pandey, Radhey Shyam
0 siblings, 0 replies; 11+ messages in thread
From: Pandey, Radhey Shyam @ 2026-05-18 15:56 UTC (permalink / raw)
To: Heikki Krogerus, Radhey Shyam Pandey; +Cc: gregkh, linux-usb, linux-kernel, git
On 5/18/2026 3:56 PM, Heikki Krogerus wrote:
> On Wed, May 13, 2026 at 11:58:49PM +0530, Radhey Shyam Pandey wrote:
>> Operating without an interrupt line and using the driver's polling path
>> is valid. Log at info level instead of warning.
>>
>> Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
>> ---
>> drivers/usb/typec/tipd/core.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
>> index b282366b5326..fcd56bcffab8 100644
>> --- a/drivers/usb/typec/tipd/core.c
>> +++ b/drivers/usb/typec/tipd/core.c
>> @@ -1853,7 +1853,7 @@ static int tps6598x_probe(struct i2c_client *client)
>> IRQF_SHARED | IRQF_ONESHOT,
>> dev_name(&client->dev), tps);
>> } else {
>> - dev_warn(tps->dev, "Unable to find the interrupt, switching to polling\n");
>> + dev_info(tps->dev, "no IRQ specified, using polling mode\n");
>
> If this is a valid case, then the driver should not make any noise.
> Let's use deb_dbg() instead.
Sure , will make it dev_dbg in v2.
>
>> INIT_DELAYED_WORK(&tps->wq_poll, tps6598x_poll_work);
>> queue_delayed_work(system_power_efficient_wq, &tps->wq_poll,
>> msecs_to_jiffies(POLL_INTERVAL));
>
> thanks,
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] usb: typec: tipd: add error message for vendor ID read failure
2026-05-18 15:53 ` Pandey, Radhey Shyam
@ 2026-05-19 13:54 ` Heikki Krogerus
2026-05-19 16:23 ` Pandey, Radhey Shyam
0 siblings, 1 reply; 11+ messages in thread
From: Heikki Krogerus @ 2026-05-19 13:54 UTC (permalink / raw)
To: Pandey, Radhey Shyam
Cc: Radhey Shyam Pandey, gregkh, linux-usb, linux-kernel, git
On Mon, May 18, 2026 at 09:23:58PM +0530, Pandey, Radhey Shyam wrote:
> On 5/18/2026 3:49 PM, Heikki Krogerus wrote:
> > On Wed, May 13, 2026 at 11:58:48PM +0530, Radhey Shyam Pandey wrote:
> > > Log when the vendor ID read fails or returns zero, including the I2C error
> > > code and register value, to ease probe diagnostics.
> > >
> > > Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
> > > ---
> > > drivers/usb/typec/tipd/core.c | 7 +++++--
> > > 1 file changed, 5 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
> > > index 43faec794b95..b282366b5326 100644
> > > --- a/drivers/usb/typec/tipd/core.c
> > > +++ b/drivers/usb/typec/tipd/core.c
> > > @@ -1744,7 +1744,7 @@ static int tps6598x_probe(struct i2c_client *client)
> > > struct tps6598x *tps;
> > > struct fwnode_handle *fwnode;
> > > u32 status;
> > > - u32 vid;
> > > + u32 vid = 0;
> >
> > Why is this necessary?
>
> Thanks for the review.
>
> When ret < 0, tps6598x_read32() → tps6598x_block_read() returns on
> error before writing *val. So vid is never set; passing it to
> dev_err with %#x would read an uninitialized u32(random log noise).
>
> ret captures if I2C/regmap path reported an error and vid tells what
> came back when the transport layer did not fail. Hope that clarifies.
Okay, got it.
Thanks,
> Thanks,
> Radhey
> >
> > > int ret;
> > > data = i2c_get_match_data(client);
> > > @@ -1772,8 +1772,11 @@ static int tps6598x_probe(struct i2c_client *client)
> > > if (!device_is_compatible(tps->dev, "ti,tps25750")) {
> > > ret = tps6598x_read32(tps, TPS_REG_VID, &vid);
> > > - if (ret < 0 || !vid)
> > > + if (ret < 0 || !vid) {
> > > + dev_err(tps->dev, "failed to read vendor ID: %d, vid: %#x\n",
> > > + ret, vid);
> > > return -ENODEV;
> > > + }
> > > }
> > > /*
> > > --
> > > 2.44.4
> >
--
heikki
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] usb: typec: tipd: add error message for vendor ID read failure
2026-05-19 13:54 ` Heikki Krogerus
@ 2026-05-19 16:23 ` Pandey, Radhey Shyam
0 siblings, 0 replies; 11+ messages in thread
From: Pandey, Radhey Shyam @ 2026-05-19 16:23 UTC (permalink / raw)
To: Heikki Krogerus; +Cc: Radhey Shyam Pandey, gregkh, linux-usb, linux-kernel, git
> On Mon, May 18, 2026 at 09:23:58PM +0530, Pandey, Radhey Shyam wrote:
>> On 5/18/2026 3:49 PM, Heikki Krogerus wrote:
>>> On Wed, May 13, 2026 at 11:58:48PM +0530, Radhey Shyam Pandey wrote:
>>>> Log when the vendor ID read fails or returns zero, including the I2C error
>>>> code and register value, to ease probe diagnostics.
>>>>
>>>> Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
>>>> ---
>>>> drivers/usb/typec/tipd/core.c | 7 +++++--
>>>> 1 file changed, 5 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
>>>> index 43faec794b95..b282366b5326 100644
>>>> --- a/drivers/usb/typec/tipd/core.c
>>>> +++ b/drivers/usb/typec/tipd/core.c
>>>> @@ -1744,7 +1744,7 @@ static int tps6598x_probe(struct i2c_client *client)
>>>> struct tps6598x *tps;
>>>> struct fwnode_handle *fwnode;
>>>> u32 status;
>>>> - u32 vid;
>>>> + u32 vid = 0;
>>>
>>> Why is this necessary?
>>
>> Thanks for the review.
>>
>> When ret < 0, tps6598x_read32() → tps6598x_block_read() returns on
>> error before writing *val. So vid is never set; passing it to
>> dev_err with %#x would read an uninitialized u32(random log noise).
>>
>> ret captures if I2C/regmap path reported an error and vid tells what
>> came back when the transport layer did not fail. Hope that clarifies.
>
> Okay, got it.
>
Thanks , will also capture this justification in v2 commit message.
> Thanks,
>
>> Thanks,
>> Radhey
>>>
>>>> int ret;
>>>> data = i2c_get_match_data(client);
>>>> @@ -1772,8 +1772,11 @@ static int tps6598x_probe(struct i2c_client *client)
>>>> if (!device_is_compatible(tps->dev, "ti,tps25750")) {
>>>> ret = tps6598x_read32(tps, TPS_REG_VID, &vid);
>>>> - if (ret < 0 || !vid)
>>>> + if (ret < 0 || !vid) {
>>>> + dev_err(tps->dev, "failed to read vendor ID: %d, vid: %#x\n",
>>>> + ret, vid);
>>>> return -ENODEV;
>>>> + }
>>>> }
>>>> /*
>>>> --
>>>> 2.44.4
>>>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-05-19 16:23 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-13 18:28 [PATCH 0/3] usb: typec: tipd: improve probe diagnostics and POWER_STATUS handling Radhey Shyam Pandey
2026-05-13 18:28 ` [PATCH 1/3] usb: typec: tipd: add error message for vendor ID read failure Radhey Shyam Pandey
2026-05-18 10:19 ` Heikki Krogerus
2026-05-18 15:53 ` Pandey, Radhey Shyam
2026-05-19 13:54 ` Heikki Krogerus
2026-05-19 16:23 ` Pandey, Radhey Shyam
2026-05-13 18:28 ` [PATCH 2/3] usb: typec: tipd: demote missing IRQ log to info for polling mode Radhey Shyam Pandey
2026-05-18 10:26 ` Heikki Krogerus
2026-05-18 15:56 ` Pandey, Radhey Shyam
2026-05-13 18:28 ` [PATCH 3/3] usb: typec: tipd: name TPS_REG_POWER_STATUS field masks Radhey Shyam Pandey
2026-05-18 10:34 ` Heikki Krogerus
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox