Not all LJCA chips implement SPI and on chips without SPI reading the SPI descriptors will timeout.
On laptop models like the Dell Latitude 9420, this is expected behavior and not an error.
Modify the driver to continue without instantiating a SPI auxbus child, instead of failing to probe() the whole LJCA chip.
Fixes: acd6199f195d ("usb: Add support for Intel LJCA device") Cc: stable@vger.kernel.org Signed-off-by: Hans de Goede hdegoede@redhat.com Reviewed-by: Wentong Wu wentong.wu@intel.com Link: https://lore.kernel.org/r/20231104175104.38786-1-hdegoede@redhat.com --- Changes in v3: - Fix commit-id in fixes tag
Changes in v2: - Small commit msg + comment fixes - Add Fixes tag + Cc: stable --- drivers/usb/misc/usb-ljca.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/misc/usb-ljca.c b/drivers/usb/misc/usb-ljca.c index c9decd0396d4..a280d3a54b18 100644 --- a/drivers/usb/misc/usb-ljca.c +++ b/drivers/usb/misc/usb-ljca.c @@ -656,10 +656,11 @@ static int ljca_enumerate_spi(struct ljca_adapter *adap) unsigned int i; int ret;
+ /* Not all LJCA chips implement SPI, a timeout reading the descriptors is normal */ ret = ljca_send(adap, LJCA_CLIENT_MNG, LJCA_MNG_ENUM_SPI, NULL, 0, buf, sizeof(buf), true, LJCA_ENUM_CLIENT_TIMEOUT_MS); if (ret < 0) - return ret; + return (ret == -ETIMEDOUT) ? 0 : ret;
/* check firmware response */ desc = (struct ljca_spi_descriptor *)buf;
On Tue, Nov 21, 2023 at 09:32:05PM +0100, Hans de Goede wrote:
Not all LJCA chips implement SPI and on chips without SPI reading the SPI descriptors will timeout.
On laptop models like the Dell Latitude 9420, this is expected behavior and not an error.
Modify the driver to continue without instantiating a SPI auxbus child, instead of failing to probe() the whole LJCA chip.
Fixes: acd6199f195d ("usb: Add support for Intel LJCA device") Cc: stable@vger.kernel.org
Nit, stable is not needed as the above commit only ended up in 6.7-rc1, nothing older. I'll drop it when I queue this up, thanks!
greg k-h
Hi Hans,
On Tue, Nov 21, 2023 at 09:32:05PM +0100, Hans de Goede wrote:
Not all LJCA chips implement SPI and on chips without SPI reading the SPI descriptors will timeout.
On laptop models like the Dell Latitude 9420, this is expected behavior and not an error.
Modify the driver to continue without instantiating a SPI auxbus child, instead of failing to probe() the whole LJCA chip.
Fixes: acd6199f195d ("usb: Add support for Intel LJCA device") Cc: stable@vger.kernel.org
did this already make it to stable? I think it is not needed.
Signed-off-by: Hans de Goede hdegoede@redhat.com Reviewed-by: Wentong Wu wentong.wu@intel.com Link: https://lore.kernel.org/r/20231104175104.38786-1-hdegoede@redhat.com
Reviewed-by: Andi Shyti andi.shyti@linux.intel.com
Thanks, Andi
Changes in v3:
- Fix commit-id in fixes tag
Changes in v2:
- Small commit msg + comment fixes
- Add Fixes tag + Cc: stable
drivers/usb/misc/usb-ljca.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/misc/usb-ljca.c b/drivers/usb/misc/usb-ljca.c index c9decd0396d4..a280d3a54b18 100644 --- a/drivers/usb/misc/usb-ljca.c +++ b/drivers/usb/misc/usb-ljca.c @@ -656,10 +656,11 @@ static int ljca_enumerate_spi(struct ljca_adapter *adap) unsigned int i; int ret;
- /* Not all LJCA chips implement SPI, a timeout reading the descriptors is normal */ ret = ljca_send(adap, LJCA_CLIENT_MNG, LJCA_MNG_ENUM_SPI, NULL, 0, buf, sizeof(buf), true, LJCA_ENUM_CLIENT_TIMEOUT_MS); if (ret < 0)
return ret;
return (ret == -ETIMEDOUT) ? 0 : ret;
/* check firmware response */ desc = (struct ljca_spi_descriptor *)buf; -- 2.41.0
linux-stable-mirror@lists.linaro.org