Signed-off-by: Antony Pavlov <antonynpavlov@xxxxxxxxx> --- arch/arm/Kconfig | 9 +++++ arch/arm/Makefile | 1 + arch/arm/boards/Makefile | 1 + arch/arm/boards/ezzy-4/Makefile | 3 ++ arch/arm/boards/ezzy-4/env/init/automount | 27 +++++++++++++ arch/arm/boards/ezzy-4/lowlevel.c | 19 +++++++++ arch/arm/configs/ezzy-4_defconfig | 49 +++++++++++++++++++++++ arch/arm/dts/Makefile | 1 + arch/arm/dts/ezzy-4.dts | 22 ++++++++++ arch/arm/mach-sc6531e/Kconfig | 17 ++++++++ arch/arm/mach-sc6531e/Makefile | 3 ++ 11 files changed, 152 insertions(+) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index e76ee0f6dfe..b46d73f5084 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -84,6 +84,14 @@ config ARCH_DIGIC help Support for Canon's digital cameras that use the DIGIC4 chip. +config ARCH_SC6531E + bool "SC6531E-based devices" + depends on 32BIT + select CPU_ARM926T + select GPIOLIB + help + Support for feature phones based on the SC6531E chipset. + config ARCH_EP93XX bool "Cirrus Logic EP93xx" depends on 32BIT @@ -330,6 +338,7 @@ source "arch/arm/mach-nomadik/Kconfig" source "arch/arm/mach-omap/Kconfig" source "arch/arm/mach-pxa/Kconfig" source "arch/arm/mach-rockchip/Kconfig" +source "arch/arm/mach-sc6531e/Kconfig" source "arch/arm/mach-socfpga/Kconfig" source "arch/arm/mach-stm32mp/Kconfig" source "arch/arm/mach-versatile/Kconfig" diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 2208b071ac1..96a32aca8b4 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -104,6 +104,7 @@ machine-$(CONFIG_ARCH_OMAP) += omap machine-$(CONFIG_ARCH_PXA) += pxa machine-$(CONFIG_ARCH_ROCKCHIP) += rockchip machine-$(CONFIG_ARCH_SAMSUNG) += samsung +machine-$(CONFIG_ARCH_SC6531E) += sc6531e machine-$(CONFIG_ARCH_SOCFPGA) += socfpga machine-$(CONFIG_ARCH_STM32MP) += stm32mp machine-$(CONFIG_ARCH_VERSATILE) += versatile diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile index 2877debad53..8abd8872757 100644 --- a/arch/arm/boards/Makefile +++ b/arch/arm/boards/Makefile @@ -44,6 +44,7 @@ obj-$(CONFIG_MACH_EMBEST_MARSBOARD) += embest-marsboard/ obj-$(CONFIG_MACH_EMBEST_RIOTBOARD) += embest-riotboard/ obj-$(CONFIG_MACH_ELTEC_HIPERCAM) += eltec-hipercam/ obj-y += freescale-mx51-babbage/ +obj-$(CONFIG_MACH_EZZY4) += ezzy-4/ obj-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += freescale-mx53-qsb/ obj-$(CONFIG_MACH_FREESCALE_MX53_VMX53) += freescale-mx53-vmx53/ obj-$(CONFIG_MACH_FREESCALE_MX7_SABRESD) += freescale-mx7-sabresd/ diff --git a/arch/arm/boards/ezzy-4/Makefile b/arch/arm/boards/ezzy-4/Makefile new file mode 100644 index 00000000000..458f5209008 --- /dev/null +++ b/arch/arm/boards/ezzy-4/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-only + +lwl-y += lowlevel.o diff --git a/arch/arm/boards/ezzy-4/env/init/automount b/arch/arm/boards/ezzy-4/env/init/automount new file mode 100644 index 00000000000..6be2b6508a0 --- /dev/null +++ b/arch/arm/boards/ezzy-4/env/init/automount @@ -0,0 +1,27 @@ +#!/bin/sh + +version +echo +help +echo +cpuinfo +echo +iomem +echo +meminfo +echo +of_dump +echo +drvinfo +echo + +timeout 3 +echo + +echo sleep 0 +sleep 1 +echo sleep 1 +sleep 1 +echo sleep 2 +sleep 1 +echo sleep 3 diff --git a/arch/arm/boards/ezzy-4/lowlevel.c b/arch/arm/boards/ezzy-4/lowlevel.c new file mode 100644 index 00000000000..e06ac493bc6 --- /dev/null +++ b/arch/arm/boards/ezzy-4/lowlevel.c @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include <common.h> +#include <linux/sizes.h> +#include <asm/barebox-arm-head.h> +#include <asm/barebox-arm.h> + +extern char __dtb_ezzy_4_start[]; + +void __naked barebox_arm_reset_vector(uint32_t r0, uint32_t r1, uint32_t r2) +{ + void *fdt; + + arm_cpu_lowlevel_init(); + + fdt = __dtb_ezzy_4_start + get_runtime_offset(); + + barebox_arm_entry(0x14000000, SZ_4M, fdt); +} diff --git a/arch/arm/configs/ezzy-4_defconfig b/arch/arm/configs/ezzy-4_defconfig new file mode 100644 index 00000000000..4701f78fc6a --- /dev/null +++ b/arch/arm/configs/ezzy-4_defconfig @@ -0,0 +1,49 @@ +CONFIG_TEXT_BASE=0x14300000 +CONFIG_ARCH_SC6531E=y +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_PBL_IMAGE=y +CONFIG_IMAGE_COMPRESSION_NONE=y +CONFIG_MALLOC_SIZE=0x100000 +CONFIG_PROMPT="ezzy-4 > " +CONFIG_HUSH_FANCY_PROMPT=y +CONFIG_CMDLINE_EDITING=y +CONFIG_AUTO_COMPLETE=y +CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y +CONFIG_DEFAULT_ENVIRONMENT_PATH="arch/arm/boards/ezzy-4/env" +CONFIG_DEBUG_LL=y +CONFIG_DEBUG_INITCALLS=y +CONFIG_DEBUG_PBL=y +CONFIG_CMD_IOMEM=y +CONFIG_CMD_MEMINFO=y +# CONFIG_CMD_BOOTM is not set +# CONFIG_CMD_BOOTU is not set +CONFIG_CMD_GO=y +# CONFIG_CMD_MOUNT is not set +# CONFIG_CMD_UMOUNT is not set +CONFIG_CMD_EXPORT=y +CONFIG_CMD_MD5SUM=y +# CONFIG_CMD_PWD is not set +CONFIG_CMD_SHA1SUM=y +CONFIG_CMD_LET=y +CONFIG_CMD_MSLEEP=y +CONFIG_CMD_SLEEP=y +# CONFIG_CMD_CLEAR is not set +CONFIG_CMD_ECHO_E=y +CONFIG_CMD_EDIT=y +CONFIG_CMD_TIMEOUT=y +CONFIG_CMD_MEMTEST=y +CONFIG_CMD_MM=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_LED=y +CONFIG_CMD_OF_NODE=y +CONFIG_CMD_OF_PROPERTY=y +CONFIG_CMD_OFTREE=y +CONFIG_CMD_TIME=y +CONFIG_CMD_UPTIME=y +CONFIG_OFDEVICE=y +# CONFIG_SPI is not set +CONFIG_CLOCKSOURCE_DUMMY_RATE=2000 +CONFIG_LED=y +CONFIG_LED_GPIO=y +CONFIG_LED_GPIO_OF=y +CONFIG_ZLIB=y diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 98f4c4e0194..ef21d1ab60c 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -8,6 +8,7 @@ lwl-$(CONFIG_MACH_ADVANTECH_ROM_742X) += imx6dl-advantech-rom-7421.dtb.o lwl-$(CONFIG_MACH_AFI_GF) += am335x-afi-gf.dtb.o lwl-$(CONFIG_MACH_BEAGLEBONE) += am335x-bone.dtb.o am335x-boneblack.dtb.o am335x-bone-common.dtb.o lwl-$(CONFIG_MACH_CANON_A1100) += canon-a1100.dtb.o +lwl-$(CONFIG_MACH_EZZY4) += ezzy-4.dtb.o lwl-$(CONFIG_MACH_CLEP7212) += ep7212-clep7212.dtb.o lwl-$(CONFIG_MACH_CM_FX6) += imx6dl-cm-fx6.dtb.o imx6q-cm-fx6.dtb.o imx6q-utilite.dtb.o lwl-$(CONFIG_MACH_DFI_FS700_M60) += imx6q-dfi-fs700-m60-6q.dtb.o imx6dl-dfi-fs700-m60-6s.dtb.o diff --git a/arch/arm/dts/ezzy-4.dts b/arch/arm/dts/ezzy-4.dts new file mode 100644 index 00000000000..7b326bb23c8 --- /dev/null +++ b/arch/arm/dts/ezzy-4.dts @@ -0,0 +1,22 @@ +/dts-v1/; + +/ { + model = "F+ Ezzy 4"; + compatible = "f+,ezzy-4"; + + #address-cells = <1>; + #size-cells = <1>; + + chosen { }; + + memory { + device_type = "memory"; + reg = <0x14000000 0x00400000>; + }; + + timer: timer@81003000 { + compatible = "sc6531e-timer"; + reg = <0x81003000 0x100>; + status = "okay"; + }; +}; diff --git a/arch/arm/mach-sc6531e/Kconfig b/arch/arm/mach-sc6531e/Kconfig new file mode 100644 index 00000000000..f0c4b16550c --- /dev/null +++ b/arch/arm/mach-sc6531e/Kconfig @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: GPL-2.0-only + +if ARCH_SC6531E + +choice + prompt "board type" + +config MACH_EZZY4 + bool "F+ Ezzy 4" + +endchoice + +config ARCH_TEXT_BASE + hex + default 0x00001900 if MACH_EZZY4 + +endif diff --git a/arch/arm/mach-sc6531e/Makefile b/arch/arm/mach-sc6531e/Makefile new file mode 100644 index 00000000000..1c2b374603c --- /dev/null +++ b/arch/arm/mach-sc6531e/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-only + +obj- := __dummy__.o -- 2.39.0