AnsweredAssumed Answered

Linux config options to support i.MX6Solo and i.MX6DualLite SoC

Question asked by Michal Vokac on Feb 14, 2018
Latest reply on Feb 15, 2018 by Michal Vokac

I would like to strip down as much as possible my configuration file for a single Linux kernel image that will be used on boards with the two mentioned SoCs.

 

The main question is:

Which SoC options are the bare minimum that I need to enable to fully support both i.MX6Solo and i.MX6DualLite SoCs?

 

The kernel version I am working with is 4.9-1.0.x-imx.

The problem is that I am not able to compile the v4.9 kernel with my current  configuration that worked for 4.1-2.0.x-imx.

Two main different configs I tried:

 

1. With almost all IMX SoCs enabled (used with my current 4.1-2.0.x-imx kernel)
#
# Cortex-A platforms
#
CONFIG_SOC_IMX5=y
CONFIG_SOC_IMX50=y
# CONFIG_SOC_IMX51 is not set
CONFIG_SOC_IMX53=y
CONFIG_SOC_IMX6=y
CONFIG_SOC_IMX6Q=y
CONFIG_SOC_IMX6SL=y
CONFIG_SOC_IMX6SX=y
CONFIG_SOC_IMX6UL=y
CONFIG_SOC_IMX6ULL=y
CONFIG_SOC_IMX7=y
CONFIG_SOC_IMX7D=y
# CONFIG_SOC_LS1021A is not set

#
# Cortex-A/Cortex-M asymmetric multiprocessing platforms
#
CONFIG_SOC_IMX6SLL=y
# CONFIG_SOC_IMX7ULP is not set
CONFIG_SOC_VF610=y
CONFIG_VF_USE_ARM_GLOBAL_TIMER=y
# CONFIG_VF_USE_PIT_TIMER is not set
# CONFIG_ARCH_MEDIATEK is not set
2. Only IMX6Q/DL and IMX6SL option enabled
#
# Cortex-A platforms
#
# CONFIG_SOC_IMX50 is not set
# CONFIG_SOC_IMX51 is not set
# CONFIG_SOC_IMX53 is not set
CONFIG_SOC_IMX6=y
CONFIG_SOC_IMX6Q=y
CONFIG_SOC_IMX6SL=y
# CONFIG_SOC_IMX6SX is not set
# CONFIG_SOC_IMX6UL is not set
# CONFIG_SOC_IMX6ULL is not set
# CONFIG_SOC_IMX7D is not set
# CONFIG_SOC_LS1021A is not set

#
# Cortex-A/Cortex-M asymmetric multiprocessing platforms
#
# CONFIG_SOC_IMX6SLL is not set
# CONFIG_SOC_IMX7ULP is not set
# CONFIG_SOC_VF610 is not set
# CONFIG_ARCH_MEDIATEK is not set

 

Both return:
  MODPOST vmlinux.o
  GEN     .version
  CHK     include/generated/compile.h
  UPD     include/generated/compile.h
  CC      init/version.o
  LD      init/built-in.o
arch/arm/mach-imx/built-in.o: In function `init_mmdc_lpddr2_settings':
platform-imx-dma.c:(.text+0x46c0): undefined reference to `imx6sll_lpddr2_freq_change'
platform-imx-dma.c:(.text+0x46c4): undefined reference to `imx6sll_lpddr2_freq_change'
arch/arm/mach-imx/built-in.o: In function `imx6sl_init_late':
platform-imx-dma.c:(.init.text+0x1944): undefined reference to `imx6sll_cpuidle_init'
/home/vokac/development/sources/linux-fslc/Makefile:976: recipe for target 'vmlinux' failed

I am able to compile the kernel only if I disable the CONFIG_SOC_IMX6SL=y option.

Seems like a bug in Kconfig or some #ifdef to me.

 

Thanks for any hints.

Michal

Outcomes