arm: boards: Add support for MYIR MYD-AM335X Development Board
Subsystems (3)
PATCH v2 1/1 arm: boards: Add support for MYIR MYD-AM335X Development Board
The MYD-AM335X Development Board designed by MYIR is a high-performance ARM Evaluation Module (EVM) using the MYC-AM335X CPU module as the core controller board. It is based on up to 1GHz Texas Instruments (TI) Sitara AM335x family of ARM Cortex-A8 Microprocessors (MPUs) that deliver high DMIPs at a low cost while also delivering optional 3D graphics acceleration and key peripherals.
--- arch/arm/boards/Makefile | 1 + arch/arm/boards/myirtech-x335x/Makefile | 3 + arch/arm/boards/myirtech-x335x/board.c | 44 +++++++ .../defaultenv-myirtech-x335x/boot/nand | 4 + .../defaultenv-myirtech-x335x/nv/boot.default | 1 + arch/arm/boards/myirtech-x335x/lowlevel.c | 115 ++++++++++++++++++ arch/arm/configs/am335x_mlo_defconfig | 1 + arch/arm/configs/omap_defconfig | 3 +- arch/arm/dts/Makefile | 1 + arch/arm/dts/am335x-myirtech-myd.dts | 41 +++++++ arch/arm/mach-omap/Kconfig | 6 + .../arm/mach-omap/include/mach/am33xx-clock.h | 1 + .../mach-omap/include/mach/am33xx-silicon.h | 2 + images/Makefile.am33xx | 8 ++ 14 files changed, 230 insertions(+), 1 deletion(-) create mode 100644 arch/arm/boards/myirtech-x335x/Makefile create mode 100644 arch/arm/boards/myirtech-x335x/board.c create mode 100644 arch/arm/boards/myirtech-x335x/defaultenv-myirtech-x335x/boot/nand create mode 100644 arch/arm/boards/myirtech-x335x/defaultenv-myirtech-x335x/nv/boot.default create mode 100644 arch/arm/boards/myirtech-x335x/lowlevel.c create mode 100644 arch/arm/dts/am335x-myirtech-myd.dts
arch/arm/boards/Makefile +1 -0
@@ -77,6 +77,7 @@ obj-$(CONFIG_MACH_MB7707) += module-mb7707/ obj-$(CONFIG_MACH_MIOA701) += mioa701/ obj-$(CONFIG_MACH_MX23EVK) += freescale-mx23-evk/ obj-$(CONFIG_MACH_MX28EVK) += freescale-mx28-evk/ +obj-$(CONFIG_MACH_MYIRTECH_X335X) += myirtech-x335x/ obj-$(CONFIG_MACH_NESO) += guf-neso/ obj-$(CONFIG_MACH_NETGEAR_RN104) += netgear-rn104/ obj-$(CONFIG_MACH_NETGEAR_RN2120) += netgear-rn2120/
arch/arm/boards/myirtech-x335x/Makefile new file +3 -0
@@ -0,0 +1,3 @@ +lwl-y += lowlevel.o +obj-y += board.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT) += defaultenv-myirtech-x335x
arch/arm/boards/myirtech-x335x/board.c new file +44 -0
44 lines not on this page · raw message
arch/arm/boards/myirtech-x335x/defaultenv-myirtech-x335x/boot/nand new file +4 -0
@@ -0,0 +1,4 @@ +#!/bin/sh + +global.bootm.image="/dev/nand0.system.ubi.kernel" +global.linux.bootargs.dyn.root="ubi.mtd=system ubi.block=0,root root=fe00 ro"
arch/arm/boards/myirtech-x335x/defaultenv-myirtech-x335x/nv/boot.default new file +1 -0
@@ -0,0 +1 @@ +nand
arch/arm/boards/myirtech-x335x/lowlevel.c new file +115 -0
115 lines not on this page · raw message
arch/arm/configs/am335x_mlo_defconfig +1 -0
@@ -5,6 +5,7 @@ CONFIG_OMAP_SERIALBOOT=y CONFIG_OMAP_MULTI_BOARDS=y CONFIG_MACH_AFI_GF=y CONFIG_MACH_BEAGLEBONE=y +CONFIG_MACH_MYIRTECH_X335X=y CONFIG_MACH_PHYTEC_SOM_AM335X=y CONFIG_THUMB2_BAREBOX=y # CONFIG_MEMINFO is not set
arch/arm/configs/omap_defconfig +2 -1
@@ -6,6 +6,7 @@ CONFIG_OMAP_MULTI_BOARDS=y CONFIG_MACH_AFI_GF=y CONFIG_MACH_BEAGLE=y CONFIG_MACH_BEAGLEBONE=y +CONFIG_MACH_MYIRTECH_X335X=y CONFIG_MACH_PHYTEC_SOM_AM335X=y CONFIG_MACH_VSCOM_BALTOS=y CONFIG_MACH_WAGO_PFC_AM35XX=y
@@ -46,6 +47,7 @@ CONFIG_CMD_GO=y CONFIG_CMD_LOADB=y CONFIG_CMD_RESET=y CONFIG_CMD_UIMAGE=y +CONFIG_CMD_BOOTCHOOSER=y CONFIG_CMD_PARTITION=y CONFIG_CMD_UBIFORMAT=y CONFIG_CMD_EXPORT=y
@@ -93,7 +95,6 @@ CONFIG_CMD_OF_FIXUP_STATUS=y CONFIG_CMD_OFTREE=y CONFIG_CMD_TIME=y CONFIG_CMD_STATE=y -CONFIG_CMD_BOOTCHOOSER=y CONFIG_NET=y CONFIG_NET_NFS=y CONFIG_NET_NETCONSOLE=y
arch/arm/dts/Makefile +1 -0
@@ -40,6 +40,7 @@ lwl-$(CONFIG_MACH_MARVELL_ARMADA_XP_GP) += armada-xp-gp-bb.dtb.o lwl-$(CONFIG_MACH_MARVELL_ARMADA_XP_DB) += armada-xp-db-bb.dtb.o lwl-$(CONFIG_MACH_MB7707) += module-mb7707.dtb.o lwl-$(CONFIG_MACH_MX28EVK) += imx28-evk.dtb.o +lwl-$(CONFIG_MACH_MYIRTECH_X335X) += am335x-myirtech-myd.dtb.o lwl-$(CONFIG_MACH_NETGEAR_RN104) += armada-370-rn104-bb.dtb.o lwl-$(CONFIG_MACH_NETGEAR_RN2120) += armada-xp-rn2120-bb.dtb.o lwl-$(CONFIG_MACH_NITROGEN6) += imx6q-nitrogen6x.dtb.o imx6dl-nitrogen6x.dtb.o imx6qp-nitrogen6_max.dtb.o
arch/arm/dts/am335x-myirtech-myd.dts new file +41 -0
41 lines not on this page · raw message
arch/arm/mach-omap/Kconfig +6 -0
@@ -168,6 +168,12 @@ config MACH_BEAGLEBONE help Say Y here if you are using Beagle Bone +config MACH_MYIRTECH_X335X + bool "MYIR Tech Limited SOMs" + select ARCH_AM33XX + help + Say Y here if you are using a TI AM335X based MYIR SOM + config MACH_PHYTEC_SOM_AM335X bool "Phytec AM335X SOMs" select ARCH_AM33XX
arch/arm/mach-omap/include/mach/am33xx-clock.h +1 -0
@@ -25,6 +25,7 @@#define MPUPLL_M_600 600/* 125 * n */ #define MPUPLL_M_720 720/* 125 * n */ #define MPUPLL_M_800 800 +#define MPUPLL_M_1000 1000#define MPUPLL_M2 1
arch/arm/mach-omap/include/mach/am33xx-silicon.h +2 -0
@@ -201,6 +201,8 @@#define AM33XX_MAC_ID1_HI (AM33XX_CTRL_BASE + 0x63c)#define AM33XX_MAC_MII_SEL (AM33XX_CTRL_BASE + 0x650) +#define AM33XX_EFUSE_SMA (AM33XX_CTRL_BASE + 0x7fc) +struct am33xx_cmd_control {u32 slave_ratio0;u32 dll_lock_diff0;
images/Makefile.am33xx +8 -0
@@ -26,6 +26,14 @@ FILE_barebox-am33xx-afi-gf-mlo.spi.img = start_am33xx_afi_gf_sram.pblb.mlospi am33xx-mlo-$(CONFIG_MACH_AFI_GF) += barebox-am33xx-afi-gf-mlo.img am33xx-mlospi-$(CONFIG_MACH_AFI_GF) += barebox-am33xx-afi-gf-mlo.spi.img +pblb-$(CONFIG_MACH_MYIRTECH_X335X) += start_am33xx_myirtech_sdram +FILE_barebox-am33xx-myirtech.img = start_am33xx_myirtech_sdram.pblb +am33xx-barebox-$(CONFIG_MACH_MYIRTECH_X335X) += barebox-am33xx-myirtech.img + +pblb-$(CONFIG_MACH_MYIRTECH_X335X) += start_am33xx_myirtech_sram +FILE_barebox-am33xx-myirtech-mlo.img = start_am33xx_myirtech_sram.pblb.mlo +am33xx-mlo-$(CONFIG_MACH_MYIRTECH_X335X) += barebox-am33xx-myirtech-mlo.img + pblb-$(CONFIG_MACH_PHYTEC_SOM_AM335X) += start_am33xx_phytec_phycore_nand_sdram FILE_barebox-am33xx-phytec-phycore.img = start_am33xx_phytec_phycore_nand_sdram.pblb am33xx-barebox-$(CONFIG_MACH_PHYTEC_SOM_AM335X) += barebox-am33xx-phytec-phycore.img
Signature · 7 lines
2.32.0 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
Quoted 328 lines · Alexander Shiyan
The MYD-AM335X Development Board designed by MYIR is a high-performance ARM Evaluation Module (EVM) using the MYC-AM335X CPU module as the core controller board. It is based on up to 1GHz Texas Instruments (TI) Sitara AM335x family of ARM Cortex-A8 Microprocessors (MPUs) that deliver high DMIPs at a low cost while also delivering optional 3D graphics acceleration and key peripherals.
Signed-off-by Alexander Shiyan <[email protected]>--- arch/arm/boards/Makefile | 1 + arch/arm/boards/myirtech-x335x/Makefile | 3 + arch/arm/boards/myirtech-x335x/board.c | 44 +++++++ .../defaultenv-myirtech-x335x/boot/nand | 4 + .../defaultenv-myirtech-x335x/nv/boot.default | 1 + arch/arm/boards/myirtech-x335x/lowlevel.c | 115 ++++++++++++++++++ arch/arm/configs/am335x_mlo_defconfig | 1 + arch/arm/configs/omap_defconfig | 3 +- arch/arm/dts/Makefile | 1 + arch/arm/dts/am335x-myirtech-myd.dts | 41 +++++++ arch/arm/mach-omap/Kconfig | 6 + .../arm/mach-omap/include/mach/am33xx-clock.h | 1 + .../mach-omap/include/mach/am33xx-silicon.h | 2 + images/Makefile.am33xx | 8 ++ 14 files changed, 230 insertions(+), 1 deletion(-) create mode 100644 arch/arm/boards/myirtech-x335x/Makefile create mode 100644 arch/arm/boards/myirtech-x335x/board.c create mode 100644 arch/arm/boards/myirtech-x335x/defaultenv-myirtech-x335x/boot/nand create mode 100644 arch/arm/boards/myirtech-x335x/defaultenv-myirtech-x335x/nv/boot.default create mode 100644 arch/arm/boards/myirtech-x335x/lowlevel.c create mode 100644 arch/arm/dts/am335x-myirtech-myd.dtsarch/arm/boards/Makefile +1
-0@@ -77,6 +77,7 @@ obj-$(CONFIG_MACH_MB7707) += module-mb7707/ obj-$(CONFIG_MACH_MIOA701) += mioa701/ obj-$(CONFIG_MACH_MX23EVK) += freescale-mx23-evk/ obj-$(CONFIG_MACH_MX28EVK) += freescale-mx28-evk/ +obj-$(CONFIG_MACH_MYIRTECH_X335X) += myirtech-x335x/ obj-$(CONFIG_MACH_NESO) += guf-neso/ obj-$(CONFIG_MACH_NETGEAR_RN104) += netgear-rn104/ obj-$(CONFIG_MACH_NETGEAR_RN2120) += netgear-rn2120/arch/arm/boards/myirtech-x335x/Makefile new file +3
-0@@ -0,0 +1,3 @@ +lwl-y += lowlevel.o +obj-y += board.o +bbenv-$(CONFIG_DEFAULT_ENVIRONMENT) += defaultenv-myirtech-x335xarch/arm/boards/myirtech-x335x/board.c new file +44
-0@@ -0,0 +1,44 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* SPDX-FileCopyrightText: Alexander Shiyan <[email protected]> */ + +#include <bootsource.h> +#include <common.h> +#include <driver.h> +#include <envfs.h> +#include <init.h> +#include <linux/sizes.h> +#include <mach/am33xx-generic.h> + +static struct omap_barebox_part myir_barebox_part = { + .nand_offset =SZ_512K , + .nand_size =SZ_512K , +}; + +static __init int myir_devices_init (void ) +{ +if (!of_machine_is_compatible ("myir,myc-am335x" )) +return 0 ; + +am33xx_register_ethaddr (0 ,0 ); +am33xx_register_ethaddr (1 ,1 ); + +switch (bootsource_get ()) { +case BOOTSOURCE_MMC : +omap_set_bootmmc_devname ("mmc0" ); +break ; +case BOOTSOURCE_NAND : +omap_set_barebox_part (&myir_barebox_part); +break ; +default : +break ; + } + +if (IS_ENABLED (CONFIG_DEFAULT_ENVIRONMENT )) +defaultenv_append_directory (defaultenv_myirtech_x335x); + +if (IS_ENABLED (CONFIG_SHELL_NONE )) +return am33xx_of_register_bootdevice (); + +return 0 ; +} +coredevice_initcall (myir_devices_init);arch/arm/boards/myirtech-x335x/defaultenv-myirtech-x335x/boot/nand new file +4
-0@@ -0,0 +1,4 @@ +#!/bin/sh + +global.bootm.image="/dev/nand0.system.ubi.kernel" +global.linux.bootargs.dyn.root="ubi.mtd=system ubi.block=0,root root=fe00 ro"arch/arm/boards/myirtech-x335x/defaultenv-myirtech-x335x/nv/boot.default new file +1
-0@@ -0,0 +1 @@ +nandarch/arm/boards/myirtech-x335x/lowlevel.c new file +115
-0@@ -0,0 +1,115 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* SPDX-FileCopyrightText: Alexander Shiyan <[email protected]> */ + +#include <io.h> +#include <asm/barebox-arm-head.h> +#include <asm/barebox-arm.h> +#include <debug_ll.h> +#include <init.h> +#include <linux/sizes.h> +#include <mach/am33xx-clock.h> +#include <mach/am33xx-generic.h> +#include <mach/am33xx-mux.h> +#include <mach/generic.h> +#include <mach/sdrc.h> +#include <mach/sys_info.h> +#include <mach/wdt.h> + +#define AM335X_ZCZ_1000 0x1c2f + +static const struct am33xx_ddr_data ddr3_data = { + .rd_slave_ratio0 =0x38 , + .wr_dqs_slave_ratio0 =0x44 , + .fifo_we_slave_ratio0 =0x94 , + .wr_slave_ratio0 =0x7d , + .use_rank0_delay =0x01 , + .dll_lock_diff0 =0x00 , +}; + +static const struct am33xx_cmd_control ddr3_cmd_ctrl = { + .slave_ratio0 =0x80 , + .dll_lock_diff0 =0x01 , + .invert_clkout0 =0x00 , + .slave_ratio1 =0x80 , + .dll_lock_diff1 =0x01 , + .invert_clkout1 =0x00 , + .slave_ratio2 =0x80 , + .dll_lock_diff2 =0x01 , + .invert_clkout2 =0x00 , +}; + +/* CPU module contains 512MB (2*256MB) DDR3 SDRAM (2*128MB compatible), +* so we configure EMIF for 512MB then detect real size of memory. +*/ +static const struct am33xx_emif_regs ddr3_regs = { + .emif_read_latency =0x00100007 , + .emif_tim1 =0x0aaad4db , + .emif_tim2 =0x266b7fda , + .emif_tim3 =0x501f867f , + .zq_config =0x50074be4 , + .sdram_config =0x61c05332 , + .sdram_config2 =0x00 , + .sdram_ref_ctrl =0xc30 , +}; + +extern char __dtb_z_am335x_myirtech_myd_start[]; + +ENTRY_FUNCTION(start_am33xx_myirtech_sram, bootinfo, r1, r2) +{ +int mpupll; +void *fdt; + +am33xx_save_bootinfo ((void *)bootinfo); + +arm_cpu_lowlevel_init (); + +relocate_to_current_adr (); +setup_c (); + + fdt = __dtb_z_am335x_myirtech_myd_start; + +/* WDT1 is already running when the bootloader gets control +* Disable it to avoid "random" resets +*/ +__raw_writel (WDT_DISABLE_CODE1 ,AM33XX_WDT_REG (WSPR )); +while (__raw_readl (AM33XX_WDT_REG (WWPS )) !=0x0 ); +__raw_writel (WDT_DISABLE_CODE2 ,AM33XX_WDT_REG (WSPR )); +while (__raw_readl (AM33XX_WDT_REG (WWPS )) !=0x0 ); + + mpupll =MPUPLL_M_800 ; +if (am33xx_get_cpu_rev () ==AM335X_ES2_1 ) { +u32 deviceid =readl (AM33XX_EFUSE_SMA ) &0x1fff ; +if (deviceid ==AM335X_ZCZ_1000 ) + mpupll =MPUPLL_M_1000 ; + } + +am33xx_pll_init (mpupll,DDRPLL_M_400 ); + +am335x_sdram_init (0x18b , &ddr3_cmd_ctrl, &ddr3_regs, &ddr3_data); + +if (IS_ENABLED (CONFIG_DEBUG_LL )) { +am33xx_uart_soft_reset ((void *)AM33XX_UART0_BASE ); +am33xx_enable_uart0_pin_mux (); +omap_uart_lowlevel_init ((void *)AM33XX_UART0_BASE ); +putc_ll ('>' ); + } + +barebox_arm_entry (AM33XX_DRAM_ADDR_SPACE_START ,SZ_256M , fdt); +} + +ENTRY_FUNCTION(start_am33xx_myirtech_sdram, r0, r1, r2) +{ +void *fdt; +u32 sdram_size; + + fdt = __dtb_z_am335x_myirtech_myd_start; + + fdt +=get_runtime_offset (); + +/* Detect 256M/512M module variant */ +__raw_writel (SZ_512M ,AM33XX_DRAM_ADDR_SPACE_START +SZ_256M ); +__raw_writel (SZ_256M ,AM33XX_DRAM_ADDR_SPACE_START +0 ); + sdram_size =__raw_readl (AM33XX_DRAM_ADDR_SPACE_START +SZ_256M ); + +barebox_arm_entry (AM33XX_DRAM_ADDR_SPACE_START , sdram_size, fdt); +}arch/arm/configs/am335x_mlo_defconfig +1
-0@@ -5,6 +5,7 @@ CONFIG_OMAP_SERIALBOOT=y CONFIG_OMAP_MULTI_BOARDS=y CONFIG_MACH_AFI_GF=y CONFIG_MACH_BEAGLEBONE=y +CONFIG_MACH_MYIRTECH_X335X=y CONFIG_MACH_PHYTEC_SOM_AM335X=y CONFIG_THUMB2_BAREBOX=y # CONFIG_MEMINFO is not setarch/arm/configs/omap_defconfig +2
-1@@ -6,6 +6,7 @@ CONFIG_OMAP_MULTI_BOARDS=y CONFIG_MACH_AFI_GF=y CONFIG_MACH_BEAGLE=y CONFIG_MACH_BEAGLEBONE=y +CONFIG_MACH_MYIRTECH_X335X=y CONFIG_MACH_PHYTEC_SOM_AM335X=y CONFIG_MACH_VSCOM_BALTOS=y CONFIG_MACH_WAGO_PFC_AM35XX=y@@ -46,6 +47,7 @@ CONFIG_CMD_GO=y CONFIG_CMD_LOADB=y CONFIG_CMD_RESET=y CONFIG_CMD_UIMAGE=y +CONFIG_CMD_BOOTCHOOSER=y CONFIG_CMD_PARTITION=y CONFIG_CMD_UBIFORMAT=y CONFIG_CMD_EXPORT=y@@ -93,7 +95,6 @@ CONFIG_CMD_OF_FIXUP_STATUS=y CONFIG_CMD_OFTREE=y CONFIG_CMD_TIME=y CONFIG_CMD_STATE=y -CONFIG_CMD_BOOTCHOOSER=y CONFIG_NET=y CONFIG_NET_NFS=y CONFIG_NET_NETCONSOLE=yarch/arm/dts/Makefile +1
-0@@ -40,6 +40,7 @@ lwl-$(CONFIG_MACH_MARVELL_ARMADA_XP_GP) += armada-xp-gp-bb.dtb.o lwl-$(CONFIG_MACH_MARVELL_ARMADA_XP_DB) += armada-xp-db-bb.dtb.o lwl-$(CONFIG_MACH_MB7707) += module-mb7707.dtb.o lwl-$(CONFIG_MACH_MX28EVK) += imx28-evk.dtb.o +lwl-$(CONFIG_MACH_MYIRTECH_X335X) += am335x-myirtech-myd.dtb.o lwl-$(CONFIG_MACH_NETGEAR_RN104) += armada-370-rn104-bb.dtb.o lwl-$(CONFIG_MACH_NETGEAR_RN2120) += armada-xp-rn2120-bb.dtb.o lwl-$(CONFIG_MACH_NITROGEN6) += imx6q-nitrogen6x.dtb.o imx6dl-nitrogen6x.dtb.o imx6qp-nitrogen6_max.dtb.oarch/arm/dts/am335x-myirtech-myd.dts new file +30
-0@@ -0,0 +1,41 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* SPDX-FileCopyrightText: Alexander Shiyan, <[email protected]> */ + +/dts-v1/; + +#include <arm/am335x-myirtech-myd.dts> + +/ { + chosen { + environment { + compatible = "barebox,environment"; + device-path = &env_nand; + }; + }; + +}; + +&nand0 { + /delete-node/ partition@0; + /delete-node/ partition@20000; + + partition@0 { + label = "MLO"; + reg = <0x00000 0x80000>; + }; + + partition@80000 { + label = "boot"; + reg = <0x80000 0x80000>; + };
arch/arm/dts/am335x-myirtech-myd.dts line 40
Quoted 10 lines
arch/arm/dts/am335x-myirtech-myd.dts new file +10
-0+ + env_nand: partition@100000 { + label = "env"; + reg = <0x100000 0x40000>; + }; + + partition@140000 { + label = "system"; + reg = <0x140000 0>; + };
I assumed that you would use the new partition binding now. Can you make the barebox partition bigger? That makes sure that future barebox images will fit into it.
Sascha
Signature · 9 lines
Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox