Re: [PATCH v3 6/6] PCI: pwrctl: Add power control driver for qps615
From: Bjorn Andersson <andersson@kernel.org>
Date: 2024-11-12 23:21:25
Also in:
linux-arm-msm, linux-pci, lkml
On Tue, Nov 12, 2024 at 09:51:42AM -0600, Bjorn Andersson wrote:
On Tue, Nov 12, 2024 at 08:31:38PM +0530, Krishna chaitanya chundru wrote:quoted
QPS615 is the PCIe switch which has one upstream and three downstream ports. To one of the downstream ports ethernet MAC is connected as endpoint device. Other two downstream ports are supposed to connect to external device. One Host can connect to QPS615 by upstream port. QPS615 switch needs to be configured after powering on and before PCIe link was up. The PCIe controller driver already enables link training at the host side even before qps615 driver probe happens, due to this when driver enables power to the switch it participates in the link training and PCIe link may come up before configuring the switch through i2c. To prevent the host from participating in link training, disable link training on the host side to ensure the link does not come up before the switch is configured via I2C. Based up on dt property and type of the port, qps615 is configured through i2c.Reviewed-by: Bjorn Andersson <andersson@kernel.org>
Sorry, while I think this looks okay, this patch still does not compile.
Trying to compile this code with either clang 14 or 17 I still get the
following error:
CC [M] drivers/pci/pwrctl/pci-pwrctl-qps615.o
In file included from drivers/pci/pwrctl/pci-pwrctl-qps615.c:6:
In file included from ./include/linux/delay.h:13:
In file included from ./include/linux/sched.h:13:
In file included from ./arch/arm64/include/asm/processor.h:29:
In file included from ./include/linux/cache.h:6:
In file included from ./arch/arm64/include/asm/cache.h:43:
In file included from ./arch/arm64/include/asm/cputype.h:228:
In file included from ./arch/arm64/include/asm/sysreg.h:1129:
./include/linux/bitfield.h:166:3: error: call to '__bad_mask' declared with 'error' attribute: bad bitfield mask
166 | __bad_mask();
| ^
./include/linux/bitfield.h:166:3: error: call to '__bad_mask' declared with 'error' attribute: bad bitfield mask
2 errors generated.
make[5]: *** [scripts/Makefile.build:229: drivers/pci/pwrctl/pci-pwrctl-qps615.o] Error 1
make[4]: *** [scripts/Makefile.build:478: drivers/pci/pwrctl] Error 2
make[3]: *** [scripts/Makefile.build:478: drivers/pci] Error 2
make[2]: *** [scripts/Makefile.build:478: drivers] Error 2
make[1]: *** [/home/bjorn/sandbox/kernel/sm8150/Makefile:1946: .] Error 2
make: *** [Makefile:224: __sub-make] Error 2
This is caused by the way you invoke u32_replace_bits()
Regards,
Bjorn