Re: [RFC PATCH v2 2/3] PCI: hisi: Make the HiSilicon PCIe host controller ECAM compliant
From: Arnd Bergmann <arnd@arndb.de>
Date: 2016-02-08 16:32:39
Also in:
linux-arm-kernel, linux-pci, lkml
On Monday 08 February 2016 15:55:35 Gabriele Paoloni wrote:
quoted
Doesn't this break backwards compatibility?Well Hip05/Hip06 SoCs are used into evaluation boards For the Estuary project. https://github.com/hisilicon/estuary As this new driver gets upstream we'll merge this new driver into estuary and release a new version of the firmware to support it.
So what happens to folks running the old firmware then?
quoted hunk ↗ jump to hunk
quoted
I think you need to use a new compatible string in the firmware if you change the register layout, and then change the driver to support both the old and the new layout.You are right, for some reason in this patchset I missed the Documentation update that I posted in the previous one, i.e.:--- a/Documentation/devicetree/bindings/pci/hisilicon-pcie.txt +++ b/Documentation/devicetree/bindings/pci/hisilicon-pcie.txt@@ -23,8 +23,8 @@ Optional properties: Hip05 Example (note that Hip06 is the same except compatible): pcie@0xb0080000 { compatible = "hisilicon,hip05-pcie", "snps,dw-pcie"; - reg = <0 0xb0080000 0 0x10000>, <0x220 0x00000000 0 0x2000>; - reg-names = "rc_dbi", "config"; + reg = <0 0xb0080000 0 0x10000>, <0x220 0x00100000 0 0x0f00000>; + reg-names = "rc_dbi", "ecam-cfg";
That is not the compatible string, it's an undocumented register set. You can either define the a new compatible string that gives the "config" registers a new meaning, or you change the binding to allow two either a "config" or an "ecam-cfg" register set, and let the driver handle both. Arnd