Re: [PATCH v2 4/5] arm64: dts: google: Add initial dts for frankel/blazer/mustang
Doug Anderson <[email protected]>
| Newsgroups | org.kernel.vger.linux-devicetree,dev.linux.lists.soc,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-samsung-soc,org.kernel.vger.linux-serial |
|---|---|
| Message-ID | <CAD=FV=WPu5tuWA7MhC=48r=1uP3LK6hSqY7Egy=56V1Dqq1wRg@mail.gmail.com> |
Hi, On Thu, Aug 20, 2026 at 11:51 PM Krzysztof Kozlowski <[email protected]> wrote: > > >>> I think I've presened my problem fairly concretely [1]. If you hate > >> > >> There is no description of the problem at [1], except "bootloader adds > >> the same type of calibration data". > >> > >> So I repeat my questions: to every UFS node? To every node? To one UFS > >> node (but how do you guarantee that?)? > > > > I'm sure it's not what you want to hear, but I guess my answer would > > be "for these boards". > > No, the question is how many aliases you need. Devices might have more > than one UFS storage, e.g. ExynosAuto. How many UFS aliases do I need for this board? The answer is in the patch that started this whole discussion: one UFS alias. > And then someone might need to calibrate UFS and SPI NOR storage? And MMC? Not for this board. If you're asking about all future boards, of course they may have other things to calibrate / tune. My point is that the contract here is between the bootloader that will be run on these boards and the device tree that will be run on these boards. FWIW: the idea of a bootloader using an alias to find a node is not something I invented. Coreboot (the upstream, open-source project) uses "wifi" and "bluetooth" aliases to find nodes on Chromebooks. It uses these aliases to place MAC addresses (which are stored by manufacturing outside of DT) into the DT nodes (where bindings expect them). Perhaps coreboot is doing it wrong, but this concept isn't new, and I didn't invent it. > > I'm not quite clear on the "overlay" suggestion here. You're saying > > that we should require the base device tree to be compiled with "-@"? > > ...and not because we necessarily have any overlays upstream, but > > because the bootloader will generate an overlay dynamically? Compiling > > with "-@" would mean we could give a "ufs:" label to the UFS node and > > with "-@" that would be preserved. The bootloader could then use the > > "ufs:" label to find the node. When compiling with "-@", the exposed > > labels are essentially ABI. Did I get that right? > > I am saying that if you cannot answer my questions earlier (and you did > not) I'm still not quite sure which question I didn't answer, but I guess at this point it doesn't matter. > thus this should be treated as adding calibration to multiple > random nodes, then essentially you are reimplementing overlays and this > won't be accepted. Instead you should use overlays. > > "-@" will give you the labels in __symbols__ section, but it won't be > treated as ABI because it is not feasible. No one would remember which > boards have @ and which don't thus which labels are needed externally. > Only a comment in DTS code would prevent it from being changed. > > Well, same for aliases honestly. There is no tool which would guard that > ABI. Given the above response, I'm a bit baffled how "use overlays" helps. Each individual board will have different calibration data. It's presumably stored in something like an EEPROM on the device. The firmware is getting this data out of the EEPROM and putting it in the device tree. This puts the calibration data somewhere the Linux driver can easily find it. This means any "overlay" would need to be dynamically constructed for each device by the firmware. In order for this to work, there has to be _some_ guarante that the firmware can use to find the UFS node and add the calibration data. You are saying: "no, there isn't." I suppose one answer here is that the UFS driver in Linux could get a phandle to a "NVMEM" device and read it directly. ...though it might not have permissions. I suppose another answer here is that the UFS driver in Linux should somehow figure out how to directly query the firmware for the info. That seems unnecessarily convoluted, though. ...so I guess the answer is: time to hardcode the path in the bootloader (shhh, don't tell the DT maintainers) and end this fruitless conversation. -Doug