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

From: Stephen Warren
Date: Mon May 18 2015 - 10:42:17 EST


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@xxxxxxxxxxxxx> 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.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/