2024-03-12 19:32:57

by Patrick Höhn

[permalink] [raw]
Subject: [PATCH v3] i2c: i801: Add lis3lv02d for Dell Precision M6800

On the Dell Precision M6800/OXD1M5, BIOS A26 06/13/2029, Linux prints the
warning below.

i801_smbus 0000:00:1f.4: Accelerometer lis3lv02d is present on SMBus but its address is unknown, skipping registration

Following the same suggestions by Wolfram Sang as for the Dell Precision
3540 [1], the accelerometer can be successfully found on I2C bus 0 at
address 0x29.

$ echo lis3lv02d 0x29 | sudo tee /sys/bus/i2c/devices/i2c-0/new_device
lis3lv02d 0x29
$ dmesg | tail -5
[1185.385204] lis3lv02d_i2c 0-0029: supply Vdd not found, using dummy regulator
[1185.385235] lis3lv02d_i2c 0-0029: supply Vdd_IO not found, using dummy regulator
[1185.399689] lis3lv02d: 8 bits 3DC sensor found
[1185.449391] input: ST LIS3LV02DL Accelerometer as /devices/platform/lis3lv02d/input/input371
[1185.449577] i2c i2c-0: new_device: Instantiated device lis3lv02d at 0x29

So, the device has that accelerometer. Add the I2C address to the
mapping list, and test it successfully on the device.

[1]: https://lore.kernel.org/linux-i2c/[email protected]/
Signed-off-by: Patrick Höhn <[email protected]>
---
drivers/i2c/busses/i2c-i801.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
index 2c36b36d7d51..c1fee2c61da1 100644
--- a/drivers/i2c/busses/i2c-i801.c
+++ b/drivers/i2c/busses/i2c-i801.c
@@ -1231,6 +1231,7 @@ static const struct {
*/
{ "Latitude 5480", 0x29 },
{ "Precision 3540", 0x29 },
+ { "Precision M6800", 0x29 },
{ "Vostro V131", 0x1d },
{ "Vostro 5568", 0x29 },
{ "XPS 15 7590", 0x29 },
--
2.43.2



2024-03-12 19:49:48

by Pali Rohár

[permalink] [raw]
Subject: Re: [PATCH v3] i2c: i801: Add lis3lv02d for Dell Precision M6800

On Tuesday 12 March 2024 20:31:31 Patrick Höhn wrote:
> On the Dell Precision M6800/OXD1M5, BIOS A26 06/13/2029, Linux prints the
> warning below.
>
> i801_smbus 0000:00:1f.4: Accelerometer lis3lv02d is present on SMBus but its address is unknown, skipping registration
>
> Following the same suggestions by Wolfram Sang as for the Dell Precision
> 3540 [1], the accelerometer can be successfully found on I2C bus 0 at
> address 0x29.

Just to note for other users in future. I2C does not have to be assigned
with number 0. This number is chosen by the kernel at runtime as the
first unused number. So in case you have VGA adapter (or GPU) for which
is i2c driver available and loaded + probed before i801_smbus is loaded
and probed then kernel would report accelerometer at different bus
number. On the other hand, accelerometer address on I2C bus normally
should not change (configurable device can change it but we should hope
that it does not happen).

The correct number of bus can be found by the i2cdetect command too:

# i2cdetect -l | grep I801

For me it prints:

i2c-0 unknown SMBus I801 adapter at f040 N/A

>
> $ echo lis3lv02d 0x29 | sudo tee /sys/bus/i2c/devices/i2c-0/new_device
> lis3lv02d 0x29
> $ dmesg | tail -5
> [1185.385204] lis3lv02d_i2c 0-0029: supply Vdd not found, using dummy regulator
> [1185.385235] lis3lv02d_i2c 0-0029: supply Vdd_IO not found, using dummy regulator
> [1185.399689] lis3lv02d: 8 bits 3DC sensor found
> [1185.449391] input: ST LIS3LV02DL Accelerometer as /devices/platform/lis3lv02d/input/input371
> [1185.449577] i2c i2c-0: new_device: Instantiated device lis3lv02d at 0x29
>
> So, the device has that accelerometer. Add the I2C address to the
> mapping list, and test it successfully on the device.
>
> [1]: https://lore.kernel.org/linux-i2c/[email protected]/
> Signed-off-by: Patrick Höhn <[email protected]>

Otherwise looks good,

Acked-by: Pali Rohár <[email protected]>

> ---
> drivers/i2c/busses/i2c-i801.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
> index 2c36b36d7d51..c1fee2c61da1 100644
> --- a/drivers/i2c/busses/i2c-i801.c
> +++ b/drivers/i2c/busses/i2c-i801.c
> @@ -1231,6 +1231,7 @@ static const struct {
> */
> { "Latitude 5480", 0x29 },
> { "Precision 3540", 0x29 },
> + { "Precision M6800", 0x29 },
> { "Vostro V131", 0x1d },
> { "Vostro 5568", 0x29 },
> { "XPS 15 7590", 0x29 },
> --
> 2.43.2
>

2024-05-06 07:08:22

by Paul Menzel

[permalink] [raw]
Subject: Re: [PATCH v3] i2c: i801: Add lis3lv02d for Dell Precision M6800

Dear Linux folks,


Am 12.03.24 um 20:49 schrieb Pali Rohár:
> On Tuesday 12 March 2024 20:31:31 Patrick Höhn wrote:
>> On the Dell Precision M6800/OXD1M5, BIOS A26 06/13/2029, Linux prints the
>> warning below.
>>
>> i801_smbus 0000:00:1f.4: Accelerometer lis3lv02d is present on SMBus but its address is unknown, skipping registration
>>
>> Following the same suggestions by Wolfram Sang as for the Dell Precision
>> 3540 [1], the accelerometer can be successfully found on I2C bus 0 at
>> address 0x29.
>
> Just to note for other users in future. I2C does not have to be assigned
> with number 0. This number is chosen by the kernel at runtime as the
> first unused number. So in case you have VGA adapter (or GPU) for which
> is i2c driver available and loaded + probed before i801_smbus is loaded
> and probed then kernel would report accelerometer at different bus
> number. On the other hand, accelerometer address on I2C bus normally
> should not change (configurable device can change it but we should hope
> that it does not happen).
>
> The correct number of bus can be found by the i2cdetect command too:
>
> # i2cdetect -l | grep I801
>
> For me it prints:
>
> i2c-0 unknown SMBus I801 adapter at f040 N/A
>
>>
>> $ echo lis3lv02d 0x29 | sudo tee /sys/bus/i2c/devices/i2c-0/new_device
>> lis3lv02d 0x29
>> $ dmesg | tail -5
>> [1185.385204] lis3lv02d_i2c 0-0029: supply Vdd not found, using dummy regulator
>> [1185.385235] lis3lv02d_i2c 0-0029: supply Vdd_IO not found, using dummy regulator
>> [1185.399689] lis3lv02d: 8 bits 3DC sensor found
>> [1185.449391] input: ST LIS3LV02DL Accelerometer as /devices/platform/lis3lv02d/input/input371
>> [1185.449577] i2c i2c-0: new_device: Instantiated device lis3lv02d at 0x29
>>
>> So, the device has that accelerometer. Add the I2C address to the
>> mapping list, and test it successfully on the device.
>>
>> [1]: https://lore.kernel.org/linux-i2c/[email protected]/
>> Signed-off-by: Patrick Höhn <[email protected]>
>
> Otherwise looks good,
>
> Acked-by: Pali Rohár <[email protected]>

Is there anything else to do from Patrick’s side before adding the patch
to the git archive?


Kind regards,

Paul


>> ---
>> drivers/i2c/busses/i2c-i801.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
>> index 2c36b36d7d51..c1fee2c61da1 100644
>> --- a/drivers/i2c/busses/i2c-i801.c
>> +++ b/drivers/i2c/busses/i2c-i801.c
>> @@ -1231,6 +1231,7 @@ static const struct {
>> */
>> { "Latitude 5480", 0x29 },
>> { "Precision 3540", 0x29 },
>> + { "Precision M6800", 0x29 },
>> { "Vostro V131", 0x1d },
>> { "Vostro 5568", 0x29 },
>> { "XPS 15 7590", 0x29 },
>> --
>> 2.43.2