diff mbox series

[v2] usb: misc: ljca: Fix enumeration error on Dell Latitude 9420

Message ID 20231104175104.38786-1-hdegoede@redhat.com
State Superseded
Headers show
Series [v2] usb: misc: ljca: Fix enumeration error on Dell Latitude 9420 | expand

Commit Message

Hans de Goede Nov. 4, 2023, 5:51 p.m. UTC
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: 54f225fa5b58 ("usb: Add support for Intel LJCA device")
Cc: stable@vger.kernel.org
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
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(-)

Comments

Wu, Wentong Nov. 6, 2023, 5:28 a.m. UTC | #1
> From: Hans de Goede
> 
> 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: 54f225fa5b58 ("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>
> ---
> 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
Greg KH Nov. 21, 2023, 2:05 p.m. UTC | #2
On Sat, Nov 04, 2023 at 06:51:04PM +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: 54f225fa5b58 ("usb: Add support for Intel LJCA device")

That commit id isn't in Linus's tree, are you sure it's correct?

thanks,

greg k-h
Hans de Goede Nov. 21, 2023, 6:29 p.m. UTC | #3
Hi,

On 11/21/23 15:05, Greg Kroah-Hartman wrote:
> On Sat, Nov 04, 2023 at 06:51:04PM +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: 54f225fa5b58 ("usb: Add support for Intel LJCA device")
> 
> That commit id isn't in Linus's tree, are you sure it's correct?

Sorry no idea where I got that commit-id from, probably from when
I was carrying the patch in my personal tree for testing it.

I'll send a v3 with the correct commit-id.

Regards,

Hans
diff mbox series

Patch

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;