On 01/21/2015 08:54 AM, Mark Rutland wrote:
On Mon, Jan 19, 2015 at 07:16:28PM +0000, David Daney wrote:
[...]
@@ -67,6 +76,7 @@ static const struct of_device_id ahci_of_match[] = {
{ .compatible = "ibm,476gtr-ahci", },
{ .compatible = "snps,dwc-ahci", },
{ .compatible = "hisilicon,hisi-ahci", },
+ { .compatible = "cavium,octeon-7130-ahci", },
{},
I was under the impression that the strings other than "generic-ahci"
were only for compatibility with existing DTBs. Why do we need to add
new platform-specific strings here?
Because it is an "existing DTB", The device tree doesn't contain the
compatible property of "generic-ahci", only "cavium,octeon-7130-ahci".
While the DTB may already exist, the string "cavium,octeon-7130-ahci"
isn't in mainline, and as far as I can see has never been supported.
There seems to be a disconnect here. The DTB comes from the hardware
boot environment. The hardware is in some cases already deployed. It
is for all practical purposes, impossible to change the DTB.
The idea that the kernel source code controls the content of the device
tree doesn't apply here.
We
_maintain_ support for existing DTBs, we don't just copy what some
forked kernel happens to do.
Trying to push that under the "don't break existing DTBs" rule is
bending the definition.
The purpose of the kernel is to provide services on top of actual
hardware. In general, for a kernel driver to support any given device,
it may have to add device specific identifiers, that correspond to the
device, in the probing code.
David Daney
Thanks,
Mark.