Re: [PATCH] m68k: tweak coldfire/device.c for COMPILE_TEST

From: Randy Dunlap
Date: Fri Mar 04 2022 - 11:20:18 EST




On 3/4/22 06:45, Greg Ungerer wrote:
> Hi Randy,
>
> On 4/3/22 13:35, Randy Dunlap wrote:
>> When CONFIG_MCF_EDMA is set (due to COMPILE_TEST, not due to
>> CONFIG_M5441x), coldfire/device.c has compile errors due to
>> missing MCFEDMA_* symbols. In the .config file that was provided,
>> CONFIG_M5206=y, not CONFIG_M5441x, so <asm/m5441xsim.h> is not
>> included in coldfire/device.c.
>>
>> Only build the MCF_EDMA code in coldfire/device.c if both MCF_EDMA
>> and M5441x are enabled.
>>
>> Fixes these build errors:
>>
>> ../arch/m68k/coldfire/device.c:512:35: error: 'MCFEDMA_BASE' undeclared here (not in a function); did you mean 'MCFDMA_BASE1'?
>>    512 |                 .start          = MCFEDMA_BASE,
>> ../arch/m68k/coldfire/device.c:513:50: error: 'MCFEDMA_SIZE' undeclared here (not in a function)
>>    513 |                 .end            = MCFEDMA_BASE + MCFEDMA_SIZE - 1,
>> ../arch/m68k/coldfire/device.c:517:35: error: 'MCFEDMA_IRQ_INTR0' undeclared here (not in a function)
>>    517 |                 .start          = MCFEDMA_IRQ_INTR0,
>> ../arch/m68k/coldfire/device.c:523:35: error: 'MCFEDMA_IRQ_INTR16' undeclared here (not in a function)
>>    523 |                 .start          = MCFEDMA_IRQ_INTR16,
>> ../arch/m68k/coldfire/device.c:529:35: error: 'MCFEDMA_IRQ_INTR56' undeclared here (not in a function)
>>    529 |                 .start          = MCFEDMA_IRQ_INTR56,
>> ../arch/m68k/coldfire/device.c:535:35: error: 'MCFEDMA_IRQ_ERR' undeclared here (not in a function)
>>    535 |                 .start          = MCFEDMA_IRQ_ERR,
>>
>> Fixes: d7e9d01ac292 ("m68k: add ColdFire mcf5441x eDMA platform support")
>> Signed-off-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
>> Reported-by: kernel test robot <lkp@xxxxxxxxx>
>> Link: lore.kernel.org/r/202203030252.P752DK46-lkp@xxxxxxxxx
>> Cc: Angelo Dureghello <angelo@xxxxxxxx>
>> Cc: Greg Ungerer <gerg@xxxxxxxxxx>
>> Cc: Greg Ungerer <gerg@xxxxxxxxxxxxxx>
>> Cc: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
>> Cc: linux-m68k@xxxxxxxxxxxxxxxxxxxx
>> Cc: uclinux-dev@xxxxxxxxxxx
>> ---
>>   arch/m68k/coldfire/device.c |    6 +++---
>>   1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> --- linux-next-20220303.orig/arch/m68k/coldfire/device.c
>> +++ linux-next-20220303/arch/m68k/coldfire/device.c
>> @@ -480,7 +480,7 @@ static struct platform_device mcf_i2c5 =
>>   #endif /* MCFI2C_BASE5 */
>>   #endif /* IS_ENABLED(CONFIG_I2C_IMX) */
>>   -#if IS_ENABLED(CONFIG_MCF_EDMA)
>> +#if IS_ENABLED(CONFIG_MCF_EDMA) && IS_ENABLED(CONFIG_M5441x)
>
> I really try to avoid making these ColdFire SoC specific. Freescale has
> a habit of using the same hardware blocks across a number of parts.
> The model so far has been to let the Kconfig select these out as required
> (and so not having to conditionally duplicate that here).
>
> I would prefer it to be conditional on !COMPILE_TEST if that is what
> is ultimately causing the problem.

What is ultimately causing the problem is drivers/dma/Kconfig:

config MCF_EDMA
tristate "Freescale eDMA engine support, ColdFire mcf5441x SoCs"
depends on M5441x || COMPILE_TEST


Would you prefer to just remove that COMPILE_TEST?

Or do like Geert suggested -- see your previous patch:
commit 322c512f476f07e9 ("m68knommu: include SDHC support only when hardware has it")

thanks.

--
~Randy