* [PATCH v4 1/3] usb: misc: ljca: move usb_autopm_put_interface() after wait for response
@ 2024-11-12 7:55 Stanislaw Gruszka
2024-11-12 7:55 ` [PATCH v4 2/3] usb: misc: ljca: set small runtime autosuspend delay Stanislaw Gruszka
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Stanislaw Gruszka @ 2024-11-12 7:55 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-usb, Wentong Wu, Sakari Ailus, Hans de Goede
Do not mark interface as ready to suspend when we are still waiting
for response messages from the device.
Fixes: acd6199f195d ("usb: Add support for Intel LJCA device")
Cc: stable@vger.kernel.org
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Tested-by: Hans de Goede <hdegoede@redhat.com> # ThinkPad X1 Yoga Gen 8, ov2740
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
---
v3 -> v4: no change in this patch
v2 -> v3: add A-b tag from Sakari
v1 -> v2: fix handing error of usb_autopm_get_interface(),
add R-b, T-b tags from Hans
drivers/usb/misc/usb-ljca.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/usb/misc/usb-ljca.c b/drivers/usb/misc/usb-ljca.c
index 01ceafc4ab78..8056c65e4548 100644
--- a/drivers/usb/misc/usb-ljca.c
+++ b/drivers/usb/misc/usb-ljca.c
@@ -332,14 +332,11 @@ static int ljca_send(struct ljca_adapter *adap, u8 type, u8 cmd,
ret = usb_bulk_msg(adap->usb_dev, adap->tx_pipe, header,
msg_len, &transferred, LJCA_WRITE_TIMEOUT_MS);
-
- usb_autopm_put_interface(adap->intf);
-
if (ret < 0)
- goto out;
+ goto out_put;
if (transferred != msg_len) {
ret = -EIO;
- goto out;
+ goto out_put;
}
if (ack) {
@@ -347,11 +344,14 @@ static int ljca_send(struct ljca_adapter *adap, u8 type, u8 cmd,
timeout);
if (!ret) {
ret = -ETIMEDOUT;
- goto out;
+ goto out_put;
}
}
ret = adap->actual_length;
+out_put:
+ usb_autopm_put_interface(adap->intf);
+
out:
spin_lock_irqsave(&adap->lock, flags);
adap->ex_buf = NULL;
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 2/3] usb: misc: ljca: set small runtime autosuspend delay
2024-11-12 7:55 [PATCH v4 1/3] usb: misc: ljca: move usb_autopm_put_interface() after wait for response Stanislaw Gruszka
@ 2024-11-12 7:55 ` Stanislaw Gruszka
2024-11-12 7:55 ` [PATCH v4 3/3] usb: misc: ljca: add firmware version sysfs attribute Stanislaw Gruszka
2024-11-12 10:13 ` [PATCH v4 1/3] usb: misc: ljca: move usb_autopm_put_interface() after wait for response Hans de Goede
2 siblings, 0 replies; 7+ messages in thread
From: Stanislaw Gruszka @ 2024-11-12 7:55 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-usb, Wentong Wu, Sakari Ailus, Hans de Goede
On some Lenovo platforms, the patch works around problems with ov2740
sensor initialization, which manifest themself like below:
[ 4.540476] ov2740 i2c-INT3474:01: error -EIO: failed to find sensor
[ 4.542066] ov2740 i2c-INT3474:01: probe with driver ov2740 failed with error -5
or
[ 7.742633] ov2740 i2c-INT3474:01: chip id mismatch: 2740 != 0
[ 7.742638] ov2740 i2c-INT3474:01: error -ENXIO: failed to find sensor
and also by random failures of video stream start.
Issue can be reproduced by this script:
n=0
k=0
while [ $n -lt 50 ] ; do
sudo modprobe -r ov2740
sleep `expr $RANDOM % 5`
sudo modprobe ov2740
if media-ctl -p | grep -q ov2740 ; then
let k++
fi
let n++
done
echo Success rate $k/$n
Without the patch, success rate is approximately 15 or 50 tries.
With the patch it does not fail.
This problem is some hardware or firmware malfunction, that can not be
easy debug and fix. While setting small autosuspend delay is not perfect
workaround as user can configure it to any value, it will prevent
the failures by default.
Additionally setting small autosuspend delay should have positive effect
on power consumption as for most ljca workloads device is used for just
a few milliseconds flowed by long periods of at least 100ms of inactivity
(usually more).
Fixes: acd6199f195d ("usb: Add support for Intel LJCA device")
Cc: stable@vger.kernel.org
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Tested-by: Hans de Goede <hdegoede@redhat.com> # ThinkPad X1 Yoga Gen 8, ov2740
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
---
v3 -> v4: no change in this patch
v2 -> v3: add A-b tag from Sakari
v1 -> v2: add R-b, T-b tags from Hans
drivers/usb/misc/usb-ljca.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/usb/misc/usb-ljca.c b/drivers/usb/misc/usb-ljca.c
index 8056c65e4548..d9c21f783055 100644
--- a/drivers/usb/misc/usb-ljca.c
+++ b/drivers/usb/misc/usb-ljca.c
@@ -811,6 +811,14 @@ static int ljca_probe(struct usb_interface *interface,
if (ret)
goto err_free;
+ /*
+ * This works around problems with ov2740 initialization on some
+ * Lenovo platforms. The autosuspend delay, has to be smaller than
+ * the delay after setting the reset_gpio line in ov2740_resume().
+ * Otherwise the sensor randomly fails to initialize.
+ */
+ pm_runtime_set_autosuspend_delay(&usb_dev->dev, 10);
+
usb_enable_autosuspend(usb_dev);
return 0;
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 3/3] usb: misc: ljca: add firmware version sysfs attribute
2024-11-12 7:55 [PATCH v4 1/3] usb: misc: ljca: move usb_autopm_put_interface() after wait for response Stanislaw Gruszka
2024-11-12 7:55 ` [PATCH v4 2/3] usb: misc: ljca: set small runtime autosuspend delay Stanislaw Gruszka
@ 2024-11-12 7:55 ` Stanislaw Gruszka
2024-11-12 8:06 ` Greg Kroah-Hartman
2024-11-12 13:05 ` kernel test robot
2024-11-12 10:13 ` [PATCH v4 1/3] usb: misc: ljca: move usb_autopm_put_interface() after wait for response Hans de Goede
2 siblings, 2 replies; 7+ messages in thread
From: Stanislaw Gruszka @ 2024-11-12 7:55 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-usb, Wentong Wu, Sakari Ailus, Hans de Goede
For diagnostics purpose read firmware version during probe and add
sysfs attribute to make that information available.
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
---
v3->v4: use sysfs attribute to provide firmware version,
drop tags from Hans since the code changed
v2->v3: use dev_dbg() for printing the firmware version
v1->v2: fix 80-chars line wrap
.../ABI/testing/sysfs-bus-usb-devices-ljca | 9 ++++
drivers/usb/misc/usb-ljca.c | 53 +++++++++++++++++++
2 files changed, 62 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-bus-usb-devices-ljca
diff --git a/Documentation/ABI/testing/sysfs-bus-usb-devices-ljca b/Documentation/ABI/testing/sysfs-bus-usb-devices-ljca
new file mode 100644
index 000000000000..f5eb38bf99a8
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-usb-devices-ljca
@@ -0,0 +1,9 @@
+What: /sys/bus/usb/devices/.../ljca_version
+Date: November 2024
+KernelVersion: 6.13
+Contact: Sakari Ailus <sakari.ailus@linux.intel.com>
+Description:
+ Provides the firmware version of LJCA device.
+ The format is Major.Minor.Patch.Build, where
+ Major, Minor, Patch, and Build are decimal numbers.
+ For example: 1.0.0.256
diff --git a/drivers/usb/misc/usb-ljca.c b/drivers/usb/misc/usb-ljca.c
index d9c21f783055..4b5bd5b27b2a 100644
--- a/drivers/usb/misc/usb-ljca.c
+++ b/drivers/usb/misc/usb-ljca.c
@@ -43,6 +43,7 @@ enum ljca_client_type {
/* MNG client commands */
enum ljca_mng_cmd {
+ LJCA_MNG_GET_VERSION = 1,
LJCA_MNG_RESET = 2,
LJCA_MNG_ENUM_GPIO = 4,
LJCA_MNG_ENUM_I2C = 5,
@@ -68,6 +69,13 @@ struct ljca_msg {
u8 data[] __counted_by(len);
} __packed;
+struct ljca_fw_version {
+ u8 major;
+ u8 minor;
+ __le16 patch;
+ __le16 build;
+} __packed;
+
struct ljca_i2c_ctr_info {
u8 id;
u8 capacity;
@@ -152,8 +160,10 @@ struct ljca_adapter {
struct mutex mutex;
struct list_head client_list;
+ struct ljca_fw_version fw_version;
bool disconnect;
+ bool fw_version_valid;
u32 reset_id;
};
@@ -740,6 +750,24 @@ static int ljca_enumerate_clients(struct ljca_adapter *adap)
return ret;
}
+static void ljca_read_fw_version(struct ljca_adapter *adap)
+{
+ struct ljca_fw_version version;
+ int ret;
+
+ ret = ljca_send(adap, LJCA_CLIENT_MNG, LJCA_MNG_GET_VERSION, NULL, 0,
+ (u8 *)&version, sizeof(version), true,
+ LJCA_WRITE_ACK_TIMEOUT_MS);
+
+ if (ret != sizeof(version)) {
+ dev_err(adap->dev, "Get version failed, ret: %d\n", ret);
+ return;
+ }
+
+ adap->fw_version = version;
+ adap->fw_version_valid = true;
+}
+
static int ljca_probe(struct usb_interface *interface,
const struct usb_device_id *id)
{
@@ -811,6 +839,8 @@ static int ljca_probe(struct usb_interface *interface,
if (ret)
goto err_free;
+ ljca_read_fw_version(adap);
+
/*
* This works around problems with ov2740 initialization on some
* Lenovo platforms. The autosuspend delay, has to be smaller than
@@ -874,6 +904,28 @@ static int ljca_resume(struct usb_interface *interface)
return usb_submit_urb(adap->rx_urb, GFP_KERNEL);
}
+static ssize_t ljca_version_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct usb_interface *intf = to_usb_interface(dev);
+ struct ljca_adapter *adap = usb_get_intfdata(intf);
+ struct ljca_fw_version ver = adap->fw_version;
+
+ if (!adap->fw_version_valid)
+ return -ENODATA;
+
+ return sysfs_emit(buf, "%d.%d.%d.%d\n", ver.major, ver.minor,
+ le16_to_cpu(ver.patch), le16_to_cpu(ver.build));
+}
+
+static DEVICE_ATTR_RO(ljca_version);
+
+static struct attribute *ljca_attrs[] = {
+ &dev_attr_ljca_version.attr,
+};
+
+ATTRIBUTE_GROUPS(ljca);
+
static const struct usb_device_id ljca_table[] = {
{ USB_DEVICE(0x8086, 0x0b63) },
{ /* sentinel */ }
@@ -888,6 +940,7 @@ static struct usb_driver ljca_driver = {
.suspend = ljca_suspend,
.resume = ljca_resume,
.supports_autosuspend = 1,
+ .dev_groups = ljca_groups,
};
module_usb_driver(ljca_driver);
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v4 3/3] usb: misc: ljca: add firmware version sysfs attribute
2024-11-12 7:55 ` [PATCH v4 3/3] usb: misc: ljca: add firmware version sysfs attribute Stanislaw Gruszka
@ 2024-11-12 8:06 ` Greg Kroah-Hartman
2024-11-12 13:05 ` kernel test robot
1 sibling, 0 replies; 7+ messages in thread
From: Greg Kroah-Hartman @ 2024-11-12 8:06 UTC (permalink / raw)
To: Stanislaw Gruszka; +Cc: linux-usb, Wentong Wu, Sakari Ailus, Hans de Goede
On Tue, Nov 12, 2024 at 08:55:14AM +0100, Stanislaw Gruszka wrote:
> For diagnostics purpose read firmware version during probe and add
> sysfs attribute to make that information available.
>
> Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
> ---
> v3->v4: use sysfs attribute to provide firmware version,
> drop tags from Hans since the code changed
> v2->v3: use dev_dbg() for printing the firmware version
> v1->v2: fix 80-chars line wrap
>
> .../ABI/testing/sysfs-bus-usb-devices-ljca | 9 ++++
> drivers/usb/misc/usb-ljca.c | 53 +++++++++++++++++++
> 2 files changed, 62 insertions(+)
> create mode 100644 Documentation/ABI/testing/sysfs-bus-usb-devices-ljca
>
> diff --git a/Documentation/ABI/testing/sysfs-bus-usb-devices-ljca b/Documentation/ABI/testing/sysfs-bus-usb-devices-ljca
> new file mode 100644
> index 000000000000..f5eb38bf99a8
> --- /dev/null
> +++ b/Documentation/ABI/testing/sysfs-bus-usb-devices-ljca
> @@ -0,0 +1,9 @@
> +What: /sys/bus/usb/devices/.../ljca_version
> +Date: November 2024
> +KernelVersion: 6.13
> +Contact: Sakari Ailus <sakari.ailus@linux.intel.com>
> +Description:
> + Provides the firmware version of LJCA device.
> + The format is Major.Minor.Patch.Build, where
> + Major, Minor, Patch, and Build are decimal numbers.
> + For example: 1.0.0.256
> diff --git a/drivers/usb/misc/usb-ljca.c b/drivers/usb/misc/usb-ljca.c
> index d9c21f783055..4b5bd5b27b2a 100644
> --- a/drivers/usb/misc/usb-ljca.c
> +++ b/drivers/usb/misc/usb-ljca.c
> @@ -43,6 +43,7 @@ enum ljca_client_type {
>
> /* MNG client commands */
> enum ljca_mng_cmd {
> + LJCA_MNG_GET_VERSION = 1,
> LJCA_MNG_RESET = 2,
> LJCA_MNG_ENUM_GPIO = 4,
> LJCA_MNG_ENUM_I2C = 5,
> @@ -68,6 +69,13 @@ struct ljca_msg {
> u8 data[] __counted_by(len);
> } __packed;
>
> +struct ljca_fw_version {
> + u8 major;
> + u8 minor;
> + __le16 patch;
> + __le16 build;
> +} __packed;
> +
> struct ljca_i2c_ctr_info {
> u8 id;
> u8 capacity;
> @@ -152,8 +160,10 @@ struct ljca_adapter {
> struct mutex mutex;
>
> struct list_head client_list;
> + struct ljca_fw_version fw_version;
>
> bool disconnect;
> + bool fw_version_valid;
>
> u32 reset_id;
> };
> @@ -740,6 +750,24 @@ static int ljca_enumerate_clients(struct ljca_adapter *adap)
> return ret;
> }
>
> +static void ljca_read_fw_version(struct ljca_adapter *adap)
> +{
> + struct ljca_fw_version version;
> + int ret;
> +
> + ret = ljca_send(adap, LJCA_CLIENT_MNG, LJCA_MNG_GET_VERSION, NULL, 0,
> + (u8 *)&version, sizeof(version), true,
> + LJCA_WRITE_ACK_TIMEOUT_MS);
> +
> + if (ret != sizeof(version)) {
> + dev_err(adap->dev, "Get version failed, ret: %d\n", ret);
> + return;
> + }
> +
> + adap->fw_version = version;
> + adap->fw_version_valid = true;
> +}
> +
> static int ljca_probe(struct usb_interface *interface,
> const struct usb_device_id *id)
> {
> @@ -811,6 +839,8 @@ static int ljca_probe(struct usb_interface *interface,
> if (ret)
> goto err_free;
>
> + ljca_read_fw_version(adap);
> +
> /*
> * This works around problems with ov2740 initialization on some
> * Lenovo platforms. The autosuspend delay, has to be smaller than
> @@ -874,6 +904,28 @@ static int ljca_resume(struct usb_interface *interface)
> return usb_submit_urb(adap->rx_urb, GFP_KERNEL);
> }
>
> +static ssize_t ljca_version_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + struct usb_interface *intf = to_usb_interface(dev);
> + struct ljca_adapter *adap = usb_get_intfdata(intf);
> + struct ljca_fw_version ver = adap->fw_version;
> +
> + if (!adap->fw_version_valid)
> + return -ENODATA;
Why are you showing this sysfs attribute if there is no firmware
version? Please only create the file if it is possible to read a valid
value from it.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/3] usb: misc: ljca: move usb_autopm_put_interface() after wait for response
2024-11-12 7:55 [PATCH v4 1/3] usb: misc: ljca: move usb_autopm_put_interface() after wait for response Stanislaw Gruszka
2024-11-12 7:55 ` [PATCH v4 2/3] usb: misc: ljca: set small runtime autosuspend delay Stanislaw Gruszka
2024-11-12 7:55 ` [PATCH v4 3/3] usb: misc: ljca: add firmware version sysfs attribute Stanislaw Gruszka
@ 2024-11-12 10:13 ` Hans de Goede
2024-11-12 10:33 ` Greg Kroah-Hartman
2 siblings, 1 reply; 7+ messages in thread
From: Hans de Goede @ 2024-11-12 10:13 UTC (permalink / raw)
To: Stanislaw Gruszka, Greg Kroah-Hartman; +Cc: linux-usb, Wentong Wu, Sakari Ailus
Greg,
This patch 1/3 + patch 2/3 together fix an issue causing the camera to not
work on quite a few ThinkPad models.
Can you maybe pick up patch 1/3 + patch 2/3 already, while
Stanislaw works on fixing 3/3 ?
Regards,
Hans
On 12-Nov-24 8:55 AM, Stanislaw Gruszka wrote:
> Do not mark interface as ready to suspend when we are still waiting
> for response messages from the device.
>
> Fixes: acd6199f195d ("usb: Add support for Intel LJCA device")
> Cc: stable@vger.kernel.org
> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
> Tested-by: Hans de Goede <hdegoede@redhat.com> # ThinkPad X1 Yoga Gen 8, ov2740
> Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
> ---
> v3 -> v4: no change in this patch
> v2 -> v3: add A-b tag from Sakari
> v1 -> v2: fix handing error of usb_autopm_get_interface(),
> add R-b, T-b tags from Hans
>
> drivers/usb/misc/usb-ljca.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/usb/misc/usb-ljca.c b/drivers/usb/misc/usb-ljca.c
> index 01ceafc4ab78..8056c65e4548 100644
> --- a/drivers/usb/misc/usb-ljca.c
> +++ b/drivers/usb/misc/usb-ljca.c
> @@ -332,14 +332,11 @@ static int ljca_send(struct ljca_adapter *adap, u8 type, u8 cmd,
>
> ret = usb_bulk_msg(adap->usb_dev, adap->tx_pipe, header,
> msg_len, &transferred, LJCA_WRITE_TIMEOUT_MS);
> -
> - usb_autopm_put_interface(adap->intf);
> -
> if (ret < 0)
> - goto out;
> + goto out_put;
> if (transferred != msg_len) {
> ret = -EIO;
> - goto out;
> + goto out_put;
> }
>
> if (ack) {
> @@ -347,11 +344,14 @@ static int ljca_send(struct ljca_adapter *adap, u8 type, u8 cmd,
> timeout);
> if (!ret) {
> ret = -ETIMEDOUT;
> - goto out;
> + goto out_put;
> }
> }
> ret = adap->actual_length;
>
> +out_put:
> + usb_autopm_put_interface(adap->intf);
> +
> out:
> spin_lock_irqsave(&adap->lock, flags);
> adap->ex_buf = NULL;
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/3] usb: misc: ljca: move usb_autopm_put_interface() after wait for response
2024-11-12 10:13 ` [PATCH v4 1/3] usb: misc: ljca: move usb_autopm_put_interface() after wait for response Hans de Goede
@ 2024-11-12 10:33 ` Greg Kroah-Hartman
0 siblings, 0 replies; 7+ messages in thread
From: Greg Kroah-Hartman @ 2024-11-12 10:33 UTC (permalink / raw)
To: Hans de Goede; +Cc: Stanislaw Gruszka, linux-usb, Wentong Wu, Sakari Ailus
On Tue, Nov 12, 2024 at 11:13:55AM +0100, Hans de Goede wrote:
> Greg,
>
> This patch 1/3 + patch 2/3 together fix an issue causing the camera to not
> work on quite a few ThinkPad models.
>
> Can you maybe pick up patch 1/3 + patch 2/3 already, while
> Stanislaw works on fixing 3/3 ?
Yes, I'll do that later today, good idea.
Mixing new feaures and bug fixes shouldn't be in the same patch series,
again, Intel developers should know better if this were to actually pass
their internal review process (which seems to keep being ignored
here...)
thanks,
greg k-h
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 3/3] usb: misc: ljca: add firmware version sysfs attribute
2024-11-12 7:55 ` [PATCH v4 3/3] usb: misc: ljca: add firmware version sysfs attribute Stanislaw Gruszka
2024-11-12 8:06 ` Greg Kroah-Hartman
@ 2024-11-12 13:05 ` kernel test robot
1 sibling, 0 replies; 7+ messages in thread
From: kernel test robot @ 2024-11-12 13:05 UTC (permalink / raw)
To: Stanislaw Gruszka, Greg Kroah-Hartman
Cc: oe-kbuild-all, linux-usb, Wentong Wu, Sakari Ailus, Hans de Goede
Hi Stanislaw,
kernel test robot noticed the following build warnings:
[auto build test WARNING on usb/usb-testing]
[also build test WARNING on usb/usb-next usb/usb-linus westeri-thunderbolt/next linus/master v6.12-rc7 next-20241112]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Stanislaw-Gruszka/usb-misc-ljca-set-small-runtime-autosuspend-delay/20241112-155844
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
patch link: https://lore.kernel.org/r/20241112075514.680712-3-stanislaw.gruszka%40linux.intel.com
patch subject: [PATCH v4 3/3] usb: misc: ljca: add firmware version sysfs attribute
config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20241112/202411122028.tylKQSQx-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241112/202411122028.tylKQSQx-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202411122028.tylKQSQx-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/usb/misc/usb-ljca.c:169: warning: Function parameter or struct member 'fw_version' not described in 'ljca_adapter'
>> drivers/usb/misc/usb-ljca.c:169: warning: Function parameter or struct member 'fw_version_valid' not described in 'ljca_adapter'
vim +169 drivers/usb/misc/usb-ljca.c
acd6199f195d6de Wentong Wu 2023-10-09 114
acd6199f195d6de Wentong Wu 2023-10-09 115 /**
acd6199f195d6de Wentong Wu 2023-10-09 116 * struct ljca_adapter - represent a ljca adapter
acd6199f195d6de Wentong Wu 2023-10-09 117 *
acd6199f195d6de Wentong Wu 2023-10-09 118 * @intf: the usb interface for this ljca adapter
acd6199f195d6de Wentong Wu 2023-10-09 119 * @usb_dev: the usb device for this ljca adapter
acd6199f195d6de Wentong Wu 2023-10-09 120 * @dev: the specific device info of the usb interface
acd6199f195d6de Wentong Wu 2023-10-09 121 * @rx_pipe: bulk in pipe for receive data from firmware
acd6199f195d6de Wentong Wu 2023-10-09 122 * @tx_pipe: bulk out pipe for send data to firmware
acd6199f195d6de Wentong Wu 2023-10-09 123 * @rx_urb: urb used for the bulk in pipe
acd6199f195d6de Wentong Wu 2023-10-09 124 * @rx_buf: buffer used to receive command response and event
acd6199f195d6de Wentong Wu 2023-10-09 125 * @rx_len: length of rx buffer
acd6199f195d6de Wentong Wu 2023-10-09 126 * @ex_buf: external buffer to save command response
acd6199f195d6de Wentong Wu 2023-10-09 127 * @ex_buf_len: length of external buffer
acd6199f195d6de Wentong Wu 2023-10-09 128 * @actual_length: actual length of data copied to external buffer
acd6199f195d6de Wentong Wu 2023-10-09 129 * @tx_buf: buffer used to download command to firmware
acd6199f195d6de Wentong Wu 2023-10-09 130 * @tx_buf_len: length of tx buffer
acd6199f195d6de Wentong Wu 2023-10-09 131 * @lock: spinlock to protect tx_buf and ex_buf
acd6199f195d6de Wentong Wu 2023-10-09 132 * @cmd_completion: completion object as the command receives ack
acd6199f195d6de Wentong Wu 2023-10-09 133 * @mutex: mutex to avoid command download concurrently
acd6199f195d6de Wentong Wu 2023-10-09 134 * @client_list: client device list
acd6199f195d6de Wentong Wu 2023-10-09 135 * @disconnect: usb disconnect ongoing or not
acd6199f195d6de Wentong Wu 2023-10-09 136 * @reset_id: used to reset firmware
acd6199f195d6de Wentong Wu 2023-10-09 137 */
acd6199f195d6de Wentong Wu 2023-10-09 138 struct ljca_adapter {
acd6199f195d6de Wentong Wu 2023-10-09 139 struct usb_interface *intf;
acd6199f195d6de Wentong Wu 2023-10-09 140 struct usb_device *usb_dev;
acd6199f195d6de Wentong Wu 2023-10-09 141 struct device *dev;
acd6199f195d6de Wentong Wu 2023-10-09 142
acd6199f195d6de Wentong Wu 2023-10-09 143 unsigned int rx_pipe;
acd6199f195d6de Wentong Wu 2023-10-09 144 unsigned int tx_pipe;
acd6199f195d6de Wentong Wu 2023-10-09 145
acd6199f195d6de Wentong Wu 2023-10-09 146 struct urb *rx_urb;
acd6199f195d6de Wentong Wu 2023-10-09 147 void *rx_buf;
acd6199f195d6de Wentong Wu 2023-10-09 148 unsigned int rx_len;
acd6199f195d6de Wentong Wu 2023-10-09 149
acd6199f195d6de Wentong Wu 2023-10-09 150 u8 *ex_buf;
acd6199f195d6de Wentong Wu 2023-10-09 151 u8 ex_buf_len;
acd6199f195d6de Wentong Wu 2023-10-09 152 u8 actual_length;
acd6199f195d6de Wentong Wu 2023-10-09 153
acd6199f195d6de Wentong Wu 2023-10-09 154 void *tx_buf;
acd6199f195d6de Wentong Wu 2023-10-09 155 u8 tx_buf_len;
acd6199f195d6de Wentong Wu 2023-10-09 156
acd6199f195d6de Wentong Wu 2023-10-09 157 spinlock_t lock;
acd6199f195d6de Wentong Wu 2023-10-09 158
acd6199f195d6de Wentong Wu 2023-10-09 159 struct completion cmd_completion;
acd6199f195d6de Wentong Wu 2023-10-09 160 struct mutex mutex;
acd6199f195d6de Wentong Wu 2023-10-09 161
acd6199f195d6de Wentong Wu 2023-10-09 162 struct list_head client_list;
1368856f90435bb Stanislaw Gruszka 2024-11-12 163 struct ljca_fw_version fw_version;
acd6199f195d6de Wentong Wu 2023-10-09 164
acd6199f195d6de Wentong Wu 2023-10-09 165 bool disconnect;
1368856f90435bb Stanislaw Gruszka 2024-11-12 166 bool fw_version_valid;
acd6199f195d6de Wentong Wu 2023-10-09 167
acd6199f195d6de Wentong Wu 2023-10-09 168 u32 reset_id;
acd6199f195d6de Wentong Wu 2023-10-09 @169 };
acd6199f195d6de Wentong Wu 2023-10-09 170
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-11-12 13:06 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-12 7:55 [PATCH v4 1/3] usb: misc: ljca: move usb_autopm_put_interface() after wait for response Stanislaw Gruszka
2024-11-12 7:55 ` [PATCH v4 2/3] usb: misc: ljca: set small runtime autosuspend delay Stanislaw Gruszka
2024-11-12 7:55 ` [PATCH v4 3/3] usb: misc: ljca: add firmware version sysfs attribute Stanislaw Gruszka
2024-11-12 8:06 ` Greg Kroah-Hartman
2024-11-12 13:05 ` kernel test robot
2024-11-12 10:13 ` [PATCH v4 1/3] usb: misc: ljca: move usb_autopm_put_interface() after wait for response Hans de Goede
2024-11-12 10:33 ` Greg Kroah-Hartman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox