Messages in this thread | | | Date | Tue, 21 Feb 2023 23:29:48 +0100 | Subject | Re: [PATCH] nvmem: add explicit config option to read OF fixed cells | From | Rafał Miłecki <> |
| |
On 21.02.2023 22:38, Martin Blumenstingl wrote: > On Tue, Feb 21, 2023 at 3:50 PM Rafał Miłecki <zajec5@gmail.com> wrote: >> >> From: Rafał Miłecki <rafal@milecki.pl> >> >> NVMEM subsystem looks for fixed NVMEM cells (specified in DT) by >> default. This behaviour made sense in early days before adding support >> for dynamic cells. >> >> With every new supported NVMEM device with dynamic cells current >> behaviour becomes non-optimal. It results in unneeded iterating over DT >> nodes and may result in false discovery of cells (depending on used DT >> properties). > I am not familiar with the recent changes around dynamic cells. > Is there any discussion/summary that I can read to get up to speed?
Some NVMEM devices don't store specific data at hardcoded offsets. For such devices we have drivers (to become: layouts) that parse their magic content. They discover cells and register them and provide matching with proper DT nodes.
For bindings see: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=084973e944bec21804f8afb0515b25434438699a https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a607a850ba1fa966cbb035544c1588e24a6307df
For example driver see: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6e977eaa8280e957b87904b536661550f2a6b3e8 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=207775f7e17b8fd0426a2ac4a5b81e4e1d71849e
For usage see: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c8442f0fb09ca3d842b9b23d1d0650f649fd10f8
> My main thought is: if there are many "fixed OF cells" implementations > and only a few "dynamic" ones - does it make sense to flip the logic > and introduce a new "use_dynamic_of_cells" flag instead?
The problem is that there are more cases than just two. We can have: 1. No cells at all 2. Fixed cells in DT 3. Dynamic cells with references in DT 4. Driver specified cells (specified within config) 5. Cells defined in a global table
So we need to reference DT cells explicitly (we can't just confirm / deny *dynamic* cells).
Another solution would be to have "no_fixed_of_cells" but:
1. Personally I think negation is less clear / easy to follow
2. There may be actually more drivers with no fixed cells. I think I modified 18 drivers. It seems devm_nvmem_register() is referenced in 44 places. Few of them may be not actual users but it still seems to be about equal.
| |