From: Krzysztof Kozlowski <krzk@kernel.org>
To: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
Cc: Jonathan Cameron <jic23@kernel.org>,
Michael Srba <Michael.Srba@seznam.cz>,
Lars-Peter Clausen <lars@metafoo.de>,
Rob Herring <robh+dt@kernel.org>,
Jean-Baptiste Maneyrol <jmaneyrol@invensense.com>,
linux-iio@vger.kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH 1/2] dt-bindings: iio: imu: mpu6050: Document invensense,icm20608d
Date: Tue, 22 Mar 2022 11:23:18 +0100 [thread overview]
Message-ID: <6fae1b16-f898-adf6-4064-df7e45e8b041@kernel.org> (raw)
In-Reply-To: <20220321174202.00007895@Huawei.com>
On 21/03/2022 18:42, Jonathan Cameron wrote:
> On Mon, 21 Mar 2022 16:22:38 +0100
> Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
>> On 21/03/2022 16:04, Jonathan Cameron wrote:
>>> On Mon, 21 Mar 2022 09:04:11 +0100
>>> Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>>
>>>> On 20/03/2022 16:12, Jonathan Cameron wrote:
>>>>> On Thu, 10 Mar 2022 22:24:03 +0100
>>>>> Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> wrote:
>>>>>
>>>>>> On 10/03/2022 19:56, Michael Srba wrote:
>>>>>>> Hi,
>>>>>>> the thing is, the only reason the different compatible is needed at all
>>>>>>> is that the chip presents a different WHOAMI, and the invensense,icm20608
>>>>>>> compatible seems to imply the non-D WHOAMI value.
>>>>>>
>>>>>> But this is a driver implementation issue, not related to bindings.
>>>>>> Bindings describe the hardware.
>>>>>
>>>>> Indeed, but the key thing here is the WHOAMI register is hardware.
>>>>>
>>>>>>
>>>>>>> I'm not sure how the driver would react to both compatibles being present,
>>>>>>> and looking at the driver code, it seems that icm20608d is not the only
>>>>>>> fully icm20608-compatible (to the extent of features supported by
>>>>>>> the driver, and excluding the WHOAMI value) invensense IC, yet none
>>>>>>> of these other ICs add the invensense,icm20608 compatible, so I guess I
>>>>>>> don't see a good reason to do something different.
>>>>>>
>>>>>> Probably my question should be asked earlier, when these other
>>>>>> compatibles were added in such way.
>>>>>>
>>>>>> Skipping the DMP core, the new device is fully backwards compatible with
>>>>>> icm20608.
>>>>>
>>>>> No. It is 'nearly' compatible... The different WHOAMI value (used
>>>>> to check the chip is the one we expect) makes it incompatible. Now we
>>>>> could change the driver to allow for that bit of incompatibility and
>>>>> some other drivers do (often warning when the whoami is wrong but continuing
>>>>> anyway).
>>>>
>>>> Different value of HW register within the same programming model does
>>>> not make him incompatible. Quite contrary - it is compatible and to
>>>> differentiate variants you do not need specific compatibles.
>>>
>>> Whilst I don't personally agree with the definition of "compatible"
>>> and think you are making false distinctions between hardware and software...
>>>
>>> I'll accept Rob's statement of best practice. However we can't just
>>> add a compatible that won't work if someone uses it on a new board
>>> that happens to run an old kernel.
>>>
>>
>> The please explain me how this patch (the compatible set I proposed)
>> fails to work in such case? How a new board with icm20608 (not
>> icm20608d!) fails to work?
>
> I'm confused. An actual icm20608 would work.
> I guess you mean an icm20608d via compatible "invensense,icm20608"?
In your example, new board with old kernel (so old kernel not supporting
icm20608d), icm20608d will work exactly the same. Meaning: not work. Old
kernel does not support it, new kernel will weirdly try to read WHOAMI
and return -EINVAL (or whatever is there). Same effect.
>
>>
>> To remind, the compatible has a format of:
>> comaptible = "new", "old"
>> e.g.: "invensense,icm20608d", "invensense,icm20608"
>
> Old kernel fails to match invensense,icm20608d, matches on invensense,icm20608.
> Checks the WHOAMI value and reports a missmatched value and fails the probe
> as it has no idea what the part was so no idea how to support it.
And old kernel fails in your solution as well, because it does not know
the compatible and refuses to bind.
>
> Obviously it wouldn't work anyway with an old kernel, but
> without the fallback compatible at least there would be no error message
> saying that the device is not the icm20608 we expected to see.
You said before:
"...that won't work if someone uses..."
so still please explain how does this "will not work" happens. It does
not work with old kernel in both cases...
Best regards,
Krzysztof
next prev parent reply other threads:[~2022-03-22 10:23 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-10 13:39 [PATCH 0/2] iio: imu: inv_mpu6050: Add support for ICM-20608-D michael.srba
2022-03-10 13:39 ` [PATCH 1/2] dt-bindings: iio: imu: mpu6050: Document invensense,icm20608d michael.srba
2022-03-10 16:34 ` Krzysztof Kozlowski
2022-03-10 18:56 ` Michael Srba
2022-03-10 21:24 ` Krzysztof Kozlowski
2022-03-20 15:12 ` Jonathan Cameron
2022-03-21 8:04 ` Krzysztof Kozlowski
2022-03-21 15:04 ` Jonathan Cameron
2022-03-21 15:22 ` Krzysztof Kozlowski
2022-03-21 17:42 ` Jonathan Cameron
2022-03-21 18:07 ` Michael Srba
2022-03-22 10:19 ` Jonathan Cameron
2022-03-22 10:41 ` Krzysztof Kozlowski
2022-03-22 20:22 ` Jonathan Cameron
2022-03-22 10:23 ` Krzysztof Kozlowski [this message]
2022-03-22 20:29 ` Jonathan Cameron
2022-03-10 13:39 ` [PATCH 2/2] iio: imu: inv_mpu6050: Add support for ICM-20608-D michael.srba
2022-03-10 13:58 ` Jean-Baptiste Maneyrol
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6fae1b16-f898-adf6-4064-df7e45e8b041@kernel.org \
--to=krzk@kernel.org \
--cc=Jonathan.Cameron@Huawei.com \
--cc=Michael.Srba@seznam.cz \
--cc=devicetree@vger.kernel.org \
--cc=jic23@kernel.org \
--cc=jmaneyrol@invensense.com \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).