Re: [PATCH v3 2/2] mtd: rawnand: ingenic: Limit MTD_NAND_JZ4780 to architecture only

From: Paul Cercueil
Date: Sun Jul 26 2020 - 12:12:42 EST




Le dim. 26 juil. 2020 à 18:06, Krzysztof Kozlowski <krzk@xxxxxxxxxx> a écrit :
On Sat, Jul 25, 2020 at 08:30:56PM +0200, Arnd Bergmann wrote:
On Sat, Jul 25, 2020 at 2:17 PM Paul Cercueil <paul@xxxxxxxxxxxxxxx> wrote:
> Le ven. 24 juil. 2020 à 17:54, Krzysztof Kozlowski <krzk@xxxxxxxxxx> a
> écrit :
> > On Fri, Jul 24, 2020 at 05:50:06PM +0200, Paul Cercueil wrote:
> >> Le ven. 24 juil. 2020 à 17:33, Krzysztof Kozlowski
> >> <krzk@xxxxxxxxxx> a écrit:
> >> > On Fri, 24 Jul 2020 at 17:19, Paul Cercueil <paul@xxxxxxxxxxxxxxx>
> >> > wrote:
> >>
> >> On MIPS, the SoC selection is a Kconfig "choice", so you can only
> >> support
> >> one SoC family, unfortunately.
> >
> > Let's say someone selected then some other architecture
> > (MIPS_ALCHEMY).
> > They could select this MTD driver.
> >
> > Does it mean they would be able to run it on Ingenic hardware?
>
> In *theory* yes, as long as the Kconfig options that MACH_INGENIC
> selects are enabled, the kernel should boot and work on Ingenic SoCs.

Right now, this won't work yet, because there are platform specific
functions that are implemented by each of the platforms in arch/mips,
e.g. arch/mips/generic/init.c and arch/mips/jz4740/setup.c.

I would say even more - no DTS would be provided for such configuration.
All Ingenic DTSes are included only with MACH_INGENIC. You cannot build
a kernel working on Ingenic without MACH_INGENIC. Even in theory.

But the devicetree doesn't have to be built-in.

-Paul


A lot of the newer platforms are part of arch/mips/generic
(CONFIG_MIPS_GENERIC), which roughly corresponds to
CONFIG_ARCH_MULTIPLATFORM on in arch/arm/.
Similarly, there are header files in arch/mips/include/asm/mach-*/
that conflict and you need to have the right one.

To have more than one platform enabled, each one needs to
have all of that platform code converted to fit into the
MIPS_GENERIC framework. This can be a lot of work, but
I suppose the ingenic platform would be a candidate for
which this makes sense, as long as new SoCs of that family
still come out.

I can therefore change the patch to:
depends on MACH_INGENIC || MIPS_GENERIC || COMPILE_TEST

Other solution is to leave MTD driver as is and for the memory driver go
with my v2 approach:
https://lore.kernel.org/lkml/20200724074038.5597-6-krzk@xxxxxxxxxx/

Best regards,
Krzysztof