On Fri, 28 Jun 2024 at 08:33, Simon Glass sjg@chromium.org wrote:
Hi Elliot,
On Fri, 21 Jun 2024 at 23:40, Elliot Berman quic_eberman@quicinc.com wrote:
Hi Simon,
On Thu, Jun 06, 2024 at 10:00:54AM -0600, Simon Glass wrote:
On Wed, 5 Jun 2024 at 11:17, Elliot Berman quic_eberman@quicinc.com wrote:
On Wed, Jun 05, 2024 at 07:17:35AM -0600, Simon Glass wrote:
Hi Elliot,
I am just picking up the discussion here, which was started on another thread.
I can't see why this new feature is needed. We should be able to use compatible strings, as we do now. I added a 'usage' section to the FIT spec [1] which might help. I also incorporated the board revision and variant information and some notes on how to add to the available suffixes.
Does that handle your use case?
-rev and -sku don't fit the versioning scheme for QTI devices, so this isn't a generic enough approach. Patch 5 in this series describes the versioning scheme for us.
In the other thread, we had talked about using some regex based approach for matching the root node compatible. I haven't had chance to work on that proposal and will try to get to it in the next couple weeks.
OK, I look forward to it. Please do check the FIT best match approach and see how it might be extended to handle your requirements. So far I have not seen a need for regexes, but it is certainly a possibility.
I spent some time collecting feedback from the team on using compatible strings + regex-style approach and we're not able to add a regex library into firmware, so this approach unfortunately won't work for us. Because we have more axes of board identification than chromebook, using FIT's compatible strings isn't a scalable solution for us. I don't think we have incompatible problems, we only have more than 2-3 axes of information.
I understand that. I assume that you have a lot of devices that use the same SoC but different PMICs, displays, etc. Some of these can be handled in the bootloader, e.g. by detecting hardware and applying an overlay, or enabling/disabling a node in the DT. It can be useful to have a hardware-readable ID to indicate things which cannot be probed, e.g. with GPIOs or ADC + resistors.
Another option is to give names to your projects, so that machines with the same SoC but major hardware differences end up with a different name (see rk3399-xx.dts for examples).
I'm sure you are already doing some/all of these things. I still feel (so far) that you don't need to invent something new here.
Re "FIT's compatible strings isn't a scalable solution for us", how is what you are doing different from other vendors? Is it the sheer number of variations, or something else?
Here I am referring to the actual number of separate boards which appear in the wild, not the multiplication of the number of axes which produced them.