2018-03-24 00:36:16

by Benson Leung

[permalink] [raw]
Subject: [PATCH] USB: announce bcdDevice as well as idVendor, idProduct.

Print bcdDevice which is used by vendors to identify different versions
of the same product (or different versions of firmware).

Adding this to the logs will be useful for support purposes.

Signed-off-by: Benson Leung <[email protected]>
---
drivers/usb/core/hub.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index aaeef03c0d83..739d599814b6 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -2192,14 +2192,16 @@ static void show_string(struct usb_device *udev, char *id, char *string)

static void announce_device(struct usb_device *udev)
{
- dev_info(&udev->dev, "New USB device found, idVendor=%04x, idProduct=%04x\n",
- le16_to_cpu(udev->descriptor.idVendor),
- le16_to_cpu(udev->descriptor.idProduct));
dev_info(&udev->dev,
- "New USB device strings: Mfr=%d, Product=%d, SerialNumber=%d\n",
- udev->descriptor.iManufacturer,
- udev->descriptor.iProduct,
- udev->descriptor.iSerialNumber);
+ "New USB device found, idVendor=%04x, idProduct=%04x, bcdDevice=%04x\n",
+ le16_to_cpu(udev->descriptor.idVendor),
+ le16_to_cpu(udev->descriptor.idProduct),
+ le16_to_cpu(udev->descriptor.bcdDevice));
+ dev_info(&udev->dev,
+ "New USB device strings: Mfr=%d, Product=%d, SerialNumber=%d\n",
+ udev->descriptor.iManufacturer,
+ udev->descriptor.iProduct,
+ udev->descriptor.iSerialNumber);
show_string(udev, "Product", udev->product);
show_string(udev, "Manufacturer", udev->manufacturer);
show_string(udev, "SerialNumber", udev->serial);
--
2.17.0.rc0.231.g781580f067-goog



2018-03-24 00:51:28

by Andrew Chant

[permalink] [raw]
Subject: Re: [PATCH] USB: announce bcdDevice as well as idVendor, idProduct.

On Fri, Mar 23, 2018 at 5:33 PM, Benson Leung <[email protected]> wrote:
> Print bcdDevice which is used by vendors to identify different versions
> of the same product (or different versions of firmware).
>
> Adding this to the logs will be useful for support purposes.
>
> Signed-off-by: Benson Leung <[email protected]>
> ---
> drivers/usb/core/hub.c | 16 +++++++++-------
> 1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
> index aaeef03c0d83..739d599814b6 100644
> --- a/drivers/usb/core/hub.c
> +++ b/drivers/usb/core/hub.c
> @@ -2192,14 +2192,16 @@ static void show_string(struct usb_device *udev, char *id, char *string)
>
> static void announce_device(struct usb_device *udev)
> {
> - dev_info(&udev->dev, "New USB device found, idVendor=%04x, idProduct=%04x\n",
> - le16_to_cpu(udev->descriptor.idVendor),
> - le16_to_cpu(udev->descriptor.idProduct));
> dev_info(&udev->dev,
> - "New USB device strings: Mfr=%d, Product=%d, SerialNumber=%d\n",
> - udev->descriptor.iManufacturer,
> - udev->descriptor.iProduct,
> - udev->descriptor.iSerialNumber);
> + "New USB device found, idVendor=%04x, idProduct=%04x, bcdDevice=%04x\n",
> + le16_to_cpu(udev->descriptor.idVendor),
> + le16_to_cpu(udev->descriptor.idProduct),
> + le16_to_cpu(udev->descriptor.bcdDevice));
> + dev_info(&udev->dev,
> + "New USB device strings: Mfr=%d, Product=%d, SerialNumber=%d\n",
> + udev->descriptor.iManufacturer,
> + udev->descriptor.iProduct,
> + udev->descriptor.iSerialNumber);
> show_string(udev, "Product", udev->product);
> show_string(udev, "Manufacturer", udev->manufacturer);
> show_string(udev, "SerialNumber", udev->serial);
> --
> 2.17.0.rc0.231.g781580f067-goog
>

> + "New USB device found, idVendor=%04x, idProduct=%04x, bcdDevice=%04x\n",
Can you please decode bcdDevice into a decimal string?

lsusb -v does this (bcdDevice: 0.03 for example) and in my experience
it has generally matched up with how hardware manufacturers refer
to their firmware.

2018-03-24 01:09:58

by Andrew Chant

[permalink] [raw]
Subject: Re: [PATCH] USB: announce bcdDevice as well as idVendor, idProduct.

On Fri, Mar 23, 2018 at 5:48 PM, Andrew Chant <[email protected]> wrote:
> On Fri, Mar 23, 2018 at 5:33 PM, Benson Leung <[email protected]> wrote:
>> Print bcdDevice which is used by vendors to identify different versions
>> of the same product (or different versions of firmware).
>>
>> Adding this to the logs will be useful for support purposes.
>>
>> Signed-off-by: Benson Leung <[email protected]>
>> ---
>> drivers/usb/core/hub.c | 16 +++++++++-------
>> 1 file changed, 9 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
>> index aaeef03c0d83..739d599814b6 100644
>> --- a/drivers/usb/core/hub.c
>> +++ b/drivers/usb/core/hub.c
>> @@ -2192,14 +2192,16 @@ static void show_string(struct usb_device *udev, char *id, char *string)
>>
>> static void announce_device(struct usb_device *udev)
>> {
>> - dev_info(&udev->dev, "New USB device found, idVendor=%04x, idProduct=%04x\n",
>> - le16_to_cpu(udev->descriptor.idVendor),
>> - le16_to_cpu(udev->descriptor.idProduct));
>> dev_info(&udev->dev,
>> - "New USB device strings: Mfr=%d, Product=%d, SerialNumber=%d\n",
>> - udev->descriptor.iManufacturer,
>> - udev->descriptor.iProduct,
>> - udev->descriptor.iSerialNumber);
>> + "New USB device found, idVendor=%04x, idProduct=%04x, bcdDevice=%04x\n",
>> + le16_to_cpu(udev->descriptor.idVendor),
>> + le16_to_cpu(udev->descriptor.idProduct),
>> + le16_to_cpu(udev->descriptor.bcdDevice));
>> + dev_info(&udev->dev,
>> + "New USB device strings: Mfr=%d, Product=%d, SerialNumber=%d\n",
>> + udev->descriptor.iManufacturer,
>> + udev->descriptor.iProduct,
>> + udev->descriptor.iSerialNumber);
>> show_string(udev, "Product", udev->product);
>> show_string(udev, "Manufacturer", udev->manufacturer);
>> show_string(udev, "SerialNumber", udev->serial);
>> --
>> 2.17.0.rc0.231.g781580f067-goog
>>
>
>> + "New USB device found, idVendor=%04x, idProduct=%04x, bcdDevice=%04x\n",
> Can you please decode bcdDevice into a decimal string?
>
> lsusb -v does this (bcdDevice: 0.03 for example) and in my experience
> it has generally matched up with how hardware manufacturers refer
> to their firmware.

Nevermind, %x should show bcd properly. looks fine.

2018-03-24 01:33:16

by Benson Leung

[permalink] [raw]
Subject: [PATCH v2] USB: announce bcdDevice as well as idVendor, idProduct.

Print bcdDevice which is used by vendors to identify different versions
of the same product (or different versions of firmware).

Adding this to the logs will be useful for support purposes.

Match the %2x.%02x formatting that's used by lsusb -v for this same value.

Signed-off-by: Benson Leung <[email protected]>
--
v2: Format for decimal output.
---
drivers/usb/core/hub.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index aaeef03c0d83..624cde7ffcea 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -2192,14 +2192,19 @@ static void show_string(struct usb_device *udev, char *id, char *string)

static void announce_device(struct usb_device *udev)
{
- dev_info(&udev->dev, "New USB device found, idVendor=%04x, idProduct=%04x\n",
- le16_to_cpu(udev->descriptor.idVendor),
- le16_to_cpu(udev->descriptor.idProduct));
+ u16 bcdDevice;
+
+ bcdDevice = le16_to_cpu(udev->descriptor.bcdDevice);
+ dev_info(&udev->dev,
+ "New USB device found, idVendor=%04x, idProduct=%04x, bcdDevice=%2x.%02x\n",
+ le16_to_cpu(udev->descriptor.idVendor),
+ le16_to_cpu(udev->descriptor.idProduct),
+ bcdDevice >> 8, bcdDevice & 0xff);
dev_info(&udev->dev,
- "New USB device strings: Mfr=%d, Product=%d, SerialNumber=%d\n",
- udev->descriptor.iManufacturer,
- udev->descriptor.iProduct,
- udev->descriptor.iSerialNumber);
+ "New USB device strings: Mfr=%d, Product=%d, SerialNumber=%d\n",
+ udev->descriptor.iManufacturer,
+ udev->descriptor.iProduct,
+ udev->descriptor.iSerialNumber);
show_string(udev, "Product", udev->product);
show_string(udev, "Manufacturer", udev->manufacturer);
show_string(udev, "SerialNumber", udev->serial);
--
2.17.0.rc0.231.g781580f067-goog


2018-03-24 01:35:20

by Benson Leung

[permalink] [raw]
Subject: Re: [PATCH] USB: announce bcdDevice as well as idVendor, idProduct.

On Fri, Mar 23, 2018 at 06:08:07PM -0700, Andrew Chant wrote:
> >> + "New USB device found, idVendor=%04x, idProduct=%04x, bcdDevice=%04x\n",
> > Can you please decode bcdDevice into a decimal string?
> >
> > lsusb -v does this (bcdDevice: 0.03 for example) and in my experience
> > it has generally matched up with how hardware manufacturers refer
> > to their firmware.
>
> Nevermind, %x should show bcd properly. looks fine.

I like the way lsusb -v does it better. Take a look at v2.

Thanks,
Benson

--
Benson Leung
Staff Software Engineer
Chrome OS Kernel
Google Inc.
[email protected]
Chromium OS Project
[email protected]


Attachments:
(No filename) (673.00 B)
signature.asc (849.00 B)
Download all attachments

2018-03-24 16:07:32

by Alan Stern

[permalink] [raw]
Subject: Re: [PATCH v2] USB: announce bcdDevice as well as idVendor, idProduct.

On Fri, 23 Mar 2018, Benson Leung wrote:

> Print bcdDevice which is used by vendors to identify different versions
> of the same product (or different versions of firmware).
>
> Adding this to the logs will be useful for support purposes.
>
> Match the %2x.%02x formatting that's used by lsusb -v for this same value.
>
> Signed-off-by: Benson Leung <[email protected]>
> --
> v2: Format for decimal output.
> ---
> drivers/usb/core/hub.c | 19 ++++++++++++-------
> 1 file changed, 12 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
> index aaeef03c0d83..624cde7ffcea 100644
> --- a/drivers/usb/core/hub.c
> +++ b/drivers/usb/core/hub.c
> @@ -2192,14 +2192,19 @@ static void show_string(struct usb_device *udev, char *id, char *string)
>
> static void announce_device(struct usb_device *udev)
> {
> - dev_info(&udev->dev, "New USB device found, idVendor=%04x, idProduct=%04x\n",
> - le16_to_cpu(udev->descriptor.idVendor),
> - le16_to_cpu(udev->descriptor.idProduct));
> + u16 bcdDevice;
> +
> + bcdDevice = le16_to_cpu(udev->descriptor.bcdDevice);
> + dev_info(&udev->dev,
> + "New USB device found, idVendor=%04x, idProduct=%04x, bcdDevice=%2x.%02x\n",
> + le16_to_cpu(udev->descriptor.idVendor),

Unnecessary and incorrect whitespace changes.

> + le16_to_cpu(udev->descriptor.idProduct),
> + bcdDevice >> 8, bcdDevice & 0xff);
> dev_info(&udev->dev,
> - "New USB device strings: Mfr=%d, Product=%d, SerialNumber=%d\n",
> - udev->descriptor.iManufacturer,
> - udev->descriptor.iProduct,
> - udev->descriptor.iSerialNumber);
> + "New USB device strings: Mfr=%d, Product=%d, SerialNumber=%d\n",
> + udev->descriptor.iManufacturer,
> + udev->descriptor.iProduct,
> + udev->descriptor.iSerialNumber);

Same here.

Alan Stern


2018-03-24 17:41:59

by Benson Leung

[permalink] [raw]
Subject: [PATCH v3] USB: announce bcdDevice as well as idVendor, idProduct.

Print bcdDevice which is used by vendors to identify different versions
of the same product (or different versions of firmware).

Adding this to the logs will be useful for support purposes.

Match the %2x.%02x formatting that's used by lsusb -v for this same value.

Signed-off-by: Benson Leung <[email protected]>
---

v3: Remove unnecessary whitespace changes.
v2: Format for decimal output.

drivers/usb/core/hub.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index aaeef03c0d83..779725836cf5 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -2192,9 +2192,13 @@ static void show_string(struct usb_device *udev, char *id, char *string)

static void announce_device(struct usb_device *udev)
{
- dev_info(&udev->dev, "New USB device found, idVendor=%04x, idProduct=%04x\n",
+ u16 bcdDevice = le16_to_cpu(udev->descriptor.bcdDevice);
+
+ dev_info(&udev->dev,
+ "New USB device found, idVendor=%04x, idProduct=%04x, bcdDevice=%2x.%02x\n",
le16_to_cpu(udev->descriptor.idVendor),
- le16_to_cpu(udev->descriptor.idProduct));
+ le16_to_cpu(udev->descriptor.idProduct),
+ bcdDevice >> 8, bcdDevice & 0xff);
dev_info(&udev->dev,
"New USB device strings: Mfr=%d, Product=%d, SerialNumber=%d\n",
udev->descriptor.iManufacturer,
--
2.17.0.rc0.231.g781580f067-goog


2018-03-24 17:44:25

by Benson Leung

[permalink] [raw]
Subject: Re: [PATCH v2] USB: announce bcdDevice as well as idVendor, idProduct.

On Sat, Mar 24, 2018 at 12:06:20PM -0400, Alan Stern wrote:
> > + dev_info(&udev->dev,
> > + "New USB device found, idVendor=%04x, idProduct=%04x, bcdDevice=%2x.%02x\n",
> > + le16_to_cpu(udev->descriptor.idVendor),
>
> Unnecessary and incorrect whitespace changes.

Thanks Alan. Fixed in v3.

Benson
--
Benson Leung
Staff Software Engineer
Chrome OS Kernel
Google Inc.
[email protected]
Chromium OS Project
[email protected]


Attachments:
(No filename) (453.00 B)
signature.asc (849.00 B)
Download all attachments

2018-03-26 18:29:03

by Alan Stern

[permalink] [raw]
Subject: Re: [PATCH v3] USB: announce bcdDevice as well as idVendor, idProduct.

On Sat, 24 Mar 2018, Benson Leung wrote:

> Print bcdDevice which is used by vendors to identify different versions
> of the same product (or different versions of firmware).
>
> Adding this to the logs will be useful for support purposes.
>
> Match the %2x.%02x formatting that's used by lsusb -v for this same value.
>
> Signed-off-by: Benson Leung <[email protected]>
> ---
>
> v3: Remove unnecessary whitespace changes.
> v2: Format for decimal output.
>
> drivers/usb/core/hub.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
> index aaeef03c0d83..779725836cf5 100644
> --- a/drivers/usb/core/hub.c
> +++ b/drivers/usb/core/hub.c
> @@ -2192,9 +2192,13 @@ static void show_string(struct usb_device *udev, char *id, char *string)
>
> static void announce_device(struct usb_device *udev)
> {
> - dev_info(&udev->dev, "New USB device found, idVendor=%04x, idProduct=%04x\n",
> + u16 bcdDevice = le16_to_cpu(udev->descriptor.bcdDevice);
> +
> + dev_info(&udev->dev,
> + "New USB device found, idVendor=%04x, idProduct=%04x, bcdDevice=%2x.%02x\n",
> le16_to_cpu(udev->descriptor.idVendor),
> - le16_to_cpu(udev->descriptor.idProduct));
> + le16_to_cpu(udev->descriptor.idProduct),
> + bcdDevice >> 8, bcdDevice & 0xff);
> dev_info(&udev->dev,
> "New USB device strings: Mfr=%d, Product=%d, SerialNumber=%d\n",
> udev->descriptor.iManufacturer,

Acked-by: Alan Stern <[email protected]>