Two device tree peculiarities

In the kernel tree, try grepping for perst-gpio:

$ grep -r 'perst-gpio' .
./Documentation/devicetree/bindings/pci/qcom,pcie.txt:			- "perst-gpios"	PCIe endpoint reset signal line
./Documentation/devicetree/bindings/pci/qcom,pcie.txt:		perst-gpio = <&tlmm 70 GPIO_ACTIVE_LOW>;
./arch/arm64/boot/dts/qcom/msm8998.dtsi:			perst-gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
./arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi:				perst-gpio = <&msmgpio 35 GPIO_ACTIVE_LOW>;

So which is it, “perst-gpios” or “perst-gpio”? My vote is for the plural, given the bindings documentation.
Fortunately, the property does not seem to be used anywhere in the code.

In ./arch/arm64/boot/dts/qcom/msm8998.dtsi:

/ {soc: soc {
	agnoc@0 {
		pcie2: pcie@610000 {
			ranges = <0x01000000 0x0 0x0e200000 0x0e200000 0x0 0x100000>,
				<0x02000000 0x0 0x0e300000 0x0e300000 0x0 0x1d00000>;

Should the memory range size be 0x1d00000 or should it be 0xd00000 like the two other root complexes?

Yes, the standard attribute name to identify the GPIO(s) for a device is " gpios ".

I don’t know about this SoC, it’s not used in any 96boards.

Sorry about that Loic! That should have been:
My eyesite is getting worse!
I should also have included the following lines from the grep

./arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi:perst-gpio = <&msmgpio 35 GPIO_ACTIVE_LOW>;
./arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi:perst-gpio = <&msmgpio 130 GPIO_ACTIVE_LOW>;
./arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi:perst-gpio = <&msmgpio 114 GPIO_ACTIVE_LOW>;

See of_find_gpio() in drivers/gpio/gpiolib-of.c, it will attempt to find %s-gpios then fall back to %s-gpio, this due to historical artifacts. Both works, %s-gpios is the correct one.

PCIe0 and PCIe1 memory regions are 16MB, PCIe2 is 32MB (on MSM8996). So the discrepancy is correct.


Thanks for those explanations, Bjorn.
I did not try grepping for ‘gpio’ alone as I presumed I would get too many hits, but I might have found the documentation, ./Documentation/driver-api/gpio/board.rst.