diff mbox series

[v2,7/8] qoriq: new target

Message ID 20211220190104.1964098-8-stijn@linux-ipv6.be
State Accepted, archived
Delegated to: Stijn Tintel
Headers show
Series qoriq: new target | expand

Commit Message

Stijn Tintel Dec. 20, 2021, 7:01 p.m. UTC
Add a new target named "qoriq", that will support boards using PowerPC
processors from NXP's QorIQ brand.

This doesn't actually add support for any board yet, so that
installation instructions can go in the commit message of the commit
that adds actual support for a board.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
---
 package/kernel/linux/modules/other.mk |   2 +-
 target/linux/qoriq/Makefile           |  23 ++
 target/linux/qoriq/config-5.10        | 384 ++++++++++++++++++++++++++
 target/linux/qoriq/generic/target.mk  |   3 +
 target/linux/qoriq/image/Makefile     |  36 +++
 target/linux/qoriq/image/generic.mk   |   0
 6 files changed, 447 insertions(+), 1 deletion(-)
 create mode 100644 target/linux/qoriq/Makefile
 create mode 100644 target/linux/qoriq/config-5.10
 create mode 100644 target/linux/qoriq/generic/target.mk
 create mode 100644 target/linux/qoriq/image/Makefile
 create mode 100644 target/linux/qoriq/image/generic.mk

Comments

Rui Salvaterra Dec. 21, 2021, 2:49 p.m. UTC | #1
Hi, Stijn,

Nice to see this! :) A few nits/comments/questions below…

On Mon, 20 Dec 2021 at 19:01, Stijn Tintel <stijn@linux-ipv6.be> wrote:
>
> Add a new target named "qoriq", that will support boards using PowerPC
> processors from NXP's QorIQ brand.
>
> This doesn't actually add support for any board yet, so that
> installation instructions can go in the commit message of the commit
> that adds actual support for a board.
>
> Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
> ---
>  package/kernel/linux/modules/other.mk |   2 +-
>  target/linux/qoriq/Makefile           |  23 ++
>  target/linux/qoriq/config-5.10        | 384 ++++++++++++++++++++++++++
>  target/linux/qoriq/generic/target.mk  |   3 +
>  target/linux/qoriq/image/Makefile     |  36 +++
>  target/linux/qoriq/image/generic.mk   |   0
>  6 files changed, 447 insertions(+), 1 deletion(-)
>  create mode 100644 target/linux/qoriq/Makefile
>  create mode 100644 target/linux/qoriq/config-5.10
>  create mode 100644 target/linux/qoriq/generic/target.mk
>  create mode 100644 target/linux/qoriq/image/Makefile
>  create mode 100644 target/linux/qoriq/image/generic.mk
>
> diff --git a/package/kernel/linux/modules/other.mk b/package/kernel/linux/modules/other.mk
> index fdcc089025..f712c95c8e 100644
> --- a/package/kernel/linux/modules/other.mk
> +++ b/package/kernel/linux/modules/other.mk
> @@ -992,7 +992,7 @@ $(eval $(call KernelPackage,ptp))
>  define KernelPackage/ptp-qoriq
>    SUBMENU:=$(OTHER_MENU)
>    TITLE:=Freescale QorIQ PTP support
> -  DEPENDS:=@TARGET_mpc85xx +kmod-ptp
> +  DEPENDS:=@(TARGET_mpc85xx||TARGET_qoriq) +kmod-ptp
>    KCONFIG:=CONFIG_PTP_1588_CLOCK_QORIQ
>    FILES:=$(LINUX_DIR)/drivers/ptp/ptp-qoriq.ko
>    AUTOLOAD:=$(call AutoProbe,ptp-qoriq)
> diff --git a/target/linux/qoriq/Makefile b/target/linux/qoriq/Makefile
> new file mode 100644
> index 0000000000..960ab32c98
> --- /dev/null
> +++ b/target/linux/qoriq/Makefile
> @@ -0,0 +1,23 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +#
> +# Copyright (C) 2021 Stijn Tintel <stijn@linux-ipv6.be>
> +
> +include $(TOPDIR)/rules.mk
> +
> +ARCH:=powerpc64
> +BOARD:=qoriq
> +BOARDNAME:=NXP QorIQ (PowerPC)
> +CPU_TYPE:=e5500
> +FEATURES:=boot-part ext4 fpu legacy-sdcard powerpc64 ramdisk root-part rtc source-only
> +SUBTARGETS:=generic
> +
> +KERNEL_PATCHVER:=5.10
> +KERNEL_TESTING_PATCHVER:=5.10

Should we keep TESTING_PATCHVER when it's the same version?

> +
> +KERNELNAME:=zImage
> +
> +include $(INCLUDE_DIR)/target.mk
> +
> +DEFAULT_PACKAGES += e2fsprogs uboot-envtools
> +
> +$(eval $(call BuildTarget))
> diff --git a/target/linux/qoriq/config-5.10 b/target/linux/qoriq/config-5.10
> new file mode 100644
> index 0000000000..6984e60475
> --- /dev/null
> +++ b/target/linux/qoriq/config-5.10
> @@ -0,0 +1,384 @@
> +CONFIG_64BIT=y
> +CONFIG_ALTIVEC=y
> +CONFIG_ARCH_DMA_ADDR_T_64BIT=y
> +CONFIG_ARCH_HIBERNATION_POSSIBLE=y
> +CONFIG_ARCH_KEEP_MEMBLOCK=y
> +CONFIG_ARCH_MAY_HAVE_PC_FDC=y
> +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
> +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
> +CONFIG_ARCH_MMAP_RND_BITS=18
> +CONFIG_ARCH_MMAP_RND_BITS_MAX=32
> +CONFIG_ARCH_MMAP_RND_BITS_MIN=18
> +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11
> +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17
> +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
> +CONFIG_ARCH_SELECT_MEMORY_MODEL=y
> +CONFIG_ARCH_SPARSEMEM_ENABLE=y
> +CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y
> +CONFIG_ASN1=y
> +CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
> +CONFIG_AUDIT_ARCH=y
> +CONFIG_BLK_DEV_SD=y
> +CONFIG_BLK_MQ_PCI=y
> +CONFIG_BLK_PM=y
> +CONFIG_BLK_SCSI_REQUEST=y
> +CONFIG_BLOCK_COMPAT=y
> +CONFIG_BOOKE=y
> +CONFIG_CLKDEV_LOOKUP=y
> +CONFIG_CLK_QORIQ=y
> +CONFIG_CLONE_BACKWARDS=y
> +CONFIG_CLZ_TAB=y
> +CONFIG_COMMON_CLK=y
> +CONFIG_COMPAT=y
> +CONFIG_COMPAT_32BIT_TIME=y

We shouldn't need 32-bit time_t compatibility, since we're building
from scratch.

> +CONFIG_COMPAT_BINFMT_ELF=y
> +CONFIG_COMPAT_NETLINK_MESSAGES=y
> +CONFIG_COMPAT_OLD_SIGACTION=y
> +CONFIG_CONSOLE_TRANSLATIONS=y
> +CONFIG_CORENET_GENERIC=y
> +# CONFIG_CPUFREQ_DT is not set
> +CONFIG_CPU_BIG_ENDIAN=y
> +CONFIG_CPU_FREQ=y
> +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
> +# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
> +# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
> +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y

I see a Qoriq-specific cpufreq driver selected (down below), but we're
defaulting to performance here. Is frequency scaling actually working,
or is it disabled for performance/latency reasons?

> +# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
> +# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
> +# CONFIG_CPU_FREQ_STAT is not set
> +CONFIG_CPU_IDLE=y
> +CONFIG_CPU_IDLE_GOV_LADDER=y
> +CONFIG_CPU_IDLE_GOV_TEO=y

Do we need both ladder and TEO? TEO should be the best option, nowadays.

> +CONFIG_CPU_ISOLATION=y
> +CONFIG_CPU_RMAP=y
> +CONFIG_CRC16=y
> +CONFIG_CRYPTO_AUTHENC=y
> +CONFIG_CRYPTO_CRC32C=y
> +# CONFIG_CRYPTO_CRC32C_VPMSUM is not set
> +CONFIG_CRYPTO_DES=y
> +CONFIG_CRYPTO_DEV_FSL_CAAM=y
> +CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=y
> +CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API_DESC=y
> +CONFIG_CRYPTO_DEV_FSL_CAAM_COMMON=y
> +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y
> +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC=y
> +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI=y
> +# CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG is not set
> +# CONFIG_CRYPTO_DEV_FSL_CAAM_INTC is not set
> +CONFIG_CRYPTO_DEV_FSL_CAAM_JR=y
> +CONFIG_CRYPTO_DEV_FSL_CAAM_PKC_API=y
> +CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9
> +CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y
> +# CONFIG_CRYPTO_DEV_NX is not set
> +CONFIG_CRYPTO_ECB=y
> +CONFIG_CRYPTO_ENGINE=y
> +CONFIG_CRYPTO_GF128MUL=y
> +CONFIG_CRYPTO_HW=y
> +CONFIG_CRYPTO_LIB_DES=y
> +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
> +# CONFIG_CRYPTO_MD5_PPC is not set
> +CONFIG_CRYPTO_NULL2=y
> +CONFIG_CRYPTO_RNG=y
> +CONFIG_CRYPTO_RNG2=y
> +CONFIG_CRYPTO_RSA=y
> +# CONFIG_CRYPTO_SHA1_PPC is not set
> +CONFIG_CRYPTO_XTS=y
> +CONFIG_DATA_SHIFT=12
> +CONFIG_DEBUG_INFO=y
> +CONFIG_DEBUG_INFO_DWARF4=y
> +CONFIG_DEFAULT_UIMAGE=y
> +CONFIG_DMADEVICES=y
> +CONFIG_DMA_ENGINE=y
> +CONFIG_DMA_OF=y
> +CONFIG_DMA_OPS=y
> +CONFIG_DMA_OPS_BYPASS=y
> +CONFIG_DTC=y
> +CONFIG_DUMMY_CONSOLE=y
> +CONFIG_DYNAMIC_DEBUG=y
> +CONFIG_E500=y
> +# CONFIG_E5500_CPU is not set
> +CONFIG_E6500_CPU=y

This is confusing. Isn't the CPU an e5500? I haven't looked at the
kconfig, so I'm not sure how this appears when make(ing)
kernel_menuconfig.

> +CONFIG_EARLY_PRINTK=y
> +CONFIG_EDAC=y
> +CONFIG_EDAC_ATOMIC_SCRUB=y
> +# CONFIG_EDAC_CPC925 is not set
> +# CONFIG_EDAC_DEBUG is not set
> +CONFIG_EDAC_LEGACY_SYSFS=y
> +CONFIG_EDAC_MPC85XX=y
> +CONFIG_EDAC_SUPPORT=y
> +CONFIG_EPAPR_PARAVIRT=y
> +CONFIG_EXT4_FS=y
> +CONFIG_EXT4_FS_POSIX_ACL=y
> +CONFIG_FIXED_PHY=y
> +CONFIG_FORCE_MAX_ZONEORDER=13
> +# CONFIG_FSL_BMAN_TEST is not set
> +CONFIG_FSL_CORENET_CF=y
> +CONFIG_FSL_CORENET_RCPM=y
> +CONFIG_FSL_DMA=y
> +CONFIG_FSL_DPAA=y
> +# CONFIG_FSL_DPAA_CHECKING is not set
> +CONFIG_FSL_DPAA_ETH=y
> +CONFIG_FSL_EMB_PERFMON=y
> +CONFIG_FSL_FMAN=y
> +CONFIG_FSL_GUTS=y
> +CONFIG_FSL_IFC=y
> +CONFIG_FSL_LBC=y
> +CONFIG_FSL_MPIC_TIMER_WAKEUP=y
> +CONFIG_FSL_PAMU=y
> +CONFIG_FSL_PCI=y
> +# CONFIG_FSL_QMAN_TEST is not set
> +CONFIG_FSL_SOC=y
> +CONFIG_FSL_SOC_BOOKE=y
> +CONFIG_FSL_XGMAC_MDIO=y
> +CONFIG_FS_IOMAP=y
> +CONFIG_FS_MBCACHE=y
> +CONFIG_FS_POSIX_ACL=y
> +CONFIG_FTL=y
> +CONFIG_FUNCTION_ERROR_INJECTION=y
> +CONFIG_FW_LOADER_PAGED_BUF=y
> +CONFIG_GDB_SCRIPTS=y
> +CONFIG_GENERIC_ALLOCATOR=y
> +CONFIG_GENERIC_BUG=y
> +CONFIG_GENERIC_CLOCKEVENTS=y
> +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
> +CONFIG_GENERIC_CMOS_UPDATE=y
> +# CONFIG_GENERIC_CPU is not set
> +CONFIG_GENERIC_CPU_AUTOPROBE=y
> +CONFIG_GENERIC_CPU_VULNERABILITIES=y
> +CONFIG_GENERIC_EARLY_IOREMAP=y
> +CONFIG_GENERIC_IRQ_MIGRATION=y
> +CONFIG_GENERIC_IRQ_SHOW=y
> +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
> +CONFIG_GENERIC_ISA_DMA=y
> +CONFIG_GENERIC_MSI_IRQ=y
> +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
> +CONFIG_GENERIC_PCI_IOMAP=y
> +CONFIG_GENERIC_PHY=y
> +CONFIG_GENERIC_SMP_IDLE_THREAD=y
> +CONFIG_GENERIC_STRNCPY_FROM_USER=y
> +CONFIG_GENERIC_STRNLEN_USER=y
> +CONFIG_GENERIC_TIME_VSYSCALL=y
> +# CONFIG_GEN_RTC is not set
> +# CONFIG_GIANFAR is not set
> +CONFIG_GLOB=y
> +CONFIG_GPIOLIB=y
> +CONFIG_GPIO_GENERIC=y
> +CONFIG_GPIO_MPC8XXX=y
> +CONFIG_GRO_CELLS=y
> +# CONFIG_HANGCHECK_TIMER is not set
> +# CONFIG_HARDENED_USERCOPY is not set
> +CONFIG_HAS_DMA=y
> +CONFIG_HAS_IOMEM=y
> +CONFIG_HAS_IOPORT_MAP=y
> +CONFIG_HWMON=y
> +CONFIG_HW_CONSOLE=y
> +CONFIG_HW_RANDOM=y
> +CONFIG_HZ_PERIODIC=y

Do we have tickless idle? If so, it should be enabled (instead of
periodic ticks), in order to save power, unless there's a specific
reason to disable it.

> +CONFIG_ILLEGAL_POINTER_VALUE=0x5deadbeef0000000
> +CONFIG_INITRAMFS_SOURCE=""
> +CONFIG_INPUT=y
> +CONFIG_IOMMU_API=y
> +# CONFIG_IOMMU_DEBUGFS is not set
> +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
> +CONFIG_IOMMU_HELPER=y
> +CONFIG_IOMMU_SUPPORT=y
> +CONFIG_IRQCHIP=y
> +CONFIG_IRQ_DOMAIN=y
> +CONFIG_IRQ_DOMAIN_HIERARCHY=y
> +CONFIG_IRQ_FORCED_THREADING=y
> +CONFIG_IRQ_WORK=y
> +CONFIG_ISA_DMA_API=y
> +CONFIG_JBD2=y
> +CONFIG_KALLSYMS=y
> +CONFIG_KERNEL_GZIP=y
> +CONFIG_KERNEL_START=0xc000000000000000
> +CONFIG_KPROBES=y
> +CONFIG_KRETPROBES=y
> +# CONFIG_LD_HEAD_STUB_CATCH is not set
> +CONFIG_LIBFDT=y
> +CONFIG_LLD_VERSION=0
> +CONFIG_LOCK_DEBUGGING_SUPPORT=y
> +CONFIG_LOCK_SPIN_ON_OWNER=y
> +CONFIG_MAGIC_SYSRQ=y
> +CONFIG_MATH_EMULATION=y

The e5500 should implement a complete IEEE 754 compliant FPU,
according to the datasheet. I don't see a reason to enable any math
emulation.

[snipped the rest, as it looks sane]

Cheers,
Rui
Stijn Tintel Dec. 21, 2021, 5:36 p.m. UTC | #2
On 21/12/2021 16:49, Rui Salvaterra wrote:
> Hi, Stijn,
>
> Nice to see this! :) A few nits/comments/questions below…
>
> On Mon, 20 Dec 2021 at 19:01, Stijn Tintel <stijn@linux-ipv6.be> wrote:
>> Add a new target named "qoriq", that will support boards using PowerPC
>> processors from NXP's QorIQ brand.
>>
>> This doesn't actually add support for any board yet, so that
>> installation instructions can go in the commit message of the commit
>> that adds actual support for a board.
>>
>> Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
>> ---
>>  package/kernel/linux/modules/other.mk |   2 +-
>>  target/linux/qoriq/Makefile           |  23 ++
>>  target/linux/qoriq/config-5.10        | 384 ++++++++++++++++++++++++++
>>  target/linux/qoriq/generic/target.mk  |   3 +
>>  target/linux/qoriq/image/Makefile     |  36 +++
>>  target/linux/qoriq/image/generic.mk   |   0
>>  6 files changed, 447 insertions(+), 1 deletion(-)
>>  create mode 100644 target/linux/qoriq/Makefile
>>  create mode 100644 target/linux/qoriq/config-5.10
>>  create mode 100644 target/linux/qoriq/generic/target.mk
>>  create mode 100644 target/linux/qoriq/image/Makefile
>>  create mode 100644 target/linux/qoriq/image/generic.mk
>>
>> diff --git a/package/kernel/linux/modules/other.mk b/package/kernel/linux/modules/other.mk
>> index fdcc089025..f712c95c8e 100644
>> --- a/package/kernel/linux/modules/other.mk
>> +++ b/package/kernel/linux/modules/other.mk
>> @@ -992,7 +992,7 @@ $(eval $(call KernelPackage,ptp))
>>  define KernelPackage/ptp-qoriq
>>    SUBMENU:=$(OTHER_MENU)
>>    TITLE:=Freescale QorIQ PTP support
>> -  DEPENDS:=@TARGET_mpc85xx +kmod-ptp
>> +  DEPENDS:=@(TARGET_mpc85xx||TARGET_qoriq) +kmod-ptp
>>    KCONFIG:=CONFIG_PTP_1588_CLOCK_QORIQ
>>    FILES:=$(LINUX_DIR)/drivers/ptp/ptp-qoriq.ko
>>    AUTOLOAD:=$(call AutoProbe,ptp-qoriq)
>> diff --git a/target/linux/qoriq/Makefile b/target/linux/qoriq/Makefile
>> new file mode 100644
>> index 0000000000..960ab32c98
>> --- /dev/null
>> +++ b/target/linux/qoriq/Makefile
>> @@ -0,0 +1,23 @@
>> +# SPDX-License-Identifier: GPL-2.0-only
>> +#
>> +# Copyright (C) 2021 Stijn Tintel <stijn@linux-ipv6.be>
>> +
>> +include $(TOPDIR)/rules.mk
>> +
>> +ARCH:=powerpc64
>> +BOARD:=qoriq
>> +BOARDNAME:=NXP QorIQ (PowerPC)
>> +CPU_TYPE:=e5500
>> +FEATURES:=boot-part ext4 fpu legacy-sdcard powerpc64 ramdisk root-part rtc source-only
>> +SUBTARGETS:=generic
>> +
>> +KERNEL_PATCHVER:=5.10
>> +KERNEL_TESTING_PATCHVER:=5.10
> Should we keep TESTING_PATCHVER when it's the same version?
Dropped.
>
>> +
>> +KERNELNAME:=zImage
>> +
>> +include $(INCLUDE_DIR)/target.mk
>> +
>> +DEFAULT_PACKAGES += e2fsprogs uboot-envtools
>> +
>> +$(eval $(call BuildTarget))
>> diff --git a/target/linux/qoriq/config-5.10 b/target/linux/qoriq/config-5.10
>> new file mode 100644
>> index 0000000000..6984e60475
>> --- /dev/null
>> +++ b/target/linux/qoriq/config-5.10
>> @@ -0,0 +1,384 @@
>> +CONFIG_64BIT=y
>> +CONFIG_ALTIVEC=y
>> +CONFIG_ARCH_DMA_ADDR_T_64BIT=y
>> +CONFIG_ARCH_HIBERNATION_POSSIBLE=y
>> +CONFIG_ARCH_KEEP_MEMBLOCK=y
>> +CONFIG_ARCH_MAY_HAVE_PC_FDC=y
>> +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
>> +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
>> +CONFIG_ARCH_MMAP_RND_BITS=18
>> +CONFIG_ARCH_MMAP_RND_BITS_MAX=32
>> +CONFIG_ARCH_MMAP_RND_BITS_MIN=18
>> +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11
>> +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17
>> +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
>> +CONFIG_ARCH_SELECT_MEMORY_MODEL=y
>> +CONFIG_ARCH_SPARSEMEM_ENABLE=y
>> +CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y
>> +CONFIG_ASN1=y
>> +CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
>> +CONFIG_AUDIT_ARCH=y
>> +CONFIG_BLK_DEV_SD=y
>> +CONFIG_BLK_MQ_PCI=y
>> +CONFIG_BLK_PM=y
>> +CONFIG_BLK_SCSI_REQUEST=y
>> +CONFIG_BLOCK_COMPAT=y
>> +CONFIG_BOOKE=y
>> +CONFIG_CLKDEV_LOOKUP=y
>> +CONFIG_CLK_QORIQ=y
>> +CONFIG_CLONE_BACKWARDS=y
>> +CONFIG_CLZ_TAB=y
>> +CONFIG_COMMON_CLK=y
>> +CONFIG_COMPAT=y
>> +CONFIG_COMPAT_32BIT_TIME=y
> We shouldn't need 32-bit time_t compatibility, since we're building
> from scratch.
Dropped.
>
>> +CONFIG_COMPAT_BINFMT_ELF=y
>> +CONFIG_COMPAT_NETLINK_MESSAGES=y
>> +CONFIG_COMPAT_OLD_SIGACTION=y
>> +CONFIG_CONSOLE_TRANSLATIONS=y
>> +CONFIG_CORENET_GENERIC=y
>> +# CONFIG_CPUFREQ_DT is not set
>> +CONFIG_CPU_BIG_ENDIAN=y
>> +CONFIG_CPU_FREQ=y
>> +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
>> +# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
>> +# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
>> +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
> I see a Qoriq-specific cpufreq driver selected (down below), but we're
> defaulting to performance here. Is frequency scaling actually working,
> or is it disabled for performance/latency reasons?
On the e6500 (M300), it is not usable due to erratum A-008083. The e5500
(M200, BSAP-3040) does not have this problem so I prefer to leave it
enabled. Enabled all governors and selected schedutil as the default,
analog to several other targets.
>
>> +# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
>> +# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
>> +# CONFIG_CPU_FREQ_STAT is not set
>> +CONFIG_CPU_IDLE=y
>> +CONFIG_CPU_IDLE_GOV_LADDER=y
>> +CONFIG_CPU_IDLE_GOV_TEO=y
> Do we need both ladder and TEO? TEO should be the best option, nowadays.
Side effect of not having enabled tickless idle, fixed.
>
>> +CONFIG_CPU_ISOLATION=y
>> +CONFIG_CPU_RMAP=y
>> +CONFIG_CRC16=y
>> +CONFIG_CRYPTO_AUTHENC=y
>> +CONFIG_CRYPTO_CRC32C=y
>> +# CONFIG_CRYPTO_CRC32C_VPMSUM is not set
>> +CONFIG_CRYPTO_DES=y
>> +CONFIG_CRYPTO_DEV_FSL_CAAM=y
>> +CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=y
>> +CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API_DESC=y
>> +CONFIG_CRYPTO_DEV_FSL_CAAM_COMMON=y
>> +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y
>> +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC=y
>> +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI=y
>> +# CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG is not set
>> +# CONFIG_CRYPTO_DEV_FSL_CAAM_INTC is not set
>> +CONFIG_CRYPTO_DEV_FSL_CAAM_JR=y
>> +CONFIG_CRYPTO_DEV_FSL_CAAM_PKC_API=y
>> +CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9
>> +CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y
>> +# CONFIG_CRYPTO_DEV_NX is not set
>> +CONFIG_CRYPTO_ECB=y
>> +CONFIG_CRYPTO_ENGINE=y
>> +CONFIG_CRYPTO_GF128MUL=y
>> +CONFIG_CRYPTO_HW=y
>> +CONFIG_CRYPTO_LIB_DES=y
>> +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
>> +# CONFIG_CRYPTO_MD5_PPC is not set
>> +CONFIG_CRYPTO_NULL2=y
>> +CONFIG_CRYPTO_RNG=y
>> +CONFIG_CRYPTO_RNG2=y
>> +CONFIG_CRYPTO_RSA=y
>> +# CONFIG_CRYPTO_SHA1_PPC is not set
>> +CONFIG_CRYPTO_XTS=y
>> +CONFIG_DATA_SHIFT=12
>> +CONFIG_DEBUG_INFO=y
>> +CONFIG_DEBUG_INFO_DWARF4=y
>> +CONFIG_DEFAULT_UIMAGE=y
>> +CONFIG_DMADEVICES=y
>> +CONFIG_DMA_ENGINE=y
>> +CONFIG_DMA_OF=y
>> +CONFIG_DMA_OPS=y
>> +CONFIG_DMA_OPS_BYPASS=y
>> +CONFIG_DTC=y
>> +CONFIG_DUMMY_CONSOLE=y
>> +CONFIG_DYNAMIC_DEBUG=y
>> +CONFIG_E500=y
>> +# CONFIG_E5500_CPU is not set
>> +CONFIG_E6500_CPU=y
> This is confusing. Isn't the CPU an e5500? I haven't looked at the
> kconfig, so I'm not sure how this appears when make(ing)
> kernel_menuconfig.
The M300 is an e6500. I've downgraded CPU_TYPE to e5500 to be able to
support both e5500 and e6500 in the generic subtarget to avoid having
different subtargets. Now for the kernel part, selecting E5500_CPU will
result in -mcpu=powerpc64 rather than -mcpu=e5500. As the only
difference is the presence of AltiVec or not, and the kernel does
runtime detection anyway, I'd prefer to keep E6500 here. For musl,
runtime detection will be enabled only when AltiVec support is not
defined at compile time, so using e5500 for CPU_TYPE will result in an
unneeded runtime check on E6500, but we need that for the E5500 based
models that will be supported in the future.
>
>> +CONFIG_EARLY_PRINTK=y
>> +CONFIG_EDAC=y
>> +CONFIG_EDAC_ATOMIC_SCRUB=y
>> +# CONFIG_EDAC_CPC925 is not set
>> +# CONFIG_EDAC_DEBUG is not set
>> +CONFIG_EDAC_LEGACY_SYSFS=y
>> +CONFIG_EDAC_MPC85XX=y
>> +CONFIG_EDAC_SUPPORT=y
>> +CONFIG_EPAPR_PARAVIRT=y
>> +CONFIG_EXT4_FS=y
>> +CONFIG_EXT4_FS_POSIX_ACL=y
>> +CONFIG_FIXED_PHY=y
>> +CONFIG_FORCE_MAX_ZONEORDER=13
>> +# CONFIG_FSL_BMAN_TEST is not set
>> +CONFIG_FSL_CORENET_CF=y
>> +CONFIG_FSL_CORENET_RCPM=y
>> +CONFIG_FSL_DMA=y
>> +CONFIG_FSL_DPAA=y
>> +# CONFIG_FSL_DPAA_CHECKING is not set
>> +CONFIG_FSL_DPAA_ETH=y
>> +CONFIG_FSL_EMB_PERFMON=y
>> +CONFIG_FSL_FMAN=y
>> +CONFIG_FSL_GUTS=y
>> +CONFIG_FSL_IFC=y
>> +CONFIG_FSL_LBC=y
>> +CONFIG_FSL_MPIC_TIMER_WAKEUP=y
>> +CONFIG_FSL_PAMU=y
>> +CONFIG_FSL_PCI=y
>> +# CONFIG_FSL_QMAN_TEST is not set
>> +CONFIG_FSL_SOC=y
>> +CONFIG_FSL_SOC_BOOKE=y
>> +CONFIG_FSL_XGMAC_MDIO=y
>> +CONFIG_FS_IOMAP=y
>> +CONFIG_FS_MBCACHE=y
>> +CONFIG_FS_POSIX_ACL=y
>> +CONFIG_FTL=y
>> +CONFIG_FUNCTION_ERROR_INJECTION=y
>> +CONFIG_FW_LOADER_PAGED_BUF=y
>> +CONFIG_GDB_SCRIPTS=y
>> +CONFIG_GENERIC_ALLOCATOR=y
>> +CONFIG_GENERIC_BUG=y
>> +CONFIG_GENERIC_CLOCKEVENTS=y
>> +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
>> +CONFIG_GENERIC_CMOS_UPDATE=y
>> +# CONFIG_GENERIC_CPU is not set
>> +CONFIG_GENERIC_CPU_AUTOPROBE=y
>> +CONFIG_GENERIC_CPU_VULNERABILITIES=y
>> +CONFIG_GENERIC_EARLY_IOREMAP=y
>> +CONFIG_GENERIC_IRQ_MIGRATION=y
>> +CONFIG_GENERIC_IRQ_SHOW=y
>> +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
>> +CONFIG_GENERIC_ISA_DMA=y
>> +CONFIG_GENERIC_MSI_IRQ=y
>> +CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
>> +CONFIG_GENERIC_PCI_IOMAP=y
>> +CONFIG_GENERIC_PHY=y
>> +CONFIG_GENERIC_SMP_IDLE_THREAD=y
>> +CONFIG_GENERIC_STRNCPY_FROM_USER=y
>> +CONFIG_GENERIC_STRNLEN_USER=y
>> +CONFIG_GENERIC_TIME_VSYSCALL=y
>> +# CONFIG_GEN_RTC is not set
>> +# CONFIG_GIANFAR is not set
>> +CONFIG_GLOB=y
>> +CONFIG_GPIOLIB=y
>> +CONFIG_GPIO_GENERIC=y
>> +CONFIG_GPIO_MPC8XXX=y
>> +CONFIG_GRO_CELLS=y
>> +# CONFIG_HANGCHECK_TIMER is not set
>> +# CONFIG_HARDENED_USERCOPY is not set
>> +CONFIG_HAS_DMA=y
>> +CONFIG_HAS_IOMEM=y
>> +CONFIG_HAS_IOPORT_MAP=y
>> +CONFIG_HWMON=y
>> +CONFIG_HW_CONSOLE=y
>> +CONFIG_HW_RANDOM=y
>> +CONFIG_HZ_PERIODIC=y
> Do we have tickless idle? If so, it should be enabled (instead of
> periodic ticks), in order to save power, unless there's a specific
> reason to disable it.
Good catch. Enabled tickless idle.
>
>> +CONFIG_ILLEGAL_POINTER_VALUE=0x5deadbeef0000000
>> +CONFIG_INITRAMFS_SOURCE=""
>> +CONFIG_INPUT=y
>> +CONFIG_IOMMU_API=y
>> +# CONFIG_IOMMU_DEBUGFS is not set
>> +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
>> +CONFIG_IOMMU_HELPER=y
>> +CONFIG_IOMMU_SUPPORT=y
>> +CONFIG_IRQCHIP=y
>> +CONFIG_IRQ_DOMAIN=y
>> +CONFIG_IRQ_DOMAIN_HIERARCHY=y
>> +CONFIG_IRQ_FORCED_THREADING=y
>> +CONFIG_IRQ_WORK=y
>> +CONFIG_ISA_DMA_API=y
>> +CONFIG_JBD2=y
>> +CONFIG_KALLSYMS=y
>> +CONFIG_KERNEL_GZIP=y
>> +CONFIG_KERNEL_START=0xc000000000000000
>> +CONFIG_KPROBES=y
>> +CONFIG_KRETPROBES=y
>> +# CONFIG_LD_HEAD_STUB_CATCH is not set
>> +CONFIG_LIBFDT=y
>> +CONFIG_LLD_VERSION=0
>> +CONFIG_LOCK_DEBUGGING_SUPPORT=y
>> +CONFIG_LOCK_SPIN_ON_OWNER=y
>> +CONFIG_MAGIC_SYSRQ=y
>> +CONFIG_MATH_EMULATION=y
> The e5500 should implement a complete IEEE 754 compliant FPU,
> according to the datasheet. I don't see a reason to enable any math
> emulation.
It does not implement fsqrt nor fsqrts. As musl hardcodes sqrt and sqrtf
to use these ASM instructions, this is required to avoid SIGILL.
>
> [snipped the rest, as it looks sane]
>
> Cheers,
> Rui

Thanks,
Stijn
diff mbox series

Patch

diff --git a/package/kernel/linux/modules/other.mk b/package/kernel/linux/modules/other.mk
index fdcc089025..f712c95c8e 100644
--- a/package/kernel/linux/modules/other.mk
+++ b/package/kernel/linux/modules/other.mk
@@ -992,7 +992,7 @@  $(eval $(call KernelPackage,ptp))
 define KernelPackage/ptp-qoriq
   SUBMENU:=$(OTHER_MENU)
   TITLE:=Freescale QorIQ PTP support
-  DEPENDS:=@TARGET_mpc85xx +kmod-ptp
+  DEPENDS:=@(TARGET_mpc85xx||TARGET_qoriq) +kmod-ptp
   KCONFIG:=CONFIG_PTP_1588_CLOCK_QORIQ
   FILES:=$(LINUX_DIR)/drivers/ptp/ptp-qoriq.ko
   AUTOLOAD:=$(call AutoProbe,ptp-qoriq)
diff --git a/target/linux/qoriq/Makefile b/target/linux/qoriq/Makefile
new file mode 100644
index 0000000000..960ab32c98
--- /dev/null
+++ b/target/linux/qoriq/Makefile
@@ -0,0 +1,23 @@ 
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright (C) 2021 Stijn Tintel <stijn@linux-ipv6.be>
+
+include $(TOPDIR)/rules.mk
+
+ARCH:=powerpc64
+BOARD:=qoriq
+BOARDNAME:=NXP QorIQ (PowerPC)
+CPU_TYPE:=e5500
+FEATURES:=boot-part ext4 fpu legacy-sdcard powerpc64 ramdisk root-part rtc source-only
+SUBTARGETS:=generic
+
+KERNEL_PATCHVER:=5.10
+KERNEL_TESTING_PATCHVER:=5.10
+
+KERNELNAME:=zImage
+
+include $(INCLUDE_DIR)/target.mk
+
+DEFAULT_PACKAGES += e2fsprogs uboot-envtools
+
+$(eval $(call BuildTarget))
diff --git a/target/linux/qoriq/config-5.10 b/target/linux/qoriq/config-5.10
new file mode 100644
index 0000000000..6984e60475
--- /dev/null
+++ b/target/linux/qoriq/config-5.10
@@ -0,0 +1,384 @@ 
+CONFIG_64BIT=y
+CONFIG_ALTIVEC=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_KEEP_MEMBLOCK=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
+CONFIG_ARCH_MMAP_RND_BITS=18
+CONFIG_ARCH_MMAP_RND_BITS_MAX=32
+CONFIG_ARCH_MMAP_RND_BITS_MIN=18
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y
+CONFIG_ASN1=y
+CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BLK_PM=y
+CONFIG_BLK_SCSI_REQUEST=y
+CONFIG_BLOCK_COMPAT=y
+CONFIG_BOOKE=y
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_CLK_QORIQ=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_CLZ_TAB=y
+CONFIG_COMMON_CLK=y
+CONFIG_COMPAT=y
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_COMPAT_BINFMT_ELF=y
+CONFIG_COMPAT_NETLINK_MESSAGES=y
+CONFIG_COMPAT_OLD_SIGACTION=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_CORENET_GENERIC=y
+# CONFIG_CPUFREQ_DT is not set
+CONFIG_CPU_BIG_ENDIAN=y
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
+# CONFIG_CPU_FREQ_STAT is not set
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+CONFIG_CPU_IDLE_GOV_TEO=y
+CONFIG_CPU_ISOLATION=y
+CONFIG_CPU_RMAP=y
+CONFIG_CRC16=y
+CONFIG_CRYPTO_AUTHENC=y
+CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_CRC32C_VPMSUM is not set
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_DEV_FSL_CAAM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API_DESC=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_COMMON=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI=y
+# CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG is not set
+# CONFIG_CRYPTO_DEV_FSL_CAAM_INTC is not set
+CONFIG_CRYPTO_DEV_FSL_CAAM_JR=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_PKC_API=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9
+CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y
+# CONFIG_CRYPTO_DEV_NX is not set
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_ENGINE=y
+CONFIG_CRYPTO_GF128MUL=y
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_LIB_DES=y
+CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
+# CONFIG_CRYPTO_MD5_PPC is not set
+CONFIG_CRYPTO_NULL2=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RSA=y
+# CONFIG_CRYPTO_SHA1_PPC is not set
+CONFIG_CRYPTO_XTS=y
+CONFIG_DATA_SHIFT=12
+CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_INFO_DWARF4=y
+CONFIG_DEFAULT_UIMAGE=y
+CONFIG_DMADEVICES=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_OF=y
+CONFIG_DMA_OPS=y
+CONFIG_DMA_OPS_BYPASS=y
+CONFIG_DTC=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_DYNAMIC_DEBUG=y
+CONFIG_E500=y
+# CONFIG_E5500_CPU is not set
+CONFIG_E6500_CPU=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_EDAC=y
+CONFIG_EDAC_ATOMIC_SCRUB=y
+# CONFIG_EDAC_CPC925 is not set
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_LEGACY_SYSFS=y
+CONFIG_EDAC_MPC85XX=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_EPAPR_PARAVIRT=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_FIXED_PHY=y
+CONFIG_FORCE_MAX_ZONEORDER=13
+# CONFIG_FSL_BMAN_TEST is not set
+CONFIG_FSL_CORENET_CF=y
+CONFIG_FSL_CORENET_RCPM=y
+CONFIG_FSL_DMA=y
+CONFIG_FSL_DPAA=y
+# CONFIG_FSL_DPAA_CHECKING is not set
+CONFIG_FSL_DPAA_ETH=y
+CONFIG_FSL_EMB_PERFMON=y
+CONFIG_FSL_FMAN=y
+CONFIG_FSL_GUTS=y
+CONFIG_FSL_IFC=y
+CONFIG_FSL_LBC=y
+CONFIG_FSL_MPIC_TIMER_WAKEUP=y
+CONFIG_FSL_PAMU=y
+CONFIG_FSL_PCI=y
+# CONFIG_FSL_QMAN_TEST is not set
+CONFIG_FSL_SOC=y
+CONFIG_FSL_SOC_BOOKE=y
+CONFIG_FSL_XGMAC_MDIO=y
+CONFIG_FS_IOMAP=y
+CONFIG_FS_MBCACHE=y
+CONFIG_FS_POSIX_ACL=y
+CONFIG_FTL=y
+CONFIG_FUNCTION_ERROR_INJECTION=y
+CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_GDB_SCRIPTS=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+# CONFIG_GENERIC_CPU is not set
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_GENERIC_IRQ_MIGRATION=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_PHY=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+# CONFIG_GEN_RTC is not set
+# CONFIG_GIANFAR is not set
+CONFIG_GLOB=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIO_GENERIC=y
+CONFIG_GPIO_MPC8XXX=y
+CONFIG_GRO_CELLS=y
+# CONFIG_HANGCHECK_TIMER is not set
+# CONFIG_HARDENED_USERCOPY is not set
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HWMON=y
+CONFIG_HW_CONSOLE=y
+CONFIG_HW_RANDOM=y
+CONFIG_HZ_PERIODIC=y
+CONFIG_ILLEGAL_POINTER_VALUE=0x5deadbeef0000000
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_INPUT=y
+CONFIG_IOMMU_API=y
+# CONFIG_IOMMU_DEBUGFS is not set
+# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
+CONFIG_IOMMU_HELPER=y
+CONFIG_IOMMU_SUPPORT=y
+CONFIG_IRQCHIP=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_IRQ_WORK=y
+CONFIG_ISA_DMA_API=y
+CONFIG_JBD2=y
+CONFIG_KALLSYMS=y
+CONFIG_KERNEL_GZIP=y
+CONFIG_KERNEL_START=0xc000000000000000
+CONFIG_KPROBES=y
+CONFIG_KRETPROBES=y
+# CONFIG_LD_HEAD_STUB_CATCH is not set
+CONFIG_LIBFDT=y
+CONFIG_LLD_VERSION=0
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_MATH_EMULATION=y
+# CONFIG_MATH_EMULATION_FULL is not set
+CONFIG_MATH_EMULATION_HW_UNIMPLEMENTED=y
+CONFIG_MDIO_BUS=y
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_DEVRES=y
+CONFIG_MEMFD_CREATE=y
+CONFIG_MEMORY=y
+CONFIG_MIGRATION=y
+CONFIG_MMC=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_DEBUG=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_IO_ACCESSORS=y
+CONFIG_MMC_SDHCI_OF_ESDHC=y
+# CONFIG_MMC_SDHCI_PCI is not set
+CONFIG_MMC_SDHCI_PLTFM=y
+# CONFIG_MMC_WBSD is not set
+CONFIG_MMIOWB=y
+CONFIG_MMU_GATHER_PAGE_SIZE=y
+CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_MPIC=y
+CONFIG_MPIC_MSGR=y
+CONFIG_MPIC_TIMER=y
+CONFIG_MPILIB=y
+CONFIG_MTD_NAND_CORE=y
+CONFIG_MTD_NAND_ECC=y
+CONFIG_MTD_NAND_ECC_SW_HAMMING=y
+CONFIG_MTD_NAND_FSL_IFC=y
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_RAW_NAND=y
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
+CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NET_DEVLINK=y
+CONFIG_NET_DSA=y
+# CONFIG_NET_DSA_MSCC_FELIX is not set
+CONFIG_NET_DSA_MV88E6XXX=y
+CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y
+CONFIG_NET_DSA_TAG_DSA=y
+CONFIG_NET_DSA_TAG_EDSA=y
+CONFIG_NET_DSA_TAG_OCELOT=y
+CONFIG_NET_DSA_TAG_TRAILER=y
+CONFIG_NET_FLOW_LIMIT=y
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NLS=y
+CONFIG_NR_CPUS=24
+CONFIG_NR_IRQS=512
+CONFIG_OF=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_DMA_DEFAULT_COHERENT=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_IOMMU=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_MDIO=y
+CONFIG_OF_NET=y
+CONFIG_OLD_SIGSUSPEND=y
+CONFIG_OPTPROBES=y
+CONFIG_PACKING=y
+CONFIG_PADATA=y
+CONFIG_PAGE_OFFSET=0xc000000000000000
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_ARCH_FALLBACKS=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
+CONFIG_PGTABLE_LEVELS=4
+CONFIG_PHYLIB=y
+CONFIG_PHYLINK=y
+CONFIG_PHYSICAL_START=0x00000000
+CONFIG_PHYS_64BIT=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_PM=y
+# CONFIG_PMU_SYSFS is not set
+CONFIG_PM_CLK=y
+CONFIG_PPC=y
+CONFIG_PPC64=y
+CONFIG_PPC_ADV_DEBUG_DACS=2
+CONFIG_PPC_ADV_DEBUG_DVCS=0
+CONFIG_PPC_ADV_DEBUG_IACS=2
+CONFIG_PPC_ADV_DEBUG_REGS=y
+CONFIG_PPC_BARRIER_NOSPEC=y
+CONFIG_PPC_BOOK3E=y
+CONFIG_PPC_BOOK3E_64=y
+CONFIG_PPC_BOOK3E_MMU=y
+# CONFIG_PPC_BOOK3S_64 is not set
+CONFIG_PPC_DAWR=y
+CONFIG_PPC_DOORBELL=y
+CONFIG_PPC_E500MC=y
+# CONFIG_PPC_EARLY_DEBUG is not set
+CONFIG_PPC_EPAPR_HV_PIC=y
+CONFIG_PPC_FPU=y
+CONFIG_PPC_FSL_BOOK3E=y
+CONFIG_PPC_INDIRECT_PCI=y
+# CONFIG_PPC_IRQ_SOFT_MASK_DEBUG is not set
+CONFIG_PPC_MMU_NOHASH=y
+CONFIG_PPC_MSI_BITMAP=y
+CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
+CONFIG_PPC_PAGE_SHIFT=12
+# CONFIG_PPC_PTDUMP is not set
+# CONFIG_PPC_QEMU_E500 is not set
+CONFIG_PPC_QUEUED_SPINLOCKS=y
+CONFIG_PPC_SMP_MUXED_IPI=y
+CONFIG_PPC_UDBG_16550=y
+CONFIG_PPC_WERROR=y
+CONFIG_PPS=y
+CONFIG_PTE_64BIT=y
+CONFIG_QORIQ_CPUFREQ=y
+CONFIG_QORIQ_THERMAL=y
+CONFIG_QUEUED_RWLOCKS=y
+CONFIG_QUEUED_SPINLOCKS=y
+CONFIG_RAS=y
+CONFIG_RATIONAL=y
+# CONFIG_RAVE_SP_CORE is not set
+CONFIG_REGMAP=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_RFS_ACCEL=y
+CONFIG_RPS=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+# CONFIG_SCOM_DEBUGFS is not set
+CONFIG_SCSI=y
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_FSL=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_DEV_BUS=y
+CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
+CONFIG_SERIAL_FSL_LINFLEXUART=y
+CONFIG_SERIAL_FSL_LINFLEXUART_CONSOLE=y
+CONFIG_SERIAL_FSL_LPUART=y
+CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_SG_POOL=y
+CONFIG_SLUB_DEBUG=y
+CONFIG_SMP=y
+CONFIG_SOC_BUS=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_SPARSE_IRQ=y
+CONFIG_SPI=y
+CONFIG_SPI_FSL_ESPI=y
+CONFIG_SPI_MASTER=y
+CONFIG_SRCU=y
+CONFIG_SWIOTLB=y
+CONFIG_SWPHY=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_SYSVIPC_COMPAT=y
+CONFIG_SYS_SUPPORTS_HUGETLBFS=y
+CONFIG_TARGET_CPU_BOOL=y
+CONFIG_THERMAL=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_OF=y
+CONFIG_THREAD_INFO_IN_TASK=y
+CONFIG_THREAD_SHIFT=14
+CONFIG_TREE_RCU=y
+CONFIG_TREE_SRCU=y
+# CONFIG_UACCE is not set
+CONFIG_USB=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_EHCI_FSL=y
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_HCD_PLATFORM is not set
+CONFIG_USB_STORAGE=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_UAS=y
+CONFIG_VDSO32=y
+CONFIG_VGA_CONSOLE=y
+CONFIG_VIRT_CPU_ACCOUNTING=y
+CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
+CONFIG_XPS=y
+CONFIG_ZLIB_DEFLATE=y
diff --git a/target/linux/qoriq/generic/target.mk b/target/linux/qoriq/generic/target.mk
new file mode 100644
index 0000000000..b3bdb405f7
--- /dev/null
+++ b/target/linux/qoriq/generic/target.mk
@@ -0,0 +1,3 @@ 
+define Target/Description
+        Build firmware images for NXP QorIQ boards in the AMP series.
+endef
diff --git a/target/linux/qoriq/image/Makefile b/target/linux/qoriq/image/Makefile
new file mode 100644
index 0000000000..a3c8dd38c2
--- /dev/null
+++ b/target/linux/qoriq/image/Makefile
@@ -0,0 +1,36 @@ 
+# SPDX-License-Identifier: GPL-2.0-only
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/image.mk
+
+SQUASHFSCOMP := xz $(LZMA_XZ_OPTIONS)
+
+define Build/sdcard-img
+        rm -fR $@.boot
+        mkdir -p $@.boot
+        $(CP) $(KDIR)/$(DEVICE_NAME)-kernel.bin $@.boot
+        $(if $(DEVICE_DTS),\
+                $(foreach dtb,$(DEVICE_DTS),$(CP) $(KDIR)/image-$(dtb).dtb $@.boot), \
+                $(CP) $(KDIR)/image-/*.dtb $@.boot)
+
+        $(SCRIPT_DIR)/gen_image_generic.sh \
+                $@ \
+                $(CONFIG_TARGET_KERNEL_PARTSIZE) $@.boot \
+                $(CONFIG_TARGET_ROOTFS_PARTSIZE) $(IMAGE_ROOTFS) \
+                2048
+
+        $(if $(UBOOT),dd if=$(STAGING_DIR_IMAGE)/$(UBOOT).img of=$@ bs=512 skip=1 seek=1 conv=notrunc)
+endef
+
+define Device/Default
+  PROFILES := Default
+  DEVICE_DTS := $(subst _,-,$(1))
+  KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
+  KERNEL_ENTRY := 0x00000000
+  KERNEL_LOADADDR := 0x00000000
+  KERNEL := kernel-bin
+endef
+
+include $(SUBTARGET).mk
+
+$(eval $(call BuildImage))
diff --git a/target/linux/qoriq/image/generic.mk b/target/linux/qoriq/image/generic.mk
new file mode 100644
index 0000000000..e69de29bb2