[PATCH] Documentation: dt: mtd: replace "nor-jedec" binding with "jedec,spi-nor"

Stephen Warren swarren at wwwdotorg.org
Mon May 18 07:42:07 PDT 2015


On 05/15/2015 02:02 PM, Brian Norris wrote:
> On Thu, May 14, 2015 at 10:26:41PM +0200, Geert Uytterhoeven wrote:
>> On Thu, May 14, 2015 at 7:46 PM, Stephen Warren <swarren at wwwdotorg.org> wrote:
>>> On 05/14/2015 11:32 AM, Brian Norris wrote:
>>>> In commit 8ff16cf77ce3 ("Documentation: devicetree: m25p80: add
>>>> "nor-jedec"
>>>> binding"), we added a generic "nor-jedec" binding to catch all
>>>> mostly-compatible SPI NOR flash which can be detected via the READ ID
>>>> opcode (0x9F). This was discussed and reviewed at the time, however
>>>> objections have come up since then as part of this discussion:
>>>>
>>>>     http://lkml.kernel.org/g/20150511224646.GJ32500@ld-irv-0074
>>>>
>>>> It seems the parties involved agree that "jedec,spi-nor" does a better
>>>> job of capturing the fact that this is SPI-specific, not just any NOR
>>>> flash.
>>>>
>>>> This binding was only merged for v4.1-rc1, so it's still OK to change
>>>> the naming.
>>>>
>>>> At the same time, let's move the documentation to a better name.
>>>>
>>>> Next up: prune the m25p_ids[] table to the minimal necessary listing, so
>>>> we can stop referring to code (drivers/mtd/devices/m25p80.c) from the
>>>> documentation.
>>>
>>> There's no need to change the code to update the documentation. Simply paste
>>> the list of valid device IDs into the documentation. The binding
>>> documentation needs to be completely standalone anyway. Binding
>>> documentation should never refer to Linux driver code as part of their
>>> definition.
>
> Of course they shouldn't refer to the driver. That's the main point of
> my comment. But just because the ID made its way into the driver doesn't
> mean it's always a useful or necessary DT binding. More below.

Yes and no.

DT ABI requires that any old DT that worked with an old kernel must 
continue to work with a new kernel. Thus, any compatible value that was 
used in an old DT must be supported by any new kernel, and be documented 
in the binding so that any new driver (e.g. for a new OS) knows to 
support that same compatible values. Since it's quite possible that 
people have DTs that aren't checked into the kernel, we must use the set 
of compatible values that any old driver supports as the list of 
compatible values to keep supporting and documenting.

Of course, if the driver had separate lists of supported devices for the 
SPI-specific and DT-based instantiation methods, the set of supported 
compatible values could have been quite small. Unfortunately both I2C 
and SPI (at least) took shortcuts and allowed DT compatible values to be 
transformed to remove the vendor ID and match against the I2C/SPI device 
lists.

Hence we do in fact have to document and continue to support every 
single device type this driver supports.



More information about the linux-mtd mailing list