diff mbox

[U-Boot,v4,6/8] mips: ath79: add AP121 reference board

Message ID BLU436-SMTP10517CACE735D7A1BB56998FFF80@phx.gbl
State Superseded
Delegated to: Daniel Schwierzeck
Headers show

Commit Message

Wills Wang Dec. 25, 2015, 6:56 p.m. UTC
Signed-off-by: Wills Wang <wills.wang@live.com>
---

Changes in v4: None
Changes in v3: None
Changes in v2: None

 arch/mips/Kconfig             |  8 +++++
 arch/mips/dts/Makefile        |  2 +-
 arch/mips/dts/ap121.dts       | 37 +++++++++++++++++++
 arch/mips/dts/ar933x.dtsi     | 64 +++++++++++++++++++++++++++++++++
 board/ath79/ap121/Kconfig     | 15 ++++++++
 board/ath79/ap121/MAINTAINERS |  6 ++++
 board/ath79/ap121/Makefile    |  8 +++++
 board/ath79/ap121/README      | 18 ++++++++++
 board/ath79/ap121/ap121.c     | 17 +++++++++
 board/ath79/ap121/config.mk   | 16 +++++++++
 configs/ap121_defconfig       | 42 ++++++++++++++++++++++
 include/configs/ap121.h       | 82 +++++++++++++++++++++++++++++++++++++++++++
 12 files changed, 314 insertions(+), 1 deletion(-)
 create mode 100644 arch/mips/dts/ap121.dts
 create mode 100644 arch/mips/dts/ar933x.dtsi
 create mode 100644 board/ath79/ap121/Kconfig
 create mode 100644 board/ath79/ap121/MAINTAINERS
 create mode 100644 board/ath79/ap121/Makefile
 create mode 100644 board/ath79/ap121/README
 create mode 100644 board/ath79/ap121/ap121.c
 create mode 100644 board/ath79/ap121/config.mk
 create mode 100644 configs/ap121_defconfig
 create mode 100644 include/configs/ap121.h

Comments

Daniel Schwierzeck Dec. 26, 2015, 1:52 p.m. UTC | #1
Am 25.12.2015 um 19:56 schrieb Wills Wang:
> Signed-off-by: Wills Wang <wills.wang@live.com>
> ---
> 
> Changes in v4: None
> Changes in v3: None
> Changes in v2: None
> 
>  arch/mips/Kconfig             |  8 +++++
>  arch/mips/dts/Makefile        |  2 +-
>  arch/mips/dts/ap121.dts       | 37 +++++++++++++++++++
>  arch/mips/dts/ar933x.dtsi     | 64 +++++++++++++++++++++++++++++++++
>  board/ath79/ap121/Kconfig     | 15 ++++++++
>  board/ath79/ap121/MAINTAINERS |  6 ++++
>  board/ath79/ap121/Makefile    |  8 +++++
>  board/ath79/ap121/README      | 18 ++++++++++
>  board/ath79/ap121/ap121.c     | 17 +++++++++
>  board/ath79/ap121/config.mk   | 16 +++++++++
>  configs/ap121_defconfig       | 42 ++++++++++++++++++++++
>  include/configs/ap121.h       | 82 +++++++++++++++++++++++++++++++++++++++++++
>  12 files changed, 314 insertions(+), 1 deletion(-)
>  create mode 100644 arch/mips/dts/ap121.dts
>  create mode 100644 arch/mips/dts/ar933x.dtsi
>  create mode 100644 board/ath79/ap121/Kconfig
>  create mode 100644 board/ath79/ap121/MAINTAINERS
>  create mode 100644 board/ath79/ap121/Makefile
>  create mode 100644 board/ath79/ap121/README
>  create mode 100644 board/ath79/ap121/ap121.c
>  create mode 100644 board/ath79/ap121/config.mk
>  create mode 100644 configs/ap121_defconfig
>  create mode 100644 include/configs/ap121.h
> 
> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
> index 7f7e258..09b8709 100644
> --- a/arch/mips/Kconfig
> +++ b/arch/mips/Kconfig
> @@ -51,6 +51,13 @@ config TARGET_PB1X00
>  	select SUPPORTS_CPU_MIPS32_R2
>  	select SYS_MIPS_CACHE_INIT_RAM_LOAD
>  
> +config TARGET_AP121
> +	bool "Support ap121"
> +	select SUPPORTS_BIG_ENDIAN
> +	select SUPPORTS_CPU_MIPS32_R1
> +	select SUPPORTS_CPU_MIPS32_R2
> +	select SYS_MIPS_CACHE_INIT_RAM_LOAD
> +

please create a dedicated Kconfig in arch/mips/mach-ath79/ and add this
board there. Have a look at following links for examples:

https://github.com/danielschwierzeck/u-boot-lantiq/blob/lantiq/upstream/arch/mips/mach-lantiq/Kconfig

http://patchwork.ozlabs.org/patch/558465/
http://patchwork.ozlabs.org/patch/558469/

>  
>  endchoice
>  
> @@ -59,6 +66,7 @@ source "board/imgtec/malta/Kconfig"
>  source "board/micronas/vct/Kconfig"
>  source "board/pb1x00/Kconfig"
>  source "board/qemu-mips/Kconfig"
> +source "board/ath79/ap121/Kconfig"
>  
>  if MIPS
>  
> diff --git a/arch/mips/dts/Makefile b/arch/mips/dts/Makefile
> index 47b6eb5..6f8b413 100644
> --- a/arch/mips/dts/Makefile
> +++ b/arch/mips/dts/Makefile
> @@ -2,7 +2,7 @@
>  # SPDX-License-Identifier:	GPL-2.0+
>  #
>  
> -dtb-y +=
> +dtb-$(CONFIG_TARGET_AP121) += ap121.dtb
>  
>  targets += $(dtb-y)
>  
> diff --git a/arch/mips/dts/ap121.dts b/arch/mips/dts/ap121.dts
> new file mode 100644
> index 0000000..769458a
> --- /dev/null
> +++ b/arch/mips/dts/ap121.dts
> @@ -0,0 +1,37 @@
> +/dts-v1/;
> +#include "ar933x.dtsi"
> +
> +/ {
> +	model = "AP121 Reference Board";
> +	compatible = "ath79,ap121", "ath79,ar933x";
> +
> +	aliases {
> +		spi0 = &spi0;
> +		serial0 = &uart0;
> +	};
> +
> +	chosen {
> +		stdout-path = "serial0:115200n8";
> +	};
> +};
> +
> +&xtal {
> +	clock-frequency = <25000000>;
> +};
> +
> +&uart0 {
> +	status = "okay";
> +};
> +
> +&spi0 {
> +	spi-max-frequency = <25000000>;
> +	status = "okay";
> +	spi-flash@0 {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		compatible = "spi-flash";
> +		memory-map = <0x9f000000 0x00800000>;
> +		spi-max-frequency = <25000000>;
> +		reg = <0>;
> +	};
> +};
> diff --git a/arch/mips/dts/ar933x.dtsi b/arch/mips/dts/ar933x.dtsi
> new file mode 100644
> index 0000000..64b30f7
> --- /dev/null
> +++ b/arch/mips/dts/ar933x.dtsi
> @@ -0,0 +1,64 @@
> +#include "skeleton.dtsi"
> +
> +/ {
> +	compatible = "ath79,ar933x";

the first part should be a vendor name and according to device-trees
from kernel this should be "qca"

> +
> +	#address-cells = <1>;
> +	#size-cells = <1>;
> +
> +	cpus {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		cpu@0 {
> +			device_type = "cpu";
> +			compatible = "mips,mips24Kc";
> +			reg = <0>;
> +		};
> +	};
> +
> +	clocks {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges;
> +
> +		xtal: xtal {
> +			#clock-cells = <0>;
> +			compatible = "fixed-clock";
> +			clock-output-names = "xtal";
> +		};
> +	};
> +
> +	ahb {
> +		compatible = "simple-bus";
> +		ranges;
> +
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +
> +		apb {
> +			compatible = "simple-bus";
> +			ranges;
> +
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +
> +			uart0: uart@18020000 {
> +				compatible = "ath79,ar933x-uart";

I suggest to use "qca,ar9330-uart" like the kernel driver

> +				reg = <0x18020000 0x20>;
> +
> +				status = "disabled";
> +			};
> +		};
> +
> +		spi0: spi@1f000000 {
> +			compatible = "ath79,ath79-spi";

I suggest to use "qca,ar7100-spi" like the kernel driver

> +			reg = <0x1f000000 0x10>;
> +
> +			status = "disabled";
> +
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +		};
> +	};
> +};
> diff --git a/board/ath79/ap121/Kconfig b/board/ath79/ap121/Kconfig
> new file mode 100644
> index 0000000..88d9eff
> --- /dev/null
> +++ b/board/ath79/ap121/Kconfig
> @@ -0,0 +1,15 @@
> +if TARGET_AP121
> +
> +config SYS_BOARD
> +	default "ap121"
> +
> +config SYS_VENDOR
> +	default "ath79"
> +
> +config SYS_SOC
> +	default "ath79"
> +
> +config SYS_CONFIG_NAME
> +	default "ap121"
> +
> +endif
> diff --git a/board/ath79/ap121/MAINTAINERS b/board/ath79/ap121/MAINTAINERS
> new file mode 100644
> index 0000000..319b521
> --- /dev/null
> +++ b/board/ath79/ap121/MAINTAINERS
> @@ -0,0 +1,6 @@
> +AP121 BOARD
> +M:	Wills Wang <wills.wang@live.com>
> +S:	Maintained
> +F:	board/ath79/ap121/
> +F:	include/configs/ap121.h
> +F:	configs/ap121_defconfig
> diff --git a/board/ath79/ap121/Makefile b/board/ath79/ap121/Makefile
> new file mode 100644
> index 0000000..9132118
> --- /dev/null
> +++ b/board/ath79/ap121/Makefile
> @@ -0,0 +1,8 @@
> +#
> +# (C) Copyright 2003-2006
> +# Wolfgang Denk, DENX Software Engineering, wd@denx.de.

again, no historic copyright needed for a simple one-line Makefile

> +#
> +# SPDX-License-Identifier:	GPL-2.0+
> +#
> +
> +obj-y	= ap121.o
> diff --git a/board/ath79/ap121/README b/board/ath79/ap121/README
> new file mode 100644
> index 0000000..104850f
> --- /dev/null
> +++ b/board/ath79/ap121/README
> @@ -0,0 +1,18 @@
> +ATHEROS AP121
> +==================
> +
> +Supported hardware: AP121 referance board.
> +
> +Files of the AP121 port
> +--------------------------
> +
> +arch/mips/mach-ath79/ar933x/	- The CPU support code for the Atheros ar933x
> +arch/mips/include/asm/arch-ath79	- Header files for the Atheros ath79
> +board/ath79/ap121/	- AP121 board specific files
> +include/configs/ap121.h	- AP121 configuration file
> +
> +Configure
> +-------------------
> +
> +To configure for the current board
> +	make ap121_defconfig

you can drop this README. There is no new or relevant information in it

> diff --git a/board/ath79/ap121/ap121.c b/board/ath79/ap121/ap121.c
> new file mode 100644
> index 0000000..f60f88b
> --- /dev/null
> +++ b/board/ath79/ap121/ap121.c
> @@ -0,0 +1,17 @@
> +/*
> + * (C) Copyright 2015
> + * Wills Wang, <wills.wang@live.com>
> + *
> + * SPDX-License-Identifier:	GPL-2.0+
> + */
> +
> +#include <common.h>
> +#include <command.h>
> +#include <asm/mipsregs.h>
> +#include <asm/addrspace.h>
> +#include <asm/io.h>
> +
> +int checkboard(void)
> +{
> +	return 0;
> +}

you could/should print your board name here

> diff --git a/board/ath79/ap121/config.mk b/board/ath79/ap121/config.mk
> new file mode 100644
> index 0000000..f7dd3b7
> --- /dev/null
> +++ b/board/ath79/ap121/config.mk
> @@ -0,0 +1,16 @@
> +#
> +# (C) Copyright 2003
> +# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
> +#
> +# SPDX-License-Identifier:	GPL-2.0+
> +#
> +
> +#
> +# AP121 referance board, MIPS32 core
> +#
> +
> +# ROM version
> +CONFIG_SYS_TEXT_BASE = 0x9f000000
> +
> +# RAM version
> +#CONFIG_SYS_TEXT_BASE = 0x80010000

config.mk files in board directory are also deprecated. Please add
"#define CONFIG_SYS_TEXT_BASE 0x9f000000" to include/configs/ap121.h

> diff --git a/configs/ap121_defconfig b/configs/ap121_defconfig
> new file mode 100644
> index 0000000..cec0bb7
> --- /dev/null
> +++ b/configs/ap121_defconfig
> @@ -0,0 +1,42 @@
> +CONFIG_MIPS=y
> +CONFIG_TARGET_AP121=y
> +CONFIG_SYS_MALLOC_F_LEN=0x2000
> +CONFIG_SYS_PROMPT="ap121 # "
> +CONFIG_OF_CONTROL=y
> +CONFIG_DEFAULT_DEVICE_TREE="ap121"
> +CONFIG_DM=y

options like CONFIG_OF_CONTROL and CONFIG_DM should be pre-selected by
the mach or SoC specific Kconfig file if you always require it. An user
of your board should not be able to disable those options.

> +CONFIG_DM_SERIAL=y
> +CONFIG_DM_SPI=y
> +CONFIG_DM_SPI_FLASH=y
> +CONFIG_ATH79_SPI=y
> +CONFIG_SPI_FLASH=y
> +CONFIG_SPI_FLASH_BAR=y
> +CONFIG_SPI_FLASH_ATMEL=y
> +CONFIG_SPI_FLASH_EON=y
> +CONFIG_SPI_FLASH_GIGADEVICE=y
> +CONFIG_SPI_FLASH_MACRONIX=y
> +CONFIG_SPI_FLASH_SPANSION=y
> +CONFIG_SPI_FLASH_STMICRO=y
> +CONFIG_SPI_FLASH_SST=y
> +CONFIG_SPI_FLASH_WINBOND=y
> +CONFIG_SPI_FLASH_USE_4K_SECTORS=y
> +CONFIG_SPI_FLASH_DATAFLASH=y
> +CONFIG_SPI_FLASH_MTD=y
> +CONFIG_CMD_DM=y
> +CONFIG_CMD_SF=y
> +CONFIG_CMD_SPI=y
> +# CONFIG_NET is not set
> +# CONFIG_CMD_BDI is not set
> +# CONFIG_CMD_CONSOLE is not set
> +# CONFIG_CMD_IMLS is not set
> +# CONFIG_CMD_XIMG is not set
> +# CONFIG_CMD_ELF is not set
> +# CONFIG_CMD_EXPORTENV is not set
> +# CONFIG_CMD_IMPORTENV is not set
> +# CONFIG_CMD_EDITENV is not set
> +# CONFIG_CMD_CRC32 is not set
> +# CONFIG_CMD_FLASH is not set
> +# CONFIG_CMD_FPGA is not set
> +# CONFIG_CMD_NFS is not set
> +# CONFIG_CMD_NET is not set
> +CONFIG_USE_PRIVATE_LIBGCC=y
> diff --git a/include/configs/ap121.h b/include/configs/ap121.h
> new file mode 100644
> index 0000000..5a01d11
> --- /dev/null
> +++ b/include/configs/ap121.h
> @@ -0,0 +1,82 @@
> +#ifndef __CONFIG_H
> +#define __CONFIG_H
> +
> +#include <linux/kconfig.h>
> +#include <linux/sizes.h>

those includes are not needed in a board config header file respectively
they are already included implicitely

> +
> +#define CONFIG_ARCH_ATH79
> +#define CONFIG_SOC_AR933X

this is already configured by Kconfig

> +
> +#define CONFIG_DISPLAY_CPUINFO
> +#define CONFIG_DISPLAY_BOARDINFO
> +
> +#define CONFIG_OF_LIBFDT
> +
> +#define CONFIG_SYS_HZ                   1000
> +#define CONFIG_SYS_MHZ                  200
> +#define CONFIG_SYS_MIPS_TIMER_FREQ      (CONFIG_SYS_MHZ * 1000000)
> +
> +/* Cache Configuration */
> +#define CONFIG_SYS_DCACHE_SIZE          32 * SZ_1K
> +#define CONFIG_SYS_ICACHE_SIZE          64 * SZ_1K
> +#define CONFIG_SYS_CACHELINE_SIZE       32

you can drop this, the cache sizes will be detected automatically

> +
> +#define CONFIG_SYS_MONITOR_BASE         CONFIG_SYS_TEXT_BASE
> +
> +#define CONFIG_SYS_MALLOC_LEN           ROUND(0x30000 + 128 * SZ_1K, 0x1000)

no need for a magic calculation, please choose a fixed value

> +
> +#define CONFIG_SYS_BOOTPARAMS_LEN       128 * SZ_1K
> +
> +#define CONFIG_SYS_SDRAM_BASE           0x80000000
> +#define CONFIG_SYS_LOAD_ADDR            0x81000000
> +
> +#define CONFIG_SYS_INIT_SP_OFFSET       0x20000
> +#define CONFIG_SYS_NO_FLASH
> +
> +#define CONFIG_AR933X_SERIAL

this is already configured by Kconfig

> +#define CONFIG_BAUDRATE                 115200
> +#define CONFIG_SYS_BAUDRATE_TABLE       {9600, 19200, 38400, 57600, 115200}
> +
> +#define CONFIG_BOOTDELAY                3
> +#define CONFIG_BOOTARGS                 "console=ttyS0,115200 " \
> +					"root=/dev/mtdblock2 " \
> +					"rootfstype=squashfs"
> +#define CONFIG_BOOTCOMMAND              "sf probe;" \
> +					"mtdparts default;" \
> +					"bootm 0x9f300000"
> +#define CONFIG_LZMA
> +
> +#define MTDIDS_DEFAULT                  "nor0=spi-flash.0"
> +#define MTDPARTS_DEFAULT                "mtdparts=spi-flash.0:256k(u-boot)," \
> +		"64k(u-boot-env),2752k(rootfs),896k(uImage),64k(NVRAM),64k(ART)"
> +
> +#define CONFIG_ENV_SPI_MAX_HZ           25000000
> +#define CONFIG_ENV_IS_IN_SPI_FLASH
> +#define CONFIG_ENV_OFFSET               (256 * SZ_1K)
> +#define CONFIG_ENV_SECT_SIZE            (64 * SZ_1K)
> +#define CONFIG_ENV_SIZE                 (64 * SZ_1K)
> +
> +/*
> + * Command
> + */
> +#define CONFIG_CMD_MTDPARTS
> +
> +/* Miscellaneous configurable options */
> +#define CONFIG_SYS_CBSIZE               256
> +#define CONFIG_SYS_MAXARGS              16
> +#define CONFIG_SYS_PBSIZE               (CONFIG_SYS_CBSIZE + \
> +					sizeof(CONFIG_SYS_PROMPT) + 16)
> +#define CONFIG_SYS_LONGHELP
> +#define CONFIG_CMDLINE_EDITING
> +#define CONFIG_AUTO_COMPLETE
> +#define CONFIG_SYS_HUSH_PARSER
> +#define CONFIG_SYS_PROMPT_HUSH_PS2      "> "

this is already configured by Kconfig

> +
> +/*
> + * Diagnostics
> + */
> +#define CONFIG_SYS_MEMTEST_START        0x80100000
> +#define CONFIG_SYS_MEMTEST_END          0x83f00000
> +#define CONFIG_CMD_MEMTEST
> +
> +#endif  /* __CONFIG_H */
>
Wills Wang Dec. 26, 2015, 4:59 p.m. UTC | #2
On 12/26/2015 09:52 PM, Daniel Schwierzeck wrote:
>
> Am 25.12.2015 um 19:56 schrieb Wills Wang:
>> Signed-off-by: Wills Wang <wills.wang@live.com>
>> ---
>>
>> Changes in v4: None
>> Changes in v3: None
>> Changes in v2: None
>>
>>   arch/mips/Kconfig             |  8 +++++
>>   arch/mips/dts/Makefile        |  2 +-
>>   arch/mips/dts/ap121.dts       | 37 +++++++++++++++++++
>>   arch/mips/dts/ar933x.dtsi     | 64 +++++++++++++++++++++++++++++++++
>>   board/ath79/ap121/Kconfig     | 15 ++++++++
>>   board/ath79/ap121/MAINTAINERS |  6 ++++
>>   board/ath79/ap121/Makefile    |  8 +++++
>>   board/ath79/ap121/README      | 18 ++++++++++
>>   board/ath79/ap121/ap121.c     | 17 +++++++++
>>   board/ath79/ap121/config.mk   | 16 +++++++++
>>   configs/ap121_defconfig       | 42 ++++++++++++++++++++++
>>   include/configs/ap121.h       | 82 +++++++++++++++++++++++++++++++++++++++++++
>>   12 files changed, 314 insertions(+), 1 deletion(-)
>>   create mode 100644 arch/mips/dts/ap121.dts
>>   create mode 100644 arch/mips/dts/ar933x.dtsi
>>   create mode 100644 board/ath79/ap121/Kconfig
>>   create mode 100644 board/ath79/ap121/MAINTAINERS
>>   create mode 100644 board/ath79/ap121/Makefile
>>   create mode 100644 board/ath79/ap121/README
>>   create mode 100644 board/ath79/ap121/ap121.c
>>   create mode 100644 board/ath79/ap121/config.mk
>>   create mode 100644 configs/ap121_defconfig
>>   create mode 100644 include/configs/ap121.h
>>
>> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
>> index 7f7e258..09b8709 100644
>> --- a/arch/mips/Kconfig
>> +++ b/arch/mips/Kconfig
>> @@ -51,6 +51,13 @@ config TARGET_PB1X00
>>   	select SUPPORTS_CPU_MIPS32_R2
>>   	select SYS_MIPS_CACHE_INIT_RAM_LOAD
>>   
>> +config TARGET_AP121
>> +	bool "Support ap121"
>> +	select SUPPORTS_BIG_ENDIAN
>> +	select SUPPORTS_CPU_MIPS32_R1
>> +	select SUPPORTS_CPU_MIPS32_R2
>> +	select SYS_MIPS_CACHE_INIT_RAM_LOAD
>> +
> please create a dedicated Kconfig in arch/mips/mach-ath79/ and add this
> board there. Have a look at following links for examples:
>
> https://github.com/danielschwierzeck/u-boot-lantiq/blob/lantiq/upstream/arch/mips/mach-lantiq/Kconfig
>
> http://patchwork.ozlabs.org/patch/558465/
> http://patchwork.ozlabs.org/patch/558469/
Ok.
>>   
>>   endchoice
>>   
>> @@ -59,6 +66,7 @@ source "board/imgtec/malta/Kconfig"
>>   source "board/micronas/vct/Kconfig"
>>   source "board/pb1x00/Kconfig"
>>   source "board/qemu-mips/Kconfig"
>> +source "board/ath79/ap121/Kconfig"
>>   
>>   if MIPS
>>   
>> diff --git a/arch/mips/dts/Makefile b/arch/mips/dts/Makefile
>> index 47b6eb5..6f8b413 100644
>> --- a/arch/mips/dts/Makefile
>> +++ b/arch/mips/dts/Makefile
>> @@ -2,7 +2,7 @@
>>   # SPDX-License-Identifier:	GPL-2.0+
>>   #
>>   
>> -dtb-y +=
>> +dtb-$(CONFIG_TARGET_AP121) += ap121.dtb
>>   
>>   targets += $(dtb-y)
>>   
>> diff --git a/arch/mips/dts/ap121.dts b/arch/mips/dts/ap121.dts
>> new file mode 100644
>> index 0000000..769458a
>> --- /dev/null
>> +++ b/arch/mips/dts/ap121.dts
>> @@ -0,0 +1,37 @@
>> +/dts-v1/;
>> +#include "ar933x.dtsi"
>> +
>> +/ {
>> +	model = "AP121 Reference Board";
>> +	compatible = "ath79,ap121", "ath79,ar933x";
>> +
>> +	aliases {
>> +		spi0 = &spi0;
>> +		serial0 = &uart0;
>> +	};
>> +
>> +	chosen {
>> +		stdout-path = "serial0:115200n8";
>> +	};
>> +};
>> +
>> +&xtal {
>> +	clock-frequency = <25000000>;
>> +};
>> +
>> +&uart0 {
>> +	status = "okay";
>> +};
>> +
>> +&spi0 {
>> +	spi-max-frequency = <25000000>;
>> +	status = "okay";
>> +	spi-flash@0 {
>> +		#address-cells = <1>;
>> +		#size-cells = <1>;
>> +		compatible = "spi-flash";
>> +		memory-map = <0x9f000000 0x00800000>;
>> +		spi-max-frequency = <25000000>;
>> +		reg = <0>;
>> +	};
>> +};
>> diff --git a/arch/mips/dts/ar933x.dtsi b/arch/mips/dts/ar933x.dtsi
>> new file mode 100644
>> index 0000000..64b30f7
>> --- /dev/null
>> +++ b/arch/mips/dts/ar933x.dtsi
>> @@ -0,0 +1,64 @@
>> +#include "skeleton.dtsi"
>> +
>> +/ {
>> +	compatible = "ath79,ar933x";
> the first part should be a vendor name and according to device-trees
> from kernel this should be "qca"
Ok.
>> +
>> +	#address-cells = <1>;
>> +	#size-cells = <1>;
>> +
>> +	cpus {
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +
>> +		cpu@0 {
>> +			device_type = "cpu";
>> +			compatible = "mips,mips24Kc";
>> +			reg = <0>;
>> +		};
>> +	};
>> +
>> +	clocks {
>> +		#address-cells = <1>;
>> +		#size-cells = <1>;
>> +		ranges;
>> +
>> +		xtal: xtal {
>> +			#clock-cells = <0>;
>> +			compatible = "fixed-clock";
>> +			clock-output-names = "xtal";
>> +		};
>> +	};
>> +
>> +	ahb {
>> +		compatible = "simple-bus";
>> +		ranges;
>> +
>> +		#address-cells = <1>;
>> +		#size-cells = <1>;
>> +
>> +		apb {
>> +			compatible = "simple-bus";
>> +			ranges;
>> +
>> +			#address-cells = <1>;
>> +			#size-cells = <1>;
>> +
>> +			uart0: uart@18020000 {
>> +				compatible = "ath79,ar933x-uart";
> I suggest to use "qca,ar9330-uart" like the kernel driver
>
Ok.
>> +				reg = <0x18020000 0x20>;
>> +
>> +				status = "disabled";
>> +			};
>> +		};
>> +
>> +		spi0: spi@1f000000 {
>> +			compatible = "ath79,ath79-spi";
> I suggest to use "qca,ar7100-spi" like the kernel driver
Ok.
>> +			reg = <0x1f000000 0x10>;
>> +
>> +			status = "disabled";
>> +
>> +			#address-cells = <1>;
>> +			#size-cells = <0>;
>> +		};
>> +	};
>> +};
>> diff --git a/board/ath79/ap121/Kconfig b/board/ath79/ap121/Kconfig
>> new file mode 100644
>> index 0000000..88d9eff
>> --- /dev/null
>> +++ b/board/ath79/ap121/Kconfig
>> @@ -0,0 +1,15 @@
>> +if TARGET_AP121
>> +
>> +config SYS_BOARD
>> +	default "ap121"
>> +
>> +config SYS_VENDOR
>> +	default "ath79"
>> +
>> +config SYS_SOC
>> +	default "ath79"
>> +
>> +config SYS_CONFIG_NAME
>> +	default "ap121"
>> +
>> +endif
>> diff --git a/board/ath79/ap121/MAINTAINERS b/board/ath79/ap121/MAINTAINERS
>> new file mode 100644
>> index 0000000..319b521
>> --- /dev/null
>> +++ b/board/ath79/ap121/MAINTAINERS
>> @@ -0,0 +1,6 @@
>> +AP121 BOARD
>> +M:	Wills Wang <wills.wang@live.com>
>> +S:	Maintained
>> +F:	board/ath79/ap121/
>> +F:	include/configs/ap121.h
>> +F:	configs/ap121_defconfig
>> diff --git a/board/ath79/ap121/Makefile b/board/ath79/ap121/Makefile
>> new file mode 100644
>> index 0000000..9132118
>> --- /dev/null
>> +++ b/board/ath79/ap121/Makefile
>> @@ -0,0 +1,8 @@
>> +#
>> +# (C) Copyright 2003-2006
>> +# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
> again, no historic copyright needed for a simple one-line Makefile
Ok.
>> +#
>> +# SPDX-License-Identifier:	GPL-2.0+
>> +#
>> +
>> +obj-y	= ap121.o
>> diff --git a/board/ath79/ap121/README b/board/ath79/ap121/README
>> new file mode 100644
>> index 0000000..104850f
>> --- /dev/null
>> +++ b/board/ath79/ap121/README
>> @@ -0,0 +1,18 @@
>> +ATHEROS AP121
>> +==================
>> +
>> +Supported hardware: AP121 referance board.
>> +
>> +Files of the AP121 port
>> +--------------------------
>> +
>> +arch/mips/mach-ath79/ar933x/	- The CPU support code for the Atheros ar933x
>> +arch/mips/include/asm/arch-ath79	- Header files for the Atheros ath79
>> +board/ath79/ap121/	- AP121 board specific files
>> +include/configs/ap121.h	- AP121 configuration file
>> +
>> +Configure
>> +-------------------
>> +
>> +To configure for the current board
>> +	make ap121_defconfig
> you can drop this README. There is no new or relevant information in it
>
Ok.
>> diff --git a/board/ath79/ap121/ap121.c b/board/ath79/ap121/ap121.c
>> new file mode 100644
>> index 0000000..f60f88b
>> --- /dev/null
>> +++ b/board/ath79/ap121/ap121.c
>> @@ -0,0 +1,17 @@
>> +/*
>> + * (C) Copyright 2015
>> + * Wills Wang, <wills.wang@live.com>
>> + *
>> + * SPDX-License-Identifier:	GPL-2.0+
>> + */
>> +
>> +#include <common.h>
>> +#include <command.h>
>> +#include <asm/mipsregs.h>
>> +#include <asm/addrspace.h>
>> +#include <asm/io.h>
>> +
>> +int checkboard(void)
>> +{
>> +	return 0;
>> +}
> you could/should print your board name here
U-boot print the board model property from device tree when power up,
I think it's duplicated.
>> diff --git a/board/ath79/ap121/config.mk b/board/ath79/ap121/config.mk
>> new file mode 100644
>> index 0000000..f7dd3b7
>> --- /dev/null
>> +++ b/board/ath79/ap121/config.mk
>> @@ -0,0 +1,16 @@
>> +#
>> +# (C) Copyright 2003
>> +# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
>> +#
>> +# SPDX-License-Identifier:	GPL-2.0+
>> +#
>> +
>> +#
>> +# AP121 referance board, MIPS32 core
>> +#
>> +
>> +# ROM version
>> +CONFIG_SYS_TEXT_BASE = 0x9f000000
>> +
>> +# RAM version
>> +#CONFIG_SYS_TEXT_BASE = 0x80010000
> config.mk files in board directory are also deprecated. Please add
> "#define CONFIG_SYS_TEXT_BASE 0x9f000000" to include/configs/ap121.h
Ok.
>> diff --git a/configs/ap121_defconfig b/configs/ap121_defconfig
>> new file mode 100644
>> index 0000000..cec0bb7
>> --- /dev/null
>> +++ b/configs/ap121_defconfig
>> @@ -0,0 +1,42 @@
>> +CONFIG_MIPS=y
>> +CONFIG_TARGET_AP121=y
>> +CONFIG_SYS_MALLOC_F_LEN=0x2000
>> +CONFIG_SYS_PROMPT="ap121 # "
>> +CONFIG_OF_CONTROL=y
>> +CONFIG_DEFAULT_DEVICE_TREE="ap121"
>> +CONFIG_DM=y
> options like CONFIG_OF_CONTROL and CONFIG_DM should be pre-selected by
> the mach or SoC specific Kconfig file if you always require it. An user
> of your board should not be able to disable those options.
>
Ok.
>> +CONFIG_DM_SERIAL=y
>> +CONFIG_DM_SPI=y
>> +CONFIG_DM_SPI_FLASH=y
>> +CONFIG_ATH79_SPI=y
>> +CONFIG_SPI_FLASH=y
>> +CONFIG_SPI_FLASH_BAR=y
>> +CONFIG_SPI_FLASH_ATMEL=y
>> +CONFIG_SPI_FLASH_EON=y
>> +CONFIG_SPI_FLASH_GIGADEVICE=y
>> +CONFIG_SPI_FLASH_MACRONIX=y
>> +CONFIG_SPI_FLASH_SPANSION=y
>> +CONFIG_SPI_FLASH_STMICRO=y
>> +CONFIG_SPI_FLASH_SST=y
>> +CONFIG_SPI_FLASH_WINBOND=y
>> +CONFIG_SPI_FLASH_USE_4K_SECTORS=y
>> +CONFIG_SPI_FLASH_DATAFLASH=y
>> +CONFIG_SPI_FLASH_MTD=y
>> +CONFIG_CMD_DM=y
>> +CONFIG_CMD_SF=y
>> +CONFIG_CMD_SPI=y
>> +# CONFIG_NET is not set
>> +# CONFIG_CMD_BDI is not set
>> +# CONFIG_CMD_CONSOLE is not set
>> +# CONFIG_CMD_IMLS is not set
>> +# CONFIG_CMD_XIMG is not set
>> +# CONFIG_CMD_ELF is not set
>> +# CONFIG_CMD_EXPORTENV is not set
>> +# CONFIG_CMD_IMPORTENV is not set
>> +# CONFIG_CMD_EDITENV is not set
>> +# CONFIG_CMD_CRC32 is not set
>> +# CONFIG_CMD_FLASH is not set
>> +# CONFIG_CMD_FPGA is not set
>> +# CONFIG_CMD_NFS is not set
>> +# CONFIG_CMD_NET is not set
>> +CONFIG_USE_PRIVATE_LIBGCC=y
>> diff --git a/include/configs/ap121.h b/include/configs/ap121.h
>> new file mode 100644
>> index 0000000..5a01d11
>> --- /dev/null
>> +++ b/include/configs/ap121.h
>> @@ -0,0 +1,82 @@
>> +#ifndef __CONFIG_H
>> +#define __CONFIG_H
>> +
>> +#include <linux/kconfig.h>
>> +#include <linux/sizes.h>
> those includes are not needed in a board config header file respectively
> they are already included implicitely
Ok.
>> +
>> +#define CONFIG_ARCH_ATH79
>> +#define CONFIG_SOC_AR933X
> this is already configured by Kconfig
>
Ok.
>> +
>> +#define CONFIG_DISPLAY_CPUINFO
>> +#define CONFIG_DISPLAY_BOARDINFO
>> +
>> +#define CONFIG_OF_LIBFDT
>> +
>> +#define CONFIG_SYS_HZ                   1000
>> +#define CONFIG_SYS_MHZ                  200
>> +#define CONFIG_SYS_MIPS_TIMER_FREQ      (CONFIG_SYS_MHZ * 1000000)
>> +
>> +/* Cache Configuration */
>> +#define CONFIG_SYS_DCACHE_SIZE          32 * SZ_1K
>> +#define CONFIG_SYS_ICACHE_SIZE          64 * SZ_1K
>> +#define CONFIG_SYS_CACHELINE_SIZE       32
> you can drop this, the cache sizes will be detected automatically
I  have a try later,  i will drop this if it work fine.
>> +
>> +#define CONFIG_SYS_MONITOR_BASE         CONFIG_SYS_TEXT_BASE
>> +
>> +#define CONFIG_SYS_MALLOC_LEN           ROUND(0x30000 + 128 * SZ_1K, 0x1000)
> no need for a magic calculation, please choose a fixed value
Ok.
>> +
>> +#define CONFIG_SYS_BOOTPARAMS_LEN       128 * SZ_1K
>> +
>> +#define CONFIG_SYS_SDRAM_BASE           0x80000000
>> +#define CONFIG_SYS_LOAD_ADDR            0x81000000
>> +
>> +#define CONFIG_SYS_INIT_SP_OFFSET       0x20000
>> +#define CONFIG_SYS_NO_FLASH
>> +
>> +#define CONFIG_AR933X_SERIAL
> this is already configured by Kconfig
Ok.
>> +#define CONFIG_BAUDRATE                 115200
>> +#define CONFIG_SYS_BAUDRATE_TABLE       {9600, 19200, 38400, 57600, 115200}
>> +
>> +#define CONFIG_BOOTDELAY                3
>> +#define CONFIG_BOOTARGS                 "console=ttyS0,115200 " \
>> +					"root=/dev/mtdblock2 " \
>> +					"rootfstype=squashfs"
>> +#define CONFIG_BOOTCOMMAND              "sf probe;" \
>> +					"mtdparts default;" \
>> +					"bootm 0x9f300000"
>> +#define CONFIG_LZMA
>> +
>> +#define MTDIDS_DEFAULT                  "nor0=spi-flash.0"
>> +#define MTDPARTS_DEFAULT                "mtdparts=spi-flash.0:256k(u-boot)," \
>> +		"64k(u-boot-env),2752k(rootfs),896k(uImage),64k(NVRAM),64k(ART)"
>> +
>> +#define CONFIG_ENV_SPI_MAX_HZ           25000000
>> +#define CONFIG_ENV_IS_IN_SPI_FLASH
>> +#define CONFIG_ENV_OFFSET               (256 * SZ_1K)
>> +#define CONFIG_ENV_SECT_SIZE            (64 * SZ_1K)
>> +#define CONFIG_ENV_SIZE                 (64 * SZ_1K)
>> +
>> +/*
>> + * Command
>> + */
>> +#define CONFIG_CMD_MTDPARTS
>> +
>> +/* Miscellaneous configurable options */
>> +#define CONFIG_SYS_CBSIZE               256
>> +#define CONFIG_SYS_MAXARGS              16
>> +#define CONFIG_SYS_PBSIZE               (CONFIG_SYS_CBSIZE + \
>> +					sizeof(CONFIG_SYS_PROMPT) + 16)
>> +#define CONFIG_SYS_LONGHELP
>> +#define CONFIG_CMDLINE_EDITING
>> +#define CONFIG_AUTO_COMPLETE
>> +#define CONFIG_SYS_HUSH_PARSER
>> +#define CONFIG_SYS_PROMPT_HUSH_PS2      "> "
> this is already configured by Kconfig
Ok.
>> +
>> +/*
>> + * Diagnostics
>> + */
>> +#define CONFIG_SYS_MEMTEST_START        0x80100000
>> +#define CONFIG_SYS_MEMTEST_END          0x83f00000
>> +#define CONFIG_CMD_MEMTEST
>> +
>> +#endif  /* __CONFIG_H */
>>
Daniel Schwierzeck Dec. 26, 2015, 5:07 p.m. UTC | #3
Am 26.12.2015 um 17:59 schrieb Wills Wang:
> 
> 
> On 12/26/2015 09:52 PM, Daniel Schwierzeck wrote:
>>
>> Am 25.12.2015 um 19:56 schrieb Wills Wang:
>>> Signed-off-by: Wills Wang <wills.wang@live.com>
>>> ---
>>>
>>> Changes in v4: None
>>> Changes in v3: None
>>> Changes in v2: None
>>>
>>>   arch/mips/Kconfig             |  8 +++++
>>>   arch/mips/dts/Makefile        |  2 +-
>>>   arch/mips/dts/ap121.dts       | 37 +++++++++++++++++++
>>>   arch/mips/dts/ar933x.dtsi     | 64 +++++++++++++++++++++++++++++++++
>>>   board/ath79/ap121/Kconfig     | 15 ++++++++
>>>   board/ath79/ap121/MAINTAINERS |  6 ++++
>>>   board/ath79/ap121/Makefile    |  8 +++++
>>>   board/ath79/ap121/README      | 18 ++++++++++
>>>   board/ath79/ap121/ap121.c     | 17 +++++++++
>>>   board/ath79/ap121/config.mk   | 16 +++++++++
>>>   configs/ap121_defconfig       | 42 ++++++++++++++++++++++
>>>   include/configs/ap121.h       | 82
>>> +++++++++++++++++++++++++++++++++++++++++++
>>>   12 files changed, 314 insertions(+), 1 deletion(-)
>>>   create mode 100644 arch/mips/dts/ap121.dts
>>>   create mode 100644 arch/mips/dts/ar933x.dtsi
>>>   create mode 100644 board/ath79/ap121/Kconfig
>>>   create mode 100644 board/ath79/ap121/MAINTAINERS
>>>   create mode 100644 board/ath79/ap121/Makefile
>>>   create mode 100644 board/ath79/ap121/README
>>>   create mode 100644 board/ath79/ap121/ap121.c
>>>   create mode 100644 board/ath79/ap121/config.mk
>>>   create mode 100644 configs/ap121_defconfig
>>>   create mode 100644 include/configs/ap121.h
>>>
>>> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
>>> index 7f7e258..09b8709 100644
>>> --- a/arch/mips/Kconfig
>>> +++ b/arch/mips/Kconfig
>>> @@ -51,6 +51,13 @@ config TARGET_PB1X00
>>>       select SUPPORTS_CPU_MIPS32_R2
>>>       select SYS_MIPS_CACHE_INIT_RAM_LOAD
>>>   +config TARGET_AP121
>>> +    bool "Support ap121"
>>> +    select SUPPORTS_BIG_ENDIAN
>>> +    select SUPPORTS_CPU_MIPS32_R1
>>> +    select SUPPORTS_CPU_MIPS32_R2
>>> +    select SYS_MIPS_CACHE_INIT_RAM_LOAD
>>> +
>> please create a dedicated Kconfig in arch/mips/mach-ath79/ and add this
>> board there. Have a look at following links for examples:
>>
>> https://github.com/danielschwierzeck/u-boot-lantiq/blob/lantiq/upstream/arch/mips/mach-lantiq/Kconfig
>>
>>
>> http://patchwork.ozlabs.org/patch/558465/
>> http://patchwork.ozlabs.org/patch/558469/
> Ok.
>>>     endchoice
>>>   @@ -59,6 +66,7 @@ source "board/imgtec/malta/Kconfig"
>>>   source "board/micronas/vct/Kconfig"
>>>   source "board/pb1x00/Kconfig"
>>>   source "board/qemu-mips/Kconfig"
>>> +source "board/ath79/ap121/Kconfig"
>>>     if MIPS
>>>   diff --git a/arch/mips/dts/Makefile b/arch/mips/dts/Makefile
>>> index 47b6eb5..6f8b413 100644
>>> --- a/arch/mips/dts/Makefile
>>> +++ b/arch/mips/dts/Makefile
>>> @@ -2,7 +2,7 @@
>>>   # SPDX-License-Identifier:    GPL-2.0+
>>>   #
>>>   -dtb-y +=
>>> +dtb-$(CONFIG_TARGET_AP121) += ap121.dtb
>>>     targets += $(dtb-y)
>>>   diff --git a/arch/mips/dts/ap121.dts b/arch/mips/dts/ap121.dts
>>> new file mode 100644
>>> index 0000000..769458a
>>> --- /dev/null
>>> +++ b/arch/mips/dts/ap121.dts
>>> @@ -0,0 +1,37 @@
>>> +/dts-v1/;
>>> +#include "ar933x.dtsi"
>>> +
>>> +/ {
>>> +    model = "AP121 Reference Board";
>>> +    compatible = "ath79,ap121", "ath79,ar933x";
>>> +
>>> +    aliases {
>>> +        spi0 = &spi0;
>>> +        serial0 = &uart0;
>>> +    };
>>> +
>>> +    chosen {
>>> +        stdout-path = "serial0:115200n8";
>>> +    };
>>> +};
>>> +
>>> +&xtal {
>>> +    clock-frequency = <25000000>;
>>> +};
>>> +
>>> +&uart0 {
>>> +    status = "okay";
>>> +};
>>> +
>>> +&spi0 {
>>> +    spi-max-frequency = <25000000>;
>>> +    status = "okay";
>>> +    spi-flash@0 {
>>> +        #address-cells = <1>;
>>> +        #size-cells = <1>;
>>> +        compatible = "spi-flash";
>>> +        memory-map = <0x9f000000 0x00800000>;
>>> +        spi-max-frequency = <25000000>;
>>> +        reg = <0>;
>>> +    };
>>> +};
>>> diff --git a/arch/mips/dts/ar933x.dtsi b/arch/mips/dts/ar933x.dtsi
>>> new file mode 100644
>>> index 0000000..64b30f7
>>> --- /dev/null
>>> +++ b/arch/mips/dts/ar933x.dtsi
>>> @@ -0,0 +1,64 @@
>>> +#include "skeleton.dtsi"
>>> +
>>> +/ {
>>> +    compatible = "ath79,ar933x";
>> the first part should be a vendor name and according to device-trees
>> from kernel this should be "qca"
> Ok.
>>> +
>>> +    #address-cells = <1>;
>>> +    #size-cells = <1>;
>>> +
>>> +    cpus {
>>> +        #address-cells = <1>;
>>> +        #size-cells = <0>;
>>> +
>>> +        cpu@0 {
>>> +            device_type = "cpu";
>>> +            compatible = "mips,mips24Kc";
>>> +            reg = <0>;
>>> +        };
>>> +    };
>>> +
>>> +    clocks {
>>> +        #address-cells = <1>;
>>> +        #size-cells = <1>;
>>> +        ranges;
>>> +
>>> +        xtal: xtal {
>>> +            #clock-cells = <0>;
>>> +            compatible = "fixed-clock";
>>> +            clock-output-names = "xtal";
>>> +        };
>>> +    };
>>> +
>>> +    ahb {
>>> +        compatible = "simple-bus";
>>> +        ranges;
>>> +
>>> +        #address-cells = <1>;
>>> +        #size-cells = <1>;
>>> +
>>> +        apb {
>>> +            compatible = "simple-bus";
>>> +            ranges;
>>> +
>>> +            #address-cells = <1>;
>>> +            #size-cells = <1>;
>>> +
>>> +            uart0: uart@18020000 {
>>> +                compatible = "ath79,ar933x-uart";
>> I suggest to use "qca,ar9330-uart" like the kernel driver
>>
> Ok.
>>> +                reg = <0x18020000 0x20>;
>>> +
>>> +                status = "disabled";
>>> +            };
>>> +        };
>>> +
>>> +        spi0: spi@1f000000 {
>>> +            compatible = "ath79,ath79-spi";
>> I suggest to use "qca,ar7100-spi" like the kernel driver
> Ok.
>>> +            reg = <0x1f000000 0x10>;
>>> +
>>> +            status = "disabled";
>>> +
>>> +            #address-cells = <1>;
>>> +            #size-cells = <0>;
>>> +        };
>>> +    };
>>> +};
>>> diff --git a/board/ath79/ap121/Kconfig b/board/ath79/ap121/Kconfig
>>> new file mode 100644
>>> index 0000000..88d9eff
>>> --- /dev/null
>>> +++ b/board/ath79/ap121/Kconfig
>>> @@ -0,0 +1,15 @@
>>> +if TARGET_AP121
>>> +
>>> +config SYS_BOARD
>>> +    default "ap121"
>>> +
>>> +config SYS_VENDOR
>>> +    default "ath79"
>>> +
>>> +config SYS_SOC
>>> +    default "ath79"
>>> +
>>> +config SYS_CONFIG_NAME
>>> +    default "ap121"
>>> +
>>> +endif
>>> diff --git a/board/ath79/ap121/MAINTAINERS
>>> b/board/ath79/ap121/MAINTAINERS
>>> new file mode 100644
>>> index 0000000..319b521
>>> --- /dev/null
>>> +++ b/board/ath79/ap121/MAINTAINERS
>>> @@ -0,0 +1,6 @@
>>> +AP121 BOARD
>>> +M:    Wills Wang <wills.wang@live.com>
>>> +S:    Maintained
>>> +F:    board/ath79/ap121/
>>> +F:    include/configs/ap121.h
>>> +F:    configs/ap121_defconfig
>>> diff --git a/board/ath79/ap121/Makefile b/board/ath79/ap121/Makefile
>>> new file mode 100644
>>> index 0000000..9132118
>>> --- /dev/null
>>> +++ b/board/ath79/ap121/Makefile
>>> @@ -0,0 +1,8 @@
>>> +#
>>> +# (C) Copyright 2003-2006
>>> +# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
>> again, no historic copyright needed for a simple one-line Makefile
> Ok.
>>> +#
>>> +# SPDX-License-Identifier:    GPL-2.0+
>>> +#
>>> +
>>> +obj-y    = ap121.o
>>> diff --git a/board/ath79/ap121/README b/board/ath79/ap121/README
>>> new file mode 100644
>>> index 0000000..104850f
>>> --- /dev/null
>>> +++ b/board/ath79/ap121/README
>>> @@ -0,0 +1,18 @@
>>> +ATHEROS AP121
>>> +==================
>>> +
>>> +Supported hardware: AP121 referance board.
>>> +
>>> +Files of the AP121 port
>>> +--------------------------
>>> +
>>> +arch/mips/mach-ath79/ar933x/    - The CPU support code for the
>>> Atheros ar933x
>>> +arch/mips/include/asm/arch-ath79    - Header files for the Atheros
>>> ath79
>>> +board/ath79/ap121/    - AP121 board specific files
>>> +include/configs/ap121.h    - AP121 configuration file
>>> +
>>> +Configure
>>> +-------------------
>>> +
>>> +To configure for the current board
>>> +    make ap121_defconfig
>> you can drop this README. There is no new or relevant information in it
>>
> Ok.
>>> diff --git a/board/ath79/ap121/ap121.c b/board/ath79/ap121/ap121.c
>>> new file mode 100644
>>> index 0000000..f60f88b
>>> --- /dev/null
>>> +++ b/board/ath79/ap121/ap121.c
>>> @@ -0,0 +1,17 @@
>>> +/*
>>> + * (C) Copyright 2015
>>> + * Wills Wang, <wills.wang@live.com>
>>> + *
>>> + * SPDX-License-Identifier:    GPL-2.0+
>>> + */
>>> +
>>> +#include <common.h>
>>> +#include <command.h>
>>> +#include <asm/mipsregs.h>
>>> +#include <asm/addrspace.h>
>>> +#include <asm/io.h>
>>> +
>>> +int checkboard(void)
>>> +{
>>> +    return 0;
>>> +}
>> you could/should print your board name here
> U-boot print the board model property from device tree when power up,
> I think it's duplicated.

yes, you are right. But checkboard is already implemented in
common/board_info.c as empty and weak function. Thus you can drop your
implementation.

>>> diff --git a/board/ath79/ap121/config.mk b/board/ath79/ap121/config.mk
>>> new file mode 100644
>>> index 0000000..f7dd3b7
>>> --- /dev/null
>>> +++ b/board/ath79/ap121/config.mk
>>> @@ -0,0 +1,16 @@
>>> +#
>>> +# (C) Copyright 2003
>>> +# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
>>> +#
>>> +# SPDX-License-Identifier:    GPL-2.0+
>>> +#
>>> +
>>> +#
>>> +# AP121 referance board, MIPS32 core
>>> +#
>>> +
>>> +# ROM version
>>> +CONFIG_SYS_TEXT_BASE = 0x9f000000
>>> +
>>> +# RAM version
>>> +#CONFIG_SYS_TEXT_BASE = 0x80010000
>> config.mk files in board directory are also deprecated. Please add
>> "#define CONFIG_SYS_TEXT_BASE 0x9f000000" to include/configs/ap121.h
> Ok.
>>> diff --git a/configs/ap121_defconfig b/configs/ap121_defconfig
>>> new file mode 100644
>>> index 0000000..cec0bb7
>>> --- /dev/null
>>> +++ b/configs/ap121_defconfig
>>> @@ -0,0 +1,42 @@
>>> +CONFIG_MIPS=y
>>> +CONFIG_TARGET_AP121=y
>>> +CONFIG_SYS_MALLOC_F_LEN=0x2000
>>> +CONFIG_SYS_PROMPT="ap121 # "
>>> +CONFIG_OF_CONTROL=y
>>> +CONFIG_DEFAULT_DEVICE_TREE="ap121"
>>> +CONFIG_DM=y
>> options like CONFIG_OF_CONTROL and CONFIG_DM should be pre-selected by
>> the mach or SoC specific Kconfig file if you always require it. An user
>> of your board should not be able to disable those options.
>>
> Ok.
>>> +CONFIG_DM_SERIAL=y
>>> +CONFIG_DM_SPI=y
>>> +CONFIG_DM_SPI_FLASH=y
>>> +CONFIG_ATH79_SPI=y
>>> +CONFIG_SPI_FLASH=y
>>> +CONFIG_SPI_FLASH_BAR=y
>>> +CONFIG_SPI_FLASH_ATMEL=y
>>> +CONFIG_SPI_FLASH_EON=y
>>> +CONFIG_SPI_FLASH_GIGADEVICE=y
>>> +CONFIG_SPI_FLASH_MACRONIX=y
>>> +CONFIG_SPI_FLASH_SPANSION=y
>>> +CONFIG_SPI_FLASH_STMICRO=y
>>> +CONFIG_SPI_FLASH_SST=y
>>> +CONFIG_SPI_FLASH_WINBOND=y
>>> +CONFIG_SPI_FLASH_USE_4K_SECTORS=y
>>> +CONFIG_SPI_FLASH_DATAFLASH=y
>>> +CONFIG_SPI_FLASH_MTD=y
>>> +CONFIG_CMD_DM=y
>>> +CONFIG_CMD_SF=y
>>> +CONFIG_CMD_SPI=y
>>> +# CONFIG_NET is not set
>>> +# CONFIG_CMD_BDI is not set
>>> +# CONFIG_CMD_CONSOLE is not set
>>> +# CONFIG_CMD_IMLS is not set
>>> +# CONFIG_CMD_XIMG is not set
>>> +# CONFIG_CMD_ELF is not set
>>> +# CONFIG_CMD_EXPORTENV is not set
>>> +# CONFIG_CMD_IMPORTENV is not set
>>> +# CONFIG_CMD_EDITENV is not set
>>> +# CONFIG_CMD_CRC32 is not set
>>> +# CONFIG_CMD_FLASH is not set
>>> +# CONFIG_CMD_FPGA is not set
>>> +# CONFIG_CMD_NFS is not set
>>> +# CONFIG_CMD_NET is not set
>>> +CONFIG_USE_PRIVATE_LIBGCC=y
>>> diff --git a/include/configs/ap121.h b/include/configs/ap121.h
>>> new file mode 100644
>>> index 0000000..5a01d11
>>> --- /dev/null
>>> +++ b/include/configs/ap121.h
>>> @@ -0,0 +1,82 @@
>>> +#ifndef __CONFIG_H
>>> +#define __CONFIG_H
>>> +
>>> +#include <linux/kconfig.h>
>>> +#include <linux/sizes.h>
>> those includes are not needed in a board config header file respectively
>> they are already included implicitely
> Ok.
>>> +
>>> +#define CONFIG_ARCH_ATH79
>>> +#define CONFIG_SOC_AR933X
>> this is already configured by Kconfig
>>
> Ok.
>>> +
>>> +#define CONFIG_DISPLAY_CPUINFO
>>> +#define CONFIG_DISPLAY_BOARDINFO
>>> +
>>> +#define CONFIG_OF_LIBFDT
>>> +
>>> +#define CONFIG_SYS_HZ                   1000
>>> +#define CONFIG_SYS_MHZ                  200
>>> +#define CONFIG_SYS_MIPS_TIMER_FREQ      (CONFIG_SYS_MHZ * 1000000)
>>> +
>>> +/* Cache Configuration */
>>> +#define CONFIG_SYS_DCACHE_SIZE          32 * SZ_1K
>>> +#define CONFIG_SYS_ICACHE_SIZE          64 * SZ_1K
>>> +#define CONFIG_SYS_CACHELINE_SIZE       32
>> you can drop this, the cache sizes will be detected automatically
> I  have a try later,  i will drop this if it work fine.
>>> +
>>> +#define CONFIG_SYS_MONITOR_BASE         CONFIG_SYS_TEXT_BASE
>>> +
>>> +#define CONFIG_SYS_MALLOC_LEN           ROUND(0x30000 + 128 * SZ_1K,
>>> 0x1000)
>> no need for a magic calculation, please choose a fixed value
> Ok.
>>> +
>>> +#define CONFIG_SYS_BOOTPARAMS_LEN       128 * SZ_1K
>>> +
>>> +#define CONFIG_SYS_SDRAM_BASE           0x80000000
>>> +#define CONFIG_SYS_LOAD_ADDR            0x81000000
>>> +
>>> +#define CONFIG_SYS_INIT_SP_OFFSET       0x20000
>>> +#define CONFIG_SYS_NO_FLASH
>>> +
>>> +#define CONFIG_AR933X_SERIAL
>> this is already configured by Kconfig
> Ok.
>>> +#define CONFIG_BAUDRATE                 115200
>>> +#define CONFIG_SYS_BAUDRATE_TABLE       {9600, 19200, 38400, 57600,
>>> 115200}
>>> +
>>> +#define CONFIG_BOOTDELAY                3
>>> +#define CONFIG_BOOTARGS                 "console=ttyS0,115200 " \
>>> +                    "root=/dev/mtdblock2 " \
>>> +                    "rootfstype=squashfs"
>>> +#define CONFIG_BOOTCOMMAND              "sf probe;" \
>>> +                    "mtdparts default;" \
>>> +                    "bootm 0x9f300000"
>>> +#define CONFIG_LZMA
>>> +
>>> +#define MTDIDS_DEFAULT                  "nor0=spi-flash.0"
>>> +#define MTDPARTS_DEFAULT               
>>> "mtdparts=spi-flash.0:256k(u-boot)," \
>>> +       
>>> "64k(u-boot-env),2752k(rootfs),896k(uImage),64k(NVRAM),64k(ART)"
>>> +
>>> +#define CONFIG_ENV_SPI_MAX_HZ           25000000
>>> +#define CONFIG_ENV_IS_IN_SPI_FLASH
>>> +#define CONFIG_ENV_OFFSET               (256 * SZ_1K)
>>> +#define CONFIG_ENV_SECT_SIZE            (64 * SZ_1K)
>>> +#define CONFIG_ENV_SIZE                 (64 * SZ_1K)
>>> +
>>> +/*
>>> + * Command
>>> + */
>>> +#define CONFIG_CMD_MTDPARTS
>>> +
>>> +/* Miscellaneous configurable options */
>>> +#define CONFIG_SYS_CBSIZE               256
>>> +#define CONFIG_SYS_MAXARGS              16
>>> +#define CONFIG_SYS_PBSIZE               (CONFIG_SYS_CBSIZE + \
>>> +                    sizeof(CONFIG_SYS_PROMPT) + 16)
>>> +#define CONFIG_SYS_LONGHELP
>>> +#define CONFIG_CMDLINE_EDITING
>>> +#define CONFIG_AUTO_COMPLETE
>>> +#define CONFIG_SYS_HUSH_PARSER
>>> +#define CONFIG_SYS_PROMPT_HUSH_PS2      "> "
>> this is already configured by Kconfig
> Ok.
>>> +
>>> +/*
>>> + * Diagnostics
>>> + */
>>> +#define CONFIG_SYS_MEMTEST_START        0x80100000
>>> +#define CONFIG_SYS_MEMTEST_END          0x83f00000
>>> +#define CONFIG_CMD_MEMTEST
>>> +
>>> +#endif  /* __CONFIG_H */
>>>
>
Wills Wang Dec. 27, 2015, 6:36 a.m. UTC | #4
On 12/26/2015 09:52 PM, Daniel Schwierzeck wrote:
>
> Am 25.12.2015 um 19:56 schrieb Wills Wang:
>> Signed-off-by: Wills Wang <wills.wang@live.com>
>> ---
>>
>> Changes in v4: None
>> Changes in v3: None
>> Changes in v2: None
>>
>>   arch/mips/Kconfig             |  8 +++++
>>   arch/mips/dts/Makefile        |  2 +-
>>   arch/mips/dts/ap121.dts       | 37 +++++++++++++++++++
>>   arch/mips/dts/ar933x.dtsi     | 64 +++++++++++++++++++++++++++++++++
>>   board/ath79/ap121/Kconfig     | 15 ++++++++
>>   board/ath79/ap121/MAINTAINERS |  6 ++++
>>   board/ath79/ap121/Makefile    |  8 +++++
>>   board/ath79/ap121/README      | 18 ++++++++++
>>   board/ath79/ap121/ap121.c     | 17 +++++++++
>>   board/ath79/ap121/config.mk   | 16 +++++++++
>>   configs/ap121_defconfig       | 42 ++++++++++++++++++++++
>>   include/configs/ap121.h       | 82 +++++++++++++++++++++++++++++++++++++++++++
>>   12 files changed, 314 insertions(+), 1 deletion(-)
>>   create mode 100644 arch/mips/dts/ap121.dts
>>   create mode 100644 arch/mips/dts/ar933x.dtsi
>>   create mode 100644 board/ath79/ap121/Kconfig
>>   create mode 100644 board/ath79/ap121/MAINTAINERS
>>   create mode 100644 board/ath79/ap121/Makefile
>>   create mode 100644 board/ath79/ap121/README
>>   create mode 100644 board/ath79/ap121/ap121.c
>>   create mode 100644 board/ath79/ap121/config.mk
>>   create mode 100644 configs/ap121_defconfig
>>   create mode 100644 include/configs/ap121.h
>>
>> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
>> index 7f7e258..09b8709 100644
>> --- a/arch/mips/Kconfig
>> +++ b/arch/mips/Kconfig
>> @@ -51,6 +51,13 @@ config TARGET_PB1X00
>>   	select SUPPORTS_CPU_MIPS32_R2
>>   	select SYS_MIPS_CACHE_INIT_RAM_LOAD
>>   
>> +config TARGET_AP121
>> +	bool "Support ap121"
>> +	select SUPPORTS_BIG_ENDIAN
>> +	select SUPPORTS_CPU_MIPS32_R1
>> +	select SUPPORTS_CPU_MIPS32_R2
>> +	select SYS_MIPS_CACHE_INIT_RAM_LOAD
>> +
> please create a dedicated Kconfig in arch/mips/mach-ath79/ and add this
> board there. Have a look at following links for examples:
>
> https://github.com/danielschwierzeck/u-boot-lantiq/blob/lantiq/upstream/arch/mips/mach-lantiq/Kconfig
>
> http://patchwork.ozlabs.org/patch/558465/
> http://patchwork.ozlabs.org/patch/558469/
>
>>   
>>   endchoice
>>   
>> @@ -59,6 +66,7 @@ source "board/imgtec/malta/Kconfig"
>>   source "board/micronas/vct/Kconfig"
>>   source "board/pb1x00/Kconfig"
>>   source "board/qemu-mips/Kconfig"
>> +source "board/ath79/ap121/Kconfig"
>>   
>>   if MIPS
>>   
>> diff --git a/arch/mips/dts/Makefile b/arch/mips/dts/Makefile
>> index 47b6eb5..6f8b413 100644
>> --- a/arch/mips/dts/Makefile
>> +++ b/arch/mips/dts/Makefile
>> @@ -2,7 +2,7 @@
>>   # SPDX-License-Identifier:	GPL-2.0+
>>   #
>>   
>> -dtb-y +=
>> +dtb-$(CONFIG_TARGET_AP121) += ap121.dtb
>>   
>>   targets += $(dtb-y)
>>   
>> diff --git a/arch/mips/dts/ap121.dts b/arch/mips/dts/ap121.dts
>> new file mode 100644
>> index 0000000..769458a
>> --- /dev/null
>> +++ b/arch/mips/dts/ap121.dts
>> @@ -0,0 +1,37 @@
>> +/dts-v1/;
>> +#include "ar933x.dtsi"
>> +
>> +/ {
>> +	model = "AP121 Reference Board";
>> +	compatible = "ath79,ap121", "ath79,ar933x";
>> +
>> +	aliases {
>> +		spi0 = &spi0;
>> +		serial0 = &uart0;
>> +	};
>> +
>> +	chosen {
>> +		stdout-path = "serial0:115200n8";
>> +	};
>> +};
>> +
>> +&xtal {
>> +	clock-frequency = <25000000>;
>> +};
>> +
>> +&uart0 {
>> +	status = "okay";
>> +};
>> +
>> +&spi0 {
>> +	spi-max-frequency = <25000000>;
>> +	status = "okay";
>> +	spi-flash@0 {
>> +		#address-cells = <1>;
>> +		#size-cells = <1>;
>> +		compatible = "spi-flash";
>> +		memory-map = <0x9f000000 0x00800000>;
>> +		spi-max-frequency = <25000000>;
>> +		reg = <0>;
>> +	};
>> +};
>> diff --git a/arch/mips/dts/ar933x.dtsi b/arch/mips/dts/ar933x.dtsi
>> new file mode 100644
>> index 0000000..64b30f7
>> --- /dev/null
>> +++ b/arch/mips/dts/ar933x.dtsi
>> @@ -0,0 +1,64 @@
>> +#include "skeleton.dtsi"
>> +
>> +/ {
>> +	compatible = "ath79,ar933x";
> the first part should be a vendor name and according to device-trees
> from kernel this should be "qca"
>
>> +
>> +	#address-cells = <1>;
>> +	#size-cells = <1>;
>> +
>> +	cpus {
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +
>> +		cpu@0 {
>> +			device_type = "cpu";
>> +			compatible = "mips,mips24Kc";
>> +			reg = <0>;
>> +		};
>> +	};
>> +
>> +	clocks {
>> +		#address-cells = <1>;
>> +		#size-cells = <1>;
>> +		ranges;
>> +
>> +		xtal: xtal {
>> +			#clock-cells = <0>;
>> +			compatible = "fixed-clock";
>> +			clock-output-names = "xtal";
>> +		};
>> +	};
>> +
>> +	ahb {
>> +		compatible = "simple-bus";
>> +		ranges;
>> +
>> +		#address-cells = <1>;
>> +		#size-cells = <1>;
>> +
>> +		apb {
>> +			compatible = "simple-bus";
>> +			ranges;
>> +
>> +			#address-cells = <1>;
>> +			#size-cells = <1>;
>> +
>> +			uart0: uart@18020000 {
>> +				compatible = "ath79,ar933x-uart";
> I suggest to use "qca,ar9330-uart" like the kernel driver
>
>> +				reg = <0x18020000 0x20>;
>> +
>> +				status = "disabled";
>> +			};
>> +		};
>> +
>> +		spi0: spi@1f000000 {
>> +			compatible = "ath79,ath79-spi";
> I suggest to use "qca,ar7100-spi" like the kernel driver
>
>> +			reg = <0x1f000000 0x10>;
>> +
>> +			status = "disabled";
>> +
>> +			#address-cells = <1>;
>> +			#size-cells = <0>;
>> +		};
>> +	};
>> +};
>> diff --git a/board/ath79/ap121/Kconfig b/board/ath79/ap121/Kconfig
>> new file mode 100644
>> index 0000000..88d9eff
>> --- /dev/null
>> +++ b/board/ath79/ap121/Kconfig
>> @@ -0,0 +1,15 @@
>> +if TARGET_AP121
>> +
>> +config SYS_BOARD
>> +	default "ap121"
>> +
>> +config SYS_VENDOR
>> +	default "ath79"
>> +
>> +config SYS_SOC
>> +	default "ath79"
>> +
>> +config SYS_CONFIG_NAME
>> +	default "ap121"
>> +
>> +endif
>> diff --git a/board/ath79/ap121/MAINTAINERS b/board/ath79/ap121/MAINTAINERS
>> new file mode 100644
>> index 0000000..319b521
>> --- /dev/null
>> +++ b/board/ath79/ap121/MAINTAINERS
>> @@ -0,0 +1,6 @@
>> +AP121 BOARD
>> +M:	Wills Wang <wills.wang@live.com>
>> +S:	Maintained
>> +F:	board/ath79/ap121/
>> +F:	include/configs/ap121.h
>> +F:	configs/ap121_defconfig
>> diff --git a/board/ath79/ap121/Makefile b/board/ath79/ap121/Makefile
>> new file mode 100644
>> index 0000000..9132118
>> --- /dev/null
>> +++ b/board/ath79/ap121/Makefile
>> @@ -0,0 +1,8 @@
>> +#
>> +# (C) Copyright 2003-2006
>> +# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
> again, no historic copyright needed for a simple one-line Makefile
>
>> +#
>> +# SPDX-License-Identifier:	GPL-2.0+
>> +#
>> +
>> +obj-y	= ap121.o
>> diff --git a/board/ath79/ap121/README b/board/ath79/ap121/README
>> new file mode 100644
>> index 0000000..104850f
>> --- /dev/null
>> +++ b/board/ath79/ap121/README
>> @@ -0,0 +1,18 @@
>> +ATHEROS AP121
>> +==================
>> +
>> +Supported hardware: AP121 referance board.
>> +
>> +Files of the AP121 port
>> +--------------------------
>> +
>> +arch/mips/mach-ath79/ar933x/	- The CPU support code for the Atheros ar933x
>> +arch/mips/include/asm/arch-ath79	- Header files for the Atheros ath79
>> +board/ath79/ap121/	- AP121 board specific files
>> +include/configs/ap121.h	- AP121 configuration file
>> +
>> +Configure
>> +-------------------
>> +
>> +To configure for the current board
>> +	make ap121_defconfig
> you can drop this README. There is no new or relevant information in it
>
>> diff --git a/board/ath79/ap121/ap121.c b/board/ath79/ap121/ap121.c
>> new file mode 100644
>> index 0000000..f60f88b
>> --- /dev/null
>> +++ b/board/ath79/ap121/ap121.c
>> @@ -0,0 +1,17 @@
>> +/*
>> + * (C) Copyright 2015
>> + * Wills Wang, <wills.wang@live.com>
>> + *
>> + * SPDX-License-Identifier:	GPL-2.0+
>> + */
>> +
>> +#include <common.h>
>> +#include <command.h>
>> +#include <asm/mipsregs.h>
>> +#include <asm/addrspace.h>
>> +#include <asm/io.h>
>> +
>> +int checkboard(void)
>> +{
>> +	return 0;
>> +}
> you could/should print your board name here
>
>> diff --git a/board/ath79/ap121/config.mk b/board/ath79/ap121/config.mk
>> new file mode 100644
>> index 0000000..f7dd3b7
>> --- /dev/null
>> +++ b/board/ath79/ap121/config.mk
>> @@ -0,0 +1,16 @@
>> +#
>> +# (C) Copyright 2003
>> +# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
>> +#
>> +# SPDX-License-Identifier:	GPL-2.0+
>> +#
>> +
>> +#
>> +# AP121 referance board, MIPS32 core
>> +#
>> +
>> +# ROM version
>> +CONFIG_SYS_TEXT_BASE = 0x9f000000
>> +
>> +# RAM version
>> +#CONFIG_SYS_TEXT_BASE = 0x80010000
> config.mk files in board directory are also deprecated. Please add
> "#define CONFIG_SYS_TEXT_BASE 0x9f000000" to include/configs/ap121.h
>
>> diff --git a/configs/ap121_defconfig b/configs/ap121_defconfig
>> new file mode 100644
>> index 0000000..cec0bb7
>> --- /dev/null
>> +++ b/configs/ap121_defconfig
>> @@ -0,0 +1,42 @@
>> +CONFIG_MIPS=y
>> +CONFIG_TARGET_AP121=y
>> +CONFIG_SYS_MALLOC_F_LEN=0x2000
>> +CONFIG_SYS_PROMPT="ap121 # "
>> +CONFIG_OF_CONTROL=y
>> +CONFIG_DEFAULT_DEVICE_TREE="ap121"
>> +CONFIG_DM=y
> options like CONFIG_OF_CONTROL and CONFIG_DM should be pre-selected by
> the mach or SoC specific Kconfig file if you always require it. An user
> of your board should not be able to disable those options.
>
>> +CONFIG_DM_SERIAL=y
>> +CONFIG_DM_SPI=y
>> +CONFIG_DM_SPI_FLASH=y
>> +CONFIG_ATH79_SPI=y
>> +CONFIG_SPI_FLASH=y
>> +CONFIG_SPI_FLASH_BAR=y
>> +CONFIG_SPI_FLASH_ATMEL=y
>> +CONFIG_SPI_FLASH_EON=y
>> +CONFIG_SPI_FLASH_GIGADEVICE=y
>> +CONFIG_SPI_FLASH_MACRONIX=y
>> +CONFIG_SPI_FLASH_SPANSION=y
>> +CONFIG_SPI_FLASH_STMICRO=y
>> +CONFIG_SPI_FLASH_SST=y
>> +CONFIG_SPI_FLASH_WINBOND=y
>> +CONFIG_SPI_FLASH_USE_4K_SECTORS=y
>> +CONFIG_SPI_FLASH_DATAFLASH=y
>> +CONFIG_SPI_FLASH_MTD=y
>> +CONFIG_CMD_DM=y
>> +CONFIG_CMD_SF=y
>> +CONFIG_CMD_SPI=y
>> +# CONFIG_NET is not set
>> +# CONFIG_CMD_BDI is not set
>> +# CONFIG_CMD_CONSOLE is not set
>> +# CONFIG_CMD_IMLS is not set
>> +# CONFIG_CMD_XIMG is not set
>> +# CONFIG_CMD_ELF is not set
>> +# CONFIG_CMD_EXPORTENV is not set
>> +# CONFIG_CMD_IMPORTENV is not set
>> +# CONFIG_CMD_EDITENV is not set
>> +# CONFIG_CMD_CRC32 is not set
>> +# CONFIG_CMD_FLASH is not set
>> +# CONFIG_CMD_FPGA is not set
>> +# CONFIG_CMD_NFS is not set
>> +# CONFIG_CMD_NET is not set
>> +CONFIG_USE_PRIVATE_LIBGCC=y
>> diff --git a/include/configs/ap121.h b/include/configs/ap121.h
>> new file mode 100644
>> index 0000000..5a01d11
>> --- /dev/null
>> +++ b/include/configs/ap121.h
>> @@ -0,0 +1,82 @@
>> +#ifndef __CONFIG_H
>> +#define __CONFIG_H
>> +
>> +#include <linux/kconfig.h>
>> +#include <linux/sizes.h>
> those includes are not needed in a board config header file respectively
> they are already included implicitely
>
>> +
>> +#define CONFIG_ARCH_ATH79
>> +#define CONFIG_SOC_AR933X
> this is already configured by Kconfig
>
>> +
>> +#define CONFIG_DISPLAY_CPUINFO
>> +#define CONFIG_DISPLAY_BOARDINFO
>> +
>> +#define CONFIG_OF_LIBFDT
>> +
>> +#define CONFIG_SYS_HZ                   1000
>> +#define CONFIG_SYS_MHZ                  200
>> +#define CONFIG_SYS_MIPS_TIMER_FREQ      (CONFIG_SYS_MHZ * 1000000)
>> +
>> +/* Cache Configuration */
>> +#define CONFIG_SYS_DCACHE_SIZE          32 * SZ_1K
>> +#define CONFIG_SYS_ICACHE_SIZE          64 * SZ_1K
>> +#define CONFIG_SYS_CACHELINE_SIZE       32
> you can drop this, the cache sizes will be detected automatically
My board don't boot up if drop this.
>> +
>> +#define CONFIG_SYS_MONITOR_BASE         CONFIG_SYS_TEXT_BASE
>> +
>> +#define CONFIG_SYS_MALLOC_LEN           ROUND(0x30000 + 128 * SZ_1K, 0x1000)
> no need for a magic calculation, please choose a fixed value
>
>> +
>> +#define CONFIG_SYS_BOOTPARAMS_LEN       128 * SZ_1K
>> +
>> +#define CONFIG_SYS_SDRAM_BASE           0x80000000
>> +#define CONFIG_SYS_LOAD_ADDR            0x81000000
>> +
>> +#define CONFIG_SYS_INIT_SP_OFFSET       0x20000
>> +#define CONFIG_SYS_NO_FLASH
>> +
>> +#define CONFIG_AR933X_SERIAL
> this is already configured by Kconfig
>
>> +#define CONFIG_BAUDRATE                 115200
>> +#define CONFIG_SYS_BAUDRATE_TABLE       {9600, 19200, 38400, 57600, 115200}
>> +
>> +#define CONFIG_BOOTDELAY                3
>> +#define CONFIG_BOOTARGS                 "console=ttyS0,115200 " \
>> +					"root=/dev/mtdblock2 " \
>> +					"rootfstype=squashfs"
>> +#define CONFIG_BOOTCOMMAND              "sf probe;" \
>> +					"mtdparts default;" \
>> +					"bootm 0x9f300000"
>> +#define CONFIG_LZMA
>> +
>> +#define MTDIDS_DEFAULT                  "nor0=spi-flash.0"
>> +#define MTDPARTS_DEFAULT                "mtdparts=spi-flash.0:256k(u-boot)," \
>> +		"64k(u-boot-env),2752k(rootfs),896k(uImage),64k(NVRAM),64k(ART)"
>> +
>> +#define CONFIG_ENV_SPI_MAX_HZ           25000000
>> +#define CONFIG_ENV_IS_IN_SPI_FLASH
>> +#define CONFIG_ENV_OFFSET               (256 * SZ_1K)
>> +#define CONFIG_ENV_SECT_SIZE            (64 * SZ_1K)
>> +#define CONFIG_ENV_SIZE                 (64 * SZ_1K)
>> +
>> +/*
>> + * Command
>> + */
>> +#define CONFIG_CMD_MTDPARTS
>> +
>> +/* Miscellaneous configurable options */
>> +#define CONFIG_SYS_CBSIZE               256
>> +#define CONFIG_SYS_MAXARGS              16
>> +#define CONFIG_SYS_PBSIZE               (CONFIG_SYS_CBSIZE + \
>> +					sizeof(CONFIG_SYS_PROMPT) + 16)
>> +#define CONFIG_SYS_LONGHELP
>> +#define CONFIG_CMDLINE_EDITING
>> +#define CONFIG_AUTO_COMPLETE
>> +#define CONFIG_SYS_HUSH_PARSER
>> +#define CONFIG_SYS_PROMPT_HUSH_PS2      "> "
> this is already configured by Kconfig
>
>> +
>> +/*
>> + * Diagnostics
>> + */
>> +#define CONFIG_SYS_MEMTEST_START        0x80100000
>> +#define CONFIG_SYS_MEMTEST_END          0x83f00000
>> +#define CONFIG_CMD_MEMTEST
>> +
>> +#endif  /* __CONFIG_H */
>>
Marek Vasut Dec. 27, 2015, 6:41 a.m. UTC | #5
On Sunday, December 27, 2015 at 07:36:00 AM, Wills Wang wrote:
> On 12/26/2015 09:52 PM, Daniel Schwierzeck wrote:
> > Am 25.12.2015 um 19:56 schrieb Wills Wang:
> >> Signed-off-by: Wills Wang <wills.wang@live.com>

[...]

> >> diff --git a/configs/ap121_defconfig b/configs/ap121_defconfig
> >> new file mode 100644
> >> index 0000000..cec0bb7
> >> --- /dev/null
> >> +++ b/configs/ap121_defconfig
> >> @@ -0,0 +1,42 @@
> >> +CONFIG_MIPS=y
> >> +CONFIG_TARGET_AP121=y
> >> +CONFIG_SYS_MALLOC_F_LEN=0x2000
> >> +CONFIG_SYS_PROMPT="ap121 # "
> >> +CONFIG_OF_CONTROL=y
> >> +CONFIG_DEFAULT_DEVICE_TREE="ap121"
> >> +CONFIG_DM=y
> > 
> > options like CONFIG_OF_CONTROL and CONFIG_DM should be pre-selected by
> > the mach or SoC specific Kconfig file if you always require it. An user
> > of your board should not be able to disable those options.
> > 
> >> +CONFIG_DM_SERIAL=y
> >> +CONFIG_DM_SPI=y
> >> +CONFIG_DM_SPI_FLASH=y
> >> +CONFIG_ATH79_SPI=y
> >> +CONFIG_SPI_FLASH=y
> >> +CONFIG_SPI_FLASH_BAR=y
> >> +CONFIG_SPI_FLASH_ATMEL=y
> >> +CONFIG_SPI_FLASH_EON=y
> >> +CONFIG_SPI_FLASH_GIGADEVICE=y
> >> +CONFIG_SPI_FLASH_MACRONIX=y
> >> +CONFIG_SPI_FLASH_SPANSION=y
> >> +CONFIG_SPI_FLASH_STMICRO=y
> >> +CONFIG_SPI_FLASH_SST=y
> >> +CONFIG_SPI_FLASH_WINBOND=y
> >> +CONFIG_SPI_FLASH_USE_4K_SECTORS=y
> >> +CONFIG_SPI_FLASH_DATAFLASH=y
> >> +CONFIG_SPI_FLASH_MTD=y
> >> +CONFIG_CMD_DM=y
> >> +CONFIG_CMD_SF=y
> >> +CONFIG_CMD_SPI=y
> >> +# CONFIG_NET is not set
> >> +# CONFIG_CMD_BDI is not set
> >> +# CONFIG_CMD_CONSOLE is not set
> >> +# CONFIG_CMD_IMLS is not set
> >> +# CONFIG_CMD_XIMG is not set
> >> +# CONFIG_CMD_ELF is not set
> >> +# CONFIG_CMD_EXPORTENV is not set
> >> +# CONFIG_CMD_IMPORTENV is not set
> >> +# CONFIG_CMD_EDITENV is not set
> >> +# CONFIG_CMD_CRC32 is not set
> >> +# CONFIG_CMD_FLASH is not set
> >> +# CONFIG_CMD_FPGA is not set
> >> +# CONFIG_CMD_NFS is not set
> >> +# CONFIG_CMD_NET is not set
> >> +CONFIG_USE_PRIVATE_LIBGCC=y

Why is private libgcc enabled here ? Is your toolchain buggy ?

> >> diff --git a/include/configs/ap121.h b/include/configs/ap121.h
> >> new file mode 100644
> >> index 0000000..5a01d11
> >> --- /dev/null
> >> +++ b/include/configs/ap121.h
> >> @@ -0,0 +1,82 @@
> >> +#ifndef __CONFIG_H
> >> +#define __CONFIG_H
> >> +
> >> +#include <linux/kconfig.h>
> >> +#include <linux/sizes.h>
> > 
> > those includes are not needed in a board config header file respectively
> > they are already included implicitely
> > 
> >> +
> >> +#define CONFIG_ARCH_ATH79
> >> +#define CONFIG_SOC_AR933X
> > 
> > this is already configured by Kconfig
> > 
> >> +
> >> +#define CONFIG_DISPLAY_CPUINFO
> >> +#define CONFIG_DISPLAY_BOARDINFO
> >> +
> >> +#define CONFIG_OF_LIBFDT
> >> +
> >> +#define CONFIG_SYS_HZ                   1000
> >> +#define CONFIG_SYS_MHZ                  200
> >> +#define CONFIG_SYS_MIPS_TIMER_FREQ      (CONFIG_SYS_MHZ * 1000000)
> >> +
> >> +/* Cache Configuration */
> >> +#define CONFIG_SYS_DCACHE_SIZE          32 * SZ_1K
> >> +#define CONFIG_SYS_ICACHE_SIZE          64 * SZ_1K
> >> +#define CONFIG_SYS_CACHELINE_SIZE       32
> > 
> > you can drop this, the cache sizes will be detected automatically
> 
> My board don't boot up if drop this.

btw please use the [...] to trim your reply to relevant parts only, it's
often real hard to find the relevant one-liner reply in a sea of quoted
text.

[...]
Wills Wang Dec. 27, 2015, 7:03 a.m. UTC | #6
On 12/27/2015 02:41 PM, Marek Vasut wrote:
> On Sunday, December 27, 2015 at 07:36:00 AM, Wills Wang wrote:
>> On 12/26/2015 09:52 PM, Daniel Schwierzeck wrote:
>>> Am 25.12.2015 um 19:56 schrieb Wills Wang:
>>>> Signed-off-by: Wills Wang <wills.wang@live.com>
> [...]
>
>>>> diff --git a/configs/ap121_defconfig b/configs/ap121_defconfig
>>>> new file mode 100644
>>>> index 0000000..cec0bb7
>>>> --- /dev/null
>>>> +++ b/configs/ap121_defconfig
>>>> @@ -0,0 +1,42 @@
>>>> +CONFIG_MIPS=y
>>>> +CONFIG_TARGET_AP121=y
>>>> +CONFIG_SYS_MALLOC_F_LEN=0x2000
>>>> +CONFIG_SYS_PROMPT="ap121 # "
>>>> +CONFIG_OF_CONTROL=y
>>>> +CONFIG_DEFAULT_DEVICE_TREE="ap121"
>>>> +CONFIG_DM=y
>>> options like CONFIG_OF_CONTROL and CONFIG_DM should be pre-selected by
>>> the mach or SoC specific Kconfig file if you always require it. An user
>>> of your board should not be able to disable those options.
>>>
>>>> +CONFIG_DM_SERIAL=y
>>>> +CONFIG_DM_SPI=y
>>>> +CONFIG_DM_SPI_FLASH=y
>>>> +CONFIG_ATH79_SPI=y
>>>> +CONFIG_SPI_FLASH=y
>>>> +CONFIG_SPI_FLASH_BAR=y
>>>> +CONFIG_SPI_FLASH_ATMEL=y
>>>> +CONFIG_SPI_FLASH_EON=y
>>>> +CONFIG_SPI_FLASH_GIGADEVICE=y
>>>> +CONFIG_SPI_FLASH_MACRONIX=y
>>>> +CONFIG_SPI_FLASH_SPANSION=y
>>>> +CONFIG_SPI_FLASH_STMICRO=y
>>>> +CONFIG_SPI_FLASH_SST=y
>>>> +CONFIG_SPI_FLASH_WINBOND=y
>>>> +CONFIG_SPI_FLASH_USE_4K_SECTORS=y
>>>> +CONFIG_SPI_FLASH_DATAFLASH=y
>>>> +CONFIG_SPI_FLASH_MTD=y
>>>> +CONFIG_CMD_DM=y
>>>> +CONFIG_CMD_SF=y
>>>> +CONFIG_CMD_SPI=y
>>>> +# CONFIG_NET is not set
>>>> +# CONFIG_CMD_BDI is not set
>>>> +# CONFIG_CMD_CONSOLE is not set
>>>> +# CONFIG_CMD_IMLS is not set
>>>> +# CONFIG_CMD_XIMG is not set
>>>> +# CONFIG_CMD_ELF is not set
>>>> +# CONFIG_CMD_EXPORTENV is not set
>>>> +# CONFIG_CMD_IMPORTENV is not set
>>>> +# CONFIG_CMD_EDITENV is not set
>>>> +# CONFIG_CMD_CRC32 is not set
>>>> +# CONFIG_CMD_FLASH is not set
>>>> +# CONFIG_CMD_FPGA is not set
>>>> +# CONFIG_CMD_NFS is not set
>>>> +# CONFIG_CMD_NET is not set
>>>> +CONFIG_USE_PRIVATE_LIBGCC=y
> Why is private libgcc enabled here ? Is your toolchain buggy ?
Follow from dbau1000_defconfig.
>>>> diff --git a/include/configs/ap121.h b/include/configs/ap121.h
>>>> new file mode 100644
>>>> index 0000000..5a01d11
>>>> --- /dev/null
>>>> +++ b/include/configs/ap121.h
>>>> @@ -0,0 +1,82 @@
>>>> +#ifndef __CONFIG_H
>>>> +#define __CONFIG_H
>>>> +
>>>> +#include <linux/kconfig.h>
>>>> +#include <linux/sizes.h>
>>> those includes are not needed in a board config header file respectively
>>> they are already included implicitely
>>>
>>>> +
>>>> +#define CONFIG_ARCH_ATH79
>>>> +#define CONFIG_SOC_AR933X
>>> this is already configured by Kconfig
>>>
>>>> +
>>>> +#define CONFIG_DISPLAY_CPUINFO
>>>> +#define CONFIG_DISPLAY_BOARDINFO
>>>> +
>>>> +#define CONFIG_OF_LIBFDT
>>>> +
>>>> +#define CONFIG_SYS_HZ                   1000
>>>> +#define CONFIG_SYS_MHZ                  200
>>>> +#define CONFIG_SYS_MIPS_TIMER_FREQ      (CONFIG_SYS_MHZ * 1000000)
>>>> +
>>>> +/* Cache Configuration */
>>>> +#define CONFIG_SYS_DCACHE_SIZE          32 * SZ_1K
>>>> +#define CONFIG_SYS_ICACHE_SIZE          64 * SZ_1K
>>>> +#define CONFIG_SYS_CACHELINE_SIZE       32
>>> you can drop this, the cache sizes will be detected automatically
>> My board don't boot up if drop this.
> btw please use the [...] to trim your reply to relevant parts only, it's
> often real hard to find the relevant one-liner reply in a sea of quoted
> text.
>
> [...]
>
>
Marek Vasut Dec. 27, 2015, 7:10 a.m. UTC | #7
On Sunday, December 27, 2015 at 08:03:55 AM, Wills Wang wrote:
> On 12/27/2015 02:41 PM, Marek Vasut wrote:
> > On Sunday, December 27, 2015 at 07:36:00 AM, Wills Wang wrote:
> >> On 12/26/2015 09:52 PM, Daniel Schwierzeck wrote:
> >>> Am 25.12.2015 um 19:56 schrieb Wills Wang:
> >>>> Signed-off-by: Wills Wang <wills.wang@live.com>
> > 
> > [...]
> > 
> >>>> diff --git a/configs/ap121_defconfig b/configs/ap121_defconfig
> >>>> new file mode 100644
> >>>> index 0000000..cec0bb7
> >>>> --- /dev/null
> >>>> +++ b/configs/ap121_defconfig
> >>>> @@ -0,0 +1,42 @@
> >>>> +CONFIG_MIPS=y
> >>>> +CONFIG_TARGET_AP121=y
> >>>> +CONFIG_SYS_MALLOC_F_LEN=0x2000
> >>>> +CONFIG_SYS_PROMPT="ap121 # "
> >>>> +CONFIG_OF_CONTROL=y
> >>>> +CONFIG_DEFAULT_DEVICE_TREE="ap121"
> >>>> +CONFIG_DM=y
> >>> 
> >>> options like CONFIG_OF_CONTROL and CONFIG_DM should be pre-selected by
> >>> the mach or SoC specific Kconfig file if you always require it. An user
> >>> of your board should not be able to disable those options.
> >>> 
> >>>> +CONFIG_DM_SERIAL=y
> >>>> +CONFIG_DM_SPI=y
> >>>> +CONFIG_DM_SPI_FLASH=y
> >>>> +CONFIG_ATH79_SPI=y
> >>>> +CONFIG_SPI_FLASH=y
> >>>> +CONFIG_SPI_FLASH_BAR=y
> >>>> +CONFIG_SPI_FLASH_ATMEL=y
> >>>> +CONFIG_SPI_FLASH_EON=y
> >>>> +CONFIG_SPI_FLASH_GIGADEVICE=y
> >>>> +CONFIG_SPI_FLASH_MACRONIX=y
> >>>> +CONFIG_SPI_FLASH_SPANSION=y
> >>>> +CONFIG_SPI_FLASH_STMICRO=y
> >>>> +CONFIG_SPI_FLASH_SST=y
> >>>> +CONFIG_SPI_FLASH_WINBOND=y
> >>>> +CONFIG_SPI_FLASH_USE_4K_SECTORS=y
> >>>> +CONFIG_SPI_FLASH_DATAFLASH=y
> >>>> +CONFIG_SPI_FLASH_MTD=y
> >>>> +CONFIG_CMD_DM=y
> >>>> +CONFIG_CMD_SF=y
> >>>> +CONFIG_CMD_SPI=y
> >>>> +# CONFIG_NET is not set
> >>>> +# CONFIG_CMD_BDI is not set
> >>>> +# CONFIG_CMD_CONSOLE is not set
> >>>> +# CONFIG_CMD_IMLS is not set
> >>>> +# CONFIG_CMD_XIMG is not set
> >>>> +# CONFIG_CMD_ELF is not set
> >>>> +# CONFIG_CMD_EXPORTENV is not set
> >>>> +# CONFIG_CMD_IMPORTENV is not set
> >>>> +# CONFIG_CMD_EDITENV is not set
> >>>> +# CONFIG_CMD_CRC32 is not set
> >>>> +# CONFIG_CMD_FLASH is not set
> >>>> +# CONFIG_CMD_FPGA is not set
> >>>> +# CONFIG_CMD_NFS is not set
> >>>> +# CONFIG_CMD_NET is not set
> >>>> +CONFIG_USE_PRIVATE_LIBGCC=y
> > 
> > Why is private libgcc enabled here ? Is your toolchain buggy ?
> 
> Follow from dbau1000_defconfig.

Daniel, can you clarify why this is enabled ?

[...]
diff mbox

Patch

diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 7f7e258..09b8709 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -51,6 +51,13 @@  config TARGET_PB1X00
 	select SUPPORTS_CPU_MIPS32_R2
 	select SYS_MIPS_CACHE_INIT_RAM_LOAD
 
+config TARGET_AP121
+	bool "Support ap121"
+	select SUPPORTS_BIG_ENDIAN
+	select SUPPORTS_CPU_MIPS32_R1
+	select SUPPORTS_CPU_MIPS32_R2
+	select SYS_MIPS_CACHE_INIT_RAM_LOAD
+
 
 endchoice
 
@@ -59,6 +66,7 @@  source "board/imgtec/malta/Kconfig"
 source "board/micronas/vct/Kconfig"
 source "board/pb1x00/Kconfig"
 source "board/qemu-mips/Kconfig"
+source "board/ath79/ap121/Kconfig"
 
 if MIPS
 
diff --git a/arch/mips/dts/Makefile b/arch/mips/dts/Makefile
index 47b6eb5..6f8b413 100644
--- a/arch/mips/dts/Makefile
+++ b/arch/mips/dts/Makefile
@@ -2,7 +2,7 @@ 
 # SPDX-License-Identifier:	GPL-2.0+
 #
 
-dtb-y +=
+dtb-$(CONFIG_TARGET_AP121) += ap121.dtb
 
 targets += $(dtb-y)
 
diff --git a/arch/mips/dts/ap121.dts b/arch/mips/dts/ap121.dts
new file mode 100644
index 0000000..769458a
--- /dev/null
+++ b/arch/mips/dts/ap121.dts
@@ -0,0 +1,37 @@ 
+/dts-v1/;
+#include "ar933x.dtsi"
+
+/ {
+	model = "AP121 Reference Board";
+	compatible = "ath79,ap121", "ath79,ar933x";
+
+	aliases {
+		spi0 = &spi0;
+		serial0 = &uart0;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+};
+
+&xtal {
+	clock-frequency = <25000000>;
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&spi0 {
+	spi-max-frequency = <25000000>;
+	status = "okay";
+	spi-flash@0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "spi-flash";
+		memory-map = <0x9f000000 0x00800000>;
+		spi-max-frequency = <25000000>;
+		reg = <0>;
+	};
+};
diff --git a/arch/mips/dts/ar933x.dtsi b/arch/mips/dts/ar933x.dtsi
new file mode 100644
index 0000000..64b30f7
--- /dev/null
+++ b/arch/mips/dts/ar933x.dtsi
@@ -0,0 +1,64 @@ 
+#include "skeleton.dtsi"
+
+/ {
+	compatible = "ath79,ar933x";
+
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			device_type = "cpu";
+			compatible = "mips,mips24Kc";
+			reg = <0>;
+		};
+	};
+
+	clocks {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+
+		xtal: xtal {
+			#clock-cells = <0>;
+			compatible = "fixed-clock";
+			clock-output-names = "xtal";
+		};
+	};
+
+	ahb {
+		compatible = "simple-bus";
+		ranges;
+
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		apb {
+			compatible = "simple-bus";
+			ranges;
+
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			uart0: uart@18020000 {
+				compatible = "ath79,ar933x-uart";
+				reg = <0x18020000 0x20>;
+
+				status = "disabled";
+			};
+		};
+
+		spi0: spi@1f000000 {
+			compatible = "ath79,ath79-spi";
+			reg = <0x1f000000 0x10>;
+
+			status = "disabled";
+
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+	};
+};
diff --git a/board/ath79/ap121/Kconfig b/board/ath79/ap121/Kconfig
new file mode 100644
index 0000000..88d9eff
--- /dev/null
+++ b/board/ath79/ap121/Kconfig
@@ -0,0 +1,15 @@ 
+if TARGET_AP121
+
+config SYS_BOARD
+	default "ap121"
+
+config SYS_VENDOR
+	default "ath79"
+
+config SYS_SOC
+	default "ath79"
+
+config SYS_CONFIG_NAME
+	default "ap121"
+
+endif
diff --git a/board/ath79/ap121/MAINTAINERS b/board/ath79/ap121/MAINTAINERS
new file mode 100644
index 0000000..319b521
--- /dev/null
+++ b/board/ath79/ap121/MAINTAINERS
@@ -0,0 +1,6 @@ 
+AP121 BOARD
+M:	Wills Wang <wills.wang@live.com>
+S:	Maintained
+F:	board/ath79/ap121/
+F:	include/configs/ap121.h
+F:	configs/ap121_defconfig
diff --git a/board/ath79/ap121/Makefile b/board/ath79/ap121/Makefile
new file mode 100644
index 0000000..9132118
--- /dev/null
+++ b/board/ath79/ap121/Makefile
@@ -0,0 +1,8 @@ 
+#
+# (C) Copyright 2003-2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+obj-y	= ap121.o
diff --git a/board/ath79/ap121/README b/board/ath79/ap121/README
new file mode 100644
index 0000000..104850f
--- /dev/null
+++ b/board/ath79/ap121/README
@@ -0,0 +1,18 @@ 
+ATHEROS AP121
+==================
+
+Supported hardware: AP121 referance board.
+
+Files of the AP121 port
+--------------------------
+
+arch/mips/mach-ath79/ar933x/	- The CPU support code for the Atheros ar933x
+arch/mips/include/asm/arch-ath79	- Header files for the Atheros ath79
+board/ath79/ap121/	- AP121 board specific files
+include/configs/ap121.h	- AP121 configuration file
+
+Configure
+-------------------
+
+To configure for the current board
+	make ap121_defconfig
diff --git a/board/ath79/ap121/ap121.c b/board/ath79/ap121/ap121.c
new file mode 100644
index 0000000..f60f88b
--- /dev/null
+++ b/board/ath79/ap121/ap121.c
@@ -0,0 +1,17 @@ 
+/*
+ * (C) Copyright 2015
+ * Wills Wang, <wills.wang@live.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <asm/mipsregs.h>
+#include <asm/addrspace.h>
+#include <asm/io.h>
+
+int checkboard(void)
+{
+	return 0;
+}
diff --git a/board/ath79/ap121/config.mk b/board/ath79/ap121/config.mk
new file mode 100644
index 0000000..f7dd3b7
--- /dev/null
+++ b/board/ath79/ap121/config.mk
@@ -0,0 +1,16 @@ 
+#
+# (C) Copyright 2003
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+#
+# AP121 referance board, MIPS32 core
+#
+
+# ROM version
+CONFIG_SYS_TEXT_BASE = 0x9f000000
+
+# RAM version
+#CONFIG_SYS_TEXT_BASE = 0x80010000
diff --git a/configs/ap121_defconfig b/configs/ap121_defconfig
new file mode 100644
index 0000000..cec0bb7
--- /dev/null
+++ b/configs/ap121_defconfig
@@ -0,0 +1,42 @@ 
+CONFIG_MIPS=y
+CONFIG_TARGET_AP121=y
+CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_SYS_PROMPT="ap121 # "
+CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="ap121"
+CONFIG_DM=y
+CONFIG_DM_SERIAL=y
+CONFIG_DM_SPI=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_ATH79_SPI=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_BAR=y
+CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_FLASH_EON=y
+CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_SST=y
+CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_SPI_FLASH_USE_4K_SECTORS=y
+CONFIG_SPI_FLASH_DATAFLASH=y
+CONFIG_SPI_FLASH_MTD=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_SPI=y
+# CONFIG_NET is not set
+# CONFIG_CMD_BDI is not set
+# CONFIG_CMD_CONSOLE is not set
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_XIMG is not set
+# CONFIG_CMD_ELF is not set
+# CONFIG_CMD_EXPORTENV is not set
+# CONFIG_CMD_IMPORTENV is not set
+# CONFIG_CMD_EDITENV is not set
+# CONFIG_CMD_CRC32 is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
+# CONFIG_CMD_NFS is not set
+# CONFIG_CMD_NET is not set
+CONFIG_USE_PRIVATE_LIBGCC=y
diff --git a/include/configs/ap121.h b/include/configs/ap121.h
new file mode 100644
index 0000000..5a01d11
--- /dev/null
+++ b/include/configs/ap121.h
@@ -0,0 +1,82 @@ 
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#include <linux/kconfig.h>
+#include <linux/sizes.h>
+
+#define CONFIG_ARCH_ATH79
+#define CONFIG_SOC_AR933X
+
+#define CONFIG_DISPLAY_CPUINFO
+#define CONFIG_DISPLAY_BOARDINFO
+
+#define CONFIG_OF_LIBFDT
+
+#define CONFIG_SYS_HZ                   1000
+#define CONFIG_SYS_MHZ                  200
+#define CONFIG_SYS_MIPS_TIMER_FREQ      (CONFIG_SYS_MHZ * 1000000)
+
+/* Cache Configuration */
+#define CONFIG_SYS_DCACHE_SIZE          32 * SZ_1K
+#define CONFIG_SYS_ICACHE_SIZE          64 * SZ_1K
+#define CONFIG_SYS_CACHELINE_SIZE       32
+
+#define CONFIG_SYS_MONITOR_BASE         CONFIG_SYS_TEXT_BASE
+
+#define CONFIG_SYS_MALLOC_LEN           ROUND(0x30000 + 128 * SZ_1K, 0x1000)
+
+#define CONFIG_SYS_BOOTPARAMS_LEN       128 * SZ_1K
+
+#define CONFIG_SYS_SDRAM_BASE           0x80000000
+#define CONFIG_SYS_LOAD_ADDR            0x81000000
+
+#define CONFIG_SYS_INIT_SP_OFFSET       0x20000
+#define CONFIG_SYS_NO_FLASH
+
+#define CONFIG_AR933X_SERIAL
+#define CONFIG_BAUDRATE                 115200
+#define CONFIG_SYS_BAUDRATE_TABLE       {9600, 19200, 38400, 57600, 115200}
+
+#define CONFIG_BOOTDELAY                3
+#define CONFIG_BOOTARGS                 "console=ttyS0,115200 " \
+					"root=/dev/mtdblock2 " \
+					"rootfstype=squashfs"
+#define CONFIG_BOOTCOMMAND              "sf probe;" \
+					"mtdparts default;" \
+					"bootm 0x9f300000"
+#define CONFIG_LZMA
+
+#define MTDIDS_DEFAULT                  "nor0=spi-flash.0"
+#define MTDPARTS_DEFAULT                "mtdparts=spi-flash.0:256k(u-boot)," \
+		"64k(u-boot-env),2752k(rootfs),896k(uImage),64k(NVRAM),64k(ART)"
+
+#define CONFIG_ENV_SPI_MAX_HZ           25000000
+#define CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_OFFSET               (256 * SZ_1K)
+#define CONFIG_ENV_SECT_SIZE            (64 * SZ_1K)
+#define CONFIG_ENV_SIZE                 (64 * SZ_1K)
+
+/*
+ * Command
+ */
+#define CONFIG_CMD_MTDPARTS
+
+/* Miscellaneous configurable options */
+#define CONFIG_SYS_CBSIZE               256
+#define CONFIG_SYS_MAXARGS              16
+#define CONFIG_SYS_PBSIZE               (CONFIG_SYS_CBSIZE + \
+					sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT_HUSH_PS2      "> "
+
+/*
+ * Diagnostics
+ */
+#define CONFIG_SYS_MEMTEST_START        0x80100000
+#define CONFIG_SYS_MEMTEST_END          0x83f00000
+#define CONFIG_CMD_MEMTEST
+
+#endif  /* __CONFIG_H */