Skip to content
Snippets Groups Projects
  • Robert Marko's avatar
    e479a7d5
    arm: Add support for Qualcomm IPQ40xx family · e479a7d5
    Robert Marko authored and Tom Rini's avatar Tom Rini committed
    
    This introduces initial support for the popular Qualcomm
    IPQ40x8 and IPQ40x9 WiSoC series.
    
    IPQ40xx series have 4x Cortex A7 ARM-v7A cores.
    Supported are: IPQ4018, IPQ4019, IPQ4028 and IPQ4029.
    
    IPQ40x8 and IPQ40x9 use the same cores, but differ in
    addressable RAM size (1GB for IPQ40x9 and 256MB for IPQ40x8)
    and supported peripherals (IPQ40x8 lacks RGMII, LCD controller
    and EMMC/SDHCI controllers).
    
    IQP4028/IPQ4029 models differ from IPQ4018/IPQ4019 only
    by their rated temperatures rates with IPQ402X models being
    rated for wider temperature ranges.
    
    Initially this supports:
    * Simple clock driver (Only for UART1 now, will be extended)
    * Pinctrl driver (Supports UARTX and GPIO now, will be extended)
    * GPIOs already supported by msm_gpio driver with updates
    * UARTs already supported by serial_msm driver with updates
    
    Further peripherals will come in later patches.
    
    Signed-off-by: default avatarRobert Marko <robert.marko@sartura.hr>
    e479a7d5
    History
    arm: Add support for Qualcomm IPQ40xx family
    Robert Marko authored and Tom Rini's avatar Tom Rini committed
    
    This introduces initial support for the popular Qualcomm
    IPQ40x8 and IPQ40x9 WiSoC series.
    
    IPQ40xx series have 4x Cortex A7 ARM-v7A cores.
    Supported are: IPQ4018, IPQ4019, IPQ4028 and IPQ4029.
    
    IPQ40x8 and IPQ40x9 use the same cores, but differ in
    addressable RAM size (1GB for IPQ40x9 and 256MB for IPQ40x8)
    and supported peripherals (IPQ40x8 lacks RGMII, LCD controller
    and EMMC/SDHCI controllers).
    
    IQP4028/IPQ4029 models differ from IPQ4018/IPQ4019 only
    by their rated temperatures rates with IPQ402X models being
    rated for wider temperature ranges.
    
    Initially this supports:
    * Simple clock driver (Only for UART1 now, will be extended)
    * Pinctrl driver (Supports UARTX and GPIO now, will be extended)
    * GPIOs already supported by msm_gpio driver with updates
    * UARTs already supported by serial_msm driver with updates
    
    Further peripherals will come in later patches.
    
    Signed-off-by: default avatarRobert Marko <robert.marko@sartura.hr>
Makefile 3.78 KiB
# SPDX-License-Identifier: GPL-2.0+

ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_ARCH_TEGRA),yy)
CONFIG_CPU_V7A=
CONFIG_CPU_ARM720T=y
endif

# This selects which instruction set is used.
arch-$(CONFIG_CPU_ARM720T)	=-march=armv4
arch-$(CONFIG_CPU_ARM920T)	=-march=armv4t
arch-$(CONFIG_CPU_ARM926EJS)	=-march=armv5te
arch-$(CONFIG_CPU_ARM946ES)	=-march=armv5te
arch-$(CONFIG_CPU_SA1100)	=-march=armv4
arch-$(CONFIG_CPU_PXA)		=
arch-$(CONFIG_CPU_ARM1136)	=-march=armv5t
arch-$(CONFIG_CPU_ARM1176)	=-march=armv5t
arch-$(CONFIG_CPU_V7A)		=$(call cc-option, -march=armv7-a, \
				 $(call cc-option, -march=armv7))
arch-$(CONFIG_CPU_V7M)		=-march=armv7-m
arch-$(CONFIG_CPU_V7R)		=-march=armv7-r
arch-$(CONFIG_ARM64)		=-march=armv8-a

# On Tegra systems we must build SPL for the armv4 core on the device
# but otherwise we can use the value in CONFIG_SYS_ARM_ARCH
ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_ARCH_TEGRA),yy)
arch-y += -D__LINUX_ARM_ARCH__=4
else
arch-y += -D__LINUX_ARM_ARCH__=$(CONFIG_SYS_ARM_ARCH)
endif

# Evaluate arch cc-option calls now
arch-y := $(arch-y)

# This selects how we optimise for the processor.
tune-$(CONFIG_CPU_ARM720T)	=-mtune=arm7tdmi
tune-$(CONFIG_CPU_ARM920T)	=
tune-$(CONFIG_CPU_ARM926EJS)	=
tune-$(CONFIG_CPU_ARM946ES)	=
tune-$(CONFIG_CPU_SA1100)	=-mtune=strongarm1100
tune-$(CONFIG_CPU_PXA)		=-mcpu=xscale
tune-$(CONFIG_CPU_ARM1136)	=
tune-$(CONFIG_CPU_ARM1176)	=
tune-$(CONFIG_CPU_V7A)		=-mtune=generic-armv7-a
tune-$(CONFIG_CPU_V7R)		=
tune-$(CONFIG_ARM64)		=

# Evaluate tune cc-option calls now
tune-y := $(tune-y)

PLATFORM_CPPFLAGS += $(arch-y) $(tune-y)

# Machine directory name.  This list is sorted alphanumerically
# by CONFIG_* macro name.
machine-$(CONFIG_ARCH_ASPEED)		+= aspeed
machine-$(CONFIG_ARCH_AT91)		+= at91
machine-$(CONFIG_ARCH_BCM283X)		+= bcm283x
machine-$(CONFIG_ARCH_BCMSTB)		+= bcmstb
machine-$(CONFIG_ARCH_DAVINCI)		+= davinci
machine-$(CONFIG_ARCH_EXYNOS)		+= exynos
machine-$(CONFIG_ARCH_HIGHBANK)		+= highbank
machine-$(CONFIG_ARCH_IPQ40XX)		+= ipq40xx
machine-$(CONFIG_ARCH_K3)		+= k3
machine-$(CONFIG_ARCH_KEYSTONE)		+= keystone
machine-$(CONFIG_ARCH_KIRKWOOD)		+= kirkwood
machine-$(CONFIG_ARCH_LPC32XX)		+= lpc32xx
machine-$(CONFIG_ARCH_MEDIATEK)		+= mediatek
machine-$(CONFIG_ARCH_MESON)		+= meson
machine-$(CONFIG_ARCH_MVEBU)		+= mvebu
machine-$(CONFIG_ARCH_OMAP2PLUS)	+= omap2
machine-$(CONFIG_ARCH_ORION5X)		+= orion5x
machine-$(CONFIG_ARCH_OWL)		+= owl
machine-$(CONFIG_ARCH_RMOBILE)		+= rmobile
machine-$(CONFIG_ARCH_ROCKCHIP)		+= rockchip
machine-$(CONFIG_ARCH_S5PC1XX)		+= s5pc1xx
machine-$(CONFIG_ARCH_SNAPDRAGON)	+= snapdragon
machine-$(CONFIG_ARCH_SOCFPGA)		+= socfpga
machine-$(CONFIG_ARCH_STM32)		+= stm32
machine-$(CONFIG_ARCH_STM32MP)		+= stm32mp
machine-$(CONFIG_ARCH_SUNXI)		+= sunxi
machine-$(CONFIG_ARCH_TEGRA)		+= tegra
machine-$(CONFIG_ARCH_U8500)		+= u8500
machine-$(CONFIG_ARCH_UNIPHIER)		+= uniphier
machine-$(CONFIG_ARCH_VERSAL)		+= versal
machine-$(CONFIG_ARCH_ZYNQ)		+= zynq
machine-$(CONFIG_ARCH_ZYNQMP)		+= zynqmp
machine-$(CONFIG_ARCH_ZYNQMP_R5)	+= zynqmp-r5

machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))

PLATFORM_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs))

libs-y += $(machdirs)

head-y := arch/arm/cpu/$(CPU)/start.o

ifeq ($(CONFIG_SPL_BUILD),y)
ifneq ($(CONFIG_SPL_START_S_PATH),)
head-y := $(CONFIG_SPL_START_S_PATH:"%"=%)/start.o
endif
endif

libs-y += arch/arm/cpu/$(CPU)/
libs-y += arch/arm/cpu/
libs-y += arch/arm/lib/

ifeq ($(CONFIG_SPL_BUILD),y)
ifneq (,$(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_MX35)$(filter $(SOC), mx25 mx5 mx6 mx7 mx35 imx8m imx8 imxrt))
libs-y += arch/arm/mach-imx/
endif
else
ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx7 mx7ulp mx31 mx35 mxs imx8m imx8 imxrt vf610))
libs-y += arch/arm/mach-imx/
endif
endif

ifneq (,$(filter $(SOC), kirkwood))
libs-y += arch/arm/mach-mvebu/
endif

# deprecated
-include $(machdirs)/config.mk