Re: [PATCH] spi-nor: intel-spi: Fix Kconfig dependency to LPC_ICH

From: Arnd Bergmann
Date: Fri Oct 13 2017 - 07:15:32 EST


On Wed, Oct 11, 2017 at 10:03 AM, Cyrille Pitchen
<cyrille.pitchen@xxxxxxxxxx> wrote:
> Le 25/08/2017 Ã 10:12, Bin Meng a Ãcrit :
>> The Intel SPI-NOR driver is dependent on LPC_ICH to get the platform
>> data. Select it in the Kconfig.
>>
>> Signed-off-by: Bin Meng <bmeng.cn@xxxxxxxxx>
>
> Applied to the spi-nor/next branch of l2-mtd

This causes a build error now:

warning: (SPI_INTEL_SPI_PLATFORM && ITCO_WDT) selects LPC_ICH which
has unmet direct dependencies (HAS_IOMEM && PCI)
drivers/mfd/lpc_ich.c: In function 'lpc_ich_init_spi':
drivers/mfd/lpc_ich.c:1137:3: error: implicit declaration of function
'pci_bus_write_config_byte'; did you mean 'pci_write_config_byte'?
[-Werror=implicit-function-declaration]

Generally speaking, using 'select' to force-enable another
driver is a bad idea and causes endless problems, but if you
insist on doing that, please make sure you get the right
dependencies.

Also, the 'depends on EXPERT' statement looks misplaced,
enabling EXPERT should only be there to allow you to turn
extra things *off*, not to hide device drivers.

How about this:

diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig
index 19bcb63a1ce7..b81d9b4dae7b 100644
--- a/drivers/mtd/spi-nor/Kconfig
+++ b/drivers/mtd/spi-nor/Kconfig
@@ -90,7 +90,7 @@ config SPI_INTEL_SPI
tristate

config SPI_INTEL_SPI_PCI
- tristate "Intel PCH/PCU SPI flash PCI driver" if EXPERT
+ tristate "Intel PCH/PCU SPI flash PCI driver"
depends on X86 && PCI
select SPI_INTEL_SPI
help
@@ -106,10 +106,10 @@ config SPI_INTEL_SPI_PCI
will be called intel-spi-pci.

config SPI_INTEL_SPI_PLATFORM
- tristate "Intel PCH/PCU SPI flash platform driver" if EXPERT
- depends on X86
+ tristate "Intel PCH/PCU SPI flash platform driver"
+ depends on X86 && (PCI || COMPILE_TEST)
select SPI_INTEL_SPI
- select LPC_ICH
+ select LPC_ICH if PCI
help
This enables platform support for the Intel PCH/PCU SPI
controller in master mode. This controller is present in modern

Arnd