On 4/18/19 5:01 PM, Niel Fourie wrote:
> Support for Phytech phyCORE AM335x R2 SOM (PCL060) on the Phytec
> phyBOARD-Wega AM335x.
> 
> CPU  : AM335X-GP rev 2.1
> Model: Phytec AM335x phyBOARD-WEGA
> DRAM:  256 MiB
> NAND:  256 MiB
> MMC:   OMAP SD/MMC: 0
> eth0: ethernet@4a100000
> 
> Working:
>  - Eth0
>  - i2C
>  - MMC/SD
>  - NAND
>  - UART
>  - USB (host)
> 
> Signed-off-by: Niel Fourie <[email protected]>
> ---
>  arch/arm/dts/Makefile                    |   3 +-
>  arch/arm/dts/am335x-phycore-som.dtsi     | 327 ++++++++++++++++++++++
>  arch/arm/dts/am335x-wega-rdk-u-boot.dtsi |  35 +++
>  arch/arm/dts/am335x-wega-rdk.dts         |  23 ++
>  arch/arm/dts/am335x-wega.dtsi            | 231 +++++++++++++++

The DTs come from Linux kernel, but which version of Linux ?
Which exact commit ? Did you modify them in any way ?

[...]

> diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
> index d29f1ca0b5..9336439340 100644
> --- a/arch/arm/mach-omap2/Kconfig
> +++ b/arch/arm/mach-omap2/Kconfig
> @@ -186,6 +186,7 @@ source "board/ti/am43xx/Kconfig"
>  source "board/ti/am335x/Kconfig"
>  source "board/compulab/cm_t335/Kconfig"
>  source "board/compulab/cm_t43/Kconfig"
> +source "board/phytec/phycore_pcl060/Kconfig"

Here [1] it says the name of the SoM is PCM-060 , what is PCL-060 ?

[1]
https://www.phytec.eu/product-eu/system-on-modules/phycore-am335x-download/
 [...]

> diff --git a/board/phytec/phycore_pcl060/Kconfig 
> b/board/phytec/phycore_pcl060/Kconfig
> new file mode 100644
> index 0000000000..bdd1a9b6e0
> --- /dev/null
> +++ b/board/phytec/phycore_pcl060/Kconfig
> @@ -0,0 +1,19 @@
> +if TARGET_PCL060
> +
> +config SYS_BOARD
> +     default "phycore_pcl060"
> +
> +config SYS_VENDOR
> +     default "phytec"
> +
> +config SYS_SOC
> +     default "am33xx"
> +
> +config SYS_CONFIG_NAME
> +     default "phycore_pcl060"
> +
> +config PCL060_DDR_SIZE
> +     int "DDR size (in MiB) of Phycore PCL060 module"
> +     default 256

DRAM size should come from DT, we don't need another custom config
option. Look at fdtdec_setup_mem_size_base() and
fdtdec_setup_memory_banksize().

[...]

> diff --git a/board/phytec/phycore_pcl060/board.c 
> b/board/phytec/phycore_pcl060/board.c
> new file mode 100644
> index 0000000000..01fe13e959
> --- /dev/null
> +++ b/board/phytec/phycore_pcl060/board.c
> @@ -0,0 +1,340 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * board.c
> + *
> + * Board functions for Phytec phyCORE-AM335x R2 (pcl060) based boards
> + *
> + * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
> + * Copyright (C) 2013 Lars Poeschel, Lemonage Software GmbH
> + * Copyright (C) 2015 Wadim Egorov, PHYTEC Messtechnik GmbH
> + * Copyright (C) 2019 DENX Software Engineering GmbH
> + */
> +
> +#include <common.h>
> +#include <environment.h>
> +#include <errno.h>
> +#include <spl.h>
> +#include <asm/arch/cpu.h>
> +#include <asm/arch/hardware.h>
> +#include <asm/arch/omap.h>
> +#include <asm/arch/ddr_defs.h>
> +#include <asm/arch/clock.h>
> +#include <asm/arch/gpio.h>
> +#include <asm/arch/mmc_host_def.h>
> +#include <asm/arch/sys_proto.h>
> +#include <asm/io.h>
> +#include <asm/emif.h>
> +#include <asm/gpio.h>
> +#include <i2c.h>
> +#include <miiphy.h>
> +#include <cpsw.h>
> +#include <power/tps65910.h>
> +#include <jffs2/load_kernel.h>
> +#include <mtd_node.h>
> +#include <fdt_support.h>
> +#include "board.h"
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +static struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
> +
> +#ifdef CONFIG_SPL_BUILD
> +
> +#ifdef CONFIG_SPL_OS_BOOT

#if CONFIG_IS_ENABLED(OS_BOOT)

> +int spl_start_uboot(void)
> +{
> +     return 1;
> +}
> +#endif
> +/* DDR RAM defines */
> +#define DDR_CLK_MHZ          400 /* DDR_DPLL_MULT value */
> +
> +#define OSC  (V_OSCK / 1000000)
> +const struct dpll_params dpll_ddr = {
> +             DDR_CLK_MHZ, OSC - 1, 1, -1, -1, -1, -1};
> +
> +const struct dpll_params *get_dpll_ddr_params(void)
> +{
> +     return &dpll_ddr;
> +}
> +
> +const struct ctrl_ioregs ioregs = {
> +     .cm0ioctl               = 0x18B,
> +     .cm1ioctl               = 0x18B,
> +     .cm2ioctl               = 0x18B,
> +     .dt0ioctl               = 0x18B,
> +     .dt1ioctl               = 0x18B,
> +};
> +
> +static const struct cmd_control ddr3_cmd_ctrl_data = {
> +     .cmd0csratio = 0x80,
> +     .cmd0iclkout = 0x0,
> +
> +     .cmd1csratio = 0x80,
> +     .cmd1iclkout = 0x0,
> +
> +     .cmd2csratio = 0x80,
> +     .cmd2iclkout = 0x0,
> +};
> +
> +#if CONFIG_PCL060_DDR_SIZE == 256

Get the DRAM layout from DT and apply EMIF settings accordingly.

[...]

> diff --git a/include/configs/phycore_pcl060.h 
> b/include/configs/phycore_pcl060.h
> new file mode 100644
> index 0000000000..982c96b267
> --- /dev/null
> +++ b/include/configs/phycore_pcl060.h
> @@ -0,0 +1,141 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +/*
> + * phycore_pcl060.h
> + *
> + * Phytec phyCORE-AM335x (pcl060) boards information header
> + *
> + * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
> + * Copyright (C) 2013 Lars Poeschel, Lemonage Software GmbH
> + * Copyright (C) 2019 DENX Software Engineering GmbH
> + */
> +
> +#ifndef __CONFIG_PCL060_H
> +#define __CONFIG_PCL060_H
> +
> +#include <configs/ti_am335x_common.h>
> +
> +#define CONFIG_ENV_SIZE                      (128 << 10)     /* 128 KiB */
> +#define CONFIG_MACH_TYPE             MACH_TYPE_PCL060
> +#define CONFIG_SYS_MMC_ENV_DEV               0
> +#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION   1
> +
> +#ifdef CONFIG_NAND
> +#define NANDARGS \
> +     "mtdids=" CONFIG_MTDIDS_DEFAULT "\0" \
> +     "mtdparts=" CONFIG_MTDPARTS_DEFAULT "\0" \
> +     "nandargs=setenv bootargs console=${console} " \
> +             "${optargs} " \
> +             "root=${nandroot} " \
> +             "rootfstype=${nandrootfstype}\0" \
> +     "nandroot=ubi0:root ubi.mtd=NAND.UBI\0" \
> +     "nandrootfstype=ubifs rootwait rw fsck.repair=yes\0" \
> +     "nandboot=echo Booting from nand ...; " \
> +             "run nandargs; " \
> +             "ubi part NAND.UBI; " \
> +             "ubi readvol ${fdtaddr} oftree; " \
> +             "ubi readvol ${loadaddr} kernel; " \
> +             "bootz ${loadaddr} - ${fdtaddr}\0"
> +
> +#else
> +#define NANDARGS ""
> +#endif
> +
> +/* set to negative value for no autoboot */
> +#define BOOTENV_DEV_LEGACY_MMC(devtypeu, devtypel, instance) \
> +     "bootcmd_" #devtypel #instance "=" \
> +     "setenv mmcdev " #instance "; "\
> +     "setenv bootpart " #instance ":1 ; "\
> +     "setenv rootpart " #instance ":2 ; "\
> +     "run mmcboot\0"
> +
> +#define BOOTENV_DEV_NAME_LEGACY_MMC(devtypeu, devtypel, instance) \
> +     #devtypel #instance " "
> +
> +#define BOOTENV_DEV_NAND(devtypeu, devtypel, instance) \
> +     "bootcmd_" #devtypel #instance "=" \
> +     "run nandboot\0"
> +
> +#define BOOTENV_DEV_NAME_NAND(devtypeu, devtypel, instance) \
> +     #devtypel #instance " "
> +
> +#define BOOT_TARGET_DEVICES(func) \
> +     func(MMC, mmc, 0) \
> +     func(LEGACY_MMC, legacy_mmc, 0) \
> +     func(MMC, mmc, 1) \
> +     func(LEGACY_MMC, legacy_mmc, 1) \
> +     func(NAND, nand, 0)
> +
> +#include <config_distro_bootcmd.h>
> +#include <environment/ti/dfu.h>
> +#include <environment/ti/mmc.h>
> +
> +#define CONFIG_EXTRA_ENV_SETTINGS \
> +     DEFAULT_MMC_TI_ARGS \
> +     DEFAULT_LINUX_BOOT_ENV \
> +     "bootfile=zImage\0" \
> +     "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
> +     "console=ttyO0,115200n8\0" \
> +     "optargs=\0" \
> +     "mmcrootfstype=ext2 rootwait\0" \
> +     "finduuid=part uuid mmc ${rootpart} uuid\0" \
> +     "boot_fit=0\0" \
> +     NANDARGS \
> +     BOOTENV
> +
> +/* Clock Defines */
> +#define V_OSCK                               25000000  /* Clock output from 
> T2 */
> +#define V_SCLK                               (V_OSCK)
> +
> +#define CONFIG_POWER_TPS65910
> +
> +#ifdef CONFIG_NAND
> +/* NAND: device related configs */
> +#define CONFIG_SYS_NAND_5_ADDR_CYCLE
> +#define CONFIG_SYS_NAND_PAGE_COUNT   (CONFIG_SYS_NAND_BLOCK_SIZE / \
> +                                      CONFIG_SYS_NAND_PAGE_SIZE)
> +#define CONFIG_SYS_NAND_PAGE_SIZE    2048
> +#define CONFIG_SYS_NAND_OOBSIZE              64
> +#define CONFIG_SYS_NAND_BLOCK_SIZE   (128 * 1024)
> +/* NAND: driver related configs */
> +#define CONFIG_SYS_NAND_BAD_BLOCK_POS        NAND_LARGE_BADBLOCK_POS
> +#define CONFIG_SYS_NAND_ECCPOS               { 2, 3, 4, 5, 6, 7, 8, 9, \
> +                                      10, 11, 12, 13, 14, 15, 16, 17, \
> +                                      18, 19, 20, 21, 22, 23, 24, 25, \
> +                                      26, 27, 28, 29, 30, 31, 32, 33, \
> +                                      34, 35, 36, 37, 38, 39, 40, 41, \
> +                                      42, 43, 44, 45, 46, 47, 48, 49, \
> +                                      50, 51, 52, 53, 54, 55, 56, 57, }
> +
> +#define CONFIG_SYS_NAND_ECCSIZE              512
> +#define CONFIG_SYS_NAND_ECCBYTES     14
> +#define CONFIG_SYS_NAND_ONFI_DETECTION
> +#define CONFIG_NAND_OMAP_ECCSCHEME   OMAP_ECC_BCH8_CODE_HW
> +
> +/* NAND: SPL related configs */
> +#ifdef CONFIG_SPL_OS_BOOT
> +#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS      0x00200000 /* kernel offset */
> +#endif
> +#endif /* !CONFIG_NAND */
> +
> +#define CONFIG_SYS_BAUDRATE_TABLE    { 110, 300, 600, 1200, 2400, \
> +4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200 }

I think there's a default value for that in include/config_fallbacks.h ,
why do you override it here ?

> +/* CPU */
> +
> +#ifdef CONFIG_SPI_BOOT
> +#define CONFIG_SYS_SPI_U_BOOT_OFFS   0x20000
> +#define CONFIG_SYS_SPI_U_BOOT_SIZE   0x40000
> +#elif defined(CONFIG_ENV_IS_IN_NAND)
> +#define CONFIG_ENV_OFFSET            0x000a0000
> +#define CONFIG_SYS_ENV_SECT_SIZE     CONFIG_SYS_NAND_BLOCK_SIZE
> +#endif
> +
> +/*
> + * USB configuration
> + */
> +#define CONFIG_AM335X_USB0
> +#define CONFIG_AM335X_USB0_MODE      MUSB_PERIPHERAL
> +#define CONFIG_AM335X_USB1
> +#define CONFIG_AM335X_USB1_MODE MUSB_HOST

Can't the USB settings be extracted from DT ?

-- 
Best regards,
Marek Vasut
_______________________________________________
U-Boot mailing list
[email protected]
https://lists.denx.de/listinfo/u-boot

Reply via email to