From 880d54c8b5b6dac94e978b2bc20d9b8281603221 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 20:58:08 +0000 Subject: [PATCH 01/38] novatek: add the NT98560 and NT98561 Both are the NA51089 die, chip ID 0x7021, as the NT98562 and NT98566; the SDK (nt9856x v1.01.007) has a board and a prebuilt loader for each. - NT98561: the NT98562's 64 MiB DDR2 package. The SDK's cfg_561_IPCAM1_EVB differs from cfg_562_IPCAM1_EVB in the firmware's name alone; its loader runs the DDR at 522 MHz. - NT98560: external DDR3, 512 MiB on cfg_560_IPCAM1_EVB, at 933 MHz. The loader reads that DDR's profile, ConfigRam/560/51089A_DRAM1_933_ 4096.ini, so build.sh passes the loader its size too. Linux gets the first 256 MiB by default (osmem), as on the SDK's board, and the media pool the rest. U-Boot stays at 0x03900000, below 64 MiB, as on the other parts: the loader reads our device tree, not the SDK's, which puts it at 0x1E000000. The DDR size is now NVT_DDR_SIZE in Kconfig. Verified under qemu-hisilicon's nt98560 and nt98561 machines (OpenIPC/ qemu-hisilicon#222), which run the image's own loader: it reports 560_DRAM1_933_4096Mb / 561_DRAM1_522_512Mb as the SDK's prebuilt loaders do, trains the DDR, unpacks U-Boot, and U-Boot reaches the prompt twice, the second time with the environment the first saved. --- arch/arm/mach-novatek/Kconfig | 21 +++++++++++++++++ build.sh | 26 +++++++++++++++------ include/configs/novatek.h | 11 +++++---- include/configs/openipc-common.h | 5 +++- openipc/nt98560.dts | 39 ++++++++++++++++++++++++++++++++ openipc/nt98560_config | 2 ++ openipc/nt98561.dts | 16 +++++++++++++ openipc/nt98561_config | 2 ++ 8 files changed, 109 insertions(+), 13 deletions(-) create mode 100644 openipc/nt98560.dts create mode 100644 openipc/nt98560_config create mode 100644 openipc/nt98561.dts create mode 100644 openipc/nt98561_config diff --git a/arch/arm/mach-novatek/Kconfig b/arch/arm/mach-novatek/Kconfig index 61d82d704751..426391ca3256 100644 --- a/arch/arm/mach-novatek/Kconfig +++ b/arch/arm/mach-novatek/Kconfig @@ -4,6 +4,18 @@ choice prompt "Novatek SoC" default TARGET_NT98562 +config TARGET_NT98560 + bool "NT98560" + select NVT_NA51089 + help + NA51089 with external DDR3, 512 MiB on the SDK's board. + +config TARGET_NT98561 + bool "NT98561" + select NVT_NA51089 + help + NA51089 with 64 MiB of DDR2 in the package, as the NT98562. + config TARGET_NT98562 bool "NT98562" select NVT_NA51089 @@ -21,6 +33,15 @@ endchoice config NVT_NA51089 bool +config NVT_DDR_SIZE + hex + default 0x20000000 if TARGET_NT98560 + default 0x08000000 if TARGET_NT98566 + default 0x04000000 + help + The DDR at 0: the package's, or the board's for a part with + external DDR. + config SYS_SOC default "novatek" diff --git a/build.sh b/build.sh index 26c73a441360..e4b0b63f76a4 100755 --- a/build.sh +++ b/build.sh @@ -38,12 +38,14 @@ build_loader() { loaderdir=$1 chip=$2 dram_clk=$3 + dram_size=$4 rm -rf "${loaderdir}" cp -a "${LOADER_SRCDIR}" "${loaderdir}" if ! make -C "${loaderdir}/MakeCommon" release \ CROSS_COMPILE="${LOADER_CROSS_COMPILE}" \ CHIP="${chip}" DRAM1_CLK="${dram_clk}" \ + ${dram_size:+SDRAM_SIZE="${dram_size}"} \ >"${loaderdir}.log" 2>&1 &2 return 1 @@ -57,6 +59,7 @@ build_nvt() { soc=$1 chip=$2 dram_clk=$3 + dram_size=$4 builddir=${BOOT_SRCDIR}/output/build-${soc}-nor loaderdir=${BOOT_SRCDIR}/output/build-${soc}-loader loader=${loaderdir}/Project/Model/Loader${chip}_Data/Release/LD98${chip}A.bin @@ -70,7 +73,8 @@ build_nvt() { "${builddir}/scripts/dtc/dtc" -q -I dts -O dtb \ -o "${builddir}/${soc}.dtb" "openipc/${soc}.dts" || return 1 - build_loader "${loaderdir}" "${chip}" "${dram_clk}" || return 1 + build_loader "${loaderdir}" "${chip}" "${dram_clk}" "${dram_size}" || + return 1 text=$(sed -n 's/^CONFIG_SYS_TEXT_BASE=//p' "${builddir}/.config") python3 openipc/nvt-image.py "${loader}" "${builddir}/${soc}.dtb" \ @@ -80,11 +84,19 @@ build_nvt() { build_soc() { soc=$1 case "${soc}" in - # The DDR clocks of Xiongmai's loaders for these parts. The DDR is - # in the package: Configram560 writes its parameters from its own - # tables for -package=562/566, and the ConfigRam//*.ini path - # the make system names, which does not exist, is not read (a 560 - # profile of any clock and size gives the same loader). + # The DDR clocks of Xiongmai's loaders for the NT98562 / NT98566, + # and of the SDK's prebuilt LD98560A / LD98561A. The DDR of the + # 561/562/566 is in the package: Configram560 writes its + # parameters from its own tables for -package=561/562/566, and the + # ConfigRam//*.ini path the make system names, which does not + # exist, is not read (a 560 profile of any clock and size gives + # the same loader). The NT98560's DDR is on the board: its profile + # is ConfigRam/560/51089A_DRAM1__.ini, the + # SDK's 933 MHz, 4 Gbit. + nt98560) + build_nvt "${soc}" 560 933 4096 ;; + nt98561) + build_nvt "${soc}" 561 522 ;; nt98562) build_nvt "${soc}" 562 666 ;; nt98566) @@ -95,7 +107,7 @@ build_soc() { esac } -ALL_SOCS="nt98562 nt98566" +ALL_SOCS="nt98560 nt98561 nt98562 nt98566" SOCS="$@" [ -z "${SOCS}" ] && SOCS="${ALL_SOCS}" diff --git a/include/configs/novatek.h b/include/configs/novatek.h index 7df436cc8f0b..87c592ff8ce0 100644 --- a/include/configs/novatek.h +++ b/include/configs/novatek.h @@ -10,11 +10,12 @@ #include #define CONFIG_SYS_SDRAM_BASE NVT_DDR_BASE -/* The DDR in the package */ -#ifdef CONFIG_TARGET_NT98566 -#define PHYS_SDRAM_1_SIZE 0x08000000 -#else -#define PHYS_SDRAM_1_SIZE 0x04000000 +/* The DDR in the package, or on the board */ +#define PHYS_SDRAM_1_SIZE CONFIG_NVT_DDR_SIZE + +/* Linux's share of a 512 MiB part, as on the SDK's boards (mem=) */ +#if CONFIG_NVT_DDR_SIZE >= 0x20000000 +#define OPENIPC_OSMEM "256M" #endif /* The loader starts U-Boot at its link address */ diff --git a/include/configs/openipc-common.h b/include/configs/openipc-common.h index 159998815d65..eb3e77b1a7c8 100644 --- a/include/configs/openipc-common.h +++ b/include/configs/openipc-common.h @@ -26,9 +26,12 @@ /* * Kernel memory (mem=): the rest of the DDR is the media pool, which * ft_board_setup() hands to the vendor modules (/hdal-memory/media). - * What OpenIPC's install guide sets on the vendor U-Boot. + * What OpenIPC's install guide sets on the vendor U-Boot; a part with + * more DDR than the 128 MiB packages gives Linux what its SDK board does. */ +#ifndef OPENIPC_OSMEM #define OPENIPC_OSMEM "32M" +#endif /* Clear of the kernel at 0x8000 as it unpacks, below U-Boot */ #define OPENIPC_BASEADDR 0x01000000 diff --git a/openipc/nt98560.dts b/openipc/nt98560.dts new file mode 100644 index 000000000000..655ebb596683 --- /dev/null +++ b/openipc/nt98560.dts @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * NT98560: the NA51089 die with external DDR3, 512 MiB on the SDK's board + * (cfg_560_IPCAM1_EVB), which gives Linux the first 256 MiB and the media + * pool the rest. U-Boot stays where the NT98562 has it, below 64 MiB. + */ +/dts-v1/; + +/include/ "na51089.dtsi" + +/ { + nvt_memory_cfg { + dram { + reg = <0x00 0x20000000>; + }; + }; + + memory { + reg = <0x00 0x10000000>; + }; + + hdal-memory { + media { + reg = <0x10000000 0x10000000>; + }; + }; + + hdal-maxpath-cfg { + vdocap_active_list = <0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00>; + vdoprc_maxdevice = <0x02>; + vdoenc_maxpath = <0x08>; + vdodec_maxpath = <0x02>; + }; + + nvt_info { + BIN_NAME = "FW98560A"; + BIN_NAME_T = "FW98560T"; + }; +}; diff --git a/openipc/nt98560_config b/openipc/nt98560_config new file mode 100644 index 000000000000..cce946df6eb3 --- /dev/null +++ b/openipc/nt98560_config @@ -0,0 +1,2 @@ +CONFIG_TARGET_NT98560=y +CONFIG_PRODUCT_SOC="nt98560" diff --git a/openipc/nt98561.dts b/openipc/nt98561.dts new file mode 100644 index 000000000000..22a6597a7a27 --- /dev/null +++ b/openipc/nt98561.dts @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * NT98561: the NT98562's die and 64 MiB DDR2 package; the SDK's + * cfg_561_IPCAM1_EVB differs from cfg_562_IPCAM1_EVB in the firmware's + * name alone. + */ +/dts-v1/; + +/include/ "na51089.dtsi" + +/ { + nvt_info { + BIN_NAME = "FW98561A"; + BIN_NAME_T = "FW98561T"; + }; +}; diff --git a/openipc/nt98561_config b/openipc/nt98561_config new file mode 100644 index 000000000000..340492e55cbd --- /dev/null +++ b/openipc/nt98561_config @@ -0,0 +1,2 @@ +CONFIG_TARGET_NT98561=y +CONFIG_PRODUCT_SOC="nt98561" From b2aa20b37b2b43b0ffbb47fdf3c77805f6e95027 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:00:22 +0000 Subject: [PATCH 02/38] novatek: import the NA51055 loader from the NT9852x SDK The loader of Novatek's NT9852x Linux SDK, release nt9852x_loader_release_v2.05.013 (the same sources as the SDK tree's na51055_ldr), as the SDK ships it: the boot flow sources (LibExt/ LIBExt_src/Ctrl_Flow, Project/Model/Src), the headers, the make system, the DRAM parameter tables of the NT985xx parts (Tools/ConfigRam: 520, 522, 523, 523_A, 525, 528, 529), and what Novatek ships as binaries: the driver and DRAM libraries (ARC/Lib/Release) and the Linux host tools (Tools/Bin: nvt-ld-op, bfc, Configram520, encrypt_boot, encrypt_boot_dump). One loader serves both dies of the SDK: NA51055 (chip ID 0x4821; NT98520/522/523/525, ModelConfig_EMU_EVB.txt) and NA51084 (0x5021; NT98528/529, ModelConfig_EMU_EVB_528.txt). The mask ROM loads it into SRAM; it trains the DDR, reads the device tree at flash block 1, loads U-Boot as the tree says and starts it, as NA51089's does. Left out: the documentation, the Windows tools and scripts, the ICE and debugger scripts, the sample AES/RSA keys (secure boot is off), the tables of the NT96xxx parts (570, 575, 580, NC520), and the build output the archive carries (Project/Model/Loader520_Data, Loader525_Data and the Ctrl_Flow objects), which a build would otherwise pick up. .gitattributes keeps the vendor bytes as they are; .gitignore lets the libraries in. --- board/novatek/na51055/loader/.gitattributes | 2 + board/novatek/na51055/loader/.gitignore | 2 + .../na51055/loader/ARC/Lib/Release/CA9.a | Bin 0 -> 4566 bytes .../loader/ARC/Lib/Release/Common_exFAT.a | Bin 0 -> 28158 bytes .../loader/ARC/Lib/Release/Common_normal.a | Bin 0 -> 27130 bytes .../na51055/loader/ARC/Lib/Release/Compress.a | Bin 0 -> 1194 bytes .../loader/ARC/Lib/Release/Ctrl_Flow.a | Bin 0 -> 27418 bytes .../na51055/loader/ARC/Lib/Release/Debug.a | Bin 0 -> 2492 bytes .../na51055/loader/ARC/Lib/Release/Driver.a | Bin 0 -> 18916 bytes .../loader/ARC/Lib/Release/Remap_LZ520.a | Bin 0 -> 4228 bytes .../loader/ARC/Lib/Release/Remap_LZ522.a | Bin 0 -> 4220 bytes .../loader/ARC/Lib/Release/Remap_LZ523.a | Bin 0 -> 4220 bytes .../loader/ARC/Lib/Release/Remap_LZ523_A.a | Bin 0 -> 4314 bytes .../loader/ARC/Lib/Release/Remap_LZ525.a | Bin 0 -> 4240 bytes .../loader/ARC/Lib/Release/Remap_LZ528.a | Bin 0 -> 4124 bytes .../loader/ARC/Lib/Release/Remap_LZ529.a | Bin 0 -> 4124 bytes .../loader/ARC/Lib/Release/Remap_LZ562.a | Bin 0 -> 4204 bytes .../loader/ARC/Lib/Release/Remap_LZ565.a | Bin 0 -> 4204 bytes .../loader/ARC/Lib/Release/Remap_LZ570.a | Bin 0 -> 4204 bytes .../loader/ARC/Lib/Release/Remap_LZ575.a | Bin 0 -> 4204 bytes .../loader/ARC/Lib/Release/Remap_LZ580.a | Bin 0 -> 4132 bytes .../loader/ARC/Lib/Release/Remap_LZNC520.a | Bin 0 -> 4306 bytes .../loader/ARC/Lib/Release/Remap_NM520.a | Bin 0 -> 3596 bytes .../loader/ARC/Lib/Release/Remap_NM525.a | Bin 0 -> 3596 bytes .../loader/ARC/Lib/Release/Reset_528.a | Bin 0 -> 127396 bytes .../loader/ARC/Lib/Release/Reset_52x.a | Bin 0 -> 21920 bytes .../loader/ARC/Lib/Release/STRGEXT_Eth.a | Bin 0 -> 13108 bytes .../loader/ARC/Lib/Release/STRGEXT_NONE.a | Bin 0 -> 1544 bytes .../loader/ARC/Lib/Release/STRGEXT_Sdio1.a | Bin 0 -> 4104 bytes .../loader/ARC/Lib/Release/STRGEXT_Sdio2.a | Bin 0 -> 3712 bytes .../loader/ARC/Lib/Release/STRGEXT_Usb.a | Bin 0 -> 4878 bytes .../loader/ARC/Lib/Release/STRGINT_EMMC.a | Bin 0 -> 8330 bytes .../ARC/Lib/Release/STRGINT_NandEccRS.a | Bin 0 -> 12404 bytes .../loader/ARC/Lib/Release/STRGINT_NandSpi.a | Bin 0 -> 12614 bytes .../loader/ARC/Lib/Release/STRGINT_SpiFlash.a | Bin 0 -> 9952 bytes .../na51055/loader/ARC/Lib/Release/fdt.a | Bin 0 -> 13942 bytes .../na51055/loader/ARC/Lib/Release/nvtpack.a | Bin 0 -> 6992 bytes board/novatek/na51055/loader/Include/CMacro.h | 35 + .../na51055/loader/Include/Driver/CC.h | 41 + .../na51055/loader/Include/Driver/Cache.h | 511 +++ .../na51055/loader/Include/Driver/Clock.h | 26 + .../na51055/loader/Include/Driver/GPIO.h | 314 ++ .../na51055/loader/Include/Driver/Memory.h | 436 +++ .../na51055/loader/Include/Driver/crypto.h | 98 + .../na51055/loader/Include/Driver/nand.h | 123 + .../na51055/loader/Include/Driver/nor.h | 51 + .../na51055/loader/Include/Driver/pad.h | 874 +++++ .../na51055/loader/Include/Driver/regdef.h | 199 + board/novatek/na51055/loader/Include/IOReg.h | 190 + board/novatek/na51055/loader/Include/SMacro.h | 129 + .../na51055/loader/Include/StorageDef.h | 446 +++ board/novatek/na51055/loader/Include/Type.h | 9 + .../novatek/na51055/loader/Include/constant.h | 112 + board/novatek/na51055/loader/Include/ctype.h | 36 + board/novatek/na51055/loader/Include/debug.h | 29 + board/novatek/na51055/loader/Include/fat.h | 48 + .../na51055/loader/Include/fdt/compiler.h | 56 + .../novatek/na51055/loader/Include/fdt/fdt.h | 111 + .../na51055/loader/Include/fdt/libfdt.h | 1580 ++++++++ .../na51055/loader/Include/fdt/libfdt_env.h | 63 + board/novatek/na51055/loader/Include/fuart.h | 58 + board/novatek/na51055/loader/Include/gic.h | 195 + board/novatek/na51055/loader/Include/global.h | 43 + board/novatek/na51055/loader/Include/limits.h | 31 + board/novatek/na51055/loader/Include/loader.h | 83 + board/novatek/na51055/loader/Include/lz.h | 25 + .../loader/Include/modelext/bin_info.h | 191 + .../Include/modelext/dram_partition_info.h | 55 + .../Include/modelext/emb_partition_info.h | 56 + .../loader/Include/modelext/gpio_info.h | 42 + .../loader/Include/modelext/interrupt.h | 764 ++++ .../loader/Include/modelext/model_cfg.h | 8 + .../loader/Include/modelext/modelext_info.h | 35 + .../loader/Include/modelext/modelext_parser.h | 78 + .../loader/Include/modelext/shm_info.h | 131 + .../na51055/loader/Include/modelext/top.h | 1382 +++++++ .../na51055/loader/Include/nvtpack/nvtpack.h | 193 + board/novatek/na51055/loader/Include/rtc.h | 49 + board/novatek/na51055/loader/Include/signal.h | 4 + board/novatek/na51055/loader/Include/stdarg.h | 19 + board/novatek/na51055/loader/Include/stdio.h | 23 + board/novatek/na51055/loader/Include/stdlib.h | 4 + board/novatek/na51055/loader/Include/string.h | 47 + board/novatek/na51055/loader/Include/timer.h | 31 + .../LibExt/LIBExt_src/Ctrl_Flow/Makefile | 60 + .../LibExt/LIBExt_src/Ctrl_Flow/bl_func.c | 3381 +++++++++++++++++ .../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h | 297 ++ .../loader/LibExt/LIBExt_src/Ctrl_Flow/main.c | 136 + .../loader/LibExt/LIBExt_src/Ctrl_Flow/main.h | 55 + .../LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c | 41 + .../LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c | 38 + board/novatek/na51055/loader/LibExt/Makefile | 62 + .../na51055/loader/MakeCommon/InputSource.txt | 177 + .../na51055/loader/MakeCommon/MakeCommon.txt | 632 +++ .../na51055/loader/MakeCommon/MakeOption.txt | 280 ++ .../na51055/loader/MakeCommon/Makefile | 126 + .../na51055/loader/MakeCommon/OutputImg.txt | 556 +++ .../na51055/loader/MakeCommon/OutputLib.txt | 155 + .../na51055/loader/MakeCommon/dump_tmp | 0 .../loader/MakeCommon/make_combo_loader.sh | 229 ++ .../na51055/loader/Project/Model/LDS_LZ.lds | 168 + .../loader/Project/Model/LDS_LZ_528.lds | 193 + .../na51055/loader/Project/Model/LDS_NM.lds | 161 + .../loader/Project/Model/MakeConfig.txt | 972 +++++ .../na51055/loader/Project/Model/Makefile | 129 + .../loader/Project/Model/ModelConfig.txt | 6 + .../Project/Model/ModelConfig_EMU_EVB.txt | 255 ++ .../Project/Model/ModelConfig_EMU_EVB_528.txt | 236 ++ .../loader/Project/Model/Src/prj_main.c | 207 + .../loader/Project/Model/Src/prj_main.h | 82 + .../na51055/loader/Tools/Bin/Configram520 | Bin 0 -> 1877416 bytes board/novatek/na51055/loader/Tools/Bin/bfc | Bin 0 -> 26872 bytes .../na51055/loader/Tools/Bin/encrypt_boot | Bin 0 -> 75800 bytes .../loader/Tools/Bin/encrypt_boot_dump | Bin 0 -> 75832 bytes .../na51055/loader/Tools/Bin/nvt-ld-op | Bin 0 -> 754576 bytes .../ConfigRam/520/51055A_DRAM1_400_1024.ini | 138 + .../ConfigRam/520/51055A_DRAM1_400_2048.ini | 138 + .../ConfigRam/520/51055A_DRAM1_400_4096.ini | 138 + .../ConfigRam/520/51055A_DRAM1_507_1024.ini | 138 + .../ConfigRam/520/51055A_DRAM1_507_2048.ini | 138 + .../ConfigRam/520/51055A_DRAM1_507_4096.ini | 138 + .../ConfigRam/520/51055A_DRAM1_793_1024.ini | 138 + .../ConfigRam/520/51055A_DRAM1_793_2048.ini | 138 + .../ConfigRam/520/51055A_DRAM1_793_4096.ini | 138 + .../ConfigRam/520/51055A_DRAM1_933_1024.ini | 138 + .../ConfigRam/520/51055A_DRAM1_933_2048.ini | 138 + .../ConfigRam/520/51055A_DRAM1_933_4096.ini | 138 + .../ConfigRam/522/51055A_DRAM2_507_1024.ini | 130 + .../ConfigRam/522/51055A_DRAM2_507_2048.ini | 130 + .../ConfigRam/522/51055A_DRAM2_507_4096.ini | 130 + .../ConfigRam/522/51055A_DRAM2_700_1024.ini | 130 + .../ConfigRam/522/51055A_DRAM2_700_2048.ini | 130 + .../ConfigRam/522/51055A_DRAM2_700_4096.ini | 130 + .../ConfigRam/522/51055A_DRAM2_793_1024.ini | 130 + .../ConfigRam/522/51055A_DRAM2_793_2048.ini | 130 + .../ConfigRam/522/51055A_DRAM2_793_4096.ini | 130 + .../ConfigRam/522/51055A_DRAM2_933_1024.ini | 130 + .../ConfigRam/522/51055A_DRAM2_933_2048.ini | 130 + .../ConfigRam/522/51055A_DRAM2_933_4096.ini | 130 + .../ConfigRam/523/51055A_DRAM2_507_1024.ini | 130 + .../ConfigRam/523/51055A_DRAM2_507_2048.ini | 130 + .../ConfigRam/523/51055A_DRAM2_507_4096.ini | 130 + .../ConfigRam/523/51055A_DRAM2_700_1024.ini | 130 + .../ConfigRam/523/51055A_DRAM2_700_2048.ini | 130 + .../ConfigRam/523/51055A_DRAM2_700_4096.ini | 130 + .../ConfigRam/523/51055A_DRAM2_793_1024.ini | 130 + .../ConfigRam/523/51055A_DRAM2_793_2048.ini | 130 + .../ConfigRam/523/51055A_DRAM2_793_4096.ini | 130 + .../ConfigRam/523/51055A_DRAM2_933_1024.ini | 130 + .../ConfigRam/523/51055A_DRAM2_933_2048.ini | 130 + .../ConfigRam/523/51055A_DRAM2_933_4096.ini | 130 + .../ConfigRam/523_A/51055A_DRAM2_507_1024.ini | 130 + .../ConfigRam/523_A/51055A_DRAM2_507_2048.ini | 130 + .../ConfigRam/523_A/51055A_DRAM2_507_4096.ini | 130 + .../ConfigRam/523_A/51055A_DRAM2_700_1024.ini | 130 + .../ConfigRam/523_A/51055A_DRAM2_700_2048.ini | 130 + .../ConfigRam/523_A/51055A_DRAM2_700_4096.ini | 130 + .../ConfigRam/523_A/51055A_DRAM2_793_1024.ini | 130 + .../ConfigRam/523_A/51055A_DRAM2_793_2048.ini | 130 + .../ConfigRam/523_A/51055A_DRAM2_793_4096.ini | 130 + .../ConfigRam/523_A/51055A_DRAM2_933_1024.ini | 130 + .../ConfigRam/523_A/51055A_DRAM2_933_2048.ini | 130 + .../ConfigRam/523_A/51055A_DRAM2_933_4096.ini | 130 + .../ConfigRam/525/51055A_DRAM1_507_1024.ini | 138 + .../ConfigRam/525/51055A_DRAM1_507_2048.ini | 138 + .../ConfigRam/525/51055A_DRAM1_507_4096.ini | 138 + .../ConfigRam/525/51055A_DRAM1_700_1024.ini | 138 + .../ConfigRam/525/51055A_DRAM1_700_2048.ini | 138 + .../ConfigRam/525/51055A_DRAM1_700_4096.ini | 138 + .../ConfigRam/525/51055A_DRAM1_793_1024.ini | 138 + .../ConfigRam/525/51055A_DRAM1_793_2048.ini | 138 + .../525/51055A_DRAM1_793_2048_ODT.ini | 138 + .../ConfigRam/525/51055A_DRAM1_793_4096.ini | 138 + .../525/51055A_DRAM1_793_4096_ODT.ini | 138 + .../ConfigRam/525/51055A_DRAM1_933_1024.ini | 138 + .../ConfigRam/525/51055A_DRAM1_933_2048.ini | 138 + .../ConfigRam/525/51055A_DRAM1_933_4096.ini | 138 + .../ConfigRam/525/51055A_DRAM2_507_1024.ini | 130 + .../ConfigRam/525/51055A_DRAM2_507_2048.ini | 130 + .../ConfigRam/525/51055A_DRAM2_507_4096.ini | 130 + .../ConfigRam/525/51055A_DRAM2_700_1024.ini | 130 + .../ConfigRam/525/51055A_DRAM2_700_2048.ini | 130 + .../ConfigRam/525/51055A_DRAM2_700_4096.ini | 130 + .../ConfigRam/525/51055A_DRAM2_793_1024.ini | 130 + .../ConfigRam/525/51055A_DRAM2_793_2048.ini | 130 + .../525/51055A_DRAM2_793_2048_ODT.ini | 130 + .../ConfigRam/525/51055A_DRAM2_793_4096.ini | 130 + .../525/51055A_DRAM2_793_4096_ODT.ini | 130 + .../ConfigRam/525/51055A_DRAM2_933_1024.ini | 130 + .../ConfigRam/525/51055A_DRAM2_933_2048.ini | 130 + .../ConfigRam/525/51055A_DRAM2_933_4096.ini | 130 + .../ConfigRam/528/51055A_DRAM1_1066_1024.ini | 123 + .../ConfigRam/528/51055A_DRAM1_1066_2048.ini | 123 + .../ConfigRam/528/51055A_DRAM1_1066_4096.ini | 123 + .../ConfigRam/528/51055A_DRAM1_1066_8192.ini | 123 + .../ConfigRam/528/51055A_DRAM1_793_1024.ini | 123 + .../ConfigRam/528/51055A_DRAM1_793_2048.ini | 123 + .../ConfigRam/528/51055A_DRAM1_793_4096.ini | 123 + .../ConfigRam/528/51055A_DRAM1_793_8192.ini | 123 + .../ConfigRam/528/51055A_DRAM1_933_1024.ini | 123 + .../ConfigRam/528/51055A_DRAM1_933_2048.ini | 123 + .../ConfigRam/528/51055A_DRAM1_933_4096.ini | 123 + .../ConfigRam/528/51055A_DRAM1_933_8192.ini | 123 + .../ConfigRam/528/51055A_DRAM2_1066_1024.ini | 123 + .../ConfigRam/528/51055A_DRAM2_1066_2048.ini | 123 + .../ConfigRam/528/51055A_DRAM2_1066_4096.ini | 123 + .../ConfigRam/528/51055A_DRAM2_1066_8192.ini | 123 + .../ConfigRam/528/51055A_DRAM2_793_1024.ini | 123 + .../ConfigRam/528/51055A_DRAM2_793_2048.ini | 123 + .../ConfigRam/528/51055A_DRAM2_793_4096.ini | 123 + .../ConfigRam/528/51055A_DRAM2_793_8192.ini | 123 + .../ConfigRam/528/51055A_DRAM2_933_1024.ini | 123 + .../ConfigRam/528/51055A_DRAM2_933_2048.ini | 123 + .../ConfigRam/528/51055A_DRAM2_933_4096.ini | 123 + .../ConfigRam/528/51055A_DRAM2_933_8192.ini | 123 + .../ConfigRam/529/51055A_DRAM1_1066_1024.ini | 123 + .../ConfigRam/529/51055A_DRAM1_1066_2048.ini | 123 + .../ConfigRam/529/51055A_DRAM1_1066_4096.ini | 123 + .../ConfigRam/529/51055A_DRAM1_1066_8192.ini | 123 + .../ConfigRam/529/51055A_DRAM1_793_1024.ini | 123 + .../ConfigRam/529/51055A_DRAM1_793_2048.ini | 123 + .../ConfigRam/529/51055A_DRAM1_793_4096.ini | 123 + .../ConfigRam/529/51055A_DRAM1_793_8192.ini | 123 + .../ConfigRam/529/51055A_DRAM1_933_1024.ini | 123 + .../ConfigRam/529/51055A_DRAM1_933_2048.ini | 123 + .../ConfigRam/529/51055A_DRAM1_933_4096.ini | 123 + .../ConfigRam/529/51055A_DRAM1_933_8192.ini | 123 + .../ConfigRam/529/51055A_DRAM2_1066_1024.ini | 123 + .../ConfigRam/529/51055A_DRAM2_1066_2048.ini | 123 + .../ConfigRam/529/51055A_DRAM2_1066_4096.ini | 123 + .../ConfigRam/529/51055A_DRAM2_1066_8192.ini | 123 + .../ConfigRam/529/51055A_DRAM2_793_1024.ini | 123 + .../ConfigRam/529/51055A_DRAM2_793_2048.ini | 123 + .../ConfigRam/529/51055A_DRAM2_793_4096.ini | 123 + .../ConfigRam/529/51055A_DRAM2_793_8192.ini | 123 + .../ConfigRam/529/51055A_DRAM2_933_1024.ini | 123 + .../ConfigRam/529/51055A_DRAM2_933_2048.ini | 123 + .../ConfigRam/529/51055A_DRAM2_933_4096.ini | 123 + .../ConfigRam/529/51055A_DRAM2_933_8192.ini | 123 + 239 files changed, 33694 insertions(+) create mode 100644 board/novatek/na51055/loader/.gitattributes create mode 100644 board/novatek/na51055/loader/.gitignore create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/CA9.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Common_exFAT.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Common_normal.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Compress.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Ctrl_Flow.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Debug.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Driver.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ520.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ522.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ523.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ523_A.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ525.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ528.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ529.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ562.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ565.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ570.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ575.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ580.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZNC520.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_NM520.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Remap_NM525.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Reset_528.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/Reset_52x.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/STRGEXT_Eth.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/STRGEXT_NONE.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/STRGEXT_Sdio1.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/STRGEXT_Sdio2.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/STRGEXT_Usb.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/STRGINT_EMMC.a create mode 100755 board/novatek/na51055/loader/ARC/Lib/Release/STRGINT_NandEccRS.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/STRGINT_NandSpi.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/STRGINT_SpiFlash.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/fdt.a create mode 100644 board/novatek/na51055/loader/ARC/Lib/Release/nvtpack.a create mode 100755 board/novatek/na51055/loader/Include/CMacro.h create mode 100755 board/novatek/na51055/loader/Include/Driver/CC.h create mode 100755 board/novatek/na51055/loader/Include/Driver/Cache.h create mode 100755 board/novatek/na51055/loader/Include/Driver/Clock.h create mode 100755 board/novatek/na51055/loader/Include/Driver/GPIO.h create mode 100755 board/novatek/na51055/loader/Include/Driver/Memory.h create mode 100755 board/novatek/na51055/loader/Include/Driver/crypto.h create mode 100755 board/novatek/na51055/loader/Include/Driver/nand.h create mode 100755 board/novatek/na51055/loader/Include/Driver/nor.h create mode 100755 board/novatek/na51055/loader/Include/Driver/pad.h create mode 100755 board/novatek/na51055/loader/Include/Driver/regdef.h create mode 100755 board/novatek/na51055/loader/Include/IOReg.h create mode 100755 board/novatek/na51055/loader/Include/SMacro.h create mode 100755 board/novatek/na51055/loader/Include/StorageDef.h create mode 100755 board/novatek/na51055/loader/Include/Type.h create mode 100755 board/novatek/na51055/loader/Include/constant.h create mode 100755 board/novatek/na51055/loader/Include/ctype.h create mode 100755 board/novatek/na51055/loader/Include/debug.h create mode 100755 board/novatek/na51055/loader/Include/fat.h create mode 100755 board/novatek/na51055/loader/Include/fdt/compiler.h create mode 100755 board/novatek/na51055/loader/Include/fdt/fdt.h create mode 100644 board/novatek/na51055/loader/Include/fdt/libfdt.h create mode 100755 board/novatek/na51055/loader/Include/fdt/libfdt_env.h create mode 100755 board/novatek/na51055/loader/Include/fuart.h create mode 100755 board/novatek/na51055/loader/Include/gic.h create mode 100755 board/novatek/na51055/loader/Include/global.h create mode 100755 board/novatek/na51055/loader/Include/limits.h create mode 100755 board/novatek/na51055/loader/Include/loader.h create mode 100755 board/novatek/na51055/loader/Include/lz.h create mode 100755 board/novatek/na51055/loader/Include/modelext/bin_info.h create mode 100755 board/novatek/na51055/loader/Include/modelext/dram_partition_info.h create mode 100755 board/novatek/na51055/loader/Include/modelext/emb_partition_info.h create mode 100755 board/novatek/na51055/loader/Include/modelext/gpio_info.h create mode 100755 board/novatek/na51055/loader/Include/modelext/interrupt.h create mode 100755 board/novatek/na51055/loader/Include/modelext/model_cfg.h create mode 100755 board/novatek/na51055/loader/Include/modelext/modelext_info.h create mode 100755 board/novatek/na51055/loader/Include/modelext/modelext_parser.h create mode 100755 board/novatek/na51055/loader/Include/modelext/shm_info.h create mode 100755 board/novatek/na51055/loader/Include/modelext/top.h create mode 100755 board/novatek/na51055/loader/Include/nvtpack/nvtpack.h create mode 100755 board/novatek/na51055/loader/Include/rtc.h create mode 100755 board/novatek/na51055/loader/Include/signal.h create mode 100755 board/novatek/na51055/loader/Include/stdarg.h create mode 100755 board/novatek/na51055/loader/Include/stdio.h create mode 100755 board/novatek/na51055/loader/Include/stdlib.h create mode 100755 board/novatek/na51055/loader/Include/string.h create mode 100755 board/novatek/na51055/loader/Include/timer.h create mode 100755 board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile create mode 100755 board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c create mode 100755 board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h create mode 100755 board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c create mode 100755 board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/main.h create mode 100755 board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c create mode 100755 board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c create mode 100755 board/novatek/na51055/loader/LibExt/Makefile create mode 100755 board/novatek/na51055/loader/MakeCommon/InputSource.txt create mode 100755 board/novatek/na51055/loader/MakeCommon/MakeCommon.txt create mode 100755 board/novatek/na51055/loader/MakeCommon/MakeOption.txt create mode 100755 board/novatek/na51055/loader/MakeCommon/Makefile create mode 100755 board/novatek/na51055/loader/MakeCommon/OutputImg.txt create mode 100755 board/novatek/na51055/loader/MakeCommon/OutputLib.txt create mode 100755 board/novatek/na51055/loader/MakeCommon/dump_tmp create mode 100755 board/novatek/na51055/loader/MakeCommon/make_combo_loader.sh create mode 100755 board/novatek/na51055/loader/Project/Model/LDS_LZ.lds create mode 100755 board/novatek/na51055/loader/Project/Model/LDS_LZ_528.lds create mode 100755 board/novatek/na51055/loader/Project/Model/LDS_NM.lds create mode 100755 board/novatek/na51055/loader/Project/Model/MakeConfig.txt create mode 100755 board/novatek/na51055/loader/Project/Model/Makefile create mode 100755 board/novatek/na51055/loader/Project/Model/ModelConfig.txt create mode 100755 board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB.txt create mode 100755 board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB_528.txt create mode 100755 board/novatek/na51055/loader/Project/Model/Src/prj_main.c create mode 100755 board/novatek/na51055/loader/Project/Model/Src/prj_main.h create mode 100755 board/novatek/na51055/loader/Tools/Bin/Configram520 create mode 100755 board/novatek/na51055/loader/Tools/Bin/bfc create mode 100755 board/novatek/na51055/loader/Tools/Bin/encrypt_boot create mode 100755 board/novatek/na51055/loader/Tools/Bin/encrypt_boot_dump create mode 100755 board/novatek/na51055/loader/Tools/Bin/nvt-ld-op create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_400_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_400_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_400_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_507_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_507_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_507_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_793_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_793_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_793_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_933_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_933_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_933_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_507_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_507_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_507_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_700_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_700_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_700_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_793_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_793_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_793_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_933_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_933_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_933_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_507_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_507_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_507_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_700_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_700_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_700_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_793_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_793_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_793_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_933_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_933_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_933_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_507_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_507_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_507_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_700_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_700_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_700_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_793_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_793_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_793_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_933_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_933_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_933_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_507_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_507_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_507_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_700_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_700_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_700_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_2048_ODT.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_4096_ODT.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_933_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_933_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_933_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_507_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_507_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_507_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_700_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_700_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_700_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_2048_ODT.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_4096_ODT.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_933_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_933_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_933_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_8192.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_8192.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_8192.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_8192.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_8192.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_8192.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_8192.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_8192.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_8192.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_8192.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_8192.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_1024.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_2048.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_4096.ini create mode 100755 board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_8192.ini diff --git a/board/novatek/na51055/loader/.gitattributes b/board/novatek/na51055/loader/.gitattributes new file mode 100644 index 000000000000..1c5b20e00b05 --- /dev/null +++ b/board/novatek/na51055/loader/.gitattributes @@ -0,0 +1,2 @@ +# The vendor loader, as the SDK ships it: no line-ending conversion +* -text diff --git a/board/novatek/na51055/loader/.gitignore b/board/novatek/na51055/loader/.gitignore new file mode 100644 index 000000000000..f84d41d3cbe0 --- /dev/null +++ b/board/novatek/na51055/loader/.gitignore @@ -0,0 +1,2 @@ +# The vendor libraries the loader links against +!*.a diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/CA9.a b/board/novatek/na51055/loader/ARC/Lib/Release/CA9.a new file mode 100644 index 0000000000000000000000000000000000000000..3c7ec4a4eb136b4d1e0772d662e084a3f800e929 GIT binary patch literal 4566 zcmeHJUu;uV82@f>w{DlQKa5FN(cR&U6Ii)jyKY6?pKeZZC}u$g5!bu6q>W`=x(-Jq zp~e>zVlZkV2`_uprwz;!6Io`$qc2P(fj8dp!89ZMkpOXi-?``9p4}BCKKSHGPQUMW zzTf$MU++2hp3}O=%*9i^+Ae)<3xvawa8Eeg9ny7!h2&pd4+VSpgqQ{ZbpXnPf7=J& zdVBB0aWj)nnEB-1K{K984rDSg7AJ2ko=KV$V+oGTQXp;58N-RDM2JsLkCmcB1gVwFcT(^IL@q?us< z9mL4HxpY2h4FNO$tiAB^iU%THp{@}BHH>f=cR|Q7tSz9&v{SF_8&(tr7v5?Lv_lC2 z^lxC}6(MHYVJkF)I#O7GIbZ4*&!b-pi?C#PZmi&AHuZUmSNoQ3??1D2JA0#ComRDz?3r5{o?>qu>7Z>7!kUlT zeR}Y>o8FjitlWg975n*6-rei+7I@xyAC;b#QRE-o7tAVdkxb#xkm9>3A`A_0FuCuoE^yY#~u#_NzcdML^f_-Ha1 z2^&E(5e_EefrvTY9Y1OWyOQJG#t|6k!MD*&n&W9u{ODE;W^?)EOvgY3DmBkQl~V26 zDO*&p(yaKDXWiSB?aGk+Vzc)dzw_LZal@@u34*#N3W!~D7_sWWZm7l)(%g*Q zg^JIwVYu<@0#I*{xowXe6)GJ33dTQZv#fYb!lXAVVaoTdgemT}|D-j)UcxpN9Thx| z{2n=s@hV5Wiq)svtSZ|hM+MEn*BF1F&7uRh)KsW(@M|3UH6=27D%3jowT!>VX4Tpr zIVwK+wd+yO_*-pOX=N;agM;6|__X`1)*u{aRcLhZ8y)c`N4&`q-{Qbt*nuOoTwd&( zaDPP6He-K{4i8IG-Z4Rmlk#NxFO}HVZcm8RERmf^LR%i%5_A3ds&op@B&A?&i=3N!FW`^ypLur(=ZHjcx}*?}$V1Dcsm}CWJl^IDL)Y7kJg26(SfD?q9qEsYU<* literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/Common_exFAT.a b/board/novatek/na51055/loader/ARC/Lib/Release/Common_exFAT.a new file mode 100644 index 0000000000000000000000000000000000000000..6c5ed25241f5511774190ef546247a90c8314369 GIT binary patch literal 28158 zcmeHw4|r77nfJN(P9~E{NQNY62mvQEV3V1UP7=UCu!c#v{0TNFXc5z8LNYKZAxV>9 z$3I&KMT=-{EVNCl+oe`p>$>vCr4Ou4Ls#6z{pfx(h@U}pWvMbiy6%i3Tundue($~a z%-k7Z#kJ43+vn-~D<=dw!oLHU$mz})vQ^wXVuP{b=?fR z-J?bsf9>|!H5zTV`>c$y8pfoPpWRJ+mND0(SLSAY!dSZd(p8Lk?_f-x!`Ncz@p;{C zkaycvYg+qP_4?PY>FD(L-PzagU(YC{qpRQF+tu2+YJK;HuKra$t-bvn{T+q!;LUt4PzTiwy$Ko!7lS-xadpTEDc z_m1W3d%PRgtnv5GYj5vGzG@USzg!f=+|twD+V5ZHZ)@`3$u{(NuIlJp)kk@(`G!jN z`}_J=wFUfb>-sjVS3^_{dV0J2{cZiL{9Uc9QF)XwCA__(@6r*fD7JRhh7O}rY-ul= zrP1G3z0e7zICf%IhDY+^} z-aaM9#7R@X$jTOnx1UpbGhKa0>(8C<-R6}d-7yOrIu-ktP*HTW#ep=ptXublH-AL5 zQ|Q18+dsV5tIWxCtvuR{6z@hCzF>=IFC5>U? ziG*KMLZt)Vf>*^4L*4;z-eJ&H?-XZ@9?3ApGELu8_E$B0Y&!e9%!5amnp<o@%BHHt!X>I-)G}c^U^7u(E;h%hB#wrm7(urg~EA$l1i}s8t#>t98_@)zMWYH@&9xSFzEh zqAe!mJ<(FoxFR@l7|k$RXk#Kf+vBqgvx!tQ#8;!(RN0WS?6%I=l>M_`VGmiPF`?jo zZ~oESiwC`VueLZ4o+XZ%Z+(gNbgpQ4YIMLvX_qNe)wFiCBrVRD!9{WqS9;r)W9wdF zY)tS_>8K>fB3cbm9)sSjSEUbG!=N_5(x}C`ok7B_zf^3Yd8*WTTFrT= z-ZsjDyfjg3=hjg^i)1!tQ9O;!X9gwYKbz@@|-go-@Z$6>-hjoX>UWew-K zETHWb@48Ik3oaHG_mMPv&F`b3J(Bzncd;E7mnlLTOLCDM8WMx=y3T`B2s78Y2y>o| zS{Dmtp*`p;0^4yI{rsU}VN7z8Te;=&&hHKvtru&>G3FtCsLcnUxp~O}WuR&-a6s84 z98floKcGBPdO+D$HK6mLUo^Kkf3xKNof$IQAt0_tFnwrWEse2;R~5^^5wycXd2oRp z+U8t0B%{8+vrYM=?iRNc-lklrd)EDaq~+QSM_0qHMW#`+#T+lmKB&|VnB!Bke$r@; z7g`spb)VsQc9G^|Wq%pjrgXX_=Ru|3BRHQ%x@;zWEWZDYVzX~k*1NXWn;g$5`JQb` z*PP8tk=lwT#}nYQsw2VV_|c+TRjSD`xM*(?)tNcIf|(rOUu172s>LadWz2VP>Dcm` zQXhIg5a>WHy}vguN(& zP>jXIn9Ceq8NA?#c@+2WwY*MW%r&HcbMZ9$e}5bp9j<;of4gq=-#-P_l3x-jB0eN z_l9$)pP#Y#6-G7ckyGpRhO@_>Kl8P+E#;j{8>l4iZ=PNkXnR>%5`qOTV2-c(-TuF! zdMsZFsZ!p(XTP%JZRJ-X*g?-kY9sXG{*9E9#3!__w3Xik79L+^(Cz}0n34x!qM7u z1zZapK{jwM+<3UF;ELc%;AX*@5uXEhGyM6$Q-Les>Jd2ow9>$)IhU{<&ZYwjE1@xl zlH4Se7Wqsc9`8G#+*4Ji*41{D$M=FZ#+;F>mNcJz`wlh@{2f;*S)Qlc-fg?x{BHX+ zzu!M8Vsm7Tngz|0+Ge%P_~nNe?j4PcD5km0F4Pg(Y$j9}&dr+rb~ zzCle!77jLp=7{D8cK&n;S%M=<&ts?d)qcIUhsIJ?Lvg3z@{Sx)f~Bu2%ePP7f|j0Z z9n1Le@#2iQU3l1Acli4YDKBO()U8BiDbcnUyupT&H+J1$GN-3F_|Ln9nn}UCdZc}J z=ZiheIo5Oc)Ri-J5Ip86Rqtz9TjFGw&Fjc zqN_YYn!KRoZ{HWavuR4;szzAF?Ci0ureo+y^{Q>4{!uO8r1p*%!pC51B)2b86MVp3 z62^!T#|N9H9NYbW-A|7^P+l0eSD%YY$e(0RqS94Z$D|MJHCw&k9q~1>X;T8fjjmew z?P#@}88_v8S8@8pxHp59KI+XrS{59ymCTk+)s|p*pB6p|;agGL&u&@waKjm~;mlo{HV4bkbdXNa zr~L1u;QhT&_2B$t=es`l=wkjDOVWxfh$ANda~^jH70>wbg-<6q0i> zVtQb;4`iXW7Qdl1dYaEHE9WEJi`CNLf~7AYeCacdxx4mwryV|`gtI9AeqF<>BP(E4 z!uwLwgm#fE>%zgt$?AM^M6t|e?zh5&3ywvPD2F=sc-digt%t_acQhTbJ!N7OjigtV zLs>MMU=Ny@gF;?X4wS#79E3Xr7cS@Xv&R3DV#(3?O?vvxRoS}+7lejr6+m)$_#>AI zA4m(AbUE9qBvlT{n7@LyiEvf3)Zc3Qt*K^6uYI(|&uW$~WD>WAF9f z(b0!3to^#xRWsW?wXg(Fpcxq<)S6}D(Dw|ge zbzA+dt2>xb32#ONwDJe1&zsH6*35YpAxq2`3xx^7)l!i#Q79Ism>hyjXf*B^sKhK~ z4`E{Q#D0O|q?A~qMG8)Ugb*W0%)~MgK)FoCj|jTN$N>5p&{Gm&TD-$RQ@lN)rYR9a z9tpEYsys8Jw8UPk=4Vcmukk14YwJVeABLBh8b(Ev`LUy zZd&?WmEWFV$xZmkBQaYVzfI-ONi@5S4SZzFaUXa$f2i4~^t z7bYX&lh}l`_z9Xkk+V(U9u-UM>NNhV)AGMMjelYq|3t0439g9=A9*A;DUE-U%Aahb zNoo9()A%Q+$)B9Ye@z)A*;Q@lR9v zZ3!-oPLSvmgE~PYSpc1`@soP|AO;EbpJzeurvZbZMf4t`F>JK-68i_x2S8IDP<#Yf z9VX}lL?0y@{gLzk4y4II|2t@lfhKki68i%8s#r3NbPAAIIc1UnDtE4`H|!n!`50gJ zwD{?Id;nu6ALD6pTKp|(^jCHMCscX)tXHSWQstx6_v-XhC~rQ-!;jL^KbJ;Qs`3VNuiz0tJBmz`D_|f553yd z6HuH*wsmg6Np3GrNBcMQv8nxRYCDhW@&|b|4_eW3zuwlib!^otb(+SJ zXM4vTs;;SL+B`lHoj9RRKj5ZgRyupsjxoFF3=#*5$pi7veCEBRWA&<~8~T^|dplY? zm+5DjIJHcXdhx;Z|A51A^sOUs*5!o|U()eCgpuzr38Q@P>zL+hDwj>ig@kXyc-H9> z9ouz0RmWvIt{@EO(dijFuGR5e9oOr)QO65)yo50FTdL#bdiV;RZqaFT(+iL(XEtBu5YLB@8{Nza{j89O_p@(^`NqrwesD9g{sKK33Ux z=lcHE)xda^pyB}cVTIq%D)Gpsl~u0B1D?uWe`h5HR??8Y$h=+@Z8Whd=`J#~DY2>M z_9CfihWDcQi%f7TN2)nYjk~NZybK#Rfl2if5C1NcBK1k!WtdWJU@B9(HB6076d>(s zUOHFmby4SDAw8|>y-F#zZYkz-l$LbCA zFz$+hR=gO3>Ny`Jnn6DXpg4k3IPzntsX% z6i$0k4qP7DdD?~5>k&3=8SL=8;fRME<<|^nl-CY|_Lv;Fye0$~<#`~F_HHDP)@)o} z0Dhx9vNNO$2QKeH1Q_`ag0Ge{0rQeSoyJEMMEP>yd_O^eQNId>TFT-!l zm+U{)DF?3KZxCRV=QGG78^`5E;Wx@7dq0&6)A@+}9h^~Kz#xxyqgfZ;)8vJ4 z5JK(Gfwu>qOQqzy8GN*s=fLw_k(RFwa~bs^$`?gSt_ML6*C-kc`yxIrFvb&2wJ>+-5~ z0qu}ClM4f;x+V8bosZj;AA)bgCHTGtJ`C#~9+eBDGMf{?B#U4?oMHI0Q_$}RNXvoq z5jF&~g^<^S#v$9g9FEFM{hQj>C~q$Y_brBmT;6Kz23OI`IQp9$pY{$%Rn_cjy9%HF z4hPwKK;j*a9B8$3PY#|mWysQu@e8NMBom#%kAKgWXOCqt``OS^0si3+n!hvrLHBpE z7MEQk#)EBA+*I&{R~j)lO$rPy*g3RRG2P&Wi|Nm^{&3;$7`F2MV}^pL^8mib^oBgxuxwadjAKl1r1e_81w0C!ON{J zJxEOBmA3@(QC)N3Ek-uLXw#Qt{MitOA)wj?;-f09gClv|#tpy^bCUpyBez(`lt01G z;Vxz4mLc3|<4TbDN^D#^^lKx*I#8Yjgf-Kll8n|4VR&I;Rd+cXSB6AX2OPM(wVmCo zTRW4ls(qS`tEsBK;`h}0sX`4lu1H=#I#Sgdl7W!`S6$iXAK`aI?4jj(>!;y8Cg2lH@ zxve2Tu*f2e=FfX*_r6_u>J$A^IakHy@;DWbTU-!mILm4ZeA!Joi;I22oQVNzL$U9Z zXjYTtDE93f@`YHe6OPJ7>quJT^fM83MoeViU%4G|SxwzBNet}~8rhCwUvun2jd^i_ zZ<%kaPjHx;ihQ^E8WdYaXlQ`3*fzKxI8&3LK2I(7F-L=9K`a{%AY7}Xq5$4pV;SMw z0@A`)c2j)|s3nS@iv0PTp7xHeJ6bzC+OKD8zF}|08L8^&!<(1 zF)xijFRgreiIn7_XOpS&Z7P4Vd>WlhWVDc!o<>~~Bz0Cc(uFA@Hbj-eQ6HgvY2J1L z6BNPaqdn)V6sIlB2b%b4Y~>?WzfM!m`Ka&vb$Yu>=dkYqbD;coa{`#?{ct3Y<}-TM zG@{d5{&_5}(^`HuW+7$(^}O*kL+FNGTU4~t!0) zZ|z#786CWk-q_FzQ#7x$Gr7)Lbw_LO#V?xwv0gye>&WWR_Cj?2OXH9*jVfz7&XEbD z!N06y9PO+0CSVa8z|A^-M8}k#`0YCVnb&3Nxo+Y$|K#D{fAYeADicm7jc?iWuL88Q zQIeAW0e}{h_8CA@CPk!v5Rgoe^7_BtDwm1n9|xogP7$DeCQ$juUXH4BEDZ^6S!o;@ zK_4!OagOF!f%s?)ap3;+^(dXE7=g?4AkdgE@sSPTz%5hydUP)orT&K_CpCY{m*@sK zqr67YWCJ*G{cb>jaecerAdl*R%L~A7lt*jjOUY|blXuV{kM!d59!itf4|*yb2jV06 zDV#CiLC{94%X?)Lt-VVos%iD_pV|l~SuNGlce>6LB{f@wI%y$V0V_)F%-cRET zf$viFG6CU6d4nLPA}t3lZ#=?{`dM)HM|Pd`Bh2-y*5y^}0)7R$UiT9Msk(VOAN4PS zKY+f}euLgQKws|BxET97D)vhD8%5A>C1s`q_Y&r9Ls8Fxz@k;%6FERrIjB5TRz8N{ zWlv-XFJ7d>7NARes`3#fDYX;2x8_{{zX! zc4U=p8}@jv^XymG!lqarOAQ$u%2`}eI)Lv9dawp(XH1e%{lDr>v!`Yq+nwbW6=Cip z!`Ib#YRH#8`Mrp+kbg5UVKH;kw*}gIU5rW6QHDGVvfK`==?8~BHHCrANc(U-Q*&*A zY=n9Wd0m^YcIP)b{RFx4f4a=Mn^~?LfFx z_j8+gIllCD1@VzBZlfv8IPYwS0@P>t^EDa`)MNQM7cYkoVbq^E z@KJLe0*vx@LLQ|jd6bsRTMEBXzd_JGI1XIi5(F6K?KS9UTvx0GpHZFy+78Eomp6z2 z;-mT@C<1Y*d2u7+kX4V$gr9GN?@H#ygGlrkPXtVP5fJ7&5Pc8=;8BJz-Ou#fyUrfLA(S|e5%nj)Cc#b=db6QKo{kz1=#fPOJu7C*?7dC=S*JH z)Ia&?)WRf|q4ryqLZ4R86SNN6#y`LQOncnV{iez1w7WD|b>QBM>@JT;<0E@YQQW@J zyM&jrFEhbov@gE^-<8;xevD0imPA=|H3%E+%R2}NA&dr2Cfw!h3q3a=yTgIY>+4vH zn-r1;=F{xUY>$4-e+BDqMav{%U#z4d&h)W!`<;5OPiOjn+MmuO+J)-%kFiEIo(X8J z$y<#25jIZ-FrFV%+tQkl=?#h{T&sQ;!e<(i>XDOnhr;Jx7SZzz>H>T%ak;flsm{me z!^`nqG&YgW2)s}8v1!cL*!Q_rqje3X;bXWF{!5MFc?dU-;eDX5WDNft!fygE2d*Ds z;}|{*dOIAg3CLY;3~xh1dTz{t%fmbGogJ$`!x*m8x6W5EhUuLbK*|^nrR+OBb=U=u z(2nzb6i=G|Jf3;;sPpH4Wjs^6(lZQgJZp`sZpqYJO+Nc@R+D}1(fm2*+C;4+=d#Z; zo~eE~@UcXD5~@2so|nRZsqtKoaN~G>8T6HmXL?_sWOCr+k1*FkjYGh8cs^}BZwH_8 ztdq;bi?|(KYp;Af*Iaky?-wo9I%HxzPiDm|wx`jHr{H+ANRkWV7iL_2_|WcgV&fU1 z{cm?yG>kJ%ku%QTn^Dp5y-AZBrRljNIK49AG)r_g7B_D7W<_E{%yl9>u}7FA)ck8y zR!mK&qxb@SQY;!eBS^75k7wePE!;50+W454fqT3nG$FqEd~}Idk||%x)pmHwHRI&v zlX4oRih@KQrH#T|XCtM|Rr5I=9v7s1gepjAIT5`Dxgp2q6HzYpw0chn+i_b-anQQ2 zs5mr~Ei2Ih+#P~@I~pJMis9m5O9{mc3_0ae~B|%p4aYU#?yc=46k-0vC)K_-Xx6`6*L#l_7yN$kvcAtyTSJ4A|gxQE|l;o|d zUIRl#_y%8SW|Ka`_v~k*xXECF8PYBC7WEB?5N?Us8)tb}hv~h5jnH=f{9lY_F!Lxg ziEn5(%y@BEfL#`@Ck|HjUc^p!oqUU&rahfSQpt<7l0%cw&}J_*8O5`-9hMRAlpm@! z4W1^H61`w!(c$7()iBiBjRM?xwdOth3h*vR5$gF#uLWP-yU~WRp^~8B`H9yR7UrCcE<-=-uYW2o%*=?h`JMH1&zMXT za8HeC$xpmRz!I0!38)qUsk^zXZQ&PLX^lY6=Q9Kk*(yUoMjWK=0xS!p1+( znX1)Pe`wG7X>(?3{KaeH)OfxM)bgNr@lxYy*OUZ0*G-L2J(8gByHn%I$|r%&c~j$4 zsZW2$Vq9AK)HgmZ^-e`HcbeBOeupA8{^EBgQsc*`REKt?~~fxHLLJB85#SXdO-80~K|oy}J1v?hNXTcgu zjC}Mw|5AIFZ=~^k8GK|nIB?;SJZx)0Z z<wbU4zF=4UD^f)mh)!v1xF(&~)JJM{Zg`EEFI zK8<7OOWl_`v--;S!iCz>Cb1X38a*33J}35Z)5O5|;7{TnQ&xp=v`F4Ll!06Kglf^} zsf*LDsriRH>AmrX{8Ki zSxm6p?JJ6jQf~Nl@H1CmoJn`RL4M)-o4swL4HC(j?i};I7;x?)DK_^v!ou~$QP5By z`>T*}t;bpSjn|a{&kNqY!!>eIY<%9+qgZi91lb|mrwOy`!*lL7VJGzWf$x%J+miWnhdmBQ&*~Ced3|iw#>c=Vn(iCE3vaux5Q&p? z&y5t}j#EJ{9QI7JPjkp5-(isNaR_xk_SS!J&Bhw!pBXO^gu43pH5*ywGs90!6tQcz zmkM+0<5M=Wvgd~FMfQ?*{m#3hm?=+0+1$==MT=q zuC=+P_=URrnhJ-TW0JKwX0jq5QJD4E#5woW`NT8X;*VPH4iqfe@{NB>cR?~~hc8|uGSvau-+PxT`T-o6>#A{I0jjOONML~`PS z8S>ezVs}&+%N=VzbIi@gCcT$Ey4ZT_8LN~V_vAjJ2**WmissYNakw+k`oXa*HdgR# z!RUi#YusafL=m@ByktHa{d&VIRyH=?=kYwENNoJRoVdySFHuibPCUc>h+?uGjMjEs zzle6?bsfLK+f2f?TJkcn`@`T*6obk=E z-{$0u34drl^Cs@_D;e*pGAkJ+(&$TqrBNKc55K=H-Gs8|d@`<-N}N0D6>n;=j!ilA z3T}}b?+`}smvZ8s9J69NDA+Mg)`e^Mi^}E;fxVgh$Z6W^GPBzV#;(}B=jGcVR>nF)3{PlwZ+Ya~g z%6qJ|o1c8+;eArj<90?Gg5Ht_jJKfsn#ldZ(UyW(V_tDs^w=CY{jonmrw2`yU%d*U z`H_Fy7aOv<-j7hq|3FGD-I<8!ITf`!PDX9A#qqo79htWdH^%HH&)l!f-R6DgFz$`5 ze2M1RtEQ5UnE&BgBI69ixNfhkREofM=7%p$Y`moAFKM5D5j+o z5ML0P^&;IGYjgcx)#-FXr+1*!3FvfO)#KqC zOJb&+o-py;?IYdp4#1Y(qXdLt0Cx%tvA1)79bb}X3jaF3GEWHim#>L*mNWFMkA0bu z0gS3&$2;@H$dXdgqxfD|a*qF4!QCxoESA5qWuy&wduZv%G~j}bEAYE1^fNDPqp)ds zn$y`c7AOkhjjxDUVe8TUqA?wrUm1y_$$edNoI!^*hDH*WV5_rvn0D1E=PG3qMY77?q! z#Z;c`hbesS7W%DvGTL4yggeT1A|Els>Zm#1SGF#E?MQdo^l(qv(~%!5f(>#lNNtzP z#qcuN?;nIL&iS#{4C#BnRV@33tu`myYL}T)yB!)%eQwXDUK{9DvORh*9MCE3|3-|btW zoDdEBIDyyM?wWzP&xEwWE5m5V1?8}IWLzWEZ)(+u)j z-i_jx(YTPkd3X{mhk&--JdAmvj*1d7cGt1*~&7a&!a~Qk>6b18V!`= z`z^r~$=Vm%{rf1}jW;pN-;YG2G!E6Vw%~rO9x~$<85`v%zig6mhFu4HV5#%fVVvP} z{Frs4BZzH4%)Ie~mO*p=kvV~a;57H7Fva~Lw5+7g*H$t<=m5^_FSk`#m|IpDw*xe4|bp&n?qAZR=8Z@2_w@$ZNkm7`W@K|$a0|Hd;U4v z>3%CBRxfeR@f}si$^VJAxxN@~cb$p|rQ?tHx$48_kuKNm;cnO45mst(SdMSN4dFr8 z2q>FFIL=C~4!b-6J7SUr&s7-zQ)2c!+>cv+Q}|c$>3Ls{_%Om-!Zue^#M5Gf#a$D* z<#+~esdWYBm$2C0kTAzd7I_lpoojwmT-wOW#kVG+EN3H@xM1`l+R*a1X5q+vs2Nr|zUM?VM;?tr-lX@U?f`n0Xqs8< zbIQ}ALMe0nJnBTN-g`EXUawtu9H`&6Kw@YH<}tu7U-hg0+$mzOF3qD7D=* z*S%+bJ8lnlAzjN3Ri>%LcWacMz^rsbH)~Tk=go!g;_wo8Rd{-Ul{bcGPqwRLtIT)R z@lN;I@LlfN;eb09nI1U0D-jp69H;&{J$y8{i%eywd#?{Y|LZ8{jwgI4qSFH% zyQqF~->;Ar@s((^OY7)7;bqv8w-TJ^!O7F_i@IJ!@j-s?>Q?WmGK?}((vXW)cWOaBNqTq5G_py}=u z4bsogGt<&%Vnd{*4*`of@3aHo1E)dy`FU1a`Yd%{O!_|qNB5uFfuDlYfOdjOp!4xm z{j-@D(UhL{;o?Q_MUPA4AE(Ms-V2j{ex8@cpQrNET|63S@!JhFk0Fdzc;Xo_?PCS? z^dQM`sc#BflF{nkwH~k= ztf=32h;RJ*I@b4e`d8tsu)ljlXBwGG6&%BE$9F z_;gTx`!D%FPWb;+(f-%Tk5LHvo^AkjX+dx}2){vc@DRX3a)37zzE->YhtfZ%^93m!ormsoBTQ{d@z3b=KM;oeLpnY|7!Tmj z>6pItqxjGMhDEa0lgF)k;F{7AVaHi{e!tbjdNYpbONZq z6I8&FAI+}94E&-A6M&{tp&q|Rz7?R!zHu<=p1HteVd`}{gyB*IKb@(OgT*WfqGqjNB_e;l~HH3%@u+is9Y;auJ(_>J;% zp!}uIB|~ZQo`F2FQ>35qT=xmkMtNnBNA`vT*KZI3M*a3e9-S$YJhH4@zvtmM%G-uY zDZGTdXTfKbcM9^BB8=q0n~?V+{3MUJ_cKtQ%E5u+2ws9CKj}oU7knEuulh@I zogOt1Kht4!uH>Av7MZ@u69Myl33J^jIskbg1kl{&fTMaLeW|R5YG9{eU#LzwaC!d^ D=Wntg literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/Common_normal.a b/board/novatek/na51055/loader/ARC/Lib/Release/Common_normal.a new file mode 100644 index 0000000000000000000000000000000000000000..d130c5f1cbc1a2253c83a8cfef76feeb72775bab GIT binary patch literal 27130 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/Ctrl_Flow.a b/board/novatek/na51055/loader/ARC/Lib/Release/Ctrl_Flow.a new file mode 100644 index 0000000000000000000000000000000000000000..0a75aab1f232c7f61ac0be050f4253f51f28c06c GIT binary patch literal 27418 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 WINNv+yc6D4=lhYt`|MMq`2GQDRd2!o literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/Driver.a b/board/novatek/na51055/loader/ARC/Lib/Release/Driver.a new file mode 100644 index 0000000000000000000000000000000000000000..7e74a91574f4f06034638ecedd0a207203c52485 GIT binary patch literal 18916 zcmeHPdvF{_neW*dX;*+1b?^%jIz7s`6F!c7I?0`s<#V?*6{+>DiiXp+sNgL(UJV+0?jc)7DK}Hf`Fx zQB}P>%lfOTjoy|mdWoQuG1kJEa{JQ4RrfKLFDy?pMq$;rmlodVVr=b8e?BxpS8muk z#@MC9KxeeKr+Xy1H=Kxu2K|vxf@O>LCKGHVlt}i(;^Cpahli8lgEw#AvoD{lNf#an zCrM9FJT^EO9Xg;3`yzL8dt)PszA%f2`g>5Wdt`9%<~WrUlD0(j5Uy=+bm&fYARdhosx6w((@h=4?OLZRYB1COa96_drcg?=VZ!CH3@& z2SbP1foNYJm+#uXM`zHAo*iAgIM?6974$?8Bw{0RG&$O5isFfA43!^Fuu$S)4|00? zqr=JQ0A1cl+!Xf3M@-q!p=3{ZDAYR`?ujPuV#K11$)hDG>yIVEO|7BfFe5&R?nDxu ziN$%k|6qvPyfYj+bhtAX>i6SGj~rx%xTil6I@r?}iii5pJl2;u98bo2`fTzPwO4KES#Ym!_MEa|9@w4P7(RtKviZp~+_4!Sz3 zM_aX&tvc>(FN?F9vb(BBZQ2p=B$pA}-Evx4pPH;?l9psP&1KYA*+x!i4(6t|-x}Q?+P|-Gmvi)K`&*|A z+RI0ue#{n!bRVuBB(A@pgU~BSD{!T&rsR&5qjJ{$senEWi1OVPH|jd~M=RE`XSK<- zqfgpjKixR01fG0MNlPmoYxhSV+^5VqAC<1%A5sJ7=A3J7GtA?UYm>!m-GXdmA_Qd$(-b+UMQ6X&~IZb(6O_)W4~@zprs? zsCRSUfVX*LxOcPnqip*YG%XYk^+uW0fMfwiSu#AjVf$8A=(KNlNJX}CTcxyIx>~N1 zR!G&-YQ-(BliIAEk1h^m6)9}~f-cp6<*Z!BWM;EwgO_u7g%xE<6b1u_=O;+dUnN+k zm?=ugtT3m1Aur!)qVxeHSee;#@OF;hCjiK|lFS@Acn8PVnjnXnqJ+$xId~_>SD7es z8!{xbWjXj|9N%q1mYFF^$gDUAU(E3tQ11OL$z<{JrHmx>4C$Vh<9@mkUxPsRoOqgB zDF1fO7qXoOALP89ebnH+oOiHya+gXg0i-@BMl1C}D^VU1-9k!>UVbs$`+=d6 zX~kv6px*b8&8QFO)=M%$)JKWdBhWnMLm)a;pzEjSN*D@M-)01>zJBmD4g?8(H$h;< zodO?35F~JM2&_02OuqIF0%vXCPc7}Ec8T_VHb-AK^r?^u67|v;wbmO4lkYnI2{>!L z)0TQ^<`VUu%F*`}^jV*W4f#ahN3iPql|^4M@`S$ANK^a7y?7DK2zWu1N8vvZ&+v?6#SbaaxbM<*3ls8J=Q zh;?7iM`&)h;m7vx?gIuFpk} zfs>40n(gH%@LF_Rr6ctG%y`%HlX@n8_56=pcq;!53vVWoARjHezCvD~%LIv8Ul)*% zmW{V_JdG=zvUABt%a%AeewBdpnb~B}9vYn)BA<=s78;Xu&Ex~Ahy_u-%?RZ8s0ftb zf%tC`wix`ah^ahb%W=JNgD0P+9IZMDv(UBW*=*6B56ZM|xn!hpR;(K@SL|W@U-%ce zT_#aqAo3zmTJ-Q1q`!?Ii0lPXu7A;u46=_jMhHV8pMP-{a_Vz}gg$zf)_T+6D+LI# zz}=C9bD@x$2X~Kwqw67B4_rQbdq485_V!`mmSS%sXwY%4S^q&XP83`1?F$f`L7?$^ zH3D4+U4O2<{XQB&>kdIeA9nCA&))JK8f?uhVQ+?>87Rx%PAoij9{~N#6 zf#1$ao?jdLCGWva^D$YwF_u(!jADZ^+^=?r5TZlHPIhBV{cvb7+OM|lRS$&*N5Tyd z{(m>;d~8x@A$mLZP_pfxZm)e@yIzBtMB-xh_yrRrW-DDl_SH&%&VIH5NcM4!r2vi3 zMg$szG+&W@q>Xda{w>~CU;NI&z*slhNv{)|89u}|EH?NW8~le2Ib9FQ&lvG#+cCZp zUfj6MIyg_G8WJ&D!PD}-u>lMBD_ik)FZNqmVRWFPAd*SqSslF7oHB zwu=nUQf${L6#554H$_w@5yenp(l#)q5R&b>3W2VJ?o+Pq>V&>F$OQ>~^zz4Qye_p? zY-(<9BFnWD+f}PS6w`K9pk=T+uq*aXUyBfBj`kcz_ zn!Tg72)pbW#{Br+v|E)t@*7MmZLOTD3eZZ9Fvzt@o(Ft#yN|Hrtw<&wq)@-F*~1Dy&0mt{OtT?ygf8;=|p!cLo#NxY`iN6 zpD9VDXzxE8U(E3|hv-BzONL}V%UJmmE}{9P4uR}+HDcmxIbXouXYi{yU&!ZH%GY^2 zx3$C*t{kn|jhJ|{z2&%nw`cKACgyxw!Tn~|^cE_SEE)7pgI4e&SKreknruhN(P zw*0a@1MU@ATc)pCxdh8rdev`{;B_;-*0)H^*Zvk6EqAj~=1YDHD)Xja7v@}`RhSF4 z91XZ)m*lVIkE}QPikJmjz*9dKBxauvK|p;{;HXbh{}v>0-4IxDDe%r*R@k_yYGqVAV%^)HHqs2^`g9#cAO4;U3MwDJVqaOOUvZpFm*MS9uZK z3pu!2;PUMq{Evb28Wn8;E}viZ8uG1v)i;4#ieI%F=AjT+K_W@9xJQ(C7J^d{(7kaZ z(Dl;w=lWIuj0}24f`mSP{Kw*0UCOW8D%`3i>d2nzPqn`J z4EY}pNqN`T5Dx}1`5M{Qck#IZ3mo{xzJz$sP5uMfI;KBpvFmC*B6V2?z<4El#Vfma z(ma~+vGnmn_m=j&X^e>RO}0GW_}&J&b$tH-{8GmEzdJQ{` zU2J@R0|n`x3KIHoZp|{fE$`TH#xw7Eti~P&chkR87Vjh9qo!Y{AQA6DQT0>P|M^rKL8m=uq))OJ-_tWklB2 z$Wrrd(u1uP&oDRTx;0r+njT)bzD!;B@PhZI;^4vzd+(Q9UC;PxmLaYIOWs)bw9`MnX z()C{3jddNZz}|g7C%P@4`?6Oq`hK3vM9>Jx5Y2tr_yRsoGWf-FV>VuRO1jQ`@82@D z(OA#_zAbKovR5gzuF9^jh_^4}Q)JKd^gb>dzj&RMoxgZpWi|x~S~tx=_;C0^4ZZh~$Uf#h53|_Y_MeJ`3-pBKu?9&Fnit}h6O+v!*ApMRx zkb7B{Pha|2TW_pRNQ9M+eyG@#ndgX&qs5CeG6#(Hyu8PZv$L#+jrE+IBgYw`_2BUp zuX=RbLVZMxmKLO~BCcbeNRJR z)z=Az#+x94I|~8fyhcU@Og=wm9{E;3=GVY2#gF+7E>NNh3=&C-MH?uq3XB(lo(cIW zbYCb1#?6gO-v3SM56Sdn=&X>{Z(*q;npBrM zsZ811nTiwTQ}h;-&T^;v{F)*=rYiV8s#5BkCmb6uoS`#79^`wFPq~!mJ15CUPae0k z@tT?PjvHR9O|A+m^YJ!iVJxWzOLj`Z8(w>Fyee1~Ifc_hu8#eW{@~RvY3J(ge#C4= zg#EtEmwJpnc672T!d!36Q7hnCOa)U+iy#alumWQ@*ndl;R8v{eH2F++_M=x%$!xyL zCaFh#$9(Vl9HM_wOzSN%ujz7q{gv?{^bR7*kk65gFW~*SRsfK1CEDA~#_Q*{Gvhxy zmwb?HiGFVT7E@`q2S7eaHr`<(DUt7;C0!ehEgFO56VTj2d>!Wt*jj_vZFnKuXz=|! z-)`=0>Uh+L0V+)VU*s8_VF4Lm)6L1L8L41x7J$d+1dlfWIw!QBU*`j;Sq zyB7khzL&sT>xEh2G=^Wo30p^deEDqMzW`&kb)N=qDYot>DD)ka6-0FrQ7qa({Es0R zLm1d#(tUJmilGdchnu+u={XiLwjAIEZB8kO;FkEBHx`q)dlXZ zC(`#F?KmfU9tn6l>-*PFIpz_|E@AHLko-Xw;_2)>tHaEkfGr2i98JIk)btx0^ z8|ZwkO^YM6u>lQFQ}ZEqA*MU(K-`URjDHK|P^nINeZ{Z-^Q@xTid-d3t6^jFHS#U3 zw`@N)dFs_urS$7#JdIyE1*O58DBI0y%h0O(TiHA;)lB8e;&$d)5qPAv>=|vcG;P}^ zwUnl%!Ig^tTwz~nS{ZEim!{=GaGv_$Z|BN_QZwywl(IXtN`$vlXBG6VGIXv%JJ*=) ztVTOm8tr`VGu1e^T)k`M?&{#m4p*Qm;*5OJe$8xEq-vKt^0a-;Y;~l(`ZKNRXRkhU zsq6U#znm91Y!dNP1BWxxNF+?IBGrKXqX_N6^cYA%ix1Ye#by;(jX zc#M=A*xKgKysyZ!^Q!p^*LG>l(WRANRUMq(aVpKusLwyim?z~f`mWU6 z6fCV@H}e8|;&b*lPd|mYF5qyp8tPS7cPJl(_WEzN?no;iczwnb@$kCQPye2IZcTes zskyYiDfoI;dB?ouC_>#oohzw#O*sS1{qwm|^yP9sTgA1bEROpaNB@rFTGRed23Fo! z8n`b|SW~^5jWMBbDu6Xmw4cYJIhCKE@8; z;SOxMVuPK)A!)Oh(_&UxYrt;M_@JG z6DN;OsBSi15O4(^uhOsHKCjxk&Zq9G<2t|kD63WGEBP#QLmJ;`wm8J%l%dkIX;ne`Mh|6_32K&3|2} zu;XJ0-$Qsa^z2;i*NPviyXnOr&)jv*>itjE|JSd7n*7mM#(#19yZd+EP+RvCPDF73-@OZ0CW$v4qy@jhKP zUjMeyC*b__g2})iapmZD@%HHEnsAvEaTog*a+WeVk@t}ynU&<|FX0-KCWPJ?Wk|+X zLD}sub$jt(2#;NB$?i+j*$6RLRNGo|7M7~!#@1b8id}t2r5OQRWOK&-<`t; zbNB>!(zgwP&RGh-aUbU$?DIyx&KI$-82lK|cd~yq_%_ZjliyjalL*Xl46bc_1Fu-&9^D~J|UI=I|EP8*NN}AcT)TT#`aL`)xTeH zHtNrd^sXj3Iu(+<9dtIrxd}g)`yDFZ`py4j1P#E_Ap0~r6ukf~q)XNC+<_4XV8(U2`Q|E=N5m#lyB^SM4eE}BmSsYU{in~!y| z7WILrc|;Jp4JULXK9Biymfi2v`^|g66NUm=hHeBZF7$l?4D~ZXq6wW46e0MGj9KWT z@}!T-3Vjizt@@_H(7Yo^wC`gOSaG$eC?D=~Ik-{a#)LA&Lf=<&a8+1iw&lS+o`bs` zxY9hh=^Wf3a5Vo367@a>f%U$;V7V`3i3msc=?sGPdT&9-eUJ$f`e-h->U$CTRLJN) zlbsRzUPIcd?+h|%{uLzjy#j$%pMuv?DrBUu3_<8Cf-=%a{fp@1*viYdhfod>Zbe*2 zF*Xm}QuYvPQLmdSFi0dR7JZDe)}u4UQ2~ADQ-?t9qvu1{0I^BOA<#@tZ#%L73%uZG Avj6}9 literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ520.a b/board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ520.a new file mode 100644 index 0000000000000000000000000000000000000000..5261ad84063bbabcf0813db2a5b558a2b4de0706 GIT binary patch literal 4228 zcmbVPO>A4o5uPO}OI8$+lI-}WZuI2ZjqKX=BPCLzVFZ*FH3^_rKb8x_t?~3oK3PQh zSMu4h1EHbp6zHJ`qsT#r6e0>Af;0hg2+$l_KtKaDhXQS#_7t<*tBnw|Y-W@mS2f4HyzoSKg>JllCj+DUFfAH4YeS>**alSpZKD(Grnr+hZ8X!F+!nv&PlgaMz^;=vcR8yEDv0n=JK zp1Vn7+01WrG6Rb!OM=C!n%o46bb%Kq#b$vM72Bs3HnvPxMFhleC-P#!|bG}rmc z_{4XG5E!0Gf(B?C5iRlzh}wn>F+h8HI-+B1mAbZi$+hM4cGpDbYQ^=$YQ;m4U;*}d zMQzo+QuTSeYQKYY`AQY?6|3)}&hj0$`R-KRr%Dxj8qP6rke@S&x$4txhbGIXwk zOJy0@4IA|rtBZ!dR9S@1?7vvq?`^MfpI*LS-M(;b~y5x1oN~&==QTG*x*LzDEa2<w+#~e$?3p ziF94I*n>J3-B`cwrHa_URB`n{f?ZE7RXnhL*1b~gfZTxW zf}HC!eQm$FzGAh3{ud8meV^fd;99fi_6FKWJ;kcsr`*?F^B_-hpQtU1mFhC=%l#`= zarV}l2oyJkZ+aa$xx5IQ_laWVOOCsX{YS7bpsk={IRSfu>(Z?O&d^W^={`+(a-!5q`x5A184iF&Ebdyb-~KQ(ai z_n&-a-8l1BA&EN4U~+*yU^n_Q+t8_+8cUKmf@<4XHm_?pPLD=tPiOmRhuG^nDW0=}SzWaX_l{c& zqr;z*+~jHT5YP~PF>QNoHGHV%n%xLG1pKN4KLdQ%f&IWAIq)#>ngd6H=Wt<|BxnMa zWe2_j{GJ0Rf$I)@6ZoM6{~Y*Wb6SFyffEk=Yv5G}{tfVggu{^3w?E~{XBJU(Rq{TBO&EqJR1?``Iih~xFO;6Mw0 zu>~tF_$Mv+7dx<^U+%y}ziPp6x8OgvVEjNdiN}i{mnJc;x8MiB?_2roL4G_~>%TZ~ zFYreWOvh9@IePxWN%=-7Fh4@^l&0omg#x{#CUs@u`b{O3#j7EixjvhULCH9qqk^WJ z6h+-x>CIe$S{<3FZj3Cf*U3!06UST?I0A?!zyF&{0jXg9RDV!V))7#h$H zeLQzfQ4@*$PHiFi^0r?>)z#hF8~R7uo8Ha#%K6F3S!Mjv_?R<<`Cf|~&oCvCRw0^Yx#EM6Y9y z9l>3Cmt`B#6!zBq->{?z+`EiHqi{3OFs5nHt9Aej zvo8}*k^LX%C!0Rpl|dYje=BUV<8?z}$70(#yse{LvB>sgiKE}7w|IPL$YVJSX2|ym z&(#_4Ell)jM?*WFxl3`*Coc2n!DGJ04eMrIvtb)BYrt_f`LCE zF_edbA?b%H!|$}iN6Ks0lZ9k9BMrv_p@cjVj>P3icwQTfgylgs5gts$0}(Yg9G{m5 zLt1QDzCxoT=-hgQ@DKYgkB}bMKCxdMa32(h#9{HY=cw5ISz_m%XXBx*21}bBeWy4U z3{L!R@!HOYY_;?1ZxjFS_E<0q+08r0x!`fWXLo!q{;y;E$dQd_(`hY(WBh-fT|SeX z59iqhY?7U;erULE?`Pg8QLs(+tod9y&!lcUSkjJ%>&}SBXOoHjt{FA6U_a&%7=1R+ u?x(;JuuXQn*0cK|4CA&Fr0vJjxnjqlxC0%Jnfa^E?z`~gd(I|1-hTl$%Aq9y literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ522.a b/board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ522.a new file mode 100644 index 0000000000000000000000000000000000000000..42a19d4d80e70fbe0e2f538b08c29b34fb3e46f7 GIT binary patch literal 4220 zcmbVPO>7(25uQg2m;EA8V69TAIpW|##k-Ml|__) zCD)D}2n}VUKn^_^MGii+5K-u0qz&LhfacHw0vez_6e#MXKyM{QF?QU7p@14q(ID(M zOD?rqD|OJ3=FR(N=FNNa{`hw2MKu>&eyRJEw3~dvU^o~G2FC-EBpW7cDM>!Li6v>V zn~3&-?>x>u8?SzMK{>0Y<4G+?d0oxvl*^5Bos-4>iF4eHtMC&#wO-CGmg8x_Zajf#sP!2;}Y zi`x6nwW`P6Q+p56;VD+gQ>gw5b(VM7=DAgMzEG?O$)BSYsn zyjqrlov_gm{0x1uvI1SR|3c-UyR*i9e$i7w%$OhdPm z=;1#3xzeEg>?Wao4|H3OwQ9JPW2hwqE$O#OiWI6C-$NebU9=JbfWKnHyZB< z&nj}Ct2{z~?HI_K)7RY8T`dWDn%xVAI$1 zTO2G@8|Z)KP@%f=Jg>i_Waf4UZKS?J)$CIq?5(*lPx7Fs-4<)r+pymrTC0lFH%h`+ zxGy|&o0yY}E3ml_6e?eE+&%2C!M=>Pf(qq0>~XG3H_9Xxstd4PfXDd4K3)&?Gj5UmqdFC+-Y_nXQlqzZfi!SXKE5RAD;9`-e8XZNvN9bBVlR8?<4c4Zmu`iVgqJ zhJUgP3;O9UO!RXbe%FS7Z^N55j31RY@%ZaD{0R6rt@-T3{J5~zf3V>H1^D$)PqvaIsnif-xmyr@h1KOpJWv?h|Jf7RF z%_rX2@r$dvx>tKc|5*E`ce}lEW@ctVnYu7FX${eQr^Srtml98@6i?)hS>UJJ>v5fw zL`uD^DVMdhmQ$0;8wvhzj(#soGLcH45mv+~l;l-ErPM_Ft3L&CH(`$r;4WQf*+Fy` z`)dG~)?MtOfftB2SVI3tmi@S^SmHk5JHUa9m(RN68@Pj54ik0Zf^>`!^{_lnG|ch@ zQHbTY(1|yHJ*DH}>CNl8rd&2_IW6hM9j=p?r<1(AO}!KI-|?!to=Zfp=vp2Dz8Vd} zjgJmLpqcm$dKP0a$*g`Iiv8e7%kTj}7WGarw`adD@N+GUG!0rY1GF&vGI5IR|0F-T z>BC(a#PRsI!Xz_ZFBE1hwvFLU9pOrgOh1-5`fXb0@u4A)$3pgEl>I`INa=S*LT7BcZ@OCJIK|Kf!00vK5$^5MMz#d z$hwm}f-$xi==kr9F50(VKq7)TarfuT6A2#L=z!& z-g<=a5BnaEkUqy#;-EO>JS>igqv9FYF|qfv#GH4|#)aQmmL@&^PO&T)ocP`1Hk}P= zxAW@n5dZGt8^)jr%3j_%)&-C8J-h2O@qZoL$Bt|)lS*l69OM7#Bmy?c%$m=Y^-SufLra?RaNQa4_-rz<-xZ_QEZC1Z07jqfv-=5f7;KUm m&wh44gkj2bf;9bDT32isid)d}n3=!q?7jy-zUNFb7(25uROAmMp6vCB^Yi)oA4?jqJwsk`gJ>2m;EA8V69TAIpW|##k-Ml|__) zCD)D}2n}VUKn^_^MGii+5K-u0qz&LhfacHw0vez_6e#MXKyM{QF?QU7p@14q(ID(M z%Ux=~WL!t4YB*})!UP_W*ZedAU z>?Wdp;5(0V&&I3YT~N-dnM6v*=Y#2Pt|>Rq_^Vze1hm9kzLI)m$%>s-kzb;)PBJ79`*!s}&viE%?aL ziHBD!GO!Ca8iJppFI88dYxQ5O9`tn9xz8_}&A+>;RAot0sWR{V^ghvC^;x3sKaZF1 zPen@@-??fZ(a||zu6Lk*-q05}MVhT1fbX%9QsvWT^WpsL*8O|2t^0EH$FQBRA`RUx zqKEtB=gNcfvzvtWJc=HjVkN&}~`XTUN z20QCdLmo7^vpxem`*=NaeLApKEA4ZYo5&TnAsKl&RjS-PcBAsWQ=N4|zPaf_-~Vnl z-x0j4n{MRr5&CP#Fvg8`y~Ucl7wgu$S``kiR>eL@u=w<9)eYM}de>@QkXw*Fkc)#Y zU(0WCuvlxN|CK|<+RF31{$kmh+a0u#`ieEHPkFGn?na*EL7{$ISgYNJ{r1pWO*nm{ zEclD}1@GJ@a&mD6HqU`#^$U)>hy69!m(f|);}Z68#Z27?#BxqQ5omLWm^Yc zyP|PctT|fy+3nDm5Klln&bQrH#5{T5^FH7@_ctCJxHSmjwFwYt$HcvE^HV zEx3?t_$k+z_$G9!rpA&a44~REna%6kwUZMO+SlDV(IxB`PY5rY!OX6l!nNzR!szg4 zCl|RL9s)E(pUqib+f6U3%k6FiIs&|6!_Nc%%!YlyAKCCY@Lz2>3VcCCVUR%6khg63 z67XFcP69u$;p@QvwBfgaz3piUbQ}0J8~z3G`!@Vb;AIJgLEFt=Lw^3032D3eJ5V^e{ecZzkyyH@gZ^eya4u_LYdl_L{{x5pLkHe=;Qj4fV&1R~I3TuOS0makq{Qdztfl9{UusTh=uvpFhgdaGh-l<5GR z&_vf`N+PeOmAHRLQOLIIflNXvWOr;W>@WvN%c!xGrcC>ZUoz7(Gqct(19B*A)%{~j zamp=Zb2CflbT$418ctB|j9Snvti-Ze-3VblhK%`Wc}2UX#TDaaq{PsGcIo4}D~g&( zN#FA9oc?+y{IIh`4z9tc%~k9mH~&s0$aQI6~CJ@;K2j z%M(Olmfu1rzQXmij)$kOpyyk1*{bEWln-~fPCia2`FNZ9Cg#86Q*}L`j9t;S0s?$B z8iX4k9ezMF@f-9k#$b_E{W=u;!BNxj0YDD*PB6D;zb^1|CdM=kTCoC{n0=XeitPU+ zKe^?@T^Ypj__x9$D_$=YRxGxS;Y}Uoib<9qOC0?+t@HTMkjHWq%#iOBo~u3HIwtyz zt)UgKwM%i%r!Vqn!4tm=!V&Yc0N*W7`Yt%!>TlO~!TEQLF*Z8L-H(Aby!bv4G0+ku zuN`E=MP7k1wioF5_DhB|i&rKmPfH`y$&8xMN&r&GH+C{0`@=ptc$|UHFENzI0zv8f zDZ}ri%}2^>SCfTgHY1J4{K14A4n^W}B($WBMndwanh1?1;{J#l8;>u^qd_e;E?=UF zFgiCMA^gL>$0MXqd`dVd9C95NjtEDEXWYkxy`Lpk-g!1|{LZqp=<#=oZNcEg?-q~c zY)Ge_SAU22cNgC<21QZ!^3Jg@c%1LqU7v~n>)1YaWaHU%TFc-V|DR`<&m`x=es%%d zWaVlI8m?RWnfFN)Y>_o(!3tc>}xL!Cp`;7ud@ zZ2ghoNN~jb%5o?)B1yw?Fwitz=zMu%^2>rCV6sgTXn=MR(JLGeqP7u(4bWi@j?l5Q zPDgioNZj#yx@tn_dPO|4UU3sRih$zv2(`CeYgMo3XzeX<(OasJw^;oZ>db%1I`3;$ z*R!RH=v^s$A=7~c3HannSqEN)jSQK1Vx=qtyP%`~V)Ye6UaH)Itl59Da?I0S<32xb zH2&_UQiVB5rSh!zgKeUj$}>cre;nP|o`{w(zAKe(qEj=#TyI1Dsv$3KiZoq00^2hK zrSb=j#>3g^t?dV~t!+8_-OYBoT0s~(T|^HL$xmQK%br-8vpK@PU&5bz8eL`(jSgWo=zuLc66)xP}5d6h$!8@~wm|VL9o##lg@-h28 zK>tnXm(W(AVmSeQg6q=VGD*ei9CY)Ld9Xj+!^I8v{M`)?{0KAm4F6b*YeIBx^Iza2 zY{$C(X5XwM#BbtCu9k0jJdMj;W!jp9N%R}c3v zHc9?Yor+X%7zfElqsu%{8c3XXuM70<6IAbgu4!9_E;yH~`zco+`yynjrpA&a^rG4} zp3Upp^59s64t2JVbqI&W^TH+5nc0<-x%Ql17#;rXY1LHXH?B5=}LFpG37}!`Fe=Z8!=1*oJQdyIa!`=zGAD z4X*;HZ1_jOZ`<%sfR`kE4BBb@0{o*VO-MV9-=JEz+5g^w9{_*o&_A|e%M)`Kwb9>f z0*+-B#Tt(n^MA{sf5(A$9Qbf6mPG8Y&w>38{DK234*YEg-d$VvFVOcL`X4&*&m8!- z4!r5W_>pN5kH7A~kAQz?#QZWb_XLD50^k&79D3bvgp^2`?ltf-lD{=p>ppb3V1DS+U z$nNTz*r5)PmQiCVO_}r)-;*Y%rlzf72INrKs{2P4#%o0?QZc zF5!+H<%&s`9do39i{9k%p&^gu6beH=Pk63&e{W)=_f6ZNrJfFOVX9He6wpYFUrF~EjB7&r?D_PH!mUl!+yXeq+5Ja zI3^r-oe)k6r-ak)Gs3~w5-aXJ8#jJunOn5~o?=@t81cQuV;LLVspr+-CH~#To5r9h zzFoX?>}b9T=o^na!8zLbq;(`hY(H2yzxmvfTiVb5K_7Fn_ChlK0ae&&4=MX|`5 zHRqK*Cw0rf0LY^Xlu=U7f5^u4GG=LMd`wuPJ!*pEx6A3D;NBbu6ZT zlWx+am{m>~DSXjnFwcokY zm9KByHSE~uJKyh|^PTVS`Sjhvm(^@^>6Ol7(suF&0--=K5Eu(cl5Ci)r6hUf29~6S zP9oX`e(y={`sDTR&nqX@R4k!oDW|JhowDhqqAgy`X-Za8V+MRxi~3G#mrvK|>EvK$DEO45kz$HK`B-?n0T|`N|#CS^kD??i&^7ONFw-y;5>RrvnQK_`pg@2Yv@W zGIWmpDl^nX>l?pUpan)41erN1eCHca7s1><|b zWBdT^2;&dCSBy2g1$?U)I?UfC<<|wxlpfdX$KSrUT6r6`1!LU=`kgEPr(QoO^PXT2 zWUNQJ_SQo}Uws1|)qUW<4769Dh1_d!dvzLi_HlR1)hXX6ZTSd+8Muyyarm%rq=JJ`>`zJ#`d@}(H;F|JEj zOC;qh^RS(Pt{dmUHIgs7&Ri{aBaWE8X2i!{oE72uwSPg5vLD+98-25lu%0vBj_M=A zykX;g<$m1I5fzauPRl;<-sO$_G3RKWahFYBKslSCa>KU-n}0r2^HQcZ{%z<~O^w7!^rPA~k%~thSA~AN=|awJOngEk7iA;&AJ=a4glY<;1_{EuwW1HeG47~ z{@jAYzzGKmg9J@M-m>8Hz;`V;4*b}HuK;(nrXlD$@Q?-H1kPCSFMvO?;9mkSNhl23 ztp6JF@iR?GoAuwJ`cI4hA8q&^@FSc3u?3rvSURbV{%%q5T2{d3c-&b1yEgmBHoR%W zyIX5X#PJ4f*lWYD+puE8KepkYZNq|oz6}$-Ys0^?;osZvnhoPerA0jcnhie${!?>3 zd$B$)?ET*?xDWWg1=Em9N5)T_IwD{8dl!QgO=xO1lFQK>YFt;AE?rR)X}lofsY~;T z2$YP|8OmvTqhe~5DIc8BMAsuqEUPA!sCP?|OSkI2R7}aGw`>h;Gy6zOsgZ=HOnHf4 zH&fHoGv+XTav*5dy`zg!%FL%T(~GBcHTokOic#i-n$t|IMAB*92w^^ujQMC;MZ2s; z72~y}M9_e?>7$v8iW-Y$w`+6pH@Ey^s;=(T-q1hMzTw?!ubh~ko>wN%OioxsG~RAe z<4LB(k}AdGIb#+0Irm0PCncU#FKEgIEv04Egz{#b{~M#<$&!dC<7k8(F$yJd$wx^w zo_hM{A<;WHWBs^GZ?kM8I*0Ssk4x(=&QSkLM4zyPzR0ozcPo{Fc`Y+3@40-n*MKG_@e z$o|6&JYI>RJnHjHKTH^YM=d^5R=X6>#nUNiEaLUY^nR{dL7S*y<(qpzc?TcisxL1#LmwWbKQA1F8t22 zH0jBAie5ewKkwuKamU7O>jDrCz~k$ zK%NyRFlx$f9|{<#9{kX!iVp=E1bqmQp!HKBpnmCFnlwNQ1O+LY5$dK41vF@i8ezY= z%JO8ywqNZf zA}^X@wZ7H!-&t1AY1w32FHq6Y3I@&OvTLbJOIl`GixVYt1wEtX=PrhV5r6KC?3^nQ z4NZn7+h0WqhbLt@7>x$4*;ae6&(3{Q2!W|A5;RT^5z#qb4N=#m$;Rn1Iz%LT_O_{S z?=X4xr2c`1=-sY)9^bC{2pmnIN&TYX^KI3o{=No*d!%xWq*DD0?^d1pKfonvv+g}r zu6d-5ssxzw8kA7P_F<{93oD!^XoXslG;%>!V;uWklq~yyw^~PikozE)A(x~L(}w$tgB_b* z9>eSCkv9>8<%g(TTarH8CCocU)cc32%I<8ej2ygDdlKtd1m=Dh`WH-jX~#ngwI^VE zY`k3ktkt@|v~X|tgZRB&CHCW;QM!N}Qtvb1NO><}xqnD`t}?1TyF>8P1KInYt$L`P z&tRKJ+MHsgI%2)g@%{>Sgf+(y59hoLTpolBdGyJpdx93K4_d9Wn;&e|H=$dFt&j!g zS*meP6zpxRy`Ktlm}_4DoZ~(`+S53K_R(l}<0)zMP@E_Bz9ld))g57a1?%$l@gwCls?l5fHv*9hm`Y3o6p zTt|E+cuWk9ee$`ug)yrV@{cpd=Z>1?DmCRApF{K7us^bBl7dDaG#{F``QWG5!I{>; zPc|cmS=T1zhfOL`vt?dLmDT`wt7Yk0D2z{D6ZFXw)Es%il2xG(E$5p7%EQO|t?92r zuIXAlMPdZqu9;lH(664Jj?$st?&%)!nCE%%vgzD%aKP8Q?>6L%8529mOFox{fQ0D1 zj*Xx`^zU}25i|t+CkK8O_<;jI4?KxWz#>5t=tLZt!@c9c=YYR(;O_wsca|wg2VQXC zE5NTh@Q;A6I`D1ayAJ$w;BgMhBtgFfKjpyhy6~@o6_>$(eVFJcE_~aCf8oNvb>Tm| z@LyaQKPVmIc<8uB$z(xItX-l+TGtBkVv%0gQighY{S7sp(~^|Rt}mzK5Hil?si+%P z$CjvbK^S3(VZ_yBLCdI#z(YYX*XakdNwt`JsI#z39V9)g#nZYv7a)GU%+1d)P<}a= zpI>{$&=NnO<4MZDq!o1=tMOdUFiq`;j=65Vpz2rkglfKe)HnvvK6xU4Mb!}cerYlF z=0m%rW@rbEH|1X$Z&`Q7t1r#ZFRQaFvolT?)*EaNdDRQ&vxZ*CYU%UYwHzhPXPKJJ zU_VktGXaHMMtwbLkebS9mvr@#p4AIlT75Ice^x*TY0{}o3WKm2=0{Dh2PvbavgW-q z@*EMLp%L6~BdDv9Z&>x{Icn9N=WDn>Aomge^6l*Kq0a!u58;!@a9o|BORG8Slu0FOMK+a^B3Q}a+Kgv#l9c=PE zmWll#Z5^`x4M1Z1Vr38B$uaJ<$+lzOxth`UbrEetz-u37jK($0u{!>}S`EVL=%&F{fN%iz3s;7u<{ zf-#O2=;YpuCU1YfH8XQo9-m8PwL(q?ki-7T(?KN=@hhQ|4EzC^p)wf^$=^?#cBdUS zazS5D6;rvaJQWXwl1d~TO(@aunm!Q?D-&8WJdsQUqFQ_^v8GIf^!SwW8cjzqdHaXo zkM03K{DYn+#gI7S9TrcEqv9FgF>&xyz|K2Iw^*Rms88wxzmij)Nh%#zi$2h z!^*#fgKf(g_yGHJZg_(4&HexT{g1N!O35a2nT(!A8ULTP%QeXnJ8KuPLv}XCAmP4! zp81@_&}_1!=DOlKu5ewKkwuKamU7O>jDrCz~k$ zK%NyRFlx$f9|{<#9{kX!iVp=E1bqmQp!HKBpnmCFnlwNQ1O+LY5$dK41vF@i8ezY= z{smKB+VRjr?FrZ( z8!J~oYqjn#E!^AvAbxLGiT!xz8M=TRQtt>jQr?SL?jKT~tBfem?hyR+K=!_8s~&FW zGt}nMHm6vrj#%$=yuX4SVa+kb!#OVlmj@t29({7@o}h*5gI4S8<_BB#P3Tr(D`bIr zmTH_61$!H7@27$s=9!nCprnT^Z%>WdRs^vJ3i#^bIfV`=rPxhas8#buOI8`->8Yf zjhbfw9L@98M$HG^z5cCw5BSI6ec-DjmaT2KI#R0Nh3?vsQvKQqj?YuE(_T{38E${pje2nc_ zH)_qzIzD#`eoy05Lj2J29`igBWJDFzpVzS;s8K4JHEG9a*N4v~--JJ|5zf2Q)`K{? zj`&RQm>3%Sp6A8OrgO`|0blRF+mJ72Oza>p`CJwP5~BAy zHiG)lzuTEc&>--i9Qaw_2M+u^@B}Uaiv*3MGv&Y>?i~j{2mFNte-C)5vrIuc@PY$h z0e;nie*}Ehfo}ufb>N=^k8w~Y3Hl}YDF=Sng?|mKxbzbaY`STGywpX%a|k5#e~)I* zCn39Ux%9tr;g4MS?=I}^kr6i}bpdGStiKZ>Z^R$xorPWM5b0Shp4Qd5Ao1&EZhn4&^2@pW z{MsvqmiPf3Pg4FRt*F~rjpuTPX=*=o%ysJpRllkyRP)uN#xa2Q$rJf2s)o?_ON*&D zAKE1~Lpx}^DgVlN%epgOeQADvS)E;(opHLb-e7act6n&tHS|JOOP|lKg!2^)Ko^hq^pYFM4vjRFulTKw)7=+C*KWchCL>VoWHSd+- z=ZN?W4dZ?rMqLem!>UKmQLFAeU&H+Yx#t+_p80X2Rpuw~R%AX#RAPRT=r(h{a010Q zG6r6gfud2c_+`6S(9;3jn+63qJrv;M6_{T7c0eD<^|9>$awfY}kRsFmQFaRKV3X&u zOzaP7>yYiQ9}?RaD|_%xj&Y|=wjJ}%)r`Kci)b4HUi%PZG_GNe)#>jp0{zr>0-fEp zju`55?jk?+ANkgwisBy*lOFxnAF>v@@2!8~ZF7yyF7h45LYora{2nZ{49|r z7~@!hPVT*E^7iLjGc#x9vAI-ME97JVITDyS9a4f*0VRBrK_DnIR3<`U`TJ?p?zF>3 zF6is2Vk(!FC*#3zQkjZG6G}9)rjJJ>%D9${j3*Pps1~10tSRGRJwB{0uuUo(W zu<~!=K-)3~-p~G=8=l~MbN~N-|D$ZbQnHC$CZlIj#{XySa!qo?&e{d+ke!WDNVspG zXFew}G@In{0pX+WioU gS=$KQwqx$xvEvYILdI+6_TOsvJ=pO*XOr#kKh;8qi~s-t literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ562.a b/board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ562.a new file mode 100644 index 0000000000000000000000000000000000000000..2c02d12a69d7a31f2c42f7dd18f9a58e10e16480 GIT binary patch literal 4204 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ570.a b/board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ570.a new file mode 100644 index 0000000000000000000000000000000000000000..96485448266fb80df4e460f88c8e4288b61792cc GIT binary patch literal 4204 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ580.a b/board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZ580.a new file mode 100644 index 0000000000000000000000000000000000000000..d50bfb089921b56622bd44ad03cce7ac03f23006 GIT binary patch literal 4132 zcmbVPU2Gd!6+YK?nlugaBqiHyiO8hQ(sbFn<0N+Ms#>|54YX1qKbxXZSWU+Eq_Oay z>}mE#6?IyWK&nI@_JM~L@dFZQwGT+FfF~3Q9zf~?>}ns7R>+RyjVO!Pc~~JtwdOlB z9(OVusKin3oco<~?z#7zd(ZXF=w+>tSbx6vqI{Tw;czq@35TbrWmz#*&aW&_MQr=k zULx|M8CL6CzxMTI^{SRlru7094Xt3%OfI{Yy1ArfmbExhGFQ+uT7K?ED53;%7iH&M z!DwhIG}ZnpN;o_v%ae*?O)jtY-kF{IiVy-*StMwj9wVX!UJX&#l*z{FI2|JrJqJ6~ zcW{zC2a>H9h+Vr z!|Ujgw-AHnhp1dzl0M!i%zKuo_s`Rn{n=O!!T4>!F3(3D}+) zFIPWqwH_`l?CrlB-`iJW-`_n>*K0_1FJgFjOnIglS_Mo7OIb0txH?)Zr8VsQvJu! z%LAplJ-0H_-|!)4%7|#(7u)sw(BB`$8M<`0B7&uTAuaAAKR5Ew`A?K;pCZ2e5&8w_ zzm2hiO4SwUSGX_Vt&&`-UxjWCGC$6SZ?aVJt=z5n;YTdqGyP*H7EMyn$b;rX^EMy-=ngp38ucD;2XD13T?>Ws;md+P{2VohFI%!I^r7W^Ge~*(_*3i3mmt@4 zEuJDVjBeLVu3+e|UbqsaW4+y1dc<+hv*Jb5x#i%9ulLZc$QLvwc955RE(-w((K{U* zL8xJR(3wWiAaKQj&jR~A_5eZ8qI=naCxK%Q%;D}h@Kqk#S(c!00?H1o1FtynE#RaB ze-F6iz;6IQaNwT+D;$(bf_?@*<-osm;a>qqT>8rnY`STGywpX%a|k5#|A=PKCn38( zcjl&WvJ^Luc_&rmZVg6V>um%kZ~?gMcuGEwnUwq zfDwimMqEu6w2YbvJ{A;no&H2NsTOmObryE1CrHm~@wBea1&LoVbMx~HlwZ!}=ht2` zw8VF4EJ^tnw4!cfHJ-~Erm6klG1sjZRQ**wp_;EBHI4yvNS?^wQZI?Jp%j)dP?2OZe^%k2$UiHGYtf3dOTKZacEk_CSd8Q^a*pF1v zOh6%*QC~?Kq^2_3OJCfP2%R0H=one7pizmcACy45N^W-!k-K=R7{CGXeuXzIaWV#P7>r zU=23eU4(!)C+@wr;x_;*=y#*>c(&_7Ln=&cUsrp!1IU@|QbCGL`zP5cu!BvW$1<@$ zq^(1?zkWz;U#yhyUXF36O|~8L&Q*VdWtX9a$0CG4mbzwpYMgmIcJcB?`W~fX}gye6fO}h&Y8@Zrw zq>8CrR-TRrLrEnPjwY07cuk*-hLuSz8JA9#omf*QLwbB#d6}+6FnRljKY;EL zKl}rp&x=8E$~z>U7N^A*eP_hcPXRmc9F30-+OH2rykAZ&W9LpY_LAQ+ZGYYR!-tiB z3-P~$Nilr;*`IU66MSzT{vYsvl93--BY- fHUhWpm^*iD41z7lc+K4YTkXCBJHF>^viC%z literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZNC520.a b/board/novatek/na51055/loader/ARC/Lib/Release/Remap_LZNC520.a new file mode 100644 index 0000000000000000000000000000000000000000..ef37844f05f562cd626a88d4fff1287f6afb8f72 GIT binary patch literal 4306 zcmbVPO>7(25uQgmIB^4pI=D?yBkVW( zBdu0S6Lh3`^S+sR^WK~H!?)e%)qG;^+16fZJB6arq3B>VIxrwfvSD(Tk`$6nEJ-u1 zM6?I|&z-#g(2EzRl^4`Za$d_*L09uS<+Eu;o4rxcl)R=U4fvdv2*04+x}@g~nAXyX z+-(}kW@b~@r_}Vc8mC_O0Jjf!2MP_^s+rbgHm{}C+}PENBayHi%=WhS+Jm>8oU;uL zMfxNCRw>KTXul-&$^9sqW?Ekv9s9Nr0+TgKP!DY(q6N+eQB%JmdT1{vN3?9L(7ufh z@@xeBZ8g!lQt>>sQt=TaSbzh5QCsmYR|EciwckK`0;LKCiq&^eXZbeU0{5!kGo^|r zuviX2rvnQK_~>F;2fha%89L9A#j*_Sg^jw4)dfResw_Zf_Ft?V^f%YI&(9l;fB2|W zVM$V{JQeu#A<<;zBvI>M238-A#!499rOE-KW0SyKZ$kaDp)am^Xri(ozQ=n?_+KDpW@e`AdhXCHLyp5^LAYpx@fj94;k zN!gMVD^@YiM?BWI(T*_JSYXk}(|zFk?a*P)KB>4aXrlb2(Kz?ogXQXLu+12`66klT z@}EZIn9S>dyvxWzw*JavLLVJnEw#hozjZa&4nZC?xVbhCJNpFua&0WUTrKVKt~QV} zZbLHi(_1RvJ$|SB-QMP!kngT}(f7X_jW1+GVbQP-&^uKTz>-!Av1J9~Gw_l=-)LyLG zeac;JH6QXMcZu4PSgtO?zSO;373c1(ics;P2u!XaCs!9>^FLLre9m!qv40=-IkXj2 zEGJ=4a$UMpCaGARhV2S;e(VchUvbrU<<6=fam3_ZBRLu4tSYdye+L_PO*W#1n|e`F8qxFi+n9ybrid z49qd@{lLD)nW&e_yyqx(_G1GVfBVrF){Qf76_Tiv3?>iQ2lj$b)dxEmTO|LePDQFW zj0ER2PPRq9B^<4`ir=BS|QX2sShV_`UP;NS#8=t+TtBD`bi6rGNs0Gc&N<5p@jS%(| z%b1UrSF~GNLNVT3N*oPnn?8}dp{U7Ze!I4idU?w)sp{%(?G62o_NMn{d*#CT__Q*5 zWpucn_)_;smxb@U=qEKJ=Tf4^ghcbq6zG;PFz~=Vh?qmA^HPL=>N*H19ufm+y{II zcyRIZS@(P$`;_GgoH<;Oo*tqDEKd=gVR@P;#`0U}Bv`ne*72MT7WBL+=j>Wun-Ag+ z*D1*9q#$q8;PBLUf~v0PQ}G+RRzQHSMqO~@qr=Z~CVq=fU<@|d)vrOZ7aX$;e+0;( z-VEmU?AHQ5X<a90L#JpQe)$&S|sg&m7+=kd0Vam6Cr zk0p-&CcVYuLqi_RF)%~EPk64*cyD2%Pdggg@yuO{b3S$zp9}cfaeNK!_I)ro6vejz z)0clA95MUb_I+^q4P%V;Ch~P)p!ER06FeAb36j?i5?d@F7-M^ZPHjAENUL~$WaOOG zGnUGz`K$yWMT7lk!*XaaC`V2)2!C08VwJkbL$bpKkU0aLfSnC#6fY`dqf-+ z$HddV<6`$`iJf}$* R^B0}nci_kOoK1GT{{pZ)tg8S3 literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/Remap_NM520.a b/board/novatek/na51055/loader/ARC/Lib/Release/Remap_NM520.a new file mode 100644 index 0000000000000000000000000000000000000000..cc8e3b3484422e5c09ce00936b819b615307ad66 GIT binary patch literal 3596 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/STRGEXT_Eth.a b/board/novatek/na51055/loader/ARC/Lib/Release/STRGEXT_Eth.a new file mode 100644 index 0000000000000000000000000000000000000000..f83261953d19366eca6d899e2719c59556089a34 GIT binary patch literal 13108 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/STRGEXT_Sdio1.a b/board/novatek/na51055/loader/ARC/Lib/Release/STRGEXT_Sdio1.a new file mode 100644 index 0000000000000000000000000000000000000000..cc8963edec65624cea3ab9b6949d9ff5f2b8db70 GIT binary patch literal 4104 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 Tf=Xv+&vzX+d(ujRF>Cl=w-#1o literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/STRGEXT_Sdio2.a b/board/novatek/na51055/loader/ARC/Lib/Release/STRGEXT_Sdio2.a new file mode 100644 index 0000000000000000000000000000000000000000..f7bf9b5091699023c19f6dbc5b431cc43c57f6e4 GIT binary patch literal 3712 zcma)8O>7(25uROA7A-N=>c@#|3+|KSBy4IiONpY%L@Xp0WG2*x3CUInpP;>OSAzJpcM+F2zqFp_>efKpg?j+FGYZw+-~8tKB$KlK@gPv zX1Ob^m>9?a%kRz1_vXEsH~Y8)qneRlc)a5gaZnPeR3?>9rP2u@RM!>!6=Gz_=g)Q! zQ3%iT{*%{?!c1jJFOxgUmnv1gIebPpXUvr)ooM>Wr!Ee~D|^cZ*GptZk|Rm)S5;G~ zq!7a+!`_Os9WQ)y;;bY|Sgt7&#b{q6`jB@-)RuH1M!lp^QrUKBeDLG&@2}Ql>Prr( zp<7*|w=NTP#AwYSx@FUq8@G3<*Zyy#;o4-fYHTB#+}*`od34pjoZWW%5QAo|T9zzZ zp0sLVO_HIpaP5l`+!j(fsgsO zvvhAA7zxhD+}AMowf{64JIrzSb#d_HwM$kl{nECxn#6vwFZGpeM_#gOp{!*K?6vQM z3w2fPbo$q}otQXZ4=dN43xR!|Cb}LI$DI?W<+|KCWh4HvHpQy7BY$`A;+n&`-a-vk z^*Hu8Wh+10bcD6(98#_B@Y9>l)Jd}Yl}$%hEIZo0>4ZECtD6pq&Ar+jA=)7U&cLP< z9r(2)iJtmrSg#)(641Y~ZZn@0jE{G_KHl?0gxoqx*-Q05gYTXf-Ktq#R!w|xzP|h7 zjoZOmIgQ5k2;%Kv-!aj-xBlN?=Xiwu`7!S_8vo>4QmX8>QC24T!+~vQ31_aLeo@pf ztp380GaGhTU3a9|dfkK`Q8#Q8`tK6xE#;Tk@0v}@2G^iQ0{Z!8Zle#9{b`qFr^SZz z`YE!rV$FH+k*3b|4GZoeJbt~=L+HyL?ga(8E#a)Chb?=jo9uDevQKZj`Hb?q;C}io z%a(p<*`Z1673Ohn&w=On9rC-*c0SW$!2S=|N&OXKOxt)@b|k6SzJvbecS4em*ph1X z;uShZD&l)_-@*J~um1%x-V&U@W#&~H3*4LdZ z-o+OlziD@=H|<{3GpnvS=}FWW>xGrAy>ojrki(?6&V;({Ob{MkU%l##W1Vr>IByA@ z*Kw}gFMmS6B*A0*Z{4$&cHQ${Z4j+CvV2X1`G;iKzgYTs4e$PFp8ZYt?3?!k=JEZ2 zHTiyF+r`|JFpGAXN%Qhr7X_OB}NKrI+e+*nbf>KoJpy}S|K%D$R{$|+?o8mIy|D!ol(C} zV`-$K>DpY8q&S9cxr$-x&kv4e=uk)dSVTH3_sD(H5$V3rQR%DFG3iA3r1Y@#Wbi6= zixD)0>E9^YzJw0ky!=Oi?g>c9{cG4agiz_j`zl6Zih6n$C`0cDj(Rr#WPCM5Z7uWL z=xd(y8c>Fx=WqEFpa&&H?Je`$Y1kut2Z_q?^ZfC>q}zkjkeb=ZlIQktcQij1@^nhWaJ*7A z&*|p0shP`FI#uvY)5XQ5lAfz9E^6fhJ5%oOyJwnFooIb-P0%oj^~b){{d z6GXr9>~|PpS5RN($2`n3!afOp+a9VO?+x&ly)lE&dk^YVLu^-qxGUwPmO$75j(l#6B&@8>Y|z>cfNtqbSHH44Vt#UUK^gTUtx{|}u5 BQ*rTZd74vtASTAU9ksG*RLPVLqWJC1>fkTA#T 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/STRGINT_EMMC.a b/board/novatek/na51055/loader/ARC/Lib/Release/STRGINT_EMMC.a new file mode 100644 index 0000000000000000000000000000000000000000..007febcf79292429e4795d459860ce35be9dfad9 GIT binary patch literal 8330 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/STRGINT_NandEccRS.a b/board/novatek/na51055/loader/ARC/Lib/Release/STRGINT_NandEccRS.a new file mode 100755 index 0000000000000000000000000000000000000000..730ff475fd872e2a085f051e2b1b0c89ad6c2720 GIT binary patch literal 12404 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/STRGINT_SpiFlash.a b/board/novatek/na51055/loader/ARC/Lib/Release/STRGINT_SpiFlash.a new file mode 100644 index 0000000000000000000000000000000000000000..caef68f66b41cc70acb9817212c7cede6a10064c GIT binary patch literal 9952 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 KvfUui@%|4JZq)|> literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/ARC/Lib/Release/fdt.a b/board/novatek/na51055/loader/ARC/Lib/Release/fdt.a new file mode 100644 index 0000000000000000000000000000000000000000..a23adcbbdb3485045820b144e1d5258dcc285d03 GIT binary patch literal 13942 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 GtN#YQdzG{R literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/Include/CMacro.h b/board/novatek/na51055/loader/Include/CMacro.h new file mode 100755 index 000000000000..956cd8ec9cce --- /dev/null +++ b/board/novatek/na51055/loader/Include/CMacro.h @@ -0,0 +1,35 @@ +/*++ + +Copyright (c) 2005 Novatek Microelectronics Corporation + +Module Name: + StdCMac.h + +Abstract: + Standard C Macros for shared header file of ARM ASM and C + You should include this file first and then include the shared header file + For more information, please refer to http://www.arm.com/support/faqdev/1208.html + +Environment: + For nt96610 + +Notes: + Copyright (c) 2005 Novatek Microelectronics Corporation. All Rights Reserved. + +Revision History: + ??/??/??: Created by ARM + 03/17/05: Modify by Chris Hsu for NT96610 uITRON project +--*/ + +#ifndef __C_MACRO_H +#define __C_MACRO_H + + +/* Comment */ +#define COMMENT + +/* end */ +#define END + +#endif // __C_MACRO_H + diff --git a/board/novatek/na51055/loader/Include/Driver/CC.h b/board/novatek/na51055/loader/Include/Driver/CC.h new file mode 100755 index 000000000000..ca71331870ff --- /dev/null +++ b/board/novatek/na51055/loader/Include/Driver/CC.h @@ -0,0 +1,41 @@ +/** + Header file for CC (Core Communicator) module. + + This file is the header file that define the API and data type + for CC module. + + @file CC.h + @ingroup mIDrvSys_CC + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2015. All rights reserved. +*/ + +#ifndef _CC_H +#define _CC_H + +#define ENUM_DUMMY4WORD(name) E_##name = 0x10000000 + +#define CC_CORE_CA53_CORE1 0 +#define CC_CORE_CA53_CORE2 1 +#define CC_CORE_DSP 2 +#define CC_CORE_DSP2 3 + +typedef enum +{ + DMA_ID_1, ///< DMA Controller + DMA_ID_2, ///< DMA Controller 2 + + DMA_ID_COUNT, //< DMA controller count + + ENUM_DUMMY4WORD(DMA_ID) +} DMA_ID; + +extern void cc_setCore2Base(UINT32 uiBaseAddr); +extern ER cc_startCore(UINT32 uiCoreID); +extern void cc_stopCore(UINT32 uiCoreID); +extern UINT32 dma_get_dram_capacity(DMA_ID id); + + + +#endif diff --git a/board/novatek/na51055/loader/Include/Driver/Cache.h b/board/novatek/na51055/loader/Include/Driver/Cache.h new file mode 100755 index 000000000000..e840ce007b2a --- /dev/null +++ b/board/novatek/na51055/loader/Include/Driver/Cache.h @@ -0,0 +1,511 @@ +/** + CPU module driver. + + This file is the driver of CPU module. + + @file Cache.h + @ingroup mIHALCore + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2005. All rights reserved. +*/ + +#ifndef _CACHE_H +#define _CACHE_H +#include "constant.h" + + +/* + csselrcache level & type selection + + Detailed reference to [trm p4-177 CSSELR] +*/ +typedef enum _CACHE_LV_TYPE_ +{ + LEVEL_1_DCACHE = 0x0, //< Level 1 data cache + LEVEL_1_ICACHE, //< Level 1 instruction cache + LEVEL_2_DCACHE, //< Level 2 data cache +} CACHE_LV_TYPE; + + +/* + Values for Ctype fields in CLIDR +*/ + +typedef enum _CLIDR_CTYPE_ +{ + CLIDR_CTYPE_NO_CACHE = 0x0, + CLIDR_CTYPE_INSTRUCTION_ONLY= 0x1, + CLIDR_CTYPE_DATA_ONLY = 0x2, + CLIDR_CTYPE_INSTRUCTION_DATA= 0x3, + CLIDR_CTYPE_UNIFIED = 0x4, +}CLIDR_CTYPE; + + +//Instruction Synchronization Barrier. +#define _ISB() \ + __asm__ __volatile__("isb\n\t") + +//Data Synchronization Barrier +#define _DSB() \ + __asm__ __volatile__("dsb\n\t") + +//Data Memory Barrier +#define _DMB() \ + __asm__ __volatile__("dmb\n\t") + + +/* + ************************************************************************ + * Cache Size ID Register, CCSIDR (cp15, 1, c0, c0, 0) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |W|W|R|W|NumSets |Associativity |L | + * |T|B|A|A| | |S | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_DC_SETS 8 +#define S_DC_W 2 +#define S_DC_LS 5 + +#define _DC_SETS (1 << S_DC_SETS) /* 256 sets */ +#define _DC_W (1 << S_DC_W) /* 4 way */ +#define _DC_LS (1 << S_DC_LS) /* 32 byte line size */ + +#define S_IC_SETS 8 +#define S_IC_W 2 +#define S_IC_LS 5 + +#define _IC_SETS (1 << S_IC_SETS) /* 256 sets */ +#define _IC_W (1 << S_IC_W) /* 4 way */ +#define _IC_LS (1 << S_IC_LS) /* 32 byte line size */ + +#define S_DC_W_L2 4 /* L2 way shift*/ + +#define S_SC_SETS 9 +#define S_SC_W 3 +#define S_SC_LS 5 + +#define _SC_SETS (1 << S_SC_SETS) /* 512 sets */ +#define _SC_W (1 << S_SC_W) /* 8 way */ +#define _SC_LS (1 << S_SC_LS) /* 32 byte line size */ + + +#define S_CCSIDR_WT 31 +#define M_CCSIDR_WT (0x1 << S_CCSIDR_WT) /* Support write-through */ +#define S_CCSIDR_WB 30 +#define M_CCSIDR_WB (0x1 << S_CCSIDR_WB) /* Support write-back */ +#define S_CCSIDR_RA 29 +#define M_CCSIDR_RA (0x1 << S_CCSIDR_RA) /* Support read-allocation */ +#define S_CCSIDR_WA 28 +#define M_CCSIDR_WA (0x1 << S_CCSIDR_WA) /* Support write-allocation */ +#define S_CCSIDR_SETS 13 +#define M_CCSIDR_SETS (0x7fff << S_CCSIDR_SETS) /* Number of sets */ +#define S_CCSIDR_A 3 +#define M_CCSIDR_A (0x3ff << S_CCSIDR_A) /* Number of associatiovity */ +#define S_CCSIDR_LS 0 +#define M_CCSIDR_LS (0x7 << S_CCSIDR_LS) /* Cache line size */ + + +/* + * SCTLR_EL1/SCTLR_EL2/SCTLR_EL3 bits definitions + */ +#define CR_M (1 << 0) /* MMU enable */ +#define CR_A (1 << 1) /* Alignment abort enable */ +#define CR_C (1 << 2) /* Dcache enable */ +#define CR_SA (1 << 3) /* Stack Alignment Check Enable */ +#define CR_I (1 << 12) /* Icache enable */ +#define CR_WXN (1 << 19) /* Write Permision Imply XN */ +#define CR_EE (1 << 25) /* Exception (Big) Endian */ + +#define SCTLR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__( \ + "mrc p15, 0, %0, c1, c0, 0\n\t" \ + : "=r" (val)); \ + val; \ + }) + +#define LEVEL_1 (1 - 1) +#define LEVEL_2 (2 - 1) + +#define CCSIDR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__( \ + "mrc p15, 1, %0, c0, c0, 0\n\t" \ + : "=r" (val)); \ + val; \ + }) + + +#define sel_CSSELR(InD) \ + __asm__ __volatile__( \ + "mcr p15, 2, %0, c0, c0, 0\n\t" \ + : \ + : "r"(InD)); + +#define _ICACHE_INV_ALL() _ICIALLU() \ + _BPIALL() + +/* + ICIALLU, Instruction Cache Invalidate All to PoU + The ICIALLU characteristics are: + + Invalidate all instruction caches to PoU. If branch predictors are + architecturally visible, also flush branch predictors. + + This register is part of the Cache maintenance instructions functional group. + + Usage constraints + If EL3 is implemented and is using AArch32, this operation can be performed at the following + exception levels: +*/ +#define _ICIALLU() \ + __asm__ __volatile__("mcr p15, 0, %0, c7, c5, 0" : : "r" (0)); + +/* + Branch Predictor Invalidate All + The BPIALL characteristics are: + + Invalidate all entries from branch predictors. + This register is part of the Cache maintenance instructions functional group. + Usage constraints + If EL3 is implemented and is using AArch32, this operation can be performed at the following + exception levels: +*/ +#define _BPIALL() \ + __asm__ __volatile__("mcr p15, 0, %0, c7, c5, 6" : : "r" (0)); + + +/* + ICIMVAU : Instruction Cache line Invalidate by VA to PoU +*/ +#define _ICACHE_INV_MVAU(addr) _ICIMVAU(addr) +#define _ICIMVAU(addr) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7, c5, 1\n\t" \ + : \ + : "r"(addr)); + +#define _DCACHE_INV_MVAC(addr) _DCIMVAC(addr) +#define _DCIMVAC(addr) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7, c6, 1\n\t" \ + : \ + : "r"(addr)); + +//DCCMVAC Clean data cache line by VA to PoC +#define _DCACHE_WBACK_MVAC(addr) _DCCMVAC(addr) +#define _DCCMVAC(addr) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7, c10, 1\n\t" \ + : \ + : "r"(addr)); + +//_DCCIMVAC Clean and invalidate data cache line by VA to PoC +#define _DCACHE_WBACK_INV_MVAC(addr) _DCCIMVAC(addr) +#define _DCCIMVAC(addr) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7, c14, 1\n\t" \ + : \ + : "r"(addr)); + +//DCCISW Clean and invalidate data cache line by set/way +#define _DCCISW(way_set) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7 ,c14, 2\n\t" \ + : \ + : "r"(way_set)); + +//DCISW Invalidate data cache line by set/way +/* + The DCISW input value bit assignments are: + + |31......................4 | 3...1 | 0 | + Setway level rsv + bit[3..1] = 0x0 = Level 1 + bit[3..1] = 0x1 = Level 2 + ... +*/ +#define _DCISW(way_set) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7 ,c6, 2\n\t" \ + : \ + : "r"(way_set)); + + +//DCCSW Clean data cache line by set/way +/* + The DCCSW input value bit assignments are: + + |31......................4 | 3...1 | 0 | + Setway level rsv + bit[3..1] = 0x0 = Level 1 + bit[3..1] = 0x1 = Level 2 + ... +*/ +#define _DCCSW(way_set) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7 ,c10, 2\n\t" \ + : \ + : "r"(way_set)) + + + + +/* Cache dirty register () */ +#define read_CDSR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__(\ + "mrc p15, 0, %0, c7, c10, 6\n\t" \ + : "=r"(val) \ + );\ + val;\ + }) + +/* Get CPU ID */ +#define read_MPIDR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__(\ + "mrc p15, 0, %0, c0, c0, 5\n\t" \ + : "=r"(val) \ + );\ + val;\ + }) + +/* ead current CP15 Cache Level ID Register */ +#define read_CLIDR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__(\ + "mrc p15, 1, %0, c0, c0, 1\n\t" \ + : "=r"(val) \ + );\ + val;\ + }) + +#define change_property() \ + ({ \ + __asm__ __volatile__( \ + ".arch_extension sec\n\t" \ + "smc #123\n\t" \ + : \ + : \ + ); \ + }) + +#define CLEAR_MMU() \ + __asm__ __volatile__("mcr p15, 0, r0, c8, c7, 0\n\t"); + + +#define DISABLE_MMU() \ + ({ \ + unsigned long val = 0; \ + __asm__ __volatile__( \ + "mrc p15, 0, %0, c1, c0, 0\n\t" \ + "bic %0, %0, #0x1\n\t" \ + "mcr p15, 0, %0, c1, c0, 0\n\t" \ + : \ + : "r" (val) \ + ); \ + }) + +#define DISABLE_DCACHE() \ + ({ \ + unsigned long val = 0; \ + __asm__ __volatile__( \ + "mrc p15, 0, %0, c1, c0, 0\n\t" \ + "bic %0, %0, #0x4\n\t" \ + "mcr p15, 0, %0, c1, c0, 0\n\t" \ + : \ + : "r" (val) \ + ); \ + }) + +#define DISABLE_ICACHE() \ + ({ \ + unsigned long val = 0; \ + __asm__ __volatile__( \ + "mrc p15, 0, %0, c1, c0, 0\n\t" \ + "bic %0, %0, #0x1000\n\t" \ + "mcr p15, 0, %0, c1, c0, 0\n\t" \ + : \ + : "r" (val) \ + ); \ + }) + +#define SETUP_TTBR0(val) \ + ({ \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c2, c0, 0\n\t" \ + : \ + : "r" (val) \ + ); \ + }) +/* Cache dirty register () */ +#define read_CDSR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__(\ + "mrc p15, 0, %0, c7, c10, 6\n\t" \ + : "=r"(val) \ + );\ + val;\ + }) +/** + @addtogroup mIHALCore +*/ +//@{ + +/** + @name CPU clean invalidate all DCache + + Clean and invalidate all data cache + + @return void +*/ +//@{ +#define CPUCleanInvalidateDCacheAll() cpu_cleanInvalidateDCacheAll() ///< clean invalidate all DCache +//@} + +/** + @name CPU clean invalidate DCache + + Clean and invalidate data cache + Cache line associated with input address will be clean and invalidated + + @param[in] addr data address to be clean and invalidated + + @return void +*/ +//@{ +#define CPUCleanInvalidateDCache(addr) cpu_cleanInvalidateDCache(addr) ///< clean invalidate DCache +//@} + +/** + @name CPU clean invalidate DCache block + + Clean and invalidate data cache block + Cache line associated with input region will be clean and invalidated + + @param[in] m starting data address to be clean and invalidated + @param[in] n end data address to be clean and invalidated + + @return void +*/ +//@{ +#define CPUCleanInvalidateDCacheBlock(m,n) cpu_cleanInvalidateDCacheBlock(m, n) ///< clean invalidate DCache block +//@} + +/** + @name CPU invalidate DCache + + Invalidate data cache + Cache line associated with input address will be invalidated + + @param[in] addr data address to be invalidated + + @return void +*/ +//@{ +#define CPUInvalidateDCache(m) cpu_invalidateDCache(m) ///< invalidate DCache +//@} + +/** + @name CPU invalidate DCache block + + Invalidate data cache block + Cache line associated with input region will be invalidated + + @param[in] m starting data address to be invalidated + @param[in] n end data address to be invalidated + + @return void +*/ +//@{ +#define CPUInvalidateDCacheBlock(m,n) cpu_invalidateDCacheBlock(m,n) ///< invalidate DCache block +//@} + +/** + @name CPU clean DCache + + Clean data cache + Cache line associated with input address will be clean + + @param[in] addr data address to be clean + + @return void +*/ +//@{ +#define CPUCleanDCache(m) cpu_cleanDCache(m) ///< clean DCache +//@} + +/** + @name CPU clean DCache block + + Clean data cache block + Cache line associated with input region will be clean + + @param[in] m starting data address to be clean + @param[in] n end data address to be clean + + @return void +*/ +//@{ +#define CPUCleanDCacheBlock(m, n) cpu_cleanDCacheBlock(m, n) ///< clean DCache block +//@} + +/** + @name CPU invalidate all DCache + + Invalidate all data cache + + @return void +*/ +//@{ +#define CPUInvalidateDCacheAll() cpu_invalidateDCacheAll() ///< invalidate all DCache +//@} + + +extern BOOL CPUChkDCacheEnabled(UINT32 addr); +extern void CPUInvalidateICacheAll(void) __attribute__ ((section (".part1"))); +//extern void CPUInvalidateICacheAll(void) __attribute__ ((section (".part1"), far)); +//extern void CPUInvalidateICache(UINT32 addr); +extern void CPUInvalidateICacheBlock(UINT32 start, UINT32 end); + +#if 0 +extern void CPUInvalidateDCacheAll(void); +extern void CPUInvalidateDCache(UINT32 addr); +extern void CPUInvalidateDCacheBlock(UINT32 start, UINT32 end); +#endif +extern void cpu_invalidateDCacheBlock(UINT32 start, UINT32 end); +extern void cpu_invalidateDCache(UINT32 addr); +extern void cpu_invalidateDCacheAll(void)__attribute__ ((section (".part1"))); +extern void cpu_cleanDCache(UINT32 addr); +extern void cpu_cleanDCacheBlock(UINT32 start, UINT32 end); +extern void _cache_clean_d_cache_all(UINT32 level_type, BOOL DSB)__attribute__ ((section (".part1"))); +extern void _cache_invalidate_data_cache_all(UINT32 level_type, BOOL DSB)__attribute__ ((section (".part1"))); +extern void _cache_clean_invalidate_d_cache_All(UINT32 level_type, BOOL DSB)__attribute__ ((section (".part1"))); + + + +extern void cpu_cleanInvalidateDCacheAll(void)__attribute__ ((section (".part1"))); +//extern void cpu_cleanInvalidateDCacheAll(void)__attribute__ ((section (".part1"), far)); +extern void cpu_cleanInvalidateDCache(UINT32 addr); +extern void cpu_cleanInvalidateDCacheBlock(UINT32 start, UINT32 end); + +extern void CPUflushReadCache(UINT32 uiStartAddr, UINT32 uiLength); +extern void CPUflushWriteCache(UINT32 uiStartAddr, UINT32 uiLength); + + + +#endif + +//@} diff --git a/board/novatek/na51055/loader/Include/Driver/Clock.h b/board/novatek/na51055/loader/Include/Driver/Clock.h new file mode 100755 index 000000000000..92be645d86d4 --- /dev/null +++ b/board/novatek/na51055/loader/Include/Driver/Clock.h @@ -0,0 +1,26 @@ +/** + System Clock APIs header file + + System Clock APIs header. + + @file clock.h + @ingroup mIHALSysCG + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef __CLOCK_H +#define __CLOCK_H + +#include "IOReg.h" + +/** \addtogroup mIHALSysCG */ +//@{ + + + + +//@} + +#endif // __CLOCK_H diff --git a/board/novatek/na51055/loader/Include/Driver/GPIO.h b/board/novatek/na51055/loader/Include/Driver/GPIO.h new file mode 100755 index 000000000000..bb6719e983e6 --- /dev/null +++ b/board/novatek/na51055/loader/Include/Driver/GPIO.h @@ -0,0 +1,314 @@ +/** + General Purpose I/O controller header file + + General Purpose I/O controller header file + + @file GPIO.h + @ingroup mIIOGPIO + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _GPIO_H +#define _GPIO_H + +#include "IOReg.h" + +#define ENUM_DUMMY4WORD(name) E_##name = 0x10000000 + +/** + @addtogroup mIDrvIO_GPIO +*/ +//@{ + +/** + GPIO direction + + GPIO direction definition for gpio_setDir() and gpio_getDir() +*/ +typedef enum { + GPIO_DIR_INPUT = 0, ///< GPIO is input direction + GPIO_DIR_OUTPUT = 1, ///< GPIO is output direction + + ENUM_DUMMY4WORD(GPIO_DIR) +} GPIO_DIR; + +/** + GPIO interrupt type + + GPIO interrupt type definition for type argument of gpio_setIntTypePol() +*/ +typedef enum { + GPIO_INTTYPE_EDGE = 0, ///< GPIO interrupt is edge trigger + GPIO_INTTYPE_LEVEL = 1, ///< GPIO interrupt is level trigger + + ENUM_DUMMY4WORD(GPIO_INTTYPE) +} GPIO_INTTYPE; + +/** + GPIO interrupt polarity + + GPIO interrupt polarity definition for pol argument of gpio_setIntTypePol() +*/ +typedef enum { + GPIO_INTPOL_POSHIGH = 0, ///< GPIO interrupt polarity is \n + ///< - @b positvie edge for edge trigger + ///< - @b high level for level trigger + GPIO_INTPOL_NEGLOW = 1, ///< GPIO interrupt polarity is \n + ///< - @b negative edge for edge trigger + ///< - @b low level for level trigger + GPIO_INTPOL_BOTHEDGE = 2, ///< GPIO interrupt polarity is \n + ///< - @b both edge for edge trigger + ENUM_DUMMY4WORD(GPIO_INTPOL) +} GPIO_INTPOL; + + + +/** + @name GPIO pins ID + + GPIO pins ID definition + + For detail GPIO pin out, please refer to NT96520 data sheet. +*/ +//@{ +/*Storage GPIO - CGPIO*/ +#define C_GPIO_0 0 ///< C_GPIO[0] +#define C_GPIO_1 1 ///< C_GPIO[1] +#define C_GPIO_2 2 ///< C_GPIO[2] +#define C_GPIO_3 3 ///< C_GPIO[3] +#define C_GPIO_4 4 ///< C_GPIO[4] +#define C_GPIO_5 5 ///< C_GPIO[5] +#define C_GPIO_6 6 ///< C_GPIO[6] +#define C_GPIO_7 7 ///< C_GPIO[7] +#define C_GPIO_8 8 ///< C_GPIO[8] +#define C_GPIO_9 9 ///< C_GPIO[9] +#define C_GPIO_10 10 ///< C_GPIO[10] +#define C_GPIO_11 11 ///< C_GPIO[11] +#define C_GPIO_12 12 ///< C_GPIO[12] +#define C_GPIO_13 13 ///< C_GPIO[13] +#define C_GPIO_14 14 ///< C_GPIO[14] +#define C_GPIO_15 15 ///< C_GPIO[15] +#define C_GPIO_16 16 ///< C_GPIO[16] +#define C_GPIO_17 17 ///< C_GPIO[17] +#define C_GPIO_18 18 ///< C_GPIO[18] +#define C_GPIO_19 19 ///< C_GPIO[19] +#define C_GPIO_20 20 ///< C_GPIO[20] +#define C_GPIO_21 21 ///< C_GPIO[21] +#define C_GPIO_22 22 ///< C_GPIO[22] + +/*Peripheral GPIO - PGPIO*/ +#define P_GPIO_SHIFT_BASE 32 +#define P_GPIO_0 (0 +P_GPIO_SHIFT_BASE) ///< P_GPIO[0] +#define P_GPIO_1 (1 +P_GPIO_SHIFT_BASE) ///< P_GPIO[1] +#define P_GPIO_2 (2 +P_GPIO_SHIFT_BASE) ///< P_GPIO[2] +#define P_GPIO_3 (3 +P_GPIO_SHIFT_BASE) ///< P_GPIO[3] +#define P_GPIO_4 (4 +P_GPIO_SHIFT_BASE) ///< P_GPIO[4] +#define P_GPIO_5 (5 +P_GPIO_SHIFT_BASE) ///< P_GPIO[5] +#define P_GPIO_6 (6 +P_GPIO_SHIFT_BASE) ///< P_GPIO[6] +#define P_GPIO_7 (7 +P_GPIO_SHIFT_BASE) ///< P_GPIO[7] +#define P_GPIO_8 (8 +P_GPIO_SHIFT_BASE) ///< P_GPIO[8] +#define P_GPIO_9 (9 +P_GPIO_SHIFT_BASE) ///< P_GPIO[9] +#define P_GPIO_10 (10+P_GPIO_SHIFT_BASE) ///< P_GPIO[10] +#define P_GPIO_11 (11+P_GPIO_SHIFT_BASE) ///< P_GPIO[11] +#define P_GPIO_12 (12+P_GPIO_SHIFT_BASE) ///< P_GPIO[12] +#define P_GPIO_13 (13+P_GPIO_SHIFT_BASE) ///< P_GPIO[13] +#define P_GPIO_14 (14+P_GPIO_SHIFT_BASE) ///< P_GPIO[14] +#define P_GPIO_15 (15+P_GPIO_SHIFT_BASE) ///< P_GPIO[15] +#define P_GPIO_16 (16+P_GPIO_SHIFT_BASE) ///< P_GPIO[16] +#define P_GPIO_17 (17+P_GPIO_SHIFT_BASE) ///< P_GPIO[17] +#define P_GPIO_18 (18+P_GPIO_SHIFT_BASE) ///< P_GPIO[18] +#define P_GPIO_19 (19+P_GPIO_SHIFT_BASE) ///< P_GPIO[19] +#define P_GPIO_20 (20+P_GPIO_SHIFT_BASE) ///< P_GPIO[20] +#define P_GPIO_21 (21+P_GPIO_SHIFT_BASE) ///< P_GPIO[21] +#define P_GPIO_22 (22+P_GPIO_SHIFT_BASE) ///< P_GPIO[22] +#define P_GPIO_23 (23+P_GPIO_SHIFT_BASE) ///< P_GPIO[23] +#define P_GPIO_24 (24+P_GPIO_SHIFT_BASE) ///< P_GPIO[24] +#define P_GPIO_25 (25+P_GPIO_SHIFT_BASE) ///< P_GPIO[25] + +/*Sensor GPIO - SGPIO*/ +#define S_GPIO_SHIFT_BASE 64 +#define S_GPIO_0 (0 +S_GPIO_SHIFT_BASE) ///< S_GPIO[0] +#define S_GPIO_1 (1 +S_GPIO_SHIFT_BASE) ///< S_GPIO[1] +#define S_GPIO_2 (2 +S_GPIO_SHIFT_BASE) ///< S_GPIO[2] +#define S_GPIO_3 (3 +S_GPIO_SHIFT_BASE) ///< S_GPIO[3] +#define S_GPIO_4 (4 +S_GPIO_SHIFT_BASE) ///< S_GPIO[4] +#define S_GPIO_5 (5 +S_GPIO_SHIFT_BASE) ///< S_GPIO[5] +#define S_GPIO_6 (6 +S_GPIO_SHIFT_BASE) ///< S_GPIO[6] +#define S_GPIO_7 (7 +S_GPIO_SHIFT_BASE) ///< S_GPIO[7] +#define S_GPIO_8 (8 +S_GPIO_SHIFT_BASE) ///< S_GPIO[8] +#define S_GPIO_9 (9 +S_GPIO_SHIFT_BASE) ///< S_GPIO[9] +#define S_GPIO_10 (10+S_GPIO_SHIFT_BASE) ///< S_GPIO[10] +#define S_GPIO_11 (11+S_GPIO_SHIFT_BASE) ///< S_GPIO[11] +#define S_GPIO_12 (12+S_GPIO_SHIFT_BASE) ///< S_GPIO[11] + + +/*LCD GPIO - LGPIO*/ +#define L_GPIO_SHIFT_BASE 96 +#define L_GPIO_0 (0 +L_GPIO_SHIFT_BASE) ///< L_GPIO[0] +#define L_GPIO_1 (1 +L_GPIO_SHIFT_BASE) ///< L_GPIO[1] +#define L_GPIO_2 (2 +L_GPIO_SHIFT_BASE) ///< L_GPIO[2] +#define L_GPIO_3 (3 +L_GPIO_SHIFT_BASE) ///< L_GPIO[3] +#define L_GPIO_4 (4 +L_GPIO_SHIFT_BASE) ///< L_GPIO[4] +#define L_GPIO_5 (5 +L_GPIO_SHIFT_BASE) ///< L_GPIO[5] +#define L_GPIO_6 (6 +L_GPIO_SHIFT_BASE) ///< L_GPIO[6] +#define L_GPIO_7 (7 +L_GPIO_SHIFT_BASE) ///< L_GPIO[7] +#define L_GPIO_8 (8 +L_GPIO_SHIFT_BASE) ///< L_GPIO[8] +#define L_GPIO_9 (9 +L_GPIO_SHIFT_BASE) ///< L_GPIO[9] +#define L_GPIO_10 (10+L_GPIO_SHIFT_BASE) ///< L_GPIO[10] +#define L_GPIO_11 (11+L_GPIO_SHIFT_BASE) ///< L_GPIO[11] +#define L_GPIO_12 (12+L_GPIO_SHIFT_BASE) ///< L_GPIO[12] +#define L_GPIO_13 (13+L_GPIO_SHIFT_BASE) ///< L_GPIO[13] +#define L_GPIO_14 (14+L_GPIO_SHIFT_BASE) ///< L_GPIO[14] +#define L_GPIO_15 (15+L_GPIO_SHIFT_BASE) ///< L_GPIO[15] +#define L_GPIO_16 (16+L_GPIO_SHIFT_BASE) ///< L_GPIO[16] +#define L_GPIO_17 (17+L_GPIO_SHIFT_BASE) ///< L_GPIO[17] +#define L_GPIO_18 (18+L_GPIO_SHIFT_BASE) ///< L_GPIO[18] +#define L_GPIO_19 (19+L_GPIO_SHIFT_BASE) ///< L_GPIO[19] +#define L_GPIO_20 (20+L_GPIO_SHIFT_BASE) ///< L_GPIO[20] +#define L_GPIO_21 (21+L_GPIO_SHIFT_BASE) ///< L_GPIO[21] +#define L_GPIO_22 (22+L_GPIO_SHIFT_BASE) ///< L_GPIO[22] +#define L_GPIO_23 (23+L_GPIO_SHIFT_BASE) ///< L_GPIO[23] +#define L_GPIO_24 (24+L_GPIO_SHIFT_BASE) ///< L_GPIO[24] + +/*Dedicated GPIO - DGPIO*/ +// In order to backward comaptible, DGPIO is used as " GPIO_IS_DGPIO | D_GPIO_* " +#define D_GPIO_SHIFT_BASE 128 +#define D_GPIO_0 (0 +D_GPIO_SHIFT_BASE) ///< DGPIO[0] +#define D_GPIO_1 (1 +D_GPIO_SHIFT_BASE) ///< DGPIO[1] +#define D_GPIO_2 (2 +D_GPIO_SHIFT_BASE) ///< DGPIO[2] +#define D_GPIO_3 (3 +D_GPIO_SHIFT_BASE) ///< DGPIO[3] +#define D_GPIO_4 (4 +D_GPIO_SHIFT_BASE) ///< DGPIO[4] +#define D_GPIO_5 (5 +D_GPIO_SHIFT_BASE) ///< DGPIO[5] +#define D_GPIO_6 (6 +D_GPIO_SHIFT_BASE) ///< DGPIO[6] +#define D_GPIO_7 (7 +D_GPIO_SHIFT_BASE) ///< DGPIO[7] +#define D_GPIO_8 (8 +D_GPIO_SHIFT_BASE) ///< DGPIO[8] +#define D_GPIO_9 (9 +D_GPIO_SHIFT_BASE) ///< DGPIO[9] +#define D_GPIO_10 (10+D_GPIO_SHIFT_BASE) ///< DGPIO[10] + +#define D_GPIO_16 (16 +D_GPIO_SHIFT_BASE) ///< D_GPIO[16] (USB Wakeup) (No pad instance) + +/*GPIO HSI Data register(High speed interface)*/ +#define H_GPIO_SHIFT_BASE 160 +#define H_GPIO_0 (0 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[0] +#define H_GPIO_1 (1 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[1] +#define H_GPIO_2 (2 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[2] +#define H_GPIO_3 (3 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[3] +#define H_GPIO_4 (4 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[4] +#define H_GPIO_5 (5 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[5] +#define H_GPIO_6 (6 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[6] +#define H_GPIO_7 (7 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[7] +#define H_GPIO_8 (8 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[8] +#define H_GPIO_9 (9 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[9] +#define H_GPIO_10 (10+H_GPIO_SHIFT_BASE) ///< HSI_GPIO[10] +#define H_GPIO_11 (11+H_GPIO_SHIFT_BASE) ///< HSI_GPIO[11] + +/*GPIO ADC Data register*/ +#define A_GPI_SHIFT_BASE 192 +#define A_GPIO_0 (0 + A_GPI_SHIFT_BASE) ///< A_GPIO[0] +#define A_GPIO_1 (1 + A_GPI_SHIFT_BASE) ///< A_GPIO[1] +#define A_GPIO_2 (2 + A_GPI_SHIFT_BASE) ///< A_GPIO[2] + +//@} + +/*For temporary usage as passing build codes*/ +#define C_GPIO_23 23 +#define C_GPIO_24 24 +#define C_GPIO_25 25 +#define C_GPIO_26 26 +#define C_GPIO_27 27 +#define C_GPIO_28 28 +#define C_GPIO_29 29 +#define C_GPIO_30 30 +#define C_GPIO_31 31 +#define C_GPIO_32 32 +#define C_GPIO_33 33 +#define L_GPIO_30 (30+L_GPIO_SHIFT_BASE) +#define L_GPIO_31 (31+L_GPIO_SHIFT_BASE) +#define L_GPIO_32 (32+L_GPIO_SHIFT_BASE) +#define GPIO_INT_USBPLUGIN (GPIO_INT_39) + + + + +/** + @name GPIO Interrupt ID + + GPIO interrupt ID definition + + GPIO interrupt ID for interrupt related APIs. +*/ +//@{ +#define GPIO_INT_00 0 ///< GPIO INT[0]: C_GPIO[3] +#define GPIO_INT_01 1 ///< GPIO INT[1]: C_GPIO[5] +#define GPIO_INT_02 2 ///< GPIO INT[2]: C_GPIO[7] +#define GPIO_INT_03 3 ///< GPIO INT[3]: C_GPIO[9] +#define GPIO_INT_04 4 ///< GPIO INT[4]: C_GPIO[12] +#define GPIO_INT_05 5 ///< GPIO INT[5]: C_GPIO[14] +#define GPIO_INT_06 6 ///< GPIO INT[6]: C_GPIO[16] +#define GPIO_INT_07 7 ///< GPIO INT[7]: C_GPIO[18] +#define GPIO_INT_08 8 ///< GPIO INT[8]: C_GPIO[20] +#define GPIO_INT_09 9 ///< GPIO INT[9]: C_GPIO[22] +#define GPIO_INT_10 10 ///< GPIO INT[10]: H_GPIO[0] +#define GPIO_INT_11 11 ///< GPIO INT[11]: H_GPIO[11] +#define GPIO_INT_12 12 ///< GPIO INT[12]: S_GPIO[1] +#define GPIO_INT_13 13 ///< GPIO INT[13]: S_GPIO[4] +#define GPIO_INT_14 14 ///< GPIO INT[14]: S_GPIO[6] +#define GPIO_INT_15 15 ///< GPIO INT[15]: S_GPIO[10] +#define GPIO_INT_16 16 ///< GPIO INT[16]: S_GPIO[12] +#define GPIO_INT_17 17 ///< GPIO INT[17]: P_GPIO[3] +#define GPIO_INT_18 18 ///< GPIO INT[18]: P_GPIO[7] +#define GPIO_INT_19 19 ///< GPIO INT[19]: P_GPIO[8] +#define GPIO_INT_20 20 ///< GPIO INT[20]: P_GPIO[9] +#define GPIO_INT_21 21 ///< GPIO INT[21]: P_GPIO[11] +#define GPIO_INT_22 22 ///< GPIO INT[22]: P_GPIO[15] +#define GPIO_INT_23 23 ///< GPIO INT[23]: P_GPIO[17] +#define GPIO_INT_24 24 ///< GPIO INT[24]: P_GPIO[18] +#define GPIO_INT_25 25 ///< GPIO INT[25]: P_GPIO[24] +#define GPIO_INT_26 26 ///< GPIO INT[26]: L_GPIO[1] +#define GPIO_INT_27 27 ///< GPIO INT[27]: L_GPIO[6] +#define GPIO_INT_28 28 ///< GPIO INT[28]: L_GPIO[11] +#define GPIO_INT_29 29 ///< GPIO INT[29]: L_GPIO[14] +#define GPIO_INT_30 30 ///< GPIO INT[30]: P_GPIO[18] +#define GPIO_INT_31 31 ///< GPIO INT[31]: L_GPIO[22] +#define GPIO_INT_32 32 ///< DGPIO INT[0]: D_GPIO[0] +#define GPIO_INT_33 33 ///< DGPIO INT[1]: D_GPIO[1] +#define GPIO_INT_34 34 ///< DGPIO INT[2]: D_GPIO[2] +#define GPIO_INT_35 35 ///< DGPIO INT[3]: D_GPIO[3] +#define GPIO_INT_36 36 ///< DGPIO INT[4]: D_GPIO[4] +#define GPIO_INT_37 37 ///< DGPIO INT[5]: D_GPIO[5] +#define GPIO_INT_38 38 ///< DGPIO INT[6]: D_GPIO[6] +#define GPIO_INT_39 39 ///< DGPIO INT[7]: D_GPIO[7] + +#define GPIO_INT_48 48 ///< DGPIO INT[16]: USB wakeup + +#define GPIO_INT_USBWAKEUP (GPIO_INT_48) ///< DGPIO INT[16]: USB wakeup +//@} + +// In order to backward comaptible, DGPIO is used as " GPIO_IS_DGPIO | D_GPIO_* " or "D_GPIO_*" +#define GPIO_IS_DGPIO (128) + + +// +// The general api for the GPIO device driver +// +extern void gpio_setDir(UINT32 pin, UINT32 dir); +extern UINT32 gpio_getDir(UINT32 pin); +extern void gpio_setPin(UINT32 pin); +extern void gpio_clearPin(UINT32 pin); +extern UINT32 gpio_getPin(UINT32 pin); +extern void gpio_pullSet(UINT32 pin); +extern void gpio_pullClear(UINT32 pin); +extern UINT32 gpio_readData(UINT32 dataidx); +extern void gpio_writeData(UINT32 dataidx, UINT32 value); +//extern UINT32 gpio_readDir(UINT32 dataidx); +//extern void gpio_writeDir(UINT32 dataidx, UINT32 value); +extern UINT32 dgpio_readData(void); +extern void dgpio_writeData(UINT32 value); +extern UINT32 top_get_bs(void); +//extern UINT32 dgpio_readDir(void); +//extern void dgpio_writeDir(UINT32 value); +//@} +#endif + diff --git a/board/novatek/na51055/loader/Include/Driver/Memory.h b/board/novatek/na51055/loader/Include/Driver/Memory.h new file mode 100755 index 000000000000..60c472e0f31c --- /dev/null +++ b/board/novatek/na51055/loader/Include/Driver/Memory.h @@ -0,0 +1,436 @@ +# ifndef _MEMORY_520_H +# define _MEMORY_520_H + +#ifndef __ASSEMBLY__ + COMMENT /* Memory Map */ /* # define BOOT_ROM_RAM_BASE_ADDR 0x20000000*/ +#endif +# define DRAM_BASE_ADDR (0x00000000) +# define DRAM_EXP_BASE_ADDR (DRAM_BASE_ADDR + 0x180) +# define DRAM_INT_BASE_ADDR (DRAM_BASE_ADDR + 0x200) + +# define StackSize_KNL 0x1000 /* 4KB */ +# define StackSize_INT 0x400 /* 1KB */ + +# define FAT_HEAP_BUFFER_SIZE 0xA0000//0x1E0000 //0x1E8000 +# define EXFAT_BITMAP_BUFFER_SIZE 0x20000 //0x18000 +# define LOADER_TMP_BUFFER_SIZE 0x80000 + +# define BOOT_ROM_SP_LIMIT_ADDR 0xF07F8FFC +# define BOOT_ROM_RAM_TEMP_ADDR 0xF0800200 +# define BOOT_ROM_CFG_TEMP_ADDR 0xF0800248 +# define BOOT_ROM_RAM_BASE_ADDR 0x00000000 +# define DMA2_CTRL_REG_BASE_ADDR 0xF0100000 +# define DMA2_PHY_REG_BASE_ADDR 0xF0101000 +# define USB_OTG_REG_BASE_ADDR 0//0xF0600000 +# define DDR_CTRL_REG_BASE_ADDR 0xF0000000 /* DDR phy base address */ +# define DDR_PHY_REG_BASE_ADDR 0xF0001000 +# define DDR_ARB_REG_BASE_ADDR 0xF0008000 +# define DMA2_ARB_REG_BASE_ADDR 0xF0108000 + +# define CLOCK_GEN_REG_BASE_ADDR 0xF0020000 +# define PMU_REG_BASE_ADDR 0xF0024000 +# define TOP_CTRL_REG_BASE_ADDR 0xF0010000 +# define PAD_CTRL_REG_BASE_ADDR 0xF0030000 +# define GPIO_CTRL_REG_BASE_ADDR 0xF0070000 +# define PMC_REG_BASE 0xF00A0000 + +# define TRNG_REG_BASE_ADDR 0xF0680000 + +# define CPU_REG_BASE_ADDR 0xF0FF0000 + +# define UART0_REG_BASE_ADDR 0xF0290000 +# define UART2_REG_BASE_ADDR 0xF0300000 +# define SM_HOST_REG_BASE_ADDR 0xF0400000 +# define MS_HOST_REG_BASE_ADDR 0xF0410000 +# define SD_HOST1_REG_BASE_ADDR 0xF0420000 +# define SD_HOST2_REG_BASE_ADDR 0xF0500000 +# define SD_HOST3_REG_BASE_ADDR 0xF0510000 +# define SPI_CTRL_REG_BASE_ADDR 0xF0230000 +# define ETH_CTRL_REG_BASE_ADDR 0xF02B0000 +# define EFUSE_CTRL_REG_BASE_ADDR 0xF0660000 +# define IDE_SRAM_BASE_ADDR 0xF07C0000 +# define IDE_CTRL_REG_BASE_ADDR 0xF0800000 +# define TIMER_REG_BASE_ADDR 0xF0040000 +# define WDT_REG_BASE_ADDR 0xF0050000 + +# define BOOT_LOADER_TMP_BUFFER 0x00001000 +# define CHIP_REMAP_REG_OFFSET 0x00000088 +# define CPE_RTC_BASE 0xF0060000 /* RTC controller */ +# define CPE_GPIO_BASE 0xF0070000 /* GPIO controller */ +# define INTERRUPT_BASE_ADDR 0xF0080000 /* Interrupt controller */ +# define CC_BASE_ADDR 0xF0090000 /* CC controller */ +# define IOADDR_GIC_REG_BASE 0xFFD00000 /* GIC Interrupt */ +# define configARM_TIMER_BASEADDR 0xFFD00200 +# define ARM_TIMER_LOAD_OFFSET 0x00 /**< Timer Load Register */ + + +# define BOOT_ROM_RAM_TEMP_ADDR2 0xF07E8000 //Eth +# define PAD_REG_BASE 0xF0030000 +# define L2_MEM_BASE 0xFFE00000 +# define IOADDR_HVYLOAD_REG_BASE 0xF0008000 + +# define CC_CPU2_CPU1_CMDBUF_REG1 0xF07F8000 //CC_CPU2_CPU1_CMDBUF_REG1 to store uboot starting address +# define CC_CPU2_CPU1_CMDBUF_REG2 0xF07F8004 //CC_CPU2_CPU1_CMDBUF_REG1 has used in core2_entry.s +# define NVT_CORE2_START CC_CPU2_CPU1_CMDBUF_REG2 //core2_entry.S 's entry point + +# define ARM_TIMER_LOAD_OFFSET 0x00 /**< Timer Load Register */ +# define ARM_TIMER_LOAD_OFFSET 0x00 /**< Timer Load Register */ +# define ARM_TIMER_COUNTER_OFFSET 0x04 /**< Timer Counter Register */ +# define ARM_TIMER_CONTROL_OFFSET 0x08 /**< Timer Control Register */ +# define ARM_TIMER_ISR_OFFSET 0x0C /**< Timer Interrupt Status Register */ +# define ARM_TIMER_COUNTER_OFFSET_L 0x00 /**< Timer Counter Register */ +# define ARM_TIMER_COUNTER_OFFSET_H 0x04 /**< Timer Counter Register */ +# define ARM_TIMER_COUNTER_CMP_OFFSET_L 0x10 /**< Timer Counter Register */ +# define ARM_TIMER_COUNTER_CMP_OFFSET_H 0x14 /**< Timer Counter Register */ +# define CYGHWR_HAL_RTC_PRESCALER 1 +# define ARM_TIMER_CONTROL_AUTO_RELOAD_MASK 0x00000002 /**< Auto-reload */ +# define ARM_TIMER_CONTROL_PRESCALER_MASK 0x0000FF00 /**< Prescaler */ +# define ARM_TIMER_CONTROL_PRESCALER_SHIFT 8 +# define ARM_TIMER_CONTROL_IRQ_ENABLE_MASK 0x00000004 /**< Intr enable */ +# define ARM_TIMER_CONTROL_AUTO_RELOAD_MASK 0x00000002 /**< Auto-reload */ +# define ARM_TIMER_CONTROL_ENABLE_MASK 0x00000001 /**< Timer enable */ + +#define ARM_TIMER_ISR_EVENT_FLAG_MASK 0x00000001 /**< Event flag */ +#define CRYPTO_REG_BASE_ADDR 0xF0620000 +#define HASH_REG_BASE_ADDR 0xF0700000 +#define RSA_REG_BASE_ADDR 0xF06A0000 + +#define CRYPTO_CONFIG_REG (CRYPTO_REG_BASE_ADDR + 0x00) +#define CRYPTO_CONTROL_REG (CRYPTO_REG_BASE_ADDR + 0x04) +#define CRYPTO_OUT_DATA_REG (CRYPTO_REG_BASE_ADDR + 0x08) +#define CRYPTO_STATUS_REG (CRYPTO_REG_BASE_ADDR + 0x0C) + +#define CRYPTO_PIO_INPUT0_REG (CRYPTO_REG_BASE_ADDR + 0x30) +#define CRYPTO_PIO_INPUT1_REG (CRYPTO_REG_BASE_ADDR + 0x34) +#define CRYPTO_PIO_INPUT2_REG (CRYPTO_REG_BASE_ADDR + 0x38) +#define CRYPTO_PIO_INPUT3_REG (CRYPTO_REG_BASE_ADDR + 0x3C) +#define CRYPTO_PIO_OUTPUT0_REG (CRYPTO_REG_BASE_ADDR + 0x40) +#define CRYPTO_PIO_OUTPUT1_REG (CRYPTO_REG_BASE_ADDR + 0x44) +#define CRYPTO_PIO_OUTPUT2_REG (CRYPTO_REG_BASE_ADDR + 0x48) +#define CRYPTO_PIO_OUTPUT3_REG (CRYPTO_REG_BASE_ADDR + 0x4C) + +// Hash +#define HASH_CONFIG_REG (HASH_REG_BASE_ADDR + 0x00) +#define HASH_STATUS_REG (HASH_REG_BASE_ADDR + 0x0C) +#define HASH_OUTPUT_DATA1_REG (HASH_REG_BASE_ADDR + 0x70) +#define HASH_INPUT_DATA_REG (HASH_REG_BASE_ADDR + 0x90) + +//RSA +#define RSA_CONFIG_REG (RSA_REG_BASE_ADDR + 0x00) +#define RSA_CONTROL_REG (RSA_REG_BASE_ADDR + 0x04) +#define RSA_STATUS_REG (RSA_REG_BASE_ADDR + 0x0C) +#define RSA_KEY_N_REG (RSA_REG_BASE_ADDR + 0x10) +#define RSA_KEY_N_ADDR_REG (RSA_REG_BASE_ADDR + 0x14) +#define RSA_KEY_ED_REG (RSA_REG_BASE_ADDR + 0x18) +#define RSA_KEY_ED_ADDR_REG (RSA_REG_BASE_ADDR + 0x1C) +#define RSA_DATA_REG (RSA_REG_BASE_ADDR + 0x20) +#define RSA_DATA_ADDR_REG (RSA_REG_BASE_ADDR + 0x24) +#define RSA_CRC32_DEFAULT_REG_OFS (RSA_REG_BASE_ADDR + 0x30) +#define RSA_CRC32_POLY_REG_OFS (RSA_REG_BASE_ADDR + 0x34) +#define RSA_CRC32_OUTPUT_REG_OFS (RSA_REG_BASE_ADDR + 0x38) + +// Crypto +#define CRYPTO_CONFREG_SWRST (1<<0) +#define CRYPTO_CONFREG_CRYPTO_EN (1<<1) +#define CRYPTO_CONFREG_AES128 (2<<4) +#define CRYPTO_CONFREG_DECRYPT (1<<8) + +#define CRYPTO_PIO_DONE (1<<0) + +// Hash +#define HASH_CONFREG_INITSTATE (1<<20) +#define HASH_CONFREG_SHA256 (1<<4) +#define HASH_CONFREG_ENABLE (1<<1) + +//RSA +#define RSA_ENABLE (1<<0) + +#define RSA_KEYWIDTH_256 (0x0<<1) +#define RSA_KEYWIDTH_512 (0x1<<1) +#define RSA_KEYWIDTH_1024 (0x2<<1) +#define RSA_KEYWIDTH_2048 (0x3<<1) +#define RSA_KEYWIDTH_4096 (0x4<<1) + +#define RSA_NORMAL_MODE (0x0<<4) +#define RSA_MODE_CRC_KEY_N (0x1<<4) +#define RSA_MODE_CRC_KEY_ED (0x2<<4) + + +#define RSA_TRANSFER_END (0x1<<0) +#define RSA_BUSY (0x1<<1) + +#define HASH_TRANSFER_END (0x1<<0) + + + +#define TOP_CTRL_SRAM_RESET_REG0 (TOP_CTRL_REG_BASE_ADDR + 0x1000) + +//Shut down SRAM SDIO1 mask +#define TOP_SRAM_SD_SDIO1 0x20000000 +//Shut down SRAM RSA mask +#define TOP_SRAM_SD_RSA 0x02000000 + + +#define reg0_cache_type_ofs 0x004 //reg0_cache_type +#define CACHE_CTRL_REG_OFS 0x100 +#define CACHE_AUX_CTRL_REG_OFS 0x104 + +#define CACHE_TAG_RAM_CTRL_OFS 0x108 +#define CACHE_DATA_RAM_CTRL_OFS 0x10C + + +#define reg2_int_clear_ofs 0x220 //reg2_int_clear +#define reg7_cache_sync 0x730 //reg7_cache_sync +#define reg7_inv_way 0x77C //reg7_inv_way + +#define CACHE_PREFETCH_REG_OFS 0xF60 + +#define L2_REG0_BASE (L2_MEM_BASE + 0x000) /* Cache ID and Cache Type */ +#define L2_REG1_BASE (L2_MEM_BASE + 0x100) /* Control */ +#define L2_REG2_BASE (L2_MEM_BASE + 0X200) /* Interrupt and Counter Control Registers */ +#define L2_REG7_BASE (L2_MEM_BASE + 0x700) /* Cache Maintenance Operations */ +#define L2_REG9_BASE (L2_MEM_BASE + 0x900) /* Cache Lockdown */ +#define L2_REG12_BASE (L2_MEM_BASE + 0xC00) /* Address Filtering */ +#define L2_REG15_BASE (L2_MEM_BASE + 0xF00) /* Debug, Prefetch and Power */ + +/** + * Cache ID and Cache Type + */ +#define L2_REG0_CACHE_ID (*((volatile unsigned long *)(L2_REG0_BASE + 0x00))) +#define L2_REG0_CACHE_TYPE (*((volatile unsigned long *)(L2_REG0_BASE + 0x04))) + +#define S_L2_REG0_CACHE_TYPE_DB (31) +#define M_L2_REG0_CACHE_TYPE_DB (0xf << S_L2_REG0_CACHE_TYPE_DB) +#define S_L2_REG0_CACHE_TYPE_CTYPE (25) +#define M_L2_REG0_CACHE_TYPE_CTYPE (0xf << S_L2_REG0_CACHE_TYPE_CTYPE) +#define S_L2_REG0_CACHE_TYPE_H (24) +#define M_L2_REG0_CACHE_TYPE_H (0x1 << S_L2_REG0_CACHE_TYPE_H) +#define S_L2_REG0_CACHE_TYPE_DWS (20) +#define M_L2_REG0_CACHE_TYPE_DWS (0x7 << S_L2_REG0_CACHE_TYPE_DWS) +#define S_L2_REG0_CACHE_TYPE_DA (18) +#define M_L2_REG0_CACHE_TYPE_DA (0x1 << S_L2_REG0_CACHE_TYPE_DA) +#define S_L2_REG0_CACHE_TYPE_DLS (12) +#define M_L2_REG0_CACHE_TYPE_DLS (0x3 << S_L2_REG0_CACHE_TYPE_DLS) +#define S_L2_REG0_CACHE_TYPE_IWS (8) +#define M_L2_REG0_CACHE_TYPE_IWS (0x7 << S_L2_REG0_CACHE_TYPE_IWS) +#define S_L2_REG0_CACHE_TYPE_IA (6) +#define M_L2_REG0_CACHE_TYPE_IA (0x1 << S_L2_REG0_CACHE_TYPE_IA) +#define S_L2_REG0_CACHE_TYPE_ILS (0) +#define M_L2_REG0_CACHE_TYPE_ILS (0x3 << S_L2_REG0_CACHE_TYPE_ILS) + +#define K_L2_REG0_CACHE_TYPE_DA_16WAY (1) +#define K_L2_REG0_CACHE_TYPE_DA_8WAY (0) + +/** + * Control + */ +#define L2_REG1_CONTROL (*((volatile unsigned long *)(L2_REG1_BASE + 0x00))) +#define L2_REG1_AUX_CTRL (*((volatile unsigned long *)(L2_REG1_BASE + 0x04))) +#define L2_REG1_TAG_RAM_CTRL (*((volatile unsigned long *)(L2_REG1_BASE + 0x08))) +#define L2_REG1_DATA_RAM_CTRL (*((volatile unsigned long *)(L2_REG1_BASE + 0x0C))) + +#define S_L2_REG1_CONTROL_EN (0) +#define M_L2_REG1_CONTROL_EN (0x1 << S_L2_REG1_CONTROL_EN) + +#define K_L2_REG1_CONTROL_EN_ON 1 +#define K_L2_REG1_CONTROL_EN_OFF 0 + +#define S_L2_REG1_AUX_CTRL_BRESP (30) +#define M_L2_REG1_AUX_CTRL_BRESP (0x1 << S_L2_REG1_AUX_CTRL_BRESP) +#define S_L2_REG1_AUX_CTRL_INSTR_PREF (29) +#define M_L2_REG1_AUX_CTRL_INSTR_PREF (0x1 << S_L2_REG1_AUX_CTRL_INSTR_PREF) +#define S_L2_REG1_AUX_CTRL_DATA_PERF (28) +#define M_L2_REG1_AUX_CTRL_DATA_PERF (0x1 << S_L2_REG1_AUX_CTRL_DATA_PERF) +#define S_L2_REG1_AUX_CTRL_NS_INT_CTRL (27) +#define M_L2_REG1_AUX_CTRL_NS_INT_CTRL (0x1 << S_L2_REG1_AUX_CTRL_NS_INT_CTRL) +#define S_L2_REG1_AUX_CTRL_NS_LOCK_EN (26) +#define M_L2_REG1_AUX_CTRL_NS_LOCK_EN (0x1 << S_L2_REG1_AUX_CTRL_NS_LOCK_EN) +#define S_L2_REG1_AUX_CTRL_CACHE_POLICY (25) +#define M_L2_REG1_AUX_CTRL_CACHE_POLICY (0x1 << S_L2_REG1_AUX_CTRL_CACHE_POLICY) +#define S_L2_REG1_AUX_CTRL_FORCE_WA (23) +#define M_L2_REG1_AUX_CTRL_FORCE_WA (0x3 << S_L2_REG1_AUX_CTRL_FORCE_WA) +#define S_L2_REG1_AUX_CTRL_SHARED_OVERRIDE_EN (22) +#define M_L2_REG1_AUX_CTRL_SHARED_OVERRIDE_EN (0x1 << S_L2_REG1_AUX_CTRL_SHARED_OVERRIDE_EN) +#define S_L2_REG1_AUX_CTRL_PARITY_EN (21) +#define M_L2_REG1_AUX_CTRL_PARITY_EN (0x1 << S_L2_REG1_AUX_CTRL_PARITY_EN) +#define S_L2_REG1_AUX_CTRL_EVENT_MON_BUD_EN (20) +#define M_L2_REG1_AUX_CTRL_EVENT_MON_BUD_EN (0x1 << S_L2_REG1_AUX_CTRL_EVENT_MON_BUD_EN) +#define S_L2_REG1_AUX_CTRL_WAT_SIZE (17) +#define M_L2_REG1_AUX_CTRL_WAT_SIZE (0x7 << S_L2_REG1_AUX_CTRL_WAT_SIZE) +#define S_L2_REG1_AUX_CTRL_ASSOCIATIVITY (16) +#define M_L2_REG1_AUX_CTRL_ASSOCIATIVITY (0x1 << S_L2_REG1_AUX_CTRL_ASSOCIATIVITY) +#define S_L2_REG1_AUX_CTRL_SHARED_INV_EN (13) +#define M_L2_REG1_AUX_CTRL_SHARED_INV_EN (0x1 << S_L2_REG1_AUX_CTRL_SHARED_INV_EN) +#define S_L2_REG1_AUX_CTRL_EXCLUSIVE_CACHE_CONF (12) +#define M_L2_REG1_AUX_CTRL_EXCLUSIVE_CACHE_CONF (0x1 << S_L2_REG1_AUX_CTRL_EXCLUSIVE_CACHE_CONF) +#define S_L2_REG1_AUX_CTRL_STORE_BUD_DEV_LIMIT_EN (11) +#define M_L2_REG1_AUX_CTRL_STORE_BUD_DEV_LIMIT_EN (0x1 << S_L2_REG1_AUX_CTRL_STORE_BUD_DEV_LIMIT_EN) +#define S_L2_REG1_AUX_CTRL_HIGH_PRIO_SO_DEV_READS_EN (10) +#define M_L2_REG1_AUX_CTRL_HIGH_PRIO_SO_DEV_READS_EN (0x1 << S_L2_REG1_AUX_CTRL_HIGH_PRIO_SO_DEV_READS_EN) +#define S_L2_REG1_AUX_CTRL_FULL_LINE_Z_EN (0) +#define M_L2_REG1_AUX_CTRL_FULL_LINE_Z_EN (0x1 << S_L2_REG1_AUX_CTRL_FULL_LINE_Z_EN) + +/** + * Interrupt and Counter Control Registers + */ +#define L2_REG2_EV_CNT_CTRL (*((volatile unsigned long *)(L2_REG2_BASE + 0x00))) +#define L2_REG2_EV_CNT1_CFG (*((volatile unsigned long *)(L2_REG2_BASE + 0x04))) +#define L2_REG2_EV_CNT0_CFG (*((volatile unsigned long *)(L2_REG2_BASE + 0x08))) +#define L2_REG2_EV_CNT1 (*((volatile unsigned long *)(L2_REG2_BASE + 0x0C))) +#define L2_REG2_EV_CNT0 (*((volatile unsigned long *)(L2_REG2_BASE + 0x10))) +#define L2_REG2_INT_MASK (*((volatile unsigned long *)(L2_REG2_BASE + 0x14))) +#define L2_REG2_INT_MASK_STATUS (*((volatile unsigned long *)(L2_REG2_BASE + 0x18))) +#define L2_REG2_INT_RAW_STATUS (*((volatile unsigned long *)(L2_REG2_BASE + 0x1C))) +#define L2_REG2_INT_CLEAR (*((volatile unsigned long *)(L2_REG2_BASE + 0x20))) + +#define S_L2_REG2_INT_DECERR (8) +#define M_L2_REG2_INT_DECERR (0x1 << S_L2_REG2_INT_DECERR) /* Decode error */ +#define S_L2_REG2_INT_SLVERR (7) +#define M_L2_REG2_INT_SLVERR (0x1 << S_L2_REG2_INT_SLVERR) /* Slave error */ +#define S_L2_REG2_INT_ERRRD (6) +#define M_L2_REG2_INT_ERRRD (0x1 << S_L2_REG2_INT_ERRRD) /* Data RAM read error */ +#define S_L2_REG2_INT_ERRRT (5) +#define M_L2_REG2_INT_ERRRT (0x1 << S_L2_REG2_INT_ERRRT) /* Tag RAM read error */ +#define S_L2_REG2_INT_ERRWD (4) +#define M_L2_REG2_INT_ERRWD (0x1 << S_L2_REG2_INT_ERRWD) /* Data RAM write error */ +#define S_L2_REG2_INT_ERRWT (3) +#define M_L2_REG2_INT_ERRWT (0x1 << S_L2_REG2_INT_ERRWT) /* Tag RAM write error */ +#define S_L2_REG2_INT_PARRD (2) +#define M_L2_REG2_INT_PARRD (0x1 << S_L2_REG2_INT_PARRD) /* Parity error on data RAM read */ +#define S_L2_REG2_INT_PARRT (1) +#define M_L2_REG2_INT_PARRT (0x1 << S_L2_REG2_INT_PARRT) /* Pariry error on tag RAM read */ +#define S_L2_REG2_INT_ECNTR (0) +#define M_L2_REG2_INT_ECNTR (0x1 << S_L2_REG2_INT_ECNTR) /* Event counter1/0 overflow increment */ + +/** + * Cache Maintenance Operations + */ +#define L2_REG7_CACHE_SYNC (*((volatile unsigned long *)(L2_REG7_BASE + 0x30))) +#define L2_REG7_INV_PA (*((volatile unsigned long *)(L2_REG7_BASE + 0x70))) +#define L2_REG7_INV_WAY (*((volatile unsigned long *)(L2_REG7_BASE + 0x7C))) +#define L2_REG7_CLEAN_PA (*((volatile unsigned long *)(L2_REG7_BASE + 0xB0))) +#define L2_REG7_CLEAN_INDEX (*((volatile unsigned long *)(L2_REG7_BASE + 0xB8))) +#define L2_REG7_CLEAN_WAY (*((volatile unsigned long *)(L2_REG7_BASE + 0xBC))) +#define L2_REG7_CLEAN_INV_PA (*((volatile unsigned long *)(L2_REG7_BASE + 0xF0))) +#define L2_REG7_CLEAN_INV_INDEX (*((volatile unsigned long *)(L2_REG7_BASE + 0xF8))) +#define L2_REG7_CLEAN_INV_WAY (*((volatile unsigned long *)(L2_REG7_BASE + 0xFC))) + + +#define K_L2_REG7_CACHE_SYNC_C (0x1) + +#define K_L2_REG7_INV_WAY_8WAY (0x00ff) +#define K_L2_REG7_INV_WAY_16WAY (0xffff) +#define K_L2_REG7_CLEAN_WAY_8WAY (0x00ff) +#define K_L2_REG7_CLEAN_WAY_16WAY (0xffff) + + +/** + * Cache Lockdown + */ +#define L2_REG9_D_LOCKDOWN0 (*((volatile unsigned long *)(L2_REG9_BASE + 0x00))) +#define L2_REG9_I_LOCKDOWN0 (*((volatile unsigned long *)(L2_REG9_BASE + 0x04))) +#define L2_REG9_D_LOCKDOWN1 (*((volatile unsigned long *)(L2_REG9_BASE + 0x08))) +#define L2_REG9_I_LOCKDOWN1 (*((volatile unsigned long *)(L2_REG9_BASE + 0x0C))) +#define L2_REG9_D_LOCKDOWN2 (*((volatile unsigned long *)(L2_REG9_BASE + 0x10))) +#define L2_REG9_I_LOCKDOWN2 (*((volatile unsigned long *)(L2_REG9_BASE + 0x14))) +#define L2_REG9_D_LOCKDOWN3 (*((volatile unsigned long *)(L2_REG9_BASE + 0x18))) +#define L2_REG9_I_LOCKDOWN3 (*((volatile unsigned long *)(L2_REG9_BASE + 0x1C))) +#define L2_REG9_D_LOCKDOWN4 (*((volatile unsigned long *)(L2_REG9_BASE + 0x20))) +#define L2_REG9_I_LOCKDOWN4 (*((volatile unsigned long *)(L2_REG9_BASE + 0x24))) +#define L2_REG9_D_LOCKDOWN5 (*((volatile unsigned long *)(L2_REG9_BASE + 0x28))) +#define L2_REG9_I_LOCKDOWN5 (*((volatile unsigned long *)(L2_REG9_BASE + 0x2C))) +#define L2_REG9_D_LOCKDOWN6 (*((volatile unsigned long *)(L2_REG9_BASE + 0x30))) +#define L2_REG9_I_LOCKDOWN6 (*((volatile unsigned long *)(L2_REG9_BASE + 0x34))) +#define L2_REG9_D_LOCKDOWN7 (*((volatile unsigned long *)(L2_REG9_BASE + 0x38))) +#define L2_REG9_I_LOCKDOWN7 (*((volatile unsigned long *)(L2_REG9_BASE + 0x3C))) +#define L2_REG9_LOCK_LINE_EN (*((volatile unsigned long *)(L2_REG9_BASE + 0x50))) +#define L2_REG9_UNLOCK_WAY (*((volatile unsigned long *)(L2_REG9_BASE + 0x54))) + +/** + * Address Filtering + */ +#define L2_REG12_ADDR_FILTERING_START (*((volatile unsigned long *)(L2_REG12_BASE + 0x00))) +#define L2_REG12_ADDR_FILTERING_END (*((volatile unsigned long *)(L2_REG12_BASE + 0x04))) + +/** + * Debug, Prefetch and Power + */ +#define L2_REG15_DEBUG_CTRL (*((volatile unsigned long *)(L2_REG15_BASE + 0x40))) +#define L2_REG15_PREF_CTRL (*((volatile unsigned long *)(L2_REG15_BASE + 0x60))) +#define L2_REG15_POWER_CTRL (*((volatile unsigned long *)(L2_REG15_BASE + 0x80))) + +#define S_L2_REG15_DEBUG_CTRL_SPNIDEN (2) +#define M_L2_REG15_DEBUG_CTRL_SPNIDEN (0x1 << S_L2_REG15_DEBUG_CTRL_SPNIDEN) +#define S_L2_REG15_DEBUG_CTRL_DWB (1) +#define M_L2_REG15_DEBUG_CTRL_DWB (0x1 << S_L2_REG15_DEBUG_CTRL_DWB) +#define S_L2_REG15_DEBUG_CTRL_DCL (0) +#define M_L2_REG15_DEBUG_CTRL_DCL (0x1 << S_L2_REG15_DEBUG_CTRL_DCL) + +#define S_L2_REG15_PREF_CTRL_DL_FILL_EN (30) +#define M_L2_REG15_PREF_CTRL_DL_FILL_EN (0x1 << S_L2_REG15_PREF_CTRL_DL_FILL_EN) +#define S_L2_REG15_PREF_CTRL_INST_PREF_EN (29) +#define M_L2_REG15_PREF_CTRL_INST_PREF_EN (0x1 << S_L2_REG15_PREF_CTRL_INST_PREF_EN) +#define S_L2_REG15_PREF_CTRL_DATA_PREF_EN (28) +#define M_L2_REG15_PREF_CTRL_DATA_PREF_EN (0x1 << S_L2_REG15_PREF_CTRL_DATA_PREF_EN) +#define S_L2_REG15_PREF_CTRL_DL_WRAP_READ_DIS (27) +#define M_L2_REG15_PREF_CTRL_DL_WRAP_READ_DIS (0x1 << S_L2_REG15_PREF_CTRL_DL_WRAP_READ_DIS) +#define S_L2_REG15_PREF_CTRL_PREF_DROP_EN (24) +#define M_L2_REG15_PREF_CTRL_PREF_DROP_EN (0x1 << S_L2_REG15_PREF_CTRL_PREF_DROP_EN) +#define S_L2_REG15_PREF_CTRL_INCR_DL_FILL_EN (23) +#define M_L2_REG15_PREF_CTRL_INCR_DL_FILL_EN (0x1 << S_L2_REG15_PREF_CTRL_INCR_DL_FILL_EN) +#define S_L2_REG15_PREF_CTRL_NOT_SAME_ID_EXCLU_SEQ_EN (21) +#define M_L2_REG15_PREF_CTRL_NOT_SAME_ID_EXCLU_SEQ_EN (0x1 << S_L2_REG15_PREF_CTRL_NOT_SAME_ID_EXCLU_SEQ_EN) +#define S_L2_REG15_PREF_CTRL_PREF_OFF (0) +#define M_L2_REG15_PREF_CTRL_PREF_OFF (0xf << S_L2_REG15_PREF_CTRL_PREF_OFF) + +// DDR phy duty configuration register bit +#define DDR_PHY_INCREASE_DUTY 0x40 // P < N +#define DDR_PHY_DECREASE_DUTY 0x00 // P > N +#define DDR_PHY_DUTY_TYPE_MSK 0x40 // bit mask for increase/decrease duty +#define DDR_PHY_CLK_ADJ_EN 0x80 + +// DDR phy duty calibration control register bit +#define DDR_PHY_CLK_OP_ONGOING 0x10 +#define DDR_PHY_CLK_OP_DONE 0x00 +#define DDR_PHY_DQS_OP_ONGOING 0x20 +#define DDR_PHY_DQS_OP_DONE 0x00 + + +# define DDR_PHY_CAL_CLK_ADJ_OFS 0x000 /* 0x00 */ +# define DDR_PHY_CAL_CMD_ADJ_OFS 0x01C /* 0x1C */ +# define DDR_PHY_CAL_CTRL_OFS 0x150 /* 0x54 */ +# define DDR_PHY_CAL_CLK_CFG_OFS 0x154 /* 0x55 */ +# define DDR_PHY_CAL_DQS_CFG_OFS 0x158 /* 0x56 */ +# define DDR_PHY_CAL_DTY_CNT_LB_OFS 0x15C /* 0x57 duty cnt low byte */ +# define DDR_PHY_CAL_DTY_CNT_HB_OFS 0x160 /* 0x58 duty cnt high byte */ +# define DDR_PHY_CAL_DQS0_ADJ_OFS 0x1D0 /* 0x1D0 */ +# define DDR_PHY_CAL_DQ_ADJ_OFS 0x1D4 /* 0x1D0 */ + + +#define BOOT_SOURCE_SPI 0x00 +#define BOOT_SOURCE_CARD 0x01 +#define BOOT_SOURCE_SPI_NAND_2K 0x02 +#define BOOT_SOURCE_SPI_NAND_RS_2K 0x03 +#define BOOT_SOURCE_ETHERNET 0x04 +#define BOOT_SOURCE_USB 0x05 +#define BOOT_SOURCE_SPI_NAND_4K 0x06 +#define BOOT_SOURCE_BMC 0x07 +#define BOOT_SOURCE_EMMC_4BIT 0x08 +#define BOOT_SOURCE_EMMC_8BIT 0x09 +#define BOOT_SOURCE_SPI_NAND_RS_4K 0x0A +#define BOOT_SOURCE_USB_FULL 0x0B + +#define BOOT_SOURCE_MSK 0x0F + + +# define IDENTIFY_ERR 2 +# define MBR_ERR 3 +# define PBR_ERR 4 +# define READ512_ERR 5 +# define READ_ERR 7 +# define HPA_ERR 8 +# define CHECKSUM_ERR 9 +#ifndef __ASSEMBLY__ + END +#endif +# endif diff --git a/board/novatek/na51055/loader/Include/Driver/crypto.h b/board/novatek/na51055/loader/Include/Driver/crypto.h new file mode 100755 index 000000000000..4ac5318aaa53 --- /dev/null +++ b/board/novatek/na51055/loader/Include/Driver/crypto.h @@ -0,0 +1,98 @@ +/** + Header file for CC (Core Communicator) module. + + This file is the header file that define the API and data type + for CC module. + + @file CC.h + @ingroup mIDrvSys_CC + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2015. All rights reserved. +*/ + +#include "constant.h" + +#ifndef _CRYPTO_H +#define _CRYPTO_H + +#define ROM_AES_SIZE (16) +#define ROM_SHA_SIZE (32) // unit: byte +#define ROM_RSA_SIZE (256) // RSA-2048 +#define ROM_RSA_EKEY_SIZE (32) +#define ROM_RSA_CRC32_SIZE (4) +/** + Crypto engine crypto mode +*/ +typedef enum { + CRYPTO_RSV0, + CRYPTO_RSV1, + CRYPTO_AES, ///< Select Crypto mode AES + CRYPTO_MODE_NUM, +} CRYPTO_MODE; + +/** + Crypto engine crypto Operating mode +*/ +typedef enum { + CRYPTO_EBC = 0x00, ///< Select Crypto opmode EBC + CRYPTO_CBC, ///< Select Crypto opmode CBC + CRYPTO_OPMODE_NUM, +} CRYPTO_OPMODE; + +/** + Crypto engine encrypt or decrypt +*/ +typedef enum { + CRYPTO_ENCRYPT = 0x00, ///< Select Crypto engine encrypt + CRYPTO_DECRYPT, ///< Select Crypto engine decrypt + CRYPTO_TYPE_NUM, + +} CRYPTO_TYPE; + +typedef enum { + EFUSE_OTP_1ST_KEY_SET_FIELD = 0x0, // This if for secure boot + EFUSE_OTP_2ND_KEY_SET_FIELD, + EFUSE_OTP_3RD_KEY_SET_FIELD, + EFUSE_OTP_4TH_KEY_SET_FIELD, + + EFUSE_OTP_TOTAL_KEY_SET_FIELD, +} EFUSE_OTP_KEY_SET_FIELD; + +typedef struct _CRYPT_OP { + CRYPTO_OPMODE op_mode; ///< Operation Mode (now support ECB only) + CRYPTO_TYPE en_de_crypt; ///< Encrypt or decrypt (CRYPTO_ENCRYPT or CRYPTO_DECRYPT) + UINT32 src_addr; ///< Source address + UINT32 dst_addr; ///< Destination address + UINT32 length; ///< length +} CRYPT_OP; + +/** + Crypto engine check +*/ +typedef enum { + SECUREBOOT_SECURE_EN = 0x00, ///< Quary if secure enable or not + SECUREBOOT_DATA_AREA_ENCRYPT, ///< Quary if data area encrypt to cypher text or not + SECUREBOOT_SIGN_RSA, ///< Quary if Signature methed is RSA or not(AES) + SECUREBOOT_SIGN_RSA_CHK, ///< Quary if Signature hash checksum RSA key correct or not + SECUREBOOT_STATUS_NUM, + +} SECUREBOOT_STATUS; + +#define is_secure_enable() quary_secure_boot(SECUREBOOT_SECURE_EN) //For backward compatitable +#define is_data_area_encrypted() quary_secure_boot(SECUREBOOT_DATA_AREA_ENCRYPT) //For backward compatitable +#define is_signature_rsa() quary_secure_boot(SECUREBOOT_SIGN_RSA) //For backward compatitable +#define is_signature_aes() !quary_secure_boot(SECUREBOOT_SIGN_RSA) //For backward compatitable +BOOL quary_secure_boot(SECUREBOOT_STATUS scu_status); +UINT32 crypto_data_operation(EFUSE_OTP_KEY_SET_FIELD key_set, CRYPT_OP crypt_op_param); +void rsa_setConfig(UINT32 mode); +void rsa_setkey_n(UINT8* key, UINT32 len, UINT32 sram_size); +void rsa_setkey_ed(UINT8* key, UINT32 len, UINT32 sram_size); +INT32 rsa_pio_enable(UINT8* data, UINT32 len, UINT32 sram_size); +void rsa_getOutput(UINT8 * Output, UINT32 len, UINT32 sram_size); + +void shahw( const unsigned char *input, int ilen, UINT32 output[8]); +void rsa_decrypt(UINT32 *input ,UINT32 input_len, UINT32 *pRSAN, UINT32 RSAN_len, UINT32 *pRSAED, UINT32 RSAED_len , UINT32 *pShaOut); +BOOL rsa_keycheck(UINT32 *input , BOOL efuseCheck); + +#endif diff --git a/board/novatek/na51055/loader/Include/Driver/nand.h b/board/novatek/na51055/loader/Include/Driver/nand.h new file mode 100755 index 000000000000..824fe21bce71 --- /dev/null +++ b/board/novatek/na51055/loader/Include/Driver/nand.h @@ -0,0 +1,123 @@ +/** + nand module driver. + + This file is the driver of storage module. + + @file nand.h + @ingroup mIDrvStorage + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _NAND_DEF_ +#define _NAND_DEF_ + +#include "IOReg.h" + +#define _SNAND_WINBOND_ID (0xEF) +#define _SNAND_ESMT_ID (0xC8) +#define _SNAND_GD_ID (0xC8) +#define _SNAND_MICRON_ID (0x2C) +#define _SNAND_ATO_ID (0x9B) +#define _SNAND_ETRON_ID (0xD5) +#define _SNAND_MXIC_ID (0xC2) +#define _SNAND_TOSHIBA_ID (0x98) +#define _SNAND_DOSILICON_ID (0xE5) +#define _SNAND_FMS_ID (0xA1) +#define _SNAND_XTX_ID (0x2C) + + +#define _GD_SPI_NAND_1Gb (0xF1) +#define _MXIC_SPI_NAND_1Gb (0x12) +#define _DOSILICON_NAND_1Gb (0x71) +/** + SPI NAND flash QE(quid enable) identify type + +*/ + +//@{ +typedef enum { + SPINAND_QE_NONE = 0x0, ///< SPI NAND flash not with QE bit(only by quad command) + SPINAND_QE_FEATURE2_B0H_BIT0_TYPE1, ///< SPI NAND flash QE bit locate at feature field(0xB0H) bit[0] +} SPINAND_QE_TYPE; + + +/** + SPI NAND flash twp plane identify type + +*/ +//@{ +typedef enum { + SPINAND_2_PLANE_NONE = 0x0, ///< SPI NAND flash not 2 plane type + SPINAND_2_PLANE_COLUMN_ADDR_BIT_12_AS_PLANE_SEL,///< SPI NAND flash use column addr bit[12] as plane select +} SPINAND_PLANE_TYPE; + + + +/** + SPI flash identification structure + + @note For SPIFLASH_IDENTIFY_CB +*/ +typedef struct { + UINT32 pagesize; + UINT32 erasesize; + UINT32 qe_opt; + UINT32 plane_opt; +} SPINAND_IDENTIFY, *PSPINAND_IDENTIFY; + +/** + SPIFLASH identify callback + + Callback routine to be invoked after JEDEC ID is read from spi flash. + Callback routine should check if read ID is supported. + + @note STRG_EXT_CMD_SPI_IDENTIFY_CB + + @param[in] first parameter (JEDEC) manufacturer ID read from spi flash + @param[in] second parameter (JEDEC) type ID read from spi flash + @param[in] third parameter (JEDEC) capacity ID read from spi flash + @param[out] forth parameter flash identification returned to spi flash driver + + @return + - @b TRUE: call back will handle identification of this flash. and PSPI_IDENTIFY will fill identifed information + - @b FALSE: input ID is NOT supported/identified by call back +*/ +typedef BOOL (*SPINAND_IDENTIFY_CB)(UINT32, UINT32, UINT32, PSPINAND_IDENTIFY); + + + + +/** + * struct nand_flash_dev - NAND Flash Device ID Structure + * @mfr_id: manufecturer ID part of the full chip ID array (refers the same + * memory address as @id[0]) + * @dev_id: the device ID (the second byte of the full chip ID array) + * @pagesize: size of the NAND page in bytes; if 0, then the real page size (as + * well as the eraseblock size) is determined from the extended NAND + * chip ID array) + * @erasesize: NAND block size + * @qe_opt: Quad enable type(please reference document to select this option) + * @plane_opt: 2 plane nand option(please reference document to select this option) + * @options: stores various chip bit options + * + */ +typedef struct _nand_flash_dev { + UINT32 mfr_id; + UINT32 dev_id; + UINT32 third_id; + UINT32 pagesize; + UINT32 erasesize; + UINT32 qe_opt; + UINT32 plane_opt; +} NAND_FLASH_DEV, *PNAND_FLASH_DEV; + +#define SPI_ID_NAND(mfrid, devid, third, pagesz, erasesz, opts, plane_opt_type)\ + { .mfr_id =(mfrid), .dev_id = (devid), .third_id = (third), .pagesize = (pagesz), \ + .erasesize = (erasesz), .qe_opt = (opts), .plane_opt=(plane_opt_type) } + +extern BOOL nand_identify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiThirdID, PSPINAND_IDENTIFY pIdentify); + +#endif + diff --git a/board/novatek/na51055/loader/Include/Driver/nor.h b/board/novatek/na51055/loader/Include/Driver/nor.h new file mode 100755 index 000000000000..5c1128410b98 --- /dev/null +++ b/board/novatek/na51055/loader/Include/Driver/nor.h @@ -0,0 +1,51 @@ +/** + nand module driver. + + This file is the driver of storage module. + + @file nand.h + @ingroup mIDrvStorage + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _NOR_DEF_ +#define _NOR_DEF_ + +#include "IOReg.h" +#include "StorageDef.h" + + +/** + * struct nand_flash_dev - NAND Flash Device ID Structure + * @name: a human-readable name of the NAND chip + * @dev_id: the device ID (the second byte of the full chip ID array) + * @mfr_id: manufecturer ID part of the full chip ID array (refers the same + * memory address as @id[0]) + * @dev_id: device ID part of the full chip ID array (refers the same memory + * address as @id[1]) + * @pagesize: size of the NAND page in bytes; if 0, then the real page size (as + * well as the eraseblock size) is determined from the extended NAND + * chip ID array) + * @chipsize: total chip size in MiB + * @erasesize: eraseblock size in bytes (determined from the extended ID if 0) + * @options: stores various chip bit options + * + */ +typedef struct _nor_flash_dev { + UINT32 mfr_id; + UINT32 dev_id; + UINT32 capacity_id; + UINT32 bDualRead; + UINT32 uiQuadReadType; + UINT32 uiFlashSize; +} NOR_FLASH_DEV, *PNOR_FLASH_DEV; + +#define SPI_ID_NOR(mfrid, devid, capacityid, dual_read, quad_read_type, flash_size)\ + { .mfr_id =(mfrid), .dev_id = (devid), .capacity_id =(capacityid), .bDualRead=(dual_read), \ + .uiQuadReadType=(quad_read_type), .uiFlashSize=(flash_size) } + + +extern BOOL nor_identify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacityID, PSPI_IDENTIFY pIdentify); +#endif diff --git a/board/novatek/na51055/loader/Include/Driver/pad.h b/board/novatek/na51055/loader/Include/Driver/pad.h new file mode 100755 index 000000000000..7476029602eb --- /dev/null +++ b/board/novatek/na51055/loader/Include/Driver/pad.h @@ -0,0 +1,874 @@ +/** + PAD controller header + + PAD controller header + + @file pad.h + @ingroup mIHALSysPAD + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _PAD_H +#define _PAD_H + +//#include "Type.h" +#include "constant.h" + + + +/** \addtogroup mIHALSysPAD */ +//@{ + +// Macro to generate dummy element for enum type to expand enum size to word (4 bytes) +#define ENUM_DUMMY4WORD(name) E_##name = 0x10000000 + +#if 0 +/** + Pad type select + + Pad type select + + Pad type value for pad_setPullUpDown(). +*/ +typedef enum +{ + PAD_NONE = 0x00, ///< none of pull up/down + PAD_PULLDOWN = 0x01, ///< pull down + PAD_PULLUP = 0x02, ///< pull up + PAD_KEEPER = 0x03, ///< keeper + + ENUM_DUMMY4WORD(PAD_PULL) +} PAD_PULL; + +/** + Pad driving select + + Pad driving select + + Pad driving value for pad_setDrivingSink(). +*/ +typedef enum { + PAD_DRIVINGSINK_2P5MA = 0x01, ///< for backward compatible + PAD_DRIVINGSINK_5MA = 0x02, ///< Pad driver/sink 5mA + PAD_DRIVINGSINK_7P5MA = 0x04, ///< for backward compatible + PAD_DRIVINGSINK_10MA = 0x08, ///< Pad driver/sink 10mA + + PAD_DRIVINGSINK_12P5MA = 0x10, ///< for backward compatible + PAD_DRIVINGSINK_15MA = 0x20, ///< Pad driver/sink 15mA + PAD_DRIVINGSINK_17P5MA = 0x40, ///< for backward compatible + PAD_DRIVINGSINK_20MA = 0x80, ///< Pad driver/sink 20mA + PAD_DRIVINGSINK_25MA = 0x100, ///< Pad driver/sink 25mA + PAD_DRIVINGSINK_30MA = 0x200, ///< Pad driver/sink 30mA + PAD_DRIVINGSINK_35MA = 0x400, ///< Pad driver/sink 35mA + PAD_DRIVINGSINK_40MA = 0x800, ///< Pad driver/sink 40mA + PAD_DRIVINGSINK_4MA = 0x1000, ///< PAD driver/sink 4mA + PAD_DRIVINGSINK_6MA = 0x2000, ///< PAD driver/sink 6mA + PAD_DRIVINGSINK_8MA = 0x4000, ///< PAD driver/sink 8mA + PAD_DRIVINGSINK_16MA = 0x8000, ///< PAD driver/sink 16mA + + ENUM_DUMMY4WORD(PAD_DRIVINGSINK) +} PAD_DRIVINGSINK; + +/** + @name Pad type pin ID. + + Pad type pin ID. + + Pad ID of pad_setPullUpDown(). +*/ +#define PAD_PIN_NOT_EXIST (15) // For backward compatible +//@{ +//CGPIOx group begin +#define PAD_PIN_CGPIO_BASE 0 +#define PAD_PIN_CGPIO0 (PAD_PIN_CGPIO_BASE + 0) ///< CGPIO0 +#define PAD_PIN_CGPIO1 (PAD_PIN_CGPIO_BASE + 1) ///< CGPIO1 +#define PAD_PIN_CGPIO2 (PAD_PIN_CGPIO_BASE + 2) ///< CGPIO2 +#define PAD_PIN_CGPIO3 (PAD_PIN_CGPIO_BASE + 3) ///< CGPIO3 +#define PAD_PIN_CGPIO4 (PAD_PIN_CGPIO_BASE + 4) ///< CGPIO4 +#define PAD_PIN_CGPIO5 (PAD_PIN_CGPIO_BASE + 5) ///< CGPIO5 +#define PAD_PIN_CGPIO6 (PAD_PIN_CGPIO_BASE + 6) ///< CGPIO6 +#define PAD_PIN_CGPIO7 (PAD_PIN_CGPIO_BASE + 7) ///< CGPIO7 +#define PAD_PIN_CGPIO8 (PAD_PIN_CGPIO_BASE + 8) ///< CGPIO8 +#define PAD_PIN_CGPIO9 (PAD_PIN_CGPIO_BASE + 9) ///< CGPIO9 +#define PAD_PIN_CGPIO10 (PAD_PIN_CGPIO_BASE + 10) ///< CGPIO10 +#define PAD_PIN_CGPIO11 (PAD_PIN_CGPIO_BASE + 11) ///< CGPIO11 +#define PAD_PIN_CGPIO12 (PAD_PIN_CGPIO_BASE + 12) ///< CGPIO12 +#define PAD_PIN_CGPIO13 (PAD_PIN_CGPIO_BASE + 13) ///< CGPIO13 +#define PAD_PIN_CGPIO14 (PAD_PIN_CGPIO_BASE + 14) ///< CGPIO14 +#define PAD_PIN_CGPIO15 (PAD_PIN_CGPIO_BASE + 15) ///< CGPIO15 + +#define PAD_PIN_CGPIO16 (PAD_PIN_CGPIO_BASE + 16) ///< CGPIO16 +#define PAD_PIN_CGPIO17 (PAD_PIN_CGPIO_BASE + 17) ///< CGPIO17 +#define PAD_PIN_CGPIO18 (PAD_PIN_CGPIO_BASE + 18) ///< CGPIO18 +#define PAD_PIN_CGPIO19 (PAD_PIN_CGPIO_BASE + 19) ///< CGPIO19 +#define PAD_PIN_CGPIO20 (PAD_PIN_CGPIO_BASE + 20) ///< CGPIO20 +#define PAD_PIN_CGPIO21 (PAD_PIN_CGPIO_BASE + 21) ///< CGPIO21 +#define PAD_PIN_CGPIO22 (PAD_PIN_CGPIO_BASE + 22) ///< CGPIO22 +#define PAD_PIN_CGPIO23 (PAD_PIN_CGPIO_BASE + 23) ///< CGPIO23 +#define PAD_PIN_CGPIO24 (PAD_PIN_CGPIO_BASE + 24) ///< CGPIO24 +#define PAD_PIN_CGPIO25 (PAD_PIN_CGPIO_BASE + 25) ///< CGPIO25 +#define PAD_PIN_CGPIO26 (PAD_PIN_CGPIO_BASE + 26) ///< CGPIO26 +#define PAD_PIN_CGPIO27 (PAD_PIN_CGPIO_BASE + 27) ///< CGPIO27 +#define PAD_PIN_CGPIO28 (PAD_PIN_CGPIO_BASE + 28) ///< CGPIO28 +#define PAD_PIN_CGPIO29 (PAD_PIN_CGPIO_BASE + 29) ///< CGPIO29 +#define PAD_PIN_CGPIO30 (PAD_PIN_CGPIO_BASE + 30) ///< CGPIO30 +#define PAD_PIN_CGPIO31 (PAD_PIN_CGPIO_BASE + 31) ///< CGPIO31 + +#define PAD_PIN_CGPIO32 (PAD_PIN_CGPIO_BASE + 32) ///< CGPIO32 +#define PAD_PIN_CGPIO33 (PAD_PIN_CGPIO_BASE + 33) ///< CGPIO33 +//CGPIOx group end + +//SGPIOx group begin +#define PAD_PIN_SGPIO_BASE 100 +#define PAD_PIN_SGPIO0 (PAD_PIN_SGPIO_BASE + 0) ///< SGPIO0 +#define PAD_PIN_SGPIO1 (PAD_PIN_SGPIO_BASE + 1) ///< SGPIO1 +#define PAD_PIN_SGPIO2 (PAD_PIN_SGPIO_BASE + 2) ///< SGPIO2 +#define PAD_PIN_SGPIO3 (PAD_PIN_SGPIO_BASE + 3) ///< SGPIO3 +#define PAD_PIN_SGPIO4 (PAD_PIN_SGPIO_BASE + 4) ///< SGPIO4 +#define PAD_PIN_SGPIO5 (PAD_PIN_SGPIO_BASE + 5) ///< SGPIO5 +#define PAD_PIN_SGPIO6 (PAD_PIN_SGPIO_BASE + 6) ///< SGPIO6 +#define PAD_PIN_SGPIO7 (PAD_PIN_SGPIO_BASE + 7) ///< SGPIO7 +#define PAD_PIN_SGPIO8 (PAD_PIN_SGPIO_BASE + 8) ///< SGPIO8 +#define PAD_PIN_SGPIO9 (PAD_PIN_SGPIO_BASE + 9) ///< SGPIO9 +#define PAD_PIN_SGPIO10 (PAD_PIN_SGPIO_BASE + 10) ///< SGPIO10 +#define PAD_PIN_SGPIO11 (PAD_PIN_SGPIO_BASE + 11) ///< SGPIO11 +//SGPIOx group end + +//PGPIOx group begin +#define PAD_PIN_PGPIO_BASE 150 +#define PAD_PIN_PGPIO0 (PAD_PIN_PGPIO_BASE + 0) ///< PGPIO0 +#define PAD_PIN_PGPIO1 (PAD_PIN_PGPIO_BASE + 1) ///< PGPIO1 +#define PAD_PIN_PGPIO2 (PAD_PIN_PGPIO_BASE + 2) ///< PGPIO2 +#define PAD_PIN_PGPIO3 (PAD_PIN_PGPIO_BASE + 3) ///< PGPIO3 +#define PAD_PIN_PGPIO4 (PAD_PIN_PGPIO_BASE + 4) ///< PGPIO4 +#define PAD_PIN_PGPIO5 (PAD_PIN_PGPIO_BASE + 5) ///< PGPIO5 +#define PAD_PIN_PGPIO6 (PAD_PIN_PGPIO_BASE + 6) ///< PGPIO6 +#define PAD_PIN_PGPIO7 (PAD_PIN_PGPIO_BASE + 7) ///< PGPIO7 +#define PAD_PIN_PGPIO8 (PAD_PIN_PGPIO_BASE + 8) ///< PGPIO8 +#define PAD_PIN_PGPIO9 (PAD_PIN_PGPIO_BASE + 9) ///< PGPIO9 +#define PAD_PIN_PGPIO10 (PAD_PIN_PGPIO_BASE + 10) ///< PGPIO10 +#define PAD_PIN_PGPIO11 (PAD_PIN_PGPIO_BASE + 11) ///< PGPIO11 +#define PAD_PIN_PGPIO12 (PAD_PIN_PGPIO_BASE + 12) ///< PGPIO12 +#define PAD_PIN_PGPIO13 (PAD_PIN_PGPIO_BASE + 13) ///< PGPIO13 +#define PAD_PIN_PGPIO14 (PAD_PIN_PGPIO_BASE + 14) ///< PGPIO14 +#define PAD_PIN_PGPIO15 (PAD_PIN_PGPIO_BASE + 15) ///< PGPIO15 + +#define PAD_PIN_PGPIO16 (PAD_PIN_PGPIO_BASE + 16) ///< PGPIO16 +#define PAD_PIN_PGPIO17 (PAD_PIN_PGPIO_BASE + 17) ///< PGPIO17 +#define PAD_PIN_PGPIO18 (PAD_PIN_PGPIO_BASE + 18) ///< PGPIO18 +#define PAD_PIN_PGPIO19 (PAD_PIN_PGPIO_BASE + 19) ///< PGPIO19 +#define PAD_PIN_PGPIO20 (PAD_PIN_PGPIO_BASE + 20) ///< PGPIO20 +#define PAD_PIN_PGPIO21 (PAD_PIN_PGPIO_BASE + 21) ///< PGPIO21 +#define PAD_PIN_PGPIO22 (PAD_PIN_PGPIO_BASE + 22) ///< PGPIO22 +#define PAD_PIN_PGPIO23 (PAD_PIN_PGPIO_BASE + 23) ///< PGPIO23 +#define PAD_PIN_PGPIO24 (PAD_PIN_PGPIO_BASE + 24) ///< PGPIO24 +#define PAD_PIN_PGPIO25 (PAD_PIN_PGPIO_BASE + 25) ///< PGPIO25 +#define PAD_PIN_PGPIO26 (PAD_PIN_PGPIO_BASE + 26) ///< PGPIO26 +#define PAD_PIN_PGPIO27 (PAD_PIN_PGPIO_BASE + 27) ///< PGPIO27 +#define PAD_PIN_PGPIO28 (PAD_PIN_PGPIO_BASE + 28) ///< PGPIO28 +#define PAD_PIN_PGPIO29 (PAD_PIN_PGPIO_BASE + 29) ///< PGPIO29 +#define PAD_PIN_PGPIO30 (PAD_PIN_PGPIO_BASE + 30) ///< PGPIO30 +#define PAD_PIN_PGPIO31 (PAD_PIN_PGPIO_BASE + 31) ///< PGPIO31 + +#define PAD_PIN_PGPIO32 (PAD_PIN_PGPIO_BASE + 32) ///< PGPIO32 +#define PAD_PIN_PGPIO33 (PAD_PIN_PGPIO_BASE + 33) ///< PGPIO33 +#define PAD_PIN_PGPIO34 (PAD_PIN_PGPIO_BASE + 34) ///< PGPIO34 +#define PAD_PIN_PGPIO35 (PAD_PIN_PGPIO_BASE + 35) ///< PGPIO35 +#define PAD_PIN_PGPIO36 (PAD_PIN_PGPIO_BASE + 36) ///< PGPIO36 +#define PAD_PIN_PGPIO37 (PAD_PIN_PGPIO_BASE + 37) ///< PGPIO37 +#define PAD_PIN_PGPIO38 (PAD_PIN_PGPIO_BASE + 38) ///< PGPIO38 +#define PAD_PIN_PGPIO39 (PAD_PIN_PGPIO_BASE + 39) ///< PGPIO39 +#define PAD_PIN_PGPIO40 (PAD_PIN_PGPIO_BASE + 40) ///< PGPIO40 +#define PAD_PIN_PGPIO41 (PAD_PIN_PGPIO_BASE + 41) ///< PGPIO41 +#define PAD_PIN_PGPIO42 (PAD_PIN_PGPIO_BASE + 42) ///< PGPIO42 +#define PAD_PIN_PGPIO43 (PAD_PIN_PGPIO_BASE + 43) ///< PGPIO43 +#define PAD_PIN_PGPIO44 (PAD_PIN_PGPIO_BASE + 44) ///< PGPIO44 +#define PAD_PIN_PGPIO45 (PAD_PIN_PGPIO_BASE + 45) ///< PGPIO45 +#define PAD_PIN_PGPIO46 (PAD_PIN_PGPIO_BASE + 46) ///< PGPIO46 +#define PAD_PIN_PGPIO47 (PAD_PIN_PGPIO_BASE + 47) ///< PGPIO47 +//PGPIOx group end + + +//LGPIOx group begin +#define PAD_PIN_LGPIO_BASE 250 +#define PAD_PIN_LGPIO0 (PAD_PIN_LGPIO_BASE + 0) ///< LGPIO0 +#define PAD_PIN_LGPIO1 (PAD_PIN_LGPIO_BASE + 1) ///< LGPIO1 +#define PAD_PIN_LGPIO2 (PAD_PIN_LGPIO_BASE + 2) ///< LGPIO2 +#define PAD_PIN_LGPIO3 (PAD_PIN_LGPIO_BASE + 3) ///< LGPIO3 +#define PAD_PIN_LGPIO4 (PAD_PIN_LGPIO_BASE + 4) ///< LGPIO4 +#define PAD_PIN_LGPIO5 (PAD_PIN_LGPIO_BASE + 5) ///< LGPIO5 +#define PAD_PIN_LGPIO6 (PAD_PIN_LGPIO_BASE + 6) ///< LGPIO6 +#define PAD_PIN_LGPIO7 (PAD_PIN_LGPIO_BASE + 7) ///< LGPIO7 +#define PAD_PIN_LGPIO8 (PAD_PIN_LGPIO_BASE + 8) ///< LGPIO8 +#define PAD_PIN_LGPIO9 (PAD_PIN_LGPIO_BASE + 9) ///< LGPIO9 +#define PAD_PIN_LGPIO10 (PAD_PIN_LGPIO_BASE + 10) ///< LGPIO10 +#define PAD_PIN_LGPIO11 (PAD_PIN_LGPIO_BASE + 11) ///< LGPIO11 +#define PAD_PIN_LGPIO12 (PAD_PIN_LGPIO_BASE + 12) ///< LGPIO12 +#define PAD_PIN_LGPIO13 (PAD_PIN_LGPIO_BASE + 13) ///< LGPIO13 +#define PAD_PIN_LGPIO14 (PAD_PIN_LGPIO_BASE + 14) ///< LGPIO14 +#define PAD_PIN_LGPIO15 (PAD_PIN_LGPIO_BASE + 15) ///< LGPIO15 + +#define PAD_PIN_LGPIO16 (PAD_PIN_LGPIO_BASE + 16) ///< LGPIO16 +#define PAD_PIN_LGPIO17 (PAD_PIN_LGPIO_BASE + 17) ///< LGPIO17 +#define PAD_PIN_LGPIO18 (PAD_PIN_LGPIO_BASE + 18) ///< LGPIO18 +#define PAD_PIN_LGPIO19 (PAD_PIN_LGPIO_BASE + 19) ///< LGPIO19 +#define PAD_PIN_LGPIO20 (PAD_PIN_LGPIO_BASE + 20) ///< LGPIO20 +#define PAD_PIN_LGPIO21 (PAD_PIN_LGPIO_BASE + 21) ///< LGPIO21 +#define PAD_PIN_LGPIO22 (PAD_PIN_LGPIO_BASE + 22) ///< LGPIO22 +#define PAD_PIN_LGPIO23 (PAD_PIN_LGPIO_BASE + 23) ///< LGPIO23 +#define PAD_PIN_LGPIO24 (PAD_PIN_LGPIO_BASE + 24) ///< LGPIO24 +#define PAD_PIN_LGPIO25 (PAD_PIN_LGPIO_BASE + 25) ///< LGPIO25 +#define PAD_PIN_LGPIO26 (PAD_PIN_LGPIO_BASE + 26) ///< LGPIO26 +#define PAD_PIN_LGPIO27 (PAD_PIN_LGPIO_BASE + 27) ///< LGPIO27 +#define PAD_PIN_LGPIO28 (PAD_PIN_LGPIO_BASE + 28) ///< LGPIO28 +#define PAD_PIN_LGPIO29 (PAD_PIN_LGPIO_BASE + 29) ///< LGPIO29 +#define PAD_PIN_LGPIO30 (PAD_PIN_LGPIO_BASE + 30) ///< LGPIO30 +#define PAD_PIN_LGPIO31 (PAD_PIN_LGPIO_BASE + 31) ///< LGPIO31 +#define PAD_PIN_LGPIO32 (PAD_PIN_LGPIO_BASE + 32) ///< LGPIO32 +//LGPIOx group end + +//DGPIO group begin +#define PAD_PIN_DGPIO_BASE 300 +#define PAD_PIN_DGPIO0 (PAD_PIN_DGPIO_BASE + 0) ///< DGPIO0 +#define PAD_PIN_DGPIO1 (PAD_PIN_DGPIO_BASE + 1) ///< DGPIO1 +#define PAD_PIN_DGPIO2 (PAD_PIN_DGPIO_BASE + 2) ///< DGPIO2 +#define PAD_PIN_DGPIO3 (PAD_PIN_DGPIO_BASE + 3) ///< DGPIO3 +#define PAD_PIN_DGPIO4 (PAD_PIN_DGPIO_BASE + 4) ///< DGPIO4 +#define PAD_PIN_DGPIO5 (PAD_PIN_DGPIO_BASE + 5) ///< DGPIO5 +#define PAD_PIN_DGPIO6 (PAD_PIN_DGPIO_BASE + 6) ///< DGPIO6 +#define PAD_PIN_DGPIO7 (PAD_PIN_DGPIO_BASE + 7) ///< DGPIO7 +#define PAD_PIN_DGPIO8 (PAD_PIN_DGPIO_BASE + 8) ///< DGPIO8 +#define PAD_PIN_DGPIO9 (PAD_PIN_DGPIO_BASE + 9) ///< DGPIO9 +#define PAD_PIN_DGPIO10 (PAD_PIN_DGPIO_BASE + 10) ///< DGPIO10 +#define PAD_PIN_DGPIO11 (PAD_PIN_DGPIO_BASE + 11) ///< DGPIO11 +#define PAD_PIN_DGPIO12 (PAD_PIN_DGPIO_BASE + 12) ///< DGPIO12 +//DGPIO group end + +//@} + + + +#define PAD_DS_GROUP4_10 0x0000 +#define PAD_DS_GROUP6_16 0x1000 +#define PAD_DS_GROUP8 0x2000 +#define PAD_DS_GROUP16 0x4000 +#define PAD_DS_GROUP5_40 0x8000 + +/** + @name Pad driving pin ID. + + Pad driving pin ID. + + Pad ID of pad_setDrivingSink() +*/ +//@{ +//CGPIO group begin +#define PAD_DS_CGPIO_BASE 0 +#define PAD_DS_CGPIO0 (PAD_DS_CGPIO_BASE + 0) ///< CGPIO0 +#define PAD_DS_CGPIO1 (PAD_DS_CGPIO_BASE + 1) ///< CGPIO1 +#define PAD_DS_CGPIO2 (PAD_DS_CGPIO_BASE + 2) ///< CGPIO2 +#define PAD_DS_CGPIO3 (PAD_DS_CGPIO_BASE + 3) ///< CGPIO3 +#define PAD_DS_CGPIO4 (PAD_DS_CGPIO_BASE + 4) ///< CGPIO4 +#define PAD_DS_CGPIO5 (PAD_DS_CGPIO_BASE + 5) ///< CGPIO5 +#define PAD_DS_CGPIO6 (PAD_DS_CGPIO_BASE + 6) ///< CGPIO6 +#define PAD_DS_CGPIO7 (PAD_DS_CGPIO_BASE + 7) ///< CGPIO7 +#define PAD_DS_CGPIO8 (PAD_DS_CGPIO_BASE + 8) ///< CGPIO8 +#define PAD_DS_CGPIO9 ((PAD_DS_CGPIO_BASE + 9) | PAD_DS_GROUP6_16) ///< CGPIO9 +#define PAD_DS_CGPIO10 (PAD_DS_CGPIO_BASE + 10) ///< CGPIO10 +#define PAD_DS_CGPIO11 (PAD_DS_CGPIO_BASE + 11) ///< CGPIO11 +#define PAD_DS_CGPIO12 (PAD_DS_CGPIO_BASE + 12) ///< CGPIO12 +#define PAD_DS_CGPIO13 (PAD_DS_CGPIO_BASE + 13) ///< CGPIO13 +#define PAD_DS_CGPIO14 (PAD_DS_CGPIO_BASE + 14) ///< CGPIO14 +#define PAD_DS_CGPIO15 (PAD_DS_CGPIO_BASE + 15) ///< CGPIO15 + +#define PAD_DS_CGPIO16 ((PAD_DS_CGPIO_BASE + 16) | PAD_DS_GROUP5_40) ///< CGPIO16 +#define PAD_DS_CGPIO17 ((PAD_DS_CGPIO_BASE + 17) | PAD_DS_GROUP5_40) ///< CGPIO17 +#define PAD_DS_CGPIO18 ((PAD_DS_CGPIO_BASE + 18) | PAD_DS_GROUP5_40) ///< CGPIO18 +#define PAD_DS_CGPIO19 ((PAD_DS_CGPIO_BASE + 19) | PAD_DS_GROUP5_40) ///< CGPIO19 +#define PAD_DS_CGPIO20 ((PAD_DS_CGPIO_BASE + 20) | PAD_DS_GROUP5_40) ///< CGPIO20 +#define PAD_DS_CGPIO21 ((PAD_DS_CGPIO_BASE + 21) | PAD_DS_GROUP5_40) ///< CGPIO21 +#define PAD_DS_CGPIO22 ((PAD_DS_CGPIO_BASE + 22) | PAD_DS_GROUP5_40) ///< CGPIO22 +#define PAD_DS_CGPIO23 ((PAD_DS_CGPIO_BASE + 23) | PAD_DS_GROUP5_40) ///< CGPIO23 +#define PAD_DS_CGPIO24 ((PAD_DS_CGPIO_BASE + 24) | PAD_DS_GROUP5_40) ///< CGPIO24 +#define PAD_DS_CGPIO25 ((PAD_DS_CGPIO_BASE + 25) | PAD_DS_GROUP5_40) ///< CGPIO25 +#define PAD_DS_CGPIO26 ((PAD_DS_CGPIO_BASE + 26) | PAD_DS_GROUP5_40) ///< CGPIO26 +#define PAD_DS_CGPIO27 ((PAD_DS_CGPIO_BASE + 27) | PAD_DS_GROUP5_40) ///< CGPIO27 +#define PAD_DS_CGPIO28 ((PAD_DS_CGPIO_BASE + 28) | PAD_DS_GROUP6_16) ///< CGPIO28 +#define PAD_DS_CGPIO29 (PAD_DS_CGPIO_BASE + 29) ///< CGPIO29 +#define PAD_DS_CGPIO30 (PAD_DS_CGPIO_BASE + 30) ///< CGPIO30 +#define PAD_DS_CGPIO31 (PAD_DS_CGPIO_BASE + 31) ///< CGPIO31 + +#define PAD_DS_CGPIO32 (PAD_DS_CGPIO_BASE + 32) ///< CGPIO32 +#define PAD_DS_CGPIO33 (PAD_DS_CGPIO_BASE + 33) ///< CGPIO33 +//CGPIO group end + +//SGPIO group Driving/Sink begin +#define PAD_DS_SGPIO_BASE 48 +#define PAD_DS_SGPIO0 ((PAD_DS_SGPIO_BASE + 0) | PAD_DS_GROUP6_16) ///< SGPIO0 +#define PAD_DS_SGPIO1 ((PAD_DS_SGPIO_BASE + 1) | PAD_DS_GROUP8) ///< SGPIO1 +#define PAD_DS_SGPIO2 ((PAD_DS_SGPIO_BASE + 2) | PAD_DS_GROUP8) ///< SGPIO2 +#define PAD_DS_SGPIO3 ((PAD_DS_SGPIO_BASE + 3) | PAD_DS_GROUP8) ///< SGPIO3 +#define PAD_DS_SGPIO4 ((PAD_DS_SGPIO_BASE + 4) | PAD_DS_GROUP8) ///< SGPIO4 +#define PAD_DS_SGPIO5 ((PAD_DS_SGPIO_BASE + 5) | PAD_DS_GROUP6_16) ///< SGPIO5 +#define PAD_DS_SGPIO6 ((PAD_DS_SGPIO_BASE + 6) | PAD_DS_GROUP8) ///< SGPIO6 +#define PAD_DS_SGPIO7 ((PAD_DS_SGPIO_BASE + 7) | PAD_DS_GROUP8) ///< SGPIO7 +#define PAD_DS_SGPIO8 (PAD_DS_SGPIO_BASE + 8) ///< SGPIO8 +#define PAD_DS_SGPIO9 (PAD_DS_SGPIO_BASE + 9) ///< SGPIO9 +#define PAD_DS_SGPIO10 (PAD_DS_SGPIO_BASE + 10) ///< SGPIO10 +#define PAD_DS_SGPIO11 (PAD_DS_SGPIO_BASE + 11) ///< SGPIO11 +//SGPIO group Driving/Sink end + +//PGPIO group Driving/Sink begin +#define PAD_DS_PGPIO_BASE 64 +#define PAD_DS_PGPIO0 (PAD_DS_PGPIO_BASE + 0) ///< PGPIO0 +#define PAD_DS_PGPIO1 (PAD_DS_PGPIO_BASE + 1) ///< PGPIO1 +#define PAD_DS_PGPIO2 (PAD_DS_PGPIO_BASE + 2) ///< PGPIO2 +#define PAD_DS_PGPIO3 (PAD_DS_PGPIO_BASE + 3) ///< PGPIO3 +#define PAD_DS_PGPIO4 (PAD_DS_PGPIO_BASE + 4) ///< PGPIO4 +#define PAD_DS_PGPIO5 (PAD_DS_PGPIO_BASE + 5) ///< PGPIO5 +#define PAD_DS_PGPIO6 (PAD_DS_PGPIO_BASE + 6) ///< PGPIO6 +#define PAD_DS_PGPIO7 (PAD_DS_PGPIO_BASE + 7) ///< PGPIO7 +#define PAD_DS_PGPIO8 (PAD_DS_PGPIO_BASE + 8) ///< PGPIO8 +#define PAD_DS_PGPIO9 (PAD_DS_PGPIO_BASE + 9) ///< PGPIO9 +#define PAD_DS_PGPIO10 (PAD_DS_PGPIO_BASE + 10) ///< PGPIO10 +#define PAD_DS_PGPIO11 (PAD_DS_PGPIO_BASE + 11) ///< PGPIO11 +#define PAD_DS_PGPIO12 (PAD_DS_PGPIO_BASE + 12) ///< PGPIO12 +#define PAD_DS_PGPIO13 (PAD_DS_PGPIO_BASE + 13) ///< PGPIO13 +#define PAD_DS_PGPIO14 (PAD_DS_PGPIO_BASE + 14) ///< PGPIO14 +#define PAD_DS_PGPIO15 (PAD_DS_PGPIO_BASE + 15) ///< PGPIO15 + +#define PAD_DS_PGPIO16 (PAD_DS_PGPIO_BASE + 16) ///< PGPIO16 +#define PAD_DS_PGPIO17 (PAD_DS_PGPIO_BASE + 17) ///< PGPIO17 +#define PAD_DS_PGPIO18 (PAD_DS_PGPIO_BASE + 18) ///< PGPIO18 +#define PAD_DS_PGPIO19 (PAD_DS_PGPIO_BASE + 19) ///< PGPIO19 +#define PAD_DS_PGPIO20 ((PAD_DS_PGPIO_BASE + 20) | PAD_DS_GROUP6_16) ///< PGPIO20 +#define PAD_DS_PGPIO21 ((PAD_DS_PGPIO_BASE + 21) | PAD_DS_GROUP6_16) ///< PGPIO21 +#define PAD_DS_PGPIO22 ((PAD_DS_PGPIO_BASE + 22) | PAD_DS_GROUP6_16) ///< PGPIO22 +#define PAD_DS_PGPIO23 ((PAD_DS_PGPIO_BASE + 23) | PAD_DS_GROUP6_16) ///< PGPIO23 +#define PAD_DS_PGPIO24 (PAD_DS_PGPIO_BASE + 24) ///< PGPIO24 +#define PAD_DS_PGPIO25 (PAD_DS_PGPIO_BASE + 25) ///< PGPIO25 +#define PAD_DS_PGPIO26 (PAD_DS_PGPIO_BASE + 26) ///< PGPIO26 +#define PAD_DS_PGPIO27 (PAD_DS_PGPIO_BASE + 27) ///< PGPIO27 +#define PAD_DS_PGPIO28 (PAD_DS_PGPIO_BASE + 28) ///< PGPIO28 +#define PAD_DS_PGPIO29 (PAD_DS_PGPIO_BASE + 29) ///< PGPIO29 +#define PAD_DS_PGPIO30 (PAD_DS_PGPIO_BASE + 30) ///< PGPIO30 +#define PAD_DS_PGPIO31 (PAD_DS_PGPIO_BASE + 31) ///< PGPIO31 + +#define PAD_DS_PGPIO32 (PAD_DS_PGPIO_BASE + 32) ///< PGPIO32 +#define PAD_DS_PGPIO33 (PAD_DS_PGPIO_BASE + 33) ///< PGPIO33 +#define PAD_DS_PGPIO34 (PAD_DS_PGPIO_BASE + 34) ///< PGPIO34 +#define PAD_DS_PGPIO35 (PAD_DS_PGPIO_BASE + 35) ///< PGPIO35 +#define PAD_DS_PGPIO36 (PAD_DS_PGPIO_BASE + 36) ///< PGPIO36 +#define PAD_DS_PGPIO37 (PAD_DS_PGPIO_BASE + 37) ///< PGPIO37 +#define PAD_DS_PGPIO38 (PAD_DS_PGPIO_BASE + 38) ///< PGPIO38 +#define PAD_DS_PGPIO39 (PAD_DS_PGPIO_BASE + 39) ///< PGPIO39 +#define PAD_DS_PGPIO40 (PAD_DS_PGPIO_BASE + 40) ///< PGPIO40 +#define PAD_DS_PGPIO41 (PAD_DS_PGPIO_BASE + 41) ///< PGPIO41 +#define PAD_DS_PGPIO42 ((PAD_DS_PGPIO_BASE + 42) | PAD_DS_GROUP8) ///< PGPIO42 +#define PAD_DS_PGPIO43 ((PAD_DS_PGPIO_BASE + 43) | PAD_DS_GROUP8) ///< PGPIO43 +#define PAD_DS_PGPIO44 ((PAD_DS_PGPIO_BASE + 44) | PAD_DS_GROUP8) ///< PGPIO44 +#define PAD_DS_PGPIO45 ((PAD_DS_PGPIO_BASE + 45) | PAD_DS_GROUP8) ///< PGPIO45 +#define PAD_DS_PGPIO46 ((PAD_DS_PGPIO_BASE + 46) | PAD_DS_GROUP8) ///< PGPIO46 +#define PAD_DS_PGPIO47 ((PAD_DS_PGPIO_BASE + 47) | PAD_DS_GROUP8) ///< PGPIO47 +//PGPIO group Driving/Sink end + +//LCD group Driving/Sink begin +#define PAD_DS_LGPIO_BASE 112 +#define PAD_DS_LGPIO0 ((PAD_DS_LGPIO_BASE + 0) | PAD_DS_GROUP6_16) ///< LGPIO0 +#define PAD_DS_LGPIO1 ((PAD_DS_LGPIO_BASE + 1) | PAD_DS_GROUP6_16) ///< LGPIO1 +#define PAD_DS_LGPIO2 ((PAD_DS_LGPIO_BASE + 2) | PAD_DS_GROUP6_16) ///< LGPIO2 +#define PAD_DS_LGPIO3 ((PAD_DS_LGPIO_BASE + 3) | PAD_DS_GROUP6_16) ///< LGPIO3 +#define PAD_DS_LGPIO4 ((PAD_DS_LGPIO_BASE + 4) | PAD_DS_GROUP6_16) ///< LGPIO4 +#define PAD_DS_LGPIO5 ((PAD_DS_LGPIO_BASE + 5) | PAD_DS_GROUP6_16) ///< LGPIO5 +#define PAD_DS_LGPIO6 ((PAD_DS_LGPIO_BASE + 6) | PAD_DS_GROUP6_16) ///< LGPIO6 +#define PAD_DS_LGPIO7 ((PAD_DS_LGPIO_BASE + 7) | PAD_DS_GROUP6_16) ///< LGPIO7 +#define PAD_DS_LGPIO8 ((PAD_DS_LGPIO_BASE + 8) | PAD_DS_GROUP6_16) ///< LGPIO8 +#define PAD_DS_LGPIO9 ((PAD_DS_LGPIO_BASE + 9) | PAD_DS_GROUP6_16) ///< LGPIO9 +#define PAD_DS_LGPIO10 ((PAD_DS_LGPIO_BASE + 10)| PAD_DS_GROUP6_16) ///< LGPIO10 +#define PAD_DS_LGPIO11 ((PAD_DS_LGPIO_BASE + 11)| PAD_DS_GROUP6_16) ///< LGPIO11 +#define PAD_DS_LGPIO12 ((PAD_DS_LGPIO_BASE + 12)| PAD_DS_GROUP6_16) ///< LGPIO12 +#define PAD_DS_LGPIO13 ((PAD_DS_LGPIO_BASE + 13)| PAD_DS_GROUP6_16) ///< LGPIO13 +#define PAD_DS_LGPIO14 ((PAD_DS_LGPIO_BASE + 14)| PAD_DS_GROUP6_16) ///< LGPIO14 +#define PAD_DS_LGPIO15 ((PAD_DS_LGPIO_BASE + 15)| PAD_DS_GROUP6_16) ///< LGPIO15 + +#define PAD_DS_LGPIO16 ((PAD_DS_LGPIO_BASE + 16)| PAD_DS_GROUP6_16) ///< LGPIO16 +#define PAD_DS_LGPIO17 ((PAD_DS_LGPIO_BASE + 17)| PAD_DS_GROUP6_16) ///< LGPIO17 +#define PAD_DS_LGPIO18 ((PAD_DS_LGPIO_BASE + 18)| PAD_DS_GROUP6_16) ///< LGPIO18 +#define PAD_DS_LGPIO19 ((PAD_DS_LGPIO_BASE + 19)| PAD_DS_GROUP6_16) ///< LGPIO19 +#define PAD_DS_LGPIO20 ((PAD_DS_LGPIO_BASE + 20)| PAD_DS_GROUP6_16) ///< LGPIO20 +#define PAD_DS_LGPIO21 ((PAD_DS_LGPIO_BASE + 21)| PAD_DS_GROUP6_16) ///< LGPIO21 +#define PAD_DS_LGPIO22 ((PAD_DS_LGPIO_BASE + 22)| PAD_DS_GROUP6_16) ///< LGPIO22 +#define PAD_DS_LGPIO23 ((PAD_DS_LGPIO_BASE + 23)| PAD_DS_GROUP6_16) ///< LGPIO23 +#define PAD_DS_LGPIO24 ((PAD_DS_LGPIO_BASE + 24)| PAD_DS_GROUP6_16) ///< LGPIO24 +#define PAD_DS_LGPIO25 ((PAD_DS_LGPIO_BASE + 25)| PAD_DS_GROUP6_16) ///< LGPIO25 +#define PAD_DS_LGPIO26 ((PAD_DS_LGPIO_BASE + 26)| PAD_DS_GROUP6_16) ///< LGPIO26 +#define PAD_DS_LGPIO27 ((PAD_DS_LGPIO_BASE + 27)| PAD_DS_GROUP6_16) ///< LGPIO27 +#define PAD_DS_LGPIO28 ((PAD_DS_LGPIO_BASE + 28)| PAD_DS_GROUP6_16) ///< LGPIO28 +#define PAD_DS_LGPIO29 ((PAD_DS_LGPIO_BASE + 29)| PAD_DS_GROUP6_16) ///< LGPIO29 +#define PAD_DS_LGPIO30 ((PAD_DS_LGPIO_BASE + 30)| PAD_DS_GROUP4_10) ///< LGPIO30 +#define PAD_DS_LGPIO31 ((PAD_DS_LGPIO_BASE + 31)| PAD_DS_GROUP4_10) ///< LGPIO31 +#define PAD_DS_LGPIO32 ((PAD_DS_LGPIO_BASE + 32)| PAD_DS_GROUP4_10) ///< LGPIO32 +//LCD group Driving/Sink end + +//DGPIO group Driving/Sink begin +#define PAD_DS_DGPIO_BASE 160 +#define PAD_DS_DGPIO0 ((PAD_DS_DGPIO_BASE + 0) | PAD_DS_GROUP16) ///< DGPIO0 +#define PAD_DS_DGPIO1 ((PAD_DS_DGPIO_BASE + 1) | PAD_DS_GROUP16) ///< DGPIO1 +#define PAD_DS_DGPIO2 ((PAD_DS_DGPIO_BASE + 2) | PAD_DS_GROUP16) ///< DGPIO2 +#define PAD_DS_DGPIO3 ((PAD_DS_DGPIO_BASE + 3) | PAD_DS_GROUP16) ///< DGPIO3 +#define PAD_DS_DGPIO4 ((PAD_DS_DGPIO_BASE + 4) | PAD_DS_GROUP16) ///< DGPIO4 +#define PAD_DS_DGPIO5 ((PAD_DS_DGPIO_BASE + 5) | PAD_DS_GROUP16) ///< DGPIO5 +#define PAD_DS_DGPIO6 ((PAD_DS_DGPIO_BASE + 6) | PAD_DS_GROUP8) ///< DGPIO6 +#define PAD_DS_DGPIO7 ((PAD_DS_DGPIO_BASE + 7) | PAD_DS_GROUP8) ///< DGPIO7 +#define PAD_DS_DGPIO8 ((PAD_DS_DGPIO_BASE + 8) | PAD_DS_GROUP8) ///< DGPIO8 +#define PAD_DS_DGPIO9 ((PAD_DS_DGPIO_BASE + 9) | PAD_DS_GROUP8) ///< DGPIO9 +#define PAD_DS_DGPIO10 ((PAD_DS_DGPIO_BASE + 10)| PAD_DS_GROUP8) ///< DGPIO10 +#define PAD_DS_DGPIO11 ((PAD_DS_DGPIO_BASE + 11)| PAD_DS_GROUP4_10) ///< DGPIO11 +#define PAD_DS_DGPIO12 ((PAD_DS_DGPIO_BASE + 12)| PAD_DS_GROUP4_10) ///< DGPIO12 +//DGPIO group Driving/Sink end +//@} + +#endif + +/** + @addtogroup mIDrvSys_PAD +*/ +//@{ + + +#define PAD_C_GPIO_BASE 0 +#define PAD_S_GPIO_BASE 96 +#define PAD_P_GPIO_BASE 128 +#define PAD_L_GPIO_BASE 224 +#define PAD_D_GPIO_BASE 288 +#define PAD_H_GPIO_BASE 320 +#define PAD_A_GPIO_BASE 352 +#define PAD_DS_GROUP_10 0x00000000 +#define PAD_DS_GROUP_16 0x10000000 +#define PAD_DS_GROUP_40 0x80000000 + +/** + @name Pad type pin ID. + + Pad type pin ID. + + Pad ID of pad_set_pull_up_down (), pad_get_pull_up_down (). +*/ +#define PAD_PIN_NOT_EXIST (64) // For backward compatible +//@{ +typedef enum { + + //C_GPIO group + PAD_PIN_CGPIO0 = (PAD_C_GPIO_BASE + 0), ///< C_GPIO_0 + PAD_PIN_CGPIO1 = (PAD_C_GPIO_BASE + 2), ///< C_GPIO_1 + PAD_PIN_CGPIO2 = (PAD_C_GPIO_BASE + 4), ///< C_GPIO_2 + PAD_PIN_CGPIO3 = (PAD_C_GPIO_BASE + 6), ///< C_GPIO_3 + PAD_PIN_CGPIO4 = (PAD_C_GPIO_BASE + 8), ///< C_GPIO_4 + PAD_PIN_CGPIO5 = (PAD_C_GPIO_BASE + 10), ///< C_GPIO_5 + PAD_PIN_CGPIO6 = (PAD_C_GPIO_BASE + 12), ///< C_GPIO_6 + PAD_PIN_CGPIO7 = (PAD_C_GPIO_BASE + 14), ///< C_GPIO_7 + PAD_PIN_CGPIO8 = (PAD_C_GPIO_BASE + 16), ///< C_GPIO_8 + PAD_PIN_CGPIO9 = (PAD_C_GPIO_BASE + 18), ///< C_GPIO_9 + PAD_PIN_CGPIO10 = (PAD_C_GPIO_BASE + 20), ///< C_GPIO_10 + PAD_PIN_CGPIO11 = (PAD_C_GPIO_BASE + 22), ///< C_GPIO_11 + PAD_PIN_CGPIO12 = (PAD_C_GPIO_BASE + 24), ///< C_GPIO_12 + PAD_PIN_CGPIO13 = (PAD_C_GPIO_BASE + 26), ///< C_GPIO_13 + PAD_PIN_CGPIO14 = (PAD_C_GPIO_BASE + 28), ///< C_GPIO_14 + PAD_PIN_CGPIO15 = (PAD_C_GPIO_BASE + 30), ///< C_GPIO_15 + PAD_PIN_CGPIO16 = (PAD_C_GPIO_BASE + 32), ///< C_GPIO_16 + PAD_PIN_CGPIO17 = (PAD_C_GPIO_BASE + 34), ///< C_GPIO_17 + PAD_PIN_CGPIO18 = (PAD_C_GPIO_BASE + 36), ///< C_GPIO_18 + PAD_PIN_CGPIO19 = (PAD_C_GPIO_BASE + 38), ///< C_GPIO_19 + PAD_PIN_CGPIO20 = (PAD_C_GPIO_BASE + 40), ///< C_GPIO_20 + PAD_PIN_CGPIO21 = (PAD_C_GPIO_BASE + 42), ///< C_GPIO_21 + PAD_PIN_CGPIO22 = (PAD_C_GPIO_BASE + 44), ///< C_GPIO_22 + + //S_GPIO group + PAD_PIN_SGPIO0 = (PAD_S_GPIO_BASE + 0), ///< S_GPIO_0 + PAD_PIN_SGPIO1 = (PAD_S_GPIO_BASE + 2), ///< S_GPIO_1 + PAD_PIN_SGPIO2 = (PAD_S_GPIO_BASE + 4), ///< S_GPIO_2 + PAD_PIN_SGPIO3 = (PAD_S_GPIO_BASE + 6), ///< S_GPIO_3 + PAD_PIN_SGPIO4 = (PAD_S_GPIO_BASE + 8), ///< S_GPIO_4 + PAD_PIN_SGPIO5 = (PAD_S_GPIO_BASE + 10), ///< S_GPIO_5 + PAD_PIN_SGPIO6 = (PAD_S_GPIO_BASE + 12), ///< S_GPIO_6 + PAD_PIN_SGPIO7 = (PAD_S_GPIO_BASE + 14), ///< S_GPIO_7 + PAD_PIN_SGPIO8 = (PAD_S_GPIO_BASE + 16), ///< S_GPIO_8 + PAD_PIN_SGPIO9 = (PAD_S_GPIO_BASE + 18), ///< S_GPIO_9 + PAD_PIN_SGPIO10 = (PAD_S_GPIO_BASE + 20), ///< S_GPIO_10 + PAD_PIN_SGPIO11 = (PAD_S_GPIO_BASE + 22), ///< S_GPIO_11 + PAD_PIN_SGPIO12 = (PAD_S_GPIO_BASE + 24), ///< S_GPIO_12 + + //P_GPIO group + PAD_PIN_PGPIO0 = (PAD_P_GPIO_BASE + 0), ///< P_GPIO_0 + PAD_PIN_PGPIO1 = (PAD_P_GPIO_BASE + 2), ///< P_GPIO_1 + PAD_PIN_PGPIO2 = (PAD_P_GPIO_BASE + 4), ///< P_GPIO_2 + PAD_PIN_PGPIO3 = (PAD_P_GPIO_BASE + 6), ///< P_GPIO_3 + PAD_PIN_PGPIO4 = (PAD_P_GPIO_BASE + 8), ///< P_GPIO_4 + PAD_PIN_PGPIO5 = (PAD_P_GPIO_BASE + 10), ///< P_GPIO_5 + PAD_PIN_PGPIO6 = (PAD_P_GPIO_BASE + 12), ///< P_GPIO_6 + PAD_PIN_PGPIO7 = (PAD_P_GPIO_BASE + 14), ///< P_GPIO_7 + PAD_PIN_PGPIO8 = (PAD_P_GPIO_BASE + 16), ///< P_GPIO_8 + PAD_PIN_PGPIO9 = (PAD_P_GPIO_BASE + 18), ///< P_GPIO_9 + PAD_PIN_PGPIO10 = (PAD_P_GPIO_BASE + 20), ///< P_GPIO_10 + PAD_PIN_PGPIO11 = (PAD_P_GPIO_BASE + 22), ///< P_GPIO_11 + PAD_PIN_PGPIO12 = (PAD_P_GPIO_BASE + 24), ///< P_GPIO_12 + PAD_PIN_PGPIO13 = (PAD_P_GPIO_BASE + 26), ///< P_GPIO_13 + PAD_PIN_PGPIO14 = (PAD_P_GPIO_BASE + 28), ///< P_GPIO_14 + PAD_PIN_PGPIO15 = (PAD_P_GPIO_BASE + 30), ///< P_GPIO_15 + PAD_PIN_PGPIO16 = (PAD_P_GPIO_BASE + 32), ///< P_GPIO_16 + PAD_PIN_PGPIO17 = (PAD_P_GPIO_BASE + 34), ///< P_GPIO_17 + PAD_PIN_PGPIO18 = (PAD_P_GPIO_BASE + 36), ///< P_GPIO_18 + PAD_PIN_PGPIO19 = (PAD_P_GPIO_BASE + 38), ///< P_GPIO_19 + PAD_PIN_PGPIO20 = (PAD_P_GPIO_BASE + 40), ///< P_GPIO_20 + PAD_PIN_PGPIO21 = (PAD_P_GPIO_BASE + 42), ///< P_GPIO_21 + PAD_PIN_PGPIO22 = (PAD_P_GPIO_BASE + 44), ///< P_GPIO_22 + PAD_PIN_PGPIO23 = (PAD_P_GPIO_BASE + 46), ///< P_GPIO_23 + PAD_PIN_PGPIO24 = (PAD_P_GPIO_BASE + 48), ///< P_GPIO_24 + + //L_GPIO group + PAD_PIN_LGPIO0 = (PAD_L_GPIO_BASE + 0), ///< L_GPIO_0 + PAD_PIN_LGPIO1 = (PAD_L_GPIO_BASE + 2), ///< L_GPIO_1 + PAD_PIN_LGPIO2 = (PAD_L_GPIO_BASE + 4), ///< L_GPIO_2 + PAD_PIN_LGPIO3 = (PAD_L_GPIO_BASE + 6), ///< L_GPIO_3 + PAD_PIN_LGPIO4 = (PAD_L_GPIO_BASE + 8), ///< L_GPIO_4 + PAD_PIN_LGPIO5 = (PAD_L_GPIO_BASE + 10), ///< L_GPIO_5 + PAD_PIN_LGPIO6 = (PAD_L_GPIO_BASE + 12), ///< L_GPIO_6 + PAD_PIN_LGPIO7 = (PAD_L_GPIO_BASE + 14), ///< L_GPIO_7 + PAD_PIN_LGPIO8 = (PAD_L_GPIO_BASE + 16), ///< L_GPIO_8 + PAD_PIN_LGPIO9 = (PAD_L_GPIO_BASE + 18), ///< L_GPIO_9 + PAD_PIN_LGPIO10 = (PAD_L_GPIO_BASE + 20), ///< L_GPIO_10 + PAD_PIN_LGPIO11 = (PAD_L_GPIO_BASE + 22), ///< L_GPIO_11 + PAD_PIN_LGPIO12 = (PAD_L_GPIO_BASE + 24), ///< L_GPIO_12 + PAD_PIN_LGPIO13 = (PAD_L_GPIO_BASE + 26), ///< L_GPIO_13 + PAD_PIN_LGPIO14 = (PAD_L_GPIO_BASE + 28), ///< L_GPIO_14 + PAD_PIN_LGPIO15 = (PAD_L_GPIO_BASE + 30), ///< L_GPIO_15 + PAD_PIN_LGPIO16 = (PAD_L_GPIO_BASE + 32), ///< L_GPIO_16 + PAD_PIN_LGPIO17 = (PAD_L_GPIO_BASE + 34), ///< L_GPIO_17 + PAD_PIN_LGPIO18 = (PAD_L_GPIO_BASE + 36), ///< L_GPIO_18 + PAD_PIN_LGPIO19 = (PAD_L_GPIO_BASE + 38), ///< L_GPIO_19 + PAD_PIN_LGPIO20 = (PAD_L_GPIO_BASE + 40), ///< L_GPIO_20 + PAD_PIN_LGPIO21 = (PAD_L_GPIO_BASE + 42), ///< L_GPIO_21 + PAD_PIN_LGPIO22 = (PAD_L_GPIO_BASE + 44), ///< L_GPIO_22 + PAD_PIN_LGPIO23 = (PAD_L_GPIO_BASE + 46), ///< L_GPIO_23 + PAD_PIN_LGPIO24 = (PAD_L_GPIO_BASE + 48), ///< L_GPIO_23 + + //D_GPIO group + PAD_PIN_DGPIO0 = (PAD_D_GPIO_BASE + 0), ///< D_GPIO_0 + PAD_PIN_DGPIO1 = (PAD_D_GPIO_BASE + 2), ///< D_GPIO_1 + PAD_PIN_DGPIO2 = (PAD_D_GPIO_BASE + 4), ///< D_GPIO_2 + PAD_PIN_DGPIO3 = (PAD_D_GPIO_BASE + 6), ///< D_GPIO_3 + PAD_PIN_DGPIO4 = (PAD_D_GPIO_BASE + 8), ///< D_GPIO_4 + PAD_PIN_DGPIO5 = (PAD_D_GPIO_BASE + 10), ///< D_GPIO_5 + PAD_PIN_DGPIO6 = (PAD_D_GPIO_BASE + 12), ///< D_GPIO_6 + PAD_PIN_DGPIO7 = (PAD_D_GPIO_BASE + 14), ///< D_GPIO_7 + + //HSI_GPIO group + PAD_PIN_HSIGPIO0 = (PAD_H_GPIO_BASE + 0), ///< HSI_GPIO_0 + PAD_PIN_HSIGPIO1 = (PAD_H_GPIO_BASE + 2), ///< HSI_GPIO_1 + PAD_PIN_HSIGPIO2 = (PAD_H_GPIO_BASE + 4), ///< HSI_GPIO_2 + PAD_PIN_HSIGPIO3 = (PAD_H_GPIO_BASE + 6), ///< HSI_GPIO_3 + PAD_PIN_HSIGPIO4 = (PAD_H_GPIO_BASE + 8), ///< HSI_GPIO_4 + PAD_PIN_HSIGPIO5 = (PAD_H_GPIO_BASE + 10), ///< HSI_GPIO_5 + PAD_PIN_HSIGPIO6 = (PAD_H_GPIO_BASE + 12), ///< HSI_GPIO_6 + PAD_PIN_HSIGPIO7 = (PAD_H_GPIO_BASE + 14), ///< HSI_GPIO_7 + PAD_PIN_HSIGPIO8 = (PAD_H_GPIO_BASE + 16), ///< HSI_GPIO_8 + PAD_PIN_HSIGPIO9 = (PAD_H_GPIO_BASE + 18), ///< HSI_GPIO_9 + PAD_PIN_HSIGPIO10 = (PAD_H_GPIO_BASE + 20), ///< HSI_GPIO_10 + PAD_PIN_HSIGPIO11 = (PAD_H_GPIO_BASE + 22), ///< HSI_GPIO_11 + + //A_GPIO group + PAD_PIN_AGPIO0 = (PAD_A_GPIO_BASE + 0), ///< A_GPIO_0 + PAD_PIN_AGPIO1 = (PAD_A_GPIO_BASE + 2), ///< A_GPIO_1 + PAD_PIN_AGPIO2 = (PAD_A_GPIO_BASE + 4), ///< A_GPIO_2 + + PAD_PIN_MAX = PAD_PIN_AGPIO2, + ENUM_DUMMY4WORD(PAD_PIN) +} PAD_PIN; +//@} + +/** + Pad type select + + Pad type select + + Pad type value for pad_set_pull_up_down(), pad_get_pull_up_down(). +*/ +typedef enum { + PAD_NONE = 0x00, ///< none of pull up/down + PAD_PULLDOWN = 0x01, ///< pull down + PAD_PULLUP = 0x02, ///< pull up + PAD_KEEPER = 0x03, ///< keeper + + ENUM_DUMMY4WORD(PAD_PULL) +} PAD_PULL; + +/** + Pad driving select + + Pad driving select + + Pad driving value for pad_set_driving_sink(), pad_get_driving_sink(). +*/ +typedef enum { + PAD_DRIVINGSINK_4MA = 0x0001, ///< Pad driver/sink 4mA + PAD_DRIVINGSINK_10MA = 0x0202, ///< Pad driver/sink 10mA + + PAD_DRIVINGSINK_6MA = 0x0010, ///< Pad driver/sink 6mA + PAD_DRIVINGSINK_16MA = 0x0020, ///< Pad driver/sink 16mA + + PAD_DRIVINGSINK_5MA = 0x0100, ///< Pad driver/sink 5mA + PAD_DRIVINGSINK_15MA = 0x0400, ///< Pad driver/sink 15mA + PAD_DRIVINGSINK_20MA = 0x0800, ///< Pad driver/sink 20mA + PAD_DRIVINGSINK_25MA = 0x1000, ///< Pad driver/sink 25mA + PAD_DRIVINGSINK_30MA = 0x2000, ///< Pad driver/sink 30mA + PAD_DRIVINGSINK_35MA = 0x4000, ///< Pad driver/sink 35mA + PAD_DRIVINGSINK_40MA = 0x8000, ///< Pad driver/sink 40mA + + ENUM_DUMMY4WORD(PAD_DRIVINGSINK) +} PAD_DRIVINGSINK; + +/** + @name Pad driving pin ID. + + Pad driving pin ID. + + Pad ID of pad_set_driving_sink(), pad_get_driving_sink() +*/ +//@{ +typedef enum { + + //C_GPIO group + PAD_DS_CGPIO0 = ((PAD_C_GPIO_BASE + 0) | PAD_DS_GROUP_10), ///< C_GPIO_0 + PAD_DS_CGPIO1 = ((PAD_C_GPIO_BASE + 2) | PAD_DS_GROUP_10), ///< C_GPIO_1 + PAD_DS_CGPIO2 = ((PAD_C_GPIO_BASE + 4) | PAD_DS_GROUP_10), ///< C_GPIO_2 + PAD_DS_CGPIO3 = ((PAD_C_GPIO_BASE + 6) | PAD_DS_GROUP_10), ///< C_GPIO_3 + PAD_DS_CGPIO4 = ((PAD_C_GPIO_BASE + 8) | PAD_DS_GROUP_10), ///< C_GPIO_4 + PAD_DS_CGPIO5 = ((PAD_C_GPIO_BASE + 10) | PAD_DS_GROUP_10), ///< C_GPIO_5 + PAD_DS_CGPIO6 = ((PAD_C_GPIO_BASE + 12) | PAD_DS_GROUP_10), ///< C_GPIO_6 + PAD_DS_CGPIO7 = ((PAD_C_GPIO_BASE + 14) | PAD_DS_GROUP_10), ///< C_GPIO_7 + PAD_DS_CGPIO8 = ((PAD_C_GPIO_BASE + 16) | PAD_DS_GROUP_16), ///< C_GPIO_8 + PAD_DS_CGPIO9 = ((PAD_C_GPIO_BASE + 18) | PAD_DS_GROUP_10), ///< C_GPIO_9 + PAD_DS_CGPIO10 = ((PAD_C_GPIO_BASE + 20) | PAD_DS_GROUP_10), ///< C_GPIO_10 + PAD_DS_CGPIO11 = ((PAD_C_GPIO_BASE + 0) | PAD_DS_GROUP_40), ///< C_GPIO_11 + PAD_DS_CGPIO12 = ((PAD_C_GPIO_BASE + 4) | PAD_DS_GROUP_40), ///< C_GPIO_12 + PAD_DS_CGPIO13 = ((PAD_C_GPIO_BASE + 8) | PAD_DS_GROUP_40), ///< C_GPIO_13 + PAD_DS_CGPIO14 = ((PAD_C_GPIO_BASE + 12) | PAD_DS_GROUP_40), ///< C_GPIO_14 + PAD_DS_CGPIO15 = ((PAD_C_GPIO_BASE + 16) | PAD_DS_GROUP_40), ///< C_GPIO_15 + PAD_DS_CGPIO16 = ((PAD_C_GPIO_BASE + 20) | PAD_DS_GROUP_40), ///< C_GPIO_16 + PAD_DS_CGPIO17 = ((PAD_C_GPIO_BASE + 24) | PAD_DS_GROUP_40), ///< C_GPIO_17 + PAD_DS_CGPIO18 = ((PAD_C_GPIO_BASE + 36) | PAD_DS_GROUP_16), ///< C_GPIO_18 + PAD_DS_CGPIO19 = ((PAD_C_GPIO_BASE + 38) | PAD_DS_GROUP_16), ///< C_GPIO_19 + PAD_DS_CGPIO20 = ((PAD_C_GPIO_BASE + 40) | PAD_DS_GROUP_16), ///< C_GPIO_20 + PAD_DS_CGPIO21 = ((PAD_C_GPIO_BASE + 42) | PAD_DS_GROUP_16), ///< C_GPIO_21 + PAD_DS_CGPIO22 = ((PAD_C_GPIO_BASE + 44) | PAD_DS_GROUP_16), ///< C_GPIO_22 + + //S_GPIO group + PAD_DS_SGPIO0 = ((PAD_S_GPIO_BASE + 0) | PAD_DS_GROUP_16), ///< S_GPIO_0 + PAD_DS_SGPIO1 = ((PAD_S_GPIO_BASE + 2) | PAD_DS_GROUP_16), ///< S_GPIO_1 + PAD_DS_SGPIO2 = ((PAD_S_GPIO_BASE + 4) | PAD_DS_GROUP_10), ///< S_GPIO_2 + PAD_DS_SGPIO3 = ((PAD_S_GPIO_BASE + 6) | PAD_DS_GROUP_10), ///< S_GPIO_3 + PAD_DS_SGPIO4 = ((PAD_S_GPIO_BASE + 8) | PAD_DS_GROUP_10), ///< S_GPIO_4 + PAD_DS_SGPIO5 = ((PAD_S_GPIO_BASE + 10) | PAD_DS_GROUP_16), ///< S_GPIO_5 + PAD_DS_SGPIO6 = ((PAD_S_GPIO_BASE + 12) | PAD_DS_GROUP_10), ///< S_GPIO_6 + PAD_DS_SGPIO7 = ((PAD_S_GPIO_BASE + 14) | PAD_DS_GROUP_10), ///< S_GPIO_7 + PAD_DS_SGPIO8 = ((PAD_S_GPIO_BASE + 16) | PAD_DS_GROUP_10), ///< S_GPIO_8 + PAD_DS_SGPIO9 = ((PAD_S_GPIO_BASE + 18) | PAD_DS_GROUP_10), ///< S_GPIO_9 + PAD_DS_SGPIO10 = ((PAD_S_GPIO_BASE + 20) | PAD_DS_GROUP_10), ///< S_GPIO_10 + PAD_DS_SGPIO11 = ((PAD_S_GPIO_BASE + 22) | PAD_DS_GROUP_10), ///< S_GPIO_11 + PAD_DS_SGPIO12 = ((PAD_S_GPIO_BASE + 24) | PAD_DS_GROUP_10), ///< S_GPIO_12 + + //P_GPIO group + PAD_DS_PGPIO0 = ((PAD_P_GPIO_BASE + 0) | PAD_DS_GROUP_10), ///< P_GPIO_0 + PAD_DS_PGPIO1 = ((PAD_P_GPIO_BASE + 2) | PAD_DS_GROUP_10), ///< P_GPIO_1 + PAD_DS_PGPIO2 = ((PAD_P_GPIO_BASE + 4) | PAD_DS_GROUP_10), ///< P_GPIO_2 + PAD_DS_PGPIO3 = ((PAD_P_GPIO_BASE + 6) | PAD_DS_GROUP_10), ///< P_GPIO_3 + PAD_DS_PGPIO4 = ((PAD_P_GPIO_BASE + 8) | PAD_DS_GROUP_10), ///< P_GPIO_4 + PAD_DS_PGPIO5 = ((PAD_P_GPIO_BASE + 10) | PAD_DS_GROUP_10), ///< P_GPIO_5 + PAD_DS_PGPIO6 = ((PAD_P_GPIO_BASE + 12) | PAD_DS_GROUP_10), ///< P_GPIO_6 + PAD_DS_PGPIO7 = ((PAD_P_GPIO_BASE + 14) | PAD_DS_GROUP_10), ///< P_GPIO_7 + PAD_DS_PGPIO8 = ((PAD_P_GPIO_BASE + 16) | PAD_DS_GROUP_16), ///< P_GPIO_8 + PAD_DS_PGPIO9 = ((PAD_P_GPIO_BASE + 18) | PAD_DS_GROUP_10), ///< P_GPIO_9 + PAD_DS_PGPIO10 = ((PAD_P_GPIO_BASE + 20) | PAD_DS_GROUP_10), ///< P_GPIO_10 + PAD_DS_PGPIO11 = ((PAD_P_GPIO_BASE + 22) | PAD_DS_GROUP_10), ///< P_GPIO_11 + PAD_DS_PGPIO12 = ((PAD_P_GPIO_BASE + 24) | PAD_DS_GROUP_10), ///< P_GPIO_12 + PAD_DS_PGPIO13 = ((PAD_P_GPIO_BASE + 26) | PAD_DS_GROUP_10), ///< P_GPIO_13 + PAD_DS_PGPIO14 = ((PAD_P_GPIO_BASE + 28) | PAD_DS_GROUP_10), ///< P_GPIO_14 + PAD_DS_PGPIO15 = ((PAD_P_GPIO_BASE + 30) | PAD_DS_GROUP_10), ///< P_GPIO_15 + PAD_DS_PGPIO16 = ((PAD_P_GPIO_BASE + 32) | PAD_DS_GROUP_10), ///< P_GPIO_16 + PAD_DS_PGPIO17 = ((PAD_P_GPIO_BASE + 34) | PAD_DS_GROUP_10), ///< P_GPIO_17 + PAD_DS_PGPIO18 = ((PAD_P_GPIO_BASE + 36) | PAD_DS_GROUP_10), ///< P_GPIO_18 + PAD_DS_PGPIO19 = ((PAD_P_GPIO_BASE + 38) | PAD_DS_GROUP_10), ///< P_GPIO_19 + PAD_DS_PGPIO20 = ((PAD_P_GPIO_BASE + 40) | PAD_DS_GROUP_10), ///< P_GPIO_20 + PAD_DS_PGPIO21 = ((PAD_P_GPIO_BASE + 42) | PAD_DS_GROUP_10), ///< P_GPIO_21 + PAD_DS_PGPIO22 = ((PAD_P_GPIO_BASE + 44) | PAD_DS_GROUP_10), ///< P_GPIO_22 + PAD_DS_PGPIO23 = ((PAD_P_GPIO_BASE + 46) | PAD_DS_GROUP_10), ///< P_GPIO_23 + PAD_DS_PGPIO24 = ((PAD_P_GPIO_BASE + 48) | PAD_DS_GROUP_10), ///< P_GPIO_24 + + //L_GPIO group + PAD_DS_LGPIO0 = ((PAD_L_GPIO_BASE + 0) | PAD_DS_GROUP_10), ///< L_GPIO_0 + PAD_DS_LGPIO1 = ((PAD_L_GPIO_BASE + 2) | PAD_DS_GROUP_10), ///< L_GPIO_1 + PAD_DS_LGPIO2 = ((PAD_L_GPIO_BASE + 4) | PAD_DS_GROUP_10), ///< L_GPIO_2 + PAD_DS_LGPIO3 = ((PAD_L_GPIO_BASE + 6) | PAD_DS_GROUP_10), ///< L_GPIO_3 + PAD_DS_LGPIO4 = ((PAD_L_GPIO_BASE + 8) | PAD_DS_GROUP_10), ///< L_GPIO_4 + PAD_DS_LGPIO5 = ((PAD_L_GPIO_BASE + 10) | PAD_DS_GROUP_10), ///< L_GPIO_5 + PAD_DS_LGPIO6 = ((PAD_L_GPIO_BASE + 12) | PAD_DS_GROUP_10), ///< L_GPIO_6 + PAD_DS_LGPIO7 = ((PAD_L_GPIO_BASE + 14) | PAD_DS_GROUP_10), ///< L_GPIO_7 + PAD_DS_LGPIO8 = ((PAD_L_GPIO_BASE + 16) | PAD_DS_GROUP_16), ///< L_GPIO_8 + PAD_DS_LGPIO9 = ((PAD_L_GPIO_BASE + 18) | PAD_DS_GROUP_10), ///< L_GPIO_9 + PAD_DS_LGPIO10 = ((PAD_L_GPIO_BASE + 20) | PAD_DS_GROUP_10), ///< L_GPIO_10 + PAD_DS_LGPIO11 = ((PAD_L_GPIO_BASE + 22) | PAD_DS_GROUP_10), ///< L_GPIO_11 + PAD_DS_LGPIO12 = ((PAD_L_GPIO_BASE + 24) | PAD_DS_GROUP_10), ///< L_GPIO_12 + PAD_DS_LGPIO13 = ((PAD_L_GPIO_BASE + 26) | PAD_DS_GROUP_10), ///< L_GPIO_13 + PAD_DS_LGPIO14 = ((PAD_L_GPIO_BASE + 28) | PAD_DS_GROUP_10), ///< L_GPIO_14 + PAD_DS_LGPIO15 = ((PAD_L_GPIO_BASE + 30) | PAD_DS_GROUP_10), ///< L_GPIO_15 + PAD_DS_LGPIO16 = ((PAD_L_GPIO_BASE + 32) | PAD_DS_GROUP_10), ///< L_GPIO_16 + PAD_DS_LGPIO17 = ((PAD_L_GPIO_BASE + 34) | PAD_DS_GROUP_10), ///< L_GPIO_17 + PAD_DS_LGPIO18 = ((PAD_L_GPIO_BASE + 36) | PAD_DS_GROUP_10), ///< L_GPIO_18 + PAD_DS_LGPIO19 = ((PAD_L_GPIO_BASE + 38) | PAD_DS_GROUP_10), ///< L_GPIO_19 + PAD_DS_LGPIO20 = ((PAD_L_GPIO_BASE + 40) | PAD_DS_GROUP_10), ///< L_GPIO_20 + PAD_DS_LGPIO21 = ((PAD_L_GPIO_BASE + 42) | PAD_DS_GROUP_10), ///< L_GPIO_21 + PAD_DS_LGPIO22 = ((PAD_L_GPIO_BASE + 44) | PAD_DS_GROUP_10), ///< L_GPIO_22 + PAD_DS_LGPIO23 = ((PAD_L_GPIO_BASE + 46) | PAD_DS_GROUP_10), ///< L_GPIO_23 + PAD_DS_LGPIO24 = ((PAD_L_GPIO_BASE + 48) | PAD_DS_GROUP_10), ///< L_GPIO_23 + + //D_GPIO group + PAD_DS_DGPIO0 = ((PAD_D_GPIO_BASE + 0) | PAD_DS_GROUP_16), ///< D_GPIO_0 + PAD_DS_DGPIO1 = ((PAD_D_GPIO_BASE + 2) | PAD_DS_GROUP_16), ///< D_GPIO_1 + PAD_DS_DGPIO2 = ((PAD_D_GPIO_BASE + 4) | PAD_DS_GROUP_16), ///< D_GPIO_2 + PAD_DS_DGPIO3 = ((PAD_D_GPIO_BASE + 6) | PAD_DS_GROUP_16), ///< D_GPIO_3 + PAD_DS_DGPIO4 = ((PAD_D_GPIO_BASE + 8) | PAD_DS_GROUP_16), ///< D_GPIO_4 + PAD_DS_DGPIO5 = ((PAD_D_GPIO_BASE + 10) | PAD_DS_GROUP_16), ///< D_GPIO_5 + PAD_DS_DGPIO6 = ((PAD_D_GPIO_BASE + 12) | PAD_DS_GROUP_16), ///< D_GPIO_6 + PAD_DS_DGPIO7 = ((PAD_D_GPIO_BASE + 14) | PAD_DS_GROUP_10), ///< D_GPIO_7 + + //HSI_GPIO group + PAD_DS_HSIGPIO0 = ((PAD_H_GPIO_BASE + 0) | PAD_DS_GROUP_10), ///< HSI_GPIO_0 + PAD_DS_HSIGPIO1 = ((PAD_H_GPIO_BASE + 2) | PAD_DS_GROUP_10), ///< HSI_GPIO_1 + PAD_DS_HSIGPIO2 = ((PAD_H_GPIO_BASE + 4) | PAD_DS_GROUP_10), ///< HSI_GPIO_2 + PAD_DS_HSIGPIO3 = ((PAD_H_GPIO_BASE + 6) | PAD_DS_GROUP_10), ///< HSI_GPIO_3 + PAD_DS_HSIGPIO4 = ((PAD_H_GPIO_BASE + 8) | PAD_DS_GROUP_10), ///< HSI_GPIO_4 + PAD_DS_HSIGPIO5 = ((PAD_H_GPIO_BASE + 10) | PAD_DS_GROUP_10), ///< HSI_GPIO_5 + PAD_DS_HSIGPIO6 = ((PAD_H_GPIO_BASE + 12) | PAD_DS_GROUP_10), ///< HSI_GPIO_6 + PAD_DS_HSIGPIO7 = ((PAD_H_GPIO_BASE + 14) | PAD_DS_GROUP_10), ///< HSI_GPIO_7 + PAD_DS_HSIGPIO8 = ((PAD_H_GPIO_BASE + 16) | PAD_DS_GROUP_10), ///< HSI_GPIO_8 + PAD_DS_HSIGPIO9 = ((PAD_H_GPIO_BASE + 18) | PAD_DS_GROUP_10), ///< HSI_GPIO_9 + PAD_DS_HSIGPIO10 = ((PAD_H_GPIO_BASE + 20) | PAD_DS_GROUP_10), ///< HSI_GPIO_10 + PAD_DS_HSIGPIO11 = ((PAD_H_GPIO_BASE + 22) | PAD_DS_GROUP_10), ///< HSI_GPIO_11 + + //A_GPIO group + PAD_DS_AGPIO0 = ((PAD_A_GPIO_BASE + 0) | PAD_DS_GROUP_10), ///< A_GPIO_0 + PAD_DS_AGPIO1 = ((PAD_A_GPIO_BASE + 2) | PAD_DS_GROUP_10), ///< A_GPIO_1 + PAD_DS_AGPIO2 = ((PAD_A_GPIO_BASE + 4) | PAD_DS_GROUP_10), ///< A_GPIO_2 + + PAD_DS_MAX = PAD_DS_AGPIO2, + ENUM_DUMMY4WORD(PAD_DS) +} PAD_DS; +//@} + +/** + Pad power ID select + + Pad power ID for PAD_POWER_STRUCT. +*/ +typedef enum { + PAD_POWERID_MC0 = 0x00, ///< Pad power id for MC0 + PAD_POWERID_MC1 = 0x01, ///< Pad power id for MC1 + PAD_POWERID_ADC = 0x02, ///< Pad power id for Audio ADC + PAD_POWERID_CSI = 0x04, ///< Pad power id for CSI/LVDS + + ENUM_DUMMY4WORD(PAD_POWERID) +} PAD_POWERID; + +/** + Pad power select + + Pad power value for PAD_POWER_STRUCT. +*/ +typedef enum { + PAD_3P3V = 0x00, ///< Pad power is 3.3V + PAD_AVDD = 0x00, ///< Pad power is AVDD ( for PAD_POWERID_ADC use) + PAD_1P8V = 0x01, ///< Pad power is 1.8V + PAD_PAD_VAD = 0x01, ///< Pad power is PAD_ADC_VAD ( for PAD_POWERID_ADC use) + + ENUM_DUMMY4WORD(PAD_POWER) +} PAD_POWER; + +/** + Pad power VAD for PAD_POWERID_ADC + + Pad power VAD value for PAD_POWER_STRUCT. +*/ +typedef enum { + PAD_VAD_2P9V = 0x00, ///< Pad power VAD = 2.9V + PAD_VAD_3P0V = 0x01, ///< Pad power VAD = 3.0V + PAD_VAD_3P1V = 0x03, ///< Pad power VAD = 3.1V + + PAD_VAD_2P4V = 0x100, ///< Pad power VAD = 2.4V + PAD_VAD_2P5V = 0x101, ///< Pad power VAD = 2.5V + PAD_VAD_2P6V = 0x103, ///< Pad power VAD = 2.6V + + ENUM_DUMMY4WORD(PAD_VAD) +} PAD_VAD; + + +/** + PAD power structure + + PAD power setting for pad_set_power() +*/ +typedef struct { + PAD_POWERID power_id; ///< Pad power id + PAD_POWER power; ///< Pad power + BOOL bias_current; ///< Regulator bias current selection + ///< - @b FALSE: disable + ///< - @b TRUE: enable + BOOL opa_gain; ///< Regulator OPA gain/phase selection + ///< - @b FALSE: disable + ///< - @b TRUE: enable + BOOL pull_down; ///< Regulator output pull down control + ///< - @b FALSE: none + ///< - @b TRUE: pull down enable + BOOL regulator_en; ///< Regulator enable + ///< - @b FALSE: disable + ///< - @b TRUE: enable + PAD_VAD vad; ///< Pad VAD of PAD_POWERID_ADC when PAD_PAD_VAD = 1 +} PAD_POWER_STRUCT; + + + + + + + + +// Backward compatible usages +#define PAD_PIN_CGPIO23 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO23 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO24 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO25 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO26 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO27 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO28 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO29 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO30 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO31 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO32 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO33 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_PGPIO39 PAD_PIN_NOT_EXIST // For backward compatible + + +/* + Exporting APIs +*/ + +extern ER pad_setPullUpDown(UINT32 pin, PAD_PULL pulltype); +extern ER pad_setDrivingSink(UINT32 name, PAD_DRIVINGSINK driving); +//@} + + + +//@} + +#endif diff --git a/board/novatek/na51055/loader/Include/Driver/regdef.h b/board/novatek/na51055/loader/Include/Driver/regdef.h new file mode 100755 index 000000000000..93a938095645 --- /dev/null +++ b/board/novatek/na51055/loader/Include/Driver/regdef.h @@ -0,0 +1,199 @@ +/* + * MIPS register definitions, originally from: + * + * include/asm-mips/regdefs.h + * + * This file is subject to the terms and conditions of the GNU General Public + * License, Version 2. See the file "COPYING" in the main directory of this + * archive for more details. + * + * Copyright (C) 1994, 1995 by Ralf Baechle + */ + +/* + * Symbolic register names for 32 bit ABI + */ +# define Mode_USR 0x10 /* M[4:0] = 01010 */ +# define Mode_FIQ 0x11 /* M[4:0] = 10001 */ +# define Mode_IRQ 0x12 /* M[4:0] = 10010 */ +# define Mode_SVC 0x13 /* M[4:0] = 10011 */ +# define Mode_ABT 0x17 /* M[4:0] = 10111 */ +# define Mode_UNDEF 0x1B /* M[4:0] = 11011 */ +# define Mode_SYS 0x1F /* M[4:0] = 11111 */ +# define Mode_MSK 0x1F /* M[4:0] = 11111 */ +# define I_Bit 0x80 /* 7 6 5 4 3 2 1 0 */ +# define F_Bit 0x40 /* I F T M4 M3 M2 M1 M0 */ + +/* + ************************************************************************ + * Cache Size ID Register, CCSIDR (cp15, 1, c0, c0, 0) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |W|W|R|W|NumSets |Associativity |L | + * |T|B|A|A| | |S | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_CCSIDR_WT 31 +#define M_CCSIDR_WT (0x1 << S_CCSIDR_WT) /* Support write-through */ +#define S_CCSIDR_WB 30 +#define M_CCSIDR_WB (0x1 << S_CCSIDR_WB) /* Support write-back */ +#define S_CCSIDR_RA 29 +#define M_CCSIDR_RA (0x1 << S_CCSIDR_RA) /* Support read-allocation */ +#define S_CCSIDR_WA 28 +#define M_CCSIDR_WA (0x1 << S_CCSIDR_WA) /* Support write-allocation */ +#define S_CCSIDR_SETS 13 +#define M_CCSIDR_SETS (0x7fff << S_CCSIDR_SETS) /* Number of sets */ +#define S_CCSIDR_A 3 +#define M_CCSIDR_A (0x3ff << S_CCSIDR_A) /* Number of associatiovity */ +#define S_CCSIDR_LS 0 +#define M_CCSIDR_LS (0x7 << S_CCSIDR_LS) /* Cache line size */ + +/* + ************************************************************************ + * Cache Level ID Register, CLIDR (cp15, 1, c0, c0, 1) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |0|0|LoUU |LoC |LoUIS|CT7 |CT6 |CT5 |CT4 |CT3 |CT2 |CT1 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_CLIDR_LoUU 27 +#define M_CLIDR_LoUU (0x7 << S_CLIDR_LoUU) +#define S_CLIDR_LoC 24 +#define M_CLIDR_LoC (0x7 << S_CLIDR_LoC) /* Cache cohernecy level */ +#define S_CLIDR_LoUIS 21 +#define M_CLIDR_LoUIS (0x7 << S_CLIDR_LoUIS) +#define S_CLIDR_Ctype7 18 +#define M_CLIDR_Ctype7 (0x7 << S_CLIDR_Ctype7) /* Cache type of level 7 cache */ +#define S_CLIDR_Ctype6 15 +#define M_CLIDR_Ctype6 (0x7 << S_CLIDR_Ctype6) /* Cache type of level 6 cache */ +#define S_CLIDR_Ctype5 12 +#define M_CLIDR_Ctype5 (0x7 << S_CLIDR_Ctype5) /* Cache type of level 5 cache */ +#define S_CLIDR_Ctype4 9 +#define M_CLIDR_Ctype4 (0x7 << S_CLIDR_Ctype4) /* Cache type of level 4 cache */ +#define S_CLIDR_Ctype3 6 +#define M_CLIDR_Ctype3 (0x7 << S_CLIDR_Ctype3) /* Cache type of level 3 cache */ +#define S_CLIDR_Ctype2 3 +#define M_CLIDR_Ctype2 (0x7 << S_CLIDR_Ctype2) /* Cache type of level 2 cache */ +#define S_CLIDR_Ctype1 0 +#define M_CLIDR_Ctype1 (0x7 << S_CLIDR_Ctype1) /* Cache type of level 1 cache */ + +#define K_CLIDR_Ctype_NO 0 /* No cache */ +#define K_CLIDR_Ctype_IC 1 /* Instruction cache only */ +#define K_CLIDR_Ctype_DC 2 /* Data cache only */ +#define K_CLIDR_Ctype_ID 3 /* Seperate instruction and data caches, Harvard cache */ +#define K_CLIDR_Ctype_U 4 /* Unified cache, von Neumann cacge */ + +/* + ************************************************************************ + * Cache Size Selection Register, CCSELR (cp15, 2, c0, c0, 0) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |Reserved |Level|I| + * | | |n| + * | | |D| + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_CCSELR_Level 1 +#define M_CCSELR_Level (0x7 << S_CCSELR_Level) /* Cache level */ +#define S_CCSELR_InD 0 +#define M_CCSELR_InD (0x1 << S_CCSELR_InD) /* I$ or D$ */ + +/* + ************************************************************************ + * System Control Register, SCTLR (cp15, 0, c1, c0, 0) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |R|T|A|T|N|0|E|V|1|U|F|U|W|1|H|1|0|R|V|I|Z|S|0|0|B|1|B|1|1|C|A|M| + * | |E|F|R|M| |E|E| | |I|W|X| |A| | | | | | |W| | | | |E| | | | | | + * | | |E|E|F| | | | | | |X|N| | | | | | | | | | | | | |N| | | | | | + * | | | | |I| | | | | | |N| | | | | | | | | | | | | | | | | | | | | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_SCTLR_TE 30 +#define M_SCTLR_TE (0x1 << S_SCTLR_TE) /* Thumb exception enable */ +#define S_SCTLR_AFE 29 +#define M_SCTLR_AFE (0x1 << S_SCTLR_AFE) /* Access flag enable */ +#define S_SCTLR_TRE 28 +#define M_SCTLR_TRE (0x1 << S_SCTLR_TRE) /* TXE remap enable */ +#define S_SCTLR_NMFI 27 +#define M_SCTLR_NMFI (0x1 << S_SCTLR_NMFI) /* None-maskable FIQ enbale (RO) */ +#define S_SCTLR_EE 25 +#define M_SCTLR_EE (0x1 << S_SCTLR_EE) /* Exception Endianness: big-endian */ +#define S_SCTLR_VE 24 +#define M_SCTLR_VE (0x1 << S_SCTLR_VE) /* Interrupt Vector Enable */ +#define S_SCTLR_FI 21 +#define M_SCTLR_FI (0x1 << S_SCTLR_FI) /* Fast interrupt configuraiont enable */ +#define S_SCTLR_UWXN 20 +#define M_SCTLR_UWXN (0x1 << S_SCTLR_UWXN) /* */ +#define S_SCTLR_WXN 19 +#define M_SCTLR_WXN (0x1 << S_SCTLR_WXN) +#define S_SCTLR_HA 17 +#define M_SCTLR_HA (0x1 << S_SCTLR_HA) /* Hardware access flag enable */ +#define S_SCTLR_RR 14 +#define M_SCTLR_RR (0x1 << S_SCTLR_RR) /* Round-robin select */ +#define S_SCTLR_V 13 +#define M_SCTLR_V (0x1 << S_SCTLR_V) /* Vector bits */ +#define S_SCTLR_I 12 +#define M_SCTLR_I (0x1 << S_SCTLR_I) /* Instruction cache enable */ +#define S_SCTLR_Z 11 +#define M_SCTLR_Z (0x1 << S_SCTLR_Z) /* Branch prediction enable */ +#define S_SCTLR_SW 10 +#define M_SCTLR_SW (0x1 << S_SCTLR_SW) /* SW and SWP enable */ +#define S_SCTLR_CP15BEN 5 +#define M_SCTLR_CP15BEN (0x1 << S_SCTLR_CP15BEN) /* CP15 barrier support */ +#define S_SCTLR_C 2 +#define M_SCTLR_C (0x1 << S_SCTLR_C) /* Data and Unidied cache enable */ +#define S_SCTLR_A 1 +#define M_SCTLR_A (0x1 << S_SCTLR_A) /* Alignment fault checking enable */ +#define S_SCTLR_M 0 +#define M_SCTLR_M (0x1 << S_SCTLR_M) /* PL1&0 stage MMU enable */ + +/************************************************************************ + * Auxiliary Control Register, ACTLR (cp15, 0, c1, c0, 1) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |UNP/SBZP |P|A|E|S|RAZ|W|L|L|F| + * | |a|l|X|M| | |1|2|W| + * | |r|l|C|P| |f| | | | + * | | |o|L| | |l|p|p| | + * | |o|c| | | | |r|r| | + * | |n| | | | |z|e|e| | + * | | |o| | | |e|f|f| | + * | | |n| | | |r| | | | + * | | |e| | | |o|e|e| | + * | | | | | | |s|n|n| | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_ACTLR_PAR_ON 9 +#define M_ACTLR_PAR_ON (0x1 << S_ACTLR_PAR_ON) /* Parity on */ +#define S_ACTLR_ALLOC_ONE 8 +#define M_ACTLR_ALLOC_ONE (0x1 << S_ACTLR_ALLOC_ONE) /* Alloc in one way */ +#define S_ACTLR_EXCL 7 +#define M_ACTLR_EXCL (0x1 << S_ACTLR_EXCL) /* Exclusive cache */ +#define S_ACTLR_SMP 6 +#define M_ACTLR_SMP (0x1 << S_ACTLR_SMP) /* SMP */ +#define S_ACTLR_W_FL_ZEROS 3 +#define M_ACTLR_W_FL_ZEROS (0x1 << S_ACTLR_W_FL_ZEROS) /* Write full line of zeros mode */ +#define S_ACTLR_L1_PERF_EN 2 +#define M_ACTLR_L1_PERF_EN (0x1 << S_ACTLR_L1_PERF_EN) /* Dside prefetch enable */ +#define S_ACTLR_L2_PERF_EN 1 +#define M_ACTLR_L2_PERF_EN (0x1 << S_ACTLR_L2_PERF_EN) /* L2 prefetch enable */ +#define S_ACTLR_FW 0 +#define M_ACTLR_FW (0x1 << S_ACTLR_FW) /* Cache and TLB maintenance boardcast */ + + diff --git a/board/novatek/na51055/loader/Include/IOReg.h b/board/novatek/na51055/loader/Include/IOReg.h new file mode 100755 index 000000000000..7f4e2f31885e --- /dev/null +++ b/board/novatek/na51055/loader/Include/IOReg.h @@ -0,0 +1,190 @@ +/** + I/O Access header file + + I/O Access header file + + @file IOReg.h + @ingroup mISYSUtil + @note Nothing +*/ + +#ifndef __IO_REG_H +#define __IO_REG_H + +#include "constant.h" +#include "CMacro.h" +#include "Memory.h" + +/** + @addtogroup mISYSUtil +*/ +//@{ + +/** + @name Input 8bit IO register + + Input 8bit IO register + + @param[in] x I/O address + + @return register value +*/ +//@{ +#define INREG8(x) (*((volatile UINT8*)(x))) ///< Read 8bits IO register +//@} + +/** + @name Output 8bit IO register + + Output to 8bit IO register + + @param[in] x I/O address + @param[in] y Value to be output + + @return void +*/ +//@{ +#define OUTREG8(x, y) (*((volatile UINT8*)(x)) = (y)) ///< Write 8bits IO register +//@} + +/** + @name Set bits to 8bit IO register + + Set bits to 8bit IO register + + @param[in] x I/O address + @param[in] y Value to be set. y will be ORed to this address + + @return register value +*/ +//@{ +#define SETREG8(x, y) OUTREG8((x), INREG8(x) | (y)) ///< Set 8bits IO register +//@} + +/** + @name Clear bits from 8bit IO register + + Clear bits from 8bit IO register + + @param[in] x I/O address + @param[in] y Value to be clear. ~(y) will be ANDed to this address + + @return register value +*/ +//@{ +#define CLRREG8(x, y) OUTREG8((x), INREG8(x) & ~(y)) ///< Clear 8bits IO register +//@} + +/** + @name Input 16bit IO register + + Input 16bit IO register + + @param[in] x I/O address (should be 2 bytes alignment) + + @return register value +*/ +//@{ +#define INREG16(x) (*((volatile UINT16*)(x))) ///< Read 16bits IO register +//@} + +/** + @name Output 16bit IO register + + Output to 16bit IO register + + @param[in] x I/O address (should be 2 bytes alignment) + @param[in] y Value to be output + + @return void +*/ +//@{ +#define OUTREG16(x, y) (*((volatile UINT16*)(x)) = (y)) ///< Write 16bits IO register +//@} + +/** + @name Set bits to 16bit IO register + + Set bits to 16bit IO register + + @param[in] x I/O address (should be 2 bytes alignment) + @param[in] y Value to be set. y will be ORed to this address + + @return register value +*/ +//@{ +#define SETREG16(x, y) OUTREG16((x), INREG16(x) | (y)) ///< Set 16bits IO register +//@} + +/** + @name Clear bits from 16bit IO register + + Clear bits from 16bit IO register + + @param[in] x I/O address (should be 2 bytes alignment) + @param[in] y Value to be clear. ~(y) will be ANDed to this address + + @return register value +*/ +//@{ +#define CLRREG16(x, y) OUTREG16((x), INREG16(x) & ~(y)) ///< Clear 16bits IO register +//@} + +/** + @name Input 32bit IO register + + Input 32bit IO register + + @param[in] x I/O address (should be 4 bytes alignment) + + @return register value +*/ +//@{ +#define INREG32(x) (*((volatile UINT32*)(x))) ///< Read 32bits IO register +//@} + +/** + @name Output 32bit IO register + + Output to 32bit IO register + + @param[in] x I/O address (should be 4 bytes alignment) + @param[in] y Value to be output + + @return void +*/ +//@{ +#define OUTREG32(x, y) (*((volatile UINT32*)(x)) = (y)) ///< Write 32bits IO register +//@} + +/** + @name Set bits to 32bit IO register + + Set bits to 32bit IO register + + @param[in] x I/O address (should be 4 bytes alignment) + @param[in] y Value to be set. y will be ORed to this address + + @return register value +*/ +//@{ +#define SETREG32(x, y) OUTREG32((x), INREG32(x) | (y)) ///< Set 32bits IO register +//@} + +/** + @name Clear bits from 32bit IO register + + Clear bits from 32bit IO register + + @param[in] x I/O address (should be 4 bytes alignment) + @param[in] y Value to be clear. ~(y) will be ANDed to this address + + @return register value +*/ +//@{ +#define CLRREG32(x, y) OUTREG32((x), INREG32(x) & ~(y)) ///< Clear 32bits IO register +//@} + +//@} + +#endif // __IO_REG_H diff --git a/board/novatek/na51055/loader/Include/SMacro.h b/board/novatek/na51055/loader/Include/SMacro.h new file mode 100755 index 000000000000..372ea3898671 --- /dev/null +++ b/board/novatek/na51055/loader/Include/SMacro.h @@ -0,0 +1,129 @@ +; Global vars for arg parsing + + GBLS _arg0 + GBLS _arg1 + +; _spaces_remove +; remove start and end spaces from global variable wstring + + MACRO + _spaces_remove $wstring + WHILE ( ("*" :CC: $wstring) :RIGHT: 1 = " ") +$wstring SETS ($wstring :LEFT: (:LEN: $wstring - 1)) + WEND + WHILE ( ($wstring :CC: "*") :LEFT: 1 = " ") +$wstring SETS ($wstring :RIGHT: (:LEN: $wstring - 1)) + WEND + MEND + +; _lbracket_remove +; Attempt to remove a single left bracket - error if not there + + MACRO + _lbracket_remove $s + ASSERT $s:LEFT:1 = "(" +$s SETS $s:RIGHT:(:LEN:$s-1) + _spaces_remove $s + MEND + +; _rbracket_remove +; Attempt to remove a single right bracket - error if not there +; then removes excess spaces + + MACRO + _rbracket_remove $s + ASSERT $s:RIGHT:1 = ")" +$s SETS $s:LEFT:(:LEN:$s-1) + _spaces_remove $s + MEND + +; _comment_remove +; Remove any comment from line end and then strip any spaces + + MACRO + _comment_remove $s + _spaces_remove $s + IF (("**":CC:$s):RIGHT:2) = "*/" + WHILE ($s:RIGHT:2) <> "/*" +$s SETS $s:LEFT:(:LEN:$s-1) + WEND +$s SETS $s:LEFT:(:LEN:$s-2) + _spaces_remove $s + ENDIF + MEND + +; _arg_remove +; Pull an argument from the front of a spaces stripped string + + MACRO + _arg_remove $s,$arg + LCLA _arglen + LCLL _ok +_arglen SETA 0 +_ok SETL {TRUE} + WHILE _ok + IF _arglen>=:LEN:$s +_ok SETL {FALSE} ; break if used up input string + ELSE +$arg SETS ($s:LEFT:(_arglen+1)):RIGHT:1 ; next character + IF $arg=" " +_ok SETL {FALSE} + ELSE +_arglen SETA _arglen+1 + ENDIF + ENDIF + WEND +$arg SETS $s:LEFT:_arglen +$s SETS $s:RIGHT:(:LEN:$s-_arglen) + _spaces_remove $s + MEND + +; ifndef +; Purpose: Allow #ifndef for common C headers (Just for guarded C header file) +; Syntax : #ifndef + + MACRO + ifndef $a + MEND + +; define +; Purpose: Allow #defines for common C/Assembler headers +; Syntax : #define + + MACRO +$la define $a +_arg0 SETS "$a" + ASSERT "$la"="#" ; syntax: # define fred 1 + _comment_remove _arg0 + _arg_remove _arg0,_arg1 + IF "$_arg0"<>"" +$_arg1 EQU $_arg0 + ENDIF + MEND + + +; COMMENT +; Purpose: Allow comments in common C/Assembler headers +; Syntax : COMMENT + + MACRO + COMMENT $a,$b,$c,$d,$e,$f,$g,$h + MEND + +; local labels use label$l to get a local label and LOCAL to start a new +; area + + GBLA LocalCount + GBLS l +LocalCount SETA 1 +l SETS "x$LocalCount" + +; increment local variable number + + MACRO + LOCAL +LocalCount SETA LocalCount+1 +l SETS "x$LocalCount" + MEND + + END diff --git a/board/novatek/na51055/loader/Include/StorageDef.h b/board/novatek/na51055/loader/Include/StorageDef.h new file mode 100755 index 000000000000..cd1c9f444f8e --- /dev/null +++ b/board/novatek/na51055/loader/Include/StorageDef.h @@ -0,0 +1,446 @@ +/** + Storage module driver. + + This file is the driver of storage module. + + @file StorageDef.h + @ingroup mIDrvStorage + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _STORAGE_DEF_ +#define _STORAGE_DEF_ + +#include "constant.h" + +#define _STORAGE_OBJ_ 1 +/** + @addtogroup mIDrvStorage +*/ +//@{ + +/** + @name External storage type + +*/ +//@{ +#define EXT_STORAGE_TYPE_NONE (0) +#define EXT_STORAGE_TYPE_SDIO1 (1) +#define EXT_STORAGE_TYPE_SDIO2 (2) +#define EXT_STORAGE_TYPE_USB (3) +#define EXT_STORAGE_TYPE_ETH (4) +//*} + +/** + @name SPI Quad read type + + @note for SPI_IDENTIFY +*/ +//@{ +#define SPI_QUAD_NONE 0 ///< Not support +#define SPI_QUAD_TYPE1 1 ///< Support quad read, QE(Quad Enable) bit is in Status Reigster[bit 6] and 0x6B command requires 8 dummy clocks. +#define SPI_QUAD_TYPE2 2 ///< Support quad read, QE(Quad Enable) bit is in Status Register[bit 9] and 0x6B command requires 8 dummy clocks. +#define SPI_QUAD_TYPE3 3 ///< Support quad read, QE(Quad Enable) NOT exist and 0x6B command requires 8 dummy clocks +#define SPI_QUAD_TYPE4 4 ///< Support quad read, QE(Quad Enable) bit is in Status Register[bit 9] and 0x6B command requires 8 dummy clocks. + ///< But QE should be modified by 0x31 command +//@} + + +/** + @name SPI RDCR read type + + @note for SPI_IDENTIFY +*/ +//@{ +#define SPI_RDCR_NONE 0 ///< Not support +#define SPI_RDCR_TYPE1 1 ///< Support RDCR(0x15) bit[7..6] need config as 0x3 + +//@} + +/** + SPI flash identify descriptor + + @note For STRG_IDENTIFY_CB +*/ +typedef struct +{ + BOOL bSupportEWSR; ///< EWSR(0x50) command capability + ///< - @b TRUE: support EWSR command + ///< - @b FALSE: NOT support EWSR command + BOOL bSupportAAI; ///< AAI program(0xAD) command capability + ///< - @b TRUE: ONLY support AAI program command + ///< - @b FALSE: NOT support AAI program command, but support page program command + BOOL bDualRead; ///< Dual read (0x3B) command capability + ///< - @b TRUE: support dual read comand. (Command value should be 0x3B.) + ///< - @b FALSE: NOT support dual read command + UINT32 uiQuadReadType; ///< Quad read type capability. (ONLY support quad command 0x6B) + ///< - @b SPI_QUAD_NONE: NOT support quad read command + ///< - @b SPI_QUAD_TYPE1: Support quad read command, QE in Status Register bit 6 + ///< - @b SPI_QUAD_TYPE2: Support quad read command, QE in Status Register bit 9 + ///< - @b SPI_QUAD_TYPE3: Support quad read command, QE NOT exist + ///< - @b SPI_QUAD_TYPE4: Support quad read command, QE in Status Register bit 9 (but need 0x31 command) + UINT32 uiFlashSize; ///< Flash total byte size. (unit: byte) +} SPI_IDENTIFY, *PSPI_IDENTIFY; + +/** + @name Storage Access CallBack + + Storage Access CallBack Prototype + + @return void +*/ +//@{ +typedef void (*STRG_ACCESS_CB)(void); ///< Storage access call back prototype +//@} + +/** + @name Storage Identify CallBack + + Storage Identify CallBack Prototype + + @param[in] UINT32 uiMfgID (JEDEC) manufacturer ID read from spi flash + @param[in] UINT32 uiTypeID (JEDEC) type ID read from spi flash + @param[in] UINT32 uiCapacityID (JEDEC) capacity ID read from spi flash + @param[out] PSPI_IDENTIFY flash identification returned to spi flash driver + + @return + - @b TRUE: call back will handle identification of this flash. and PSPI_IDENTIFY will fill identifed information + - @b FALSE: input ID is NOT supported/identified by call back +*/ +//@{ +typedef BOOL (*STRG_IDENTIFY_CB)(UINT32, UINT32, UINT32, PSPI_IDENTIFY); ///< Storage identify call back prototype +//@} + +/** + @name Storage return value + + @note for flash_open(), flash_readSectors(), and flash_writeSectors() +*/ +//@{ +#define E_OK 0 ///< Success +#define E_NAND_IDENTIFY_ERR -1 ///< Read NAND ID (information) error +#define E_NAND_INSUFFICINET_BLK -2 ///< Bad block is too much to write data +#define E_NAND_BLK_NOT_FOUND -3 ///< Logic block number not found in physical block +#define E_NAND_WRITE_PAGEDATA_ERR -4 ///< Logic block number not found in physical block +#define E_NAND_ERASEE_BLK_ERR -5 ///< NAND erase block error +#define E_NAND_READ_PAGE_ERR -6 ///< NAND read page data error +#define E_NAND_READ_BLK_ERR -7 ///< NAND read block data error +#define E_NAND_ID_NOT_SUPPORT -8 ///< Not support NAND ID +#define E_IDENTIFY_ERR -9 ///< SPI IDENTIFY error +#define E_SYS -10 ///< System Error +#define E_NAND_ALIGN_ERR -11 ///< Not block alignment +#define E_OK_TABLE_FOUND 1 ///< Success & NAND table find +#define E_OK_TABLE_NOT_FOUND 2 ///< Success & NAND table not find +//@} + +/** + @name Internal Storage Update Region + + @note for flash_readSectors(), and flash_writeSectors() +*/ +//@{ +#define NAND_RW_LOADER 0 ///< Update Region is Loader (Update size is assumed 16 KB) +#define NAND_RW_RESERVED 1 ///< Update Region is reserved area (Update size is assumed 16 KB) +#define NAND_RW_FIRMWARE 2 ///< Update Region is FW (Update size is variable) +#define NAND_RW_FIRMWARE_2 3 ///< Update Region is FW from 2-5(Update size is variable) +#define NAND_RW_FIRMWARE_3 4 ///< Update Region is FW from 2-5(Update size is variable) +#define NAND_RW_FIRMWARE_4 5 ///< Update Region is FW from 2-5(Update size is variable) +#define NAND_RW_FIRMWARE_5 6 ///< Update Region is FW from 2-5(Update size is variable) +//@} + +/** + @name Internal Storage Configuration ID + + @note for flash_setConfig() +*/ +//@{ +#define FLASH_CFG_ID_NONE 0 +#define FLASH_CFG_ID_SPI_SUPPORT_4BITS 1 ///< Enable your project to support 4 bit SPI flash. ONLY enable when you ENSURE SPI_D0~SPI_D3 are connected to SPI flash in your PCB!!! +#define FLASH_CFG_ID_EMMC_SUPPORT_8BITS 2 ///< Enable your project to support 8 bit EMMC. ONLY enable when you ENSURE EMMC_D0~SPI_D7 are connected to EMMC flash in your PCB!!! +#define FLASH_CFG_ID_CS_SELECT 3 ///< Select this flash (nand/nor) is connected with CS0 or CS1 +#define FLASH_CFG_ID_SPI_IDENTIFY_CB 4 ///< Install flash identify call back +//@} + +#if (_STORAGE_OBJ_== 1) + + +#define BOOT_SOURCE_SPI 0x00 +#define BOOT_SOURCE_SPI_NAND_2K 0x02 +#define BOOT_SOURCE_SPI_NAND_4K 0x06 +#define BOOT_SOURCE_EMMC_4BIT 0x08 +#define BOOT_SOURCE_EMMC_8BIT 0x09 + +/** + @name New storage object interface + + For new version storage device driver +*/ +//@{ +typedef struct { + INT32(*flash_open)(void); ///< Flash Open + void(*flash_close)(void); ///< Flash Close + INT32(*flash_readSectors)(UINT32, UINT32, UINT8 *,UINT32); ///< Flash Read Sector + INT32(*flash_writeSectors)(UINT32, UINT32, UINT8 *, UINT32); ///< Flash Write Sector + UINT32(*flash_getBlockSize)(void); ///< Flash Get Block Size + void(*flash_setReservedBadBlockNumber)(UINT32); ///< Flash Set Reserved Bad Block Number + void(*flash_setReservedAreaMaxBlockNumber)(UINT32); ///< Flash Set Reserved Area Block Number + UINT64(*flash_getTotalSize)(void); + void(*flash_installAccessCB)(STRG_ACCESS_CB); + void(*flash_installIdentifyCB)(STRG_IDENTIFY_CB); + void(*flash_setFrequency)(UINT32); + INT32(*flash_setConfig)(UINT32, UINT32); + INT32(*flash_get_spare_data)(UINT32, UINT32 *); +} STORAGE_OBJ, *PSTORAGE_OBJ; + +extern PSTORAGE_OBJ emmc_get_storage_object(void); +extern PSTORAGE_OBJ nand_get_storage_object(void); +extern PSTORAGE_OBJ nor_get_storage_object(void); + +//@} +#else +#define FLASH_OPEN(m) flash_open() +#define FLASH_CLOSE(m) flash_close() +#define FLASH_READSECTOR(m, n, o, x, y) flash_readSectors(n,o,x,y) ///< Flash Read Sector +#define FLASH_WRITESECTOR(m, n, o, x, y) flash_writeSectors(n,o,x,y) ///< Flash Write Sector +#define FLASH_GETBLKSIZE(m) flash_getBlockSize() + + void(*flash_setReservedBadBlockNumber)(UINT32); ///< Flash Set Reserved Bad Block Number + void(*flash_setReservedAreaMaxBlockNumber)(UINT32); ///< Flash Set Reserved Area Block Number + UINT64(*flash_getTotalSize)(void); + void(*flash_installAccessCB)(STRG_ACCESS_CB); + void(*flash_installIdentifyCB)(STRG_IDENTIFY_CB); + void(*flash_setFrequency)(UINT32); + INT32(*flash_setConfig)(UINT32, UINT32); +} STORAGE_OBJ, *PSTORAGE_OBJ; + +/** + Flash Open + + This function will initialize internal flash driver + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @return + - @b E_OK: open success + - @b E_IDENTIFY_ERR: identify fail (SPI path) + - @b E_NAND_IDENTIFY_ERR: identify fail (NAND path) + - @b E_NAND_ID_NOT_SUPPORT: not supported NAND flash +*/ +extern INT32 flash_open(void); +/** + Flash Close + + This function will close internal flash driver + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @return void +*/ +extern void flash_close(void); + +/** + Flash Read Sector + + This function will read data from internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] startblk Start block of this read operation (unit: flash block) + @param[in] length Length of read operation (unit: byte) + @param[out] buffer Pointer to DRAM buffer to receive read data (word alignment) + @param[in] updateType Operation Access Region + - @b NAND_RW_LOADER: loader region + - @b NAND_RW_RESERVED: reserved area + - @b NAND_RW_FIRMWARE: f/w region + + @return + - @b E_OK: read success + - @b E_NAND_BLK_NOT_FOUND: can not find available physical block + - @b E_NAND_READ_BLK_ERR: NAND access block error + - @b E_NAND_READ_PAGE_ERR: NAND access page error +*/ +extern INT32 flash_readSectors(UINT32 startblk, UINT32 length, UINT8 * buffer, UINT32 updateType); + +/** + Flash Write Sector + + This function will write data to internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] startblk Start block of this write operation (unit: flash block) + @param[in] length Length of write operation (unit: byte) + @param[in] buffer Pointer to DRAM buffer of written data (word alignment) + @param[in] updateType Operation Access Region + - @b NAND_RW_LOADER: loader region + - @b NAND_RW_RESERVED: reserved area + - @b NAND_RW_FIRMWARE: f/w region + + @return + - @b E_OK: read success + - @b E_NAND_BLK_NOT_FOUND: can not find available physical block + - @b E_NAND_ERASEE_BLK_ERR: erase block error + - @b E_NAND_WRITE_PAGEDATA_ERR: page program error + - @b E_NAND_INSUFFICINET_BLK: insufficient good block +*/ +extern INT32 flash_writeSectors(UINT32 startblk, UINT32 length, UINT8 * buffer, UINT32 updateType); + +/** + Flash Get Block Size + + This function will return block size of attached internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @return block size (unit: byte) +*/ +extern UINT32 flash_getBlockSize(void); + +/** + Flash Set Reserved Bad Block Number + + This function will set block count reserved to do bad block replacement + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] badBlkNum reserved bad block count (unit: block) + + @return void +*/ +extern void flash_setReservedBadBlockNumber(UINT32 badBlkNum); + +//#NT#2010/04/20#Steven Wang -begin +//#NT#Autumn reserved area from 2 ~ 23 +/** + Flash Set Reserved Area Block Number + + This function will set reserved area max block count + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] RsvMaxBlkNum max reserved area block count (unit: block) + + @return void +*/ +extern void flash_setReservedAreaMaxBlockNumber(UINT32 RsvMaxBlkNum); +//#NT#2010/04/20#Steven Wang -end + +/** + Flash Get Total Size + + This function will return total size of attached internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @return total size (unit: byte) +*/ +extern UINT64 flash_getTotalSize(void); + +/** + Install Flash Access CallBack + + This function will install access callback. + The installed callback will be invoked when one block/page is programmed + + @note card is selected by STORAGEEXT in MakeConfig.txt + + @param[in] accessCB installed callback + + @return void +*/ +extern void flash_installAccessCB(STRG_ACCESS_CB accessCB); + +/** + Install Flash Identify CallBack + + This function will install identification callback. + The installed callback will be invoked when spi flash driver is opened. + + @note NAND driver will NOT invoke the installed call back + + @param[in] identifyCB installed callback + + @return void +*/ +extern void flash_installIdentifyCB(STRG_IDENTIFY_CB identifyCB); + +/** + Flash Set Bus Frequency + + This function will set operating frequency of attached internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] uiFreq Operating frequency (unit: MHz) + + @return void +*/ +extern void flash_setFrequency(UINT32 uiFreq); + +/** + Flash Set Configuration + + This function will set specific configuration for internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] uiConfigId Configuration ID, can be: + - @b FLASH_CFG_ID_SPI_SUPPORT_4BITS: configure to support 4 bit SPI flash + @param[in] uiContext Configuration context for uiConfigId + When uiConfigId == FLASH_CFG_ID_SPI_SUPPORT_4BITS: + - @b TRUE: use 4 bit read when attached SPI flash support 4 bit read + - @b FALSE: won't use 4 bit read + + @return + - @b E_OK: success + - @b Else: fail +*/ +extern INT32 flash_setConfig(UINT32 uiConfigId, UINT32 uiContext); +#endif +// External storage public API ( SDIO/MS/xD ) +/** + Open card driver + + This function will initialize card driver and register it to file system + + @note card is selected by STORAGEEXT in MakeConfig.txt + + @return + - @b TRUE: open success + - @b FALSE: open fail +*/ +extern INT32 card_open(void); + +/** + Close card driver + + This function will close card driver + + @note card is selected by STORAGEEXT in MakeConfig.txt + + @return void +*/ +extern void card_close(void); + +/** + Get card type + + This function is used to get card storage type + + @note card is selected by STORAGEEXT in MakeConfig.txt + + @return void +*/ + +extern UINT32 card_get_type(void); + +//@} + +extern void USBOTGReset(void); +//extern INT32 USB3Download(void); +extern INT32 USBDownload(void); +extern void USBSetResult(UINT32 uiResult); +extern INT32 USBStateMachine(void); +#endif diff --git a/board/novatek/na51055/loader/Include/Type.h b/board/novatek/na51055/loader/Include/Type.h new file mode 100755 index 000000000000..74a00059eaaa --- /dev/null +++ b/board/novatek/na51055/loader/Include/Type.h @@ -0,0 +1,9 @@ +#ifndef __TYPE_H +#define __TYPE_H + +#include +//#include + +#define _ALIGNED(x) __attribute__((aligned(x))) + +#endif // __TYPE_H diff --git a/board/novatek/na51055/loader/Include/constant.h b/board/novatek/na51055/loader/Include/constant.h new file mode 100755 index 000000000000..3dea2682ef8d --- /dev/null +++ b/board/novatek/na51055/loader/Include/constant.h @@ -0,0 +1,112 @@ +#ifndef _CONSTANT_H +#define _CONSTANT_H + +//Size MNEMONIC + +#define SZ_1 (1 << 0) /* 0x00000001 */ +#define SZ_2 (1 << 1) /* 0x00000002 */ +#define SZ_4 (1 << 2) /* 0x00000004 */ +#define SZ_8 (1 << 3) /* 0x00000008 */ +#define SZ_16 (1 << 4) /* 0x00000010 */ +#define SZ_32 (1 << 5) /* 0x00000020 */ +#define SZ_64 (1 << 6) /* 0x00000040 */ +#define SZ_128 (1 << 7) /* 0x00000080 */ +#define SZ_256 (1 << 8) /* 0x00000100 */ +#define SZ_512 (1 << 9) /* 0x00000200 */ + +#define SZ_1K (1 << 10) /* 0x00000400 */ +#define SZ_2K (1 << 11) /* 0x00000800 */ +#define SZ_4K (1 << 12) /* 0x00001000 */ +#define SZ_8K (1 << 13) /* 0x00002000 */ +#define SZ_16K (1 << 14) /* 0x00004000 */ +#define SZ_32K (1 << 15) /* 0x00008000 */ +#define SZ_64K (1 << 16) /* 0x00010000 */ +#define SZ_128K (1 << 17) /* 0x00020000 */ +#define SZ_256K (1 << 18) /* 0x00040000 */ +#define SZ_512K (1 << 19) /* 0x00080000 */ + +#define SZ_1M (1 << 20) /* 0x00100000 */ +#define SZ_2M (1 << 21) /* 0x00200000 */ +#define SZ_4M (1 << 22) /* 0x00400000 */ +#define SZ_8M (1 << 23) /* 0x00800000 */ +#define SZ_16M (1 << 24) /* 0x01000000 */ +#define SZ_32M (1 << 25) /* 0x02000000 */ +#define SZ_64M (1 << 26) /* 0x04000000 */ +#define SZ_128M (1 << 27) /* 0x08000000 */ +#define SZ_256M (1 << 28) /* 0x10000000 */ +#define SZ_512M (1 << 29) /* 0x20000000 */ + +#define SZ_1G (1 << 30) /* 0x40000000 */ +#define SZ_2G (1 << 31) /* 0x80000000 */ + +#define SZ_30M (SZ_32M - SZ_2M) + +// ASCII code + +#define CR 0x0D +#define LF 0x0A +#define BS 0x08 +#define ESC 27 + +// Boolean constant definition + +#if 0 +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif +#endif + +#ifndef NULL +#define NULL 0 +#endif + +#ifndef ON +#define ON 1 +#endif + +#ifndef OFF +#define OFF 0 +#endif + +#ifndef ENABLE +#define ENABLE 1 +#endif + +#ifndef DISABLE +#define DISABLE 0 +#endif + +#ifndef DISK_FULL +#define DISK_FULL (-1) +#endif + +// type declaration + +typedef int BOOLEAN; +typedef unsigned long long UINT64; +typedef long long INT64; +typedef unsigned long UINT32; +typedef long INT32; +typedef unsigned short UINT16; +typedef short INT16; +typedef unsigned char UINT8; +typedef char INT8; +typedef unsigned long long u64; +typedef unsigned int u32; +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int uint; +typedef unsigned short ushort; +typedef unsigned char uchar; +typedef unsigned int UINT; +typedef int INT; + +typedef enum {FALSE, TRUE} BOOL; + +// error codes +typedef long ER; + +#endif diff --git a/board/novatek/na51055/loader/Include/ctype.h b/board/novatek/na51055/loader/Include/ctype.h new file mode 100755 index 000000000000..dbbc7cf7dd9c --- /dev/null +++ b/board/novatek/na51055/loader/Include/ctype.h @@ -0,0 +1,36 @@ + + +#ifndef NVT_CTYPES_H__ +#define NVT_CTYPES_H__ + + +#define _U 0x01 /* upper */ +#define _L 0x02 /* lower */ +#define _D 0x04 /* digit */ +#define _C 0x08 /* cntrl */ +#define _P 0x10 /* punct */ +#define _S 0x20 /* white space (space/lf/tab) */ +#define _X 0x40 /* hex digit */ +#define _SP 0x80 /* hard space (0x20) */ + +extern unsigned char _ctype[]; + +#define __ismask(x) (_ctype[(int)(unsigned char)(x)]) + +#define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) +#define isalpha(c) ((__ismask(c)&(_U|_L)) != 0) +#define iscntrl(c) ((__ismask(c)&(_C)) != 0) +#define isdigit(c) ((__ismask(c)&(_D)) != 0) +#define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0) +#define islower(c) ((__ismask(c)&(_L)) != 0) +#define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0) +#define ispunct(c) ((__ismask(c)&(_P)) != 0) +#define isspace(c) ((__ismask(c)&(_S)) != 0) +#define isupper(c) ((__ismask(c)&(_U)) != 0) +#define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0) + +#define isascii(c) (((unsigned char)(c))<=0x7f) +#define toascii(c) (((unsigned char)(c))&0x7f) + + +#endif diff --git a/board/novatek/na51055/loader/Include/debug.h b/board/novatek/na51055/loader/Include/debug.h new file mode 100755 index 000000000000..e5a72564556d --- /dev/null +++ b/board/novatek/na51055/loader/Include/debug.h @@ -0,0 +1,29 @@ +/** + string header + + string header + + @file string.h + @ingroup mISYSClib + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef __NVT_DEBUG_H__ +#define __NVT_DEBUG_H__ + +/** \addtogroup mISYSClib */ +//@{ + +extern void debug_err(char *str); +extern void debug_err_var(char *str, int var); +extern void debug_msg(char *str) __attribute__ ((section (".part1"))); +extern void debug_msg_var(char *str, int var) __attribute__ ((section (".part1"))); +extern void debug_dump_addr(UINT32 addr, UINT32 size); + + +//@} + +#endif + diff --git a/board/novatek/na51055/loader/Include/fat.h b/board/novatek/na51055/loader/Include/fat.h new file mode 100755 index 000000000000..f1082903ea32 --- /dev/null +++ b/board/novatek/na51055/loader/Include/fat.h @@ -0,0 +1,48 @@ +/** + File system library + + This file is the library of file system + + @file fat.h + @ingroup mISYSFile + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _FAT_H +#define _FAT_H + +#include "constant.h" +#include "StorageDef.h" + +/** + @addtogroup mISYSFile +*/ +//@{ + +#define FAT_READ_TOTAL_FILE_LENGTH 0 + +typedef void (*TOGGLE_LED)(UINT8 WithCount); + +extern BOOL fat_initFAT(UINT32 uiBuf, UINT32 uiSize); +extern UINT32 fat_getPartitionCount(void); +extern BOOL fat_mountPartition(UINT32 partition_id); +extern void fat_closeFAT(void); +extern BOOL fat_open_rootfile(UINT8 *pfilename); +extern UINT32 fat_read_rootfile(UINT8 *pbuf, UINT32 uiRdLen); +extern UINT32 fat_getRootfileSize(void); +extern void fat_close_rootfile(void); +extern void fat_regToggleLED(TOGGLE_LED pToggleLED); +extern void fat_installAccessCB(STRG_ACCESS_CB accessCB); + +// For SD registration +extern BOOL fat_internal_initFAT(UINT32 uiBuf, UINT32 uiSize); +extern BOOL fat_internal_open_rootfile(UINT8 *pfilename); +extern UINT32 fat_internal_read_rootfile(UINT8 *pbuf, UINT32 uiRdLen); +extern void fat_internal_close_rootfile(void); + +//@} + +#endif + diff --git a/board/novatek/na51055/loader/Include/fdt/compiler.h b/board/novatek/na51055/loader/Include/fdt/compiler.h new file mode 100755 index 000000000000..7fa9b3831ab4 --- /dev/null +++ b/board/novatek/na51055/loader/Include/fdt/compiler.h @@ -0,0 +1,56 @@ +/* + * Keep all the ugly #ifdef for system stuff here + */ + +#ifndef __COMPILER_H__ +#define __COMPILER_H__ + +#ifndef NULL +#define NULL 0 +#endif + +#if 0 +#define uswap_16(x) (x) +#define uswap_32(x) (x) +#define _uswap_64(x, sfx) (x) +#else +#define uswap_16(x) \ + ((((x) & 0xff00) >> 8) | \ + (((x) & 0x00ff) << 8)) +#define uswap_32(x) \ + ((((x) & 0xff000000) >> 24) | \ + (((x) & 0x00ff0000) >> 8) | \ + (((x) & 0x0000ff00) << 8) | \ + (((x) & 0x000000ff) << 24)) +#define _uswap_64(x, sfx) \ + ((((x) & 0xff00000000000000##sfx) >> 56) | \ + (((x) & 0x00ff000000000000##sfx) >> 40) | \ + (((x) & 0x0000ff0000000000##sfx) >> 24) | \ + (((x) & 0x000000ff00000000##sfx) >> 8) | \ + (((x) & 0x00000000ff000000##sfx) << 8) | \ + (((x) & 0x0000000000ff0000##sfx) << 24) | \ + (((x) & 0x000000000000ff00##sfx) << 40) | \ + (((x) & 0x00000000000000ff##sfx) << 56)) +#endif +#if defined(__GNUC__) +#define uswap_64(x) _uswap_64(x, ull) +#else +#define uswap_64(x) _uswap_64(x, ) +#endif +#define cpu_to_le16(x) (x) +#define cpu_to_le32(x) (x) +#define cpu_to_le64(x) (x) +#define le16_to_cpu(x) (x) +#define le32_to_cpu(x) (x) +#define le64_to_cpu(x) (x) +#define cpu_to_be16(x) uswap_16(x) +#define cpu_to_be32(x) uswap_32(x) +#define cpu_to_be64(x) uswap_64(x) +#define be16_to_cpu(x) uswap_16(x) +#define be32_to_cpu(x) uswap_32(x) +#define be64_to_cpu(x) uswap_64(x) + +/* Type for `void *' pointers. */ +typedef unsigned long int uintptr_t; + +#endif diff --git a/board/novatek/na51055/loader/Include/fdt/fdt.h b/board/novatek/na51055/loader/Include/fdt/fdt.h new file mode 100755 index 000000000000..0187749f19b6 --- /dev/null +++ b/board/novatek/na51055/loader/Include/fdt/fdt.h @@ -0,0 +1,111 @@ +#ifndef _FDT_H +#define _FDT_H +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * Copyright 2012 Kim Phillips, Freescale Semiconductor. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __ASSEMBLY__ + +struct fdt_header { + fdt32_t magic; /* magic word FDT_MAGIC */ + fdt32_t totalsize; /* total size of DT block */ + fdt32_t off_dt_struct; /* offset to structure */ + fdt32_t off_dt_strings; /* offset to strings */ + fdt32_t off_mem_rsvmap; /* offset to memory reserve map */ + fdt32_t version; /* format version */ + fdt32_t last_comp_version; /* last compatible version */ + + /* version 2 fields below */ + fdt32_t boot_cpuid_phys; /* Which physical CPU id we're + booting on */ + /* version 3 fields below */ + fdt32_t size_dt_strings; /* size of the strings block */ + + /* version 17 fields below */ + fdt32_t size_dt_struct; /* size of the structure block */ +}; + +struct fdt_reserve_entry { + fdt64_t address; + fdt64_t size; +}; + +struct fdt_node_header { + fdt32_t tag; + char name[0]; +}; + +struct fdt_property { + fdt32_t tag; + fdt32_t len; + fdt32_t nameoff; + char data[0]; +}; + +#endif /* !__ASSEMBLY */ + +#define FDT_MAGIC 0xd00dfeed /* 4: version, 4: total size */ +#define FDT_TAGSIZE sizeof(fdt32_t) + +#define FDT_BEGIN_NODE 0x1 /* Start node: full name */ +#define FDT_END_NODE 0x2 /* End node */ +#define FDT_PROP 0x3 /* Property: name off, + size, content */ +#define FDT_NOP 0x4 /* nop */ +#define FDT_END 0x9 + +#define FDT_V1_SIZE (7*sizeof(fdt32_t)) +#define FDT_V2_SIZE (FDT_V1_SIZE + sizeof(fdt32_t)) +#define FDT_V3_SIZE (FDT_V2_SIZE + sizeof(fdt32_t)) +#define FDT_V16_SIZE FDT_V3_SIZE +#define FDT_V17_SIZE (FDT_V16_SIZE + sizeof(fdt32_t)) + +#endif /* _FDT_H */ diff --git a/board/novatek/na51055/loader/Include/fdt/libfdt.h b/board/novatek/na51055/loader/Include/fdt/libfdt.h new file mode 100644 index 000000000000..42c5e9d0e6e5 --- /dev/null +++ b/board/novatek/na51055/loader/Include/fdt/libfdt.h @@ -0,0 +1,1580 @@ +#ifndef _LIBFDT_H +#define _LIBFDT_H +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "libfdt_env.h" +#include "fdt.h" + +#define FDT_FIRST_SUPPORTED_VERSION 0x10 +#define FDT_LAST_SUPPORTED_VERSION 0x11 + +/* Error codes: informative error codes */ +#define FDT_ERR_NOTFOUND 1 + /* FDT_ERR_NOTFOUND: The requested node or property does not exist */ +#define FDT_ERR_EXISTS 2 + /* FDT_ERR_EXISTS: Attemped to create a node or property which + * already exists */ +#define FDT_ERR_NOSPACE 3 + /* FDT_ERR_NOSPACE: Operation needed to expand the device + * tree, but its buffer did not have sufficient space to + * contain the expanded tree. Use fdt_open_into() to move the + * device tree to a buffer with more space. */ + +/* Error codes: codes for bad parameters */ +#define FDT_ERR_BADOFFSET 4 + /* FDT_ERR_BADOFFSET: Function was passed a structure block + * offset which is out-of-bounds, or which points to an + * unsuitable part of the structure for the operation. */ +#define FDT_ERR_BADPATH 5 + /* FDT_ERR_BADPATH: Function was passed a badly formatted path + * (e.g. missing a leading / for a function which requires an + * absolute path) */ +#define FDT_ERR_BADPHANDLE 6 + /* FDT_ERR_BADPHANDLE: Function was passed an invalid phandle + * value. phandle values of 0 and -1 are not permitted. */ +#define FDT_ERR_BADSTATE 7 + /* FDT_ERR_BADSTATE: Function was passed an incomplete device + * tree created by the sequential-write functions, which is + * not sufficiently complete for the requested operation. */ + +/* Error codes: codes for bad device tree blobs */ +#define FDT_ERR_TRUNCATED 8 + /* FDT_ERR_TRUNCATED: Structure block of the given device tree + * ends without an FDT_END tag. */ +#define FDT_ERR_BADMAGIC 9 + /* FDT_ERR_BADMAGIC: Given "device tree" appears not to be a + * device tree at all - it is missing the flattened device + * tree magic number. */ +#define FDT_ERR_BADVERSION 10 + /* FDT_ERR_BADVERSION: Given device tree has a version which + * can't be handled by the requested operation. For + * read-write functions, this may mean that fdt_open_into() is + * required to convert the tree to the expected version. */ +#define FDT_ERR_BADSTRUCTURE 11 + /* FDT_ERR_BADSTRUCTURE: Given device tree has a corrupt + * structure block or other serious error (e.g. misnested + * nodes, or subnodes preceding properties). */ +#define FDT_ERR_BADLAYOUT 12 + /* FDT_ERR_BADLAYOUT: For read-write functions, the given + * device tree has it's sub-blocks in an order that the + * function can't handle (memory reserve map, then structure, + * then strings). Use fdt_open_into() to reorganize the tree + * into a form suitable for the read-write operations. */ + +/* "Can't happen" error indicating a bug in libfdt */ +#define FDT_ERR_INTERNAL 13 + /* FDT_ERR_INTERNAL: libfdt has failed an internal assertion. + * Should never be returned, if it is, it indicates a bug in + * libfdt itself. */ + +#define FDT_ERR_MAX 13 + +/**********************************************************************/ +/* Low-level functions (you probably don't need these) */ +/**********************************************************************/ + +const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen); +static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen) +{ + return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen); +} + +uint32_t fdt_next_tag(const void *fdt, int offset, int *nextoffset); + +/**********************************************************************/ +/* Traversal functions */ +/**********************************************************************/ + +int fdt_next_node(const void *fdt, int offset, int *depth); + +/** + * fdt_first_subnode() - get offset of first direct subnode + * + * @fdt: FDT blob + * @offset: Offset of node to check + * @return offset of first subnode, or -FDT_ERR_NOTFOUND if there is none + */ +int fdt_first_subnode(const void *fdt, int offset); + +/** + * fdt_next_subnode() - get offset of next direct subnode + * + * After first calling fdt_first_subnode(), call this function repeatedly to + * get direct subnodes of a parent node. + * + * @fdt: FDT blob + * @offset: Offset of previous subnode + * @return offset of next subnode, or -FDT_ERR_NOTFOUND if there are no more + * subnodes + */ +int fdt_next_subnode(const void *fdt, int offset); + +/**********************************************************************/ +/* General functions */ +/**********************************************************************/ + +#define fdt_get_header(fdt, field) \ + (fdt32_to_cpu(((const struct fdt_header *)(fdt))->field)) +#define fdt_magic(fdt) (fdt_get_header(fdt, magic)) +#define fdt_totalsize(fdt) (fdt_get_header(fdt, totalsize)) +#define fdt_off_dt_struct(fdt) (fdt_get_header(fdt, off_dt_struct)) +#define fdt_off_dt_strings(fdt) (fdt_get_header(fdt, off_dt_strings)) +#define fdt_off_mem_rsvmap(fdt) (fdt_get_header(fdt, off_mem_rsvmap)) +#define fdt_version(fdt) (fdt_get_header(fdt, version)) +#define fdt_last_comp_version(fdt) (fdt_get_header(fdt, last_comp_version)) +#define fdt_boot_cpuid_phys(fdt) (fdt_get_header(fdt, boot_cpuid_phys)) +#define fdt_size_dt_strings(fdt) (fdt_get_header(fdt, size_dt_strings)) +#define fdt_size_dt_struct(fdt) (fdt_get_header(fdt, size_dt_struct)) + +#define __fdt_set_hdr(name) \ + static inline void fdt_set_##name(void *fdt, uint32_t val) \ + { \ + struct fdt_header *fdth = (struct fdt_header*)fdt; \ + fdth->name = cpu_to_fdt32(val); \ + } +__fdt_set_hdr(magic); +__fdt_set_hdr(totalsize); +__fdt_set_hdr(off_dt_struct); +__fdt_set_hdr(off_dt_strings); +__fdt_set_hdr(off_mem_rsvmap); +__fdt_set_hdr(version); +__fdt_set_hdr(last_comp_version); +__fdt_set_hdr(boot_cpuid_phys); +__fdt_set_hdr(size_dt_strings); +__fdt_set_hdr(size_dt_struct); +#undef __fdt_set_hdr + +/** + * fdt_check_header - sanity check a device tree or possible device tree + * @fdt: pointer to data which might be a flattened device tree + * + * fdt_check_header() checks that the given buffer contains what + * appears to be a flattened device tree with sane information in its + * header. + * + * returns: + * 0, if the buffer appears to contain a valid device tree + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings, as above + */ +int fdt_check_header(const void *fdt); + +/** + * fdt_move - move a device tree around in memory + * @fdt: pointer to the device tree to move + * @buf: pointer to memory where the device is to be moved + * @bufsize: size of the memory space at buf + * + * fdt_move() relocates, if possible, the device tree blob located at + * fdt to the buffer at buf of size bufsize. The buffer may overlap + * with the existing device tree blob at fdt. Therefore, + * fdt_move(fdt, fdt, fdt_totalsize(fdt)) + * should always succeed. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, bufsize is insufficient to contain the device tree + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_move(const void *fdt, void *buf, int bufsize); + +/**********************************************************************/ +/* Read-only functions */ +/**********************************************************************/ + +int fdt_check_full(const void *fdt, size_t bufsize); + +/** + * fdt_string - retrieve a string from the strings block of a device tree + * @fdt: pointer to the device tree blob + * @stroffset: offset of the string within the strings block (native endian) + * + * fdt_string() retrieves a pointer to a single string from the + * strings block of the device tree blob at fdt. + * + * returns: + * a pointer to the string, on success + * NULL, if stroffset is out of bounds + */ +const char *fdt_string(const void *fdt, int stroffset); + +/** + * fdt_num_mem_rsv - retrieve the number of memory reserve map entries + * @fdt: pointer to the device tree blob + * + * Returns the number of entries in the device tree blob's memory + * reservation map. This does not include the terminating 0,0 entry + * or any other (0,0) entries reserved for expansion. + * + * returns: + * the number of entries + */ +int fdt_num_mem_rsv(const void *fdt); + +/** + * fdt_get_mem_rsv - retrieve one memory reserve map entry + * @fdt: pointer to the device tree blob + * @address, @size: pointers to 64-bit variables + * + * On success, *address and *size will contain the address and size of + * the n-th reserve map entry from the device tree blob, in + * native-endian format. + * + * returns: + * 0, on success + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size); + +/** + * fdt_subnode_offset_namelen - find a subnode based on substring + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * @namelen: number of characters of name to consider + * + * Identical to fdt_subnode_offset(), but only examine the first + * namelen characters of name for matching the subnode name. This is + * useful for finding subnodes based on a portion of a larger string, + * such as a full path. + */ +int fdt_subnode_offset_namelen(const void *fdt, int parentoffset, + const char *name, int namelen); +/** + * fdt_subnode_offset - find a subnode of a given node + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * + * fdt_subnode_offset() finds a subnode of the node at structure block + * offset parentoffset with the given name. name may include a unit + * address, in which case fdt_subnode_offset() will find the subnode + * with that unit address, or the unit address may be omitted, in + * which case fdt_subnode_offset() will find an arbitrary subnode + * whose name excluding unit address matches the given name. + * + * returns: + * structure block offset of the requested subnode (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested subnode does not exist + * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_subnode_offset(const void *fdt, int parentoffset, const char *name); + +/** + * fdt_path_offset - find a tree node by its full path + * @fdt: pointer to the device tree blob + * @path: full path of the node to locate + * + * fdt_path_offset() finds a node of a given path in the device tree. + * Each path component may omit the unit address portion, but the + * results of this are undefined if any such path component is + * ambiguous (that is if there are multiple nodes at the relevant + * level matching the given component, differentiated only by unit + * address). + * + * returns: + * structure block offset of the node with the requested path (>=0), on success + * -FDT_ERR_BADPATH, given path does not begin with '/' or is invalid + * -FDT_ERR_NOTFOUND, if the requested node does not exist + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_path_offset(const void *fdt, const char *path); + +/** + * fdt_get_name - retrieve the name of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of the starting node + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_name() retrieves the name (including unit address) of the + * device tree node at structure block offset nodeoffset. If lenp is + * non-NULL, the length of this name is also returned, in the integer + * pointed to by lenp. + * + * returns: + * pointer to the node's name, on success + * If lenp is non-NULL, *lenp contains the length of that name (>=0) + * NULL, on error + * if lenp is non-NULL *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +const char *fdt_get_name(const void *fdt, int nodeoffset, int *lenp); + +/** + * fdt_first_property_offset - find the offset of a node's first property + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of a node + * + * fdt_first_property_offset() finds the first property of the node at + * the given structure block offset. + * + * returns: + * structure block offset of the property (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested node has no properties + * -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_first_property_offset(const void *fdt, int nodeoffset); + +/** + * fdt_next_property_offset - step through a node's properties + * @fdt: pointer to the device tree blob + * @offset: structure block offset of a property + * + * fdt_next_property_offset() finds the property immediately after the + * one at the given structure block offset. This will be a property + * of the same node as the given property. + * + * returns: + * structure block offset of the next property (>=0), on success + * -FDT_ERR_NOTFOUND, if the given property is the last in its node + * -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_next_property_offset(const void *fdt, int offset); + +/** + * fdt_get_property_by_offset - retrieve the property at a given offset + * @fdt: pointer to the device tree blob + * @offset: offset of the property to retrieve + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_property_by_offset() retrieves a pointer to the + * fdt_property structure within the device tree blob at the given + * offset. If lenp is non-NULL, the length of the property value is + * also returned, in the integer pointed to by lenp. + * + * returns: + * pointer to the structure representing the property + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const struct fdt_property *fdt_get_property_by_offset(const void *fdt, + int offset, + int *lenp); + +/** + * fdt_get_property_namelen - find a property based on substring + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @namelen: number of characters of name to consider + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * Identical to fdt_get_property_namelen(), but only examine the first + * namelen characters of name for matching the property name. + */ +const struct fdt_property *fdt_get_property_namelen(const void *fdt, + int nodeoffset, + const char *name, + int namelen, int *lenp); + +/** + * fdt_get_property - find a given property in a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_property() retrieves a pointer to the fdt_property + * structure within the device tree blob corresponding to the property + * named 'name' of the node at offset nodeoffset. If lenp is + * non-NULL, the length of the property value is also returned, in the + * integer pointed to by lenp. + * + * returns: + * pointer to the structure representing the property + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_NOTFOUND, node does not have named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const struct fdt_property *fdt_get_property(const void *fdt, int nodeoffset, + const char *name, int *lenp); +static inline struct fdt_property *fdt_get_property_w(void *fdt, int nodeoffset, + const char *name, + int *lenp) +{ + return (struct fdt_property *)(uintptr_t) + fdt_get_property(fdt, nodeoffset, name, lenp); +} + +/** + * fdt_getprop_by_offset - retrieve the value of a property at a given offset + * @fdt: pointer to the device tree blob + * @ffset: offset of the property to read + * @namep: pointer to a string variable (will be overwritten) or NULL + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_getprop_by_offset() retrieves a pointer to the value of the + * property at structure block offset 'offset' (this will be a pointer + * to within the device blob itself, not a copy of the value). If + * lenp is non-NULL, the length of the property value is also + * returned, in the integer pointed to by lenp. If namep is non-NULL, + * the property's namne will also be returned in the char * pointed to + * by namep (this will be a pointer to within the device tree's string + * block, not a new copy of the name). + * + * returns: + * pointer to the property's value + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * if namep is non-NULL *namep contiains a pointer to the property + * name. + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const void *fdt_getprop_by_offset(const void *fdt, int offset, + const char **namep, int *lenp); + +/** + * fdt_getprop_namelen - get property value based on substring + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @namelen: number of characters of name to consider + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * Identical to fdt_getprop(), but only examine the first namelen + * characters of name for matching the property name. + */ +const void *fdt_getprop_namelen(const void *fdt, int nodeoffset, + const char *name, int namelen, int *lenp); + +/** + * fdt_getprop - retrieve the value of a given property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_getprop() retrieves a pointer to the value of the property + * named 'name' of the node at offset nodeoffset (this will be a + * pointer to within the device blob itself, not a copy of the value). + * If lenp is non-NULL, the length of the property value is also + * returned, in the integer pointed to by lenp. + * + * returns: + * pointer to the property's value + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_NOTFOUND, node does not have named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const void *fdt_getprop(const void *fdt, int nodeoffset, + const char *name, int *lenp); +static inline void *fdt_getprop_w(void *fdt, int nodeoffset, + const char *name, int *lenp) +{ + return (void *)(uintptr_t)fdt_getprop(fdt, nodeoffset, name, lenp); +} + +/** + * fdt_get_phandle - retrieve the phandle of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of the node + * + * fdt_get_phandle() retrieves the phandle of the device tree node at + * structure block offset nodeoffset. + * + * returns: + * the phandle of the node at nodeoffset, on success (!= 0, != -1) + * 0, if the node has no phandle, or another error occurs + */ +uint32_t fdt_get_phandle(const void *fdt, int nodeoffset); + +/** + * fdt_get_alias_namelen - get alias based on substring + * @fdt: pointer to the device tree blob + * @name: name of the alias th look up + * @namelen: number of characters of name to consider + * + * Identical to fdt_get_alias(), but only examine the first namelen + * characters of name for matching the alias name. + */ +const char *fdt_get_alias_namelen(const void *fdt, + const char *name, int namelen); + +/** + * fdt_get_alias - retrieve the path referenced by a given alias + * @fdt: pointer to the device tree blob + * @name: name of the alias to look up + * + * fdt_get_alias() retrieves the value of a given alias. That is, the + * value of the property named 'name' in the node /aliases. + * + * returns: + * a pointer to the expansion of the alias named 'name', if it exists + * NULL, if the given alias or the /aliases node does not exist + */ +const char *fdt_get_alias(const void *fdt, const char *name); + +/** + * fdt_get_path - determine the full path of a node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose path to find + * @buf: character buffer to contain the returned path (will be overwritten) + * @buflen: size of the character buffer at buf + * + * fdt_get_path() computes the full path of the node at offset + * nodeoffset, and records that path in the buffer at buf. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + * 0, on success + * buf contains the absolute path of the node at + * nodeoffset, as a NUL-terminated string. + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_NOSPACE, the path of the given node is longer than (bufsize-1) + * characters and will not fit in the given buffer. + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen); + +/** + * fdt_supernode_atdepth_offset - find a specific ancestor of a node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * @supernodedepth: depth of the ancestor to find + * @nodedepth: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_supernode_atdepth_offset() finds an ancestor of the given node + * at a specific depth from the root (where the root itself has depth + * 0, its immediate subnodes depth 1 and so forth). So + * fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, NULL); + * will always return 0, the offset of the root node. If the node at + * nodeoffset has depth D, then: + * fdt_supernode_atdepth_offset(fdt, nodeoffset, D, NULL); + * will return nodeoffset itself. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + + * structure block offset of the node at node offset's ancestor + * of depth supernodedepth (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag +* -FDT_ERR_NOTFOUND, supernodedepth was greater than the depth of nodeoffset + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset, + int supernodedepth, int *nodedepth); + +/** + * fdt_node_depth - find the depth of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * + * fdt_node_depth() finds the depth of a given node. The root node + * has depth 0, its immediate subnodes depth 1 and so forth. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + * depth of the node at nodeoffset (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_depth(const void *fdt, int nodeoffset); + +/** + * fdt_parent_offset - find the parent of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * + * fdt_parent_offset() locates the parent node of a given node (that + * is, it finds the offset of the node which contains the node at + * nodeoffset as a subnode). + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset, *twice*. + * + * returns: + * structure block offset of the parent of the node at nodeoffset + * (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_parent_offset(const void *fdt, int nodeoffset); + +/** + * fdt_node_offset_by_prop_value - find nodes with a given property value + * @fdt: pointer to the device tree blob + * @startoffset: only find nodes after this offset + * @propname: property name to check + * @propval: property value to search for + * @proplen: length of the value in propval + * + * fdt_node_offset_by_prop_value() returns the offset of the first + * node after startoffset, which has a property named propname whose + * value is of length proplen and has value equal to propval; or if + * startoffset is -1, the very first such node in the tree. + * + * To iterate through all nodes matching the criterion, the following + * idiom can be used: + * offset = fdt_node_offset_by_prop_value(fdt, -1, propname, + * propval, proplen); + * while (offset != -FDT_ERR_NOTFOUND) { + * ... other code here ... + * offset = fdt_node_offset_by_prop_value(fdt, offset, propname, + * propval, proplen); + * } + * + * Note the -1 in the first call to the function, if 0 is used here + * instead, the function will never locate the root node, even if it + * matches the criterion. + * + * returns: + * structure block offset of the located node (>= 0, >startoffset), + * on success + * -FDT_ERR_NOTFOUND, no node matching the criterion exists in the + * tree after startoffset + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_prop_value(const void *fdt, int startoffset, + const char *propname, + const void *propval, int proplen); + +/** + * fdt_node_offset_by_phandle - find the node with a given phandle + * @fdt: pointer to the device tree blob + * @phandle: phandle value + * + * fdt_node_offset_by_phandle() returns the offset of the node + * which has the given phandle value. If there is more than one node + * in the tree with the given phandle (an invalid tree), results are + * undefined. + * + * returns: + * structure block offset of the located node (>= 0), on success + * -FDT_ERR_NOTFOUND, no node with that phandle exists + * -FDT_ERR_BADPHANDLE, given phandle value was invalid (0 or -1) + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle); + +/** + * fdt_node_check_compatible: check a node's compatible property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of a tree node + * @compatible: string to match against + * + * + * fdt_node_check_compatible() returns 0 if the given node contains a + * 'compatible' property with the given string as one of its elements, + * it returns non-zero otherwise, or on error. + * + * returns: + * 0, if the node has a 'compatible' property listing the given string + * 1, if the node has a 'compatible' property, but it does not list + * the given string + * -FDT_ERR_NOTFOUND, if the given node has no 'compatible' property + * -FDT_ERR_BADOFFSET, if nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_check_compatible(const void *fdt, int nodeoffset, + const char *compatible); + +/** + * fdt_node_offset_by_compatible - find nodes with a given 'compatible' value + * @fdt: pointer to the device tree blob + * @startoffset: only find nodes after this offset + * @compatible: 'compatible' string to match against + * + * fdt_node_offset_by_compatible() returns the offset of the first + * node after startoffset, which has a 'compatible' property which + * lists the given compatible string; or if startoffset is -1, the + * very first such node in the tree. + * + * To iterate through all nodes matching the criterion, the following + * idiom can be used: + * offset = fdt_node_offset_by_compatible(fdt, -1, compatible); + * while (offset != -FDT_ERR_NOTFOUND) { + * ... other code here ... + * offset = fdt_node_offset_by_compatible(fdt, offset, compatible); + * } + * + * Note the -1 in the first call to the function, if 0 is used here + * instead, the function will never locate the root node, even if it + * matches the criterion. + * + * returns: + * structure block offset of the located node (>= 0, >startoffset), + * on success + * -FDT_ERR_NOTFOUND, no node matching the criterion exists in the + * tree after startoffset + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_compatible(const void *fdt, int startoffset, + const char *compatible); + +/** + * fdt_stringlist_contains - check a string list property for a string + * @strlist: Property containing a list of strings to check + * @listlen: Length of property + * @str: String to search for + * + * This is a utility function provided for convenience. The list contains + * one or more strings, each terminated by \0, as is found in a device tree + * "compatible" property. + * + * @return: 1 if the string is found in the list, 0 not found, or invalid list + */ +int fdt_stringlist_contains(const char *strlist, int listlen, const char *str); + +/**********************************************************************/ +/* Write-in-place functions */ +/**********************************************************************/ + +/** + * fdt_setprop_inplace - change a property's value, but not its size + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: pointer to data to replace the property value with + * @len: length of the property value + * + * fdt_setprop_inplace() replaces the value of a given property with + * the data in val, of length len. This function cannot change the + * size of a property, and so will only work if len is equal to the + * current length of the property. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if len is not equal to the property's current length + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + +/** + * fdt_setprop_inplace_u32 - change the value of a 32-bit integer property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value to replace the property with + * + * fdt_setprop_inplace_u32() replaces the value of a given property + * with the 32-bit integer value in val, converting val to big-endian + * if necessary. This function cannot change the size of a property, + * and so will only work if the property already exists and has length + * 4. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if the property's length is not equal to 4 + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_inplace_u32(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_setprop_inplace(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_inplace_u64 - change the value of a 64-bit integer property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value to replace the property with + * + * fdt_setprop_inplace_u64() replaces the value of a given property + * with the 64-bit integer value in val, converting val to big-endian + * if necessary. This function cannot change the size of a property, + * and so will only work if the property already exists and has length + * 8. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if the property's length is not equal to 8 + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_inplace_u64(void *fdt, int nodeoffset, + const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_setprop_inplace(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_inplace_cell - change the value of a single-cell property + * + * This is an alternative name for fdt_setprop_inplace_u32() + */ +static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + return fdt_setprop_inplace_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_nop_property - replace a property with nop tags + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to nop + * @name: name of the property to nop + * + * fdt_nop_property() will replace a given property's representation + * in the blob with FDT_NOP tags, effectively removing it from the + * tree. + * + * This function will alter only the bytes in the blob which contain + * the property, and will not alter or move any other part of the + * tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_nop_property(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_nop_node - replace a node (subtree) with nop tags + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node to nop + * + * fdt_nop_node() will replace a given node's representation in the + * blob, including all its subnodes, if any, with FDT_NOP tags, + * effectively removing it from the tree. + * + * This function will alter only the bytes in the blob which contain + * the node and its properties and subnodes, and will not alter or + * move any other part of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_nop_node(void *fdt, int nodeoffset); + +/**********************************************************************/ +/* Sequential write functions */ +/**********************************************************************/ + +int fdt_create(void *buf, int bufsize); +int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size); +int fdt_finish_reservemap(void *fdt); +int fdt_begin_node(void *fdt, const char *name); +int fdt_property(void *fdt, const char *name, const void *val, int len); +static inline int fdt_property_u32(void *fdt, const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_property(fdt, name, &tmp, sizeof(tmp)); +} +static inline int fdt_property_u64(void *fdt, const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_property(fdt, name, &tmp, sizeof(tmp)); +} +static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val) +{ + return fdt_property_u32(fdt, name, val); +} +#define fdt_property_string(fdt, name, str) \ + fdt_property(fdt, name, str, strlen(str)+1) +int fdt_end_node(void *fdt); +int fdt_finish(void *fdt); + +/**********************************************************************/ +/* Read-write functions */ +/**********************************************************************/ + +int fdt_create_empty_tree(void *buf, int bufsize); +int fdt_open_into(const void *fdt, void *buf, int bufsize); +int fdt_pack(void *fdt); + +/** + * fdt_add_mem_rsv - add one memory reserve map entry + * @fdt: pointer to the device tree blob + * @address, @size: 64-bit values (native endian) + * + * Adds a reserve map entry to the given blob reserving a region at + * address address of length size. + * + * This function will insert data into the reserve map and will + * therefore change the indexes of some entries in the table. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new reservation entry + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size); + +/** + * fdt_del_mem_rsv - remove a memory reserve map entry + * @fdt: pointer to the device tree blob + * @n: entry to remove + * + * fdt_del_mem_rsv() removes the n-th memory reserve map entry from + * the blob. + * + * This function will delete data from the reservation table and will + * therefore change the indexes of some entries in the table. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, there is no entry of the given index (i.e. there + * are less than n+1 reserve map entries) + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_del_mem_rsv(void *fdt, int n); + +/** + * fdt_set_name - change the name of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of a node + * @name: name to give the node + * + * fdt_set_name() replaces the name (including unit address, if any) + * of the given node with the given string. NOTE: this function can't + * efficiently check if the new name is unique amongst the given + * node's siblings; results are undefined if this function is invoked + * with a name equal to one of the given node's siblings. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob + * to contain the new name + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_set_name(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_setprop - create or change a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: pointer to data to set the property value to + * @len: length of the property value + * + * fdt_setprop() sets the value of the named property in the given + * node to the given value and length, creating the property if it + * does not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_setprop(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + +/** + * fdt_setprop_u32 - set a property to a 32-bit integer + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value for the property (native endian) + * + * fdt_setprop_u32() sets the value of the named property in the given + * node to the given 32-bit integer value (converting to big-endian if + * necessary), or creates a new property with that value if it does + * not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_u32(void *fdt, int nodeoffset, const char *name, + uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_setprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_u64 - set a property to a 64-bit integer + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value for the property (native endian) + * + * fdt_setprop_u64() sets the value of the named property in the given + * node to the given 64-bit integer value (converting to big-endian if + * necessary), or creates a new property with that value if it does + * not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_u64(void *fdt, int nodeoffset, const char *name, + uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_setprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_cell - set a property to a single cell value + * + * This is an alternative name for fdt_setprop_u32() + */ +static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name, + uint32_t val) +{ + return fdt_setprop_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_setprop_string - set a property to a string value + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @str: string value for the property + * + * fdt_setprop_string() sets the value of the named property in the + * given node to the given string value (using the length of the + * string to determine the new length of the property), or creates a + * new property with that value if it does not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +#define fdt_setprop_string(fdt, nodeoffset, name, str) \ + fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1) + +/** + * fdt_appendprop - append to or create a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to append to + * @val: pointer to data to append to the property value + * @len: length of the data to append to the property value + * + * fdt_appendprop() appends the value to the named property in the + * given node, creating the property if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_appendprop(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + +/** + * fdt_appendprop_u32 - append a 32-bit integer value to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value to append to the property (native endian) + * + * fdt_appendprop_u32() appends the given 32-bit integer value + * (converting to big-endian if necessary) to the value of the named + * property in the given node, or creates a new property with that + * value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_appendprop_u32(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_appendprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_appendprop_u64 - append a 64-bit integer value to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value to append to the property (native endian) + * + * fdt_appendprop_u64() appends the given 64-bit integer value + * (converting to big-endian if necessary) to the value of the named + * property in the given node, or creates a new property with that + * value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_appendprop_u64(void *fdt, int nodeoffset, + const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_appendprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_appendprop_cell - append a single cell value to a property + * + * This is an alternative name for fdt_appendprop_u32() + */ +static inline int fdt_appendprop_cell(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + return fdt_appendprop_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_appendprop_string - append a string to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @str: string value to append to the property + * + * fdt_appendprop_string() appends the given string to the value of + * the named property in the given node, or creates a new property + * with that value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +#define fdt_appendprop_string(fdt, nodeoffset, name, str) \ + fdt_appendprop((fdt), (nodeoffset), (name), (str), strlen(str)+1) + +/** + * fdt_delprop - delete a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to nop + * @name: name of the property to nop + * + * fdt_del_property() will delete the given property. + * + * This function will delete data from the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_delprop(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_add_subnode_namelen - creates a new node based on substring + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * @namelen: number of characters of name to consider + * + * Identical to fdt_add_subnode(), but use only the first namelen + * characters of name as the name of the new node. This is useful for + * creating subnodes based on a portion of a larger string, such as a + * full path. + */ +int fdt_add_subnode_namelen(void *fdt, int parentoffset, + const char *name, int namelen); + +/** + * fdt_add_subnode - creates a new node + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * + * fdt_add_subnode() creates a new node as a subnode of the node at + * structure block offset parentoffset, with the given name (which + * should include the unit address, if any). + * + * This function will insert data into the blob, and will therefore + * change the offsets of some existing nodes. + + * returns: + * structure block offset of the created nodeequested subnode (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested subnode does not exist + * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag + * -FDT_ERR_EXISTS, if the node at parentoffset already has a subnode of + * the given name + * -FDT_ERR_NOSPACE, if there is insufficient free space in the + * blob to contain the new node + * -FDT_ERR_NOSPACE + * -FDT_ERR_BADLAYOUT + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_add_subnode(void *fdt, int parentoffset, const char *name); + +/** + * fdt_del_node - delete a node (subtree) + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node to nop + * + * fdt_del_node() will remove the given node, including all its + * subnodes if any, from the blob. + * + * This function will delete data from the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_del_node(void *fdt, int nodeoffset); + +/**********************************************************************/ +/* Debugging / informational functions */ +/**********************************************************************/ + +const char *fdt_strerror(int errval); + +struct fdt_region { + int offset; + int size; +}; + +/** + * fdt_find_regions() - find regions in device tree + * + * Given a list of nodes to include and properties to exclude, find + * the regions of the device tree which describe those included parts. + * + * The intent is to get a list of regions which will be invariant provided + * those parts are invariant. For example, if you request a list of regions + * for all nodes but exclude the property "data", then you will get the + * same region contents regardless of any change to "data" properties. + * + * This function can be used to produce a byte-stream to send to a hashing + * function to verify that critical parts of the FDT have not changed. + * + * Nodes which are given in 'inc' are included in the region list, as + * are the names of the immediate subnodes nodes (but not the properties + * or subnodes of those subnodes). + * + * For eaxample "/" means to include the root node, all root properties + * and the FDT_BEGIN_NODE and FDT_END_NODE of all subnodes of /. The latter + * ensures that we capture the names of the subnodes. In a hashing situation + * it prevents the root node from changing at all Any change to non-excluded + * properties, names of subnodes or number of subnodes would be detected. + * + * When used with FITs this provides the ability to hash and sign parts of + * the FIT based on different configurations in the FIT. Then it is + * impossible to change anything about that configuration (include images + * attached to the configuration), but it may be possible to add new + * configurations, new images or new signatures within the existing + * framework. + * + * Adding new properties to a device tree may result in the string table + * being extended (if the new property names are different from those + * already added). This function can optionally include a region for + * the string table so that this can be part of the hash too. + * + * The device tree header is not included in the list. + * + * @fdt: Device tree to check + * @inc: List of node paths to included + * @inc_count: Number of node paths in list + * @exc_prop: List of properties names to exclude + * @exc_prop_count: Number of properties in exclude list + * @region: Returns list of regions + * @max_region: Maximum length of region list + * @path: Pointer to a temporary string for the function to use for + * building path names + * @path_len: Length of path, must be large enough to hold the longest + * path in the tree + * @add_string_tab: 1 to add a region for the string table + * @return number of regions in list. If this is >max_regions then the + * region array was exhausted. You should increase max_regions and try + * the call again. + */ +int fdt_find_regions(const void *fdt, char * const inc[], int inc_count, + char * const exc_prop[], int exc_prop_count, + struct fdt_region region[], int max_regions, + char *path, int path_len, int add_string_tab); + +#endif /* _LIBFDT_H */ diff --git a/board/novatek/na51055/loader/Include/fdt/libfdt_env.h b/board/novatek/na51055/loader/Include/fdt/libfdt_env.h new file mode 100755 index 000000000000..5573b3f8c523 --- /dev/null +++ b/board/novatek/na51055/loader/Include/fdt/libfdt_env.h @@ -0,0 +1,63 @@ +/* + * libfdt - Flat Device Tree manipulation (build/run environment adaptation) + * Copyright (C) 2007 Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com + * Original version written by David Gibson, IBM Corporation. + * + * SPDX-License-Identifier: LGPL-2.1+ + */ + +#ifndef _LIBFDT_ENV_H +#define _LIBFDT_ENV_H + +#include "compiler.h" + +typedef __signed__ char __s8; +typedef unsigned char __u8; + +typedef __signed__ short __s16; +typedef unsigned short __u16; + +typedef __signed__ int __s32; +typedef unsigned int __u32; + +#if defined(__GNUC__) +__extension__ typedef __signed__ long long __s64; +__extension__ typedef unsigned long long __u64; +#endif + +typedef __u8 uint8_t; +typedef __u16 uint16_t; +typedef __u32 uint32_t; + +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) +typedef __u64 uint64_t; +typedef __u64 u_int64_t; +typedef __s64 int64_t; +#endif + +#define __bitwise + +typedef __u16 __bitwise __le16; +typedef __u16 __bitwise __be16; +typedef __u32 __bitwise __le32; +typedef __u32 __bitwise __be32; +#if defined(__GNUC__) +typedef __u64 __bitwise __le64; +typedef __u64 __bitwise __be64; +#endif + +extern struct fdt_header *working_fdt; /* Pointer to the working fdt */ + +typedef __be16 fdt16_t; +typedef __be32 fdt32_t; +typedef __be64 fdt64_t; + +#define fdt32_to_cpu(x) be32_to_cpu(x) +#define cpu_to_fdt32(x) cpu_to_be32(x) +#define fdt64_to_cpu(x) be64_to_cpu(x) +#define cpu_to_fdt64(x) cpu_to_be64(x) + +/* adding a ramdisk needs 0x44 bytes in version 2008.10 */ +#define FDT_RAMDISK_OVERHEAD 0x80 + +#endif /* _LIBFDT_ENV_H */ diff --git a/board/novatek/na51055/loader/Include/fuart.h b/board/novatek/na51055/loader/Include/fuart.h new file mode 100755 index 000000000000..82e8414e444d --- /dev/null +++ b/board/novatek/na51055/loader/Include/fuart.h @@ -0,0 +1,58 @@ +/** + Header file for UART + + This file is the header file for UART driver + + @file fuart.h + @ingroup mIIOUART + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + + +#ifndef _FUART_H +#define _FUART_H + +#include "constant.h" + +/** + @addtogroup mIIOUART +*/ +//@{ + +/** + @name Put system UART string + + Print string to UART + + @param[in] m printed string +*/ +//@{ +#define uart_putSystemUARTStr(m) fLib_PutSerialStr(m) ///< Print string MACRO +//@} + +/** + @name Put system UART character + + Print character to UART + + @param[in] m printed character +*/ +//@{ +#define uart_putSystemUARTChar(m) fLib_PutSerialChar(m) ///< Print character MACRO +//@} + +extern void fLib_PutSerialChar(char Ch) __attribute__ ((section (".part1"))); +extern void fLib_PutSerialStr(char *Str) __attribute__ ((section (".part1"))); +extern void uart_openSystemUART(void); +extern void uart_openSystemUART2(void); + +extern void uart_getChar_polling(char * c); +extern void uart_chkChar(char * c); +extern void uart_getStr_polling(char * c); +extern void uart_getBinary(char *pcString, UINT32 BufferLen); + +//@} + +#endif diff --git a/board/novatek/na51055/loader/Include/gic.h b/board/novatek/na51055/loader/Include/gic.h new file mode 100755 index 000000000000..e916c2c65cb0 --- /dev/null +++ b/board/novatek/na51055/loader/Include/gic.h @@ -0,0 +1,195 @@ + +#ifndef _ASM_ARMV8_GIC_H_ +#define _ASM_ARMV8_GIC_H_ +//#include "FLibARM.h" +#define UART_INTID 43 + + + +#define GIC_UART_INTID (UART_INTID + 32) +#if 0 +/* + * Distributor layout + */ +#define GICD_CTLR 0x0000 +#define GICD_TYPER 0x0004 +#define GICD_IIDR 0x0008 +#define GICD_IGROUP 0x0080 +#define GICD_ISENABLE 0x0100 +#define GICD_ICENABLE 0x0180 +#define GICD_ISPEND 0x0200 +#define GICD_ICPEND 0x0280 +#define GICD_ISACTIVE 0x0300 +#define GICD_ICACTIVE 0x0380 +#define GICD_IPRIORITY 0x0400 +#define GICD_ITARGETS 0x0800 +#define GICD_ICFG 0x0c00 +#define GICD_PPISR 0x0d00 +#define GICD_SPISR 0x0d04 +#define GICD_SGIR 0x0f00 +#define GICD_CPENDSGI 0x0f10 +#define GICD_SPENDSGI 0x0f20 +#define GICD_PIDR4 0x0fd0 +#define GICD_PIDR5 0x0fd4 +#define GICD_PIDR6 0x0fd8 +#define GICD_PIDR7 0x0fdc +#define GICD_PIDR0 0x0fe0 +#define GICD_PIDR1 0x0fe4 +#define GICD_PIDR2 0x0fe8 +#define GICD_PIDR3 0x0fec +#define GICD_CIDR0 0x0ff0 +#define GICD_CIDR1 0x0ff4 +#define GICD_CIDR2 0x0ff8 +#define GICD_CIDR3 0x0ffc + +/* + * CPU Interface layout + */ +#define GICC_CTLR 0x0000 +#define GICC_PMR 0x0004 +#define GICC_BPR 0x0008 +#define GICC_IAR 0x000c +#define GICC_EOIR 0x0010 +#define GICC_RPR 0x0014 +#define GICC_HPPIR 0x0018 +#define GICC_ABPR 0x001c +#define GICC_AIAR 0x0020 +#define GICC_AEOIR 0x0024 +#define GICC_AHPPIR 0x0028 +#define GICC_APR0 0x00d0 +#define GICC_NSAPR0 0x00e0 +#define GICC_IIDR 0x00fc +#define GICC_DIR 0x1000 +#endif + +#define MAX_SPIS 480 + +#define MAX_PPIS 14 +#define MAX_SGIS 16 + +#define MIN_SGI_ID 0 +#define MIN_PPI_ID 16 +#define MIN_SPI_ID 32 + +#define GRP0 0 +#define GRP1 1 + +#define _GICD_ 0x1000 +#define _GICC_ 0x2000 +#define _GICH_ 0x4000 +#define _GICV_ 0x6000 + +#define GIC_PRI_MASK 0xff +#define GIC_HIGHEST_SEC_PRIORITY 0 +#define GIC_LOWEST_SEC_PRIORITY 127 +#define GIC_HIGHEST_NS_PRIORITY 128 +#define GIC_LOWEST_NS_PRIORITY 254 /* 255 would disable an interrupt */ +#define GIC_SPURIOUS_INTERRUPT 1023 +#define GIC_TARGET_CPU_MASK 0xff + +/* Distributor interface definitions */ +#define GICD_CTLR _GICD_ + 0x0 +#define GICD_TYPER _GICD_ + 0x4 +#define GICD_IGROUPR _GICD_ + 0x80 +#define GICD_ISENABLER _GICD_ + 0x100 +#define GICD_ICENABLER _GICD_ + 0x180 +#define GICD_ISPENDR _GICD_ + 0x200 +#define GICD_ICPENDR _GICD_ + 0x280 +#define GICD_ISACTIVER _GICD_ + 0x300 +#define GICD_ICACTIVER _GICD_ + 0x380 +#define GICD_IPRIORITYR _GICD_ + 0x400 +#define GICD_ITARGETSR _GICD_ + 0x800 +#define GICD_ICFGR _GICD_ + 0xC00 +#define GICD_SGIR _GICD_ + 0xF00 +#define GICD_CPENDSGIR _GICD_ + 0xF10 +#define GICD_SPENDSGIR _GICD_ + 0xF20 + +#define IGROUPR_SHIFT 5 +#define ISENABLER_SHIFT 5 +#define ICENABLER_SHIFT ISENABLER_SHIFT +#define ISPENDR_SHIFT 5 +#define ICPENDR_SHIFT ISPENDR_SHIFT +#define ISACTIVER_SHIFT 5 +#define ICACTIVER_SHIFT ISACTIVER_SHIFT +#define IPRIORITYR_SHIFT 2 +#define ITARGETSR_SHIFT 2 +#define ICFGR_SHIFT 4 +#define CPENDSGIR_SHIFT 2 +#define SPENDSGIR_SHIFT CPENDSGIR_SHIFT + +/* GICD_TYPER bit definitions */ +#define IT_LINES_NO_MASK 0x1f + +/* GICD_ICFGR bit definitions */ +#define LEVEL_SENSITIVE 0x0 +#define TRIGGER_SENSITIVE 0x1 + +/* Physical CPU Interface registers */ +#define GICC_CTLR _GICC_ + 0x0 +#define GICC_PMR _GICC_ + 0x4 +#define GICC_BPR _GICC_ + 0x8 +#define GICC_IAR _GICC_ + 0xC +#define GICC_EOIR _GICC_ + 0x10 +#define GICC_RPR _GICC_ + 0x14 +#define GICC_HPPIR _GICC_ + 0x18 +#define GICC_AHPPIR _GICC_ + 0x28 +#define GICC_IIDR _GICC_ + 0xFC +#define GICC_DIR _GICC_ + 0x1000 +#define GICC_PRIODROP _GICC_ + GICC_EOIR + +/* GICC_CTLR bit definitions */ +#define EOI_MODE_NS (1 << 10) +#define EOI_MODE_S (1 << 9) +#define IRQ_BYP_DIS_GRP1 (1 << 8) +#define FIQ_BYP_DIS_GRP1 (1 << 7) +#define IRQ_BYP_DIS_GRP0 (1 << 6) +#define FIQ_BYP_DIS_GRP0 (1 << 5) +#define CBPR (1 << 4) +#define FIQ_EN (1 << 3) +#define ACK_CTL (1 << 2) +#define ENABLE_GRP1 (1 << 1) +#define ENABLE_GRP0 (1 << 0) + +/* GICC_IIDR bit masks and shifts */ +#define GICC_IIDR_PID_SHIFT 20 +#define GICC_IIDR_ARCH_SHIFT 16 +#define GICC_IIDR_REV_SHIFT 12 +#define GICC_IIDR_IMP_SHIFT 0 + +#define GICC_IIDR_PID_MASK 0xfff +#define GICC_IIDR_ARCH_MASK 0xf +#define GICC_IIDR_REV_MASK 0xf +#define GICC_IIDR_IMP_MASK 0xfff + +/* HYP view virtual CPU Interface registers */ +#define GICH_CTL 0x0 +#define GICH_VTR 0x4 +#define GICH_ELRSR0 0x30 +#define GICH_ELRSR1 0x34 +#define GICH_APR0 0xF0 +#define GICH_LR_BASE 0x100 + +/* Virtual CPU Interface registers */ +#define GICV_CTL 0x0 +#define GICV_PRIMASK 0x4 +#define GICV_BP 0x8 +#define GICV_INTACK 0xC +#define GICV_EOI 0x10 +#define GICV_RUNNINGPRI 0x14 +#define GICV_HIGHESTPEND 0x18 +#define GICV_DEACTIVATE 0x1000 + +extern void nvt_enable_irq(int number); +extern void nvt_disable_irq(int number); +extern void arm_gic_cpuif_setup(void); +extern void arm_gic_distif_setup(void); +extern void gicd_write_igroupr(UINT32 id, UINT32 val); +extern void gicd_write_ipriorityr(UINT32 id, UINT32 val); + +extern UINT32 gicc_get_IAR(void); +extern void gicc_set_EOIR(UINT32 val); + + + + +#endif /* _ASM_ARMV8_GIC_H_ */ diff --git a/board/novatek/na51055/loader/Include/global.h b/board/novatek/na51055/loader/Include/global.h new file mode 100755 index 000000000000..33257312f916 --- /dev/null +++ b/board/novatek/na51055/loader/Include/global.h @@ -0,0 +1,43 @@ +/** + Global utility header file + + Global utility header file + + @file global.h + @ingroup mISYSUtil + @note Nothing +*/ + +#ifndef _GLOBAL_H +#define _GLOBAL_H + +#include "constant.h" + +/** + @addtogroup mISYSUtil +*/ +//@{ + +extern UINT32 bitCount(UINT32 data); +extern void UTL_setDrvTmpBufferAddress(UINT32 addr); +extern UINT32 UTL_getDrvTmpBufferAddress(void); +extern char* Dec2HexStr(UINT32 data); +//extern void PrintDec2Hex(UINT32 data) __attribute__ ((section (".part1"))); +extern void rom_Dec2HexStr(UINT32 data) __attribute__ ((section (".part1"))); +#define PrintDec2Hex(m) rom_Dec2HexStr(m) +extern char* Dec2HexStr2Bytes(UINT32 data); +extern void PrintDec2HexStr2Bytes(UINT32 data) __attribute__ ((section (".part1"))); +extern UINT32 DecStr2Int(char* str); +extern BOOL UTL_canUpdateSecKey(void); +extern BOOL utl_is_sram_fw(UINT32 fw_addr); +extern void utl_test_checksum(UINT32 addr, UINT32 size); +extern void utl_dram_protect_enable(UINT32 addr, UINT32 size); +extern void utl_dram_protect_disable(void); +extern UINT32 utl_dram_protect_check(void); + +extern void load_dram_scan(UINT32 addr, UINT32 size) __attribute__ ((section (".dram_text"))); +extern void timer_delay(UINT32 US) __attribute__ ((section (".part1"))); + +//@} + +#endif diff --git a/board/novatek/na51055/loader/Include/limits.h b/board/novatek/na51055/loader/Include/limits.h new file mode 100755 index 000000000000..20a514867336 --- /dev/null +++ b/board/novatek/na51055/loader/Include/limits.h @@ -0,0 +1,31 @@ + + +#ifndef __NVT_LIBC_LIMITS_H +#define __NVT_LIBC_LIMITS_H + +#define CHAR_BIT 8 /* number of bits in a char */ +#define SCHAR_MIN (-128) /* minimum signed char value */ +#define SCHAR_MAX 127 /* maximum signed char value */ +#define UCHAR_MAX 0xff /* maximum unsigned char value */ + +#ifndef _CHAR_UNSIGNED +#define CHAR_MIN SCHAR_MIN /* mimimum char value */ +#define CHAR_MAX SCHAR_MAX /* maximum char value */ +#else +#define CHAR_MIN 0 +#define CHAR_MAX UCHAR_MAX +#endif /* _CHAR_UNSIGNED */ + +#define MB_LEN_MAX 2 /* max. # bytes in multibyte char */ +#define SHRT_MIN (-32768) /* minimum (signed) short value */ +#define SHRT_MAX 32767 /* maximum (signed) short value */ +#define USHRT_MAX 0xffff /* maximum unsigned short value */ +#define INT_MIN (-2147483647 - 1) /* minimum (signed) int value */ +#define INT_MAX 2147483647 /* maximum (signed) int value */ +#define UINT_MAX 0xffffffff /* maximum unsigned int value */ +#define LONG_MIN (-2147483647L - 1) /* minimum (signed) long value */ +#define LONG_MAX 2147483647L /* maximum (signed) long value */ +#define ULONG_MAX 0xffffffffUL /* maximum unsigned long value */ + +#endif + diff --git a/board/novatek/na51055/loader/Include/loader.h b/board/novatek/na51055/loader/Include/loader.h new file mode 100755 index 000000000000..2e480d112137 --- /dev/null +++ b/board/novatek/na51055/loader/Include/loader.h @@ -0,0 +1,83 @@ +/** + Global loader header file + + Global loader header file + + @file loader.h + @ingroup mISYSUtil + @note Nothing +*/ + +#ifndef _LOADER_H +#define _LOADER_H + +#include "constant.h" +#include "StorageDef.h" + +/** + @name Special key detect CallBack + + Special key detect Prototype + + Project layer can detect special key in this callback. + If callback returns TRUE, loader will try to find files on SD card. + + @return + - @b TRUE: special key is pressed + - @b FALSE: special key is NOT pressed +*/ +//@{ +typedef BOOL (*LDR_SPECIAL_KEY_CB)(void); +//@} + +/** + @name Card detect CallBack + + Card detect Prototype + + Project layer can detect SD card existence in this callback. + If callback returns TRUE, loader will consider SD is plugged + + @return + - @b TRUE: SD exist + - @b FALSE: SD NOT exist +*/ +//@{ +typedef BOOL (*LDR_CARD_DETECT_CB)(void); +//@} +/** + @name Recovery Trigger CallBack + + Recovery trigger Prototype + + Project layer can detect if the recovery flow should started. + If callback returns TRUE, recovery flow will start. + + @return + - @b TRUE: Recovery flow is triggered. + - @b FALSE: Recovery flow is NOT triggered. +*/ +//@{ +typedef BOOL (*LDR_RECOVERY_TRIGGER_CB)(void); +//@} + +typedef enum _STORAGEINT { + STORAGEINT_UNOKNOWN, + STORAGEINT_SPI_NAND, + STORAGEINT_SPI_NOR, + STORAGEINT_EMMC, +} STORAGEINT; + +extern void loader_setUpdateFwName(char* fileName); +extern void loader_setUpdateLdrName(char* fileName); +extern void loader_setRunFwName(char* fileName); +extern void loader_setRecoveryFwName(char *fileName); +extern void loader_setRecoveryPartitionID(UINT32 partition_id); +extern void loader_setVersion(UINT32 version); +extern void loader_setStorageIntType(STORAGEINT type, PSTORAGE_OBJ strg_obj); +extern void loader_installSpecialKeyCB(LDR_SPECIAL_KEY_CB callback); +extern void loader_installCardDetectCB(LDR_CARD_DETECT_CB callback); +extern void loader_installRecoveryTriggerCB(LDR_RECOVERY_TRIGGER_CB callback); + +#endif + diff --git a/board/novatek/na51055/loader/Include/lz.h b/board/novatek/na51055/loader/Include/lz.h new file mode 100755 index 000000000000..574d9d22c1a3 --- /dev/null +++ b/board/novatek/na51055/loader/Include/lz.h @@ -0,0 +1,25 @@ +/** + Decompress library header file + + Decompress library header file + + @file lz.h + @ingroup mISYSUtil + @note Nothing +*/ +#ifndef __NVT_LZ_DEF__ +#define __NVT_LZ_DEF__ + +#include "constant.h" + +/** + @addtogroup mISYSUtil +*/ +//@{ + +extern unsigned int LZ_Uncompress(UINT8 *in, UINT8 *out, UINT32 insize) __attribute__ ((section (".part1"))); +//extern void LZ_Uncompress(UINT8 *in, UINT8 *out, UINT32 insize) __attribute__ ((section (".part1"), far)); + +//@} + +#endif diff --git a/board/novatek/na51055/loader/Include/modelext/bin_info.h b/board/novatek/na51055/loader/Include/modelext/bin_info.h new file mode 100755 index 000000000000..78bbdbba45e6 --- /dev/null +++ b/board/novatek/na51055/loader/Include/modelext/bin_info.h @@ -0,0 +1,191 @@ +/** + Bin File Information + + Bin file layout + + ----------------------------------------------------- + HEADINFO 0x00 ~ 0x80 = 128 bytes = 32 WORDS + ----------------------------------------------------- + + EXCEPTION_TABLE: 0x180 ~ 0x200 = 128 bytes = 32 WORDS (see exception_MIPS.s) + + ----------------------------------------------------- + + VECTOR_TABLE: 0x200 ~ 0x2f0 = 240 bytes = 60 WORDS (see isr_MIPS.s) + + ----------------------------------------------------- + + Code Info: 0x2f0 ~ 0x400 = 272 bytes = 68 WORDS (see CodeInfo_MIPS.s) + + ----------------------------------------------------- + + Code Entry: 0x400 (see Loader_MIPS.s) + + : + + PART-1 + PART-2 + PART-3 + : + PART-N + + ----------------------------------------------------- + + @file bin_info.h + @ingroup mMODELEXT + @note THESE STRUCTS ARE VERY VERY IMPORTANT FORMAT DEFINITION OF SYSTEM, + DO NOT MODIFY ANY ITEM OR INSERT/REMOVE ANY ITEM OF THESE STRUCTS!!! + + Copyright Novatek Microelectronics Corp. 2011. All rights reserved. +*/ +#ifndef _BINI_NFO_H +#define _BIN_INFO_H + +#define BIN_INFO_VER 0x19062115 ///< YYYY/MM/DD HH +#if UITRON_FW +#define BIN_INFO_OFFSET_RTOS 0x00000100 ///< uITRON HEADINFO.o attached to this offset +#else +#define BIN_INFO_OFFSET_RTOS 0x00000200 ///< uITRON HEADINFO.o attached to this offset +#endif +#define BIN_INFO_OFFSET_UBOOT 0x00000300 ///< uboot HEADINFO.o attached to this +#define BIN_INFO_OFFSET_NUTTX 0x00000100 ///< nuttx +#define BIN_INFO_OFFSET_TEEOS 0x00000100 ///< teeos + +//Ep: Encryption Program (CheckSum version) +//Epcrc: Encryption Program (CRC version) +//Bfc: Bin File Compress +//Ld: Loader +//Fw: Firmware + +//Head control flag for HEADINFO.BinCtrl +#define HDCF_LZCOMPRESS_EN 0x0000001 ///< BIT 0.compressed enable (0=no,1=yes) + +/** + @name Ld control flag for LDINFO.LdCtrl +*/ +//@{ +#define BOOT_FLAG_PARTLOAD_EN 0x0000001 ///< BIT 0.PARTLOAD_EN (0=no,1=yes) +//@} + +//HEADINFO::Resv field definition +typedef enum _HEADINFO_RESV_IDX_{ + HEADINFO_RESV_IDX_FDT_ADDR = 0, + HEADINFO_RESV_IDX_SHM_ADDR = 1, + HEADINFO_RESV_IDX_BOOT_FLAG = 2, + HEADINFO_RESV_IDX_COUNTS = 19, +} HEADINFO_RESV_IDX; + +//HEADINFO::Resv field definition for teeos +typedef enum HEADINFO_TEEOS_RESV_IDX{ + HEADINFO_TEEOS_RESV_IDX_LOAD_ADDR = 0, + HEADINFO_TEEOS_RESV_IDX_UBOOT_ADDR = 1, //< write by loader + HEADINFO_TEEOS_RESV_IDX_COUNTS = 19, +} HEADINFO_TEEOS_RESV_IDX; + +/** + Header information + + 0x00 ~ 0x80 = 128 bytes = 32 WORDS +*/ +typedef struct HEADINFO { + unsigned int CodeEntry; ///< [0x00] fw CODE entry (4) ----- r by Ld + unsigned int Resv1[HEADINFO_RESV_IDX_COUNTS]; + ///< [0x04~0x50] reserved (4*19) -- reserved, its mem value will filled by Ld + ///< Resv1[HEADINFO_RESV_IDX_FDT_ADDR]: store fdt addr for rtos + ///< Resv1[HEADINFO_RESV_IDX_SHM_ADDR]: store shm addr for rtos + ///< Resv1[HEADINFO_RESV_IDX_BOOT_FLAG]: boot flag for rtos + char BinInfo_1[8]; ///< [0x50~0x58] CHIP-NAME (8) ---- r by Ep + char BinInfo_2[8]; ///< [0x58~0x60] SDK version (8) + char BinInfo_3[8]; ///< [0x60~0x68] SDK releasedate (8) + unsigned int BinLength; ///< [0x68] Bin File Length (4) --- w by Ep/bfc + unsigned int Checksum; ///< [0x6c] Check Sum or CRC (4) ----- w by Ep/Epcrc + unsigned int CRCLenCheck; ///< [0x70~0x74] Length check for CRC (4) ----- w by Epcrc (total len ^ 0xAA55) + unsigned int ModelextAddr;///< [0x74~0x78] where modelext data is. w by Ld / u-boot + unsigned int BinCtrl; ///< [0x78~0x7C] Bin flag (4) --- w by bfc + ///< BIT 0.compressed enable (w by bfc) + ///< BIT 1.Linux SMP enable (1: SMP/VOS, 0: Dual OS) + unsigned int CRCBinaryTag;///< [0x7C~0x80] Binary Tag for CRC (4) ----- w by Epcrc (0xAA55 + "NT") +} +HEADINFO; + +STATIC_ASSERT(sizeof(HEADINFO) == 128); + + +/** + Loader information + + 0x80 ~ 0xc0 = 64 bytes = 16 WORDS +*/ +typedef struct _LDINFO { + char LdInfo_1[16]; ///< [0x80~0x90] LD-NAME(16) ------ w by Ld + UINT32 LdCtrl; ///< [0x90] Fw flag (4) ----------- r by Ld + ///< BIT 0.enable part-load (0=full load,1=part load) + UINT32 LdCtrl2; ///< [0x94] Ld flag (4) ----------- w by Ld + ///< BIT 0.UPDATE_FW (0=no,1=yes) + ///< BIT 1.UPDATE_LOADER (0=no,1=yes) + ///< BIT 2.BOOT_CARD (0=no,1=yes) + ///< BIT 3.BOOT_FLASH (0=no,1=yes) + ///< BIT 4.UPDATE_CAL (0=no,1=yes) + ///< BIT 8.UPDATE_FW_DONE (0=no,1=yes) + //< BIT 9.BOOT FROM S3 STATE (0=no,1=yes) + UINT32 LdLoadSize; ///< [0x98] Ld load size (4) ------ w by Ld (NOTE: this value must be block size align) + UINT32 LdLoadTime; ///< [0x9c] Ld exec time(us) (4) -- w by Ld + UINT32 LdResvSize; ///< [0xa0] Ld size (by bytes, reserved size in partition) (4) ------ w by Ld + UINT32 FWResvSize; ///< [0xa4] FW reserved size (4) ------ w by Ld + UINT16 LdPackage; ///< [0xa8] IC package expected by Ld (0xFF: ES, 0: 660, 3: 663, 5: 665, etc...) + UINT16 LdStorage; ///< [0xaa] Internal storage expected by Ld (0: unkown, 1: nand, 2: spi nand, 3: spi nor) + UINT32 Resv[5]; ///< [0xac~0xc0] (4*5) ------------ reserved for project Ld +} +LDINFO; + +STATIC_ASSERT(sizeof(LDINFO) == 64); +/** + Binary file information + + 0x00 ~ 0x180 = 384 bytes = 96 WORDS +*/ +typedef struct _BININFO { + HEADINFO head; ///< 0x00 ~ 0x80 = 128 bytes = 32 WORDS, header information + LDINFO ld; ///< 0x80 ~ 0xc0 = 64 bytes = 16 WORDS, loader information + unsigned int Resv[48]; ///< 0x80 ~ 0x180 = 384 bytes = 64 WORDS, reserved information +} +BININFO; + +STATIC_ASSERT(sizeof(BININFO) == 384); + +/////////////////////////////////////////////////////////////////////////////// +//Code Info: 0x2f0 ~ 0x400 +#if UITRON_FW +#define ZI_SECTION_OFFSET (0x2f0+0x10) ///< ZI area information of starting offset //cliff +#define CODE_SECTION_OFFSET (0x2f0+0x18) ///< code section information of starting offset //cliff + +/////////////////////////////////////////////////////////////////////////////// +//Code Entry: 0x0 ~ +#define CODE_ENTRY_OFFSET (0x0) ///< code entry starting offset (660/510 is 0x400, 680 is 0x0) //cliff +#else +#define ZI_SECTION_OFFSET (0x3f0+0x10) ///< ZI area information of starting offset +#define CODE_SECTION_OFFSET (0x3f0+0x18) ///< code section information of starting offset + +#endif +/* +bfc syntex + +bfc.exe p1 p2 p3 p4 p5 p6 p7 p8 p9 + +p1: compress/decompress +p2: compress method +p3: input file name +p4: output file name +p5: partial load flag ('1' means partial load) +p6: partial load file start [locate offset of bin file] +p7: output binary file length [locate offset of bin file] +p8: partial compress flag [locate offset of bin file] +p9: NAND block size (option) + +NOTE: p6~p9 must be hex format (0x****) + +@$(BFC) c lz $(BIN_R) tmp 1 0x310 0x68 0x78 $(EMBMEM_BLK_SIZE) +*/ + +#endif + diff --git a/board/novatek/na51055/loader/Include/modelext/dram_partition_info.h b/board/novatek/na51055/loader/Include/modelext/dram_partition_info.h new file mode 100755 index 000000000000..0441da45bd93 --- /dev/null +++ b/board/novatek/na51055/loader/Include/modelext/dram_partition_info.h @@ -0,0 +1,55 @@ +#ifndef _DRAM_PARTITION_INFO_H +#define _DRAM_PARTITION_INFO_H + +#if defined(__UITRON) +#include "Type.h" +#else +#include "nvt_type.h" +#endif + +/** + DRAM Partition + + This is common header used between firmware of uITRON, eCos, Linux, DSP + so !!!!!! DO NOT modify it !!!!!! +*/ + +#define DRAM_PARTITION_INFO_VER 0x17032309 ///< YYYY/MM/DD HH + +typedef struct _DRAM_PARTITION { + unsigned int fourcc; ///< FourCC DRAM + unsigned int info_size; ///< sizeof(CORE_INFO) + unsigned int dram_addr; ///< whole dram starting address + unsigned int dram_size; ///< whole dram size + unsigned int rev_addr; ///< reversed starting address + unsigned int rev_size; ///< reversed size + unsigned int fdt_addr; ///< ipc starting address + unsigned int fdt_size; ///< ipc size + unsigned int linux_addr;///< linux-kernel starting address + unsigned int linux_size;///< linux-kernel size + unsigned int uboot_addr;///< u-boot starting address + unsigned int uboot_size;///< u-boot size + unsigned int rtos_addr; ///< rtos starting address + unsigned int rtos_size; ///< rtos size + unsigned int dsp1_addr; ///< DSP1 starting address + unsigned int dsp1_size; ///< DSP1 size + unsigned int dsp2_addr; ///< ecos(na51023) / DSP2(na51000) starting address + unsigned int dsp2_size; ///< ecos(na51023) / DSP2(na51000) size + unsigned int loader_addr; ///< loader starting address + unsigned int loader_size; ///< loader size + unsigned int nuttx_addr; ///< nuttx starting address + unsigned int nuttx_size; ///< nuttx size + unsigned int teeos_addr; ///< teeos starting address + unsigned int teeos_size; ///< teeos size + unsigned int hdal1_addr; ///< hdal[0] starting address + unsigned int hdal1_size; ///< hdal[0] size + unsigned int hdal2_addr; ///< hdal[1] starting address for dram2 + unsigned int hdal2_size; ///< hdal[1] size for dram2 + unsigned int core2_entry1_addr; ///< for smp boot, cpu2 start at 0 then jump to core2_entry2 for addr 0 can be reuse. + unsigned int core2_entry1_size; ///< for smp boot, cpu2 start at 0 then jump to core2_entry2 for addr 0 can be reuse. + unsigned int core2_entry2_addr; ///< asm code to start smp + unsigned int core2_entry2_size; ///< asm code to start smp + +}DRAM_PARTITION; + +#endif \ No newline at end of file diff --git a/board/novatek/na51055/loader/Include/modelext/emb_partition_info.h b/board/novatek/na51055/loader/Include/modelext/emb_partition_info.h new file mode 100755 index 000000000000..cd968cab7e8a --- /dev/null +++ b/board/novatek/na51055/loader/Include/modelext/emb_partition_info.h @@ -0,0 +1,56 @@ +#ifndef _EMB_PARTITION_INFO_H +#define _EMB_PARTITION_INFO_H + +#define EMB_PARTITION_INFO_VER 0x16072117 ///< YYYY/MM/DD HH + +/** + Partition Infomation + This is common header used between firmware of uITRON, eCos, Linux, DSP + so !!!!!! DO NOT modify it !!!!!! +*/ + +#define EMB_PARTITION_INFO_COUNT 16 + +#define EMBTYPE_UNKNOWN 0x00 +#define EMBTYPE_LOADER 0x01 /* loader must always put in partition[0] */ +#define EMBTYPE_MODELEXT 0x02 /* modelext must always put in partition[1] */ +#define EMBTYPE_UITRON 0x03 +#define EMBTYPE_ECOS 0x04 +#define EMBTYPE_UBOOT 0x05 +#define EMBTYPE_LINUX 0x06 +#define EMBTYPE_DSP 0x07 +#define EMBTYPE_PSTORE 0x08 +#define EMBTYPE_FAT 0x09 +#define EMBTYPE_EXFAT 0x0A +#define EMBTYPE_ROOTFS 0x0B +#define EMBTYPE_RAMFS 0x0C +#define EMBTYPE_UENV 0x0D /* u-boot environment data */ +#define EMBTYPE_MBR 0x0E /* for emmc partition, mbr always put in partition[0] instead of loader */ +#define EMBTYPE_NUTTX 0x0F +#define EMBTYPE_RTOS 0x10 +#define EMBTYPE_TEEOS 0x11 + +/** + customer defined data partition format +*/ +#define EMBTYPE_USER0 0x80 +#define EMBTYPE_USER1 0x81 +#define EMBTYPE_USER2 0x82 +#define EMBTYPE_USER3 0x83 +#define EMBTYPE_USER4 0x84 +#define EMBTYPE_USER5 0x85 +#define EMBTYPE_USER6 0x86 +#define EMBTYPE_USER7 0x87 + + +/* for reason of compatiable linux, we use original type to decalre */ + +typedef struct _EMB_PARTITION { + unsigned short EmbType; /* EMBTYPE_ */ + unsigned short OrderIdx; /* Order index of the same EmbType based on '0' */ + unsigned long long PartitionOffset; /* Phyical offset of partition */ + unsigned long long PartitionSize; /* Size of this partition */ + unsigned long long ReversedSize; /* Reserved size for bad block */ +} EMB_PARTITION, *PEMB_PARTITION; + +#endif diff --git a/board/novatek/na51055/loader/Include/modelext/gpio_info.h b/board/novatek/na51055/loader/Include/modelext/gpio_info.h new file mode 100755 index 000000000000..7a49e37cd60c --- /dev/null +++ b/board/novatek/na51055/loader/Include/modelext/gpio_info.h @@ -0,0 +1,42 @@ +/** + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. + + @file gpio_info.h + @ingroup mMODELEXT + + @brief Header file of IO config + This file is the header file of IO config + + @note Nothing. + @date 2016/06/24 +*/ + +/** \addtogroup mIPRJAPCommonIO */ +//@{ + +#ifndef _GPIO_INFO_H +#define _GPIO_INFO_H + +#if defined(__UITRON) +#include "Type.h" +#else +#include "nvt_type.h" +#endif + +#define GPIO_INFO_VER 0x16062414 ///< YYYY/MM/DD HH + + +//-------------------------------------------------------------------- +// GPIO common +//-------------------------------------------------------------------- +typedef struct _GPIO_INIT_OBJ{ + UINT32 GpioPin; + UINT32 GpioDir; + UINT32 PadDir; + UINT32 PadPin; +} GPIO_INIT_OBJ,*PGPIO_INIT_OBJ; + +#endif + +//@} + diff --git a/board/novatek/na51055/loader/Include/modelext/interrupt.h b/board/novatek/na51055/loader/Include/modelext/interrupt.h new file mode 100755 index 000000000000..c5c2e20db2f8 --- /dev/null +++ b/board/novatek/na51055/loader/Include/modelext/interrupt.h @@ -0,0 +1,764 @@ +/** + Header file for Interrupt module + + This file is the header file that define the API for Interrupt module. + + @file Interrupt.h + @ingroup mIDrvSys_Interrupt + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2010. All rights reserved. +*/ + +#ifndef _INTERRUPT_H +#define _INTERRUPT_H + +#if defined(__UITRON) +#include "Type.h" +#include "cc.h" +#else +#include "nvt_type.h" +#include "modelext/cc.h" +#define _ARM_GIC_USAGE_ ENABLE +#endif + +// Interrupt number <= 32 +//typedef UINT32 INT_PTN; +// Interrupt number > 32 +typedef UINT64 INT_PTN; + +/** + @addtogroup mIDrvSys_Interrupt +*/ +//@{ +#define INT_GIC_ID_DST_VER 0x16080216 + + +/** + Interrupt configuration identifier + + @note For int_setConfig() +*/ +typedef enum +{ + INT_CONFIG_ID_GIC_DESTINATION = 0, ///< Configured Interrupt exception destination to CPU/CPU2 + ///< @note + ///< Context is : + ///< - @b PINT_ID_GIC_DST : Point of destination table + + INT_CONFIG_ID_INTC_DESTINATION, ///< Configured Interrupt exception destination to DSP/DSP2 + ///< @note + ///< Context is : + ///< - @b PINT_ID_INTC_DST : Point of destination table + + + + ENUM_DUMMY4WORD(INT_CONFIG_ID) +} INT_CONFIG_ID; + +/** + Interrupt module ID + + Interrupt module ID for int_getIRQId() and int_getDummyId(). +*/ +#if(_ARM_GIC_USAGE_ == DISABLE) +#define INT_GIC_SPI_START_ID 0 +#else +#define INT_GIC_SPI_START_ID 32 +#endif + +typedef enum +{ + INT_ID_TIMER = INT_GIC_SPI_START_ID, + INT_ID_SIE, + INT_ID_SIE2, + INT_ID_SIE3, + + INT_ID_SIE4, + INT_ID_IPE, + INT_ID_IME, + INT_ID_DCE, + + INT_ID_IFE, + INT_ID_IFE2, + INT_ID_DIS, + INT_ID_FDE, + +// INT_ID_RDE, //Removed @ NT96680 + INT_ID_ETH_LPI, //Ethernet_LPI + INT_ID_RHE, + INT_ID_DRE, + INT_ID_DAI, //15 + + INT_ID_H26X, + INT_ID_JPEG, + INT_ID_GRAPHIC, + INT_ID_GRAPHIC2, + + INT_ID_AFFINE, + INT_ID_ISE, + INT_ID_TGE, + INT_ID_TSMUX, + + INT_ID_GPIO, + INT_ID_REMOTE, + INT_ID_PWM, + INT_ID_USB, + + INT_ID_USB3, + INT_ID_NAND, + INT_ID_SDIO, + INT_ID_SDIO2, //31 + + INT_ID_SDIO3, + INT_ID_DMA, + INT_ID_ETHERNET, + INT_ID_SPI, + + INT_ID_SPI2, + INT_ID_SPI3, + INT_ID_SPI4, +// INT_ID_SPI5, //Removed @ NT96680 + INT_ID_ETH_REV_MII, //Ethernet_RevMII + + INT_ID_SIF, + INT_ID_I2C, + INT_ID_I2C2, + INT_ID_UART, //43 + + INT_ID_UART2, + INT_ID_UART3, + INT_ID_UART4, + INT_ID_ADC, + + INT_ID_IDE, + INT_ID_IDE2, + INT_ID_DSI, + INT_ID_MI, //51 + + INT_ID_HDMI, +// INT_ID_VX1, //Removed @ NT96680 + INT_ID_DMA2, //New @ NT96680 + INT_ID_LVDS, + INT_ID_LVDS2, //55 + + INT_ID_RTC, + INT_ID_WDT, + INT_ID_CG, + INT_ID_CC, //59 + + INT_ID_I2C3, //60 +// New add @ NT96680 + INT_ID_SLVS_EC, + INT_ID_LVDS3, //share with HiSPi3/CSI3 + INT_ID_LVDS4, //share with HiSPi4/CSI4 + + INT_ID_LVDS5, //share with HiSPi5/CSI5 + INT_ID_LVDS6, //share with HiSPi6/CSI6 + INT_ID_LVDS7, //share with HiSPi7/CSI7 + INT_ID_LVDS8, //share with HiSPi8/CSI8 + + INT_ID_SIE5, + INT_ID_SIE6, + INT_ID_SIE7, + INT_ID_SIE8, + + INT_ID_IVE, + INT_ID_SVM, + INT_ID_SDE, + INT_ID_CNN, //75 + + INT_ID_DSP, + INT_ID_DSP2, + INT_ID_CANBUS, + INT_ID_CRYPTO, //79 + + INT_ID_COPY, + INT_ID_ROTATE, + INT_ID_I2C4, + INT_ID_I2C5, //83 + +// INT_ID_I2C6, +// INT_ID_I2C7, + INT_ID_DRTC, + INT_ID_ISE2, + INT_ID_TIMER2, + INT_ID_GPIO2, //87 + + INT_ID_PWM2, + INT_ID_CC2, //89 + INT_ID_SIF2, + + INT_ID_DSP_2, + INT_ID_DSP_2_2, + INT_ID_TSDEMUX, //93 + + INT_ID_CNT, + INT_ID_MAX = INT_ID_CNT - INT_GIC_SPI_START_ID, //94 + + + INT_ID_WFI = 229, + INT_ID_GIC_TOTAL = 256, + ENUM_DUMMY4WORD(INT_ID) +} INT_ID; + +typedef enum +{ + INT_TARGET_CORE0 = 1, + INT_TARGET_CORE1, + ENUM_DUMMY4WORD(INT_CORE_ID) +} INT_CORE_ID; + +/* + Interrupt module ID of GIC + + Indicate which core will configured as destination + + @note For DMA_WRITEPROT_ATTR +*/ + + +typedef union +{ + INT_PTN Reg[2]; + struct + { + //INT0 + UINT32 bInt_ID_TIMER:1; + UINT32 bInt_ID_SIE:1; + UINT32 bInt_ID_SIE2:1; + UINT32 bInt_ID_SIE3:1; + + UINT32 bInt_ID_SIE4:1; + UINT32 bInt_ID_IPE:1; + UINT32 bInt_ID_IME:1; + UINT32 bInt_ID_DCE:1; + + UINT32 bInt_ID_IFE:1; + UINT32 bInt_ID_IFE2:1; + UINT32 bInt_ID_DIS:1; + UINT32 bInt_ID_FDE:1; + +// UINT32 bInt_ID_RDE:1; + UINT32 bInt_ID_Ethernet_LPI:1; + UINT32 bInt_ID_RHE:1; + UINT32 bInt_ID_DRE:1; + UINT32 bInt_ID_DAI:1; + + + //INT16 + UINT32 bInt_ID_H264:1; + UINT32 bInt_ID_JPEG:1; + UINT32 bInt_ID_GRAPHIC:1; + UINT32 bInt_ID_GRAPHIC2:1; + + UINT32 bInt_ID_AFFINE:1; + UINT32 bInt_ID_ISE:1; + UINT32 bInt_ID_TGE:1; + UINT32 bInt_ID_TSMUX:1; + + UINT32 bInt_ID_GPIO:1; + UINT32 bInt_ID_REMOTE:1; + UINT32 bInt_ID_PWM:1; + UINT32 bInt_ID_USB:1; + + UINT32 bInt_ID_USB3:1; + UINT32 bInt_ID_NAND:1; + UINT32 bInt_ID_SDIO:1; + UINT32 bInt_ID_SDIO2:1; + + //INT32 + UINT32 bInt_ID_SDIO3:1; + UINT32 bInt_ID_DMA:1; + UINT32 bInt_ID_ETHERNET:1; + UINT32 bInt_ID_SPI:1; + + UINT32 bInt_ID_SPI2:1; + UINT32 bInt_ID_SPI3:1; + UINT32 bInt_ID_SPI4:1; + UINT32 bInt_ID_Ehternet_RevMII:1; +// UINT32 bInt_ID_SPI5:1; + + + UINT32 bInt_ID_SIF:1; + UINT32 bInt_ID_I2C:1; + UINT32 bInt_ID_I2C2:1; + UINT32 bInt_ID_UART:1; + + UINT32 bInt_ID_UART2:1; + UINT32 bInt_ID_UART3:1; + UINT32 bInt_ID_UART4:1; + UINT32 bInt_ID_ADC:1; + + //INT48 + UINT32 bInt_ID_IDE:1; + UINT32 bInt_ID_IDE2:1; + UINT32 bInt_ID_DSI:1; + UINT32 bInt_ID_MI:1; + + //INT52 + UINT32 bInt_ID_HDMI:1; +// UINT32 bInt_ID_VX1:1; + UINT32 bInt_ID_DMA2:1; + UINT32 bInt_ID_LVDS:1; // LVDS& HiSPI& CSI + UINT32 bInt_ID_LVDS2:1; //LVDS2&HiSPI2&CSI2 + + //INT56 + UINT32 bInt_ID_RTC:1; + UINT32 bInt_ID_WDT:1; + UINT32 bInt_ID_CG:1; + UINT32 bInt_ID_CC:1; + + //INT60 + UINT32 bInt_ID_I2C3:1; + UINT32 bInt_ID_SLVS_EC:1; + UINT32 bInt_ID_LVDS3:1; //LVDS3&HiSPI3&CSI3 + UINT32 bInt_ID_LVDS4:1; //LVDS4&HiSPI4&CSI4 + + //INT64 + UINT32 bInt_ID_LVDS5:1; //LVDS5&HiSPI5&CSI5 + UINT32 bInt_ID_LVDS6:1; //LVDS6&HiSPI6&CSI6 + UINT32 bInt_ID_LVDS7:1; //LVDS7&HiSPI7&CSI7 + UINT32 bInt_ID_LVDS8:1; //LVDS8&HiSPI8&CSI8 + + //INT68 + UINT32 bInt_ID_SIE5:1; + UINT32 bInt_ID_SIE6:1; + UINT32 bInt_ID_SIE7:1; + UINT32 bInt_ID_SIE8:1; + + //INT72 + UINT32 bInt_ID_IVE:1; + UINT32 bInt_ID_SVM:1; + UINT32 bInt_ID_SDE:1; + UINT32 bInt_ID_CNN:1; + + //INT76 + UINT32 bInt_ID_DSP:1; + UINT32 bInt_ID_DSP2:1; + UINT32 bInt_ID_CANBUS:1; + UINT32 bInt_ID_CRYPTO:1; + + //INT80 + UINT32 bInt_ID_HWCOPY:1; + UINT32 bInt_ID_ROTATE:1; + UINT32 bInt_ID_I2C4:1; + UINT32 bInt_ID_I2C5:1; + + //INT84 + UINT32 bInt_ID_I2C6:1; + UINT32 bInt_ID_I2C7:1; + UINT32 bInt_ID_TIMER2:1; //Timer to CA53 core2 + UINT32 bInt_ID_GPIO2:1; //GPIO to CA53 core2 + + //INT88 + UINT32 bInt_ID_PWM2:1; + UINT32 bInt_ID_CC2:1; + UINT32 bInt_ID_SIF2:1; //Timer to CA53 core2 + UINT32 bInt_ID_DSP_2:1; //?? + + //INT92 + UINT32 bInt_ID_DSP2_2:1; //?? + UINT32 bInt_ID_TMDEMUX:1; + UINT32 bReserved92:2; + //INT96 => 4 + UINT32 bReserved96:4; + //INT100=> 4 + UINT32 bReserved100:4; + //INT104=> 4 + UINT32 bReserved104:4; + //INT108=> 4 + UINT32 bReserved108:4; + //INT112=> 4 + UINT32 bReserved112:4; + //INT116=> 4 + UINT32 bReserved116:4; + //INT120=> 4 + UINT32 bReserved120:4; + //INT124=> 4 + UINT32 bReserved124:4; + }Bit; +} INT_GIC_ID_DST, *PINT_GIC_ID_DST; + +/* + Interrupt module ID of INTC + + Indicate which core will configured as destination + + @note For DMA_WRITEPROT_ATTR +*/ + + +typedef union +{ + INT_PTN Reg[2]; + struct + { + //INT0 + UINT32 bInt_ID_TIMER:1; + UINT32 bInt_ID_SIE:1; + UINT32 bInt_ID_SIE2:1; + UINT32 bInt_ID_SIE3:1; + + UINT32 bInt_ID_SIE4:1; + UINT32 bInt_ID_IPE:1; + UINT32 bInt_ID_IME:1; + UINT32 bInt_ID_DCE:1; + + UINT32 bInt_ID_IFE:1; + UINT32 bInt_ID_IFE2:1; + UINT32 bInt_ID_DIS:1; + UINT32 bInt_ID_FDE:1; + + //INT12 + UINT32 bReserved12:1; + UINT32 bInt_ID_RHE:1; + UINT32 bInt_ID_DRE:1; + UINT32 bInt_ID_DAI:1; + + + //INT16 + UINT32 bInt_ID_H264:1; + UINT32 bInt_ID_JPEG:1; + UINT32 bInt_ID_GRAPHIC:1; + UINT32 bInt_ID_GRAPHIC2:1; + + //INT20 + UINT32 bInt_ID_AFFINE:1; + UINT32 bInt_ID_ISE:1; + UINT32 bInt_ID_TGE:1; + UINT32 bInt_ID_TSMUX:1; + + UINT32 bInt_ID_GPIO:1; + UINT32 bInt_ID_REMOTE:1; + UINT32 bInt_ID_PWM:1; + UINT32 bInt_ID_USB:1; + + UINT32 bInt_ID_USB3:1; + UINT32 bInt_ID_NAND:1; + UINT32 bInt_ID_SDIO:1; + UINT32 bInt_ID_SDIO2:1; + + //INT32 + UINT32 bInt_ID_SDIO3:1; + UINT32 bInt_ID_DMA:1; + UINT32 bInt_ID_ETHERNET:1; + UINT32 bInt_ID_SPI:1; + + //INT36 + UINT32 bInt_ID_SPI2:1; + UINT32 bInt_ID_SPI3:1; + UINT32 bInt_ID_SPI4:1; + UINT32 bReserved39:1; +// UINT32 bInt_ID_SPI5:1; + + //INT40 + UINT32 bReserved40:1; + UINT32 bInt_ID_I2C:1; + UINT32 bInt_ID_I2C2:1; + UINT32 bInt_ID_UART:1; + + UINT32 bInt_ID_UART2:1; + UINT32 bInt_ID_UART3:1; + UINT32 bInt_ID_UART4:1; + UINT32 bInt_ID_ADC:1; + + //INT48 + UINT32 bInt_ID_IDE:1; + UINT32 bInt_ID_IDE2:1; + UINT32 bInt_ID_DSI:1; + UINT32 bInt_ID_MI:1; + + //INT52 + UINT32 bInt_ID_HDMI:1; +// UINT32 bInt_ID_VX1:1; + UINT32 bInt_ID_DMA2:1; + UINT32 bInt_ID_LVDS:1; // LVDS& HiSPI& CSI + UINT32 bInt_ID_LVDS2:1; //LVDS2&HiSPI2&CSI2 + + //INT56 + UINT32 bInt_ID_RTC:1; + UINT32 bInt_ID_WDT:1; + UINT32 bInt_ID_CG:1; + UINT32 bInt_ID_CC:1; + + //INT60 + UINT32 bInt_ID_I2C3:1; + UINT32 bInt_ID_SLVS_EC:1; + UINT32 bInt_ID_LVDS3:1; //LVDS3&HiSPI3&CSI3 + UINT32 bInt_ID_LVDS4:1; //LVDS4&HiSPI4&CSI4 + + //INT64 + UINT32 bInt_ID_LVDS5:1; //LVDS5&HiSPI5&CSI5 + UINT32 bInt_ID_LVDS6:1; //LVDS6&HiSPI6&CSI6 + UINT32 bInt_ID_LVDS7:1; //LVDS7&HiSPI7&CSI7 + UINT32 bInt_ID_LVDS8:1; //LVDS8&HiSPI8&CSI8 + + //INT68 + UINT32 bInt_ID_SIE5:1; + UINT32 bInt_ID_SIE6:1; + UINT32 bInt_ID_SIE7:1; + UINT32 bInt_ID_SIE8:1; + + //INT72 + UINT32 bInt_ID_IVE:1; + UINT32 bInt_ID_SVM:1; + UINT32 bInt_ID_SDE:1; + UINT32 bInt_ID_CNN:1; + + //INT76 + UINT32 bInt_ID_DSP:1; + UINT32 bInt_ID_DSP2:1; + UINT32 bInt_ID_CANBUS:1; + UINT32 bInt_ID_CRYPTO:1; + + //INT80 + UINT32 bInt_ID_HWCOPY:1; + UINT32 bInt_ID_ROTATE:1; + UINT32 bInt_ID_I2C4:1; + UINT32 bInt_ID_I2C5:1; + + //INT84 + UINT32 bInt_ID_I2C6:1; + UINT32 bInt_ID_I2C7:1; + UINT32 bReserved86:1; + UINT32 bReserved87:1; + + //INT88 + UINT32 bInt_ID_TMDEMUX:1; + UINT32 bReserved89:3; + + //INT92 + UINT32 bReserved92:4; + //INT96 => 4 + UINT32 bReserved96:4; + //INT100=> 4 + UINT32 bReserved100:4; + //INT104=> 4 + UINT32 bReserved104:4; + //INT108=> 4 + UINT32 bReserved108:4; + //INT112=> 4 + UINT32 bReserved112:4; + //INT116=> 4 + UINT32 bReserved116:4; + //INT120=> 4 + UINT32 bReserved120:4; + //INT124=> 4 + UINT32 bReserved124:4; + }Bit; +} INT_INTC_ID_DST, *PINT_INTC_ID_DST; + +typedef union +{ + INT_PTN Reg[4]; + struct + { + //INT0 + UINT32 bInt_ID_TIMER:1; + UINT32 bInt_ID_SIE:1; + UINT32 bInt_ID_SIE2:1; + UINT32 bInt_ID_SIE3:1; + + UINT32 bInt_ID_SIE4:1; + UINT32 bInt_ID_IPE:1; + UINT32 bInt_ID_IME:1; + UINT32 bInt_ID_DCE:1; + + UINT32 bInt_ID_IFE:1; + UINT32 bInt_ID_IFE2:1; + UINT32 bInt_ID_DIS:1; + UINT32 bInt_ID_FDE:1; + +// UINT32 bInt_ID_RDE:1; + UINT32 bInt_ID_Ethernet_LPI:1; + UINT32 bInt_ID_RHE:1; + UINT32 bInt_ID_DRE:1; + UINT32 bInt_ID_DAI:1; + + + //INT16 + UINT32 bInt_ID_H264:1; + UINT32 bInt_ID_JPEG:1; + UINT32 bInt_ID_GRAPHIC:1; + UINT32 bInt_ID_GRAPHIC2:1; + + UINT32 bInt_ID_AFFINE:1; + UINT32 bInt_ID_ISE:1; + UINT32 bInt_ID_TGE:1; + UINT32 bInt_ID_TSMUX:1; + + UINT32 bInt_ID_GPIO:1; + UINT32 bInt_ID_REMOTE:1; + UINT32 bInt_ID_PWM:1; + UINT32 bInt_ID_USB:1; + + UINT32 bInt_ID_USB3:1; + UINT32 bInt_ID_NAND:1; + UINT32 bInt_ID_SDIO:1; + UINT32 bInt_ID_SDIO2:1; + + //INT32 + UINT32 bInt_ID_SDIO3:1; + UINT32 bInt_ID_DMA:1; + UINT32 bInt_ID_ETHERNET:1; + UINT32 bInt_ID_SPI:1; + + UINT32 bInt_ID_SPI2:1; + UINT32 bInt_ID_SPI3:1; + UINT32 bInt_ID_SPI4:1; + UINT32 bInt_ID_Ehternet_RevMII:1; +// UINT32 bInt_ID_SPI5:1; + + + UINT32 bInt_ID_SIF:1; + UINT32 bInt_ID_I2C:1; + UINT32 bInt_ID_I2C2:1; + UINT32 bInt_ID_UART:1; + + UINT32 bInt_ID_UART2:1; + UINT32 bInt_ID_UART3:1; + UINT32 bInt_ID_UART4:1; + UINT32 bInt_ID_ADC:1; + + //INT48 + UINT32 bInt_ID_IDE:1; + UINT32 bInt_ID_IDE2:1; + UINT32 bInt_ID_DSI:1; + UINT32 bInt_ID_MI:1; + + //INT52 + UINT32 bInt_ID_HDMI:1; +// UINT32 bInt_ID_VX1:1; + UINT32 bInt_ID_DMA2:1; + UINT32 bInt_ID_LVDS:1; // LVDS& HiSPI& CSI + UINT32 bInt_ID_LVDS2:1; //LVDS2&HiSPI2&CSI2 + + //INT56 + UINT32 bInt_ID_RTC:1; + UINT32 bInt_ID_WDT:1; + UINT32 bInt_ID_CG:1; + UINT32 bInt_ID_CC:1; + + //INT60 + UINT32 bInt_ID_I2C3:1; + UINT32 bInt_ID_SLVS_EC:1; + UINT32 bInt_ID_LVDS3:1; //LVDS3&HiSPI3&CSI3 + UINT32 bInt_ID_LVDS4:1; //LVDS4&HiSPI4&CSI4 + + //INT64 + UINT32 bInt_ID_LVDS5:1; //LVDS5&HiSPI5&CSI5 + UINT32 bInt_ID_LVDS6:1; //LVDS6&HiSPI6&CSI6 + UINT32 bInt_ID_LVDS7:1; //LVDS7&HiSPI7&CSI7 + UINT32 bInt_ID_LVDS8:1; //LVDS8&HiSPI8&CSI8 + + //INT68 + UINT32 bInt_ID_SIE5:1; + UINT32 bInt_ID_SIE6:1; + UINT32 bInt_ID_SIE7:1; + UINT32 bInt_ID_SIE8:1; + + //INT72 + UINT32 bInt_ID_IVE:1; + UINT32 bInt_ID_SVM:1; + UINT32 bInt_ID_SDE:1; + UINT32 bInt_ID_CNN:1; + + //INT76 + UINT32 bInt_ID_DSP:1; + UINT32 bInt_ID_DSP2:1; + UINT32 bInt_ID_CANBUS:1; + UINT32 bInt_ID_CRYPTO:1; + + //INT80 + UINT32 bInt_ID_HWCOPY:1; + UINT32 bInt_ID_ROTATE:1; + UINT32 bInt_ID_I2C4:1; + UINT32 bInt_ID_I2C5:1; + + //INT84 + UINT32 bInt_ID_I2C6:1; + UINT32 bInt_ID_I2C7:1; + UINT32 bInt_ID_TIMER2:1; //Timer to CA53 core2 + UINT32 bInt_ID_GPIO2:1; //GPIO to CA53 core2 + + //INT88 + UINT32 bInt_ID_PWM2:1; + UINT32 bInt_ID_CC2:1; + UINT32 bInt_ID_SIF2:1; //Timer to CA53 core2 + UINT32 bInt_ID_DSP_2:1; //?? + + //INT92 + UINT32 bInt_ID_DSP2_2:1; //?? + UINT32 bInt_ID_TMDEMUX:1; + UINT32 bReserved92:2; + //INT96 => 4 + UINT32 bReserved96:4; + //INT100=> 4 + UINT32 bReserved100:4; + //INT104=> 4 + UINT32 bReserved104:4; + //INT108=> 4 + UINT32 bReserved108:4; + //INT112=> 4 + UINT32 bReserved112:4; + //INT116=> 4 + UINT32 bReserved116:4; + //INT120=> 4 + UINT32 bReserved120:4; + //INT124=> 4 + UINT32 bReserved124:4; + }Bit; +} INT_GIC_ID_ENABLE, *PINT_GIC_ID_ENABLE; + +typedef struct +{ + INT_GIC_ID_DST int_id_dst[CC_CORE_CA53_CORE_NUM]; +} INT_GIC_DST, *PINT_GIC_DST; + +typedef struct +{ + INT_INTC_ID_DST int_id_dst[CC_CORE_DSP_NUM]; +} INT_INTC_DST, *PINT_INTC_DST; + +typedef struct +{ + INT_GIC_ID_ENABLE int_id_enable; +} INT_INTC_ENABLE, *PINT_INTC_ENABLE; + + +// MIPI CSI share the interrupt ID with LVDS / HiSPi +#define INT_ID_CSI INT_ID_LVDS +#define INT_ID_CSI2 INT_ID_LVDS2 + +#define INT_ID_CSI3 INT_ID_LVDS3 +#define INT_ID_CSI4 INT_ID_LVDS4 + +#define INT_ID_CSI5 INT_ID_LVDS5 +#define INT_ID_CSI6 INT_ID_LVDS6 +#define INT_ID_CSI7 INT_ID_LVDS7 +#define INT_ID_CSI8 INT_ID_LVDS8 + +#define INT_ID_VX1 INT_ID_LVDS5 +#define INT_ID_VX1_2 INT_ID_LVDS6 + +// Macro to generate bit value from ID +#define INT_ID_TO_BIT(Id) ((INT_PTN)(1) << (Id)) + +// check type and ID +STATIC_ASSERT((INT_ID_MAX - INT_GIC_SPI_START_ID) <= (sizeof(INT_PTN) << 3)); + +#define INT_ALL_MODULES ((sizeof(INT_PTN) == 4) ? 0xFFFFFFFFul : 0xFFFFFFFFFFFFFFFFull) + +extern INT_PTN int_getEnable(void); +extern INT_PTN int_getFlag(void); +extern INT_ID int_getIRQId(void); +extern INT_ID int_getDummyId(void); +extern UINT32 int_getLatency(void); +extern void int_setConfig(INT_CONFIG_ID ConfigID, UINT32 uiConfig); +extern void int_get_gic_enable(PINT_INTC_ENABLE gic_int_en); + + +//@} + +#endif diff --git a/board/novatek/na51055/loader/Include/modelext/model_cfg.h b/board/novatek/na51055/loader/Include/modelext/model_cfg.h new file mode 100755 index 000000000000..eb7be844cc5e --- /dev/null +++ b/board/novatek/na51055/loader/Include/modelext/model_cfg.h @@ -0,0 +1,8 @@ +#ifndef _MODEL_CFG_H +#define _MODEL_CFG_H + +#define MODEL_CFG_VER 0x16072510 ///< YYYY/MM/DD HH + +//No data structure, just a string. + +#endif diff --git a/board/novatek/na51055/loader/Include/modelext/modelext_info.h b/board/novatek/na51055/loader/Include/modelext/modelext_info.h new file mode 100755 index 000000000000..b96b50b966dd --- /dev/null +++ b/board/novatek/na51055/loader/Include/modelext/modelext_info.h @@ -0,0 +1,35 @@ +#ifndef _MODELEXT_INFO_H +#define _MODELEXT_INFO_H + +#define MODELEXT_INFO_VER 0x16072219 ///< YYYY/MM/DD HH + +typedef enum _MODELEXT_TYPE { + MODELEXT_TYPE_DUMMY = 0, + MODELEXT_TYPE_INFO , + MODELEXT_TYPE_BIN_INFO , + MODELEXT_TYPE_PINMUX_CFG , + MODELEXT_TYPE_INTDIR_CFG , + MODELEXT_TYPE_EMB_PARTITION, + MODELEXT_TYPE_GPIO_INFO , + MODELEXT_TYPE_DRAM_PARTITION, + MODELEXT_TYPE_MODEL_CFG, + MODELEXT_TYPE_MAX +} MODELEXT_TYPE; + +typedef struct _MODELEXT_HEADER { + unsigned int size; ///< header size + container size + unsigned int type; ///< MODELEXT_TYPE + unsigned int number; ///< number of carried data elements + unsigned int version; ///< data header version +} MODELEXT_HEADER; + +typedef struct _MODELEXT_INFO { + char name[8]; ///< always be 'M','O','D','E','L','E','X','T' + char chip_name[8]; ///< CHIP_NAME (8) ---- check by encrypt_bin + char version[8]; ///< Reversed + char date[8]; ///< date + unsigned int ext_bin_length; ///< Bin File Length (4) --- write by encrypt_bin + unsigned int check_sum; ///< Check Sum Value (4) ----- write by encrypt_bin +} MODELEXT_INFO; + +#endif diff --git a/board/novatek/na51055/loader/Include/modelext/modelext_parser.h b/board/novatek/na51055/loader/Include/modelext/modelext_parser.h new file mode 100755 index 000000000000..e00170ea1a85 --- /dev/null +++ b/board/novatek/na51055/loader/Include/modelext/modelext_parser.h @@ -0,0 +1,78 @@ +#ifndef _MODELEXT_PARSER_H +#define _MODELEXT_PARSER_H + +#include "modelext_info.h" + +/** + modelext inline parse. + + modelext info tables are set to an certain memory address, + which use to get data pointer you want. + + @param[in] modelext info address. + @param[in] refer to MODELEXT_TYPE_ + @param[in] a memory space will be stored with description of modelext type. + @return + - @b address: the data pointer of result. +*/ +static inline unsigned char *modelext_get_cfg(unsigned char *buf, unsigned int type, MODELEXT_HEADER **header) +{ +#define MAGIC "MODELEXT" + + MODELEXT_HEADER *h = (MODELEXT_HEADER*)buf; + MODELEXT_INFO *d = (MODELEXT_INFO*)(buf + sizeof(MODELEXT_HEADER)); + + if(type >= MODELEXT_TYPE_MAX) + { + if(header) + { + *header = NULL; + } + return NULL; + } + + if(memcmp(d->name, MAGIC, strlen(MAGIC))) + { + if(header) + { + *header = NULL; + } + return NULL; + } + + MODELEXT_HEADER* h_tail = (MODELEXT_HEADER*)(buf + d->ext_bin_length); + + while(h->size) + { + if(h->type == type) + { + break; + } + else + { + h = (MODELEXT_HEADER*)(((char*)h) + h->size); + if(h >= h_tail) + { + return NULL; + } + } + } + + if(!h->size) + { + if(header) + { + *header = NULL; + } + return NULL; + } + + if(header) + { + *header = h; + } + + return (unsigned char*)(((unsigned char*)h) + sizeof(MODELEXT_HEADER)); +} + +#endif diff --git a/board/novatek/na51055/loader/Include/modelext/shm_info.h b/board/novatek/na51055/loader/Include/modelext/shm_info.h new file mode 100755 index 000000000000..4ffaeaa3e637 --- /dev/null +++ b/board/novatek/na51055/loader/Include/modelext/shm_info.h @@ -0,0 +1,131 @@ +/** + @file shm_info.h + @ingroup + @note THESE STRUCTS ARE VERY VERY IMPORTANT FORMAT DEFINITION OF SYSTEM, + DO NOT MODIFY ANY ITEM OR INSERT/REMOVE ANY ITEM OF THESE STRUCTS!!! + + Copyright Novatek Microelectronics Corp. 2018. All rights reserved. +*/ +#ifndef __ARCH_COMMON_SHM_INFO_H +#define __ARCH_COMMON_SHM_INFO_H + +#if defined(__UITRON) +#include "Type.h" +#elif defined(_NVT_LINUX_) +#include +#else +#include +#endif + +#define SHM_INFO_VER 0x18060815 ///< YYYY/MM/DD HH + +/** + @name Ld control flag for LDINFO.LdCtrl +*/ +//@{ +#define LDCF_PARTLOAD_EN 0x0000001 ///< BIT 0.PARTLOAD_EN (0=no,1=yes) +//@} + +/** + @name Ld control flag for LDINFO.LdCtrl2 +*/ +//@{ +#define LDCF_UPDATE_FW 0x0000001 ///< BIT 0.UPDATE_FW (0=no,1=yes) +#define LDCF_UPDATE_LD 0x0000002 ///< BIT 1.UPDATE_LD (0=no,1=yes) +#define LDCF_BOOT_CARD 0x0000004 ///< BIT 2.BOOT_CARD (0=no,1=yes) +#define LDCF_BOOT_FLASH 0x0000008 ///< BIT 3.BOOT_FLASH (0=no,1=yes) +#define LDCF_UPDATE_CAL 0x0000010 ///< BIT 4.UPDATE_CAL (0=no,1=yes) +#define LDCF_UPDATE_FW_DONE 0x0000100 ///< BIT 8.UPDATE_FW_DONE (0=no,1=yes) +#define LDCF_S3_BOOT 0x0000200 ///< BIT 9.BOOT FROM S3 STATE (0=no,1=yes) +//@} + +/** + Loader information + + MUST 28 WORDS +*/ +typedef struct _BOOTINFO { + char LdInfo_1[16]; ///< LD-NAME(16) ------ w by Ld + UINT32 LdCtrl; ///< Fw flag (4) ----------- r by Ld + ///< BIT 0.enable part-load (0=full load,1=part load) + UINT32 LdCtrl2; ///< Ld flag (4) ----------- w by Ld + ///< BIT 0.UPDATE_FW (0=no,1=yes) + ///< BIT 1.UPDATE_LOADER (0=no,1=yes) + ///< BIT 2.BOOT_CARD (0=no,1=yes) + ///< BIT 3.BOOT_FLASH (0=no,1=yes) + ///< BIT 4.UPDATE_CAL (0=no,1=yes) + ///< BIT 8.UPDATE_FW_DONE (0=no,1=yes) + //< BIT 9.BOOT FROM S3 STATE (0=no,1=yes) + UINT32 LdLoadSize; ///< Ld load size (4) ------ w by Ld (NOTE: this value must be block size align) + UINT32 LdLoadTime; ///< Ld exec time(us) (4) -- w by Ld + UINT32 LdResvSize; ///< Ld size (by bytes, reserved size in partition) (4) ------ w by Ld + UINT32 FWResvSize; ///< FW reserved size (4) ------ w by Ld + UINT16 LdPackage; ///< IC package expected by Ld (0xFF: ES, 0: 660, 3: 663, 5: 665, etc...) + UINT16 LdStorage; ///< Internal storage expected by Ld (0: unkown, 1: nand, 2: spi nand, 3: spi nor) + UINT32 fdt_addr; + UINT32 Resv[16]; ///< (4*5) ------------ reserved for project Ld +} BOOTINFO; + +STATIC_ASSERT(sizeof(BOOTINFO) == 112); + +/** + communication information + + MUST 54 WORDS +*/ +//BOOT_REASON +#define BOOT_REASON_NORMAL 0 // normal or from sd +#define BOOT_REASON_FWUPDFW 1 // Firmware update Firmware +#define BOOT_REASON_FROM_USB 2 // Update from USB +#define BOOT_REASON_FROM_ETH 3 // Update from ethernet +#define BOOT_REASON_FORMAT_ROOTFS 4 // Format rootfs because rootfs broken is detected +#define BOOT_REASON_RECOVERY_SYS 5 // System recovery from eMMC +#define BOOT_REASON_FROM_UART 6 // Update from uart + +//COMMINFO::Resv field definition +typedef enum _COMM_RESV_IDX_{ + COMM_RESV_IDX_BOOT_REASON = 0, + COMM_RESV_IDX_CORE1_START = 1, + COMM_RESV_IDX_CORE2_START = 2, + COMM_RESV_IDX_UITRON_COMP_ADDR = 3, + COMM_RESV_IDX_UITRON_COMP_LEN = 4, + COMM_RESV_IDX_FW_UPD_ADDR = 5, + COMM_RESV_IDX_FW_UPD_LEN = 6, + COMM_RESV_IDX_OTA_NAME_ADDR = 7, + COMM_RESV_IDX_S3_APB_ADDR = 8, + COMM_RESV_IDX_S3_APB_LEN = 9, +} COMM_RESV_IDX; + +typedef struct _COMMINFO { + char CommInfo_1[16];///< COMMINFO (16) + UINT32 Resv[45];///< reversed data for communication between loader, uboot, uitron, linux + // Resv[0]: COMM_RESV_IDX_BOOT_REASON, + // BYTE[0]: BOOT_REASON: use #define COMM_BOOT_REASON_ + // BYTE[1]: BOOT_DONE: 0:Not yet, 1:Done 2:NG + // BYTE[2]: DSP_DONE: 0:Not yet, 1:Done 2:NG + // Resv[1]: COMM_CORE1_START (used on uboot trigger loader to start uitron) + // Resv[2]: COMM_CORE2_START (used on uitron trigger linux resume) + // Resv[3]: COMM_UITRON_COMP_ADDR + // Resv[4]: COMM_UITRON_COMP_LEN + // Resv[5]: COMM_FW_UPD_ADDR + // Resv[6]: COMM_FW_UPD_LEN + // Resv[7]: COMM_OTA_NAME_ADDR : OTA name + // Resv[8]: COMM_S3_APB_ADDR : S3-resume's apb register info addr + // Resv[9]: COMM_S3_APB_LEN : S3-resume's apb register info len + UINT32 UserDef[5]; ///< can be used for customer +} COMMINFO; + +STATIC_ASSERT(sizeof(COMMINFO) == 216); + +/** + Binary file information + + MUST 82 WORDS +*/ +typedef struct _SHMINFO { + BOOTINFO boot; + COMMINFO comm; +} SHMINFO; + +STATIC_ASSERT(sizeof(SHMINFO) == 328); +#endif /* __ARCH_COMMON_SHM_INFO_H */ diff --git a/board/novatek/na51055/loader/Include/modelext/top.h b/board/novatek/na51055/loader/Include/modelext/top.h new file mode 100755 index 000000000000..2011294fca65 --- /dev/null +++ b/board/novatek/na51055/loader/Include/modelext/top.h @@ -0,0 +1,1382 @@ +/** + TOP controller header + + Sets the pinmux of each module. + + @file top.h + @ingroup mIDrvSys_TOP + @note Refer NT96650 data sheet for PIN/PAD naming + + Copyright Novatek Microelectronics Corp. 2013. All rights reserved. +*/ + +#ifndef _TOP_H +#define _TOP_H + +#if defined(__UITRON) +#include "Type.h" +#else +#include "nvt_type.h" +#endif +//#define TOP_NEW_API (0) + +/** + @addtogroup mIDrvSys_TOP +*/ +//@{ +#define PIN_GROUP_CONFIG_VER 0x16062910 + +/** + Debug port select ID + + Debug port select value for pinmux_select_debugport(). +*/ +typedef enum +{ + PINMUX_DEBUGPORT_CKG = 0x0000, ///< CKGen + PINMUX_DEBUGPORT_ARB = 0x0001, ///< Arbiter + PINMUX_DEBUGPORT_DDR = 0x0002, ///< DDR + PINMUX_DEBUGPORT_APBTG = 0x0003, ///< APBTG + PINMUX_DEBUGPORT_OCPBRG = 0x0004, ///< OCP BRG + PINMUX_DEBUGPORT_INTC = 0x0005, ///< INTC + PINMUX_DEBUGPORT_IDE = 0x0006, ///< IDE + PINMUX_DEBUGPORT_IDE2 = 0x0007, ///< IDE2 + PINMUX_DEBUGPORT_MI = 0x0008, ///< MI + PINMUX_DEBUGMIPI_DSI = 0x0009, ///< MIPI DSI + PINMUX_DEBUGMIPI_CC = 0x000A, ///< CC + PINMUX_DEBUGMIPI_EFUSE = 0x000B, ///< EFUSE + PINMUX_DEBUGMIPI_ETH = 0x000C, ///< ETH + PINMUX_DEBUGMIPI_AHBC_ETH = 0x000D, ///< AHBC ETH + PINMUX_DEBUGMIPI_TSMUX = 0x000E, ///< TSMUX + + PINMUX_DEBUGPORT_TIMER = 0x0010, ///< Timer + PINMUX_DEBUGPORT_WDT = 0x0011, ///< WDT + PINMUX_DEBUGPORT_GPIO = 0x0012, ///< GPIO + PINMUX_DEBUGPORT_SSP = 0x0013, ///< SSP (DAI) + PINMUX_DEBUGPORT_AUDIO = 0x0014, ///< AUDIO + PINMUX_DEBUGPORT_SDIO1 = 0x0015, ///< SDIO1 + PINMUX_DEBUGPORT_SDIO2 = 0x0016, ///< SDIO2 + PINMUX_DEBUGPORT_SDIO3 = 0x0017, ///< SDIO3 + PINMUX_DEBUGPORT_SMMC = 0x0018, ///< XD/NAND/SMC + PINMUX_DEBUGPORT_USB = 0x0019, ///< USB + PINMUX_DEBUGPORT_USB2 = 0x001A, ///< USB2 + PINMUX_DEBUGPORT_AHBC_USB = 0x001B, ///< AHBC_USB + PINMUX_DEBUGPORT_AHBC_USB2 = 0x001C, ///< AHBC_USB2 + PINMUX_DEBUGPORT_I2C = 0x001D, ///< I2C + PINMUX_DEBUGPORT_I2C2 = 0x001E, ///< I2C2 + PINMUX_DEBUGPORT_SIF = 0x001F, ///< SIF + PINMUX_DEBUGPORT_SPI = 0x0020, ///< SPI + PINMUX_DEBUGPORT_SPI2 = 0x0021, ///< SPI2 + PINMUX_DEBUGPORT_SPI3 = 0x0022, ///< SPI3 + PINMUX_DEBUGPORT_SPI4 = 0x0023, ///< SPI4 + PINMUX_DEBUGPORT_SPI5 = 0x0024, ///< SPI5 + PINMUX_DEBUGPORT_PWM = 0x0025, ///< PWM + PINMUX_DEBUGPORT_ADM = 0x0026, ///< ADC + PINMUX_DEBUGPORT_REMOTE = 0x0027, ///< Remote + PINMUX_DEBUGPORT_CRYPTO = 0x0028, ///< Crypto + + PINMUX_DEBUGPORT_OCP2BRG = 0x0030, ///< OCP2 BRG + PINMUX_DEBUGPORT_DSP = 0x0031, ///< DSP + PINMUX_DEBUGPORT_H264 = 0x0038, ///< H.264 + + PINMUX_DEBUGMIPI_CSI = 0x0040, ///< MIPI CSI + PINMUX_DEBUGMIPI_CSI2 = 0x0041, ///< MIPI CSI2 + PINMUX_DEBUGMIPI_VX1 = 0x0042, ///< VX1 + PINMUX_DEBUGPORT_SIE = 0x0043, ///< SIE + PINMUX_DEBUGMIPI_SIE2 = 0x0044, ///< SIE2 + PINMUX_DEBUGPORT_SIE3 = 0x0045, ///< SIE3 + PINMUX_DEBUGMIPI_SIE4 = 0x0046, ///< SIE4 + PINMUX_DEBUGPORT_TGE = 0x0047, ///< TGE + PINMUX_DEBUGPORT_DIS = 0x0048, ///< DIS + PINMUX_DEBUGPORT_FDE = 0x0049, ///< FDE + PINMUX_DEBUGPORT_JPEG = 0x004A, ///< JPEG + PINMUX_DEBUGPORT_GRAPHIC = 0x004B, ///< GRAPHIC + PINMUX_DEBUGPORT_GRAPHIC2 = 0x004C, ///< GRAPHIC2 + PINMUX_DEBUGPORT_IFE = 0x004D, ///< IFE + PINMUX_DEBUGPORT_AFFINE = 0x004E, ///< Affine + PINMUX_DEBUGPORT_ISE = 0x004F, ///< ISE + PINMUX_DEBUGPORT_RDE = 0x0050, ///< RDE + PINMUX_DEBUGPORT_RHE = 0x0051, ///< RHE + PINMUX_DEBUGPORT_I2C3 = 0x0052, ///< I2C3 + + PINMUX_DEBUGPORT_IPE = 0x0060, ///< IPE + PINMUX_DEBUGPORT_IME = 0x0061, ///< IME + PINMUX_DEBUGPORT_IFE2 = 0x0062, ///< IFE2 + PINMUX_DEBUGPORT_HDMI = 0x0063, ///< HDMI + PINMUX_DEBUGPORT_DCE = 0x0064, ///< DCE + PINMUX_DEBUGPORT_DRE = 0x0065, ///< DRE + +/* //remove for NT96660 + PINMUX_DEBUGPORT_AMBARD = 0x0000, ///< AMBA RD + PINMUX_DEBUGPORT_AMBAWR = 0x0001, ///< AMBA WR + PINMUX_DEBUGPORT_AHB = 0x0002, ///< AHB + PINMUX_DEBUGPORT_AHBC0 = 0x0003, ///< AHB C0 + PINMUX_DEBUGPORT_AHBC1 = 0x0004, ///< AHB C1 + PINMUX_DEBUGPORT_APBBRG = 0x0005, ///< APB BRG + PINMUX_DEBUGPORT_DDRIO = 0x0006, ///< DDRIO + PINMUX_DEBUGPORT_LVDS = 0x001F, ///< LVDS + PINMUX_DEBUGPORT_SDIO1_FIFO = 0x0022, ///< SDIO1 FIFO + PINMUX_DEBUGPORT_SDIO2_FIFO = 0x0023, ///< SDIO2 FIFO + PINMUX_DEBUGPORT_BMC = 0x0024, ///< BMC + PINMUX_DEBUGPORT_IRDA1 = 0x0025, ///< IRDA1 + PINMUX_DEBUGPORT_IRDA2 = 0x0026, ///< IRDA2 + PINMUX_DEBUGMIPI_OCP = 0x0029, ///< OCP + PINMUX_DEBUGPORT_PRE = 0x0030, ///< PRE +*/ + PINMUX_DEBUGPORT_GROUP_NONE = 0x0000, ///< No debug port is output + PINMUX_DEBUGPORT_GROUP1 = 0x0100, ///< Output debug port to MC[18..0] + PINMUX_DEBUGPORT_GROUP2 = 0x0200, ///< Output debug port to LCD[18..0] + + ENUM_DUMMY4WORD(PINMUX_DEBUGPORT) +} PINMUX_DEBUGPORT; + +// for backward compatible +#define PINMUX_DEBUGMIPI_OCP PINMUX_DEBUGPORT_OCPBRG + +/* + PIN state for SDIO + + (Reserved for driver internal usage) + + @note For pinmux_getPinmux() +*/ +typedef enum +{ + PIN_SDIO_STATE_NONE, + PIN_SDIO_STATE_ACTIVE = 0x0100, //< SD active + ENUM_DUMMY4WORD(PIN_SDIO_STATE) +} PIN_SDIO_STATE; + +/* + PIN state for SPI + + (Reserved for driver internal usage) + + @note For pinmux_getPinmux() +*/ +typedef enum +{ + PIN_SPI_STATE_NONE, + PIN_SPI_STATE_ACTIVE = 0x10000, //< SPI active + ENUM_DUMMY4WORD(PIN_SPI_STATE) +} PIN_SPI_STATE; + +/* + PIN state for NAND + + (Reserved for driver internal usage) + + @note For pinmux_getPinmux() +*/ +typedef enum +{ + PIN_NAND_STATE_NONE, + PIN_NAND_STATE_ACTIVE = 0x0400, //< NAND active + ENUM_DUMMY4WORD(PIN_NAND_STATE) +} PIN_NAND_STATE; + +/* + PINMUX selection for I2C + + (Reserved for driver internal usage) + + @note For pinmux_setPinmux() +*/ +typedef enum +{ + PINMUX_I2C_SEL_INACTIVE, //< I2C inactive + PINMUX_I2C_SEL_ACTIVE, //< I2C active + ENUM_DUMMY4WORD(PINMUX_I2C_SEL) +} PINMUX_I2C_SEL; + +/* + PINMUX selection for PWM + + (Reserved for driver internal usage) + + @note For pinmux_setPinmux() +*/ +typedef enum +{ + PINMUX_PWM_SEL_INACTIVE, //< PWM inactive + PINMUX_PWM_SEL_ACTIVE, //< PWM active + ENUM_DUMMY4WORD(PINMUX_PWM_SEL) +} PINMUX_PWM_SEL; + +/* + PINMUX selection for SIF + + (Reserved for driver internal usage) + + @note For pinmux_setPinmux() +*/ +typedef enum +{ + PINMUX_SIF_SEL_INACTIVE, //< SIF inactive + PINMUX_SIF_SEL_ACTIVE, //< SIF active + ENUM_DUMMY4WORD(PINMUX_SIF_SEL) +} PINMUX_SIF_SEL; + +/* + PINMUX selection for I2S + + (Reserved for driver internal usage) + + @note For pinmux_setPinmux() +*/ +typedef enum +{ + PINMUX_I2S_SEL_INACTIVE, //< I2S inactive + PINMUX_I2S_SEL_ACTIVE, //< I2S active + ENUM_DUMMY4WORD(PINMUX_I2S_SEL) +} PINMUX_I2S_SEL; + +/* + PINMUX selection for UART + + (Reserved for driver internal usage) + + @note For pinmux_setPinmux() +*/ +typedef enum +{ + PINMUX_UART_SEL_INACTIVE, //< UART inactive + PINMUX_UART_SEL_ACTIVE, //< UART active + ENUM_DUMMY4WORD(PINMUX_UART_SEL) +} PINMUX_UART_SEL; + + +/** + OCP Debug port select ID + + Debug port select value for pinmux_select_ocp_debugport(). +*/ +typedef enum +{ + PINMUX_DEBUGPORT_OCPCMD_DMA_APB = 0x0, ///< OCP CMD vs. DMA/APB + PINMUX_DEBUGPORT_OCPCMD_HANDSHAKE = 0x1, ///< OCP CMD handshaking + PINMUX_DEBUGPORT_OCP_DMA = 0x2, ///< OCP vs. DMA + PINMUX_DEBUGPORT_OCP_DEBUG_3 = 0x3, ///< OCP debug 3 + PINMUX_DEBUGPORT_OCP_DEBUG_4 = 0x4, ///< OCP debug 4 + + ENUM_DUMMY4WORD(PINMUX_DEBUGPORT_OCP) +} PINMUX_DEBUGPORT_OCP; + +/** + Function group + + @note For pinmux_init() +*/ +typedef enum +{ + PIN_FUNC_SDIO, ///< SDIO. Configuration refers to PIN_SDIO_CFG. + PIN_FUNC_SDIO2, ///< SDIO2. Configuration refers to PIN_SDIO_CFG. + PIN_FUNC_SDIO3, ///< SDIO3. Configuration refers to PIN_SDIO_CFG. + PIN_FUNC_NAND, ///< NAND. Configuration refers to PIN_NAND_CFG. + PIN_FUNC_SENSOR, ///< sensor interface. Configuration refers to PIN_SENSOR_CFG. + PIN_FUNC_SENSOR2, ///< sensor2 interface. Configuration refers to PIN_SENSOR2_CFG. + PIN_FUNC_SENSOR3, ///< sensor3 interface. Configuration refers to PIN_SENSOR3_CFG. + PIN_FUNC_SENSOR4, ///< sensor4 interface. Configuration refers to PIN_SENSOR4_CFG. + PIN_FUNC_SENSOR5, ///< sensor5 interface. Configuration refers to PIN_SENSOR5_CFG. + PIN_FUNC_SENSOR6, ///< sensor6 interface. Configuration refers to PIN_SENSOR6_CFG. + PIN_FUNC_SENSOR7, ///< sensor7 interface. Configuration refers to PIN_SENSOR7_CFG. + PIN_FUNC_SENSOR8, ///< sensor8 interface. Configuration refers to PIN_SENSOR8_CFG. + PIN_FUNC_MIPI_LVDS, ///< MIPI/LVDS interface configuration. Configuration refers to PIN_MIPI_LVDS_CFG. + PIN_FUNC_I2C, ///< I2C. Configuration refers to PIN_I2C_CFG. + PIN_FUNC_SIF, ///< SIF. Configuration refers to PIN_SIF_CFG. + PIN_FUNC_UART, ///< UART. Configuration refers to PIN_UART_CFG. + PIN_FUNC_SPI, ///< SPI. Configuration refers to PIN_SPI_CFG. + PIN_FUNC_REMOTE, ///< REMOTE. Configuration refers to PIN_REMOTE_CFG. + PIN_FUNC_PWM, ///< PWM. Configuration refers to PIN_PWM_CFG. + PIN_FUNC_AUDIO, ///< AUDIO. Configuration refers to PIN_PWM_CFG. + PIN_FUNC_LCD, ///< LCD interface. Configuration refers to PINMUX_LCDINIT, PINMUX_PMI_CFG, PINMUX_DISPMUX_SEL. + PIN_FUNC_LCD2, ///< LCD2 interface. Configuration refers to PINMUX_LCDINIT, PINMUX_PMI_CFG, PINMUX_DISPMUX_SEL. + PIN_FUNC_TV, ///< TV interface. Configuration refers to PINMUX_TV_HDMI_CFG. + PIN_FUNC_HDMI, ///< HDMI. Configuration refers to PINMUX_LCDINIT, PINMUX_TV_HDMI_CFG, PINMUX_HDMI_CFG. + PIN_FUNC_ETH, ///< ETH. Configuration refers to + + ENUM_DUMMY4WORD(PIN_FUNC) +} PIN_FUNC; + +/** + PIN config for SDIO + + @note For pinmux_init() with PIN_FUNC_SDIO or PIN_FUNC_SDIO2 or PIN_FUNC_SDIO3.\n + For example, you can use {PIN_FUNC_SDIO, PIN_SDIO_CFG_1ST_PINMUX|PIN_SDIO_CFG_4BITS}\n + to declare SDIO is 4 bits and located in 1st pinmux location. +*/ +typedef enum +{ + PIN_SDIO_CFG_NONE, + PIN_SDIO_CFG_4BITS = 0x01, ///< 4 bits wide + PIN_SDIO_CFG_8BITS = 0x02, ///< 8 bits wide + + PIN_SDIO_CFG_1ST_PINMUX = 0x00, ///< 1st pinmux location + ///< For SDIO: enable SD_CLK/SD_CMD/SD_D[0..3] on MC[16..21] (C_GPIO[16..21]) + ///< For SDIO2: enable SDIO_CLK/SDIO_CMD/SDIO_D[0..3] on MC[22..27] (C_GPIO[22..27]) + ///< For SDIO3: enable SDIO_CLK/SDIO_CMD/SDIO_D[0..3] on MC[28..33] (C_GPIO[28..33]) + PIN_SDIO_CFG_2ND_PINMUX = 0x10, ///< 2nd pinmux location + ///< For SDIO: enable SD_CLK/SD_CMD/SD_D[0..3] on MC[16..21] (C_GPIO[16..21]) (SDIO only has one pinmux pad group) + ///< For SDIO2: enable SDIO_CLK/SDIO_CMD/SDIO_D[0..3] on MC[22..27] (C_GPIO[22..27]) (SDIO2 only has one pinmux pad group) + ///< For SDIO3: enable SDIO_CLK/SDIO_CMD/SDIO_D[0..3] on MC[0..3]/MC9/MC11 (C_GPIO[0..3], 9, 11) + ///< When 8 bits, enable MC[0..7]/MC9/MC11 (C_GPIO[0..7], 9, 11) + + ENUM_DUMMY4WORD(PIN_SDIO_CFG) +} PIN_SDIO_CFG; + +/** + PIN config for NAND + + @note For pinmux_init() with PIN_FUNC_NAND.\n + For example, you can use {PIN_FUNC_NAND, PIN_NAND_CFG_1CS} to declare NAND with 1 CS. +*/ +typedef enum +{ + PIN_NAND_CFG_NONE, + PIN_NAND_CFG_1CS = 0x01, ///< 1 chip select. Enable NAND_D[0..7]/NAND_CS0/NAND_WE/NAND_RE/NAND_CLE/NAND_ALE/NAND_WP/NAND_RDY on MC[0..8]/MC[10..15] (C_GPIO[0..8], C_GPIO[10..15]) + PIN_NAND_CFG_2CS = 0x02, ///< 2 chip select. Enable NAND_D[0..7]/NAND_CS[0..1]/NAND_WE/NAND_RE/NAND_CLE/NAND_ALE/NAND_WP/NAND_RDY on MC[0..8]/MC[10..15] (C_GPIO[0..15]) + PIN_NAND_CFG_SPI_NAND = 0x4, ///< Virtual enum for project layer configuration + PIN_NAND_CFG_SPI_NOR = 0x8, ///< Virtual enum for project layer configuration + ENUM_DUMMY4WORD(PIN_NAND_CFG) +} PIN_NAND_CFG; + +/** + PIN config for Sensor + + @note For pinmux_init() with PIN_FUNC_SENSOR.\n + For example, you can use {PIN_FUNC_SENSOR, PIN_SENSOR_CFG_10BITS|PIN_SENSOR_CFG_SHUTTER|PIN_SENSOR_CFG_MCLK}\n + to declare sensor interface is 10 bits sensor, has SHUTTER and MCLK. +*/ +typedef enum +{ + PIN_SENSOR_CFG_NONE, + PIN_SENSOR_CFG_8BITS = 0x01, ///< 8 bits sensor. Enable SN_D[4..11]/SN_PXCLK/SN_VD/SN_HD on HSI_D[1..4]N/HSI_D[1..4]P/SN_PXCLK/SN_VD/SN_HD (S_GPI[1..3]/S_GPI[1..3]) + PIN_SENSOR_CFG_10BITS = 0x02, ///< 10 bits sensor. Enable SN_D[2..11]/SN_PXCLK/SN_VD/SN_HD on HSI_D[0..4]N/HSI_D[0..4]P0/SN_PXCLK/SN_VD/SN_HD (S_GPI[1..3]/S_GPI[1..3]) + PIN_SENSOR_CFG_12BITS = 0x04, ///< 12 bits sensor. Enable SN_D[0..11]/SN_PXCLK/SN_VD/SN_HD on HSI_D[0..4]N/HSI_D[0..4]P/HSI_CK0N/HSI_CK0P/SN_PXCLK/SN_VD/SN_HD (S_GPI[1..3]/S_GPI[1..3]) + PIN_SENSOR_CFG_MIPI = 0x20, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR_CFG_LVDS = 0x40, ///< LVDS sensor PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR_CFG_LVDS_VDHD = 0x80, ///< Backward compatible + + PIN_SENSOR_CFG_SHUTTER = 0x100, ///< Enable SN_SHUTTER on SN_GPIO[10] (SN_GPIO[10]) + PIN_SENSOR_CFG_MCLK = 0x200, ///< Enable SN_MCLK on SN_MCLK (S_GPIO[0]) + PIN_SENSOR_CFG_MCLK2 = 0x400, ///< Enable SN_MCLK2 on SBCS0 (S_GPIO[4]) + PIN_SENSOR_CFG_MES0 = 0x800, ///< Enable ME_SHUT0 on PWM0 (P_GPIO[0]) + PIN_SENSOR_CFG_MES0_2ND = 0x1000, ///< Enable (2nd) ME_SHUT0 on PWM16 (P_GPIO[16]) + PIN_SENSOR_CFG_MES1 = 0x2000, ///< Enable ME_SHUT1 on PWM1 (P_GPIO[1]) + PIN_SENSOR_CFG_MES1_2ND = 0x4000, ///< Enable (2nd) ME_SHUT1 on PWM17 (P_GPIO[17]) + PIN_SENSOR_CFG_FLCTR = 0x8000, ///< Enable SN_FLCTR on SN_FLCTR (P_GPIO[40]) + PIN_SENSOR_CFG_STROBE = 0x10000, ///< Enable SN_FLASH on SN_GPIO[9] (SN_GPIO[9]) + PIN_SENSOR_CFG_SPCLK = 0x20000, ///< Enable SP_CLK on SN_SPCLK (P_GPIO[20]) + PIN_SENSOR_CFG_SPCLK_2ND = 0x40000, ///< Enable SP_CLK on LCD27 (L_GPIO[27]) + PIN_SENSOR_CFG_SP2CLK = 0x80000, ///< Enable SP2_CLK on REMOTE_RX(P_GPIO[39]) + PIN_SENSOR_CFG_SP2CLK_2ND = 0x100000,///< Enable SP2_CLK on SBCS3 (P_GPIO[24]) + PIN_SENSOR_CFG_MES2 = 0x200000, ///< Enable ME_SHUT2 on PWM2 (P_GPIO[2]) + PIN_SENSOR_CFG_MES2_2ND = 0x400000, ///< Enable (2nd) ME_SHUT2 on PWM18 (P_GPIO[18]) + PIN_SENSOR_CFG_MES3 = 0x800000, ///< Enable ME_SHUT3 on PWM3 (P_GPIO[3]) + PIN_SENSOR_CFG_MES3_2ND = 0x1000000, ///< Enable (2nd) ME_SHUT3 on PWM19 (P_GPIO[19]) + PIN_SENSOR_CFG_LOCKN = 0x2000000, ///< Enable LOCKN on PGPIO30 + PIN_SENSOR_CFG_LOCKN2= 0x4000000, ///< Enable LOCKN2 on PGPIO31 + + + ENUM_DUMMY4WORD(PIN_SENSOR_CFG) +} PIN_SENSOR_CFG; + +/** + PIN config for Sensor2 + + @note For pinmux_init() with PIN_FUNC_SENSOR2.\n + For example, you can use {PIN_FUNC_SENSOR2, PIN_SENSOR2_CFG_CCIR8BITS}\n + to declare sensor2 interface connect a CCIR 8 bits sensor. +*/ +typedef enum +{ + PIN_SENSOR2_CFG_NONE, + PIN_SENSOR2_CFG_CCIR8BITS = 0x08, ///< Backward compatible + PIN_SENSOR2_CFG_CCIR16BITS = 0x10, ///< Backward compatible + PIN_SENSOR2_CFG_MIPI = 0x20, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR2_CFG_LVDS = 0x40, ///< LVDS sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR2_CFG_LVDS_VDHD = 0x80, ///< Backward compatible + PIN_SENSOR2_CFG_10BITS = 0x100, ///< Backward compatible + + PIN_SENSOR2_CFG_MCLK2 = 0x200, ///< Enable SN_MCLK2 on SBCS0 (S_GPIO[4]) + PIN_SENSOR2_CFG_MES2 = 0x400, ///< Enable ME_SHUT2 on PWM2 (P_GPIO[2]) + PIN_SENSOR2_CFG_MES2_2ND = 0x800, ///< Enable (2nd) ME_SHUT2 on PWM18 (P_GPIO[18]) + PIN_SENSOR2_CFG_MES3 = 0x1000, ///< Enable ME_SHUT3 on PWM3 (P_GPIO[3]) + PIN_SENSOR2_CFG_MES3_2ND = 0x2000, ///< Enable (2nd) ME_SHUT3 on PWM19 (P_GPIO[19]) + + ENUM_DUMMY4WORD(PIN_SENSOR2_CFG) +} PIN_SENSOR2_CFG; + +/** + PIN config for Sensor3 + + @note For pinmux_init() with PIN_FUNC_SENSOR3.\n + For example, you can use {PIN_FUNC_SENSOR3, PIN_SENSOR3_CFG_8BITS}\n + to declare sensor3 interface connect a 8 bits sensor. +*/ +typedef enum +{ + PIN_SENSOR3_CFG_NONE, + PIN_SENSOR3_CFG_8BITS = 0x01, ///< 8 bits sensor. Enable SIE3[0..7]/SIE3_PXCEL/SIE3_VD/SIE3_HD on P_GPIO[0..10] + PIN_SENSOR3_CFG_10BITS = 0x02, ///< 10 bits sensor. + PIN_SENSOR3_CFG_12BITS = 0x04, ///< 12 bits sensor. + PIN_SENSOR3_CFG_16BITS = 0x08, ///< 16 bits sensor. + PIN_SENSOR3_CFG_MIPI = 0x10, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR3_CFG_LVDS = 0x20, ///< LVDS sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + + PIN_SENSOR3_CFG_MCLK2 = 0x100, ///< MCLK2 + + ENUM_DUMMY4WORD(PIN_SENSOR3_CFG) +} PIN_SENSOR3_CFG; + +/** + PIN config for Sensor4 + + @note For pinmux_init() with PIN_FUNC_SENSOR4.\n + For example, you can use {PIN_FUNC_SENSOR4, xxxx} +*/ +typedef enum +{ + PIN_SENSOR4_CFG_NONE, + PIN_SENSOR4_CFG_8BITS = 0x01, ///< Backward compatible + PIN_SENSOR4_CFG_MIPI = 0x04, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR4_CFG_LVDS = 0x08, ///< LVDS sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + + PIN_SENSOR4_CFG_MCLK2 = 0x10, ///< MCLK2 + + ENUM_DUMMY4WORD(PIN_SENSOR4_CFG) +} PIN_SENSOR4_CFG; + +/** + PIN config for Sensor5 + + @note For pinmux_init() with PIN_FUNC_SENSOR5.\n + For example, you can use {PIN_FUNC_SENSOR5, xxxx}\n +*/ +typedef enum +{ + PIN_SENSOR5_CFG_NONE, + PIN_SENSOR5_CFG_MIPI = 0x04, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR5_CFG_LVDS = 0x08, ///< LVDS sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + + PIN_SENSOR5_CFG_MCLK2 = 0x10, ///< MCLK2 + + ENUM_DUMMY4WORD(PIN_SENSOR5_CFG) +} PIN_SENSOR5_CFG; + +/** + PIN config for Sensor6 + + @note For pinmux_init() with PIN_FUNC_SENSOR6.\n + For example, you can use {PIN_FUNC_SENSOR6, xxxx}\n +*/ +typedef enum +{ + PIN_SENSOR6_CFG_NONE, + PIN_SENSOR6_CFG_8BITS = 0x01, ///< 8 bit sensor + PIN_SENSOR6_CFG_16BITS= 0x02, ///< 16 bit sensor + PIN_SENSOR6_CFG_MIPI = 0x04, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR6_CFG_LVDS = 0x08, ///< LVDS sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + + PIN_SENSOR6_CFG_MCLK2 = 0x10, ///< + + ENUM_DUMMY4WORD(PIN_SENSOR6_CFG) +} PIN_SENSOR6_CFG; + +/** + PIN config for Sensor7 + + @note For pinmux_init() with PIN_FUNC_SENSOR7.\n + For example, you can use {PIN_FUNC_SENSOR7, xxxx}\n +*/ +typedef enum +{ + PIN_SENSOR7_CFG_NONE, + PIN_SENSOR7_CFG_8BITS = 0x01, ///< 8 bit sensor + PIN_SENSOR7_CFG_MIPI = 0x04, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR7_CFG_LVDS = 0x08, ///< LVDS sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + + PIN_SENSOR7_CFG_MCLK2 = 0x10, ///< + + ENUM_DUMMY4WORD(PIN_SENSOR7_CFG) +} PIN_SENSOR7_CFG; + +/** + PIN config for Sensor8 + + @note For pinmux_init() with PIN_FUNC_SENSOR8.\n + For example, you can use {PIN_FUNC_SENSOR8, xxxx}\n +*/ +typedef enum +{ + PIN_SENSOR8_CFG_NONE, + PIN_SENSOR8_CFG_8BITS = 0x01, ///< 8 bit sensor + PIN_SENSOR8_CFG_MIPI = 0x04, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR8_CFG_LVDS = 0x08, ///< LVDS sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + + PIN_SENSOR8_CFG_MCLK2 = 0x10, ///< + + ENUM_DUMMY4WORD(PIN_SENSOR8_CFG) +} PIN_SENSOR8_CFG; + + +/** + PIN config for MIPI/LVDS + + @note For pinmux_init() with PIN_FUNC_MIPI_LVDS.\n + For example, you can use {PIN_FUNC_MIPI_LVDS, PIN_MIPI_LVDS_CFG_CLK0|PIN_MIPI_LVDS_CFG_DAT0|PIN_MIPI_LVDS_CFG_DAT4|PIN_MIPI_LVDS_CFG_DAT7|PIN_MIPI_LVDS_CFG_DAT9}\n + to declare LVDS/MIPI connect sensor with CLK0/D0/D4/D7/D9 lanes. +*/ +typedef enum +{ + PIN_MIPI_LVDS_CFG_NONE, + + PIN_MIPI_LVDS_CFG_CLK0 = 0x1, ///< CLK lane 0. Enable HSI_CK0N/HSI_CK0P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_CLK1 = 0x2, ///< CLK lane 1. Enable HSI_CK1N/HSI_CK1P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_CLK2 = 0x4, ///< CLK lane 0. Enable HSI_CK0N/HSI_CK0P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_CLK3 = 0x8, ///< CLK lane 1. Enable HSI_CK1N/HSI_CK1P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_CLK4 = 0x10, ///< CLK lane 0. Enable HSI_CK0N/HSI_CK0P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_CLK5 = 0x20, ///< CLK lane 1. Enable HSI_CK1N/HSI_CK1P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_CLK6 = 0x40, ///< CLK lane 0. Enable HSI_CK0N/HSI_CK0P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_CLK7 = 0x80, ///< CLK lane 1. Enable HSI_CK1N/HSI_CK1P for LVDS/CSI/CSI2. + + PIN_MIPI_LVDS_CFG_DAT0 = 0x100, ///< DATA lane 0. Enable HSI_D0N/HSI_D0P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT1 = 0x200, ///< DATA lane 1. Enable HSI_D1N/HSI_D1P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT2 = 0x400, ///< DATA lane 2. Enable HSI_D2N/HSI_D2P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT3 = 0x800, ///< DATA lane 3. Enable HSI_D3N/HSI_D3P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT4 = 0x1000, ///< DATA lane 4. Enable HSI_D4N/HSI_D4P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT5 = 0x2000, ///< DATA lane 5. Enable HSI_D5N/HSI_D5P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT6 = 0x4000, ///< DATA lane 6. Enable HSI_D6N/HSI_D6P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT7 = 0x8000, ///< DATA lane 7. Enable HSI_D7N/HSI_D7P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT8 = 0x10000, ///< Backward compatible + PIN_MIPI_LVDS_CFG_DAT9 = 0x20000, ///< Backward compatible + + ENUM_DUMMY4WORD(PIN_MIPI_LVDS_CFG) +} PIN_MIPI_LVDS_CFG; + +/** + PIN config for I2C + + @note For pinmux_init() with PIN_FUNC_I2C.\n + For example, you can use {PIN_FUNC_I2C, PIN_I2C_CFG_CH1|PIN_I2C_CFG_CH1_2ND_PINMUX}\n + to declare I2C channel1 both output to 1st and 2nd pinmux location. +*/ +typedef enum +{ + PIN_I2C_CFG_NONE, + PIN_I2C_CFG_CH1 = 0x1, ///< Enable channel 1. + PIN_I2C_CFG_CH1_2ND_PINMUX = 0x2, ///< Enable 2nd pinmux of channel 1. + PIN_I2C_CFG_CH2 = 0x10, ///< Enable channel 2. + PIN_I2C_CFG_CH2_2ND_PINMUX = 0x20, ///< Enable 2nd pinmux of channel 2. + PIN_I2C_CFG_CH3 = 0x100, ///< Enable channel 3. + PIN_I2C_CFG_CH3_2ND_PINMUX = 0x200, ///< Enable 2nd pinmux of channel 3. + PIN_I2C_CFG_CH3_3RD_PINMUX = 0x400, ///< Enable 3nd pinmux of channel 3. + PIN_I2C_CFG_CH4 = 0x1000, ///< Enable channel 4. + PIN_I2C_CFG_CH4_2ND_PINMUX = 0x2000, ///< Enable 2nd pinmux of channel 4. + PIN_I2C_CFG_CH4_3RD_PINMUX = 0x4000, ///< Enable 3nd pinmux of channel 4. + PIN_I2C_CFG_CH4_4TH_PINMUX = 0x8000, ///< Enable 4th pinmux of channel 4. + PIN_I2C_CFG_CH5 = 0x10000, ///< Enable channel 5. + PIN_I2C_CFG_CH5_2ND_PINMUX = 0x20000, ///< Enable 2nd pinmux of channel 5. + + ENUM_DUMMY4WORD(PIN_I2C_CFG) +} PIN_I2C_CFG; + +/** + PIN config for SIF + + *note For pinmux_init() with PIN_FUNC_SIF.\n + For example, you can use {PIN_FUNC_SIF, PIN_SIF_CFG_CH0|PIN_SIF_CFG_CH2}\n + to declare SIF channel0 and channel2 pinmux are enabled. +*/ +typedef enum +{ + PIN_SIF_CFG_NONE, + + PIN_SIF_CFG_CH0 = 0x01, ///< Enable SIF channel 0. Enable SN_CS0/SN_SCK0/SN_DAT0 (L_GPIO 27/28/29) + PIN_SIF_CFG_CH0_2ND_PINMUX = 0x02, ///< Enable SIF channel 0 2'nd pinmux. Enable SN_CS0/SN_SCK0/SN_SAT0 (P_GPIO 16/18/19) + PIN_SIF_CFG_CH0_3RD_PINMUX = 0x04, ///< Enable SIF channel 0 3'rd pinmux. Enable SN_CS0/SN_SCK0/SN_SAT0 (P_GPIO 17/18/19) + + PIN_SIF_CFG_CH1 = 0x08, ///< Enable SIF channel 1. Enable SN_CS1/SN_SCK1/SN_DAT1 (L_GPIO 30/31/32) + PIN_SIF_CFG_CH1_2ND_PINMUX = 0x10, ///< Backward compatible + + PIN_SIF_CFG_CH2 = 0x20, ///< Enable SIF channel 2. Enable SB_CS2/SB_CK23/SB_DAT23 (P_GPIO 30/32/33) + PIN_SIF_CFG_CH2_2ND_PINMUX = 0x40, ///< Enable SIF channel 2 2'nd pinmux. Enable SB_CS2/SB_CK23/SB_DAT23 (P_GPIO 8/10/11) + + PIN_SIF_CFG_CH3 = 0x80, ///< Enable SIF channel 3. Enable SB_CS3/SB_CK23/SB_DAT23 (P_GPIO 31/32/33) + PIN_SIF_CFG_CH3_2ND_PINMUX = 0x100, ///< Enable SIF channel 3 2'nd pinmux. Enable SB_CS2/SB_CK23/SB_DAT23 (P_GPIO 9/10/11) + + PIN_SIF_CFG_CH4 = 0x200, ///< Enable SIF channel 4. Enable SB_CS4/SB_CK45/SB_DAT45 (P_GPIO 24/26/27) + + PIN_SIF_CFG_CH5 = 0x400, ///< Enable SIF channel 5. Enable SB_CS5/SB_CK45/SB_DAT45 (P_GPIO 25/26/27) + + PIN_SIF_CFG_CH6 = 0x800, ///< Enable SIF channel 6. Enable SB_CS6/SB_CK67/SB_DAT67 (S_GPIO 8/9/10) + + PIN_SIF_CFG_CH7 = 0x1000, ///< Enable SIF channel 7. Enable SB_CS7/SB_CK67/SB_DAT67 (S_GPIO 11/8/9) + + ENUM_DUMMY4WORD(PIN_SIF_CFG) +} PIN_SIF_CFG; + +/** + PIN config for UART + + @note For pinmux_init() with PIN_FUNC_UART.\n + For example, you can use {PIN_FUNC_UART, PIN_UART_CFG_CH1}\n + to declare UART1 pinmux is enabled. +*/ +typedef enum +{ + PIN_UART_CFG_NONE, + + PIN_UART_CFG_CH1 = 0x01, ///< Enable channel 1. Enable UART TX and RX + PIN_UART_CFG_CH1_TX = 0x02, ///< Enalbe channel 1. Enable only UART_TX + + PIN_UART_CFG_CH2 = 0x04, ///< Enable channel 2. Enable UART2 TX and RX + PIN_UART_CFG_CH2_CTSRTS = 0x08, ///< Enable channel 2 HW handshake. Enable UART2 CTS and RTS + PIN_UART_CFG_CH2_2ND = 0x10, ///< Enable channel 2 to 2ND pinmux (UART2_2) + + PIN_UART_CFG_CH3 = 0x20, ///< Enable channel 3. Enable UART3 TX and RX + PIN_UART_CFG_CH3_CTSRTS = 0x40, ///< Enable channel 3 HW handshake. Enable UART3 CTS and RTS + PIN_UART_CFG_CH3_2ND = 0x80, ///< Enable channel 3 to 2ND pinmux (UART3_2) + + PIN_UART_CFG_CH4 = 0x100, ///< Enable channel 4. Enable UART4 TX and RX + PIN_UART_CFG_CH4_CTSRTS = 0x200, ///< Enable channel 4 HW handshake. Enable UART4 CTS and RTS + PIN_UART_CFG_CH4_2ND = 0x400, ///< Enable channel 4 to 2ND pinmux (UART4_2) + + ENUM_DUMMY4WORD(PIN_UART_CFG) +} PIN_UART_CFG; + +/** + PIN config for SPI + + @note For pinmux_init() with PIN_FUNC_SPI.\n + For example, you can use {PIN_FUNC_SPI, PIN_SPI_CFG_CH1|PIN_SPI_CFG_CH3}\n + to declare SPI channel1 and channel3 are enabled. +*/ +typedef enum +{ + PIN_SPI_CFG_NONE, + + PIN_SPI_CFG_CH1 = 0x1, ///< Enable channel 1. Enable SPI_DO/SPI_CLK/SPI_CS on MC[0]/MC[2]/MC8 (C_GPIO[0]/C_GPIO[2]/C_GPIO[8]) + PIN_SPI_CFG_CH1_2BITS = 0x2, ///< Enable channel 1 with 2 bits mode. Enable SPI_DO/SPI_DI/SPI_CLK/SPI_CS on MC[0..2]/MC8 (C_GPIO[0..2]/C_GPIO[8]) + PIN_SPI_CFG_CH1_4BITS = 0x4, ///< Backward compatible + PIN_SPI_CFG_CH1_2ND_PINMUX = 0x8, ///< Enable 2nd pinmux of channel 1. + + PIN_SPI_CFG_CH2 = 0x10, ///< Enable channel 2. Enable SPI2_CS/SPI2_CLK/SPI2_DO on SPI_CS/SPI_CLK/SPI_DO(P_GPIO[35..37]) + PIN_SPI_CFG_CH2_2BITS = 0x20, ///< Enable channel 2. Enable SPI2_CS/SPI2_CLK/SPI2_DO/SPI2_DI on SPI_CS/SPI_CLK/SPI_DO/SPI_DI(P_GPIO[35..38]) + PIN_SPI_CFG_CH2_2ND_PINMUX = 0x40, ///< Enable 2nd pinmux of channel 2. Enable SPI2_CS/SPI2_CLK/SPI2_DO/SPI2_DI on (P_GPIO[16..19]) + PIN_SPI_CFG_CH2_3RD_PINMUX = 0x80, ///< Enable 3rd pinmux of channel 2. Enable SPI2_CS/SPI2_CLK/SPI2_DO/SPI2_DI on (P_GPIO[16..19]) + + + PIN_SPI_CFG_CH3 = 0x100, ///< Enable channel 3. Eanble SPI3_CS/SPI3_CLK/SPI3_DO on SB_CS2/SB_CK23/SB_DAT23 (P_GPIO[23]/P_GPIO[25..26]) + PIN_SPI_CFG_CH3_2BITS = 0x200, ///< Enable channel 3. Eanble SPI3_CS/SPI3_DI/SPI3_CLK/SPI3_DO on SB_CS2/SB_CS3/SB_CK23/SB_DAT23 (P_GPIO[23..26]) + PIN_SPI_CFG_CH3_2ND_PINMUX = 0x400, ///< Enable 2nd pinmux of channel 3. Enable SPI3_CLK/SPI3_CS/SPI3_DO/SPI3_DI on PWM[12..15] (P_GPIO[12..15]) + PIN_SPI_CFG_CH3_3RD_PINMUX = 0x800, ///< Backward compatible + PIN_SPI_CFG_CH3_RDY = 0x1000, + PIN_SPI_CFG_CH3_RDY_2ND_PINMUX = 0x2000, + + PIN_SPI_CFG_CH4 = 0x10000, ///< Enable channel 4. Eanble SPI4_CS/SPI4_CLK/SPI4_DO on MC[28..29]/MC[31] (C_GPIO[28..29]/C_GPIO[31]) + PIN_SPI_CFG_CH4_2BITS = 0x20000, ///< Enable channel 4. Eanble SPI4_CS/SPI4_DI/SPI4_CLK/SPI4_DO on MC[28..31] (C_GPIO[28..31]) + PIN_SPI_CFG_CH4_2ND_PINMUX = 0x40000, ///< Enable 2nd pinmux of channel 4. Enable SPI4_CLK/SPI4_CS/SPI4_DO/SPI4_DI on PWM[8..11] (P_GPIO[8..11]) + PIN_SPI_CFG_CH4_RDY = 0x80000, ///< Backward compatible + PIN_SPI_CFG_CH4_3RD_PINMUX = 0x100000, ///< Enable 3rd pinmux of channel 4. + + PIN_SPI_CFG_CH5 = 0x1000000,///< Backward compatible + PIN_SPI_CFG_CH5_2BITS = 0x2000000,///< Backward compatible + PIN_SPI_CFG_CH5_2ND_PINMUX = 0x4000000,///< Backward compatible + + ENUM_DUMMY4WORD(PIN_SPI_CFG) +} PIN_SPI_CFG; + +/** + PIN config for REMOTE + + @note For pinmux_init() with PIN_FUNC_REMOTE.\n + For example, you can use {PIN_FUNC_REMOTE, PIN_REMOTE_CFG_CH1}\n + to declare remote pinmux is enabled. +*/ +typedef enum +{ + PIN_REMOTE_CFG_NONE, + PIN_REMOTE_CFG_CH1, ///< Enable remote rx channel 1. Enable REMOTE_RX (on P_GPIO[39]) + + ENUM_DUMMY4WORD(PIN_REMOTE_CFG) +} PIN_REMOTE_CFG; + +/** + PIN config for PWM + + @note For pinmux_init() with PIN_FUNC_PWM.\n + For example, you can use {PIN_FUNC_PWM, PIN_PWM_CFG_PWM0|PIN_PWM_CFG_PWM1|PIN_PWM_CFG_PWM2|PIN_PWM_CFG_PWM3}\n + to declare your system need PWM channel0/1/2/3. +*/ +typedef enum +{ + PIN_PWM_CFG_NONE, + PIN_PWM_CFG_PWM0 = 0x01, ///< Enable PWM0 (on P_GPIO[0]) + PIN_PWM_CFG_PWM1 = 0x02, ///< Enable PWM1 (on P_GPIO[1]) + PIN_PWM_CFG_PWM2 = 0x04, ///< Enable PWM2 (on P_GPIO[2]) + PIN_PWM_CFG_PWM3 = 0x08, ///< Enable PWM3 (on P_GPIO[3]) + PIN_PWM_CFG_PWM4 = 0x10, ///< Enable PWM4 (on P_GPIO[4]) + PIN_PWM_CFG_PWM5 = 0x20, ///< Enable PWM5 (on P_GPIO[5]) + PIN_PWM_CFG_PWM6 = 0x40, ///< Enable PWM6 (on P_GPIO[6]) + PIN_PWM_CFG_PWM7 = 0x80, ///< Enable PWM7 (on P_GPIO[7]) + PIN_PWM_CFG_PWM8 = 0x100, ///< Enable PWM8 (on P_GPIO[8]) + PIN_PWM_CFG_PWM9 = 0x200, ///< Enable PWM9 (on P_GPIO[9]) + PIN_PWM_CFG_PWM10= 0x400, ///< Enable PWM10 (on P_GPIO[10]) + PIN_PWM_CFG_PWM11= 0x800, ///< Enable PWM11 (on P_GPIO[11]) + PIN_PWM_CFG_PWM12= 0x1000, ///< Enable PWM12 (on P_GPIO[12]) + PIN_PWM_CFG_PWM13= 0x2000, ///< Enable PWM13 (on P_GPIO[13]) + PIN_PWM_CFG_PWM14= 0x4000, ///< Enable PWM14 (on P_GPIO[14]) + PIN_PWM_CFG_PWM15= 0x8000, ///< Enable PWM15 (on P_GPIO[15]) + PIN_PWM_CFG_PWM16= 0x10000, ///< Enable PWM16 (on P_GPIO[16]) + PIN_PWM_CFG_PWM17= 0x20000, ///< Enable PWM17 (on P_GPIO[17]) + PIN_PWM_CFG_PWM18= 0x40000, ///< Enable PWM18 (on P_GPIO[18]) + PIN_PWM_CFG_PWM19= 0x80000, ///< Enable PWM19 (on P_GPIO[19]) + + PIN_PWM_CFG_CCNT = 0x1000000, ///< Enable PICNT_1 + PIN_PWM_CFG_CCNT_2ND = 0x2000000, ///< Enable PICNT_2 + PIN_PWM_CFG_CCNT2 = 0x4000000, ///< Enable PICNT2_1 + PIN_PWM_CFG_CCNT2_2ND = 0x8000000, ///< Enable PICNT2_2 + PIN_PWM_CFG_CCNT3 = 0x10000000, ///< Enable PICNT3 + PIN_PWM_CFG_CCNT3_2ND = 0x20000000, ///< Enable PICNT3_2 + PIN_PWM_CFG_CCNT4 = 0x40000000, ///< Enable PICNT4_1 + PIN_PWM_CFG_CCNT4_2ND = 0x80000000, ///< Enable PICNT4_2 + + ENUM_DUMMY4WORD(PIN_PWM_CFG) +} PIN_PWM_CFG; + +/** + PIN config for AUDIO + + @note For pinmux_init() with PIN_FUNC_AUDIO.\n + For example, you can use {PIN_FUNC_AUDIO, PIN_AUDIO_CFG_I2S|PIN_AUDIO_CFG_MCLK}\n + to declare pinmux of I2S and I2S MCLK are enabled. +*/ +typedef enum +{ + PIN_AUDIO_CFG_NONE, + PIN_AUDIO_CFG_I2S = 0x01, ///< Enable I2S channel. Enable I2S_BCK/I2S_FCK/I2S_DO/I2S_DI/ (on P_GPIO[31..34]) + PIN_AUDIO_CFG_I2S_2ND_PINMUX = 0x02,///< Backward compatible + + PIN_AUDIO_CFG_MCLK = 0x10, ///< Enable audio MCLK. Enable I2S_MCLK (on P_GPIO[20]) + PIN_AUDIO_CFG_MCLK_2ND_PINMUX = 0x20,///< Backward compatible + + ENUM_DUMMY4WORD(PIN_AUDIO_CFG) +} PIN_AUDIO_CFG; + +/** + PIN config of LCD modes + + @note For pinmux_init() with PIN_FUNC_LCD or PIN_FUNC_LCD2.\n + For example, you can use {PIN_FUNC_LCD, PINMUX_DISPMUX_SEL_LCD | PINMUX_LCDMODE_RGB_SERIAL}\n + to tell display object that PIN_FUNC_LCD is located on primary LCD pinmux,\n + and it's LCD mode is RGB serial. +*/ +typedef enum +{ + PINMUX_LCDMODE_RGB_SERIAL = 0, ///< LCD MODE is RGB Serial or UPS051 + PINMUX_LCDMODE_RGB_PARALL = 1, ///< LCD MODE is RGB Parallel (888) + PINMUX_LCDMODE_YUV640 = 2, ///< LCD MODE is YUV640 + PINMUX_LCDMODE_YUV720 = 3, ///< LCD MODE is YUV720 + PINMUX_LCDMODE_RGBD360 = 4, ///< LCD MODE is RGB Dummy 360 + PINMUX_LCDMODE_RGBD320 = 5, ///< LCD MODE is RGB Dummy 320 + PINMUX_LCDMODE_RGB_THROUGH = 6, ///< LCD MODE is RGB through mode + PINMUX_LCDMODE_CCIR601 = 7, ///< LCD MODE is CCIR601 + PINMUX_LCDMODE_CCIR656 = 8, ///< LCD MODE is CCIR656 + PINMUX_LCDMODE_RGB_PARALL666 = 9, ///< LCD MODE is RGB Parallel 666 + PINMUX_LCDMODE_RGB_PARALL565 = 10, ///< LCD MODE is RGB Parallel 565 + PINMUX_LCDMODE_RGB_PARALL_DELTA = 11, ///< LCD MODE is RGB Parallel Delta + PINMUX_LCDMODE_MIPI = 12, ///< LCD MODE is MIPI Display + + PINMUX_LCDMODE_MI_OFFSET = 32, ///< Memory LCD MODE offset + PINMUX_LCDMODE_MI_FMT0 = 32+0, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT1 = 32+1, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT2 = 32+2, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT3 = 32+3, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT4 = 32+4, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT5 = 32+5, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT6 = 32+6, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT7 = 32+7, ///< LCD MODE is Memory(Parallel Interface) 9bits + PINMUX_LCDMODE_MI_FMT8 = 32+8, ///< LCD MODE is Memory(Parallel Interface) 16bits + PINMUX_LCDMODE_MI_FMT9 = 32+9, ///< LCD MODE is Memory(Parallel Interface) 16bits + PINMUX_LCDMODE_MI_FMT10 = 32+10, ///< LCD MODE is Memory(Parallel Interface) 18bits + PINMUX_LCDMODE_MI_FMT11 = 32+11, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT12 = 32+12, ///< LCD MODE is Memory(Parallel Interface) 16bits + PINMUX_LCDMODE_MI_FMT13 = 32+13, ///< LCD MODE is Memory(Parallel Interface) 16bits + PINMUX_LCDMODE_MI_FMT14 = 32+14, ///< LCD MODE is Memory(Parallel Interface) 16bits + PINMUX_LCDMODE_MI_SERIAL_BI = 32+20, ///< LCD MODE is Serial Interface bi-direction + PINMUX_LCDMODE_MI_SERIAL_SEP = 32+21, ///< LCD MODE is Serial Interface separation + + PINMUX_LCDMODE_AUTO_PINMUX = 0x01<<22, ///< Set display device to GPIO mode when display device is closed. Select this filed will inform display object to switch to GPIO when display device is closed. + + + PINMUX_HDMIMODE_OFFSET = 64, ///< HDMI MODE offset + PINMUX_HDMIMODE_640X480P60 = 64+1, ///< HDMI Video format is 640x480 & Progressive 60fps + PINMUX_HDMIMODE_720X480P60 = 64+2, ///< HDMI Video format is 720x480 & Progressive 60fps & 4:3 + PINMUX_HDMIMODE_720X480P60_16X9 = 64+3, ///< HDMI Video format is 720x480 & Progressive 60fps & 16:9 + PINMUX_HDMIMODE_1280X720P60 = 64+4, ///< HDMI Video format is 1280x720 & Progressive 60fps + PINMUX_HDMIMODE_1920X1080I60 = 64+5, ///< HDMI Video format is 1920x1080 & Interlaced 60fps + PINMUX_HDMIMODE_720X480I60 = 64+6, ///< HDMI Video format is 720x480 & Interlaced 60fps + PINMUX_HDMIMODE_720X480I60_16X9 = 64+7, ///< HDMI Video format is 720x480 & Interlaced 60fps & 16:9 + PINMUX_HDMIMODE_720X240P60 = 64+8, ///< HDMI Video format is 720x240 & Progressive 60fps + PINMUX_HDMIMODE_720X240P60_16X9 = 64+9, ///< HDMI Video format is 720x240 & Progressive 60fps & 16:9 + PINMUX_HDMIMODE_1440X480I60 = 64+10, ///< HDMI Video format is 1440x480 & Interlaced 60fps + PINMUX_HDMIMODE_1440X480I60_16X9 = 64+11, ///< HDMI Video format is 1440x480 & Interlaced 60fps & 16:9 + PINMUX_HDMIMODE_1440X240P60 = 64+12, ///< HDMI Video format is 1440x240 & Progressive 60fps + PINMUX_HDMIMODE_1440X240P60_16X9 = 64+13, ///< HDMI Video format is 1440x240 & Progressive 60fps & 16:9 + PINMUX_HDMIMODE_1440X480P60 = 64+14, ///< HDMI Video format is 1440x480 & Progressive 60fps + PINMUX_HDMIMODE_1440X480P60_16X9 = 64+15, ///< HDMI Video format is 1440x480 & Progressive 60fps & 16:9 + PINMUX_HDMIMODE_720X576P50 = 64+17, ///< HDMI Video format is 720x576 & Progressive 50fps + PINMUX_HDMIMODE_720X576P50_16X9 = 64+18, ///< HDMI Video format is 720x576 & Progressive 50fps & 16:9 + PINMUX_HDMIMODE_1280X720P50 = 64+19, ///< HDMI Video format is 1280x720 & Progressive 50fps + PINMUX_HDMIMODE_1920X1080I50 = 64+20, ///< HDMI Video format is 1920x1080 & Interlaced 50fps + PINMUX_HDMIMODE_720X576I50 = 64+21, ///< HDMI Video format is 720x576 & Interlaced 50fps + PINMUX_HDMIMODE_720X576I50_16X9 = 64+22, ///< HDMI Video format is 720x576 & Interlaced 50fps & 16:9 + PINMUX_HDMIMODE_720X288P50 = 64+23, ///< HDMI Video format is 720x288 & Progressive 50fps + PINMUX_HDMIMODE_720X288P50_16X9 = 64+24, ///< HDMI Video format is 720x288 & Progressive 50fps & 16:9 + PINMUX_HDMIMODE_1440X576I50 = 64+25, ///< HDMI Video format is 1440x576 & Interlaced 50fps + PINMUX_HDMIMODE_1440X576I50_16X9 = 64+26, ///< HDMI Video format is 1440x576 & Interlaced 50fps & 16:9 + PINMUX_HDMIMODE_1440X288P50 = 64+27, ///< HDMI Video format is 1440x288 & Progressive 50fps + PINMUX_HDMIMODE_1440X288P50_16X9 = 64+28, ///< HDMI Video format is 1440x288 & Progressive 50fps & 16:9 + PINMUX_HDMIMODE_1440X576P50 = 64+29, ///< HDMI Video format is 1440x576 & Progressive 50fps + PINMUX_HDMIMODE_1440X576P50_16X9 = 64+30, ///< HDMI Video format is 1440x576 & Progressive 50fps & 16:9 + PINMUX_HDMIMODE_1920X1080P50 = 64+31, ///< HDMI Video format is 1920x1080 & Progressive 50fps + PINMUX_HDMIMODE_1920X1080P24 = 64+32, ///< HDMI Video format is 1920x1080 & Progressive 24fps + PINMUX_HDMIMODE_1920X1080P25 = 64+33, ///< HDMI Video format is 1920x1080 & Progressive 25fps + PINMUX_HDMIMODE_1920X1080P30 = 64+34, ///< HDMI Video format is 1920x1080 & Progressive 30fps + PINMUX_HDMIMODE_1920X1080I50_VT1250 = 64+39, ///< HDMI Video format is 1920x1080 & Interlaced 50fps & V-total is 1250 lines + PINMUX_HDMIMODE_1920X1080I100 = 64+40, ///< HDMI Video format is 1920x1080 & Interlaced 100fps + PINMUX_HDMIMODE_1280X720P100 = 64+41, ///< HDMI Video format is 1280X720 & Progressive 100fps + PINMUX_HDMIMODE_720X576P100 = 64+42, ///< HDMI Video format is 720X576 & Progressive 100fps + PINMUX_HDMIMODE_720X576P100_16X9 = 64+43, ///< HDMI Video format is 720X576 & Progressive 100fps & 16:9 + PINMUX_HDMIMODE_720X576I100 = 64+44, ///< HDMI Video format is 720X576 & Interlaced 100fps + PINMUX_HDMIMODE_720X576I100_16X9 = 64+45, ///< HDMI Video format is 720X576 & Interlaced 100fps & 16:9 + PINMUX_HDMIMODE_1920X1080I120 = 64+46, ///< HDMI Video format is 1920X1080 & Interlaced 120fps + PINMUX_HDMIMODE_1280X720P120 = 64+47, ///< HDMI Video format is 1280X720 & Progressive 120fps + PINMUX_HDMIMODE_720X480P120 = 64+48, ///< HDMI Video format is 720X480 & Progressive 120fps + PINMUX_HDMIMODE_720X480P120_16X9 = 64+49, ///< HDMI Video format is 720X480 & Progressive 120fps & 16:9 + PINMUX_HDMIMODE_720X480I120 = 64+50, ///< HDMI Video format is 720X480 & Interlaced 120fps + PINMUX_HDMIMODE_720X480I120_16X9 = 64+51, ///< HDMI Video format is 720X480 & Interlaced 120fps & 16:9 + PINMUX_HDMIMODE_720X576P200 = 64+52, ///< HDMI Video format is 720X576 & Progressive 200fps + PINMUX_HDMIMODE_720X576P200_16X9 = 64+53, ///< HDMI Video format is 720X576 & Progressive 200fps & 16:9 + PINMUX_HDMIMODE_720X576I200 = 64+54, ///< HDMI Video format is 720X576 & Interlaced 200fps + PINMUX_HDMIMODE_720X576I200_16X9 = 64+55, ///< HDMI Video format is 720X576 & Interlaced 200fps & 16:9 + PINMUX_HDMIMODE_720X480P240 = 64+56, ///< HDMI Video format is 720X480 & Progressive 240fps + PINMUX_HDMIMODE_720X480P240_16X9 = 64+57, ///< HDMI Video format is 720X480 & Progressive 240fps & 16:9 + PINMUX_HDMIMODE_720X480I240 = 64+58, ///< HDMI Video format is 720X480 & Interlaced 240fps + PINMUX_HDMIMODE_720X480I240_16X9 = 64+59, ///< HDMI Video format is 720X480 & Interlaced 240fps & 16:9 + + PINMUX_DSI_1_LANE_CMD_MODE_RGB565 = 128+0, ///< DSI command mode with RGB565 format + PINMUX_DSI_1_LANE_CMD_MODE_RGB666P = 128+1, ///< DSI command mode with RGB666 packed + PINMUX_DSI_1_LANE_CMD_MODE_RGB666L = 128+2, ///< DSI command mode with RGB666 loosely + PINMUX_DSI_1_LANE_CMD_MODE_RGB888 = 128+3, ///< DSI command mode with RGB888 + + PINMUX_DSI_1_LANE_VDO_SYNC_PULSE_RGB565 = 128+4, ///< DSI video sync pulse mode with RGB565 format + PINMUX_DSI_1_LANE_VDO_SYNC_PULSE_RGB666P = 128+5, ///< DSI video sync pulse mode with RGB666 packed + PINMUX_DSI_1_LANE_VDO_SYNC_PULSE_RGB666L = 128+6, ///< DSI video sync pulse mode with RGB666 loosely + PINMUX_DSI_1_LANE_VDO_SYNC_PULSE_RGB888 = 128+7, ///< DSI video sync pulse mode with RGB888 + + PINMUX_DSI_1_LANE_VDO_SYNC_EVENT_RGB565 = 128+8, ///< DSI video sync event burst mode with RGB565 format + PINMUX_DSI_1_LANE_VDO_SYNC_EVENT_RGB666P = 128+9, ///< DSI video sync event burst mode with RGB666 packed + PINMUX_DSI_1_LANE_VDO_SYNC_EVENT_RGB666L = 128+10,///< DSI video sync event burst mode with RGB666 loosely + PINMUX_DSI_1_LANE_VDO_SYNC_EVENT_RGB888 = 128+11,///< DSI video sync event burst mode with RGB888 + + PINMUX_DSI_2_LANE_CMD_MODE_RGB565 = 128+12,///< DSI command mode with RGB565 format + PINMUX_DSI_2_LANE_CMD_MODE_RGB666P = 128+13,///< DSI command mode with RGB666 packed + PINMUX_DSI_2_LANE_CMD_MODE_RGB666L = 128+14,///< DSI command mode with RGB666 loosely + PINMUX_DSI_2_LANE_CMD_MODE_RGB888 = 128+15,///< DSI command mode with RGB888 + + PINMUX_DSI_2_LANE_VDO_SYNC_PULSE_RGB565 = 128+16,///< DSI video sync pulse mode with RGB565 format + PINMUX_DSI_2_LANE_VDO_SYNC_PULSE_RGB666P = 128+17,///< DSI video sync pulse mode with RGB666 packed + PINMUX_DSI_2_LANE_VDO_SYNC_PULSE_RGB666L = 128+18,///< DSI video sync pulse mode with RGB666 loosely + PINMUX_DSI_2_LANE_VDO_SYNC_PULSE_RGB888 = 128+19,///< DSI video sync pulse mode with RGB888 + + PINMUX_DSI_2_LANE_VDO_SYNC_EVENT_RGB565 = 128+20,///< DSI video sync event burst mode with RGB565 format + PINMUX_DSI_2_LANE_VDO_SYNC_EVENT_RGB666P = 128+21,///< DSI video sync event burst mode with RGB666 packed + PINMUX_DSI_2_LANE_VDO_SYNC_EVENT_RGB666L = 128+22,///< DSI video sync event burst mode with RGB666 loosely + PINMUX_DSI_2_LANE_VDO_SYNC_EVENT_RGB888 = 128+23,///< DSI video sync event burst mode with RGB888 + + PINMUX_DSI_4_LANE_CMD_MODE_RGB565 = 128+24,///< DSI command mode with RGB565 format + PINMUX_DSI_4_LANE_CMD_MODE_RGB666P = 128+25,///< DSI command mode with RGB666 packed + PINMUX_DSI_4_LANE_CMD_MODE_RGB666L = 128+26,///< DSI command mode with RGB666 loosely + PINMUX_DSI_4_LANE_CMD_MODE_RGB888 = 128+27,///< DSI command mode with RGB888 + + PINMUX_DSI_4_LANE_VDO_SYNC_PULSE_RGB565 = 128+28,///< DSI video sync pulse mode with RGB565 format + PINMUX_DSI_4_LANE_VDO_SYNC_PULSE_RGB666P = 128+29,///< DSI video sync pulse mode with RGB666 packed + PINMUX_DSI_4_LANE_VDO_SYNC_PULSE_RGB666L = 128+30,///< DSI video sync pulse mode with RGB666 loosely + PINMUX_DSI_4_LANE_VDO_SYNC_PULSE_RGB888 = 128+31,///< DSI video sync pulse mode with RGB888 + + PINMUX_DSI_4_LANE_VDO_SYNC_EVENT_RGB565 = 128+32,///< DSI video sync event burst mode with RGB565 format + PINMUX_DSI_4_LANE_VDO_SYNC_EVENT_RGB666P = 128+33,///< DSI video sync event burst mode with RGB666 packed + PINMUX_DSI_4_LANE_VDO_SYNC_EVENT_RGB666L = 128+34,///< DSI video sync event burst mode with RGB666 loosely + PINMUX_DSI_4_LANE_VDO_SYNC_EVENT_RGB888 = 128+35,///< DSI video sync event burst mode with RGB888 + + + + ENUM_DUMMY4WORD(PINMUX_LCDINIT) +} PINMUX_LCDINIT; + +/** + PIN config for Parallel MI + + @note For pinmux_init() with PIN_FUNC_LCD or PIN_FUNC_LCD2.\n + For example, you can use {PIN_FUNC_LCD, PINMUX_DISPMUX_SEL_LCD|PINMUX_PMI_CFG_NORMAL|PINMUX_LCDMODE_MI_FMT0}\n + to tell display object that PIN_FUNC_LCD is bound to MI and format is FMT0,\n + and MI is located at primary location. +*/ +typedef enum +{ + PINMUX_PMI_CFG_NORMAL = 0x00, ///< Normal Parallel MI location (at LCD) + PINMUX_PMI_CFG_2ND_PINMUX = 0x01<<26, ///< Secondary Parallel MI location (at LGPIO[12..25]) + + PINMUX_PMI_CFG_MASK = 0x03<<26, + ENUM_DUMMY4WORD(PINMUX_PMI_CFG) +} PINMUX_PMI_CFG; + +/** + PIN config for TV/HDMI + + @note For pinmux_init() for PIN_FUNC_TV or PIN_FUNC_HDMI.\n + For example, you can use {PIN_FUNC_HDMI, PINMUX_TV_HDMI_CFG_NORMAL|PINMUX_HDMIMODE_1280X720P60}\n + to tell display object that HDMI activation will disable PANEL,\n + and HDMI mode is 1280x720 P60. +*/ +typedef enum +{ + PINMUX_TV_HDMI_CFG_GPIO = 0x00, ///< TV activation will disable PINMUX to GPIO + PINMUX_TV_HDMI_CFG_NORMAL = 0x00, ///< TV activation will disable PANEL which shared the same IDE + PINMUX_TV_HDMI_CFG_PINMUX_ON = 0x01<<28, ///< TV activation will keep PINMUX setting + + PINMUX_TV_HDMI_CFG_MASK = 0x03<<28, + ENUM_DUMMY4WORD(PINMUX_TV_HDMI_CFG) +} PINMUX_TV_HDMI_CFG; + +/** + PIN config for HDMI + + @note For pinmux_init() for PIN_FUNC_HDMI.\n + For example, you can use {PIN_FUNC_HDMI, PINMUX_HDMI_CFG_CEC|PINMUX_TV_HDMI_CFG_NORMAL}\n + to declare HDMI CEC pinmux is enabled. +*/ +typedef enum +{ + PINMUX_HDMI_CFG_GPIO = 0x00, ///< HDMI specific PIN to GPIO + PINMUX_HDMI_CFG_HOTPLUG = 0x01<<26, ///< HDMI HOTPLUG. Enable HDMI_PLUG (on P_GPIO[30]) + PINMUX_HDMI_CFG_CEC = 0x02<<26, ///< HDMI CEC. Enable HDMI_CEC (on P_GPIO[27]) + + PINMUX_HDMI_CFG_MASK = 0x03<<26, + ENUM_DUMMY4WORD(PINMUX_HDMI_CFG) +} PINMUX_HDMI_CFG; + +/** + PIN location of LCD + + @note For pinmux_init() with PIN_FUNC_LCD or PIN_FUNC_LCD2.\n + For example, you can use {PIN_FUNC_LCD, PINMUX_DISPMUX_SEL_LCD2|PINMUX_LCDMODE_XXX}\n + to tell display object that PIN_FUNC_LCD is located on secondary LCD pinmux. +*/ +typedef enum +{ + PINMUX_DISPMUX_SEL_NONE = 0x00<<28, ///< PINMUX none + PINMUX_DISPMUX_SEL_LCD = 0x01<<28, ///< PINMUX at LCD interface + PINMUX_DISPMUX_SEL_LCD2 = 0x02<<28, ///< PINMUX at LCD2 interface + + PINMUX_DISPMUX_SEL_MASK = 0x03<<28, + ENUM_DUMMY4WORD(PINMUX_DISPMUX_SEL) +} PINMUX_DISPMUX_SEL; + +/** + PIN config for ETH + + @note For pinmux_init() for PIN_FUNC_ETH.\n + For example, you can use {PIN_FUNC_ETH, PINMUX_ETH_CFG_MII}\n + to select USB as device. +*/ +typedef enum +{ + PIN_ETH_CFG_NONE = 0x00, ///< PINMUX none + PIN_ETH_CFG_MII = 0x01, ///< ETH MII + PIN_ETH_CFG_RMII = 0x02, ///< ETH RMII + PIN_ETH_CFG_GMII = 0x04, ///< ETH GMII + PIN_ETH_CFG_RGMII = 0x08, ///< ETH RGMII + PIN_ETH_CFG_REVMII_10_100 = 0x10, ///< ETH REVMII_10_100 + PIN_ETH_CFG_REVMII_10_1000 = 0x20, ///< ETH REVMII_10_1000 + + ENUM_DUMMY4WORD(PINMUX_ETH_CFG) +} PINMUX_ETH_CFG; + + +/** + Pinmux Function identifier + + @note For pinmux_getDispMode(), pinmux_setPinmux(). +*/ +typedef enum +{ + PINMUX_FUNC_ID_LCD, ///< 1st Panel (LCD), pinmux can be: + ///< - @b PINMUX_LCD_SEL_GPIO + ///< - @b PINMUX_LCD_SEL_CCIR656 + ///< - @b PINMUX_LCD_SEL_CCIR601 + ///< - @b PINMUX_LCD_SEL_SERIAL_RGB_6BITS + ///< - @b PINMUX_LCD_SEL_SERIAL_RGB_8BITS + ///< - @b PINMUX_LCD_SEL_SERIAL_YCbCr_8BITS + ///< - @b PINMUX_LCD_SEL_PARALLE_MI_8BITS + ///< - @b PINMUX_LCD_SEL_PARALLE_MI_9BITS + ///< - @b PINMUX_LCD_SEL_SERIAL_MI_SDIO + ///< - @b PINMUX_LCD_SEL_SERIAL_MI_SDI_SDO + ///< ORed with + ///< - @b PINMUX_LCD_SEL_DE_ENABLE + ///< - @b PINMUX_LCD_SEL_TE_ENABLE + PINMUX_FUNC_ID_LCD2, ///< 2nd Panel (LCD), pinmux can be: + ///< - @b PINMUX_LCD_SEL_GPIO + ///< - @b PINMUX_LCD_SEL_CCIR656 + ///< - @b PINMUX_LCD_SEL_CCIR601 + ///< - @b PINMUX_LCD_SEL_SERIAL_RGB_6BITS + ///< - @b PINMUX_LCD_SEL_SERIAL_RGB_8BITS + ///< - @b PINMUX_LCD_SEL_SERIAL_YCbCr_8BITS + ///< - @b PINMUX_LCD_SEL_PARALLE_MI_8BITS + ///< - @b PINMUX_LCD_SEL_PARALLE_MI_9BITS + ///< - @b PINMUX_LCD_SEL_SERIAL_MI_SDIO + ///< - @b PINMUX_LCD_SEL_SERIAL_MI_SDI_SDO + ///< ORed with + ///< - @b PINMUX_LCD_SEL_DE_ENABLE + PINMUX_FUNC_ID_TV, ///< TV, pinmux can be: + ///< - @b PINMUX_LCD_SEL_GPIO + PINMUX_FUNC_ID_HDMI, ///< HDMI, pinmux can be: + ///< - @b PINMUX_LCD_SEL_GPIO + PINMUX_FUNC_ID_SN_MES0, ///< Sensor MES0, pinmux can be: + ///< - @b PINMUX_SENSOR_SEL_INACTIVE + ///< - @b PINMUX_SENSOR_SEL_ACTIVE + PINMUX_FUNC_ID_SN_MES1, ///< Sensor MES1, pinmux can be: + ///< - @b PINMUX_SENSOR_SEL_INACTIVE + ///< - @b PINMUX_SENSOR_SEL_ACTIVE + PINMUX_FUNC_ID_SN_MES2, ///< Sensor MES2, pinmux can be: + ///< - @b PINMUX_SENSOR_SEL_INACTIVE + ///< - @b PINMUX_SENSOR_SEL_ACTIVE + PINMUX_FUNC_ID_SN_MES3, ///< Sensor MES3, pinmux can be: + ///< - @b PINMUX_SENSOR_SEL_INACTIVE + ///< - @b PINMUX_SENSOR_SEL_ACTIVE + PINMUX_FUNC_ID_SN_FLCTR, ///< Sensor Flash Control, pinmux can be: + ///< - @b PINMUX_SENSOR_SEL_INACTIVE + ///< - @b PINMUX_SENSOR_SEL_ACTIVE + PINMUX_FUNC_ID_SN_MCLK, ///< Sensor MCLK, pinmux can be: + ///< - @b PINMUX_SENSOR_SEL_INACTIVE + ///< - @b PINMUX_SENSOR_SEL_ACTIVE + PINMUX_FUNC_ID_SPI2, ///< SPI channel2 pinmux switch, pinmux can be: + ///< - @b PINMUX_SPI_SEL_INACTIVE + ///< - @b PINMUX_SPI_SEL_ACTIVE + PINMUX_FUNC_ID_SPI3, ///< SPI channel3 pinmux switch, pinmux can be: + ///< - @b PINMUX_SPI_SEL_INACTIVE + ///< - @b PINMUX_SPI_SEL_ACTIVE + PINMUX_FUNC_ID_SPI4, ///< SPI channel4 pinmux switch, pinmux can be: + ///< - @b PINMUX_SPI_SEL_INACTIVE + ///< - @b PINMUX_SPI_SEL_ACTIVE + PINMUX_FUNC_ID_SPI5, ///< SPI channel5 pinmux switch, pinmux can be: + ///< - @b PINMUX_SPI_SEL_INACTIVE + ///< - @b PINMUX_SPI_SEL_ACTIVE + PINMUX_FUNC_ID_COUNT, //< Total function count + + ENUM_DUMMY4WORD(PINMUX_FUNC_ID) +} PINMUX_FUNC_ID; + +/** + Pinmux selection for LCD + + @note For PINMUX_FUNC_ID_LCD, PINMUX_FUNC_ID_LCD2 +*/ +typedef enum +{ + PINMUX_LCD_SEL_GPIO, ///< GPIO + PINMUX_LCD_SEL_CCIR656, ///< CCIR-656 8 bits. Enable CCIR_YC[0..7]/CCIR_CLK on LCD[0..8] (L_GPIO[0..8]) + PINMUX_LCD_SEL_CCIR656_16BITS, ///< CCIR-656 16 bits. Enable CCIR_Y[0..7]/CCIR_CLK/CCIR_C[0..7] on LCD[0..8]/LCD[12..19] (L_GPIO[0..8]/L_GPIO[12..19]) + PINMUX_LCD_SEL_CCIR601, ///< CCIR-601 8 bits. Enable CCIR_YC[0..7]/CCIR_CLK/CCIR_VD/CCIR_HD on LCD[0..10] (L_GPIO[0..10]) + PINMUX_LCD_SEL_CCIR601_16BITS, ///< CCIR-601 16 bits. Enable CCIR_Y[0..7]/CCIR_CLK/CCIR_VD/CCIR_HD/CCIR_C[0..7] on LCD[0..19] (L_GPIO[0..19]) + PINMUX_LCD_SEL_SERIAL_RGB_6BITS, ///< Serial RGB 6 bits. Enable RGB_D[2..7]/RGB_CLK/RGB_VD/RGB_HD on LCD[2..10] (L_GPIO[2..10]) + PINMUX_LCD_SEL_SERIAL_RGB_8BITS, ///< Serial RGB 8 bits. Enable RGB_D[0..7]/RGB_CLK/RGB_VD/RGB_HD on LCD[0..10] (L_GPIO[0..10]) + PINMUX_LCD_SEL_SERIAL_YCbCr_8BITS, ///< Serial YCbCr 8 bits. Enable CCIR_YC[0..7]/CCIR_CLK/CCIR_VD/CCIR_HD on LCD[0..10] (L_GPIO[0..10]) + PINMUX_LCD_SEL_PARALLE_RGB565, ///< Parallel RGB565. Enable RGB_C0_[0..4]/RGB_DCLK/RGB_VS/RGB_HS/RGB_C1_[0..5]/RGB_C2_[0..4] on LCD[3..10]/LCD[14..19]/LCD[23..27] (L_GPIO[3..10]/L_GPIO[14..19]/L_GPIO[23..27]) + PINMUX_LCD_SEL_PARALLE_RGB666, ///< Parallel RGB666. Enable RGB_C0_[0..5]/RGB_DCLK/RGB_VS/RGB_HS/RGB_C1_[0..5]/RGB_C2_[0..5] on LCD[2..10]/LCD[14..19]/LCD[22..27] (L_GPIO[2..10]/L_GPIO[14..19]/L_GPIO[22..27]) + PINMUX_LCD_SEL_PARALLE_RGB888, ///< Parallel RGB888. Enable RGB_C0_[0..7]/RGB_DCLK/RGB_VS/RGB_HS/RGB_C1_[0..7]/RGB_C2_[0..7] on LCD[0..10]/LCD[12..27] (L_GPIO[2..10]/L_GPIO[12..27]) + PINMUX_LCD_SEL_RGB_16BITS, ///< RGB 16 bits. Enable CCIR_Y[0..7]/CCIR_CLK/CCIR_VD/CCIR_HD/CCIR_C[0..7] on LCD[0..19] (L_GPIO[0..19]) + PINMUX_LCD_SEL_PARALLE_MI_8BITS, ///< Parallel MI 8 bits. + ///< When PINMUX_PMI_CFG_NORMAL is set, Enable MPU_D[0..7]/MPU_CS/MPU_RS/MPU_WR/MPU_RD on LCD[0..7]/LCD[9..12] (L_GPIO[0..7]/L_GPIO[9..12]) + ///< When PINMUX_PMI_CFG_2ND_PINMUX is set, Enable MPU2_RS/MPU2_CS/MPU2_D[0..7]/MPU2_WR/MPU2_RD on LCD[12..22]/LCD[24] (L_GPIO[12..22]/L_GPIO[24]) + PINMUX_LCD_SEL_PARALLE_MI_9BITS, ///< Parallel MI 9 bits. + ///< When PINMUX_PMI_CFG_NORMAL is set, Enable MPU_D[0..8]/MPU_CS/MPU_RS/MPU_WR/MPU_RD on LCD[0..7]/LCD[9..13] (L_GPIO[0..7]/L_GPIO[9..13]) + ///< When PINMUX_PMI_CFG_2ND_PINMUX is set, Enable MPU2_RS/MPU2_CS/MPU2_D[0..8]/MPU2_WR/MPU2_RD on LCD[12..24] (L_GPIO[12..24]) + PINMUX_LCD_SEL_PARALLE_MI_16BITS, ///< Parallel MI 16 bits. Enable MPU_D[0..15]/MPU_CS/MPU_RS/MPU_WR/MPU_RD on LCD[0..7]/LCD[9..20] (L_GPIO[0..7]/L_GPIO[9..20]) + PINMUX_LCD_SEL_PARALLE_MI_18BITS, ///< Parallel MI 18 bits. Enable MPU_D[0..17]/MPU_CS/MPU_RS/MPU_WR/MPU_RD on LCD[0..7]/LCD[9..22] (L_GPIO[0..7]/L_GPIO[9..22]) + PINMUX_LCD_SEL_SERIAL_MI_SDIO, ///< Serial MI SDIO bi-direction. Enable MPU_CS/MPU_RS/MPU_CLK/MPU_SDIO on LCD[15..18] (L_GPIO[15..18]) + PINMUX_LCD_SEL_SERIAL_MI_SDI_SDO, ///< Serial MI SDI/SDO seperate. Enable MPU_SDO/MPU_SDI/MPU_CS/MPU_RS/MPU_CLK on LCD[13..17] (L_GPIO[13..17]) + PINMUX_LCD_SEL_MIPI, ///< MIPI DSI + + PINMUX_LCD_SEL_TE_ENABLE = 0x01<<23, ///< TE Enable (For Parallel/Serial MI) + ///< When normal (PINMUX_PMI_CFG_NORMAL) parallel MI, enable MPU_TE on LCD8 (L_GPIO[8]). + ///< When 2nd (PINMUX_PMI_CFG_2ND_PINMUX) parallel MI, enable MPU_TE on LCD25 (L_GPIO[25]). + ///< When serial MI, enable MI_TE on LCD19 (L_GPIO[19]). + PINMUX_LCD_SEL_DE_ENABLE = 0x01<<24, ///< DE Enable (For CCIR656 8/16bits, CCIR601 16bits, Serial RGB 6/8bits, Serial YCbCr 8 bits, RGB 16 bits) + ///< When corresponding item in pinmux_init() is set with PINMUX_DISPMUX_SEL_LCD, enable CCIR_DE on LCD11 (L_GPIO[11]). + ///< When corresponding item in pinmux_init() is set with PINMUX_DISPMUX_SEL_LCD2, enable CCIR2_DE on LCD23 (L_GPIO[23]). + PINMUX_LCD_SEL_HVLD_VVLD = 0x01<<25, ///< HVLD/VVLD Enable (For CCIR-601 8 bits). Enable CCIR_HVLD/CCIR_VVLD on LCD[12..13] (L_GPIO[12..13]) + PINMUX_LCD_SEL_FIELD = 0x01<<26, ///< FIELD Enable (For CCIR-601 8 bits). Enable CCIR_FIELD on LCD14 (L_GPIO[14]) + + PINMUX_LCD_SEL_FEATURE_MSK = 0x0F<<23, + + ENUM_DUMMY4WORD(PINMUX_LCD_SEL) +} PINMUX_LCD_SEL; + +/** + Pinmux selection for Storage + + @note For PINMUX_FUNC_ID_SDIO, PINMUX_FUNC_ID_SPI, PINMUX_FUNC_ID_NAND +*/ +typedef enum +{ + PINMUX_STORAGE_SEL_INACTIVE, ///< Inactive storage + PINMUX_STORAGE_SEL_ACTIVE, ///< Active storage + PINMUX_STORAGE_SEL_INEXIST, ///< Inexist storage + PINMUX_STORAGE_SEL_EXIST, ///< Exist storage + ENUM_DUMMY4WORD(PINMUX_STORAGE_SEL) +} PINMUX_STORAGE_SEL; + +/** + Pinmux selection for sensor + + @note For PINMUX_FUNC_ID_SN_MES0, PINMUX_FUNC_ID_SN_MES1, PINMUX_FUNC_ID_SN_FLCTR +*/ +typedef enum +{ + PINMUX_SENSOR_SEL_INACTIVE, ///< Inactive + PINMUX_SENSOR_SEL_ACTIVE, ///< Active + ENUM_DUMMY4WORD(PINMUX_SENSOR_SEL) +} PINMUX_SENSOR_SEL; + +/** + Pinmux selection for sensor + + @note For PINMUX_FUNC_ID_USB_VBUSI +*/ +typedef enum +{ + PINMUX_USB_SEL_INACTIVE, ///< Inactive + PINMUX_USB_SEL_ACTIVE, ///< Active + ENUM_DUMMY4WORD(PINMUX_USB_SEL) +} PINMUX_USB_SEL; + +/** + Pinmux selection for SPI + + @note For PINMUX_FUNC_ID_SPI2, PINMUX_FUNC_ID_SPI3 +*/ +typedef enum +{ + PINMUX_SPI_SEL_INACTIVE, ///< Inactive + PINMUX_SPI_SEL_ACTIVE, ///< Active + ENUM_DUMMY4WORD(PINMUX_SPI_SEL) +} PINMUX_SPI_SEL; + +/** + Pinmux group + + @note For pinmux_init() +*/ +typedef struct +{ + PIN_FUNC pin_function; ///< PIN Function group + UINT32 config; ///< Configuration for pinFunction +} PIN_GROUP_CONFIG; + +/* + Pinmux Function identifier for driver only + + @note For pinmux_setPinmux(). +*/ +typedef enum +{ + PINMUX_FUNC_ID_SDIO = 0x8000000, ///< SDIO, pinmux can be: + ///< - @b PINMUX_STORAGE_SEL_INACTIVE + ///< - @b PINMUX_STORAGE_SEL_ACTIVE + PINMUX_FUNC_ID_SDIO2, ///< SDIO2, pinmux can be: + ///< - @b PINMUX_STORAGE_SEL_INACTIVE + ///< - @b PINMUX_STORAGE_SEL_ACTIVE + PINMUX_FUNC_ID_SDIO3, ///< SDIO3, pinmux can be: + ///< - @b PINMUX_STORAGE_SEL_INACTIVE + ///< - @b PINMUX_STORAGE_SEL_ACTIVE + PINMUX_FUNC_ID_SPI, ///< SPI, pinmux can be: + ///< - @b PINMUX_STORAGE_SEL_INACTIVE + ///< - @b PINMUX_STORAGE_SEL_ACTIVE + PINMUX_FUNC_ID_NAND, ///< NAND, pinmux can be: + ///< - @b PINMUX_STORAGE_SEL_INACTIVE + ///< - @b PINMUX_STORAGE_SEL_ACTIVE + PINMUX_FUNC_ID_BMC, ///< BMC, pinmux can be: + ///< - @b PINMUX_STORAGE_SEL_INACTIVE + ///< - @b PINMUX_STORAGE_SEL_ACTIVE + PINMUX_FUNC_ID_USB_VBUSI, ///< USB VBUSI, pinmux can be: + ///< - @b PINMUX_USB_SEL_INACTIVE + ///< - @b PINMUX_USB_SEL_ACTIVE + PINMUX_FUNC_ID_USB2_VBUSI, ///< USB2 VBUSI, pinmux can be: + ///< - @b PINMUX_USB_SEL_INACTIVE + ///< - @b PINMUX_USB_SEL_ACTIVE + PINMUX_FUNC_ID_I2C1_1ST, ///< I2C channel1 1st pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C1_2ND, ///< I2C channel1 2nd pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C2_1ST, ///< I2C channel2 1st pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C2_2ND, ///< I2C channel2 2nd pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C3_1ST, ///< I2C channel3 1st pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C3_2ND, ///< I2C channel3 2nd pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C3_3RD, ///< I2C channel3 3rd pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C4_1ST, ///< I2C channel4 1st pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C4_2ND, ///< I2C channel4 2nd pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C4_3RD, ///< I2C channel4 3rd pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C4_4TH, ///< I2C channel4 4th pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C5_1ST, ///< I2C channel5 1st pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C5_2ND, ///< I2C channel5 2nd pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_SN_VDHD, ///< SN VD/HD, pinmux can be: + ///< - @b PINMUX_SENSOR_SEL_INACTIVE + ///< - @b PINMUX_SENSOR_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_0, ///< PWM channel 0 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_1, ///< PWM channel 1 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_2, ///< PWM channel 2 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_3, ///< PWM channel 3 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_4, ///< PWM channel 4 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_5, ///< PWM channel 5 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_6, ///< PWM channel 6 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_7, ///< PWM channel 7 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_8, ///< PWM channel 8 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_9, ///< PWM channel 9 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_10, ///< PWM channel 10 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_11, ///< PWM channel 11 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_12, ///< PWM channel 12 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_13, ///< PWM channel 13 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_14, ///< PWM channel 14 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_15, ///< PWM channel 15 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_16, ///< PWM channel 16 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_17, ///< PWM channel 17 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_18, ///< PWM channel 18 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_19, ///< PWM channel 19 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_0, ///< SIF channel 0 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_1, ///< SIF channel 1 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_2, ///< SIF channel 2 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_3, ///< SIF channel 3 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_4, ///< SIF channel 4 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_5, ///< SIF channel 5 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_6, ///< SIF channel 6 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_7, ///< SIF channel 7 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_UART_1, ///< UART channel 1 + ///< - @b PINMUX_UART_SEL_INACTIVE + ///< - @b PINMUX_UART_SEL_ACTIVE + PINMUX_FUNC_ID_UART_2, ///< UART channel 2 + ///< - @b PINMUX_UART_SEL_INACTIVE + ///< - @b PINMUX_UART_SEL_ACTIVE + PINMUX_FUNC_ID_UART_3, ///< UART channel 3 + ///< - @b PINMUX_UART_SEL_INACTIVE + ///< - @b PINMUX_UART_SEL_ACTIVE + PINMUX_FUNC_ID_UART_4, ///< UART channel 4 + ///< - @b PINMUX_UART_SEL_INACTIVE + ///< - @b PINMUX_UART_SEL_ACTIVE + PINMUX_FUNC_ID_I2S, ///< I2S + ///< - @b PINMUX_I2S_SEL_INACTIVE + ///< - @b PINMUX_I2S_SEL_ACTIVE + PINMUX_FUNC_ID_I2S_MCLK, ///< I2S MCLK + ///< - @b PINMUX_I2S_SEL_INACTIVE + ///< - @b PINMUX_I2S_SEL_ACTIVE + + ENUM_DUMMY4WORD(PINMUX_FUNC_ID_DRV) +} PINMUX_FUNC_ID_DRV; + +// +// API for Top controller +// +extern void pinmux_select_debugport(PINMUX_DEBUGPORT uiDebug); +extern void pinmux_select_ocp_debugport(PINMUX_DEBUGPORT_OCP uiDebug); + +extern ER pinmux_init(PIN_GROUP_CONFIG *pConfig); +extern ER pinmux_setDispMode(PINMUX_FUNC_ID id, PINMUX_LCDINIT dispMode); +extern PINMUX_LCDINIT pinmux_getDispMode(PINMUX_FUNC_ID id); +extern ER pinmux_set_pinmux(PINMUX_FUNC_ID id, UINT32 pinmux); +extern BOOL pinmux_chkPinmux(PINMUX_FUNC_ID id, UINT32 pinmux); +//@} //addtogroup mIHALSysCfg + +#endif + diff --git a/board/novatek/na51055/loader/Include/nvtpack/nvtpack.h b/board/novatek/na51055/loader/Include/nvtpack/nvtpack.h new file mode 100755 index 000000000000..d59c5c0001bc --- /dev/null +++ b/board/novatek/na51055/loader/Include/nvtpack/nvtpack.h @@ -0,0 +1,193 @@ +#ifndef _NVTPACK_H +#define _NVTPACK_H + +#define NVTPACK_CHKSUM_HDR_VERSION 0x16040719U +#define NVTPACK_FW_HDR2_VERSION 0x16071515U + +typedef enum _NVTPACK_ER { + NVTPACK_ER_SUCCESS = 0, + NVTPACK_ER_FAILED = -1, + NVTPACK_ER_UNKNOWN_FORMAT = -2, + NVTPACK_ER_CHECK_SUM = -3, + NVTPACK_ER_NOT_FOUND = -4, + NVTPACK_ER_USER_BREAK = -5, + NVTPACK_ER_PARAM = -6, + NVTPACK_ER_MEM_NOT_ENOUGH = -7, + NVTPACK_ER_UITRON_SIZE_ALIGN4 = -8, ///< uITRON size must align by 4 + NVTPACK_ER_INVALID_WHOLE_SIZE = -9, ///< after nvtpack, whole size must align by 4 + NVTPACK_ER_SRC_NAME_BLANK = -10, ///< resource's SrcName cannot be NULL or blank + NVTPACK_ER_SRC_NAME_EXCEED = -11, ///< resource's SrcName cannot exceed 12 bytes + NVTPACK_ER_SRC_NAME_INVALID = -12, ///< resource's SrcName include invalid character + NVTPACK_ER_SRC_NAME_ALIKE = -13, ///< there resource's SrcName are alike. +} NVTPACK_ER; + +typedef enum _NVTPACK_VER { + NVTPACK_VER_UNKNOWN, ///< UNKNOWN + NVTPACK_VER_13012816, ///< NT9666X, NT9850X + NVTPACK_VER_16072017, ///< NT9668X +} NVTPACK_VER; + +#if !defined(_WIN32) +typedef struct _GUID { + unsigned int Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[8]; +} GUID; +#endif + +typedef struct _NVTPACK_RES_HDR { + GUID guid; ///< {B5CB64AE-05DD-46FA-B906-0C62D22958D6} + unsigned int TotalSize; + unsigned int CheckSum; + unsigned int ContentSize; + char SrcName[16]; ///< original packed bin file name + char DstName[16]; ///< target file name +} NVTPACK_RES_HDR; + +typedef struct _NVTPACK_FW_HDR { + GUID guid; ///< {8827BE90-36CD-4FC2-A987-73A8484E84B1} + unsigned int TotalSize; ///< sizeof(NVTPACK_FW_HDR) + n*sizeof(NVTPACK_PARTITION_HDR) + unsigned int CheckSum; ///< check sum of sizeof(NVTPACK_FW_HDR) + n*sizeof(NVTPACK_PARTITION_HDR) + unsigned int TotalRes; ///< total partitions +} NVTPACK_FW_HDR; + +typedef struct _NVTPACK_FW_HDR2 { + GUID guid; ///< {D6012E07-10BC-4F91-B28A-352F82261A50} + unsigned int uiVersion; ///< NVTPACK_FW_HDR2_VERSION + unsigned int uiHdrSize; ///< sizeof(NVTPACK_FW_HDR2); + unsigned int TotalRes; ///< total resource counts + unsigned int TotalSize; ///< whole bin size + unsigned int uiChkMethod; ///< 0: CheckSum + unsigned int uiChkValue; ///< check sum value or crc value within NVTPACK_FW_HDR2 + unsigned int uiUserData[4]; ///< user defined data that may be used in future + unsigned int uiReversed[18];///< align to 128 bytes +} NVTPACK_FW_HDR2; + +typedef struct _NVTPACK_PARTITION_HDR { + unsigned int Offset; + unsigned int Size; + unsigned int PartitionID; +} NVTPACK_PARTITION_HDR; + +typedef struct _NVTPACK_CHKSUM_HDR { + unsigned int uiFourCC ; ///< 'C','K','S','M' + unsigned int uiVersion; ///< NVTPACK_CHKSUM_HDR header version + unsigned int uiChkMethod; ///< 0: CheckSum + unsigned int uiChkValue; ///< check sum value or crc value within NVTPACK_CHKSUM_HDR + unsigned int uiDataOffset; ///< real data starting offset without NVTPACK_CHKSUM_HDR + unsigned int uiDataSize; ///< real data size without NVTPACK_CHKSUM_HDR + unsigned int uiPaddingSize; ///< padding bytes for check sum + unsigned int uiEmbType; ///< relate to EMBTYPE_????? + unsigned int uiReversed[8]; ///< align to 64 bytes +} NVTPACK_CHKSUM_HDR; + +typedef struct _NVTPACK_BFC_HDR { + unsigned int uiFourCC; ///< FourCC = BCL1 + unsigned int uiAlgorithm; ///< algorithm always is 9 + unsigned int uiSizeUnComp;///< big endian uncompressed size + unsigned int uiSizeComp; ///< big endian compressed size +} NVTPACK_BFC_HDR; + +typedef struct _NVTPACK_BININFO_HDR { + unsigned int CodeEntry; ///< [0x00] fw CODE entry (4) ----- r by Ld + unsigned int Resv1[19]; ///< [0x04~0x50] reserved (4*19) -- reserved, its mem value will filled by Ld + char BinInfo_1[8]; ///< [0x50~0x58] CHIP-NAME (8) ---- r by Ep + char BinInfo_2[8]; ///< [0x58~0x60] SDK version (8) + char BinInfo_3[8]; ///< [0x60~0x68] SDK release-date (8) + unsigned int BinLength; ///< [0x68] Bin File Length (4) --- w by Ep/bfc + unsigned int Checksum; ///< [0x6c] Check Sum or CRC (4) ----- w by Ep/Epcrc + unsigned int CRCLenCheck; ///< [0x70~0x74] Length check for CRC (4) ----- w by Epcrc (total len ^ 0xAA55) + unsigned int Resv2; ///< [0x74~0x78] reserved (4) --- reserved for other bin tools + unsigned int BinCtrl; ///< [0x78~0x7C] Bin flag (4) --- w by bfc + ///< BIT 0.compressed enable (w by bfc) + unsigned int CRCBinaryTag; ///< [0x7C~0x80] Binary Tag for CRC (4) ----- w by Epcrc (0xAA55 + "NT") +} NVTPACK_BININFO_HDR; + +typedef struct _NVTPACK_MEM { + void *p_data; + unsigned int len; +} NVTPACK_MEM; + +typedef struct _NVTPACK_VERIFY_OUTPUT { + NVTPACK_VER ver; ///< indicate package type + unsigned int partition_cnt; ///< total partition counts +} NVTPACK_VERIFY_OUTPUT; + +typedef struct _NVTPACK_GET_PARTITION_INPUT { + unsigned int id; + NVTPACK_MEM mem; +} NVTPACK_GET_PARTITION_INPUT; + +typedef struct _NVTPACK_GET_RESOURCE_INPUT { + const char *filename; + NVTPACK_MEM mem; +} NVTPACK_GET_RESOURCE_INPUT; + +typedef struct _NVTPACK_ENUM_PARTITION_INPUT { + NVTPACK_MEM mem; + void *p_user_data; ///< [Optional] e.g. if use c class, you can pass that class point to your static callback. + int (*fp_enum)(unsigned int id, NVTPACK_MEM *p_mem, void *p_user_data); +} NVTPACK_ENUM_PARTITION_INPUT; + +typedef struct _NVTPACK_ENUM_RESOURCE_INPUT { + NVTPACK_MEM mem; + void *p_user_data; ///< [Optional] e.g. if use c class, you can pass that class point to your static callback. + int (*fp_enum)(NVTPACK_RES_HDR *p_hdr, NVTPACK_MEM *p_mem, void *p_user_data); +} NVTPACK_ENUM_RESOURCE_INPUT; + +typedef struct _NVTPACK_PARTITION_ITEM { + unsigned int id; + NVTPACK_MEM mem; +} NVTPACK_PARTITION_ITEM; + +typedef struct _NVTPACK_MAKE_PARTITION_INPUT { + NVTPACK_VER ver; ///< package version + NVTPACK_PARTITION_ITEM *p_list; ///< data list + int num; ///< data counts + NVTPACK_MEM mem_work; ///< working buffer +} NVTPACK_MAKE_PARTITION_INPUT; + +typedef struct _NVTPACK_RESOURCE_ITEM { + char SrcName[16]; ///< original name + char DstName[16]; ///< target file name + NVTPACK_MEM mem; +} NVTPACK_RESOURCE_ITEM; + +typedef struct _NVTPACK_MAKE_RESOURCE_INPUT { + NVTPACK_RESOURCE_ITEM *p_list; + int num; + NVTPACK_MEM mem_work; +} NVTPACK_MAKE_RESOURCE_INPUT; + +#ifndef IsEqualGUID +#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID))) +#endif + +#ifndef MAKEFOURCC +#define MAKEFOURCC(ch0, ch1, ch2, ch3) ((unsigned int)(unsigned char)(ch0) | ((unsigned int)(unsigned char)(ch1) << 8) | ((unsigned int)(unsigned char)(ch2) << 16) | ((unsigned int)(unsigned char)(ch3) << 24 )) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +extern unsigned int nvtpack_calc_nvt_sum(NVTPACK_MEM *p_mem); +extern NVTPACK_ER nvtpack_getver(NVTPACK_MEM *p_mem, NVTPACK_VER *p_ver); +extern NVTPACK_ER nvtpack_verify(NVTPACK_MEM *p_mem, NVTPACK_VERIFY_OUTPUT *p_output); +extern NVTPACK_ER nvtpack_get_partition(NVTPACK_GET_PARTITION_INPUT *p_input, NVTPACK_MEM *p_out); +extern NVTPACK_ER nvtpack_enum_partition(NVTPACK_ENUM_PARTITION_INPUT *p_input); +//NVTPACK_VER_13012816: need sizeof(NVTPACK_FW_HDR) +n*(sizeof(NVTPACK_PARTITION_HDR) + 4) + whole_data_size +//NVTPACK_VER_16072017: need sizeof(NVTPACK_FW_HDR2) +n*(sizeof(NVTPACK_PARTITION_HDR) + 4) + whole_data_size +extern NVTPACK_ER nvtpack_make_parition_pkg(NVTPACK_MAKE_PARTITION_INPUT *p_input, NVTPACK_MEM *p_out); + +extern NVTPACK_ER nvtpack_get_resource(NVTPACK_GET_RESOURCE_INPUT *p_input, NVTPACK_MEM *p_out); +extern NVTPACK_ER nvtpack_enum_resource(NVTPACK_ENUM_RESOURCE_INPUT *p_input); +//buf need n*(sizeof(NVTPACK_RES_HDR)+32)+ whole_data_size +extern NVTPACK_ER nvtpack_make_resource_pkg(NVTPACK_MAKE_RESOURCE_INPUT *p_input, NVTPACK_MEM *p_out); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/board/novatek/na51055/loader/Include/rtc.h b/board/novatek/na51055/loader/Include/rtc.h new file mode 100755 index 000000000000..fb0fa3999aa7 --- /dev/null +++ b/board/novatek/na51055/loader/Include/rtc.h @@ -0,0 +1,49 @@ +/** + Header file for RTC module. + + This file is the header file that define the API and data type + for RTC module. + + @file rtc.h + @ingroup mIHALRTC + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef __RTC_H +#define __RTC_H +#include "IOReg.h" + +/** + @addtogroup mIHALRTC +*/ +//@{ + +/** + @name RTC power on source + + RTC power on source + + @note For rtc_getPWRONSource() +*/ +//@{ +#define RTC_PWR_SW_STS 0x00000100 ///< Power on from switch +#define RTC_PWR_SW2_STS 0x00000200 ///< power on from power switch 2 +#define RTC_PWR_SW3_STS 0x00000400 ///< power on from power switch 3 (Usually for USB VBUS, depend on project) +#define RTC_PWR_VBUS_STS (RTC_PWR_SW3_STS) ///< power on from VBUS (identical to RTC_PWR_SW3_STS) +#define RTC_PWR_SW4_STS 0x00000800 ///< power on from power switch 4 (Usually for VBAT, depend on project) +#define RTC_PWR_VBAT_STS (RTC_PWR_SW4_STS) ///< power on from VBAT (identical to RTC_PWR_SW4_STS) +#define RTC_PWR_ALARM_STS 0x00010000 ///< Power on from PWR ALARM +//@} + +extern void rtc_resetShutDownTimer(void); +extern void rtc_poweroffPWR(void); +extern UINT32 rtc_getPWRONSource(void); +extern UINT32 rtc_chkS3boot_init(void) __attribute__ ((section (".part1"))); +extern void rtc_chkS3boot_wait_init(void) __attribute__ ((section (".part1"))); +extern UINT32 rtc_chkS3boot(void) __attribute__ ((section (".part1"))); + +//@} +#endif // __RTC_H + diff --git a/board/novatek/na51055/loader/Include/signal.h b/board/novatek/na51055/loader/Include/signal.h new file mode 100755 index 000000000000..5a2a7078c80c --- /dev/null +++ b/board/novatek/na51055/loader/Include/signal.h @@ -0,0 +1,4 @@ +#ifndef _NVT_LIBC_SIGNAL_H__ +#define _NVT_LIBC_SIGNAL_H__ +int raise(int sig); +#endif diff --git a/board/novatek/na51055/loader/Include/stdarg.h b/board/novatek/na51055/loader/Include/stdarg.h new file mode 100755 index 000000000000..f9af3123244d --- /dev/null +++ b/board/novatek/na51055/loader/Include/stdarg.h @@ -0,0 +1,19 @@ +#ifndef __NVT_STDARG_H__ +#define __NVT_STDARG_H__ + +typedef char *va_list; + +/* + * Storage alignment properties + */ +#define _AUPBND (sizeof (int) - 1) +#define _ADNBND (sizeof (int) - 1) + +/* + * Variable argument list macro definitions + */ +#define _bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) +#define va_arg(ap, T) (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND)))) +#define va_end(ap) (void) 0 +#define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND)))) +#endif diff --git a/board/novatek/na51055/loader/Include/stdio.h b/board/novatek/na51055/loader/Include/stdio.h new file mode 100755 index 000000000000..ec8eff4318d4 --- /dev/null +++ b/board/novatek/na51055/loader/Include/stdio.h @@ -0,0 +1,23 @@ +/** + STDIO header + + STDIO header + + @file stdio.h + @ingroup mISYSClib + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef __NVT_STDIO_H__ +#define __NVT_STDIO_H__ + +/** \addtogroup mISYSClib */ +//@{ + +int sprintf(char * buf, const char *fmt, ...); +int sscanf(const char * buf, const char * fmt, ...); + +//@} +#endif diff --git a/board/novatek/na51055/loader/Include/stdlib.h b/board/novatek/na51055/loader/Include/stdlib.h new file mode 100755 index 000000000000..9f8540807eb6 --- /dev/null +++ b/board/novatek/na51055/loader/Include/stdlib.h @@ -0,0 +1,4 @@ +#ifndef __NVT_LIBC_STDLIB_H__ +#define __NVT_LIBC_STDLIB_H__ +int atoi(const char *nptr); +#endif diff --git a/board/novatek/na51055/loader/Include/string.h b/board/novatek/na51055/loader/Include/string.h new file mode 100755 index 000000000000..aed82db58077 --- /dev/null +++ b/board/novatek/na51055/loader/Include/string.h @@ -0,0 +1,47 @@ +/** + string header + + string header + + @file string.h + @ingroup mISYSClib + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef __NVT_LIBC_STRING_H__ +#define __NVT_LIBC_STRING_H__ + +/** \addtogroup mISYSClib */ +//@{ + +/** + size_t data type + + data type to store value return by sizeof keyword +*/ +typedef unsigned int size_t; + +extern size_t strlen(const char *s); +extern size_t strnlen(const char *s, size_t count); +extern char *strncpy(char *dest, const char *src, size_t count); +extern char *strncat(char *dest, const char *src, size_t count); +extern char *strstr(const char *s1, const char *s2); +extern int strncmp(const char *cs, const char *ct, size_t count); +extern char *strrchr(const char *s, int c); +extern char *strcpy(char *dest, const char *src); +extern char *strcat(char *dest, const char *src); +extern char *strchr(const char *s, int c); +extern char* strtok(char *s, const char *delim); +extern int strcmp(const char *cs, const char *ct); + +extern void *utl_memset(void *s, int c, size_t count); +extern void *utl_memcpy(void *dest, const void *src, size_t count); +extern int memcmp(const void *cs, const void *ct, size_t count); +extern void *memmove(void *dest, const void *src, size_t count); +extern void *memchr(const void *ptr, int value, size_t count); +//@} + +#endif + diff --git a/board/novatek/na51055/loader/Include/timer.h b/board/novatek/na51055/loader/Include/timer.h new file mode 100755 index 000000000000..22992bc1145d --- /dev/null +++ b/board/novatek/na51055/loader/Include/timer.h @@ -0,0 +1,31 @@ +/** + Public header file for timer module. + + This file is the header file that define the API and data type for timer + module. + + @file timer.h + @ingroup mIHALTimer + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _TIMER_H +#define _TIMER_H + +#include "IOReg.h" + +/** + @addtogroup mIHALTimer +*/ +//@{ + +extern UINT32 timer_getLdrElapse(void); +extern void timer_delay(UINT32 US); +#define timer_getLdrElapse() INREG32(0xF0040108) +#define timer_getSysTick() INREG32(0xF0040108) +//extern UINT32 timer_getSysTick(void) __attribute__ ((section (".part1"))); + //@} + +#endif diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile new file mode 100755 index 000000000000..f138d5a59dd8 --- /dev/null +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile @@ -0,0 +1,60 @@ +#---------------------------------------------------------------------- +# include make config file +#---------------------------------------------------------------------- +include ../../../Project/Model/ModelConfig.txt +include ../../../Project/Model/ModelConfig_$(MODEL).txt +include ../../../Project/Model/MakeConfig.txt + +#---------------------------------------------------------------------- +# set the library name here +#---------------------------------------------------------------------- +PRJ_NAME = Ctrl_Flow + + +#---------------------------------------------------------------------- +# add/delete source files here +#---------------------------------------------------------------------- +SRC = \ + bl_func.c \ + main.c \ + nand_ids.c\ + spi_nor_ids.c\ + + + +ASM = + +#---------------------------------------------------------------------- +# set the include directory here +#---------------------------------------------------------------------- +INC_DIR = . \ + ../../../Include + +#---------------------------------------------------------------------- +# set the image output directory here +#---------------------------------------------------------------------- +IMG_BASE_DIR = ../../../ARC/Lib + +#---------------------------------------------------------------------- +# add additional C and assembly flags here +#---------------------------------------------------------------------- +CFLAGS_D = -O2 +ASMFLAGS_D = + +CFLAGS_R = -O2 +ASMFLAGS_R = + +C_DEFINE_EXT = \ + $(EXTSTRG_PARAM) \ + $(SECURE_DECRYPT_UBOOT_PARAM)\ + $(SECURE_DECRYPT_OPTEE_PARAM)\ + $(OPTEE_UBOOT_SIGNATURE_PARAM) \ + $(CARDDET_PIN_PARAM)\ + +CFLAGS_R = $(C_DEFINE_EXT) + +#---------------------------------------------------------------------- +# include common parts of the makefile +#---------------------------------------------------------------------- +MAKE_COMMON_DIR = ../../../MakeCommon +include $(MAKE_COMMON_DIR)/OutputLib.txt \ No newline at end of file diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c new file mode 100755 index 000000000000..eea772958f2c --- /dev/null +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -0,0 +1,3381 @@ +/* + Main control function + + This file is implement by user mode + + @file bl_func.c + + Copyright Novatek Microelectronics Corp. 2014. All rights reserved. +*/ + +#include "fuart.h" +#include "fat.h" +#include "rtc.h" +#include "timer.h" +#include "StorageDef.h" +#include "global.h" +#include "Clock.h" +#include "bl_func.h" +#include "Cache.h" +#include "string.h" +#include "lz.h" +#include "debug.h" +#include "CC.h" +#include "loader.h" +#include "nvtpack.h" +#include "dram_partition_info.h" +#include "emb_partition_info.h" +#include "modelext_parser.h" +#include "bin_info.h" +#include "shm_info.h" +#include "gic.h" +#include "libfdt.h" +#include +#include "crypto.h" +#include "nand.h" +#include "nor.h" + + +#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) +static uint32_t global_timer_freq = 3000000; //3MHz = 3000000 Hz +#endif +static PSTORAGE_OBJ int_strg_obj = NULL; + +#define FW_PART1_SIZE_OFFSET (CODE_SECTION_OFFSET + 0x04) //ref to CodeInfo.S on rtos (addr of _section_01_size) +//#define TEE_HEADER_SIZE 0x1C // refer to: optee_header_t + +#define _THUMB2 __attribute__((target("thumb2"))) + +#define bl_memcpy utl_memcpy +#define bl_memset utl_memset +#define ALIGN_FLOOR(value, base) ((value) & ~((base)-1)) +#define ALIGN_CEIL(value, base) ALIGN_FLOOR((value) + ((base)-1), base) +#define SIZE_PRELOAD 0x400 +#define SIZE_PRESERVE_USB 0x2000 + +#define HEADINFO_UBOOT(p_parti) ((HEADINFO *)(p_parti->uboot_addr + BIN_INFO_OFFSET_UBOOT)) +#define HEADINFO_TEEOS(p_parti) ((HEADINFO *)(p_parti->teeos_addr + BIN_INFO_OFFSET_TEEOS)) +#define IS_BIN_OVERLAP(addr1, size1, addr2, size2) (!(((addr1 + size1 - 1) < addr2) || (addr1 > (addr2 + size2 - 1)))) +#if (STORAGE_EXT_TYPE == STORAGE_EXT_USB) +#define USB_SET_RESULT(x) USBSetResult(x) +#else +#define USB_SET_RESULT(x) +#endif + +#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) +extern void set_usb_suspend(void); +#endif + + +extern char _loader_exec_compres_start[]; +extern char _load_LOADER_CONFIGRAM_FREQ_PARAM_end_base[]; +extern void core1_reset(void); + +// Function from Timer.c +//extern UINT32 timer_getLdrElapse(void); + +// Define in MakeConfig.txt +static UINT8 UPDATE_FW_NAME[] = {"FW98520A.BIN"}; +static UINT8 UPDATE_LOADER_NAME[] = {"LD98520A.BIN"}; +static UINT8 RUN_FW_NAME[] = {"FW98520T.BIN"}; +static UINT8 *LOADER_START_STR = {(UINT8 *)"\r\nLoader Start ..."}; +//#if !USB_WRITELOADER +#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) +//static UINT8 *RUN_WRKEY_NAME = {(UINT8 *)"WRKEY.BIN"}; +#if UPDATE_SIM_CODE +static UINT8 *RUN_WRKEY_NAME = {(UINT8 *)"SIM.BIN"}; +#endif +#endif +static UINT8 RECOVERY_FW_NAME[] = {"FW98520R.BIN"}; +static UINT32 g_uiPartitionID = 2; + +static UINT32 g_uiVersion = 0; + +// Error message +static char FWErrorMsg[] = "\r\nFW check fail\r\n"; +static char RWErrorMsg[] = "\r\nR/W error\r\n"; +static char LoaderErrorMsg[] = "\r\nLoader check fail\r\n"; + +UINT32 TopOfStack; +UINT32 BaseOfStack; + +extern char _loader_heap_base[]; + +static BOOL g_is_flash_open = FALSE; // indicate flash is open for updating non-fully all-in-one bin. + +static LDR_SPECIAL_KEY_CB gSpecialKeyCallBack = NULL; +static LDR_CARD_DETECT_CB gCardDetectCallBack = NULL; +static STORAGEINT gStorageIntType = STORAGEINT_UNOKNOWN; + +static LDR_RECOVERY_TRIGGER_CB gRecoveryTriggerCallBack = NULL; +//#if (!USB_WRITELOADER) +#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) +static BOOL g_is_recovery_triggered = FALSE; // indicate recovery flow is triggered. +#endif +_THUMB2 static int bl_is_smp(unsigned char *p_fdt); +static UINT32 g_uiStartBlkUpdateFW = StartNandBlkUpdateFW; +static UINT32 g_uiNandBlkSize = 0; +static UINT32 g_rtos_load_addr = 0; +static UINT32 g_rtos_target_addr = 0; +static UINT32 g_rtos_size = 0; + +#if (FDT_SUPPORT) +#define PATH_MEM_DRAM "/nvt_memory_cfg/dram" +#define PATH_MEM_LOADER "/nvt_memory_cfg/loader" +#define PATH_MEM_UBOOT "/nvt_memory_cfg/uboot" +#define PATH_MEM_FDT "/nvt_memory_cfg/fdt" +#define PATH_MEM_SHMEM "/nvt_memory_cfg/shmem" +#define PATH_MEM_RTOS "/nvt_memory_cfg/rtos" +#define PATH_MEM_NUTTX "/nvt_memory_cfg/nuttx" +#define PATH_MEM_TEEOS "/nvt_memory_cfg/teeos" +#define PATH_MEM_HDAL "/hdal-memory/media" +#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) +#define PATH_MEM_CORE2_ENTRY1 "/nvt_memory_cfg/core2entry1" +#define PATH_MEM_CORE2_ENTRY2 "/nvt_memory_cfg/core2entry2" +#endif +#define PATH_NVT_INFO "/nvt_info" +#define PATH_NVTPACK_INDEX "nvtpack/index" +#define PATH_PARTITION_LOADER "partition_loader" +#define PATH_PARTITION_FDT "partition_fdt" +#define PATH_PARTITION_UBOOT "partition_uboot" +#define PATH_PARTITION_NUTTX "partition_nuttx" +#define PATH_PARTITION_TEEOS "partition_teeos" +#define PATH_PARTITION_RTOS "partition_rtos" +#define PROPERTY_REG "reg" +#define PROPERTY_LABEL "label" +#define PROPERTY_PARTITION_NAME "partition_name" +#define PROPERTY_NVT_LINUX_SMP "NVT_LINUX_SMP" +static DRAM_PARTITION g_dram_partition = {0}; +static EMB_PARTITION g_emb_uboot = {0}; +#if (NUTTX_SUPPORT) +static EMB_PARTITION g_emb_nuttx = {0}; +#endif +static EMB_PARTITION g_emb_teeos = {0}; +static EMB_PARTITION g_emb_rtos = {0}; +#else // NO FDT_SUPPORT +// refer to met-tbl.dtsi /nvt_memory_cfg +static DRAM_PARTITION g_dram_partition = { + .dram_addr = 0x00000000, + .dram_size = 0x20000000, + .rev_addr = 0x00007E00, ///< shmem + .rev_size = 0x00000200, ///< shmem + .loader_addr = 0x01000000, + .loader_size = 0x00800000, + .fdt_addr = 0x01800000, + .fdt_size = 0x00040000, + .uboot_addr = 0x1E000000, + .uboot_size = 0x01FC0000, + .rtos_addr = 0x01840000, ///< optional, only for fast-boot, + .rtos_size = 0x00780000, ///< optional, only for fast-boot + .core2_entry1_addr = 0x00000000, ///< optional, only for dual core IC (fixed here, and must be) + .core2_entry1_size = 0x00004000, ///< optional, only for dual core IC + .core2_entry2_addr = 0x1FFC0000, ///< optional, only for dual core IC (address better in the bottom of dram to avoid memory space overlap) + .core2_entry2_size = 0x00040000, ///< optional, only for dual core IC +}; +// refer to storage-partition.dtsi +static EMB_PARTITION g_emb_uboot = { + .PartitionOffset = 0xC0000, + .PartitionSize = 0xA0000, +}; +static EMB_PARTITION g_emb_rtos = { ///< optional, only for fast-boot, + .PartitionOffset = 0x2B40000, + .PartitionSize = 0xA00000, +}; +static EMB_PARTITION g_emb_teeos = { ///< optional, only for optee, + .PartitionOffset = 0, + .PartitionSize = 0, +}; +//following just for processing all-in-one bin (nvtpack) +//refer to nvtpack.dtsi +#define NVTPACK_IDX_UBOOT 3 +#define NVTPACK_IDX_TEEOS -1 +#define NVTPACK_IDX_RTOS 10 +#endif + +#if (UART_UPDATE_ == ENABLE) +static char g_strLength[80]; // buffer to store length string +#endif + +//--------------------------------------------------------------------------- +// Static function +//--------------------------------------------------------------------------- +static int bl_boot_uboot(unsigned char *p_fdt); +static void *bl_get_rtos_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/); + +/** + Display error message. + + Display error message. + CPU loop forever and LED is red. + + @param Msg: Message to display + @return void +*/ +_THUMB2 static void bl_displayErrMsg(char *Msg) +{ + // Display error message to UART + uart_putSystemUARTStr(Msg); + +#if (STORAGE_EXT_TYPE == STORAGE_EXT_USB) + USBStateMachine(); +#endif + + // Loop forever + while (1) { + ; + } +} + +#if 0 +/** + Do power off. + + Do power off. + + @return void +*/ +static void bl_turnOffPower(void) +{ + volatile UINT32 uiReg; + + uiReg = INREG32((CPE_RTC_BASE + 0x18)); + + // Reset shutdown timer + OUTREG32(CPE_RTC_BASE + 0x18, uiReg | 0x00000001); + // Do power off + OUTREG32(CPE_RTC_BASE + 0x18, uiReg | 0x00000002); + + // Because there is some latency between FW do power off and HW + // really power off, we have to loop forever to prevent CPU run + // other instructions. + while (1) { + ; + } +} +#endif + +#if (FW_CHECK_METHOD == FW_CHECK_CRC) +/** + Create CRC table. + + Create CRC table for CRC32 checking. + + @return void +*/ +static void bl_makeCRCTable(void) +{ + UINT32 uiValue, i, j; + + for (i = 0; i < 256; i++) { + uiValue = i; + for (j = 0; j < 8; j++) { + uiValue = uiValue & 1 ? 0xEDB88320 ^ (uiValue >> 1) : (uiValue >> 1); + } + g_uiCRCTable[i] = uiValue; + } +} +#endif + +/** + Invert endianess of input word + + + @param[in] a input word + + @return translated word +*/ +static UINT32 invertEndian(UINT32 a) +{ + return __builtin_bswap32(a); +} + +#if 0 +static void bl_compareFW(UINT32 uiAddr1, UINT32 uiAddr2, UINT32 size) +{ + UINT32 i; + UINT32 *p1, *p2; + + debug_msg_var("bl_compareFW uiAddr1=", uiAddr1); + debug_msg_var("bl_compareFW uiAddr2=", uiAddr2); + debug_msg_var("bl_compareFW size=", size); + + p1 = (UINT32 *)uiAddr1; + p2 = (UINT32 *)uiAddr2; + for (i = 0; i < size; i += 4) { + if (*p1 != *p2) { + debug_err_var("p1", (UINT32)p1); + debug_err_var("p2", (UINT32)p2); + debug_err_var("*p1", *p1); + debug_err_var("*p2", *p2); + } + p1++; + p2++; + } +} +#endif + + +/** + Check FW code. + + Check FW code and file length. + The FW binary file must be post-proecessd by encrypt_bin.exe. + This function must sync to encrypt_bin.exe. + If FW checking is fail, the CPU will loop forever and LED is red. + + @param[in] uiAddress FW code in DRAM starting address + @param[in] uiFileLen FW code length + @return void +*/ +_THUMB2 static void bl_checkFW(UINT32 uiAddress, UINT32 uiFileLen) +{ + NVTPACK_MEM mem = {0}; + mem.p_data = (void *)uiAddress; + mem.len = uiFileLen; + if (nvtpack_calc_nvt_sum(&mem) != 0) { + USB_SET_RESULT(USB_RESULT_LOADER_FAIL_FW_INVALID); + bl_displayErrMsg(FWErrorMsg); + } +} + +/** + Check boot loader code. + + Check boot loader code. + + @return void +*/ +_THUMB2 static void bl_checkLoader(UINT32 uiAddr, UINT32 uiSize) +{ + UINT16 *puiValue, uiSum; + UINT32 i; + + puiValue = (UINT16 *)uiAddr; + uiSum = 0; + + for (i = 0; i < (uiSize >> 1); i++) { + uiSum += (*puiValue + i); + puiValue++; + } + + if ((*(UINT16 *)(uiAddr + LOADER_TAG_OFFSET) != LOADER_TAG_VALUE) || + (uiSum != 0)) { + USB_SET_RESULT(USB_RESULT_LOADER_INVALIE_FW_FAIL); + bl_displayErrMsg(LoaderErrorMsg); + } +} +#if (SECURE_DECRYPT_UBOOT || SECURE_DECRYPT_OPTEE_OS) + + +_THUMB2 static void get_bininfo_size_offset(unsigned char* bininfo,unsigned int* size,unsigned int *offset) +{ + /****this headinfo is for encrypt header + BinInfo will set partition offset and size + BinInfo_1[0~3] public key offset + BinInfo_1[4~7] public key length + BinInfo_2[0~3] signature offset + BinInfo_2[4~7] signature length + BinInfo_3[0~3] encrypted offset + BinInfo_3[4~7] encrypted size + BinLength total bin size + Checksum total bin checksum + others parameters set 0 + */ + *size = bininfo[4] | bininfo[5]<<8 | bininfo[6] << 16 | bininfo[7] << 24; + *offset = bininfo[0] | bininfo[1] << 8 | bininfo[2] << 16 | bininfo[3] <<24; +} + + + + +_THUMB2 static int decrypt_aes_cbc(unsigned int input, unsigned int output, unsigned int len) +{ + + CRYPT_OP crypt_op_param; + + if(len &0x0f) + { + //debug_msg_var("enc size", len); + //debug_err("not align 16\r\n"); + return -21; + } + if((input & 0x03) || (output & 0x03) || (len & 0x03) ){ //check word alignment + //debug_msg_var("input", input); + //debug_msg_var("output", output); + //debug_msg_var("len", len); + //debug_err("not word align\r\n"); + return -22; + } + crypt_op_param.op_mode = CRYPTO_CBC; + crypt_op_param.en_de_crypt = CRYPTO_DECRYPT; + crypt_op_param.src_addr = input; + crypt_op_param.dst_addr = output; + crypt_op_param.length = len; //Need align to 16bytes align + //debug_msg_var("src",(unsigned int)crypt_op_param.src_addr); + //debug_msg_var("dst",(unsigned int)crypt_op_param.dst_addr); + + #if 0 + debug_msg_var("input",input); + debug_msg_var("output",output); + debug_msg_var("len",len); + unsigned char *tmp = (unsigned char *) crypt_op_param.src_addr; + int i=0; + debug_msg_var("encryped buf addr",(unsigned int)tmp); + for(i=0;i<16;i++){ + debug_msg_var("encryped buf",(unsigned int)tmp[i]); + } + #endif + if(crypto_data_operation(EFUSE_OTP_1ST_KEY_SET_FIELD, crypt_op_param) != 0) + { + //debug_err("aes dec fail\r\n"); + return -23; + } + #if 0 + unsigned char *tmp = (unsigned char *) crypt_op_param.src_addr; + int i=0; + tmp = (unsigned char *) crypt_op_param.dst_addr; + debug_msg_var("decryped addr",(unsigned int)&tmp[0]); + for(i=0;i<16;i++){ + debug_msg_var("decryped buf",(unsigned int)tmp[i]); + } + + #endif + return 0; + +} +#if (SECURE_SIGNATURE_BY_AES == 0) +_THUMB2 static void data_reverse(unsigned char* input_data, unsigned int size) +{ + unsigned int i=0; + unsigned char tmp=0; + for(i=0;i< (size/2);i++) + { + tmp = input_data[size - 1 - i]; + input_data[size - 1 - i] = input_data[i]; + input_data[i] = tmp; + } + +} +#endif +_THUMB2 static int do_decrypt_aes(unsigned int input_data, unsigned int output_data, unsigned int* output_size,unsigned int partition_size) +{ + + unsigned int encrypt_offset =0; + unsigned int encrypt_size =0; + unsigned int data_size = 0; + HEADINFO *p_headinfo = (HEADINFO *)input_data; + int er=0; + get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_3, &encrypt_size, &encrypt_offset); + data_size = p_headinfo->BinLength - encrypt_offset; +#if 1 //for signature check + unsigned int signature_offset =0; + unsigned int signature_size = 0; + UINT32 hash_buf[8]; + unsigned int sha256_align_size =0; + UINT32 * signature_buff = NULL; + get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_2, &signature_size, &signature_offset); + #if (SECURE_SIGNATURE_BY_AES == 0) + unsigned int key_offset =0; + unsigned int key_size =0; + unsigned int n_size=0; + unsigned int e_size=0; + UINT32 sign_rsa_output[64]; + UINT32 *key_n = NULL; + UINT32 *key_e = NULL; + UINT32 *signature_addr = NULL; + get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_1, &key_size, &key_offset); + n_size = signature_size;// if rsa 2048 , signature_size should be 256 bytes + e_size = key_size - n_size; + key_n = (UINT32 *)(input_data + key_offset); + // now only support rsa 2048 + key_e = (UINT32 *)(input_data + key_offset + signature_size); // signature_size should be 256 bytes, n key should be 256 + data_reverse((unsigned char *)(key_n),n_size); + data_reverse((unsigned char *)(key_e),e_size); + + er = rsa_keycheck(key_n, 1);// check rsa n key in efuse 1 and 2 field, 0 field for aes key + if(er == 0) + { + debug_err("key fail\r\n"); + return -20; + } + signature_addr = (UINT32 *)(input_data + signature_offset); + data_reverse((unsigned char *)signature_addr, signature_size); + + //decrypt signature + rsa_decrypt(signature_addr, signature_size, key_n, n_size, key_e, e_size,sign_rsa_output); + + data_reverse((unsigned char *)sign_rsa_output, signature_size); + + //remove pending data 0, the last 32 bytes will be signature data + signature_buff = (UINT32 *)&sign_rsa_output[(sizeof(sign_rsa_output)/4 ) - (32/4 )];// offset need devided by 4, because of UINT32 type + #else + //UINT32 sign_aes_output[8]; + + er = decrypt_aes_cbc((UINT32 )(input_data + signature_offset), output_data,signature_size); + if(er != 0) + { + debug_err("decrypt_aes_cbc fail\r\n"); + return -20; + } + signature_buff =(UINT32 *)output_data; + + #endif + //hash encrypt data + + if((data_size & 0x3f) != 0) + { + // hardware sha256 need align 64, need set pending 0 + sha256_align_size = ((data_size/0x40) + 1)*0x40; + bl_memset((unsigned char *)(input_data + encrypt_offset + data_size),0, sha256_align_size - data_size); + } + else + { + sha256_align_size = data_size; + } + + shahw((unsigned char *)(input_data + encrypt_offset), sha256_align_size, hash_buf); + + + //compare signature and current hash + if(memcmp((void *)hash_buf, (void *)signature_buff, sizeof(hash_buf)) != 0) + { + debug_err("sig fail\r\n"); + return -20; + } +#endif + + //decrypt data + //dma addr should 4 alignment, input_data address is 4 alignment + if((input_data + encrypt_offset) & 0x03) + { + utl_memcpy((void *)input_data,(unsigned char*)(input_data + encrypt_offset), data_size); + er = decrypt_aes_cbc(input_data, output_data, encrypt_size); + } + else + { + er = decrypt_aes_cbc(input_data + encrypt_offset, output_data, encrypt_size); + } + if(er != 0) + { + debug_err("aes fail\r\n"); + return er; + } + + *output_size = data_size; + + //add plaintext data to output buf--> aes should 16 alignment, if data not alignment, the last bytes we will not encrypt data + int plaintext_size = data_size - encrypt_size; + unsigned char *p_output = (unsigned char *)output_data; + if( plaintext_size > 0) + { + utl_memcpy(&p_output[encrypt_size], (unsigned char*)(input_data + encrypt_offset+ encrypt_size),plaintext_size); + } + return 0; + +} +#endif + +//#NT#2013/04/25#Steven Wang -begin +//#NT#Show Duty calibration log +#if (_LOADER_DUTY_CALIBRATION_ == ENABLE && _LOADER_DUTY_CALIBRATION_LOG_ == ENABLE) +void BL_showROMLog(UINT32 buffer) +{ + UINT32 value; + UINT32 index; + UINT32 P_duty; + UINT32 N_duty; + UINT32 diff; + + index = 0; + diff = 0; + P_duty = 0; + N_duty = 0; + uart_putSystemUARTStr("\r\n"); + while (1) { + value = INREG32(buffer + index); + + if ((value & 0xF0000000) == 0xF0000000) { + value &= ~(0x40000000); + uart_putSystemUARTStr(Dec2HexStr(value)); + uart_putSystemUARTStr(" = "); + } + + else if ((value & 0xF0000000) == 0x50000000) { + uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); + uart_putSystemUARTStr("\r\n"); + } + + else if ((value & 0xF0000000) == 0x20000000) { +// uart_putSystemUARTStr("P_duty = "); + P_duty = value & 0xFFFFFFF; + //uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); + uart_putSystemUARTStr(Dec2HexStr(P_duty)); + uart_putSystemUARTStr("\r\n"); + } + + else if ((value & 0xF0000000) == 0x30000000) { +// uart_putSystemUARTStr("N_duty = "); + N_duty = value & 0xFFFFFFF; + //uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); + uart_putSystemUARTStr(Dec2HexStr(N_duty)); + uart_putSystemUARTStr("\r\n"); + if (P_duty > N_duty) { + if (diff == 2) { + uart_putSystemUARTStr("============\r\n"); + P_duty = 0; + N_duty = 0; + diff = 0; +// diff = 3; + } else { + diff = 1; + } + } else { + if (diff == 1) { + uart_putSystemUARTStr("============\r\n"); + P_duty = 0; + N_duty = 0; + diff = 0; +// diff = 3; + } else { + diff = 2; + } + } + } else if ((value & 0xF0000000) == 0x60000000) { + uart_putSystemUARTStr("N+P = "); + uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); + uart_putSystemUARTStr("\r\n"); + } else if ((value & 0xF0000000) == 0x70000000) { + if ((value & 0xFFFFFFF) == 0x0654321) { + break; + } + } else { + uart_putSystemUARTStr("Unknow \r\n"); + } + index += 4; + } + uart_putSystemUARTStr("\r\n[0xC0001000] = 0x"); + uart_putSystemUARTStr(Dec2HexStr(INREG32(0xC0001000))); + uart_putSystemUARTStr(" [0xC000101C] = 0x"); + uart_putSystemUARTStr(Dec2HexStr(INREG32(0xC000101C))); + uart_putSystemUARTStr("\r\n"); +} +#endif +//#NT#2013/04/25#Steven Wang -end + + +#if (DRAM_RANGE_SCAN_EN == ENABLE) +/** + Check Sram code. + + Check is dram scan code or not + + @param[in] uiAddress Scan FW code in DRAM starting address + @return void +*/ +static BOOL bl_checkDramScanFW(UINT32 uiAddress) +{ + if ((*(UINT32 *)uiAddress & SRAM_TAG) == SRAM_TAG) { + return TRUE; + } else { + return FALSE; + } +} +#endif + +#if 0 +static BOOL bl_spiIdentify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacityID, PSPI_IDENTIFY pIdentify) +{ + // Sample to support SST25VF032 + if ((uiMfgID == 0xBF) && + (uiCapacityID == 0x4A)) { + pIdentify->bDualRead = FALSE; + pIdentify->bSupportAAI = TRUE; + pIdentify->bSupportEWSR = TRUE; + pIdentify->uiFlashSize = 4 * 1024 * 1024; + return TRUE; + } + + return FALSE; +} +#endif + +/* + Update multi-binary image + + + @param[in] uiFwBuf buffer store fw read from card + + @return + -@ b TRUE: success + -@ b FALSE: fail +*/ + +#if !REMOVED_FLASH +#if 0 +static void bl_interrupt_init(void) +{ + debug_msg("arm_gic_distif_setup\r\n"); + arm_gic_distif_setup(); + debug_msg("arm_gic_cpuif_setup\r\n"); + arm_gic_cpuif_setup(); + + // + //debug_dump_addr(0xF1500000+0x1000,0x500); + //debug_dump_addr(0xF1500000+0x2000,0x100); +} +#endif + +#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) +#define OUTW(addr,value) (*(UINT32 volatile *)(addr) = (UINT32)(value)) +#define INW(addr) (*(UINT32 volatile *)(addr)) + + +_THUMB2 static void bl_cpu_timer_init(UINT32 value) +{ + UINT32 dwVal; + OUTW(configARM_TIMER_BASEADDR + ARM_TIMER_LOAD_OFFSET, value); + + dwVal = INW(configARM_TIMER_BASEADDR + ARM_TIMER_CONTROL_OFFSET); + /* Enable Auto reload mode. */ + dwVal |= ARM_TIMER_CONTROL_AUTO_RELOAD_MASK; + /* Clear prescaler control bits */ + dwVal &= ~ARM_TIMER_CONTROL_PRESCALER_MASK; + /* Set prescaler value */ + dwVal |= ((CYGHWR_HAL_RTC_PRESCALER - 1) << ARM_TIMER_CONTROL_PRESCALER_SHIFT); + /* Enable the decrementer */ + //dwVal |= ARM_TIMER_CONTROL_ENABLE_MASK; + /* Enable the interrupt */ + dwVal |= ARM_TIMER_CONTROL_IRQ_ENABLE_MASK; + + OUTW(configARM_TIMER_BASEADDR + ARM_TIMER_CONTROL_OFFSET, dwVal); + + OUTW(configARM_TIMER_BASEADDR + ARM_TIMER_ISR_OFFSET, + ARM_TIMER_ISR_EVENT_FLAG_MASK); + +} +#endif +#endif +_THUMB2 static int bl_flash_open(void) +{ + int er; + //UINT32 uiStorageVersion = (UINT32)&_load_nand_table_start_base; + + if (g_is_flash_open) { + return 0; + } + //========================================================================== + //= User define SPI-NAND id table sample code = + //= You can remove // to use it = + //========================================================================== + //int_strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_IDENTIFY_CB, (UINT32)nand_identify); + + //========================================================================== + //= User define SPI-NOR id table sample code = + //= You can remove // to use it = + //========================================================================== + //int_strg_obj->flash_installIdentifyCB(nor_identify); + + er = int_strg_obj->flash_open(); + if (er < 0) { + debug_err("flash open fail\r\n"); + return -1; + } + + //OUTREG32(NAND_TABLE_VERSION_ADDR, INREG32(uiStorageVersion)); + + //if (er == E_OK) { + // OUTREG32(NAND_TABLE_FLAG_ADDR, 0x46495053); //'S''P''I''F' + //} else { // E_OK_TABLE_FOUND(1) or E_OK_TABLE_NOT_FOUND(2) + // OUTREG32(NAND_TABLE_FLAG_ADDR, er); + //} + g_uiNandBlkSize = int_strg_obj->flash_getBlockSize(); + if (g_uiNandBlkSize == 0x10000) { + debug_msg("SPI NOR\r\n"); + g_uiStartBlkUpdateFW = 1; + } else if (g_uiNandBlkSize == EMMC_BLOCK_SIZE) { + debug_msg("EMMC\r\n"); + g_uiStartBlkUpdateFW = FDT_OFFSET / EMMC_BLOCK_SIZE; + } else { + g_uiStartBlkUpdateFW = StartNandBlkUpdateFW; + } + + g_is_flash_open = TRUE; + return 0; +} + +#if 0 //[-Werror=unused-function] +static int bl_flash_close(void) +{ + if (!g_is_flash_open) { + return 0; + } + + flash_close(); + g_is_flash_open = FALSE; + return 0; +} +#endif + +#if (FDT_SUPPORT) +_THUMB2 static const void *bl_get_fdt_property(const void *p_dtb, const char *p_path, const char *p_property, int *len) +{ + int nodeoffset; /* next node offset from libfdt */ + const void *nodep; /* property node pointer */ + + nodeoffset = fdt_path_offset(p_dtb, p_path); + if (nodeoffset < 0) { + return NULL; + } + nodep = fdt_getprop(p_dtb, nodeoffset, p_property, len); + if (len == 0) { + return NULL; + } + return nodep; +} +#endif + + +_THUMB2 static unsigned char *bl_get_fdt_cfg(const void *p_dtb, MODELEXT_TYPE type) +{ +#if (FDT_SUPPORT) + int len; + const int *nodep; + + UINT8 *p_rt = NULL; + + switch (type) { + case MODELEXT_TYPE_DRAM_PARTITION: + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_DRAM, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get dram fail\r\n"); + return NULL; + } + g_dram_partition.dram_addr = be32_to_cpu(nodep[0]); + g_dram_partition.dram_size = be32_to_cpu(nodep[1]); + + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_LOADER, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get loader fail\r\n"); + return NULL; + } + g_dram_partition.loader_addr = be32_to_cpu(nodep[0]); + g_dram_partition.loader_size = be32_to_cpu(nodep[1]); + + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_UBOOT, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get uboot fail\r\n"); + return NULL; + } + g_dram_partition.uboot_addr = be32_to_cpu(nodep[0]); + g_dram_partition.uboot_size = be32_to_cpu(nodep[1]); + + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_FDT, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get fdt fail\r\n"); + return NULL; + } + g_dram_partition.fdt_addr = be32_to_cpu(nodep[0]); + g_dram_partition.fdt_size = be32_to_cpu(nodep[1]); + + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_RTOS, PROPERTY_REG, &len); + if (nodep != NULL) { + g_dram_partition.rtos_addr = be32_to_cpu(nodep[0]); + g_dram_partition.rtos_size = be32_to_cpu(nodep[1]); + } + + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_NUTTX, PROPERTY_REG, &len); + if (nodep != NULL) { + g_dram_partition.nuttx_addr = be32_to_cpu(nodep[0]); + g_dram_partition.nuttx_size = be32_to_cpu(nodep[1]); + } + + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_TEEOS, PROPERTY_REG, &len); + if (nodep != NULL) { + g_dram_partition.teeos_addr = be32_to_cpu(nodep[0]); + g_dram_partition.teeos_size = be32_to_cpu(nodep[1]); + } + + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_HDAL, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get hdal fail\r\n"); + return NULL; + } + g_dram_partition.hdal1_addr = be32_to_cpu(nodep[0]); + g_dram_partition.hdal1_size = be32_to_cpu(nodep[1]); + if (len >= 16) { + g_dram_partition.hdal2_addr = be32_to_cpu(nodep[2]); + g_dram_partition.hdal2_size = be32_to_cpu(nodep[3]); + } + +#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_CORE2_ENTRY1, PROPERTY_REG, &len); + if (nodep != NULL) { + g_dram_partition.core2_entry1_addr = be32_to_cpu(nodep[0]); + g_dram_partition.core2_entry1_size = be32_to_cpu(nodep[1]); + } + + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_CORE2_ENTRY2, PROPERTY_REG, &len); + if (nodep != NULL) { + g_dram_partition.core2_entry2_addr = be32_to_cpu(nodep[0]); + g_dram_partition.core2_entry2_size = be32_to_cpu(nodep[1]); + } +#endif + p_rt = (UINT8 *)&g_dram_partition; + break; + + case MODELEXT_TYPE_BIN_INFO: + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_SHMEM, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get shmem fail\r\n"); + return NULL; + } + + if (sizeof(SHMINFO) > be32_to_cpu(nodep[1])) { + debug_err("shmem size mismatch\r\n"); + return NULL; + } + + p_rt = (UINT8 *)be32_to_cpu(nodep[0]); + break; + + default: + debug_err_var("not handle type\r\n", type); + return NULL; + } + return p_rt; +#else // NO FDT_SUPPORT + switch (type) { + case MODELEXT_TYPE_DRAM_PARTITION: + return (UINT8 *)&g_dram_partition; + case MODELEXT_TYPE_BIN_INFO: + return (UINT8 *)g_dram_partition.rev_addr; + default: + return NULL; + } +#endif +} + +_THUMB2 static int bl_chk_valid_all_in_one(NVTPACK_MEM *p_mem_all_in_one) +{ + NVTPACK_ER er; + NVTPACK_VER ver; + + er = nvtpack_getver(p_mem_all_in_one, &ver); + + if (er != NVTPACK_ER_SUCCESS) { + return -1; + } + + if (ver == NVTPACK_VER_16072017) { + return 0; + } + + return -1; +} + + +#if !REMOVED_FLASH +_THUMB2 static int bl_chk_fdt(unsigned int addr, unsigned int size) +{ + DRAM_PARTITION *p_dram_partition = NULL; + + if (fdt_check_full((void *)addr, size) != 0) { + debug_err("invalid dtb\r\n"); + return -1; + } + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)addr, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("invalid dram_partition\r\n"); + return -1; + } + + // check tmp memory (file load) cannot overlap with uboot and teeos + // we allow to overlap with linux, root-fs because uboot will reload bin file later + debug_msg_var("tmp_addr", SDRAM_Start_FW); + +// if ((addr < p_dram_partition->uboot_addr && addr + size > p_dram_partition->uboot_addr) || +// (addr > p_dram_partition->uboot_addr && addr + size < p_dram_partition->uboot_addr + p_dram_partition->uboot_size)) { + if (IS_BIN_OVERLAP(addr, size, p_dram_partition->uboot_addr, p_dram_partition->uboot_size)) { + debug_err_var("a", addr); + debug_err_var("s", size); + debug_err("uboot olp\r\n"); + return -1; + } +#if 1 + //if ((addr < p_dram_partition->teeos_addr && addr + size > p_dram_partition->teeos_addr) || + // (addr > p_dram_partition->teeos_addr && addr + size < p_dram_partition->teeos_addr + p_dram_partition->teeos_size)) { + if (p_dram_partition->teeos_size) { + if (IS_BIN_OVERLAP(addr, size, p_dram_partition->teeos_addr, p_dram_partition->teeos_size)) { + debug_err_var("a", addr); + debug_err_var("s", size); + debug_err("teeos olp\r\n"); + return -1; + } + } +#endif + // check if memory size matched real size + UINT32 ld_dram1_size = dma_get_dram_capacity(DMA_ID_1); + if (p_dram_partition->dram_size > ld_dram1_size) { + debug_err_var("fw_d1_s", p_dram_partition->dram_size); + debug_err_var("ld_d1_s", ld_dram1_size); + debug_err("d1 s not matched.\r\n"); + return -1; + } + UINT32 ld_dram2_size = dma_get_dram_capacity(DMA_ID_2); + if (p_dram_partition->hdal2_size > ld_dram2_size) { + debug_err_var("fw_d2_s", p_dram_partition->hdal2_size); + debug_err_var("ld_d2_s", ld_dram2_size); + debug_err("d2 s not matched.\r\n"); + return -1; + } + return 0; +} +#endif + +#if !REMOVED_FLASH +_THUMB2 static int bl_chk_uboot(unsigned int addr, unsigned int size) +{ +#if (_FPGA_EMULATION_ == 0) + NVTPACK_MEM mem = {0}; + mem.p_data = (void *)addr; + mem.len = size; + if (nvtpack_calc_nvt_sum(&mem) != 0) { + debug_err("uboot check sum fail"); + return -1; + } +#endif + return 0; +} + +#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) +_THUMB2 static void bl_core2_reset(void) +{ + UINT32 core_reg; + + debug_msg("core2_reset\r\n"); + + core_reg = *(volatile UINT32 *)0xF0E400F0; + core_reg &= ~(1<<3); + core_reg &= ~(1<<11); + *(volatile UINT32 *)0xF0E400F0 = core_reg; + core_reg |= (1<<2)|(1<<10) | (1<<21); + core_reg |= (1<<17); + *(volatile UINT32 *)0xF0E400F0 = core_reg; +} + +_THUMB2 static void bl_core2_prepare(DRAM_PARTITION *p_dram_partition, unsigned int last_addr) +{ + extern char _load_core2_jump_program_start_base[]; + extern char _load_core2_jump_program_end_base[]; + extern char _load_core2_entry_program_start_base[]; + extern char _load_core2_entry_program_end_base[]; + UINT32 code2JumpCodelen, code2EntryCodelen; + + //check core2_entry1 must at addr 0 + if (p_dram_partition->core2_entry1_addr != CORE2_JUMP_ADDR) { + bl_displayErrMsg("core2entry1 != 0"); + } + + // copy core2 jump code to dram 0x0 + code2JumpCodelen = _load_core2_jump_program_end_base - _load_core2_jump_program_start_base; + utl_memcpy((void *)p_dram_partition->core2_entry1_addr, _load_core2_jump_program_start_base, code2JumpCodelen); +// CPUflushWriteCache(p_dram_partition->core2_entry1_addr, code2JumpCodelen); + +// debug_msg_var("core2_jump_program", (int)_load_core2_jump_program_start_base); + debug_msg_var("code2JumpCodelen", (int)code2JumpCodelen); + debug_msg_var("core2_entry2_addr", (int)p_dram_partition->core2_entry2_addr); + + // copy core2 entry code to dram specified by fdt + *(volatile UINT32 *)(NVT_CORE2_START) = p_dram_partition->core2_entry2_addr; + code2EntryCodelen = _load_core2_entry_program_end_base - _load_core2_entry_program_start_base; + utl_memcpy((void *)p_dram_partition->core2_entry2_addr, _load_core2_entry_program_start_base, code2EntryCodelen); +// CPUflushWriteCache(p_dram_partition->core2_entry2_addr, code2EntryCodelen); + + debug_msg_var("core2_entry_program", (int)_load_core2_entry_program_start_base); + debug_msg_var("code2EntryCodelen", (int)code2EntryCodelen); + + *(volatile UINT32 *)0xF07F8000 = last_addr; + + debug_msg_var("0xF07F8000=", (int)*(volatile UINT32 *)0xF07F8000); +} + +_THUMB2 static int bl_smp_start(unsigned char *p_modelext, UINT32 uboot_entry) +{ + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_modelext, MODELEXT_TYPE_BIN_INFO); + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + + DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_modelext, MODELEXT_TYPE_DRAM_PARTITION); + if (p_bininfo == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + debug_msg_var("fdt", (UINT32)p_modelext); + debug_msg_var("shm", (UINT32)p_bininfo); + + p_bininfo->boot.fdt_addr = (UINT32)p_modelext; + + utl_memset(p_bininfo->boot.LdInfo_1, 0, sizeof(p_bininfo->boot.LdInfo_1)); + utl_memcpy(p_bininfo->boot.LdInfo_1, "LD_NVT", 6); + // clear cc_core1_addr, cc_core2_addr +//#if USB_WRITELOADER +#if (STORAGE_EXT_TYPE == STORAGE_EXT_USB) + p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_USB; +#else +// if (card_get_type() == EXT_STORAGE_TYPE_ETH) +// p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_ETH; +// else if (g_is_recovery_triggered) +// p_bininfo->comm.Resv[0] = BOOT_REASON_RECOVERY_SYS; +// else +#if (STORAGE_EXT_TYPE == STORAGE_EXT_ETH) + p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_ETH; +#else + p_bininfo->comm.Resv[0] = BOOT_REASON_NORMAL; +#endif +#endif + p_bininfo->comm.Resv[1] = 0; // COMM_CORE1_START + p_bininfo->comm.Resv[2] = 0; // COMM_CORE2_START + p_bininfo->comm.Resv[3] = 0; // COMM_UITRON_COMP_ADDR + p_bininfo->comm.Resv[4] = 0; // COMM_UITRON_COMP_LEN + + debug_msg("smp(no tee)\r\n"); + + bl_core2_prepare(p_dram_partition, 0); + +//#if USB_WRITELOADER +#if 0 + USBStateMachine(); + uart_putSystemUARTStr("USB update Done\n\r"); + timer_delay(1000000); + USBOTGReset(); +#endif + + + + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); + + //reset core2 + bl_core2_reset(); + + { + typedef void (*BRANCH_CB)(void); + BRANCH_CB p_func = (BRANCH_CB)uboot_entry; + debug_msg_var("jump", uboot_entry); + p_func(); + } + + return 0; +} +#endif +_THUMB2 static int bl_entry_boot(unsigned char *p_fdt, UINT32 uboot_entry) +{ + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + + debug_msg_var("fdt", (UINT32)p_fdt); + debug_msg_var("shm", (UINT32)p_bininfo); + + p_bininfo->boot.fdt_addr = (UINT32)p_fdt; + utl_memset(p_bininfo->boot.LdInfo_1, 0, sizeof(p_bininfo->boot.LdInfo_1)); + utl_memcpy(p_bininfo->boot.LdInfo_1, "LD_NVT", 6); + // clear cc_core1_addr, cc_core2_addr +#if (STORAGE_EXT_TYPE == STORAGE_EXT_USB) + CPUflushWriteCache((UINT32)p_bininfo, sizeof(BININFO)); + p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_USB; +#else + if (card_get_type() == EXT_STORAGE_TYPE_ETH) + p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_ETH; + else if (g_is_recovery_triggered) + p_bininfo->comm.Resv[0] = BOOT_REASON_RECOVERY_SYS; + else + p_bininfo->comm.Resv[0] = BOOT_REASON_NORMAL; +#endif + p_bininfo->comm.Resv[1] = 0; // COMM_CORE1_START + p_bininfo->comm.Resv[2] = 0; // COMM_CORE2_START + p_bininfo->comm.Resv[3] = 0; // COMM_UITRON_COMP_ADDR + p_bininfo->comm.Resv[4] = 0; // COMM_UITRON_COMP_LEN + +#if 0//USB_WRITELOADER + USBStateMachine(); + uart_putSystemUARTStr("USB update Done\n\r"); + timer_delay(1000000); + USBOTGReset(); +#endif + + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); + + { + typedef void (*BRANCH_CB)(void); + BRANCH_CB p_func = (BRANCH_CB)uboot_entry; + debug_msg_var("jump", uboot_entry); + p_func(); + } + + return 0; +} + +_THUMB2 static int bl_copy_fdt_to_fdt_addr(unsigned char *p_fdt /*IN*/, unsigned char **pp_fdt /*OUT*/) +{ + DRAM_PARTITION *p_dram_partition; + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("bl_copy_fdt_to_fdt_addr failed.\r\n"); + return -1; + } + + // load fdt to fdt buffer + utl_memcpy((void *)p_dram_partition->fdt_addr, p_fdt, fdt_totalsize(p_fdt)); + *pp_fdt = (unsigned char *)p_dram_partition->fdt_addr; + + //reset shminfo + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + bl_memset(p_bininfo, 0, sizeof(SHMINFO)); + return 0; +} + +_THUMB2 static int bl_load_fdt_from_all_in_one(unsigned char *p_all_in_one, unsigned int all_in_one_size, unsigned char **pp_fdt /*OUT*/) +{ + NVTPACK_ER er; + NVTPACK_MEM emb_fdt; + NVTPACK_VERIFY_OUTPUT np_verify = {0}; + NVTPACK_GET_PARTITION_INPUT np_get_input; + NVTPACK_MEM mem_in = {(void *)p_all_in_one, (unsigned int)all_in_one_size}; + + if (nvtpack_verify(&mem_in, &np_verify) != NVTPACK_ER_SUCCESS) { + USB_SET_RESULT(USB_RESULT_LOADER_OK_FW_INVALID); + debug_err("packbin verify failed.\r\n"); + return -1; + } + + np_get_input.id = 1; // fdt must always put in partition[1] + np_get_input.mem = mem_in; + er = nvtpack_get_partition(&np_get_input, &emb_fdt); + + if (er == NVTPACK_ER_NOT_FOUND) { + return -2; + } else if (er == NVTPACK_ER_SUCCESS) { + debug_msg_var("fdt addr", (int)emb_fdt.p_data); + debug_msg_var("fdt size", (int)emb_fdt.len); + if (bl_chk_fdt((unsigned int)emb_fdt.p_data, emb_fdt.len) == 0) { + return bl_copy_fdt_to_fdt_addr(emb_fdt.p_data, pp_fdt); + } + } + return -1; +} + +_THUMB2 static unsigned int bl_load_rtos_from_all_in_one(unsigned char *p_fdt, unsigned char *p_all_in_one, unsigned int all_in_one_size) +{ + NVTPACK_ER er; + NVTPACK_MEM mem_rtos; + int rtos_partition_id; + NVTPACK_GET_PARTITION_INPUT input; + DRAM_PARTITION *p_dram_partition = NULL; + SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + EMB_PARTITION *p_emb_partition_rtos = bl_get_rtos_partition(p_fdt, &rtos_partition_id); + + if (p_emb_partition_rtos == NULL) { + debug_err("null p_emb_partition_rtos\r\n"); + return -1; + } + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + +#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) + if(bl_is_smp(p_fdt)) { + bl_core2_prepare(p_dram_partition, 0); + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + bl_core2_reset(); + } +#endif + + // get partition data address and size + input.id = (unsigned int)rtos_partition_id; + input.mem.p_data = (void *)p_all_in_one; + input.mem.len = all_in_one_size; + er = nvtpack_get_partition(&input, &mem_rtos); + if (er == NVTPACK_ER_NOT_FOUND) { + return -2; + } + + if (er != NVTPACK_ER_SUCCESS) { + return -1; + } + + HEADINFO *p_headinfo = (HEADINFO *)(mem_rtos.p_data + BIN_INFO_OFFSET_RTOS); // describe uncompressed u-boot + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)mem_rtos.p_data; // describe compressed u-boot + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + LZ_Uncompress(mem_rtos.p_data + sizeof(NVTPACK_BFC_HDR), (unsigned char *) p_dram_partition->rtos_addr, size_comp_le); + } else { + utl_memcpy((void *)p_dram_partition->rtos_addr, mem_rtos.p_data, p_headinfo->BinLength); + } + + if (p_dram_partition->rtos_addr != p_headinfo->CodeEntry) { + debug_msg_var("rtos_addr(fdt)=", p_dram_partition->rtos_addr); + debug_msg_var("rtos_addr(fw)=", p_headinfo->CodeEntry); + return -1; + } + + p_headinfo = (HEADINFO *)(p_dram_partition->rtos_addr+ BIN_INFO_OFFSET_RTOS); + // update loaded size + p_shminfo->boot.LdLoadSize = p_headinfo->BinLength; + // set LDCF_BOOT_CARD to disable partial load, becasue fw has loaded by loader + p_headinfo->Resv1[HEADINFO_RESV_IDX_BOOT_FLAG] &= ~BOOT_FLAG_PARTLOAD_EN; + + + return 0; +} + +_THUMB2 static int bl_load_fdt_from_flash(unsigned char *p_tmp, unsigned int tmp_size, unsigned char **pp_fdt /*OUT*/) +{ + + // read first block to get dtb size + int blk_size = (int)int_strg_obj->flash_getBlockSize(); + int er = int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW, blk_size, p_tmp, NAND_RW_FIRMWARE); + if (er < 0) { + debug_err("bl_load_fdt_from_flash"); + return -1; + } + + int total_size = ALIGN_CEIL(fdt_totalsize(p_tmp), blk_size); + if ((int)tmp_size < total_size) { + debug_err_var("tmp_size too small, require:", fdt_totalsize(p_tmp)); + return -1; + } + + total_size -= blk_size; + if (total_size > 0) { + // read remain to get uboot starting addr on dram and offset in flash + er = int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW+1, total_size, p_tmp+blk_size, NAND_RW_FIRMWARE); + if (er < 0) { + debug_err("bl_load_fdt_from_flash"); + return -1; + } + } + + if (bl_chk_fdt((unsigned int)p_tmp, fdt_totalsize(p_tmp)) == 0) { + return bl_copy_fdt_to_fdt_addr(p_tmp, pp_fdt); + } + + return -1; +} + +#if (FDT_SUPPORT) +_THUMB2 static char *bl_get_partition_name(unsigned char *p_fdt) +{ + const static char *p_names[3] = { + "/nand", + "/nor", + "/mmc@f0510000" + }; + + const char *name = NULL; + switch(gStorageIntType) { + case STORAGEINT_SPI_NAND: + name = p_names[0]; + break; + case STORAGEINT_SPI_NOR: + name = p_names[1]; + break; + case STORAGEINT_EMMC: + name = p_names[2]; + break; + default: + debug_err("loader_setStorageIntType needs.\r\n"); + return NULL; + } + + if (fdt_path_offset(p_fdt, name) > 0) { + return (char *)name; + } + + debug_err("E:bl_get_partition_name\r\n"); + return NULL; +} +#endif + +#if (FDT_SUPPORT) +_THUMB2 static char *bl_make_fdt_path(char *root, char *name) +{ + //for fdt to combine the full path of node + static char g_tmp_path[64] = {0}; + g_tmp_path[0] = 0; + strcat(g_tmp_path, "/"); + strcat(g_tmp_path, root); + strcat(g_tmp_path, "/"); + strcat(g_tmp_path, name); + return g_tmp_path; +} +#endif + +#if (FDT_SUPPORT) +_THUMB2 static int bl_get_partition(unsigned char *p_fdt /*IN*/, char *p_emb_name /*IN*/, EMB_PARTITION *p_emb/*OUT*/, int *p_id) +{ + int len; + const unsigned long long *nodep; + char *p_name = bl_get_partition_name(p_fdt); + char *p_path = NULL; + + if (p_name == NULL) { + return -1; + } + + p_path = bl_make_fdt_path(p_name, p_emb_name); + + // get partition offset and size + nodep = (const unsigned long long *)bl_get_fdt_property(p_fdt, p_path, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("bl_get_partition-1\r\n"); + return -1; + } + + p_emb->PartitionOffset = be64_to_cpu(nodep[0]); + p_emb->PartitionSize = be64_to_cpu(nodep[1]); + + // get partition label + char *p_label_name = (char *)bl_get_fdt_property(p_fdt, p_path, PROPERTY_LABEL, &len); + if (p_label_name == NULL) { + debug_err("bl_get_partition-2\r\n"); + return -1; + } + + // get id + p_path = bl_make_fdt_path(p_name, PATH_NVTPACK_INDEX); + int nodeoffset = fdt_path_offset(p_fdt, p_path); + + for (nodeoffset = fdt_first_subnode(p_fdt, nodeoffset); + (nodeoffset >= 0); + (nodeoffset = fdt_next_subnode(p_fdt, nodeoffset))) { + const struct fdt_property *prop; + + if (!(prop = fdt_get_property(p_fdt, nodeoffset, PROPERTY_PARTITION_NAME, &len))) { + break; + } + const char *p_id_name = fdt_get_name(p_fdt, nodeoffset, &len); + + if (strcmp(p_label_name, (char *)prop->data) == 0) { + *p_id = atoi(p_id_name + strlen("id")); + return 0; + } + } + + return -1; +} +#endif + +_THUMB2 static void *bl_get_uboot_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) +{ +#if (FDT_SUPPORT) + if (bl_get_partition(p_fdt, PATH_PARTITION_UBOOT, &g_emb_uboot, p_id) != 0) { + return NULL; + } +#else + *p_id = NVTPACK_IDX_UBOOT; +#endif + g_emb_uboot.EmbType = EMBTYPE_UBOOT; + return &g_emb_uboot; +} + +_THUMB2 static void *bl_get_rtos_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) +{ +#if (FDT_SUPPORT) + if (bl_get_partition(p_fdt, PATH_PARTITION_RTOS, &g_emb_rtos, p_id) != 0) { + return NULL; + } + +#else + *p_id = NVTPACK_IDX_RTOS; +#endif + g_emb_rtos.EmbType = EMBTYPE_RTOS; + return &g_emb_rtos; +} + +#if (NUTTX_SUPPORT) +_THUMB2 static void *bl_get_nuttx_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) +{ + if (bl_get_partition(p_fdt, PATH_PARTITION_NUTTX, &g_emb_nuttx, p_id) != 0) { + return NULL; + } + g_emb_nuttx.EmbType = EMBTYPE_NUTTX; + + return &g_emb_nuttx; +} +#endif + +_THUMB2 static void *bl_get_teeos_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) +{ +#if (FDT_SUPPORT) + if (bl_get_partition(p_fdt, PATH_PARTITION_TEEOS, &g_emb_teeos, p_id) != 0) { + return NULL; + } +#else + *p_id = NVTPACK_IDX_TEEOS; +#endif + g_emb_teeos.EmbType = EMBTYPE_TEEOS; + return &g_emb_teeos; +} +#endif + +// return decompress_fw_size +_THUMB2 static unsigned int bl_decompress_rtos(UINT32 compress_addr, UINT32 compress_size, UINT32 fw_base_addr) +{ + UINT32 decoded_size; + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)compress_addr; + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + UINT32 size_uncomp_le = invertEndian(pBfc->uiSizeUnComp); + + size_comp_le = (compress_size < size_comp_le) ? compress_size : size_comp_le; + decoded_size = LZ_Uncompress((UINT8 *)compress_addr + sizeof(NVTPACK_BFC_HDR), (UINT8 *)fw_base_addr, size_comp_le); + + //because some padding bytes are decoded, we must return real rtos size + return (decoded_size < size_uncomp_le) ? decoded_size : size_uncomp_le; +} + +#if !REMOVED_FLASH +_THUMB2 static int bl_load_uboot_from_all_in_one(unsigned char *p_fdt, unsigned char *p_all_in_one, unsigned int all_in_one_size) +{ + NVTPACK_ER er; + NVTPACK_MEM mem_uboot; + int uboot_partition_id; + NVTPACK_GET_PARTITION_INPUT input; + DRAM_PARTITION *p_dram_partition = NULL; + EMB_PARTITION *p_emb_partition_uboot = bl_get_uboot_partition(p_fdt, &uboot_partition_id); + + if (p_emb_partition_uboot == NULL) { + debug_err("null p_emb_partition_uboot\r\n"); + return -1; + } + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // get partition data address and size + input.id = (unsigned int)uboot_partition_id; + input.mem.p_data = (void *)p_all_in_one; + input.mem.len = all_in_one_size; + er = nvtpack_get_partition(&input, &mem_uboot); + if (er == NVTPACK_ER_NOT_FOUND) { + return -2; + } + + if (er != NVTPACK_ER_SUCCESS) { + return -1; + } + + debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); +// debug_msg_var("uboot_size", p_dram_partition->uboot_size); +# if 1 + if(0) { +#else + if(is_secure_enable() == 0) { +#endif + if (bl_chk_uboot((unsigned int)mem_uboot.p_data, mem_uboot.len) != 0) { + return -1; + } + + // flow to handle compressed u-boot and uncompressed one. + HEADINFO *p_headinfo = (HEADINFO *)(mem_uboot.p_data + BIN_INFO_OFFSET_UBOOT); // describe uncompressed u-boot + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)mem_uboot.p_data; // describe compressed u-boot + + // load uboot bin to dram partiton location + //debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); + //debug_msg_var("uboot_size", p_dram_partition->uboot_size); + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + LZ_Uncompress(mem_uboot.p_data + sizeof(NVTPACK_BFC_HDR), (unsigned char *) p_dram_partition->uboot_addr, size_comp_le); + } else { + utl_memcpy((void *)p_dram_partition->uboot_addr, mem_uboot.p_data, p_headinfo->BinLength); + } + } else { +#if (SECURE_DECRYPT_UBOOT) + utl_memcpy((void *)p_dram_partition->uboot_addr, mem_uboot.p_data, mem_uboot.len); + unsigned int plaintext_size =0; + + if((er = do_decrypt_aes(p_dram_partition->uboot_addr, p_dram_partition->uboot_addr, &plaintext_size, p_dram_partition->uboot_size))!= 0 ) + { + //debug_err("aes fail\r\n"); + return er; + } + if (bl_chk_uboot((unsigned int)p_dram_partition->uboot_addr, plaintext_size) != 0) { + return -1; + } +#else + if (bl_chk_uboot((unsigned int)mem_uboot.p_data, mem_uboot.len) != 0) { + return -1; + } + + // flow to handle compressed u-boot and uncompressed one. + HEADINFO *p_headinfo = (HEADINFO *)(mem_uboot.p_data + BIN_INFO_OFFSET_UBOOT); // describe uncompressed u-boot + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)mem_uboot.p_data; // describe compressed u-boot + + // load uboot bin to dram partiton location + //debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); + //debug_msg_var("uboot_size", p_dram_partition->uboot_size); + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + LZ_Uncompress(mem_uboot.p_data + sizeof(NVTPACK_BFC_HDR), (unsigned char *) p_dram_partition->uboot_addr, size_comp_le); + } else { + utl_memcpy((void *)p_dram_partition->uboot_addr, mem_uboot.p_data, p_headinfo->BinLength); + } +#endif + } + + return 0; +} + +#if (NUTTX_SUPPORT) +_THUMB2 static int bl_load_nuttx_from_all_in_one(unsigned char *p_fdt, unsigned char *p_all_in_one, unsigned int all_in_one_size) +{ + NVTPACK_ER er; + NVTPACK_MEM mem_nuttx; + int nuttx_partition_id; + NVTPACK_GET_PARTITION_INPUT input; + DRAM_PARTITION *p_dram_partition = NULL; + EMB_PARTITION *p_emb_partition_nuttx = bl_get_nuttx_partition(p_fdt, &nuttx_partition_id); + + if (p_emb_partition_nuttx == NULL) { + debug_err("null p_emb_partition_nuttx\r\n"); + return -1; + } + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // get partition data address and size + input.id = (unsigned int)nuttx_partition_id; + input.mem.p_data = (void *)p_all_in_one; + input.mem.len = all_in_one_size; + er = nvtpack_get_partition(&input, &mem_nuttx); + if (er == NVTPACK_ER_NOT_FOUND) { + return -2; + } + + if (er != NVTPACK_ER_SUCCESS) { + return -1; + } + + // using check uboot's check sum is ok + if (bl_chk_uboot((unsigned int)mem_nuttx.p_data, mem_nuttx.len) != 0) { + return -1; + } + + // flow to handle compressed u-boot and uncompressed one. + HEADINFO *p_headinfo = (HEADINFO *)(mem_nuttx.p_data + BIN_INFO_OFFSET_NUTTX); // describe uncompressed u-boot + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)mem_nuttx.p_data; // describe compressed u-boot + + // load nuttx bin to dram partiton location + debug_msg_var("nuttx_addr", p_dram_partition->nuttx_addr); + debug_msg_var("nuttx_size", p_dram_partition->nuttx_size); + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + LZ_Uncompress(mem_nuttx.p_data + sizeof(NVTPACK_BFC_HDR), (unsigned char *) p_dram_partition->nuttx_addr, size_comp_le); + } else { + utl_memcpy((void *)p_dram_partition->nuttx_addr, mem_nuttx.p_data, p_headinfo->BinLength); + } + + return 0; +} +#endif + +_THUMB2 static int bl_load_teeos_from_all_in_one(unsigned char *p_fdt, unsigned char *p_all_in_one, unsigned int all_in_one_size) +{ + NVTPACK_ER er; + NVTPACK_MEM mem_teeos; + int teeos_partition_id; + NVTPACK_GET_PARTITION_INPUT input; + DRAM_PARTITION *p_dram_partition = NULL; + EMB_PARTITION *p_emb_partition_teeos = bl_get_teeos_partition(p_fdt, &teeos_partition_id); + HEADINFO *p_headinfo = NULL; + if (p_emb_partition_teeos == NULL) { + debug_err("null p_emb_partition_teeos\r\n"); + return -1; + } + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // get partition data address and size + input.id = (unsigned int)teeos_partition_id; + input.mem.p_data = (void *)p_all_in_one; + input.mem.len = all_in_one_size; + er = nvtpack_get_partition(&input, &mem_teeos); + if (er == NVTPACK_ER_NOT_FOUND) { + return -2; + } + + if (er != NVTPACK_ER_SUCCESS) { + return -1; + } + +#if 0 + if(1){ +#else + if(is_secure_enable()) { +#endif +#if (SECURE_DECRYPT_OPTEE_OS) + unsigned int plaintext_size =0; + utl_memcpy((void *)p_dram_partition->teeos_addr, mem_teeos.p_data, mem_teeos.len); + if((er = do_decrypt_aes(p_dram_partition->teeos_addr, p_dram_partition->teeos_addr,&plaintext_size, p_dram_partition->teeos_size))!= 0) + { + //debug_err("aes fail\r\n"); + return er; + } + + //this is the second headinfo information , not encrpyted headinfo + p_headinfo = (HEADINFO *)(p_dram_partition->teeos_addr + BIN_INFO_OFFSET_TEEOS); +#else + debug_err("please enable SECURE_DECRYPT_OPTEE_OS"); + return -1; +#endif + } + else{ + p_headinfo = (HEADINFO *)(mem_teeos.p_data + BIN_INFO_OFFSET_TEEOS); // describe uncompressed u-boot + utl_memcpy((void *)p_dram_partition->teeos_addr, (unsigned char*)mem_teeos.p_data, p_headinfo->BinLength); + } + UINT32 teeos_addr = p_headinfo->Resv1[HEADINFO_TEEOS_RESV_IDX_LOAD_ADDR]; + + //check addr matched or not + debug_msg_var("teeos_addr", p_dram_partition->teeos_addr); + if (teeos_addr != p_dram_partition->teeos_addr) { + debug_msg_var("teeos_addr(bin)", teeos_addr); + debug_err("teeos addr not matched.\r\n"); + return -1; + } + + // using check uboot's check sum is ok + if (bl_chk_uboot((unsigned int)teeos_addr, p_headinfo->BinLength) != 0) { + return -1; + } + + return 0; +} + +_THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) +{ + int er; + int uboot_partition_id; + DRAM_PARTITION *p_dram_partition = NULL; + unsigned int blk_size = int_strg_obj->flash_getBlockSize(); + EMB_PARTITION *p_emb_partition_uboot = bl_get_uboot_partition(p_fdt, &uboot_partition_id); + + if (p_emb_partition_uboot == NULL) { + debug_err("null p_emb_partition_uboot\r\n"); + return -1; + } + + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + +#if (SECURE_DECRYPT_UBOOT) + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, + ALIGN_CEIL(BIN_INFO_OFFSET_UBOOT + sizeof(HEADINFO), blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) + { + debug_err_var("bl_load_uboot_from_flash,er=", er); + bl_displayErrMsg(RWErrorMsg); // read uboot failed + return -1; + } +#else + + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, + ALIGN_CEIL(BIN_INFO_OFFSET_UBOOT + sizeof(HEADINFO), blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) + { + debug_err_var("bl_load_uboot_from_flash,er=", er); + bl_displayErrMsg(RWErrorMsg); // read uboot failed + return -1; + } + +#endif + + debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); + debug_msg_var("uboot_size", p_dram_partition->uboot_size); +#if 0 + if(0){ +#else + if(is_secure_enable() == 0) { +#endif + HEADINFO *p_headinfo = (HEADINFO *)(p_tmp + BIN_INFO_OFFSET_UBOOT); // describe uncompressed u-boot + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)p_tmp; // describe compressed u-boot + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) + { + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, + ALIGN_CEIL(size_comp_le, blk_size),p_tmp, NAND_RW_FIRMWARE)) < 0) + { + debug_err_var("bl_load_uboot_from_flash_comp,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + LZ_Uncompress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->uboot_addr, size_comp_le); + } + else + { + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, + ALIGN_CEIL(p_headinfo->BinLength, blk_size), + (UINT8 *)p_dram_partition->uboot_addr, NAND_RW_FIRMWARE)) < 0) + { + debug_err_var("bl_load_uboot_from_flash,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + } + } + else + { +#if (SECURE_DECRYPT_UBOOT) + HEADINFO *p_headinfo = (HEADINFO *)(p_tmp); // describe uncompressed u-boot + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, + ALIGN_CEIL(p_headinfo->BinLength, blk_size), + (UINT8 *)p_dram_partition->uboot_addr, NAND_RW_FIRMWARE)) < 0) + { + debug_err_var("bl_load_uboot_from_flash,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + unsigned int plaintext_size=0; + if((er =do_decrypt_aes(p_dram_partition->uboot_addr, p_dram_partition->uboot_addr, &plaintext_size, p_dram_partition->uboot_size))!= 0) + { + //debug_err("aes fail\r\n"); + return er; + } + + +#else + debug_msg("plase enable SECURE_DECRYPT_UBOOT config\r\n"); + return -1; +#endif + + } + + + + + return 0; +} + +_THUMB2 static int bl_load_rtos_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) +{ + int er; + int rtos_partition_id; + DRAM_PARTITION *p_dram_partition = NULL; + unsigned int blk_size = int_strg_obj->flash_getBlockSize(); + EMB_PARTITION *p_emb_partition_rtos = bl_get_rtos_partition(p_fdt, &rtos_partition_id); + SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + + if (p_emb_partition_rtos == NULL) { + debug_err("null p_emb_partition_rtos\r\n"); + return -1; + } + + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + +#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) + if(bl_is_smp(p_fdt)) { + bl_core2_prepare(p_dram_partition, 0); + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + bl_core2_reset(); + } +#endif + + // load 1st block of rtos to tmp dram (to detect compressed u-boot) + unsigned int bininfo_preload_size = ALIGN_CEIL(BIN_INFO_OFFSET_RTOS + sizeof(HEADINFO), blk_size); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, bininfo_preload_size, p_tmp, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_rtos_from_flash,er=", er); + bl_displayErrMsg(RWErrorMsg); // read rtos failed + } + + // flow to handle compressed u-boot and uncompressed one. + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)p_tmp; // describe compressed u-boot + + // load rtos bin to dram partiton location + //debug_msg_var("rtos_addr", p_dram_partition->rtos_addr); + //debug_msg_var("rtos_size", p_dram_partition->rtos_size); + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + + if((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF ) == 11) + { + /* lzma compressed image*/ + debug_msg("lzma, use uboot\r\n"); + er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load uboot failed\r\n"); + } + + // boot uboot + er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); + if (er != 0) { + bl_displayErrMsg("boot uboot failed\r\n"); + } + } else { + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, ALIGN_CEIL(size_comp_le, blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_rtos_from_flash_comp,er=", er); // read bfc-rtos failed + bl_displayErrMsg(RWErrorMsg); + } + LZ_Uncompress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->rtos_addr, size_comp_le); + } + } else { + BININFO *p_bininfo = (BININFO *)(p_tmp + BIN_INFO_OFFSET_RTOS); // describe uncompressed u-boot + if (p_bininfo->head.Resv1[HEADINFO_RESV_IDX_BOOT_FLAG] & BOOT_FLAG_PARTLOAD_EN) { + // copy bininfo_preload to rtos_addr + bl_memcpy((UINT8 *)p_dram_partition->rtos_addr, p_tmp, bininfo_preload_size); + // preload some to get part-1 size for partial load and partial compressed load + UINT32 preload_size = ALIGN_CEIL(FW_PART1_SIZE_OFFSET, blk_size) - bininfo_preload_size; + + if (preload_size!= 0) { + er = int_strg_obj->flash_readSectors( + (p_emb_partition_rtos->PartitionOffset + bininfo_preload_size) / blk_size, + preload_size, + (UINT8 *)(p_dram_partition->rtos_addr + bininfo_preload_size), NAND_RW_FIRMWARE + ); + + if (er < 0) { + debug_err_var("bl_load_rtos_from_flash_pl1,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + } + UINT32 part1_size = *(UINT32 *)(p_dram_partition->rtos_addr + FW_PART1_SIZE_OFFSET); + debug_msg_var("part1_size",part1_size); + part1_size = ALIGN_CEIL(part1_size, blk_size); + //debug_msg_var("part1_size_aligned",part1_size); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, part1_size, (UINT8 *)p_dram_partition->rtos_addr, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_rtos_from_flash_pl1,er=", er); + bl_displayErrMsg(RWErrorMsg); + } + // update loaded size + p_shminfo->boot.LdLoadSize = part1_size; + } else { + // full load + debug_msg_var("rtos_size", p_bininfo->head.BinLength); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset /blk_size, ALIGN_CEIL(p_bininfo->head.BinLength, blk_size), (UINT8 *)p_dram_partition->rtos_addr, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_rtos_from_flash,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + // update loaded size + p_shminfo->boot.LdLoadSize = p_bininfo->head.BinLength; + } + } + return 0; +} + +_THUMB2 static int bl_load_teeos_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) +{ + int er; + int teeos_partition_id; + DRAM_PARTITION *p_dram_partition = NULL; + unsigned int blk_size = int_strg_obj->flash_getBlockSize(); + EMB_PARTITION *p_emb_partition_teeos = bl_get_teeos_partition(p_fdt, &teeos_partition_id); + + if (p_emb_partition_teeos == NULL) { + debug_err("null p_emb_partition_teeos\r\n"); + return -1; + } + + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // load 1st block of u-boot to tmp dram (to detect compressed u-boot) + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_teeos->PartitionOffset / blk_size, ALIGN_CEIL(BIN_INFO_OFFSET_TEEOS + sizeof(HEADINFO), blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_teeos_from_flash,er=", er); + bl_displayErrMsg(RWErrorMsg); // read teeos failed + } + + // flow to handle compressed u-boot and uncompressed one. +#if (SECURE_DECRYPT_OPTEE_OS) + HEADINFO *p_headinfo = (HEADINFO *)(p_tmp); // describe uncompressed u-boot +#else + HEADINFO *p_headinfo = (HEADINFO *)(p_tmp + BIN_INFO_OFFSET_TEEOS); // describe uncompressed u-boot + +#endif + + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_teeos->PartitionOffset / blk_size, ALIGN_CEIL(p_headinfo->BinLength, blk_size), (UINT8 *)p_dram_partition->teeos_addr, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_teeos_from_flash,er=", er); // read bfc-teeos failed + bl_displayErrMsg(RWErrorMsg); + } +#if 0 + if(1){ +#else + if(is_secure_enable()) { +#endif +#if (SECURE_DECRYPT_OPTEE_OS) + + unsigned int plaintext_size=0; + if((er = do_decrypt_aes(p_dram_partition->teeos_addr, p_dram_partition->teeos_addr, &plaintext_size, p_dram_partition->teeos_size)) != 0) + { + //debug_err("aes fail\r\n"); + return er; + } + + p_headinfo = (HEADINFO *)(p_dram_partition->teeos_addr + BIN_INFO_OFFSET_TEEOS); // describe uncompressed u-boot +#else + debug_err("please ENABLE SECURE_DECRYPT_OPTEE_OS config\n"); + return -1; +#endif + } + + // load teeos bin to dram partiton location + UINT32 teeos_addr = p_headinfo->Resv1[HEADINFO_TEEOS_RESV_IDX_LOAD_ADDR]; + debug_msg_var("teeos_addr", p_dram_partition->teeos_addr); + if (teeos_addr != p_dram_partition->teeos_addr) { + debug_msg_var("teeos_addr(bin)", teeos_addr); + debug_err("teeos addr not matched.\r\n"); + return -1; + } + //check check sum + if (bl_chk_uboot((unsigned int)teeos_addr, p_headinfo->BinLength) != 0) { + return -1; + } + return 0; +} +#endif + +//#if !USB_WRITELOADER +#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) +_THUMB2 static int bl_load_rtos_from_non_nvtpack(unsigned int src_addr, unsigned int src_size, unsigned int *p_dst_addr, unsigned int *p_dst_size) +{ + NVTPACK_BFC_HDR *pBFC = (NVTPACK_BFC_HDR *)src_addr; + HEADINFO *p_headinfo = (HEADINFO *)(src_addr + BIN_INFO_OFFSET_RTOS); + if (pBFC->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + // to avoid rtos_addr is overlapped by src_addr, we need extract some bits to get real rtos addr. + // compressed firmware + debug_msg("compressed t.bin\r\n"); + // decode some bytes to get uncompressed address + bl_decompress_rtos(src_addr, SIZE_PRELOAD, src_addr + SIZE_PRELOAD); + p_headinfo = (HEADINFO *)(src_addr + SIZE_PRELOAD + BIN_INFO_OFFSET_RTOS); + // check if valid after decode + if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || + (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { + UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; + UINT32 uncompress_size = p_headinfo->BinLength; + UINT32 compress_size = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); + //adjust src_addr that lay compressed f.w followed by uncomppressed f.w + src_addr = uncompress_addr + uncompress_size; + src_addr = ALIGN_CEIL(src_addr, 4); + src_size = fat_read_rootfile((UINT8 *)src_addr, compress_size); + } else { + return -1; + } + } else if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || + (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { + // uncompressed firmware + UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; + UINT32 uncompress_size = p_headinfo->BinLength; + + src_size = fat_read_rootfile((UINT8 *)src_addr, uncompress_size); + src_addr = uncompress_addr; + src_size = uncompress_size; + debug_msg("uncompressed t.bin\r\n"); +#if (DRAM_RANGE_SCAN_EN == ENABLE) + } else if (utl_is_sram_fw(src_addr) == TRUE) { + debug_msg("detected as SRAM fw\r\n"); + src_size = fat_read_rootfile((UINT8 *)src_addr, FAT_READ_TOTAL_FILE_LENGTH); +#endif + } else { + return -1; + } + + *p_dst_addr = src_addr; + *p_dst_size = src_size; + return 0; +} +#endif + +#if (STORAGE_EXT_TYPE == STORAGE_EXT_USB) +_THUMB2 static int bl_load_rtos_from_usb_raw(unsigned int src_addr, unsigned int src_size, unsigned int *p_dst_addr, unsigned int *p_dst_size) +{ + NVTPACK_BFC_HDR *pBFC = (NVTPACK_BFC_HDR *)src_addr; + HEADINFO *p_headinfo = (HEADINFO *)(src_addr + BIN_INFO_OFFSET_RTOS); + if (pBFC->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + // to avoid rtos_addr is overlapped by src_addr, we need extract some bits to get real rtos addr. + // compressed firmware + debug_msg("compressed t.bin\r\n"); + // decode some bytes to get uncompressed address + // assume usb write loader receive full fw at 0x0200_0000, decompress it to smaller address + bl_decompress_rtos(src_addr, SIZE_PRELOAD, src_addr - SIZE_PRESERVE_USB); + p_headinfo = (HEADINFO *)(src_addr - SIZE_PRESERVE_USB + BIN_INFO_OFFSET_RTOS); + // check if valid after decode + if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || + (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { + UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; + UINT32 uncompress_size = p_headinfo->BinLength; + UINT32 compress_size = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); + //adjust src_addr that lay compressed f.w followed by uncomppressed f.w + utl_memcpy((void *)(uncompress_addr + uncompress_size), (void *)src_addr, compress_size); + src_addr = uncompress_addr + uncompress_size; + src_addr = ALIGN_CEIL(src_addr, 4); + src_size = compress_size; + } else { + return -1; + } + } else if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || + (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { + // uncompressed firmware + UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; + UINT32 uncompress_size = p_headinfo->BinLength; + debug_msg("uncompressed t.bin\r\n"); + utl_memcpy((void *)uncompress_addr, (void *)src_addr, uncompress_size); + src_size = uncompress_size; +#if (DRAM_RANGE_SCAN_EN == ENABLE) + } else if (utl_is_sram_fw(src_addr) == TRUE) { + debug_msg("detected as SRAM fw. NOt Support from USB\r\n"); +#endif + } else { + return -1; + } + + *p_dst_addr = src_addr; + *p_dst_size = src_size; + return 0; +} +#endif + +//#if !USB_WRITELOADER +#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) +_THUMB2 static int bl_load_rtos_from_uart(unsigned int src_addr, unsigned int src_size, unsigned int *p_dst_addr, unsigned int *p_dst_size) +{ +#if UART_UPDATE_ + UINT32 tick_kms = 10; // timeout 1000 ms + char key; + + debug_msg("UART press Enter to\r\n"); + + while (--tick_kms) { + uart_chkChar(&key); + + if (key != 0x00) { + break; + } + timer_delay(100000); //100000 + debug_msg("."); + } + + if (tick_kms) { + UINT32 uiLength; + debug_msg("\r\nEnter uboot length (Decimal):\r\n"); //must \r\n at the end because of auto_test tool + uart_getStr_polling(g_strLength); + uiLength = DecStr2Int(g_strLength); + debug_msg("\r\nPlz pass uboot bin > "); + uart_getBinary((char *)src_addr, uiLength); // Temp Receive to DRAM start + debug_msg("\r\nGot it\r\n"); +#if (DRAM_RANGE_SCAN_EN == ENABLE) + // First word is code entry point address, once if entry address is 0xC000XXXX + // represent code is running on sram. + if (bl_checkDramScanFW(src_addr) == TRUE) { + UINT32 i; + + // Enable sram usage + SETREG32(0xF0900128, 0x00000002); + SETREG32(0xF0800128, 0x00000006); + SETREG32(0xF0020060, 0x00030002); + + uiLength = ((uiLength + 3) & 0xFFFFFFFC); + + for (i = 0; i < uiLength; i += 4) { + *(UINT32 *)(src_addr + i) = *(UINT32 *)(src_addr + i); + } + *(UINT32 *)(src_addr) = *(UINT32 *)(src_addr); + return 1; + } +#endif + if (*(UINT32 *)src_addr == MAKEFOURCC('B', 'C', 'L', '1')) { + HEADINFO *p_headinfo = NULL; + NVTPACK_BFC_HDR *pBFC = (NVTPACK_BFC_HDR *)src_addr; + bl_checkFW(src_addr, uiLength); + debug_msg_var("uiLength", uiLength); + debug_msg("compressed t.bin\r\n"); + // decode some bytes to get uncompressed address + bl_decompress_rtos(src_addr, SIZE_PRELOAD, src_addr + uiLength); + p_headinfo = (HEADINFO *)(src_addr + uiLength + BIN_INFO_OFFSET_RTOS); + // check if valid after decode + if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || + (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { + UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; + UINT32 uncompress_size = p_headinfo->BinLength; + UINT32 compress_size = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); + unsigned int ori_src_addr = src_addr; + //adjust src_addr that lay compressed f.w followed by uncomppressed f.w + src_addr = uncompress_addr + uncompress_size; + src_addr = ALIGN_CEIL(src_addr, 4); + src_size = uncompress_size; + utl_memcpy((void *)src_addr, (void *)ori_src_addr, uiLength); + *p_dst_addr = src_addr; + *p_dst_size = compress_size; + return 0; + } else { + return -1; + } + return 0; + } + } +#endif + return -1; +} +#endif + +_THUMB2 static void bl_update_uItron_headInfo(UINT32 fw_base_addr, DRAM_PARTITION *p_dram_partition) +{ + HEADINFO *pHeadInfo; +#if (UITRON_FW == ENABLE) + BININFO *pBinInfo; +#endif + pHeadInfo = (HEADINFO *)(fw_base_addr + BIN_INFO_OFFSET_RTOS); + if (p_dram_partition) { + pHeadInfo->ModelextAddr = p_dram_partition->fdt_addr; + } else { + pHeadInfo->ModelextAddr = 0; +#if (UITRON_FW == ENABLE) + pBinInfo = (BININFO *)(fw_base_addr + BIN_INFO_OFFSET_RTOS); + pBinInfo->ld.Resv[0] = LoaderInternalInfo[1]; + pBinInfo->ld.LdPackage = (LoaderInternalInfo[3] & 0xFFFF); +#endif + } +} + +_THUMB2 static int bl_update_loader_bininfo(unsigned char *p_fdt, unsigned int ld_flag, unsigned int rtos_loaded_size) +{ + BOOTINFO *p_ld; + SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + BININFO *p_bininfo = (BININFO *)(p_dram_partition->rtos_addr + BIN_INFO_OFFSET_RTOS); + + p_ld = &p_shminfo->boot; + if (!(p_bininfo->head.Resv1[HEADINFO_RESV_IDX_BOOT_FLAG] & BOOT_FLAG_PARTLOAD_EN)) { + // LdLoadSize updated on uboot or bl_load_rtos_from_flash(), if BOOT_FLAG_PARTLOAD_EN + p_ld->LdLoadSize = rtos_loaded_size; + } + p_ld->LdLoadTime = timer_getLdrElapse(); + p_ld->LdResvSize = 0; //unused + p_ld->FWResvSize = 0; //unused + return 0; +} + +_THUMB2 static int bl_is_smp(unsigned char *p_fdt) +{ +#if (FDT_SUPPORT) + int len; + const char *nodep; + nodep = (const char *)bl_get_fdt_property(p_fdt, PATH_NVT_INFO, PROPERTY_NVT_LINUX_SMP, &len); + debug_msg_var("nodep", (UINT32)nodep); + if (nodep == NULL) { + return 0; + } + debug_msg((char *)nodep); + if (strcmp(nodep, "NVT_LINUX_SMP_ON") == 0) { + return 1; + } + return 0; +#elif (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) + return 1; +#else + return 0; +#endif +} + +#if !REMOVED_FLASH +_THUMB2 static int bl_boot_uboot(unsigned char *p_fdt) +{ +#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) + UINT32 No_CPU; +#endif + DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // update shminfo + SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + unsigned int *p_param = (unsigned int *)(&_load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[0]); + p_shminfo->boot.LdPackage = p_param[3] & 0xFFFF; + p_shminfo->boot.LdStorage = (p_param[3] >> 16) & 0xFF; + + // update headinfo as real u-boot address + HEADINFO *p_headinfo = (HEADINFO *)(p_dram_partition->uboot_addr + BIN_INFO_OFFSET_UBOOT); + + if (bl_chk_uboot(p_dram_partition->uboot_addr, p_headinfo->BinLength) != 0) { + return -1; + } + // start cpu2 + if (p_dram_partition->uboot_addr != p_headinfo->CodeEntry) { + debug_err_var("drampat-uboot_addr ", (int)p_dram_partition->uboot_addr); + debug_err_var("bin-uboot_addr ", (int)p_headinfo->CodeEntry); + return -1; + } + // for uboot to indicate this boot is all-in-one fw or non-all-in-one boot from uart or usb + // if boot from uart or usb with non-all-in-one fw, the uboot's ModelextAddr will be zero + p_headinfo->ModelextAddr = p_dram_partition->fdt_addr; + + CPUflushWriteCache(p_headinfo->CodeEntry, p_headinfo->BinLength); + UINT32 isSMP = bl_is_smp(p_fdt); + +#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) + No_CPU = *(UINT32 *)0xFFD00004; + No_CPU &= 0x3; + debug_msg_var("core No.=", No_CPU+1); +#endif + // init cpu timer +// bl_cpu_timer_init(CPU_TIMER_SETTING); +#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) + if (!isSMP || !No_CPU) +#else + if (!isSMP) +#endif + { +#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) + debug_msg_var("Bin core=", isSMP+1); +#endif + bl_entry_boot(p_fdt, p_headinfo->CodeEntry); + } else { +#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) + // init cpu timer + bl_cpu_timer_init(global_timer_freq); + + bl_smp_start(p_fdt, p_headinfo->CodeEntry); + // boot u-boot and never return back to loader +#else + //bl_smp_start(p_fdt, p_headinfo->CodeEntry); + debug_err("not support smp\r\n"); +#endif + } + return 0; +} + +#if (NUTTX_SUPPORT) +_THUMB2 static int bl_boot_nuttx(unsigned char *p_fdt) +{ + DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // update headinfo as real u-boot address + HEADINFO *p_headinfo = (HEADINFO *)(p_dram_partition->nuttx_addr + BIN_INFO_OFFSET_NUTTX); + + if (bl_chk_uboot(p_dram_partition->nuttx_addr, p_headinfo->BinLength) != 0) { + return -1; + } + + // start cpu2 + if (p_dram_partition->nuttx_addr != p_headinfo->CodeEntry) { + debug_err_var("drampat-nuttx_addr ", (int)p_dram_partition->nuttx_addr); + debug_err_var("bin-nuttx_addr ", (int)p_headinfo->CodeEntry); + return -1; + } + + CPUflushWriteCache(p_headinfo->CodeEntry, p_headinfo->BinLength); + + // init cpu timer + bl_cpu_timer_init(CPU_TIMER_SETTING); + + bl_entry_boot(p_fdt, p_headinfo->CodeEntry); + // boot nuttx and never return back to loader + return 0; +} +#endif + +_THUMB2 static int bl_boot_teeos(unsigned char *p_fdt) +{ + DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // update headinfo as real u-boot address + HEADINFO *p_headinfo = (HEADINFO *)(p_dram_partition->teeos_addr + BIN_INFO_OFFSET_TEEOS); + + // update uboot addr for teeos + p_headinfo->Resv1[HEADINFO_TEEOS_RESV_IDX_UBOOT_ADDR] = p_dram_partition->uboot_addr; + + +#if 0 //do not checksum, because teeos header has removed cause checksum failed + if (bl_chk_uboot(p_dram_partition->teeos_addr, p_headinfo->BinLength) != 0) { + return -1; + } +#endif + + //flush uboot + CPUflushWriteCache(p_dram_partition->uboot_addr, p_dram_partition->uboot_size); + //flush teeos + CPUflushWriteCache(p_headinfo->CodeEntry, p_headinfo->BinLength); + + // init cpu timer + +#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) + bl_cpu_timer_init(CPU_TIMER_SETTING); + // boot core2 (after teeos is loaded) + if (HEADINFO_UBOOT(p_dram_partition)->BinCtrl & 0x00000002) { + //if SMP, trigger core2 + debug_msg("smp(tee2)\r\n"); + bl_core2_prepare(p_dram_partition, p_headinfo->CodeEntry); + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); + bl_core2_reset(); + } else { + debug_msg_var("not smp\r\n", p_headinfo->BinCtrl); + } +#endif + bl_entry_boot(p_fdt, p_headinfo->CodeEntry); + // boot teeos and never return back to loader + return 0; +} + +_THUMB2 static int bl_update_loader_flag(unsigned char *p_fdt, UINT32 uiLoaderFunc) +{ + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + + utl_memcpy(p_bininfo->boot.LdInfo_1, "LD_NVT", 6); + + p_bininfo->boot.LdCtrl2 = 0; + if (uiLoaderFunc & FUNC_UPDATE_FW) { + p_bininfo->boot.LdCtrl2 |= LDCF_UPDATE_FW; + } + if (uiLoaderFunc & FUNC_UPDATE_LOADER) { + p_bininfo->boot.LdCtrl2 |= LDCF_UPDATE_LD; + } + if (uiLoaderFunc & FUNC_RUN_CARD) { + p_bininfo->boot.LdCtrl2 |= LDCF_BOOT_CARD; + } + if (uiLoaderFunc & FUNC_RUN_FLASH) { + p_bininfo->boot.LdCtrl2 |= LDCF_BOOT_FLASH; + } + //CPUflushWriteCache((UINT32)p_bininfo, sizeof(BININFO)); + debug_msg_var("LdCtrl2", p_bininfo->boot.LdCtrl2); + + unsigned int ver; + SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + BOOTINFO *p_ld = &p_shminfo->boot; + + utl_memset(p_ld->LdInfo_1, 0, sizeof(p_ld->LdInfo_1)); + utl_memcpy(p_ld->LdInfo_1, "LD_NVT", 6); + + ver = (((LoaderInternalInfo[1] >> 28) & 0xF) << 24) | + (((LoaderInternalInfo[1] >> 24) & 0xF) << 16) | + ((LoaderInternalInfo[1] >> 16) & 0xFF); + + if (g_uiVersion == 0) { + g_uiVersion = ver; + } + + utl_memcpy(&p_ld->LdInfo_1[8], &g_uiVersion, sizeof(g_uiVersion)); + unsigned int *p_param = (unsigned int *)(&_load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[0]); + p_ld->LdPackage = p_param[3] & 0xFFFF; + p_ld->LdStorage = (p_param[3] >> 16) & 0xFF; + + return 0; +} + +// return uItron_fw_addr +_THUMB2 static unsigned int bl_process_all_in_one(UINT32 uiFwBuf, UINT32 uiFwBufSize, DRAM_PARTITION **pOut_dram_partition, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size) +{ + int er; + unsigned char *p_fdt = NULL; + DRAM_PARTITION *p_dram_partition = NULL; + //p_tmp for the case of all-in-one without fdt or uboot + unsigned char *p_tmp = (unsigned char *)(uiFwBuf + ALIGN_CEIL(uiFwBufSize, 4)); + + + // load fdt + er = bl_load_fdt_from_all_in_one((unsigned char *)uiFwBuf, uiFwBufSize, &p_fdt); + if (er == -2) { // try to load from nand + debug_msg("fdt from flash.\r\n"); + // open flash + if (bl_flash_open() != 0) { // dont move flash open outside section, consider that T without flash device. + bl_displayErrMsg("flash open failed\r\n"); + } + er = bl_load_fdt_from_flash(p_tmp, 0x2000000, &p_fdt); // dtb size less than 32MB to be safer. + if (er != 0) { + bl_displayErrMsg("load fdt failed\r\n"); + } + } + + // update loader flag + bl_update_loader_flag(p_fdt, uiLoaderFunc); + if (uiLoaderFunc & FUNC_UPDATE_FW) { + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_BIN_INFO); + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + p_bininfo->comm.Resv[5] = uiFwBuf; // COMM_FW_UPD_ADDR + p_bininfo->comm.Resv[6] = uiFwBufSize; // COMM_FW_UPD_LEN + debug_msg_var("upd_src_addr=", uiFwBuf); + debug_msg_var("upd_src_size=", uiFwBufSize); + } + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + //check loader addr is matched with loader self. + extern char _loader_exec_compres_start[]; + if (p_dram_partition->loader_addr != (UINT32)_loader_exec_compres_start) { + debug_msg_var("p_dram_partition->loader_addr", p_dram_partition->loader_addr); + debug_msg_var("_loader_exec_compres_start", (UINT32)_loader_exec_compres_start); + bl_displayErrMsg("loader addr is not match."); + } + + //when rtos boot from flash, the boot from loader directly, + //but when rtos need to burn image, the uboot is still required. + //so, any one need to burn image, uboot is always needed to boot. + //if ((uiLoaderFunc & FUNC_UPDATE_FW) || p_dram_partition->rtos_addr == 0) { + if (1) { + // always use uboot to handle all-in-one bin + if (p_dram_partition->nuttx_size == 0 && p_dram_partition->teeos_size == 0) { + // load uboot + er = bl_load_uboot_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); + if (er == -2) { // try to load from nand + debug_msg("uboot from flash.\r\n"); + // open flash + if (bl_flash_open() != 0) { // dont move flash open outside section, consider that T without flash device. + bl_displayErrMsg("flash open failed\r\n"); + } + er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load uboot failed\r\n"); + } + } + + er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); + if (er != 0) { + bl_displayErrMsg("boot uboot failed\r\n"); + } + } else if (p_dram_partition->nuttx_size) { +#if (NUTTX_SUPPORT) + // load nuttx + er = bl_load_nuttx_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); + if (er != 0) { + bl_displayErrMsg("load nuttx failed\r\n"); + } + er = bl_boot_nuttx((unsigned char *)p_dram_partition->fdt_addr); + if (er != 0) { + bl_displayErrMsg("boot nuttx failed\r\n"); + } +#else + bl_displayErrMsg("NUTTX_SUPPORT disabled\r\n"); +#endif + } else if (p_dram_partition->teeos_size) { + // load teeos + er = bl_load_teeos_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); + if (er != 0) { + bl_displayErrMsg("load teeos failed\r\n"); + } + // load uboot + er = bl_load_uboot_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); + if (er != 0) { + bl_displayErrMsg("load uboot failed\r\n"); + } + // boot teeos + er = bl_boot_teeos((unsigned char *)p_dram_partition->fdt_addr); + if (er != 0) { + bl_displayErrMsg("boot teeos failed\r\n"); + } + } + return er; + } else { + // this upgrade flow, skip uboot, boot rtos directly as T.bin + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_dram_partition->fdt_addr, MODELEXT_TYPE_BIN_INFO); + + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + + *pOut_dram_partition = p_dram_partition; + er = bl_load_rtos_from_all_in_one(p_fdt, (unsigned char *)uiFwBuf, uiFwBufSize); + if (er != 0) { + bl_displayErrMsg("boot rtos failed\r\n"); + } + + // add LDCF_BOOT_CARD to force rtos run as T.bin + p_bininfo->boot.LdCtrl2 |= LDCF_BOOT_CARD; + return p_dram_partition->rtos_addr; + } +} +#endif + +// return uItron_fw_addr, no need to fully decode +_THUMB2 static unsigned int bl_process_rtos_only(UINT32 uiFwBuf, UINT32 uiFwBufSize, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size) +{ + UINT32 uItron_fw_addr; + NVTPACK_BFC_HDR *pBFC; + HEADINFO *p_headinfo; + + debug_msg("\r\nbl_process_rtos_only\r\n"); + pBFC = (NVTPACK_BFC_HDR *)uiFwBuf; + if (pBFC->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + UINT32 compressSize; + unsigned char *p_tmp = (unsigned char *)(uiFwBuf + ALIGN_CEIL(uiFwBufSize, 4)); + LZ_Uncompress((UINT8 *)uiFwBuf + LDC_HEADER_SIZE, p_tmp, SIZE_PRELOAD); + p_headinfo = (HEADINFO *)(p_tmp + BIN_INFO_OFFSET_RTOS); + uItron_fw_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; +#if UITRON_FW + uItron_fw_addr = p_headinfo->CodeEntry - CODE_ENTRY_OFFSET; // cliff +#endif + + if ((uItron_fw_addr & 0x0000FFFF) != 0) { //cc engine's limitation + debug_err_var("rtos addr must match (&0x0000FFFF)==0", uItron_fw_addr); // but 660 allow + uItron_fw_addr = uItron_fw_addr & 0xFFFF0000; + } + compressSize = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); + //debug_dump_addr(tmpBuf,0x200); + debug_msg_var("F compress uItron_fw_addr", uItron_fw_addr); + // uiFwBuf has adjusted on bl_load_rtos_from_non_nvtpack() + *p_comp_addr = uiFwBuf; + *p_comp_size = compressSize; + } else { + p_headinfo = (HEADINFO *)(uiFwBuf + BIN_INFO_OFFSET_RTOS); + uItron_fw_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; +#if UITRON_FW + uItron_fw_addr = p_headinfo->CodeEntry - CODE_ENTRY_OFFSET; // cliff +#endif + + if ((uItron_fw_addr & 0x0000FFFF) != 0) { //cc engine's limitation + debug_err_var("rtos addr must match (&0x0000FFFF)==0", uItron_fw_addr); // but 660 allow + uItron_fw_addr = uItron_fw_addr & 0xFFFF0000; + } + + debug_msg_var("Normal uItron_fw_addr", uItron_fw_addr); + *p_comp_addr = 0; + *p_comp_size = 0; + } + return uItron_fw_addr; +} +#if !UPDATE_EMU_CODE && !REMOVED_FLASH +_THUMB2 static unsigned int bl_process_flash_boot(unsigned char *p_tmp, DRAM_PARTITION **pOut_dram_partition, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size) +{ + int er; + unsigned char *p_fdt = NULL; + DRAM_PARTITION *p_dram_partition = NULL; + + // open flash + if (bl_flash_open() != 0) { + bl_displayErrMsg("flash open failed\r\n"); + } + + // load fdt + er = bl_load_fdt_from_flash(p_tmp, SDRAM_Start_FW, &p_fdt); // dtb size less than 32MB to be safer. + if (er != 0) { + bl_displayErrMsg("load fdt failed\r\n"); + } + + // update loader flag + bl_update_loader_flag(p_fdt, uiLoaderFunc); + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition->teeos_size) { + // load teeos + er = bl_load_teeos_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load teeos failed\r\n"); + } + // load uboot + er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load uboot failed\r\n"); + } + // boot teeos + er = bl_boot_teeos((unsigned char *)p_dram_partition->fdt_addr); + if (er != 0) { + bl_displayErrMsg("boot teeos failed\r\n"); + } + } else if (p_dram_partition->rtos_addr == 0) { + // load uboot + er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load uboot failed\r\n"); + } + + // boot uboot + er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); + if (er != 0) { + bl_displayErrMsg("boot uboot failed\r\n"); + } + } else { + // load rtos + er = bl_load_rtos_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load rtos failed\r\n"); + } + } + + // update compressed rtos information + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((unsigned char *)p_dram_partition->fdt_addr, MODELEXT_TYPE_BIN_INFO); + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + *p_comp_addr = p_bininfo->comm.Resv[3]; // COMM_UITRON_COMP_ADDR + *p_comp_size = p_bininfo->comm.Resv[4]; // COMM_UITRON_COMP_LEN + + *pOut_dram_partition = p_dram_partition; + return p_dram_partition->rtos_addr; +} +#endif + +/** + bl_process_update_loader. + + Write loader will update loader binary file + + @param[in] loader_addr loader in DRAM starting address + @param[in] loader_size loader code length (from loader header offset 0x24) + @return void +*/ +_THUMB2 static int bl_process_update_loader(unsigned int loader_addr, unsigned int loader_size) +{ + unsigned int reload_addr; + + // Check boot loader read from SD card + if(is_secure_enable() == 0) { + +#if ((STORAGE_EXT_TYPE == STORAGE_EXT_ETH)|(STORAGE_EXT_TYPE == STORAGE_EXT_USB)) + UINT32 uiOffset; + uiOffset = *((UINT32 *)(loader_addr + 0x80)); + if(uiOffset) {//Combo loader + if(*(UINT32*)0xF00100F0 == 0x50210000) { + debug_msg("combo loader 528\r\n"); + bl_checkLoader(loader_addr+uiOffset, COMBINATION_LOADER_SIZE - uiOffset); //check 528 + } else{ + debug_msg("combo loader 52X\r\n"); + bl_checkLoader(loader_addr, loader_size); //check 52x + } + }else + bl_checkLoader(loader_addr, loader_size); +#else +#if (LOADER_TYPE == COMBINATION_528) + debug_msg("CB8\r\n"); + bl_checkLoader(loader_addr + loader_size, (COMBINATION_LOADER_SIZE - loader_size)); +#else //STAND_ALONE_LOADER or combination 52x loader + //debug_msg("STD\r\n"); + bl_checkLoader(loader_addr, loader_size); +#endif +#endif + } + debug_msg("update loader\r\n"); + + // open flash + if (bl_flash_open() != 0) { + bl_displayErrMsg("flash open failed\r\n"); + } + + // Program loader +#if ((STORAGE_EXT_TYPE == STORAGE_EXT_ETH)|(STORAGE_EXT_TYPE == STORAGE_EXT_USB)) + UINT32 uiOffset; + uiOffset = *((UINT32 *)(loader_addr + 0x80)); + if(uiOffset) //Combo loader + loader_size = COMBINATION_LOADER_SIZE; + //If single loader , it already got +#else +#if (LOADER_TYPE == STAND_ALONE_LOADER_52x) || (LOADER_TYPE == STAND_ALONE_LOADER_528) +#else //Combination loader + loader_size = COMBINATION_LOADER_SIZE; +#endif +#endif + if (int_strg_obj->flash_writeSectors(StartNandBlkUpdateLoader, loader_size, (UINT8 *)loader_addr, NAND_RW_LOADER) < 0) { + USB_SET_RESULT(USB_RESULT_LOADER_FAIL_FW_FAIL); + bl_displayErrMsg(RWErrorMsg); + } + // Read back + reload_addr = loader_addr + loader_size; + if (int_strg_obj->flash_readSectors(StartNandBlkUpdateLoader, loader_size, (UINT8 *)reload_addr, NAND_RW_LOADER) < 0) { + USB_SET_RESULT(USB_RESULT_LOADER_INVALIE_FW_FAIL); + bl_displayErrMsg("rd fail\r\n"); + } + // Verify + if (memcmp((void *)loader_addr, (void *)reload_addr, loader_size) != 0) { + USB_SET_RESULT(USB_RESULT_LOADER_INVALIE_FW_FAIL); + bl_displayErrMsg("verify fail\r\n"); + } + return 0; +} +#if UPDATE_EMU_CODE +_THUMB2 static int bl_process_update_emu_firmware(unsigned int emu_addr, unsigned int emu_size) +{ + unsigned int reload_addr; + + // Check boot loader read from SD card +// bl_checkFW(emu_addr, emu_size); + debug_msg("update emu firmware size"); + uart_putSystemUARTStr(Dec2HexStr(emu_size)); + uart_putSystemUARTStr("\r\n"); + + // open flash + if (bl_flash_open() != 0) { + bl_displayErrMsg("flash open failed\r\n"); + } + + // Program firmware + if (int_strg_obj->flash_writeSectors(g_uiStartBlkUpdateFW, emu_size, (UINT8 *)emu_addr, NAND_RW_FIRMWARE) < 0) { + USB_SET_RESULT(USB_RESULT_LOADER_OK_FW_FAIL); + bl_displayErrMsg(RWErrorMsg); + } + // Read back + reload_addr = emu_addr + emu_size; + if (int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW, emu_size, (UINT8 *)reload_addr, NAND_RW_FIRMWARE) < 0) { + USB_SET_RESULT(USB_RESULT_LOADER_OK_FW_FAIL); + bl_displayErrMsg("rd fail\r\n"); + } + // Verify + if (memcmp((void *)emu_addr, (void *)reload_addr, emu_size) != 0) { + USB_SET_RESULT(USB_RESULT_LOADER_INVALIE_FW_FAIL); + bl_displayErrMsg("verify fail\r\n"); + } + return 0; +} +#endif + +_THUMB2 void bl_read_rtos_addr(UINT32 *pLoadAddr, UINT32 *pTargetAddr, UINT32 *pSize) +{ + *pLoadAddr = g_rtos_load_addr; + *pTargetAddr = g_rtos_target_addr; + *pSize = g_rtos_size; +} + +/** + main flow code + + If there is Calibration Firmware code store in NAND, running flow as follow + O's work flow + + @return fw base addr +*/ + +_THUMB2 UINT32 bl_mainFlow(void) +{ + UINT32 uiUpdateFileLen = 0; + UINT32 uiLoaderFunc = 0; + UINT32 uiLoaderSize = 32 * 1024; // pre-assume 32KB, actual size is parsed from loader + //Show Duty calibration log +#if (_LOADER_DUTY_CALIBRATION_ == ENABLE && _LOADER_DUTY_CALIBRATION_LOG_ == ENABLE) + UINT32 uiLoaderAddress; + UINT32 uiLogSramAddress; +#endif + unsigned int adjusted_addr = 0; + unsigned int adjusted_size = 0; + UINT32 uiFwBaseAddr = SDRAM_Start_FW; // FW base address + DRAM_PARTITION *p_dram_partition = NULL; + + // BaseOfStack is initialized at doRemapLZ.s + UINT32 uiheapBufferAddr = (UINT32)_loader_heap_base; +// UINT32 uiheapBufferAddr = BaseOfStack + 0x40000; // reserve 16KB for tmp buffer usage + UINT32 uiTmpBufferAddr = uiheapBufferAddr + FAT_HEAP_BUFFER_SIZE; + UINT32 uiUpdateBootloaderBufAddr = uiTmpBufferAddr + 0x4000; + UINT32 uiUpdateMainBinBufAddr = SDRAM_Start_FW; + + // UART initial sequence + //uart_openSystemUART(); + // rtc reset shutdown timer + // rtc_resetShutDownTimer(); + + + + +#if 0 + // adjust PAD driving (if required) + bl_adjustDriving(); + /* + - @b RTC_PWR_SW_STS: Power on source is PWR_SW + - @b RTC_PWR_VBAT_STS: Power on source is PWR_VBAT + - @b RTC_PWR_VBUS_STS: Power on source is PWR_VBUS + */ + uiPowerOnSrc = rtc_getPWRONSource(); + + if (uiPowerOnSrc & RTC_PWR_SW_STS) { + uart_putSystemUARTStr("\r\nSW PON\r\n"); + } else if (uiPowerOnSrc & RTC_PWR_VBAT_STS) { + uart_putSystemUARTStr("\r\nVBAT PON\r\n"); + } else if (uiPowerOnSrc & RTC_PWR_VBUS_STS) { + uart_putSystemUARTStr("\r\nVBUS PON\r\n"); + } else if (rtc_getIsAlarmPowerOn()) { + uart_putSystemUARTStr("\r\nPwrAlarm PON\r\n"); + } else { + uart_putSystemUARTStr("\r\nPOR PON\r\n"); + } +#endif + // Display Loader Version + debug_msg((char *)LOADER_START_STR); + UTL_setDrvTmpBufferAddress(uiTmpBufferAddr); + + +#if 0 // for now, reduce code size + if (rtc_chkS3boot()) { + UINT32 resume_addr; + + uart_putSystemUARTStr("main selfing..\r\n"); + resume_addr = bl_resume_cpu1((unsigned char *)_BOARD_IPC_ADDR_); + if (resume_addr == 0) { + // in codition for MODELEXT_BUILT_IN_ON + resume_addr = RESUME_ADDR; + } + return resume_addr; + } else { + + uart_putSystemUARTStr("main not selfing..\r\n"); + } +#endif + +#if 0 + // Sample to hook spi flash extending function + flash_installIdentifyCB(bl_spiIdentify); +#endif + prj_main(); + +//#if !USB_WRITELOADER +#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) + set_usb_suspend(); + + if (bl_load_rtos_from_uart(uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH, &adjusted_addr, &adjusted_size) == 0) { + //specail case, load small rtos from uart + uiUpdateMainBinBufAddr = adjusted_addr; + uiUpdateFileLen = adjusted_size; + uiLoaderFunc |= FUNC_RUN_CARD; + } else if ((int_strg_obj->flash_getBlockSize() == EMMC_BLOCK_SIZE) && gRecoveryTriggerCallBack && gRecoveryTriggerCallBack()) { + debug_msg("Recovery triggered not support currently.\r\n"); +#if 0 + // open flash + if (bl_flash_open() != 0) { + bl_displayErrMsg("flash open failed\r\n"); + } else { + flash_mount_fs(0, BaseOfStack + 0x4000, FAT_HEAP_BUFFER_SIZE); + if (flash_mount_partition(g_uiPartitionID) == E_OK) { + if (flash_open_file(RECOVERY_FW_NAME) == TRUE) { + NVTPACK_MEM mem_in ; + flash_read_file((UINT8 *)uiUpdateMainBinBufAddr, SIZE_PRELOAD); + mem_in.p_data = (void *)uiUpdateMainBinBufAddr; + mem_in.len = uiUpdateFileLen; + // all in one bin + if (bl_chk_valid_all_in_one(&mem_in) == 0) { + // Read all + uiUpdateFileLen = flash_read_file((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); + uiLoaderFunc |= FUNC_UPDATE_FW; + g_is_recovery_triggered = TRUE; + } else { + debug_msg("Recovery should be all in one bin!\r\n"); + } + } else { + debug_msg("no recovery bin!\r\n"); + } + } else { + debug_msg("Partition error!\r\n"); + } + } +#endif + } else if (((gSpecialKeyCallBack == NULL) || gSpecialKeyCallBack()) && + ((gCardDetectCallBack == NULL) || gCardDetectCallBack())) { + if (card_open() == TRUE && fat_initFAT(uiheapBufferAddr, FAT_HEAP_BUFFER_SIZE) == TRUE) { +#if UPDATE_SIM_CODE + BOOL bWDTInit = UTL_canUpdateSecKey(); + if (bWDTInit && fat_open_rootfile(RUN_WRKEY_NAME) == TRUE) { + debug_msg("sim.bin exist\r\n"); // the others A or T are skipped. + // Read byte count specified in file directory entry + uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); + fat_close_rootfile(); + debug_msg("\r\n"); // for line end RRRRRRR.... + uiLoaderFunc |= FUNC_RUN_WRBIN; + } else { // exclude others update if FUNC_RUN_WRBIN is existing. +#endif + // Update loader or not, loader is fixed to 16 KB + if (fat_open_rootfile(UPDATE_LOADER_NAME) == TRUE) { + // Read byte count specified in file directory entry + fat_read_rootfile((UINT8 *)uiUpdateBootloaderBufAddr, FAT_READ_TOTAL_FILE_LENGTH); + fat_close_rootfile(); + debug_msg("\r\n"); // for line end RRRRRRR.... + uiLoaderFunc |= FUNC_UPDATE_LOADER; + uiLoaderSize = *((UINT32 *)(uiUpdateBootloaderBufAddr + 0x24)); + } + // "Update FW" or "Run FW" function + // Update FW has higher priority + if (fat_open_rootfile(UPDATE_FW_NAME) == TRUE) { + NVTPACK_MEM mem_in ; + fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, SIZE_PRELOAD); + mem_in.p_data = (void *)uiUpdateMainBinBufAddr; + mem_in.len = uiUpdateFileLen; + // all in one bin + if (bl_chk_valid_all_in_one(&mem_in) == 0) { + // Read all + uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); + uiLoaderFunc |= FUNC_UPDATE_FW; + } else { + // only rtos + debug_msg("not all-in-one, force behavior as T bin.\r\n"); + adjusted_addr = 0; + adjusted_size = 0; + if (bl_load_rtos_from_non_nvtpack(uiUpdateMainBinBufAddr, uiUpdateFileLen, &adjusted_addr, &adjusted_size) == 0) { + uiFwBaseAddr = adjusted_addr; //fix compressed fit bl_checkDramScanFW() after copy its to temp area, see commit log + uiUpdateFileLen = adjusted_size; + } else { + bl_displayErrMsg("invalid firmware"); + } +#if UPDATE_EMU_CODE + uiLoaderFunc |= FUNC_UPDATE_FW; +#else + uiLoaderFunc |= FUNC_RUN_CARD; +#endif + + } + fat_close_rootfile(); + debug_msg("\r\n"); // for line end RRRRRRR.... + } + // Run FW has lower priority + else if (fat_open_rootfile(RUN_FW_NAME) == TRUE) { + NVTPACK_MEM mem_in ; + uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, SIZE_PRELOAD); + mem_in.p_data = (void *)uiUpdateMainBinBufAddr; + mem_in.len = uiUpdateFileLen; + if (bl_chk_valid_all_in_one(&mem_in) == 0) { + // Read all + uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); + } else { + // Read rtos + unsigned int adjusted_addr = 0; + unsigned int adjusted_size = 0; + if (bl_load_rtos_from_non_nvtpack(uiUpdateMainBinBufAddr, uiUpdateFileLen, &adjusted_addr, &adjusted_size) != 0) { + bl_displayErrMsg("invalid firmware"); + } else { + uiFwBaseAddr = adjusted_addr; //fix compressed fit bl_checkDramScanFW() after copy its to temp area, see commit log + uiUpdateFileLen = adjusted_size; + } + uiLoaderFunc |= FUNC_RUN_CARD; + } + fat_close_rootfile(); + debug_msg("\r\n"); // for line end RRRRRRR.... + uiLoaderFunc |= FUNC_RUN_CARD; + } +#if UPDATE_SIM_CODE + } +#endif + card_close(); + } else { + debug_msg("card open fail\r\n"); +// while (1); + } + } else if (((gSpecialKeyCallBack == NULL) || gSpecialKeyCallBack()) && + ((gCardDetectCallBack != NULL) || (gCardDetectCallBack() == FALSE))) { + debug_msg("No card inserted\r\n"); + } +#else +// Boot from USB + { + UINT32 *pCfgBuf; + + // Clear UPDATE_CFG buffer + pCfgBuf = (UINT32 *)(UPDATE_CFG_BUFADDR + UPDATE_CFG_LOADER_OFS); + pCfgBuf[UPDATE_CFG_TAG] = 0; + pCfgBuf = (UINT32 *)(UPDATE_CFG_BUFADDR + UPDATE_CFG_FW_OFS); + pCfgBuf[UPDATE_CFG_TAG] = 0; + + CPUCleanInvalidateDCacheAll(); + + uart_putSystemUARTStr("Download from USB.\r\n"); + USBDownload(); + + CPUCleanInvalidateDCacheAll(); + + pCfgBuf = (UINT32 *)(UPDATE_CFG_BUFADDR + UPDATE_CFG_LOADER_OFS); + if ((pCfgBuf[UPDATE_CFG_TAG] == UPDATE_CFG_TAGCODE) && (pCfgBuf[UPDATE_CFG_ITEM] == UPDATE_CFG_ITEM_LD)) { + uiLoaderFunc |= FUNC_UPDATE_LOADER; + uiUpdateBootloaderBufAddr = pCfgBuf[UPDATE_CFG_ADDR]; + + // loader size from loader content + uiLoaderSize = *((UINT32 *)(uiUpdateBootloaderBufAddr + 0x24)); + + uart_putSystemUARTStr("Update Loader Flag OK.\r\n"); + } + + pCfgBuf = (UINT32 *)(UPDATE_CFG_BUFADDR + UPDATE_CFG_FW_OFS); + if ((pCfgBuf[UPDATE_CFG_TAG] == UPDATE_CFG_TAGCODE) && (pCfgBuf[UPDATE_CFG_ITEM] == UPDATE_CFG_ITEM_FW)) { + NVTPACK_MEM mem_in ; + + if ((pCfgBuf[UPDATE_CFG_ADDR]) != SDRAM_Start_FW) { + uart_putSystemUARTStr("ERROR: NvtUSBD.ini 's FW_ADDR must config to 0x02000000\r\n"); + while (1); + } + + uiUpdateFileLen = pCfgBuf[UPDATE_CFG_LEN]; + + mem_in.p_data = (void *)pCfgBuf[UPDATE_CFG_ADDR]; + mem_in.len = uiUpdateFileLen; + + // all in one bin + if (bl_chk_valid_all_in_one(&mem_in) == 0) { + // Read all + uiLoaderFunc |= FUNC_UPDATE_FW; + } else { + // only rtos + debug_msg("not all-in-one, force behavior as T bin.\r\n"); + adjusted_addr = 0; + adjusted_size = 0; + if (bl_load_rtos_from_usb_raw(uiUpdateMainBinBufAddr, uiUpdateFileLen, &adjusted_addr, &adjusted_size) != 0) { + bl_displayErrMsg("invalid firmware"); + } else { + uiFwBaseAddr = adjusted_addr; //fix compressed fit bl_checkDramScanFW() after copy its to temp area, see commit log + uiUpdateMainBinBufAddr = adjusted_addr; + uiUpdateFileLen = adjusted_size; + } + uiLoaderFunc |= FUNC_RUN_CARD; + } + + uart_putSystemUARTStr("Update Firmware Flag OK.\r\n"); + USB_SET_RESULT(USB_RESULT_LOADER_OK_FW_OK); // pre-assume update is OK + } + } +#endif + + if (uiLoaderFunc & FUNC_UPDATE_LOADER) { + bl_process_update_loader(uiUpdateBootloaderBufAddr, uiLoaderSize); + } + + // Run FW + UINT32 comp_addr = 0; + UINT32 comp_size = 0; + if (uiLoaderFunc & (FUNC_RUN_CARD | FUNC_UPDATE_FW)) { + debug_msg("RC\r\n"); + NVTPACK_MEM mem_in ; + int chk_valid_all_in_one; +#if (DRAM_RANGE_SCAN_EN == ENABLE) + // First word is code entry point address, once if entry address is 0xC000XXXX + // represent code is running on sram. + debug_msg("Check SRAM fw\r\n"); + if (bl_checkDramScanFW(uiUpdateMainBinBufAddr) == TRUE) { + + debug_msg("This fw is on SRAM\r\n"); + // Enable sram usage + SETREG32(0xF0900128, 0x00000002); + SETREG32(0xF0800128, 0x00000006); + SETREG32(0xF0020060, 0x00030002); + + debug_msg(Dec2HexStr(*((UINT32 *)SRAM_Start_FW))); + debug_msg("before jump\r\n"); +// while (b_debug_go == FALSE); + load_dram_scan(uiUpdateMainBinBufAddr, uiUpdateFileLen); + return *((UINT32 *)SRAM_Start_FW); + } +#endif + mem_in.p_data = (void *)uiUpdateMainBinBufAddr; + mem_in.len = uiUpdateFileLen; + chk_valid_all_in_one = bl_chk_valid_all_in_one(&mem_in); + if (chk_valid_all_in_one == 0) { + // all-in-one flow + // File len got from fat_read_rootfile() may exceed actual file size. + // In such condition, we should use info in NVTPACK_FW_HDR2 + if (((NVTPACK_FW_HDR2 *)uiUpdateMainBinBufAddr)->TotalSize < uiUpdateFileLen) { + uiUpdateFileLen = ((NVTPACK_FW_HDR2 *)uiUpdateMainBinBufAddr)->TotalSize; + mem_in.len = uiUpdateFileLen; + } +#if (REMOVED_FLASH == ENABLE) + bl_displayErrMsg("cannot process all-in-one fw"); +#else + uiFwBaseAddr = bl_process_all_in_one(uiUpdateMainBinBufAddr, uiUpdateFileLen, &p_dram_partition, uiLoaderFunc, &comp_addr, &comp_size); +#endif + } else { + // non-all-in-one flow + // check valid + if (uiLoaderFunc & FUNC_UPDATE_FW) { +#if UPDATE_EMU_CODE + bl_process_update_emu_firmware(uiUpdateMainBinBufAddr, uiUpdateFileLen); +#else + USB_SET_RESULT(USB_RESULT_LOADER_OK_FW_FAIL); + bl_displayErrMsg("cannot write non-all-in-one fw"); +#endif + } + uiFwBaseAddr = bl_process_rtos_only(uiUpdateMainBinBufAddr, mem_in.len, uiLoaderFunc, &comp_addr, &comp_size); + } + + // here uiFwBaseAddr is ready to use. + if (comp_addr == 0) { + HEADINFO *p_headinfo = (HEADINFO *)(uiFwBaseAddr + BIN_INFO_OFFSET_RTOS); + debug_msg("Nrml\r\n"); + if (chk_valid_all_in_one == 0) { + uiUpdateFileLen = p_headinfo->BinLength; + uiUpdateMainBinBufAddr = uiFwBaseAddr; + } else { + // uiUpdateFileLen is already set when file is loaded + } + } else { + debug_msg("Fcompress\r\n"); + //for speed up, u-boot only copy compressed rtos and loader needs to decode it + uiUpdateFileLen = bl_decompress_rtos(comp_addr, comp_size, uiFwBaseAddr); + uiUpdateMainBinBufAddr = uiFwBaseAddr; + } + debug_msg_var("uiUpdateFileLen", uiUpdateFileLen); + //boot from flash or update fw is no need to check sanity because of ecc, turn on it just for debug + if (uiLoaderFunc & FUNC_RUN_CARD) { + bl_checkFW(uiUpdateMainBinBufAddr, uiUpdateFileLen); + } + if (chk_valid_all_in_one == 0) { + bl_update_uItron_headInfo(uiFwBaseAddr, p_dram_partition); + } else { + debug_msg_var("fw load addr", uiUpdateMainBinBufAddr); + bl_update_uItron_headInfo(uiUpdateMainBinBufAddr, p_dram_partition); + } + } else { //boot from flash +#if (REMOVED_FLASH == DISABLE) +#if UPDATE_EMU_CODE +// UINT32 uiNandBlkSize; + // open flash + if (bl_flash_open() != 0) { + bl_displayErrMsg("flash open failed\r\n"); + } + debug_msg("RFlash\r\n"); + if (int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW, g_uiNandBlkSize, (UINT8 *)SDRAM_Start_FW, NAND_RW_FIRMWARE) < 0) { + bl_displayErrMsg(RWErrorMsg); + } + + uiUpdateFileLen = *(volatile UINT32 *)(SDRAM_Start_FW + 0x168); + + if (int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW + 1, uiUpdateFileLen - g_uiNandBlkSize, (UINT8 *)(SDRAM_Start_FW + g_uiNandBlkSize), NAND_RW_FIRMWARE) < 0) { + bl_displayErrMsg(RWErrorMsg); + } + + uiFwBaseAddr = bl_process_rtos_only(SDRAM_Start_FW, uiUpdateFileLen, uiLoaderFunc, &comp_addr, &comp_size); + bl_checkFW(SDRAM_Start_FW, uiUpdateFileLen); + uiUpdateMainBinBufAddr = SDRAM_Start_FW; + if (comp_addr == 0) { + debug_msg("Nrml\r\n"); + } else { + debug_msg("Fcompress not support\r\n"); + } + +#else + uiFwBaseAddr = bl_process_flash_boot((UINT8 *)SDRAM_Start_FW, &p_dram_partition, uiLoaderFunc, &comp_addr, &comp_size); + if (comp_addr == 0) { + uiUpdateMainBinBufAddr = uiFwBaseAddr; + } else { + //for speed up, u-boot only copy compressed rtos and loader needs to decode it + uiUpdateFileLen = bl_decompress_rtos(comp_addr, comp_size, uiFwBaseAddr); + uiUpdateMainBinBufAddr = uiFwBaseAddr; + } + // no need to bl_checkFW, because check sanity in flash_read + bl_update_uItron_headInfo(uiFwBaseAddr, p_dram_partition); +#endif +#endif + } + + if (p_dram_partition) { + bl_update_loader_bininfo((unsigned char *)p_dram_partition->fdt_addr, uiLoaderFunc, uiUpdateFileLen); + } + +#if (STORAGE_EXT_TYPE == STORAGE_EXT_USB) + USBStateMachine(); + uart_putSystemUARTStr("USB update Done\n\r"); + timer_delay(1000000); + USBOTGReset(); +#endif +#if UPDATE_EMU_CODE + debug_msg_var("emu fw len", uiUpdateFileLen); +#endif + g_rtos_load_addr = uiUpdateMainBinBufAddr; + g_rtos_target_addr = uiFwBaseAddr; + g_rtos_size = uiUpdateFileLen; + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); + debug_msg_var("rtos start", uiFwBaseAddr); + return uiFwBaseAddr; + +} + +_THUMB2 void loader_setUpdateFwName(char *fileName) +{ + strncpy((char *)UPDATE_FW_NAME, fileName, sizeof(UPDATE_FW_NAME)); +} + +_THUMB2 void loader_setUpdateLdrName(char *fileName) +{ + strncpy((char *)UPDATE_LOADER_NAME, fileName, sizeof(UPDATE_LOADER_NAME)); +} + +_THUMB2 void loader_setRunFwName(char *fileName) +{ + strncpy((char *)RUN_FW_NAME, fileName, sizeof(RUN_FW_NAME)); +} + +_THUMB2 void loader_setRecoveryFwName(char *fileName) +{ + strncpy((char *)RECOVERY_FW_NAME, fileName, sizeof(RECOVERY_FW_NAME)); +} + +_THUMB2 void loader_setRecoveryPartitionID(UINT32 partition_id) +{ + g_uiPartitionID = partition_id; +} + +_THUMB2 void loader_setVersion(UINT32 version) +{ + g_uiVersion = version; +} + +_THUMB2 void loader_installSpecialKeyCB(LDR_SPECIAL_KEY_CB callback) +{ + gSpecialKeyCallBack = callback; +} + +_THUMB2 void loader_installCardDetectCB(LDR_CARD_DETECT_CB callback) +{ + gCardDetectCallBack = callback; +} + +_THUMB2 void loader_installRecoveryTriggerCB(LDR_RECOVERY_TRIGGER_CB callback) +{ + gRecoveryTriggerCallBack = callback; +} + +_THUMB2 void loader_setStorageIntType(STORAGEINT type, PSTORAGE_OBJ strg_obj) +{ + gStorageIntType = type; + int_strg_obj = strg_obj; +} diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h new file mode 100755 index 000000000000..143d6b104bf1 --- /dev/null +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h @@ -0,0 +1,297 @@ +/** + @file bl_func.h + @brief Header file for main function + + Copyright Novatek Microelectronics Corp. 2014. All rights reserved. +*/ +#ifndef _BL_MAIN_H +#define _BL_MAIN_H + +#include "main.h" +#include "IOReg.h" +#include "GPIO.h" + +//------------------------------------------------------------------------------ +// Compiler option +// +// These compiler option are define in MakeConfig.txt +//!!!!!!!!!!!!!!!!!!! DO NOT MODIFY COMPILER OPTION HERE !!!!!!!!!!!!!!!!!!!! +//------------------------------------------------------------------------------ +#ifndef SECURE_DECRYPT_UBOOT +#define SECURE_DECRYPT_UBOOT 0 //Decrypt uboot sample code +#endif //Option move to ModelConfig_EMU_EVB_XXX.txt + +#ifndef SECURE_DECRYPT_OPTEE_OS +#define SECURE_DECRYPT_OPTEE_OS 0 //Decrypt optee_os sample code +#endif //Option move to ModelConfig_EMU_EVB_XXX.txt +#ifndef SECURE_SIGNATURE_BY_AES +#define SECURE_SIGNATURE_BY_AES 0 //using aes to decrypt signature +#endif //Option move to ModelConfig_EMU_EVB_XXX.txt + + +#if (SECURE_DECRYPT_UBOOT || SECURE_DECRYPT_OPTEE_OS) +#define SECURE_OFFSET 1024 //Decrypt uboot from which offset +#endif + +// Define LED_FUNCTION == ENABLE will enable LED on/off in boot loader +#define LED_FUNCTION ENABLE//DISABLE + +// FW checking method, support checksum & CRC now +//#define FW_CHECK_NOCHECK 0 +//#define FW_CHECK_CHECKSUM 1 +//#define FW_CHECK_CRC 2 +#ifndef FW_CHECK_METHOD +#define FW_CHECK_METHOD FW_CHECK_CHECKSUM +#endif + +///#define FW_CHECK_INSTRUCTION0 0xE59FF018 + +// Optional pseudo string for checksum & CRC checking +#define FW_CHECK_PSEUDO_STR_EN DISABLE +#if (FW_CHECK_PSEUDO_STR_EN == ENABLE) + // Must sync to MakeConfig.txt + #define FW_CHECK_PSEUDO_STR "DSC_FW" +#endif + +// Determine if need to support compressable main code +#ifndef _MAINCODE_COMPRESS_ +#define _MAINCODE_COMPRESS_ 0 +#endif + +#ifndef STORAGEINT_SPI +#define STORAGEINT_SPI 0 +#endif + +//#NT#2011/06/30#Steven Wang -begin +//#NT#NTK self test flow enable / disable +#define FW_EXCEED_16MB_TEST DISABLE +//#NT#2011/06/30#Steven Wang -end + +//------------------------------------------------------------------------------ +// Global definition +//------------------------------------------------------------------------------ +#define LOADER_CODE_SIZE 0x8000 // Reserve 32 KB +//#NT#2011/06/10#Scottie -begin +//#NT#Remove, modify the mechanism of recording FW_CODE_SIZE & CALFW_CODE_SIZE + +#define RESERVED_DATA_SIZE 0x4000 // Fixed to 16 KB + +//#NT#2011/06/10#Scottie -end + +//Once if optee exist need modify to 0x08000000 +//#define SDRAM_Start_FW 0x08000000 // DRAM uITRON starting address +#define SDRAM_Start_FW 0x02000000 // DRAM uITRON starting address +//#endif + +#define SRAM_Start_FW 0xF07c0000 // SRAM FW starting address + +#define SRAM_TAG 0xF0000000 // SRAM tag + +#define CORE2_JUMP_ADDR 0x00000000 // Core2 entry code should put on 0, because when core2 reset is released, core2 will jump to 0 and run + +#define CPU_TIMER_SETTING 0x00B71B00 //0x016E3600 + +#define _BOARD_IPC_ADDR_ 0x00002000 // must be the same with BOARD_IPC_ADDR on ModelConfig. + + +#define UPDATE_CFG_BUFADDR 0x05000000 +#define UPDATE_CFG_TAGCODE 0xABCD0043 +#define UPDATE_CFG_LOADER_OFS 0x00 +#define UPDATE_CFG_FW_OFS 0x10 + +#define UPDATE_CFG_ITEM_LD 0xABCD0001 +#define UPDATE_CFG_ITEM_FW 0xABCD0002 + +#define UPDATE_CFG_TAG 0 +#define UPDATE_CFG_ITEM 1 +#define UPDATE_CFG_ADDR 2 +#define UPDATE_CFG_LEN 3 + +#define USB_RESULT_LOADER_INVALID_FW_INVALID (0) +#define USB_RESULT_LOADER_INVALID_FW_OK (1) +#define USB_RESULT_LOADER_INVALIE_FW_FAIL (2) +#define USB_RESULT_LOADER_OK_FW_INVALID (3) +#define USB_RESULT_LOADER_FAIL_FW_INVALID (4) +#define USB_RESULT_LOADER_OK_FW_OK (5) +#define USB_RESULT_LOADER_FAIL_FW_OK (6) +#define USB_RESULT_LOADER_OK_FW_FAIL (7) +#define USB_RESULT_LOADER_FAIL_FW_FAIL (8) +#define USB_RESULT_OTHER (9) + +// Loader checking +#define LOADER_TAG_OFFSET 0x30 +#define LOADER_TAG_VALUE 0xAA55 + +//#NT#2011/06/30#Steven Wang -begin +//#NT#Checksum offset +///#define CHECKSUM_OFFSET 0x1C +#define CHECKSUM_TAG 0xAA55 +//#NT#2011/06/30#Steven Wang -end + +// Config table tag value (for USB flow) +#define CFG_TABLE_TAG (0x4B54564E) // 'N' 'V' 'T' 'K' + +#define COMPRESS_TAG_VALUE (0x314C4342) // use to distinguish full compressed main code + +#define SPI_FLASH_IDENTIFY (0x46495053) //'S''P''I''F' + +#define BOOTVER_SET(OutMaj,OutMin,InnMaj,InnMin) (((OutMaj)<<24)|((OutMin)<<16)|((InnMaj)<<8)|((InnMin))) + +#define BOOTVER_GETOuterMajor(Ver) (((Ver)&0xFF000000)>>24) +#define BOOTVER_GETOuterMinor(Ver) (((Ver)&0x00FF0000)>>16) +#define BOOTVER_GETInnerMajor(Ver) (((Ver)&0x0000FF00)>>8) +#define BOOTVER_GETInnerMinor(Ver) (((Ver)&0x000000FF)) + +// Define loader version (_LDR_VER_) in MakeConfig.txt +#define BOOTLOADER_OUTERMAJOR (((_LDR_VER_)&0xFF000000)>>24) +#define BOOTLOADER_OUTERMINOR (((_LDR_VER_)&0x00FF0000)>>16) +#define BOOTLOADER_INNERMAJOR (((_LDR_VER_)&0x0000FF00)>>8) +#define BOOTLOADER_INNERMINOR (((_LDR_VER_)&0x000000FF)) + +// Binary tag value +#define FW_BINARY_TAG 0xAA55544E // 'N' 'T' 0x55 0xAA + +// CAL FW size exit tag +#define CAL_SIZE_TAG 0x5A534C43 // CLSZ +// FW size exit tag +#define FW_SIZE_TAG 0x5A535746 // FWSZ + +// Reserved area FW size offset +#define RESERVED_AREA_FW_SIZE_OFFSET 0x00 +// Reserved area CAL size offset +#define RESERVED_AREA_CAL_SIZE_OFFSET 0x04 +// Reserved area FW size tag offset +#define RESERVED_AREA_FW_TAG_OFFSET 0x08 +// Reserved area CAL size tag offset +#define RESERVED_AREA_CAL_TAG_OFFSET 0x0C + +// Operation of boot loader +#define FUNC_UPDATE_FW 0x01 // Read FW code from card and update to NAND and run +#define FUNC_UPDATE_LOADER 0x02 // Read boot loader code from card and update to NAND +#define FUNC_RUN_CARD 0x04 // Read FW code from card and run +#define FUNC_RUN_FLASH 0x08 // Read FW code from internal flash and run +#define FUNC_UPDATE_CAL 0X10 // Update CAL data +#define FUNC_RUN_WRBIN 0X20 // RUN wrkey data +#define FUNC_RUN_UBOOT 0X40 // Read Uboot from card and run +#define FUNC_UPDATE_FW_DONE 0x0100 // update f/w to NAND/SPI done + +// API to turn on / off LED +#if (LED_FUNCTION == ENABLE) +// Red LED (DGPIO 6) +// Green LED (DGPIO 9) +#define TurnOff_RedLED() OUTREG32(CPE_GPIO_BASE + 0x4C, 0x00000040) +#define TurnOn_RedLED() OUTREG32(CPE_GPIO_BASE + 0x38, 0x00000040) +#define TurnOff_GreenLED() OUTREG32(CPE_GPIO_BASE + 0x4C, 0x00000200) +#define TurnOn_GreenLED() OUTREG32(CPE_GPIO_BASE + 0x38, 0x00000200) +#else +#define TurnOff_RedLED() +#define TurnOn_RedLED() +#define TurnOff_GreenLED() +#define TurnOn_GreenLED() +#endif + +//#define USB_WRITELOADER ENABLE +#define UART_UPDATE_ DISABLE +#define UPDATE_EMU_CODE DISABLE +#define REMOVED_FLASH DISABLE +#define NUTTX_SUPPORT DISABLE +#define UPDATE_SIM_CODE DISABLE +#define UITRON_FW DISABLE +#define FDT_SUPPORT ENABLE + +#define STAND_ALONE_LOADER_52x 0 +#define STAND_ALONE_LOADER_528 1 +#define COMBINATION_52x 2 +#define COMBINATION_528 3 + +#define LOADER_TYPE STAND_ALONE_LOADER_52x + +#define COMBINATION_LOADER_SIZE 0x18000 + + +#if UITRON_FW + +#define CODE_ENTRY_OFFSET (0x0) ///< code entry starting offset (660/510 is 0x400, 680 is 0x0) //cliff +#endif + +#define EMUKIT 0 +#define DEMOKIT 0x1800000 +#define RESUME_ADDR DEMOKIT + +//#NT#2018/03/07#Ben Wang -begin +//#NT#Support EMMC boot flow +#define EMMC_BLOCK_SIZE 0x200 +#define FDT_OFFSET 0x40000 +//#NT#2018/03/07#Ben Wang -end + +#if (STORAGEINT_SPI == 1) + #define StartNandBlkUpdateLoader 0 + #define StartNandBlkReserved 0 + //#NT#2012/12/17#HH Chuang -begin + //#NT#Sync spi erase unit to best access size of f/w storage object + #define StartNandBlkUpdateFW 16 + //#NT#2012/12/17#HH Chuang -end +#else + #define StartNandBlkUpdateLoader 0 + #define StartNandBlkUpdateFW 2 +#endif + +#if (FW_CHECK_METHOD == FW_CHECK_CRC) +static UINT32 g_uiCRCTable[256]; +#endif + +//Define @prj_main.h +#if 0 +// Card detect GPIO offset +#define DGPIO_CARD_DETECT (P_GPIO_17) + + +#define CHECK_CARD_EXIST (ENABLE) +#if (CHECK_CARD_EXIST == ENABLE) +// MC16 default is config as input and pull up +#define bl_checkCardExist() (gpio_getPin(DGPIO_CARD_DETECT) == 0 ? TRUE : FALSE) +#else +#define bl_checkCardExist() TRUE +#endif +#endif +/** + @name Assert macros +*/ +//@{ +#define ASSERT_CONCAT_(a, b) a##b +#define ASSERT_CONCAT(a, b) ASSERT_CONCAT_(a, b) + +#if defined(__COUNTER__) + +#define STATIC_ASSERT(expr) \ +enum { ASSERT_CONCAT(FAILED_STATIC_ASSERT_, __COUNTER__) = 1/(expr) } + +#else + +// This might cause compile error when writing STATIC_ASSERT at the same line +// in two (or more) files and one file include another one. +#define STATIC_ASSERT(expr) \ +enum { ASSERT_CONCAT(FAILED_STATIC_ASSERT_, __LINE__) = 1/(expr) } + +#endif +//@} + +//#NT#2010/05/21#Steven Wang -begin +//#NT#Check if FW size > EXEC base address +extern UINT32 _load_BOOT_EXEC_start_base; +//#NT#2010/05/21#Steven Wang -end + +extern char _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[]; + +extern UINT32 LoaderInternalInfo[]; + +//------------------------------------------------------------------------------ +// Exported functions +//------------------------------------------------------------------------------ +extern UINT32 bl_mainFlow(void); +extern UINT32 BaseOfStack; + +// project(customer) main function +extern void prj_main(void); +extern void bl_read_rtos_addr(UINT32* pLoadAddr, UINT32* pTargetAddr, UINT32* pSize); +#endif diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c new file mode 100755 index 000000000000..7d434143bf9b --- /dev/null +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c @@ -0,0 +1,136 @@ +/* + Main control function + + This file is implement by user mode + + @file main.c + + Copyright Novatek Microelectronics Corp. 2014. All rights reserved. +*/ +#include "main.h" +#include "bl_func.h" +#include "Cache.h" +#include "global.h" +#include "fuart.h" +#include "debug.h" + +extern char _loader_exec_compres_start[]; +extern char _loader_exec_compress_load_cpu_addr[]; +extern char _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[]; + +extern char _loader_data_start_base[]; +#define _THUMB2 __attribute__((target("thumb2"))) +//--------------------------------------------------------------------------- +// Static function +//--------------------------------------------------------------------------- +/* + BL_RunPartOne + + Expend loader if use compress + + @return void +*/ +_THUMB2 static void BL_RunPartOne(void) +{ +#if (_LOADER_COMPRESSED_ == ENABLE) + UINT8 *in_addr = (UINT8 *)(_loader_exec_compress_load_cpu_addr); + UINT8 *out_addr = (UINT8 *)(_loader_exec_compres_start); + UINT32 uiCompressedOutSize; + + // Get decompress size within specific header + uiCompressedOutSize = (((UINT32)*(in_addr + 12)) << 24) + + (((UINT32)*(in_addr + 13)) << 16) + + (((UINT32)*(in_addr + 14)) << 8) + + ((UINT32)*(in_addr + 15)); + + // Decompress loader image + LZ_Uncompress((unsigned char *)(in_addr + LDC_HEADER_SIZE), (unsigned char *)(out_addr), uiCompressedOutSize); + + // Need to clean data cache + CPUInvalidateICacheAll(); + CPUCleanInvalidateDCacheAll(); + debug_msg("\r\nUNZOK!"); +#else +#endif +} + +/* +void BL_PostHandle(void) +{ + UINT32 uiParamCnt; + UINT32 *pParamOffset; + UINT32 *pDramParam; + + pParamOffset = (UINT32*)(&_load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[5*4]); + pDramParam = (UINT32*)(*pParamOffset); + for (uiParamCnt=0; uiParamCnt < 7*2; uiParamCnt++) + { + OUTREG32(DDR_PARAM_LEVEL_0_ADDR + uiParamCnt*4, pDramParam[uiParamCnt]); + } + + // Disable IDE2 clock + CLRREG32(0xC0020070, 1<<17); + + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); +} +*/ +_THUMB2 UINT32 main(void) +{ + UINT32 uiReturn; + UINT32 load_addr, target_addr, uitron_size; + UINT32 i; + UINT32 *pSrc, *pDst; + // Run part one loader + // If using compressed loader, just decompress the loader image at first! + BL_RunPartOne(); + utl_dram_protect_enable((UINT32)_loader_exec_compres_start, (UINT32)(_loader_data_start_base - _loader_exec_compres_start)); + uiReturn = bl_mainFlow(); + utl_dram_protect_check(); + utl_dram_protect_disable(); + + bl_read_rtos_addr(&load_addr, &target_addr, &uitron_size); + if (load_addr != target_addr) { + uart_putSystemUARTStr("uitron target_addr= "); + PrintDec2Hex(target_addr); + uart_putSystemUARTStr("\r\n"); + uart_putSystemUARTStr("uitron load_addr= "); + PrintDec2Hex(load_addr); + uart_putSystemUARTStr("\r\n"); + uart_putSystemUARTStr("Copy from load to target by loader, this may has longer boot time\r\n"); + CPUflushReadCache(0, 128*1024); + CPUInvalidateICacheAll(); + +#if 1 + // disable MMU + { \ + __asm__ __volatile__( \ + "mrc p15, 0, r0, c1, c0, 0\n\t" \ + "bic r0, r0, #0x5\n\t" \ + "bic r0, r0, #0x1000\n\t" \ + "mcr p15, 0, r0, c1, c0, 0\n\t" \ + : \ + : \ + : "r0" \ + ); \ + } + asm volatile("dsb"); + asm volatile("isb"); + uart_putSystemUARTStr("disable MMU done\r\n"); +#endif + + pSrc = (UINT32*)load_addr; + pDst = (UINT32*)target_addr; + for (i=0; ipagesize = nvt_nand_ids[ui_nand_ids].pagesize; + pIdentify->erasesize= nvt_nand_ids[ui_nand_ids].erasesize; + pIdentify->qe_opt = nvt_nand_ids[ui_nand_ids].qe_opt; + pIdentify->plane_opt= nvt_nand_ids[ui_nand_ids].plane_opt; + nand_ids_found = TRUE; + break; + } + } + return nand_ids_found; +} diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c new file mode 100755 index 000000000000..669f4034760d --- /dev/null +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c @@ -0,0 +1,38 @@ +/* + * nand_ids.c + * + * nand id table + * + * Copyright (c) 2018 Novatek, ALL Rights Reserve + */ +#include "main.h" +#include "nor.h" +#include "constant.h" +#include "compiler.h" +#include "fuart.h" + +#define _THUMB2 __attribute__((target("thumb2"))) + + +NOR_FLASH_DEV nvt_nor_ids[] = { + // manufactor ID device id capacity id, dual read quad type flash size + SPI_ID_NOR(0xEF, 0x40, 0x18, TRUE, SPI_QUAD_TYPE2, (16<<20)), +}; + +_THUMB2 BOOL nor_identify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacityID, PSPI_IDENTIFY pIdentify) +{ + BOOL nor_ids_found = FALSE; + UINT32 ui_nor_ids; + for (ui_nor_ids = 0; ui_nor_ids < (sizeof(nvt_nor_ids) / sizeof(NOR_FLASH_DEV)); ui_nor_ids++) { + if (uiMfgID == nvt_nor_ids[ui_nor_ids].mfr_id && uiTypeID == nvt_nor_ids[ui_nor_ids].dev_id && uiCapacityID == nvt_nor_ids[ui_nor_ids].capacity_id) { + // For SPI Nor flash only + pIdentify->bDualRead = nvt_nor_ids[ui_nor_ids].bDualRead; + pIdentify->uiQuadReadType = nvt_nor_ids[ui_nor_ids].uiQuadReadType; + pIdentify->uiFlashSize = nvt_nor_ids[ui_nor_ids].uiFlashSize; + nor_ids_found = TRUE; + break; + } + } + + return nor_ids_found; +} diff --git a/board/novatek/na51055/loader/LibExt/Makefile b/board/novatek/na51055/loader/LibExt/Makefile new file mode 100755 index 000000000000..c37cab5becbe --- /dev/null +++ b/board/novatek/na51055/loader/LibExt/Makefile @@ -0,0 +1,62 @@ +include ../MakeCommon/MakeOption.txt + +ifeq "$(shell uname)" "Linux" +MAKEFILE_SEARCH := $(sort $(dir $(shell find . -name 'Makefile'))) +else +MAKEFILE_SEARCH := $(sort $(dir $(shell find . -name \'Makefile\'))) +endif +mk_all := $(filter-out ./, $(MAKEFILE_SEARCH)) + +ifeq "$(ISOLATE_DEP)" "ON" +.PHONY: all $(mk_all) clean rebuild debug release dep + +all: + @make dep + @make debug + @make release +else +.PHONY: all $(mk_all) clean rebuild debug release + +all: rm_log $(mk_all) +endif + +$(mk_all): + @$(MAKE) --directory=$@ $(MAKECMDGOALS) + +rm_log: +ifeq "$(CLEAN_LOG)" "ON" + @-rm -f log*.txt +endif + +PRJ_NAME_ALL = $(shell find -name 'Makefile' -not -path "./Makefile" -print | xargs grep "PRJ_NAME" | sed 's/[[:digit:][:alpha:][:punct:]]*:PRJ_NAME[ ]*=[ ]*//g') +LIB_R = $(addprefix "../ARC/Lib/Release/", $(addsuffix ".a", $(PRJ_NAME_ALL))) +LIB_D = $(addprefix "../ARC/Lib/Debug/", $(addsuffix "_D.a", $(PRJ_NAME_ALL))) + +clean: + @-echo Clean LibExt ... \ + && find ./ -type d -name '*_Data' | xargs rm -rf --no-preserve-root $(LIB_D) $(LIB_R) log*.txt lint*.txt + +ifeq "$(ISOLATE_DEP)" "ON" +rebuild: + @make clean + @make dep + @make debug + @make release + +dep: rm_log $(mk_all) +else +rebuild: rm_log $(mk_all) +endif + +debug: rm_log $(mk_all) + +release: rm_log $(mk_all) + +rm_lint_log: + @-rm -f lint*.txt + +lint: rm_lint_log $(mk_all) + +lintclean: + @-echo Clean LibExt lint data ... \ + && find ./ -type d -name 'CheckData' | xargs rm -rf --no-preserve-root lint*.txt \ No newline at end of file diff --git a/board/novatek/na51055/loader/MakeCommon/InputSource.txt b/board/novatek/na51055/loader/MakeCommon/InputSource.txt new file mode 100755 index 000000000000..631265678903 --- /dev/null +++ b/board/novatek/na51055/loader/MakeCommon/InputSource.txt @@ -0,0 +1,177 @@ +#---------------------------------------------------------------------- +# get the source full path, convert upper case extension to lower case +#---------------------------------------------------------------------- +ifeq "$(shell uname)" "Linux" +SRC := $(addprefix $(shell pwd)/, $(SRC:.C=.c)) +ASM := $(addprefix $(shell pwd)/, $(ASM:.s=.S)) +CPP_SRC := $(addprefix $(shell pwd)/, $(CPP_SRC:.CPP=.cpp)) +else +SRC := $(addprefix $(shell cygpath --mixed $(shell pwd))/, $(SRC:.C=.c)) +ASM := $(addprefix $(shell cygpath --mixed $(shell pwd))/, $(ASM:.s=.S)) +CPP_SRC := $(addprefix $(shell cygpath --mixed $(shell pwd))/, $(CPP_SRC:.CPP=.cpp)) +endif + +#---------------------------------------------------------------------- +# set the basic include directories +#---------------------------------------------------------------------- +# Get working directory +MYPWD := $(shell pwd) +ALG_PATH := $(findstring /Alg/, $(MYPWD)) +APP_PATH := $(findstring /App/, $(MYPWD)) +APPEXT_PATH := $(findstring /AppExt/, $(MYPWD)) +LIB_PATH := $(findstring /Lib/, $(MYPWD)) +LIBEXT_PATH := $(findstring /LibExt/, $(MYPWD)) +DRV_PATH := $(findstring /Drv/, $(MYPWD)) +DRVEXT_PATH := $(findstring /DrvExt/, $(MYPWD)) +COM_PATH := $(findstring /Common/, $(MYPWD)) +UTIL_PATH := $(findstring /Common/Common_src/Utility, $(MYPWD)) +PRJ_PATH := $(shell find ./ -maxdepth 1 -name MakeConfig.txt) + +BASE_INC_DIR := $(filter %../../Include, $(INC_DIR)) +APPEXT_INC_DIR := -I$(BASE_INC_DIR)/AppExt +APP_INC_DIR := -I$(BASE_INC_DIR)/App +LIBEXT_INC_DIR := -I$(BASE_INC_DIR)/LibExt +LIB_INC_DIR := -I$(BASE_INC_DIR)/Lib +DRVEXT_INC_DIR := -I$(BASE_INC_DIR)/DrvExt +DRV_INC_DIR := -I$(BASE_INC_DIR)/Drv +LIBC_INC_DIR := -I$(BASE_INC_DIR)/Common/LibC + +#BASE_INC_ALG_DIR := $(BASE_INC_DIR)/../Alg/Include +#BASE_INC_PROTECT_DIR := $(subst Include,IncludeProtected,$(BASE_INC_DIR)) + +#change replace /Include/ to /IncludeProtected/ +define protected +$(subst ../../Include/,../../IncludeProtected/,$1) +endef + + +ifeq "$(USE_ECOS_KERNEL)" "ON" +#eCos include path like ThirdParty/eCos/Include ThirdParty/live555/Include +ECOS_INC_DIR := $(addprefix -I,$(addsuffix /include, $(shell find $(BASE_INC_DIR)/../ThirdParty/ -maxdepth 1 -mindepth 1 -type d))) +endif + +ifeq "$(shell uname)" "Linux" +INC_DIR := $(addprefix -I, $(sort $(dir $(shell find $(INC_DIR) -name '*.h')))) +INC_DIR += $(addprefix -I, $(sort $(dir $(shell find $(BASE_INC_PROTECT_DIR) -name '*.h')))) +INC_DIR += $(addprefix -I, $(sort $(dir $(shell find $(BASE_INC_ALG_DIR) -name '*.h')))) +else +INC_DIR := $(addprefix -I, $(sort $(dir $(shell find $(INC_DIR) -name \'\*\.h\')))) +INC_DIR += $(addprefix -I, $(sort $(dir $(shell find $(BASE_INC_PROTECT_DIR) -name \'\*\.h\')))) +INC_DIR += $(addprefix -I, $(sort $(dir $(shell find $(BASE_INC_ALG_DIR) -name \'\*\.h\')))) +endif + +# For uITRON (MIPS) platform, we use proprietary standard C library. +# We must filter out proprietary header file if we are in others platform (ARM or eCos...) +# Filter out standard C library header file +# ifeq "$(ARCH)" "ARM" +# INC_DIR := $(filter-out $(LIBC_INC_DIR)/%, $(INC_DIR)) +# endif + +ifeq "$(USE_ECOS_KERNEL)" "ON" + INC_DIR := $(filter-out $(LIBC_INC_DIR)/%, $(INC_DIR)) + INC_DIR += $(ECOS_INC_DIR) +endif + +ifeq "$(INCLUDE_RULE)" "ON" + +#---------------------------------------------------------------------- +# Filter out upper layer's include path +#---------------------------------------------------------------------- + + +# /Common can't access /App or /AppExt or /Lib or /LibExt or /Drv or /DrvExt +# except: /Common/Common_src/Utility can access /Drv +ifneq "$(COM_PATH)" "" +ifneq "$(UTIL_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)% $(LIBEXT_INC_DIR)% $(LIB_INC_DIR)% $(DRVEXT_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected, $(APP_INC_DIR)%) $(call protected,$(LIBEXT_INC_DIR)%) $(call protected,$(LIB_INC_DIR)%) $(call protected,$(DRVEXT_INC_DIR)%),$(INC_DIR)) +else +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)% $(LIBEXT_INC_DIR)% $(LIB_INC_DIR)% $(DRVEXT_INC_DIR)% $(DRV_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected, $(APP_INC_DIR)%) $(call protected,$(LIBEXT_INC_DIR)%) $(call protected,$(LIB_INC_DIR)%) $(call protected,$(DRVEXT_INC_DIR)%) $(call protected,$(DRV_INC_DIR)%),$(INC_DIR)) +endif +endif + +# /Drv can't access /App or /AppExt or /Lib or /LibExt +ifneq "$(DRV_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)% $(LIBEXT_INC_DIR)% $(LIB_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected, $(APP_INC_DIR)%) $(call protected,$(LIBEXT_INC_DIR)%) $(call protected,$(LIB_INC_DIR)%),$(INC_DIR)) +endif + +# /DrvExt can't access /App or /AppExt or /Lib or /LibExt +ifneq "$(DRVEXT_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)% $(LIBEXT_INC_DIR)% $(LIB_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected,$(APP_INC_DIR)%) $(call protected,$(LIBEXT_INC_DIR)%) $(call protected,$(LIB_INC_DIR)%), $(INC_DIR)) +endif + +# /Lib can't access /App or /AppExt +ifneq "$(LIB_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected,$(APP_INC_DIR)%), $(INC_DIR)) +endif + +# /LibExt can't access /App or /AppExt +ifneq "$(LIBEXT_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected,$(APP_INC_DIR)%), $(INC_DIR)) +endif + +#---------------------------------------------------------------------- +# Filter out under layer's include path +#---------------------------------------------------------------------- + +# /App can't access /Drv +#ifneq "$(APP_PATH)" "" +#INC_DIR := $(filter-out $(DRV_INC_DIR)%, $(INC_DIR)) +#endif + +# /App can't access /DrvExt or /LibExt +ifneq "$(APP_PATH)" "" +INC_DIR := $(filter-out $(DRVEXT_INC_DIR)% $(LIBEXT_INC_DIR)%, $(INC_DIR)) +endif + +# /AppExt can't access /Drv +#ifneq "$(APPEXT_PATH)" "" +#INC_DIR := $(filter-out $(DRV_INC_DIR)%, $(INC_DIR)) +#endif + +# /Lib can't access /DrvExt +ifneq "$(LIB_PATH)" "" +INC_DIR := $(filter-out $(DRVEXT_INC_DIR)%, $(INC_DIR)) +endif + +# /Prj can't access /Drv or /DrvExt +#ifneq "$(PRJ_PATH)" "" +#INC_DIR := $(filter-out $(DRVEXT_INC_DIR)% $(DRV_INC_DIR)%, $(INC_DIR)) +#endif + +ifneq "$(UI_STYLE)" "" +ifeq ($(filter $(UI_STYLE), $(UI_STYLE_ALL)),) +$(error add your style into $$UI_STYLE_ALL in MakeConfig.txt) +else +PRJ_FILT_OUT := $(filter-out $(UI_STYLE), $(UI_STYLE_ALL)) +endif +PRJ_FILT_OUT_DIR := $(addsuffix %,$(addprefix -I./SrcCode/UIWnd/, $(subst UI_STYLE_,,$(PRJ_FILT_OUT)))) +#INC_DIR := $(shell echo $(INC_DIR)|tr a-z A-Z) +INC_DIR := $(filter-out $(PRJ_FILT_OUT_DIR) , $(INC_DIR)) +endif + +#---------------------------------------------------------------------- +# Filter out external layer's include path +#---------------------------------------------------------------------- + +# /Drv can't access /DrvExt +ifneq "$(DRV_PATH)" "" +INC_DIR := $(filter-out $(DRVEXT_INC_DIR)%, $(INC_DIR)) +endif + +# /Lib can't access /LibExt +ifneq "$(LIB_PATH)" "" +INC_DIR := $(filter-out $(LIBEXT_INC_DIR)%, $(INC_DIR)) +endif + +# /App can't access /AppExt +ifneq "$(APP_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)%, $(INC_DIR)) +endif + +endif \ No newline at end of file diff --git a/board/novatek/na51055/loader/MakeCommon/MakeCommon.txt b/board/novatek/na51055/loader/MakeCommon/MakeCommon.txt new file mode 100755 index 000000000000..a8ea79e7e32b --- /dev/null +++ b/board/novatek/na51055/loader/MakeCommon/MakeCommon.txt @@ -0,0 +1,632 @@ +#---------------------------------------------------------------------- +# Get the source full path, include directories +#---------------------------------------------------------------------- +# query SRC, ASM, INC_DIR +include $(MAKE_COMMON_DIR)/InputSource.txt + +#---------------------------------------------------------------------- +# set the basic ASM flags +# PLATFORM_AFLAGS := -march=armv7-a -mcpu=cortex-a9 -mabi=aapcs -msoft-float +# -mfloat-abi=softfp <==> -mfloat-abi=hard +#---------------------------------------------------------------------- +ifeq "$(FPU)" "hard" +PLATFORM_AFLAGS := -mcpu=$(CPU) -mfpu=neon -mfloat-abi=$(FPU) +else +PLATFORM_AFLAGS := -mcpu=$(CPU) -mfloat-abi=$(FPU) +endif + + + +#---------------------------------------------------------------------- +# set the basic C flags +# Reference +# http://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/ +# http://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/Option-Summary.html#Option-Summary +#---------------------------------------------------------------------- +#---------------------------------------------------------------------- +# Overall Options +#---------------------------------------------------------------------- +# -c : Compile the source files, but do not link +# -pipe : Use pipes rather than temporary files for communication between the various stages of compilation +PLATFORM_CFLAGS := -c -pipe + +#---------------------------------------------------------------------- +# Machine Dependent Options +#---------------------------------------------------------------------- +# -march=24kec : Generate code that will run on MIPS 24KEc +# -mtune=24kec : Optimize for MIPS 24KEc +# -mdsp : Use revision 1 of the MIPS DSP ASE +# -EL : Generate little-endian code +# -msoft-float : Do not use floating-point coprocessor instructions +# -marm : Tell compiler do not build c code as thumb2 instruction +#---------------------------------------------------------------------- +ifeq "$(USE_NEON)" "on" +PLATFORM_CFLAGS += -mcpu=$(CPU) -marm -mno-thumb-interwork -mfloat-abi=softfp -mfpu=neon-fp-armv8 -ftree-vectorize +else +ifeq "$(FPU)" "hard" +PLATFORM_CFLAGS += -mcpu=$(CPU) -marm -mno-thumb-interwork -mfloat-abi=$(FPU) -mfpu=neon -ftree-vectorize +else +PLATFORM_CFLAGS += -mcpu=$(CPU) -marm -mno-thumb-interwork -mfloat-abi=$(FPU) +endif +endif +# PLATFORM_CFLAGS += -mtune=$(CPU) -march=armv7-a -marm -mhard-float -mfpu=neon-vfpv4 -mno-thumb-interwork -mno-sched-prolog +# PLATFORM_CFLAGS += -mtune=$(CPU) -march=armv7-a -marm -msoft-float -mno-thumb-interwork -mno-sched-prolog + +#---------------------------------------------------------------------- +# Warning Options +#---------------------------------------------------------------------- +# -Wall : This enables all the warnings about constructions that some users consider questionable, +# and that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. +# NOTE: -Wall turns on the following warning flags: +# -Waddress +# -Warray-bounds (only with -O2) +# -Wc++11-compat +# -Wchar-subscripts +# -Wenum-compare (in C/ObjC; this is on by default in C++) +# -Wimplicit-int (C and Objective-C only) +# -Wimplicit-function-declaration (C and Objective-C only) +# -Wcomment +# -Wformat +# -Wmain (only for C/ObjC and unless -ffreestanding) +# -Wmaybe-uninitialized +# -Wmissing-braces (only for C/ObjC) +# -Wnonnull +# -Wparentheses +# -Wpointer-sign +# -Wreorder +# -Wreturn-type +# -Wsequence-point +# -Wsign-compare (only in C++) +# -Wstrict-aliasing +# -Wstrict-overflow=1 +# -Wswitch +# -Wtrigraphs +# -Wuninitialized +# -Wunknown-pragmas +# -Wunused-function +# -Wunused-label +# -Wunused-value +# -Wunused-variable +# -Wvolatile-register-var +# -Wundef : Warn if an undefined identifier is evaluated in an `#if' directive +# -Wsign-compare : Warn when a comparison between signed and unsigned values could produce an incorrect result when the signed value is converted to unsigned +# -Wno-missing-braces : Trun off "Warn if an aggregate or union initializer is not fully bracketed". For XXX = {0}; statement. +# -Wstrict-prototypes : Warn if a function is declared or defined without specifying the argument types +# -Wimplicit-function-declaration : Warn when a function is used before being declared +# -Wmissing-prototypes : Warn about global funcs without prototypes +# -Wmissing-declarations: Warn about global funcs without previous declarations +# -Werror : Warnning as error +#---------------------------------------------------------------------- +PLATFORM_CFLAGS += -Wall -Wundef -Wsign-compare -Wno-missing-braces -Wstrict-prototypes -Wno-unused-const-variable -Wno-misleading-indentation +ifeq "$(OUTPUT_FILE)" "BIN" +else +ifeq "$(INCLUDE_RULE)" "ON" +# PLATFORM_CFLAGS += -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=missing-declarations + PLATFORM_CFLAGS += -Wimplicit-function-declaration -Wmissing-prototypes -Wmissing-declarations +endif +endif + +ifeq "$(shell uname)" "Linux" +PLATFORM_CFLAGS += -Werror +endif + +#---------------------------------------------------------------------- +# C Language Options +#---------------------------------------------------------------------- +# -fno-builtin : Don't recognize built-in functions that do not begin with `__builtin_' as prefix +# -ffreestanding: Assert that compilation takes place in a freestanding environment +#---------------------------------------------------------------------- +# Code Generation Options +#---------------------------------------------------------------------- +# -fno-common : The compiler should place uninitialized global variables in the data section of the object file, rather than generating them as common blocks +# -fshort-wchar : Override the underlying type for `wchar_t' to be `short unsigned int' instead of the default for the target. +#---------------------------------------------------------------------- +# Optimization Options +#---------------------------------------------------------------------- +# -fno-strict-aliasing : Do not warn about code that breaks strict aliasing rules +# -fno-optimize-sibling-calls : Don't optimize sibling and tail recursive calls +# -fno-omit-frame-pointer : Keep the frame pointer in a register for functions that don't need one +#---------------------------------------------------------------------- +PLATFORM_CFLAGS += -fno-builtin -ffreestanding -fno-common -fshort-wchar -fno-strict-aliasing -fno-optimize-sibling-calls -fno-omit-frame-pointer + +# C Language Options for eCos system +ifeq "$(USE_ECOS_KERNEL)" "ON" + PLATFORM_CFLAGS += -D__ECOS +else + PLATFORM_CFLAGS += -nostdinc -D__UITRON +# For make dep + GCCFLAGS +=-D__UITRON +endif + +# Remove -Otime (There is no such option in GCC, GCC default is optimize for time) +# Replace -OSpace (-Os in GCC) +CFLAGS_D := $(filter-out -Otime, $(CFLAGS_D)) +CFLAGS_D := $(CFLAGS_D:-Ospace=-Os) +CFLAGS_R := $(filter-out -Otime, $(CFLAGS_R)) +CFLAGS_R := $(CFLAGS_R:-Ospace=-Os) + +# Slove sub-folder cannot include parent folder header file +INC_DIR += -I$(CURDIR) + +# For Debug target +CFLAGS_D += $(INC_DIR) -g -ggdb -O0 $(PLATFORM_CFLAGS) +ASMFLAGS_D += -g $(INC_DIR) $(PLATFORM_AFLAGS) -D__ASSEMBLY__ + +# For Release target (use -Os instead of -O2, because loader is size dominant) +CFLAGS_R += $(INC_DIR) -Os $(PLATFORM_CFLAGS) +ASMFLAGS_R += $(INC_DIR) $(PLATFORM_AFLAGS) -D__ASSEMBLY__ + +# Generate debug symbol in release target +ifeq "$(RELEASE_SYMBOL)" "ON" + CFLAGS_R += -g -ggdb + ASMFLAGS_R += -L -g +endif + +# Generate debug callback of entry and exit to functions +ifeq "$(INSTRUMENT_FUNCTION)" "ON" + CFLAGS_R += -finstrument-functions -finstrument-functions-exclude-file-list=Common_src/LibC,Common_src/Kernel,Common_src/Debug,Common_src/OS,Include/Common/LibC,Include/Common/Kernel,Include/Common/Debug,Include/Common/OS,Drv_src/Driver,Include/Drv/Driver + CFLAGS_D += -finstrument-functions -finstrument-functions-exclude-file-list=Common_src/LibC,Common_src/Kernel,Common_src/Debug,Common_src/OS,Include/Common/LibC,Include/Common/Kernel,Include/Common/Debug,Include/Common/OS,Drv_src/Driver,Include/Drv/Driver + CFLAGS_R += -D_INSTRUMENT_FUNCTION_=1 + CFLAGS_D += -D_INSTRUMENT_FUNCTION_=1 +else + CFLAGS_R += -D_INSTRUMENT_FUNCTION_=0 + CFLAGS_D += -D_INSTRUMENT_FUNCTION_=0 +endif + +#---------------------------------------------------------------------- +# Generate one ELF section for each function +# Only apply to release target +# Note: -fdata-sections will generate larger code size +#---------------------------------------------------------------------- +ifeq "$(SECTION_BY_FUNC)" "ON" +# CFLAGS_R += -ffunction-sections -fdata-sections + CFLAGS_R += -ffunction-sections +endif + +#---------------------------------------------------------------------- +# Definition for source code check build debug or release +#---------------------------------------------------------------------- +CFLAGS_R += -DNDEBUG +CFLAGS_D += -D_DEBUG + +#---------------------------------------------------------------------- +# FPGA notification for drivers +#---------------------------------------------------------------------- +ifeq "$(EMULATION)" "ON" + ifeq "$(FPGA_EMULATION)" "ON" + CFLAGS_R += -D_EMULATION_=1 -D_FPGA_EMULATION_=1 -D_FPGA_PLL_OSC_=$(FPGA_PLL_OSC) + CFLAGS_D += -D_EMULATION_=1 -D_FPGA_EMULATION_=1 -D_FPGA_PLL_OSC_=$(FPGA_PLL_OSC) + GCCFLAGS += -D_EMULATION_=1 -D_FPGA_EMULATION_=1 -D_FPGA_PLL_OSC_=$(FPGA_PLL_OSC) + else + CFLAGS_R += -D_EMULATION_=1 -D_FPGA_EMULATION_=0 + CFLAGS_D += -D_EMULATION_=1 -D_FPGA_EMULATION_=0 + GCCFLAGS += -D_EMULATION_=1 -D_FPGA_EMULATION_=0 + endif +else + CFLAGS_R += -D_EMULATION_=0 -D_FPGA_EMULATION_=0 + CFLAGS_D += -D_EMULATION_=0 -D_FPGA_EMULATION_=0 + GCCFLAGS += -D_EMULATION_=0 -D_FPGA_EMULATION_=0 +endif + +#---------------------------------------------------------------------- +# PM demo based on customized building way +#---------------------------------------------------------------------- +ifeq "$(PM_DEMO)" "ON" + CFLAGS_R += -D_PM_DEMO_=1 + CFLAGS_D += -D_PM_DEMO_=1 +else + CFLAGS_R += -D_PM_DEMO_=0 + CFLAGS_D += -D_PM_DEMO_=0 +endif + +#---------------------------------------------------------------------- +# GIC usage ON/OFF +#---------------------------------------------------------------------- +ifeq "$(ARM_GIC_400)" "ON" + CFLAGS_R += -D_ARM_GIC_USAGE_=1 + CFLAGS_D += -D_ARM_GIC_USAGE_=1 + ASMFLAGS_R += -D_ARM_GIC_USAGE_=1 + ASMFLAGS_D += -D_ARM_GIC_USAGE_=1 +else + CFLAGS_R += -D_ARM_GIC_USAGE_=0 + CFLAGS_D += -D_ARM_GIC_USAGE_=0 + ASMFLAGS_R += -D_ARM_GIC_USAGE_=0 + ASMFLAGS_D += -D_ARM_GIC_USAGE_=0 +endif + +#---------------------------------------------------------------------- +# Architecture definition +#---------------------------------------------------------------------- +CFLAGS_R += -D_ARCH_ARM_=0 -D_ARCH_MIPS_=1 +CFLAGS_D += -D_ARCH_ARM_=0 -D_ARCH_MIPS_=1 +GCCFLAGS += -D_ARCH_ARM_=0 -D_ARCH_MIPS_=1 + +ifeq "$(ARCH)" "ARM" + CFLAGS_R += -D_ARCH_=_ARCH_ARM_ + CFLAGS_D += -D_ARCH_=_ARCH_ARM_ + GCCFLAGS += -D_ARCH_=_ARCH_ARM_ +else ifeq "$(ARCH)" "MIPS" + CFLAGS_R += -D_ARCH_=_ARCH_MIPS_ + CFLAGS_D += -D_ARCH_=_ARCH_MIPS_ + GCCFLAGS += -D_ARCH_=_ARCH_MIPS_ +endif + +ifeq "$(FPU)" "hard" +ASMFLAGS_D += -D_NEON_ON_=1 +ASMFLAGS_R += -D_NEON_ON_=1 +else +ASMFLAGS_D += -D_NEON_ON_=0 +ASMFLAGS_R += -D_NEON_ON_=0 +endif + +#---------------------------------------------------------------------- +# Definition from environment +#---------------------------------------------------------------------- +ifeq "$(NMAKE_DEF)" "" +CFLAGS_R += -D_EMULATION_ON_CPU2_=0 -D_EMULATION_MULTI_CPU_=0 +CFLAGS_D += -D_EMULATION_ON_CPU2_=0 -D_EMULATION_MULTI_CPU_=0 +else +CFLAGS_R += $(NMAKE_DEF) +CFLAGS_D += $(NMAKE_DEF) +endif +ifeq "$(NMAKE_DEF_ASM)" "" +ASMFLAGS_R += -D_EMULATION_ON_CPU2_=0 -D_EMULATION_MULTI_CPU_=0 +ASMFLAGS_D += -D_EMULATION_ON_CPU2_=0 -D_EMULATION_MULTI_CPU_=0 +else +ASMFLAGS_R += $(NMAKE_DEF_ASM) +ASMFLAGS_D += $(NMAKE_DEF_ASM) +endif +#---------------------------------------------------------------------- +# Set image base directory according to kernel type +# eCos : /ARC +# uITRON : /ARC_eCos +#---------------------------------------------------------------------- +ifeq "$(USE_ECOS_KERNEL)" "ON" + ifeq "$(OUTPUT_FILE)" "LIB" + # This is for library, project's image base directory is $(PRJ_NAME)_Data + # IMG_BASE_DIR looks like ../../ARC/Common (There is backslash succeeding to /ARC) + IMG_BASE_DIR := $(subst /ARC/,/ARC_eCos/,$(IMG_BASE_DIR)) + endif + ifeq "$(OUTPUT_FILE)" "BIN" + # This is for project, library doesn't have this variable + # ARC_BASE_DIR looks like ../../ARC (There is No backslash succeeding to /ARC) + ARC_BASE_DIR := $(subst /ARC,/ARC_eCos,$(ARC_BASE_DIR)) + endif + KERNEL_STR := eCos +else + KERNEL_STR := uITRON +endif + +#---------------------------------------------------------------------- +# Set branched project name +#---------------------------------------------------------------------- +ifneq "$(_BRANCH_PROJECT_)" "" + CFLAGS_R += -D_PROJECT_CODE_=$(_BRANCH_PROJECT_) + CFLAGS_D += -D_PROJECT_CODE_=$(_BRANCH_PROJECT_) +endif + +#---------------------------------------------------------------------- +# Set the directory for debug/release objects and images here +#---------------------------------------------------------------------- +OBJ_DEBUG = $(PRJ_NAME)_Data/Debug/ObjectCode +OBJ_RELEASE = $(PRJ_NAME)_Data/Release/ObjectCode +IMG_DEBUG = $(IMG_BASE_DIR)/Debug +IMG_RELEASE = $(IMG_BASE_DIR)/Release + + +#---------------------------------------------------------------------- +# Filter the GCC Command Options for debug/release mode +#---------------------------------------------------------------------- +FILTER_GCC_D = $(foreach v, $(CFLAGS_D), $(if $(findstring -D, $(v)), , $(v))) +GCC_OPT_D = $(filter-out $(INC_DIR), $(FILTER_GCC_D)) +FILTER_GCC_R = $(foreach v, $(CFLAGS_R), $(if $(findstring -D, $(v)), , $(v))) +GCC_OPT_R = $(filter-out $(INC_DIR), $(FILTER_GCC_R)) + + +#---------------------------------------------------------------------- +# Set the make outputs +#---------------------------------------------------------------------- +SRC_OBJ_D := $(addprefix $(OBJ_DEBUG)/, $(notdir $(SRC:.c=.o))) +ASM_OBJ_D := $(addprefix $(OBJ_DEBUG)/, $(notdir $(ASM:.S=.o))) +CPP_OBJ_D := $(addprefix $(OBJ_DEBUG)/, $(notdir $(CPP_SRC:.cpp=.o))) +ALL_OBJ_D := $(ASM_OBJ_D) $(SRC_OBJ_D) $(CPP_OBJ_D) +DEPFILE_D := $(subst .o,.d,$(ALL_OBJ_D)) + +SRC_OBJ_R := $(addprefix $(OBJ_RELEASE)/, $(notdir $(SRC:.c=.o))) +ASM_OBJ_R := $(addprefix $(OBJ_RELEASE)/, $(notdir $(ASM:.S=.o))) +CPP_OBJ_R := $(addprefix $(OBJ_RELEASE)/, $(notdir $(CPP_SRC:.cpp=.o))) +ALL_OBJ_R := $(ASM_OBJ_R) $(SRC_OBJ_R) $(CPP_OBJ_R) +DEPFILE_R := $(subst .o,.d,$(ALL_OBJ_R)) + +ifeq "$(ISOLATE_DEP)" "ON" + ALL_DEP := $(DEPFILE_D) $(DEPFILE_R) +endif + +LINT_ROOTDIR = $(PRJ_NAME)_Lint +LINT_DIR = $(PRJ_NAME)_Lint/LintData +LINT_FILE := $(addprefix $(LINT_DIR)/, $(notdir $(SRC:.c=.lob))) + +#---------------------------------------------------------------------- +# For dependency +#---------------------------------------------------------------------- +GCCFLAGS += $(INC_DIR) -c -w + +#---------------------------------------------------------------------- +# For coding rule +#---------------------------------------------------------------------- +PCLINTFLAGS = $(PCLINT_PARAMETER) $(C_DEFINE_EXT) $(INC_DIR) -i$(MAKE_COMMON_DIR)/LintRule std.lnt options.lnt $$(lintopt_file) + +#---------------------------------------------------------------------- +# define host environment is linux if we build on linux server +#---------------------------------------------------------------------- +ifeq ($(OS),Linux) +CFLAGS_R += -D_HOST_ENV_LINUX_ +CFLAGS_D += -D_HOST_ENV_LINUX_ +GCCFLAGS += -D_HOST_ENV_LINUX_ +endif + +#---------------------------------------------------------------------- +# CPP FLAGS derived from CFLAGS_R / CFLAGS_D +#---------------------------------------------------------------------- +CPPFLAGS_R = $(filter-out -Wstrict-prototypes -Wimplicit-function-declaration -Wmissing-prototypes, $(CFLAGS_R)) +CPPFLAGS_D = $(filter-out -Wstrict-prototypes -Wimplicit-function-declaration -Wmissing-prototypes, $(CFLAGS_D)) + +#---------------------------------------------------------------------- +# Set the make targets +#---------------------------------------------------------------------- +build_all: rm_log build_D build_R + +make_debug_begin: + @-echo \ + && echo Checking $(KERNEL_STR) - $(basename $(notdir $(IMAGE_D))) debug target ... \ + && mkdir -p $(IMG_DEBUG) $(OBJ_DEBUG) + +make_release_begin: + @-echo \ + && echo Checking $(KERNEL_STR) - $(basename $(notdir $(IMAGE_R))) release target ... \ + && mkdir -p $(IMG_RELEASE) $(OBJ_RELEASE) + +make_dep_begin: + @-echo Checking $(basename $(notdir $(IMAGE_R))) dependency ... \ + && mkdir -p $(OBJ_DEBUG) $(OBJ_RELEASE) + +make_lint_begin: + @-echo Checking \"$(basename $(notdir $(IMAGE_R)))\" with coding rules ... \ + && mkdir -p $(LINT_DIR) + +make_option_begin: + @-echo [GCC Command Options - Release] + @-echo $(GCC_OPT_R) + @-echo + @-echo [GCC Command Options - Debug ] + @-echo $(GCC_OPT_D) + +#---------------------------------------------------------------------- +# Compile rule functions +#---------------------------------------------------------------------- +BUILD_DATE = 20`date +'%y%m%d'` +ifeq "$(ISOLATE_DEP)" "ON" + + # $(call compile_rule,object,source,cflags) + define compile_rule + $1: $2 + @echo Compiling $(notdir $2)\ + && $(CC) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + + # $(call compile_rule_asm,object,source,asmflags) + define compile_rule_asm + $1: $2 + @echo Compiling $(notdir $2) \ + && $(CC) $(PLATFORM_AFLAGS) -c $3 -o $1 $2 $$(LOG_OPTION) + + endef + + # $(call compile_rule_cpp,object,source,cflags) + define compile_rule_cpp + $1: $2 + @echo Compiling $(notdir $2) \ + && $(CXX) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + +else + + # $(call compile_rule,object,source,cflags) + define compile_rule + $1: $2 + @-$(GCC) -MM -MF $(basename $1).d -MP -MT $1 $(GCCFLAGS) $2 \ + && echo Compiling $(notdir $2) + @$(CC) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + + # $(call compile_rule_asm,object,source,asmflags) + define compile_rule_asm + $1: $2 + @-$(GCC) -MM -MF $(basename $1).d -MP -MT $1 $(GCCFLAGS) $2 \ + && echo Compiling $(notdir $2) + @$(CC) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + + # $(call compile_cpp,object,source,cflags) + define compile_rule_cpp + $1: $2 + @-$(CXX) -MM -MF $(basename $1).d -MP -MT $1 $(GCCFLAGS) $2 \ + && echo Compiling $(notdir $2) + @$(CXX) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + +endif + +# $(call get_obj,obj_dir,source) +get_obj = $(addprefix $1/, $(subst .c,.o,$(notdir $2))) + +# $(call get_obj_asm,obj_dir,source) +get_obj_asm = $(addprefix $1/, $(subst .S,.o,$(notdir $2))) + +# $(call get_obj,obj_dir,source) +get_obj_cpp = $(addprefix $1/, $(subst .cpp,.o,$(notdir $2))) + +# $(call compile_all,obj_dir,cflags) +define compile_all +$(foreach i, $(SRC), \ + $(call compile_rule,$(call get_obj,$1,$i),$i,$2)) +endef + +# $(call compile_all_asm,obj_dir,asmflags) +define compile_all_asm +$(foreach i, $(ASM), \ + $(call compile_rule_asm,$(call get_obj_asm,$1,$i),$i,$2)) +endef + +# $(call compile_all_cpp,obj_dir,cflags) +define compile_all_cpp +$(foreach i, $(CPP_SRC), \ + $(call compile_rule_cpp,$(call get_obj_cpp,$1,$i),$i,$2)) +endef + +#----------------------------------------------------------------- +# Dependency rule functions +#----------------------------------------------------------------- +# $(call depend_rule,depend,source) +define depend_rule +$1: $2 + @echo Depending $(notdir $2) \ + && $(GCC) -MM -MF $1 -MP -MT $(basename $1).o $(GCCFLAGS) $2 \ + && sed -e 's/_Data\/Debug\//_Data\/Release\//1' $1 > $(subst _Data/Debug/,_Data/Release/,$1) + +endef + +define depend_rule_asm +$1: $2 + @echo Depending $(notdir $2) \ + && $(GCC) -MM -MF $(basename $1).d -MP -MT $1 $(GCCFLAGS) $2 \ + && sed -e 's/_Data\/Debug\//_Data\/Release\//1' $1 > $(subst _Data/Debug/,_Data/Release/,$1) \ + && rm -f $(basename $1).o + +endef + +define depend_rule_cpp +$1: $2 + @echo Depending $(notdir $2) \ + && $(CXX) -MM -MF $1 -MP -MT $(basename $1).o $(GCCFLAGS) $2\ + && sed -e 's/_Data\/Debug\//_Data\/Release\//1' $1 > $(subst _Data/Debug/,_Data/Release/,$1) + +endef + +# $(call get_dep,dep_dir,source) +get_dep = $(addprefix $1/, $(subst .c,.d,$(notdir $2))) + +# $(call get_dep_asm,dep_dir,source) +get_dep_asm = $(addprefix $1/, $(subst .S,.d,$(notdir $2))) + +# $(call get_dep_cpp,dep_dir,source) +get_dep_cpp = $(addprefix $1/, $(subst .cpp,.d,$(notdir $2))) + +define depend_all +$(foreach i, $(SRC), \ + $(call depend_rule,$(call get_dep,$1,$i),$i)) +endef + +# $(call dep_all_asm,dep_dir) +define depend_all_asm +$(foreach i, $(ASM), \ + $(call depend_rule_asm,$(call get_dep_asm,$1,$i),$i)) +endef + +define depend_all_cpp +$(foreach i, $(CPP_SRC), \ + $(call depend_rule_cpp,$(call get_dep_cpp,$1,$i),$i)) +endef + +#---------------------------------------------------------------------- +# LINT rule functions +#---------------------------------------------------------------------- +# $(call get_lint,lint_dir,source) +get_lint = $(addprefix $1/, $(subst .c,.lob,$(notdir $2))) + +# $(call lint_rule,output,source) +define lint_rule +$1: $2 + @-echo Review $(notdir $2) \ + && $(LT) $(PCLINTFLAGS) -u -zero -oo[$1] $2 >> $$(lint_file) + +endef + +# && $(LT) $(PCLINTFLAGS) $2 >> $$(lint_file) + +define lint_all +$1: +$(foreach i, $(SRC), \ + $(call lint_rule,$(call get_lint,$1,$i),$i)) + @-echo Review \(Internal Relation\) \ + && $(LT) $(PCLINTFLAGS) $(LINT_DIR)/"*.lob" >> $$(lint_file) + -rm -rf --no-preserve-root $(LINT_ROOTDIR) + +endef + +#---------------------------------------------------------------------- +# Goals +#---------------------------------------------------------------------- +ifeq "$(ISOLATE_DEP)" "ON" + + ifeq "$(MAKECMDGOALS)" "dep" + $(eval $(call depend_all,$(OBJ_RELEASE))) + $(eval $(call depend_all_asm,$(OBJ_RELEASE))) + $(eval $(call depend_all_cpp,$(OBJ_RELEASE))) + $(eval $(call depend_all,$(OBJ_DEBUG))) + $(eval $(call depend_all_asm,$(OBJ_DEBUG))) + $(eval $(call depend_all_cpp,$(OBJ_DEBUG))) + endif + + ifeq "$(MAKECMDGOALS)" "" + .DEFAULT_GOAL := all + endif + +else + + ifeq "$(MAKECMDGOALS)" "" + -include $(DEPFILE_D) + -include $(DEPFILE_R) + $(eval $(call compile_all,$(OBJ_DEBUG),$(CFLAGS_D))) + $(eval $(call compile_all,$(OBJ_RELEASE),$(CFLAGS_R))) + $(eval $(call compile_all_asm,$(OBJ_DEBUG),$(ASMFLAGS_D))) + $(eval $(call compile_all_asm,$(OBJ_RELEASE),$(ASMFLAGS_R))) + $(eval $(call compile_all_cpp,$(OBJ_DEBUG),$(CPPFLAGS_D))) + $(eval $(call compile_all_cpp,$(OBJ_RELEASE),$(CPPFLAGS_R))) + endif + + ifeq "$(MAKECMDGOALS)" "rebuild" + -include $(DEPFILE_D) + -include $(DEPFILE_R) + $(eval $(call compile_all,$(OBJ_DEBUG),$(CFLAGS_D))) + $(eval $(call compile_all,$(OBJ_RELEASE),$(CFLAGS_R))) + $(eval $(call compile_all_asm,$(OBJ_DEBUG),$(ASMFLAGS_D))) + $(eval $(call compile_all_asm,$(OBJ_RELEASE),$(ASMFLAGS_R))) + $(eval $(call compile_all_cpp,$(OBJ_DEBUG),$(CPPFLAGS_D))) + $(eval $(call compile_all_cpp,$(OBJ_RELEASE),$(CPPFLAGS_R))) + endif + +endif + +ifeq ($(MAKECMDGOALS), $(filter $(MAKECMDGOALS),debug build_pipe_D)) + -include $(DEPFILE_D) + $(eval $(call compile_all,$(OBJ_DEBUG),$(CFLAGS_D))) + $(eval $(call compile_all_asm,$(OBJ_DEBUG),$(ASMFLAGS_D))) + $(eval $(call compile_all_cpp,$(OBJ_DEBUG),$(CPPFLAGS_D))) +endif + +ifeq ($(MAKECMDGOALS), $(filter $(MAKECMDGOALS),release build_pipe_R)) + -include $(DEPFILE_R) + $(eval $(call compile_all,$(OBJ_RELEASE),$(CFLAGS_R))) + $(eval $(call compile_all_asm,$(OBJ_RELEASE),$(ASMFLAGS_R))) + $(eval $(call compile_all_cpp,$(OBJ_RELEASE),$(CPPFLAGS_R))) +endif + +ifeq "$(MAKECMDGOALS)" "lint" + $(eval $(call lint_all,$(LINT_DIR))) +endif diff --git a/board/novatek/na51055/loader/MakeCommon/MakeOption.txt b/board/novatek/na51055/loader/MakeCommon/MakeOption.txt new file mode 100755 index 000000000000..e1127c97d1cc --- /dev/null +++ b/board/novatek/na51055/loader/MakeCommon/MakeOption.txt @@ -0,0 +1,280 @@ +ifeq "$(OPTION_LOADED)" "" + +#---------------------------------------------------------------------- +# Set option file loaded +#---------------------------------------------------------------------- +export OPTION_LOADED := TRUE + +#---------------------------------------------------------------------- +# Set the target CPU architecture +# +# ARM : ARM CPU +# MIPS : MIPS CPU (24KEc) +#---------------------------------------------------------------------- +export ARCH := ARM +#export ARCH := MIPS + +#---------------------------------------------------------------------- +# Set the toolchain +# +# ARM : ARM ADS, RealView +# GNU : GNU C, ASM and linker +#---------------------------------------------------------------------- +#export TOOLCHAIN := ARM +export TOOLCHAIN := GNU + +#---------------------------------------------------------------------- +# Set the floating point +# +# SW/HW : soft or hard float point unit +#---------------------------------------------------------------------- +#export FPU := hard +export FPU := soft + +#---------------------------------------------------------------------- +# Set the CPU type +# +# cortex-a9 or a53 +#---------------------------------------------------------------------- +export CPU := cortex-a9 +#export CPU := cortex-a53 + + +#---------------------------------------------------------------------- +# Set branched project code +# +# The project code must be 4 characters, please refer to +# http://mynvt.novatek.com.tw/deptsites/IM/Shared%20Documents/VersionControl.doc +# for more detailed information. +# Leaves this variable empty if not branched yet. +#---------------------------------------------------------------------- +export _BRANCH_PROJECT_ := + +#---------------------------------------------------------------------- +# PClint parameters +#---------------------------------------------------------------------- +export PCLINT_PARAMETER := -b -v + +#---------------------------------------------------------------------- +# Set log file option +# +# ON : Save warning/error message to log files (Win32 Default) +# OFF : Just output warning/error message to stdout (Linux Default) +#---------------------------------------------------------------------- +ifeq "$(shell uname)" "Linux" +export LOG_ERR := OFF +else +export LOG_ERR := ON +endif + +#---------------------------------------------------------------------- +# Set clean log file option +# +# ON : Clean log files before make +# OFF : Don't clean log files before make +# (You should execute "make clean" to clean the log files) +#---------------------------------------------------------------------- +export CLEAN_LOG := ON +#export CLEAN_LOG := OFF + +#---------------------------------------------------------------------- +# Keep going when encounter error or not +# +# ON : Make will keep going when encounter error +# OFF : Make will stop when encounter error +#---------------------------------------------------------------------- +#export KEEP_GOING := ON +export KEEP_GOING := OFF + +#---------------------------------------------------------------------- +# Isolate creating dependency files process +# +# ON : You have to run "make dep" to create dependency files +# OFF : dependency file will be created when making the file +#---------------------------------------------------------------------- +export ISOLATE_DEP := ON +#export ISOLATE_DEP := OFF + +#---------------------------------------------------------------------- +# Generate debug symbol in release target +# Release target won't generate debug symbol by default, if you want to +# generate debug symbol in release target, please turn on this option +# +# ON : Generate debug symbol in release target +# OFF : Don't generate debug symbol in release target (default value) +#---------------------------------------------------------------------- +#export RELEASE_SYMBOL := ON +export RELEASE_SYMBOL := OFF + +#---------------------------------------------------------------------- +# Generate debug callback of entry and exit to functions +# Only support on MIPS (This is GCC Extension) +# Reference: http://blog.linux.org.tw/~jserv/archives/001870.html +# +# ON : Generate debug callback +# OFF : Don't generate debug callback (default value) +#---------------------------------------------------------------------- +#export INSTRUMENT_FUNCTION := ON +export INSTRUMENT_FUNCTION := OFF + +#---------------------------------------------------------------------- +# Generate one ELF section for each function +# Compiler will generate one ELF section for one .c file by default. +# If the .c file contains lots of function that are unused, turn on +# this function can reduce code size. +# (Linker will remove unused section by default) +# Valid only in release target +# +# ON : One ELF section for each function +# OFF : One ELF section for each .c file (default value of ADS/GNU C compiler) +#---------------------------------------------------------------------- +export SECTION_BY_FUNC := ON +#export SECTION_BY_FUNC := OFF + +#---------------------------------------------------------------------- +# Copy bin file to storage after bin file is created +# You have to set an environment variable named "NVT_STG_PATH" (without +# quote) to work with this function. +# Example: set "NVT_STG_PATH" to "H:/" (without quote). +# +# ON : Copy bin file to storage after bin file is created +# OFF : Don't copy bin file to storage after bin file is created +#---------------------------------------------------------------------- +export COPY_BIN_2_STG := ON +#export COPY_BIN_2_STG := OFF + +#---------------------------------------------------------------------- +# Select emulation or design-in (Release code) environment +# +# ON : Emulation environment +# OFF : Design-in environment +#---------------------------------------------------------------------- +#export EMULATION := ON +export EMULATION := OFF + +#---------------------------------------------------------------------- +# Select FPGA or Realchip platform for emulation. +# Valid only when EMULATION is ON +# +# ON : FPGA platform +# OFF : Realchip platform +#---------------------------------------------------------------------- +export FPGA_EMULATION := ON +#export FPGA_EMULATION := OFF + +#---------------------------------------------------------------------- +# Set PLL OSC frequency for FPGA EMULATION +# Valid only when FPGA_EMULATION is ON +# +# For example, you should set it to 27000000 if your FPGA is connected +# with a 27 MHz OSC. +#---------------------------------------------------------------------- +export FPGA_PLL_OSC := 24000000 + +#---------------------------------------------------------------------- +# Set INCLUDE RULE +# +# ON : Enable include rule checking of platform +# OFF : Disable include rule checking of platform +#---------------------------------------------------------------------- +export INCLUDE_RULE := ON +#export INCLUDE_RULE := OFF + +#---------------------------------------------------------------------- +# Use eCos kernel or uITRON kernel +# +# ON : Use eCos kernel and light weight uITRON kernel compatible wrapper +# OFF : Use light weight uITRON kernel +#---------------------------------------------------------------------- +#export USE_ECOS_KERNEL := ON +export USE_ECOS_KERNEL := OFF + +#---------------------------------------------------------------------- +# PM demo based on customized building way +# +# ON : compile rule depends on _PM_DEMO_ that is informal way. +# OFF : formal way to build code +#---------------------------------------------------------------------- +#export PM_DEMO := ON +export PM_DEMO := OFF + +#---------------------------------------------------------------------- +# Set the dump encrypt binary tool +# +# ARCH := ARM 'Use ARMv4 as target +# ARCH := MIPS 'Use MIPS24Ke as target +#---------------------------------------------------------------------- +export ENCRYPT_DUMP := ON +#export ENCRYPT_DUMP := OFF + +#---------------------------------------------------------------------- +# Use ARM GIC as interrupt controller +# +# ON : Use GIC +# OFF : Use Lagacy interrupt as interrupt controller +#---------------------------------------------------------------------- +export ARM_GIC_400 := ON +#export ARM_GIC_400 := OFF + +#---------------------------------------------------------------------- +# Set the parameters of GNU toolchain +#---------------------------------------------------------------------- +ifeq "$(TOOLCHAIN)" "GNU" +ifeq "$(shell uname)" "Linux" + #CROSS_COMPILE := /opt/arm/gcc-linaro-arm-none-eabi-4.9-2014.09_linux/bin/arm-none-eabi- + CROSS_COMPILE := /opt/ivot/gcc-linaro-6.4.1-2018.05-x86_64_arm-eabi/bin/arm-eabi- + TOOLS_DIR = ../../Tools/Bin + TOOLS_SUFFIX = +else + CROSS_COMPILE := arm-eabi- + TOOLS_DIR = ../../Tools/Bin + TOOLS_SUFFIX = .exe +endif + export CC = $(CROSS_COMPILE)gcc + export AS = $(CROSS_COMPILE)as + export LD = $(CROSS_COMPILE)ld + export AR = $(CROSS_COMPILE)ar + export OBJDUMP = $(CROSS_COMPILE)objdump + export FE = $(CROSS_COMPILE)objcopy + export NM = $(CROSS_COMPILE)nm + export LT = "C:/lint/lint-nt.exe" + export GCC = $(CROSS_COMPILE)gcc + export CXX = $(CROSS_COMPILE)g++ + export EBIN = $(TOOLS_DIR)/encrypt_bin$(TOOLS_SUFFIX) + export BFC = $(TOOLS_DIR)/bfc$(TOOLS_SUFFIX) + export LDNVT = $(TOOLS_DIR)/nvt-ld-op$(TOOLS_SUFFIX) + export EBIN = $(TOOLS_DIR)/encrypt_boot_dump$(TOOLS_SUFFIX) + export CFGRAM = $(TOOLS_DIR)/Configram520$(TOOLS_SUFFIX) + export ARMINC_DIR := +endif + + +#---------------------------------------------------------------------- +# Set make flags +# +# Note: Don't modify this if you didn't add new option +#---------------------------------------------------------------------- +# Slient mode +MAKEFLAGS := s + +# Keep going or not +ifeq "$(KEEP_GOING)" "ON" + MAKEFLAGS := $(MAKEFLAGS)k +endif + +#---------------------------------------------------------------------- +# OS Type and Number of CPUs +#---------------------------------------------------------------------- +NPROCS=1 +export OS:=$(shell uname -s) + +ifeq ($(OS),Linux) + NPROCS:=$(shell grep -c ^processor /proc/cpuinfo) +endif +ifeq ($(findstring CYGWIN_NT,$(OS)),CYGWIN_NT) + NPROCS:=$(NUMBER_OF_PROCESSORS) +endif + +export JOB_FLAGS:= -j$(NPROCS) + +endif diff --git a/board/novatek/na51055/loader/MakeCommon/Makefile b/board/novatek/na51055/loader/MakeCommon/Makefile new file mode 100755 index 000000000000..83ea369cfc1a --- /dev/null +++ b/board/novatek/na51055/loader/MakeCommon/Makefile @@ -0,0 +1,126 @@ +include MakeOption.txt + +module_Common := $(dir $(wildcard ../Common/Makefile)) +module_Drv := $(dir $(wildcard ../Drv/Makefile)) +module_DrvExt := $(dir $(wildcard ../DrvExt/Makefile)) +module_Lib := $(dir $(wildcard ../Lib/Makefile)) +module_LibExt := $(dir $(wildcard ../LibExt/Makefile)) +module_App := $(dir $(wildcard ../App/Makefile)) +module_AppExt := $(dir $(wildcard ../AppExt/Makefile)) +module_Alg := $(dir $(wildcard ../Alg/Makefile)) + +-include ../Project/ProjectConfig.txt + +ifneq "$(ACTIVE_PROJECT)" "" +module_Prj := ../Project/$(ACTIVE_PROJECT)/ +else +# Find the first folder in ../Project/ that contains "Makefile" +ifeq "$(shell uname)" "Linux" +module_Prj := $(dir $(firstword $(sort $(shell find ../Project -name 'Makefile')))) +else +module_Prj := $(dir $(firstword $(sort $(shell find ../Project -name \'Makefile\')))) +endif +endif +test_if_unix_file_fmt = $(shell cd $(1); ret=`if [ "$(OS)" == "Linux" ]; then tools/recursive_dir -t . --exclude-ext .o .a .bin .axf .7z --exclude-dir .svn .git; else tools/recursive_dir.exe -t . --exclude-ext .o .a .bin .axf .7z --exclude-dir .svn .git; fi`; echo "$$ret";) + +module_all := \ + $(module_Common) \ + $(module_Drv) \ + $(module_DrvExt) \ + $(module_Lib) \ + $(module_LibExt) \ + $(module_App) \ + $(module_AppExt) \ + $(module_Alg) + +ifeq "$(LOG_ERR)" "ON" +define copy_log + @-cp \ + $(module_Common)log*.txt \ + $(module_Drv)log*.txt \ + $(module_DrvExt)log*.txt \ + $(module_Lib)log*.txt \ + $(module_LibExt)log*.txt \ + $(module_App)log*.txt \ + $(module_AppExt)log*.txt \ + $(module_Alg)log*.txt \ + $(module_Prj)log*.txt \ + . +endef +else +define copy_log +endef +endif + +ifeq "$(ISOLATE_DEP)" "ON" +.PHONY: all rm_log $(module_all) $(module_Prj) clean rebuild debug release dep + +all: rm_log + @make dep + @make debug + @make release + $(call copy_log) +else +.PHONY: all rm_log $(module_all) $(module_Prj) clean rebuild debug release + +all: rm_log $(module_all) $(module_Prj) + $(call copy_log) +endif + +$(module_all): +ifeq ($(OS),Linux) + @$(MAKE) --directory=$@ $(MAKECMDGOALS) +else + @$(MAKE) --directory=$@ $(MAKECMDGOALS) $(JOB_FLAGS) +endif + +$(module_Prj):$(module_all) + @$(MAKE) --directory=$@ $(MAKECMDGOALS) + +rm_log: + @-rm -f log*.txt + +clean: rm_log $(module_all) $(module_Prj) + +ifeq "$(ISOLATE_DEP)" "ON" +rebuild: + @make clean + @make dep + @make debug + @make release + $(call copy_log) + +dep: $(module_all) $(module_Prj) +else +rebuild: rm_log $(module_all) $(module_Prj) + $(call copy_log) +endif + +debug: rm_log $(module_Prj) + $(call copy_log) + +release: rm_log $(module_Prj) + $(call copy_log) + +rm_chk_log: + @-rm -f chk*.txt + +chk: rm_chk_log $(module_all) $(module_Prj) + +chkclean: $(module_all) $(module_Prj) + +rm_lint_log: + @-rm -f lint*.txt + +lint: rm_lint_log $(module_all) $(module_Prj) + +lintclean: $(module_all) $(module_Prj) + +chk_unix: + @result="$(call test_if_unix_file_fmt, ../)"; if [ ! -z "$$result" ]; then \ + echo -e "\e[1;31mUNIX file format check failed:\e[0m" >&2; \ + for n in $$result; do \ + echo -e "\t$$n" >&2; \ + done; \ + exit 1; \ + fi \ No newline at end of file diff --git a/board/novatek/na51055/loader/MakeCommon/OutputImg.txt b/board/novatek/na51055/loader/MakeCommon/OutputImg.txt new file mode 100755 index 000000000000..4d081ec1681e --- /dev/null +++ b/board/novatek/na51055/loader/MakeCommon/OutputImg.txt @@ -0,0 +1,556 @@ +#---------------------------------------------------------------------- +# Local variable to determine create library or binary file +#---------------------------------------------------------------------- +OUTPUT_FILE = BIN + +#---------------------------------------------------------------------- +# include make common and make option files +#---------------------------------------------------------------------- +include $(MAKE_COMMON_DIR)/MakeOption.txt +include $(MAKE_COMMON_DIR)/MakeCommon.txt + +#---------------------------------------------------------------------- +# CHIPCFG parameters +#---------------------------------------------------------------------- +ifeq "$(CHIPCFG)" "" + CHIPCFG := CHIPCFG +endif + +#---------------------------------------------------------------------- +# get force link ThirdParty symbols for both debug and release +#---------------------------------------------------------------------- +ifeq "$(USE_ECOS_KERNEL)" "ON" +rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d)) +LIB_ECOS_RTK_WIFI_DIR = $(ROOT_DIR)/ThirdParty/devs_eCos-rtl +LIB_ECOS_SELECT_RTK_WIFI_DIR = $(ROOT_DIR)/ThirdParty/devs_eCos-rtl$(WIFIMDL)es +LIB_ECOS_BASE_DIR = $(ROOT_DIR)/ThirdParty +LIB_ECOS_TMP = $(call rwildcard,$(LIB_ECOS_BASE_DIR)/,*.a) +LIB_ECOS_WO_RTK_WIFI_LIB = $(filter-out $(LIB_ECOS_RTK_WIFI_DIR)%, $(LIB_ECOS_TMP)) +LIB_ECOS_RTK_WIFI_LIB = $(call rwildcard,$(LIB_ECOS_SELECT_RTK_WIFI_DIR)/,*.a) +LIB_ECOS = $(LIB_ECOS_WO_RTK_WIFI_LIB) $(LIB_ECOS_RTK_WIFI_LIB) +#There are two eCos .o not in archive +ALL_OBJ_R += $(wildcard $(LIB_ECOS_BASE_DIR)/eCos/lib/*.o) +ALL_OBJ_D += $(wildcard $(LIB_ECOS_BASE_DIR)/eCos/lib/*.o) +endif + +#---------------------------------------------------------------------- +# get force link IPL symbols for both debug and release +#---------------------------------------------------------------------- +SYMBOL_IPL := IPL_SetDZoomFCB IPL_SetSleepFCB IPL_SetWakeupFCB IPL_GetCapRawFCB IPL_SetPauseDMAFCB IPL_SetResumeDMAFCB IPL_SetImgInOutFCB IPL_SetVAFCB IPL_GetIMEHalIdxFCB IPL_GetIPLInfoFCB IPL_TrigFCB IPL_SetTrigInfoFCB IPL_Stream2PauseFCB IPL_Pause2StreamFCB DCE_D2D_CB IPE_D2D_CB IFE_D2D_CB IFE2_D2D_CB IME_D2D_CB DRE_D2D_CB RHEIME_D2D_IFECB RHEIME_D2D_DCECB RHEIME_D2D_IPECB RHEIME_D2D_IMECB RHEIME_D2D_RHECB IPL_GetCtrlFlowFCB IQUC_InitCtrlItem + +#---------------------------------------------------------------------- +# include the libraries +#---------------------------------------------------------------------- +# +# get Debug LIBs +# +LIB_ALG_DIR_D = $(ARC_BASE_DIR)/../Alg/ARC/Debug +LIB_APP_DIR_D = $(ARC_BASE_DIR)/App/Debug +LIB_COM_DIR_D = $(ARC_BASE_DIR)/Common/Debug +LIB_DRV_DIR_D = $(ARC_BASE_DIR)/Drv/Debug +LIB_LIB_DIR_D = $(ARC_BASE_DIR)/Lib/Debug + +# get Alg libraries +LIB_ALG_D := $(wildcard $(LIB_ALG_DIR_D)/*.a) + +# get App/AppExt libraries +LIB_APP_D := $(wildcard $(LIB_APP_DIR_D)/*.a) + +# get Common libraries +LIB_COM_D := $(wildcard $(LIB_COM_DIR_D)/*.a) + +# get Drv/DrvExt libraries +LIB_DRV_ALL_D := $(wildcard $(LIB_DRV_DIR_D)/*.a) + +# get LIBs in App (except capture library), AppExt +# and LIB module (except driver and slide-effect libraries) +LIB_LIB_DIR_D = $(ARC_BASE_DIR)/Lib/Debug +LIB_STRGEXT_ALL_D := $(wildcard $(LIB_LIB_DIR_D)/STRGEXT_*.a) +LIB_STRGEXT_D := $(wildcard $(LIB_LIB_DIR_D)/STRGEXT_$(STORAGEEXT)_D.a) +LIB_STRGINT_ALL_D := $(wildcard $(LIB_LIB_DIR_D)/STRGINT_*.a) +LIB_STRGINT_D := $(wildcard $(LIB_LIB_DIR_D)/STRGINT_$(STORAGEINT)_D.a) +LIB_REMAP_ALL_D := $(wildcard $(LIB_LIB_DIR_D)/Remap_*.a) +LIB_REMAP_D := $(wildcard $(LIB_LIB_DIR_D)/Remap_$(RESETFLAG)_D.a) +LIB_RESET_ALL_D := $(wildcard $(LIB_LIB_DIR_D)/Reset_*.a) +LIB_RESET_D := $(wildcard $(LIB_LIB_DIR_D)/Reset_$(RESETCHIP)_D.a) +LIB_COMMON_ALL_D := $(wildcard $(LIB_LIB_DIR_D)/Common_*.a) +LIB_COMMON_D := $(wildcard $(LIB_LIB_DIR_D)/Common_$(COMMON_LIB)_D.a) +# get LIBs in App (except capture library), AppExt +# and LIB module (except driver and slide-effect libraries) +LIB_LIB_ALL_D := $(filter-out $(LIB_PARSER_ALL_D) $(LIB_SLIDE_ALL_D), $(wildcard $(LIB_LIB_DIR_D)/*.a)) + +LIB_LIB_D := $(filter-out $(LIB_STRGEXT_ALL_D) $(LIB_STRGINT_ALL_D) $(LIB_REMAP_ALL_D) $(LIB_RESET_ALL_D) $(LIB_COMMON_ALL_D), $(LIB_LIB_ALL_D)) + +# +# get Release LIBs +# +LIB_LIB_DIR_R = $(ARC_BASE_DIR)/Lib/Release +LIB_STRGEXT_ALL_R := $(wildcard $(LIB_LIB_DIR_R)/STRGEXT_*.a) +LIB_STRGEXT_R := $(wildcard $(LIB_LIB_DIR_R)/STRGEXT_$(STORAGEEXT).a) +LIB_STRGINT_ALL_R := $(wildcard $(LIB_LIB_DIR_R)/STRGINT_*.a) +LIB_STRGINT_R := $(wildcard $(LIB_LIB_DIR_R)/STRGINT_$(STORAGEINT).a) +LIB_REMAP_ALL_R := $(wildcard $(LIB_LIB_DIR_R)/Remap_*.a) +LIB_REMAP_R := $(wildcard $(LIB_LIB_DIR_R)/Remap_$(RESETFLAG).a) +LIB_RESET_ALL_R := $(wildcard $(LIB_LIB_DIR_R)/Reset_*.a) +LIB_RESET_R := $(wildcard $(LIB_LIB_DIR_R)/Reset_$(RESETCHIP).a) +LIB_COMMON_ALL_R := $(wildcard $(LIB_LIB_DIR_R)/Common_*.a) +LIB_COMMON_R := $(wildcard $(LIB_LIB_DIR_R)/Common_$(COMMON_LIB).a) +# get LIBs in App (except capture library), AppExt +# and LIB module (except driver and slide-effect libraries) +LIB_LIB_ALL_R := $(filter-out $(LIB_PARSER_ALL_R) $(LIB_SLIDE_ALL_R), $(wildcard $(LIB_LIB_DIR_R)/*.a)) + +#LIB_LIB_R := $(filter-out $(LIB_STRGEXT_ALL_R) $(LIB_STRGINT_ALL_R) $(LIB_REMAP_ALL_R), $(LIB_LIB_ALL_R)) +LIB_LIB_R := $(filter-out $(LIB_STRGEXT_ALL_R) $(LIB_REMAP_ALL_R) $(LIB_RESET_ALL_R) $(LIB_COMMON_ALL_R), $(LIB_LIB_ALL_R)) + + +# get total libraries for Debug & Release mode; note we cannot get string of LIB_R from LIB_D, or vice versa, +# because we may build Debug and Release output separately, the library of one mode maybe not exist, and cause +# the link problem. So, while adding/deleting libraries, please be patient to do it for Debug and Release mode both. + +LIB_R := \ + $(LIB_LIB_R) \ + $(LIB_STRGEXT_R) \ + $(LIB_REMAP_R) \ + $(LIB_RESET_R) \ + $(LIB_COMMON_R) + +LIB_D := \ + $(LIB_LIB_D) \ + $(LIB_STRGEXT_D) \ + $(LIB_REMAP_D) \ + $(LIB_RESET_D) \ + $(LIB_COMMON_D) + +# If some libraries only available in Release mode, add these libraries in Debug mode too. +LIB_D += $(filter-out $(subst Debug/,Release/,$(LIB_D:_D.a=.a)),$(LIB_R)) + +# Append eCos library to both Debug and Release mode +# (We don't have debug mode's eCos library) +LIB_R += $(LIB_ECOS) +LIB_D += $(LIB_ECOS) + +#---------------------------------------------------------------------- +# set the make outputs +#---------------------------------------------------------------------- +# for debug target +IMAGE_D = $(IMG_DEBUG)/$(PRJ_NAME)_D.axf +BIN_D = $(IMG_DEBUG)/$(LDR_NAME).bin +MAP_D = $(IMG_DEBUG)/$(PRJ_NAME)_D.txt +MAP2_D = $(IMG_DEBUG)/$(PRJ_NAME)_ldmap_D.txt +SYM_D = $(IMG_DEBUG)/$(PRJ_NAME)_D.sym +DASM_D = $(IMG_DEBUG)/$(PRJ_NAME)_dasm_D.txt +ifeq "$(MODELEXT_BUILT_IN)" "MODELEXT_BUILT_IN_OFF" +MODELEXT_D = $(IMG_DEBUG)/$(BIN_NAME).ext.bin +endif + + +# for release target +IMAGE_R = $(IMG_RELEASE)/$(PRJ_NAME).axf +BIN_R = $(IMG_RELEASE)/$(LDR_NAME).bin +MAP_R = $(IMG_RELEASE)/$(PRJ_NAME).txt +MAP2_R = $(IMG_RELEASE)/$(PRJ_NAME)_ldmap.txt +SYM_R = $(IMG_RELEASE)/$(PRJ_NAME).sym +DASM_R = $(IMG_RELEASE)/$(PRJ_NAME)_dasm.txt +ifeq "$(MODELEXT_BUILT_IN)" "MODELEXT_BUILT_IN_OFF" +MODELEXT_R = $(IMG_RELEASE)/$(BIN_NAME).ext.bin +endif + +#---------------------------------------------------------------------- +# if enable LDS_MAP +#---------------------------------------------------------------------- +ifeq "$(LDS_MAP)" "ON" +LDMAP_D = -Map $(MAP2_D) +LDMAP_R = -Map $(MAP2_R) +endif + +#---------------------------------------------------------------------- +# set the warning/error log file option +#---------------------------------------------------------------------- +log_file = log_Prj.txt + +# 0: Standard input (stdin), 1: Standard output (stdout), 2: Standard error (stderr) +# 2>>$(log_file) means redirect standard error to $(log_file) +# 2>>/dev/null means redirect standard error to NULL (Don't display error message) +ifeq "$(LOG_ERR)" "ON" +LOG_OPTION = 2>>$(log_file) +endif + +#---------------------------------------------------------------------- +# set robustness checking log file +#---------------------------------------------------------------------- +lint_file = lint_Prj.txt +lintopt_file = options_Prj.lnt +lintsum_file = lintsum_Prj.txt + +#---------------------------------------------------------------------- +# set the make targets +#---------------------------------------------------------------------- +build_D: make_debug_begin prepare_log $(IMAGE_D) $(BIN_D) +build_R: make_release_begin prepare_log $(IMAGE_R) $(BIN_R) +build_pipe_D: $(IMAGE_D) $(BIN_D) +build_pipe_R: $(IMAGE_R) $(BIN_R) + +ifeq "$(ISOLATE_DEP)" "ON" +build_DEP: make_dep_begin $(SRC) $(ASM) $(CPP_SRC) $(ALL_DEP) +endif + +build_LINT: make_lint_begin $(LINT_FILE) + +prepare_log: + @$(LOG_OPTION) + +ifeq "$(ARCH)" "ARM" +#arm-none-eabi-gcc -march=armv7-a -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp -print-file-name=libm.a +ifeq "$(FPU)" "hard" +libgcc_path = $(shell $(CC) -march=armv7-a -mcpu=$(CPU) -mabi=aapcs -mfpu=neon -mfloat-abi=$(FPU) -print-libgcc-file-name) +libgcc_dir_el = $(shell dirname "$(libgcc_path)") +libstdc_path = $(shell $(CC) -msoft-float -print-file-name=libstdc++.a) +libstdc_dir_el = $(shell dirname "$(libstdc_path)") +libm_path = $(shell $(CC) -march=armv7-a -mcpu=$(CPU) -mfpu=neon -mfloat-abi=$(FPU) -print-file-name=libm.a) +libm_dir = $(shell dirname "$(libm_path)") +else +libgcc_path = $(shell $(CC) -march=armv7-a -mcpu=$(CPU) -mabi=aapcs -mfloat-abi=$(FPU) -print-libgcc-file-name) +libgcc_dir_el = $(shell dirname "$(libgcc_path)") +libstdc_path = $(shell $(CC) -msoft-float -print-file-name=libstdc++.a) +libstdc_dir_el = $(shell dirname "$(libstdc_path)") +libm_path = $(shell $(CC) -march=armv7-a -mcpu=$(CPU) -mfloat-abi=$(FPU) -print-file-name=libm.a) +libm_dir = $(shell dirname "$(libm_path)") +endif +endif + +define append_modelext + echo Append $1 into $4. \ + && $(AR) x $3 $1.o \ + && $(FE) --only-section=modelext_header.$1 -O binary -S -R .comment -R .note $1.o $2/$1.header \ + && cat $2/$1.header >> $4 \ + && $(FE) --only-section=modelext_data.$1 -O binary -S -R .comment -R .note $1.o $2/$1.data \ + && cat $2/$1.data >> $4 +endef + + +#Replace string existing in lds file +ifeq "$(SCATTER)" "EmuKit_cpu2.lds" +ifeq "$(PLATFORM_MEM_SIZE)" "SDRAM_SIZE_256" + BOARD_UITRON_ADDR = 0x8000000 +endif +ifeq "$(PLATFORM_MEM_SIZE)" "SDRAM_SIZE_512" + BOARD_UITRON_ADDR = 0x10000000 +endif +ifeq "$(PLATFORM_MEM_SIZE)" "SDRAM_SIZE_1024" + BOARD_UITRON_ADDR = 0x20000000 +endif +endif + +LD_REMAP_LIB = Remap_$(RESETFLAG) +LD_DOREMAP = doremap$(RESETFLAG) +LD_RESET_LIB = Reset_$(RESETCHIP) +LD_COMMON_LIB = Common_$(COMMON_LIB) +ifeq "$(BL_COMPRESS)" "ENABLE" +LD_CONFIGRAM = configramLZ +else +LD_CONFIGRAM = configramNM +endif +LD_REPLACE_VAR = sed \ + -e 's/$$LD_REMAP_LIB/$(LD_REMAP_LIB)/g' \ + -e 's/$$LD_DOREMAP/$(LD_DOREMAP)/g' \ + -e 's/$$LD_CONFIGRAM/$(LD_CONFIGRAM)/g' \ + -e 's/$$LD_BASE_ADDR/$(LD_BASE_ADDR)/g' \ + -e 's/$$LD_RESET_LIB/$(LD_RESET_LIB)/g' \ + -e 's/$$LD_COMMON_LIB/$(LD_COMMON_LIB)/g' \ + $(SCATTER) + +#The folder, the working space to fill the full path into lds file +LD_DIR_WORKING_D= $(IMG_BASE_DIR)/Debug/ObjectLds +#Generate the working folder and temp lds file called replace.lds +LD_REPLACE_LDS_D= $(shell mkdir -p $(LD_DIR_WORKING_D)) $(shell $(OBJDUMP) -h $(LIB_D) | grep ".version.info" > tmp_awk1) $(shell $(LD_REPLACE_VAR) > $(LD_DIR_WORKING_D)/replace.lds) +#The real lds file replaced of using by linker +LD_PATH_LDS_D = $(LD_DIR_WORKING_D)/$(basename $(SCATTER))_D.lds +#Here have some steps as following to get a some files explained below, +#Step 1: Generate temp lds file +#Step 2: export the contents of $(LIB_D) into libs.txt +#Step 3: export the contents of $(ALL_OBJ_D) into objs.txt +#Step 4: Give mips-nvt.exe libs.txt, objs.txt and replace.lds to get ld_ext.d, ld_lib.txt, ld_lib_ban.txt and real lds file for linker. +# Where, +# ld_ext.d is a decency file depends on .o used in lds file +# ld_lib_ban is a list of .a files to ban, because linker should use the .a file after extracting .o. +# real lds file is replaced by full path. +LD_DFILE_D = $(LD_REPLACE_LDS_D) $(shell echo $(LIB_D) > $(LD_DIR_WORKING_D)/libs.txt ) $(shell echo $(ALL_OBJ_D) > $(LD_DIR_WORKING_D)/objs.txt ) $(shell $(LDNVT) --lds-dst=$(LD_PATH_LDS_D) --lds-dir=$(LD_DIR_WORKING_D) --lds-src=$(LD_DIR_WORKING_D)/replace.lds --libs-src=$(LD_DIR_WORKING_D)/libs.txt --objs-src=$(LD_DIR_WORKING_D)/objs.txt --objs-dir=$(OBJ_DEBUG)) $(LD_DIR_WORKING_D)/ld_ext.d +#Getting the contents of ld_lib.txt +LD_LIB_D = $(shell cat $(LD_DIR_WORKING_D)/ld_lib.txt 2>>/dev/null) +#Getting the contents of ld_lib_ban.txt +LD_LIB_BAN_D = $(shell cat $(LD_DIR_WORKING_D)/ld_lib_ban.txt 2>>/dev/null) +tmp_awk2 = $(shell awk -F" " '{print $$2}' tmp_awk1 | awk -F"." '{print $$5}') +tmp_awk3 = $(addsuffix _LIBRARY_VERSION_INFO, $(tmp_awk2)) + +ifeq ($(MAKECMDGOALS), $(filter $(MAKECMDGOALS),debug build_pipe_D)) +include $(LD_DFILE_D) +endif + +$(LD_LIB_D): $(MODELEXT_D) + +#$(MODELEXT_D): $(LIB_MODELEXT_D) +# @echo Creating modelext $@ ... \ +# && rm -f $@ \ +# && $(call append_modelext,modelext_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,bin_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,pinmux_cfg,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,intdir_cfg,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,emb_partition_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,gpio_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,dram_partition_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,model_cfg,$(OBJ_DEBUG),$<,$@) \ +# && $(EBIN) $(EBIN_METHOD) $@ 0x18 $(EBIN_MNAME) +# @BIN_SIZE=`ls -l $@ | cut -d ' ' -f 5`; \ +# RESIDUAL=$$(($${BIN_SIZE} % 4)); \ +# if [ "$${RESIDUAL}" -ne "0" ]; then \ +# echo "sizeof($@) is not 4-byte aligned"; \ +# exit 1; \ +# fi + +$(IMAGE_D): $(SRC) $(ASM) $(CPP_SRC) $(ALL_OBJ_D) $(LIB_D) $(LD_LIB_D) $(MODELEXT_D) + $(shell mv *.o $(IMG_BASE_DIR)/Debug/ObjectCode 2>>/dev/null) + @echo '-o $@ $(ALL_OBJ_D)'> ld_d.tmp + @echo '--start-group $(LD_LIB_D) $(filter-out $(LD_LIB_BAN_D),$(LIB_D)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_D) -L "$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -L"$(libm_dir)" -lstdc++ -lgcc "$(libm_path)" $(LDMAP_D)' >> ld_d.tmp +ifeq "$(SCATTER)" "EmuKit_cpu2.lds" + @echo "Linking CA53_core2...$(LD_PATH_LDS_D)" \ + && echo Creating image $@ ... \ + && $(LD) @ld_d.tmp $(LOG_OPTION) \ + && $(OBJDUMP) -x -h -t $@ > $(MAP_D) \ + && $(NM) -n $@ > tmp_sym_d \ + && grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' tmp_sym_d > $(SYM_D) \ + && rm -f tmp_sym_d \ + && rm -f ld_d.tmp \ + && rm -f tmp_awk1 +else + @echo "Linking ..." \ + && echo Creating image $@ ... \ + && $(LD) @ld_d.tmp $(LOG_OPTION) \ + && $(OBJDUMP) -x -h -t $@ > $(MAP_D) \ + && $(NM) -n $@ > tmp_sym_d \ + && grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' tmp_sym_d > $(SYM_D) \ + && rm -f tmp_sym_d \ + && rm -f ld_d.tmp \ + && rm -f tmp_awk1 +endif + + +$(BIN_D): $(IMAGE_D) +ifeq "$(MULTI_REGIONS)" "ON" + @echo Creating executable $@ ... \ + && $(FE) --gap-fill=0xff -O binary $< $@ \ + && mv $(IMG_DEBUG)/SPECIAL_RO $(BIN_D) +else + @echo Creating executable $@ ... \ + && $(FE) --gap-fill=0xff -O binary $< $@ +endif +ifeq "$(LDS_MAP)" "ON" + @echo Generate LDS map file $(MAP2_D): ok +endif +ifeq "$(AXF_DIS)" "ON" + @echo Translate AXF $< to disassembly... \ + && $(OBJDUMP) -D $(IMAGE_D) > $(DASM_D) +endif + +ifeq "$(BL_COMPRESS)" "ENABLE" + @echo Compressing file $(@)\ + && $(BFC) c lz $(BIN_D) tmp 1 $(UNCOMPRESSEDPART_SIZE_OFFSET) \ + && cp -f tmp $(BIN_D) \ + && rm -f tmp \ + && echo Encrypt binary file $@ for $(CHIP)... $(CHIP_VER) $(DMA_CLOCK) $(SDRAM_SIZE) $(LOADER_VERSION) $(CONFIG_RAM_GUI_EN) $(PHY_ANALOG_HV) $(DUTY_CALIBRATION) $(DUTY_CALIBRATION_LOG) $(DUTY_CALIBRATION_TYPE)\ + && $(EBIN) $@ $@ 680 + $(CFGRAM) $@ -ini=../../Tools/ConfigRam/$(DDR_INI_STR) -ini2=../../Tools/ConfigRam/$(DDR_INI_STR) -chip=660 -package=$(CHIP) -ldver=$(LOADER_VERSION) -gui=$(CONFIG_RAM_GUI_EN) -storage=$(STORAGEINT) -inv_rst=$(DRAM1_RST_PARAM) +# $(CFGRAM) $@ ../../Tools/ConfigRam/$(CHIP)_$(CHIP_VER)_$(DMA_CLOCK)_$(SDRAM_SIZE)$(DDR_FILE_STR).ini 650 $(LOADER_VERSION) $(CONFIG_RAM_GUI_EN) $(PHY_ANALOG_HV) $(DUTY_CALIBRATION) $(DUTY_CALIBRATION_LOG) $(DUTY_CALIBRATION_TYPE) $(LV1_CLK) +else + @echo Encrypt binary file $@ for $(CHIP)...\ + && $(EBIN) $@ $@ 680 $(SECURE_BOOT) +endif + +ifeq "$(COPY_BIN_2_STG)" "ON" +ifneq "$(NVT_STG_PATH)" "" + @-echo Copy \""$(BIN_D)\"" to $(NVT_STG_PATH) ... \ + && cp -f -v $(BIN_D) $(NVT_STG_PATH)$(notdir $(BIN_D)) +endif +ifneq "$(NVT_STG_PATH_MIPS2)" "" + @-echo Copy \""$(BIN_D)\"" to $(NVT_STG_PATH_MIPS2)_FWMIPS2.bin ... \ + && cp -f -v $(BIN_D) $(NVT_STG_PATH_MIPS2)_FWMIPS2.bin +endif + +ifneq "$(NVT_STG_PATH_CA532)" "" + @-echo Copy \""$(BIN_D)\"" to $(NVT_STG_PATH_CA532)_FWCA532.bin ... \ + && cp -f -v $(BIN_D) $(NVT_STG_PATH_CA532)_FWCA532.bin +endif +endif + +#Please refer LD_DIR_WORKING_D for getting explanation. Ohters are in the same way. +LD_DIR_WORKING_R= $(IMG_BASE_DIR)/Release/ObjectLds +LD_REPLACE_LDS_R= $(shell mkdir -p $(LD_DIR_WORKING_R)) $(shell $(OBJDUMP) -h $(LIB_R) | grep ".version.info" > tmp_awk1) $(shell $(LD_REPLACE_VAR) > $(LD_DIR_WORKING_R)/replace.lds) +LD_PATH_LDS_R = $(LD_DIR_WORKING_R)/$(basename $(SCATTER))_R.lds +LD_DFILE_R = $(LD_REPLACE_LDS_R) $(shell echo $(LIB_R) > $(LD_DIR_WORKING_R)/libs.txt ) $(shell echo $(ALL_OBJ_R) > $(LD_DIR_WORKING_R)/objs.txt ) $(shell $(LDNVT) --lds-dst=$(LD_PATH_LDS_R) --lds-dir=$(LD_DIR_WORKING_R) --lds-src=$(LD_DIR_WORKING_R)/replace.lds --libs-src=$(LD_DIR_WORKING_R)/libs.txt --objs-src=$(LD_DIR_WORKING_R)/objs.txt --objs-dir=$(OBJ_RELEASE)) $(LD_DIR_WORKING_R)/ld_ext.d +LD_LIB_R = $(shell cat $(LD_DIR_WORKING_R)/ld_lib.txt 2>>/dev/null) +LD_LIB_BAN_R = $(shell cat $(LD_DIR_WORKING_R)/ld_lib_ban.txt 2>>/dev/null) +tmp_awk2 = $(shell awk -F" " '{print $$2}' tmp_awk1 | awk -F"." '{print $$5}') +tmp_awk3 = $(addsuffix _LIBRARY_VERSION_INFO, $(tmp_awk2)) + +ifeq ($(MAKECMDGOALS), $(filter $(MAKECMDGOALS),release build_pipe_R)) +include $(LD_DFILE_R) +endif + +$(LD_LIB_R): $(MODELEXT_R) + +#$(MODELEXT_R): $(LIB_MODELEXT_R) +# @echo Creating modelext $@ \ +# && rm -f $@ \ +# && $(call append_modelext,modelext_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,bin_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,pinmux_cfg,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,intdir_cfg,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,emb_partition_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,gpio_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,dram_partition_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,model_cfg,$(OBJ_RELEASE),$<,$@) \ +# && $(EBIN) $(EBIN_METHOD) $@ 0x18 $(EBIN_MNAME) +# @BIN_SIZE=`ls -l $@ | cut -d ' ' -f 5`; \ +# RESIDUAL=$$(($${BIN_SIZE} % 4)); \ +# if [ "$${RESIDUAL}" -ne "0" ]; then \ +# echo "sizeof($@) is not 4-byte aligned"; \ +# exit 1; \ +# fi + +$(IMAGE_R): $(SRC) $(ASM) $(CPP_SRC) $(ALL_OBJ_R) $(LIB_R) $(LD_LIB_R) $(MODELEXT_R) + $(shell mv *.o $(IMG_BASE_DIR)/Release/ObjectCode 2>>/dev/null) + @echo '-o $@ $(ALL_OBJ_R) '> ld_r.tmp + @echo '--start-group $(LD_LIB_R) $(filter-out $(LD_LIB_BAN_R),$(LIB_R)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_R) -L"$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -lstdc++ -lgcc "$(libm_path)" $(LDMAP_R)' >> ld_r.tmp + +ifeq "$(SCATTER)" "EmuKit_cpu2.lds" + @echo "Linking CA53_core2...$(LD_PATH_LDS_R)" \ + && echo Creating image $@ ... \ + && $(LD) @ld_r.tmp $(LOG_OPTION) \ + && $(OBJDUMP) -x -h -t $@ > $(MAP_R) \ + && $(NM) -n $@ > tmp_sym_r \ + && grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' tmp_sym_r > $(SYM_R) \ + && rm -f tmp_sym_r \ + && rm -f ld_r.tmp \ + && rm -f tmp_awk1 +else + @echo "Linking ..." \ + && echo Creating image $@ ... \ + && $(LD) @ld_r.tmp $(LOG_OPTION) \ + && $(OBJDUMP) -x -h -t -marm $@ > $(MAP_R) \ + && $(NM) -n $@ > tmp_sym_r \ + && grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' tmp_sym_r > $(SYM_R) \ + && rm -f tmp_sym_r \ + && rm -f ld_r.tmp \ + && rm -f tmp_awk1 +endif + +$(BIN_R): $(IMAGE_R) +ifeq "$(MULTI_REGIONS)" "ON" + @echo Creating executable $@ ... \ + && $(FE) --gap-fill=0xff -O binary $< $@ \ + && mv $(IMG_RELEASE)/SPECIAL_RO $(BIN_R) +else + @echo Creating executable $@ ... \ + && $(FE) --gap-fill=0xff -O binary $< $@ +endif + +ifeq "$(LDS_MAP)" "ON" + @echo Generate LDS map file $(MAP2_R): ok +endif +ifeq "$(AXF_DIS)" "ON" + @echo Translate AXF $< to disassembly... \ + && $(OBJDUMP) -D $(IMAGE_R) > $(DASM_R) +endif +ifeq "$(BL_COMPRESS)" "ENABLE" + @echo Compressing file $(@)\ + && $(BFC) c lz $(BIN_R) tmp 1 $(UNCOMPRESSEDPART_SIZE_OFFSET) \ + && cp -f tmp $(BIN_R) \ + && rm -f tmp \ + && echo Encrypt binary file $@ for $(CHIP)... $(CHIP_VER) $(DMA_CLOCK) $(SDRAM_SIZE) $(LOADER_VERSION) $(CONFIG_RAM_GUI_EN) $(PHY_ANALOG_HV) $(DUTY_CALIBRATION) $(DUTY_CALIBRATION_LOG) $(DUTY_CALIBRATION_TYPE)\ + && $(EBIN) $@ $@ $(CHIPID) +ifeq "$(NC520_525_COMBO)" "ON" + $(CFGRAM) $@ -freq=$(DRAM1_CLK) -ini=../../Tools/ConfigRam/$(DDR_INI_STR) -ini2=../../Tools/ConfigRam/$(DDR_INI2_STR) -chip=$(CHIPID) -package=$(CHIP) -ldver=$(LOADER_VERSION) -storage=$(STORAGEINT) -inv_rst=$(DRAM1_RST_PARAM) -dram_number=$(DRAM_NUMBER_DET_PARAM) -ini_NC520_525_combo=../../Tools/ConfigRam/$(DDR_INI_STR_NC520_525_COMBO) -dram_ssc=$(DRAM_SSC_PARAM) -52x_combo_528=$(52x_528_COMBO) -dram_wt=$(DDR_TREFI_PARAM) + $(EBIN) $@ $@ $(CHIPID) $(SECURE_BOOT) $(ENCRYPT_DATA) $(SECUREBOOT_MSG) $(AES_KEY_FILE_DIR) $(RSA_PUB_KEY_FILE_DIR) $(RSA_PRV_KEY_FILE_DIR) +else +ifeq "$(CHIPID)" "520" + $(CFGRAM) $@ -freq=$(DRAM1_CLK) -ini=../../Tools/ConfigRam/$(DDR_INI_STR) -ini2=../../Tools/ConfigRam/$(DDR_INI2_STR) -chip=$(CHIPID) -package=$(CHIP) -ldver=$(LOADER_VERSION) -storage=$(STORAGEINT) -inv_rst=$(DRAM1_RST_PARAM) -dram_number=$(DRAM_NUMBER_DET_PARAM) -dram_ssc=$(DRAM_SSC_PARAM) -52x_combo_528=$(52x_528_COMBO) -dram_wt=$(DDR_TREFI_PARAM) -dram_2nd_tlb=$(2ND_INI) -dram_2nd_tlb_gpio_no=$(GPIO_NUM) -2nd_ini=../../Tools/ConfigRam/$(DDR_INI_STR2) -2nd_ini2=../../Tools/ConfigRam/$(DDR_INI2_STR2) + $(EBIN) $@ $@ $(CHIPID) $(SECURE_BOOT) $(ENCRYPT_DATA) $(SECUREBOOT_MSG) $(AES_KEY_FILE_DIR) $(RSA_PUB_KEY_FILE_DIR) $(RSA_PRV_KEY_FILE_DIR) +endif + +ifeq "$(CHIPID)" "528" + $(CFGRAM) $@ -freq=$(DRAM1_CLK) -ini=../../Tools/ConfigRam/$(DDR_INI_STR) -ini2=../../Tools/ConfigRam/$(DDR_INI2_STR) -chip=$(CHIPID) -package=$(CHIP) -ldver=$(LOADER_VERSION) -storage=$(STORAGEINT) -inv_rst=$(DRAM1_RST_PARAM) -dram_number=$(DRAM_NUMBER_DET_PARAM) -dram_ssc=$(DRAM_SSC_PARAM) -dram_wt=$(DDR_TREFI_PARAM) -dram_2nd_tlb=$(2ND_INI) -dram_2nd_tlb_gpio_no=$(GPIO_NUM) -2nd_ini=../../Tools/ConfigRam/$(DDR_INI_STR2) -2nd_ini2=../../Tools/ConfigRam/$(DDR_INI2_STR2) -fast_k=$(FAST_K_PARAM) + $(EBIN) $@ $@ $(CHIPID) $(SECURE_BOOT) $(ENCRYPT_DATA) $(SECUREBOOT_MSG) $(AES_KEY_FILE_DIR) $(RSA_PUB_KEY_FILE_DIR) $(RSA_PRV_KEY_FILE_DIR) +endif +endif +# $(CFGRAM) $@ -ini=../../Tools/ConfigRam/$(DDR_INI_STR) -ini2=../../Tools/ConfigRam/$(DDR_INI_STR) -chip=660 -package=$(CHIP) -ldver=$(LOADER_VERSION) -gui=$(CONFIG_RAM_GUI_EN) -storage=$(STORAGEINT) +# $(CFGRAM) $@ ../../Tools/ConfigRam/$(CHIP)_$(CHIP_VER)_$(DMA_CLOCK)_$(SDRAM_SIZE)$(DDR_FILE_STR).ini 650 $(LOADER_VERSION) $(CONFIG_RAM_GUI_EN) $(PHY_ANALOG_HV) $(DUTY_CALIBRATION) $(DUTY_CALIBRATION_LOG) $(DUTY_CALIBRATION_TYPE) $(LV1_CLK) +else + @echo Encrypt binary file $@ for $(CHIP)...\ + && $(EBIN) $@ $@ $(CHIPID) $(SECURE_BOOT) \ + && $(CFGRAM) $@ -freq=$(DRAM1_CLK) -ini=../../Tools/ConfigRam/$(DDR_INI_STR) -ini2=../../Tools/ConfigRam/$(DDR_INI2_STR) -chip=$(CHIPID) -package=$(CHIP) -ldver=$(LOADER_VERSION) -storage=$(STORAGEINT) -inv_rst=$(DRAM1_RST_PARAM) -dram_number=$(DRAM_NUMBER_DET_PARAM) -dram_ssc=$(DRAM_SSC_PARAM) -dram_wt=$(DDR_TREFI_PARAM) +endif + +ifeq "$(COPY_BIN_2_STG)" "ON" +ifneq "$(NVT_STG_PATH)" "" + @-echo Copy \""$(BIN_R)\"" to $(NVT_STG_PATH) ... \ + && cp -f -v $(BIN_R) $(NVT_STG_PATH)$(notdir $(BIN_R)) +endif +ifneq "$(NVT_STG_PATH_MIPS2)" "" + @-echo Copy \""$(BIN_R)\"" to $(NVT_STG_PATH_MIPS2) ... \ + && cp -f -v $(BIN_R) $(NVT_STG_PATH_MIPS2)_FWMIPS2.bin +endif + +ifneq "$(NVT_STG_PATH_CA532)" "" + @-echo Copy \""$(BIN_R)\"" to $(NVT_STG_PATH_CA532)_FWCA532.bin ... \ + && cp -f -v $(BIN_R) $(NVT_STG_PATH_CA532)_FWCA532.bin +endif +endif + +.PHONY: +rm_log: +ifeq "$(CLEAN_LOG)" "ON" + @-rm -f $(log_file) +endif + +clean: + @-echo Clean $(basename $(notdir $(IMAGE_R))) ... \ + && rm -rf --no-preserve-root $(IMG_BASE_DIR) $(log_file) $(lint_file) + +ifeq "$(ISOLATE_DEP)" "ON" +all: rm_log + @make dep + @make debug + @make release + +rebuild: + @make clean + @make dep + @make debug + @make release + +dep: build_DEP +else +rebuild: clean build_D build_R +endif + +debug: rm_log make_debug_begin +ifeq ($(OS),Linux) + $(MAKE) build_pipe_D +else + $(MAKE) build_pipe_D $(JOB_FLAGS) +endif + +release: rm_log make_release_begin +ifeq ($(OS),Linux) + $(MAKE) build_pipe_R +else + $(MAKE) build_pipe_R $(JOB_FLAGS) +endif + +#remove unused remap.a for sdk +remap: + rm -v $(filter-out $(LIB_REMAP_D), $(LIB_REMAP_ALL_D)) $(filter-out $(LIB_REMAP_R), $(LIB_REMAP_ALL_R)) + +codesize: $(IMAGE_R) + @$(OBJDUMP) -t $< > $<.sym && \ + $(LDNVT) -j $<.sym && \ + mv RO_RW.txt ZI.txt $(IMG_RELEASE) diff --git a/board/novatek/na51055/loader/MakeCommon/OutputLib.txt b/board/novatek/na51055/loader/MakeCommon/OutputLib.txt new file mode 100755 index 000000000000..cf436efaa33d --- /dev/null +++ b/board/novatek/na51055/loader/MakeCommon/OutputLib.txt @@ -0,0 +1,155 @@ +#---------------------------------------------------------------------- +# Local variable to determine create library or binary file +#---------------------------------------------------------------------- +OUTPUT_FILE = LIB + +#---------------------------------------------------------------------- +# include make common and make option files +#---------------------------------------------------------------------- +ifeq "$(OPTION_LOADED)" "" + include $(MAKE_COMMON_DIR)/MakeOption.txt + LOCAL_CLEAN_LOG = $(CLEAN_LOG) +else + LOCAL_CLEAN_LOG = OFF +endif + +include $(MAKE_COMMON_DIR)/MakeCommon.txt + +#---------------------------------------------------------------------- +# set the make outputs +#---------------------------------------------------------------------- +IMAGE_D = $(IMG_DEBUG)/$(PRJ_NAME)_D.a +IMAGE_R = $(IMG_RELEASE)/$(PRJ_NAME).a + +#---------------------------------------------------------------------- +# set the warning/error log file option +#---------------------------------------------------------------------- +# $(APP_PATH), $(APPEXT_PATH), $(LIB_PATH), $(LIBEXT_PATH) will be assigned value in MakeCommon.txt +ifneq "$(ALG_PATH)" "" + log_file := $(subst MakeCommon,Alg/log_Alg.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,Alg/lint_Alg.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_Alg.lnt + lintsum_file := $(subst MakeCommon,App/lintsum_Alg.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(APP_PATH)" "" + log_file := $(subst MakeCommon,App/log_App.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,App/lint_App.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_App.lnt + lintsum_file := $(subst MakeCommon,App/lintsum_App.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(APPEXT_PATH)" "" + log_file := $(subst MakeCommon,AppExt/log_AppExt.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,AppExt/lint_AppExt.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_AppExt.lnt + lintsum_file := $(subst MakeCommon,AppExt/lintsum_AppExt.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(LIB_PATH)" "" + log_file := $(subst MakeCommon,Lib/log_Lib.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,Lib/lint_Lib.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_Lib.lnt + lintsum_file := $(subst MakeCommon,Lib/lintsum_Lib.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(LIBEXT_PATH)" "" + log_file := $(subst MakeCommon,LibExt/log_LibExt.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,LibExt/lint_LibExt.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_LibExt.lnt + lintsum_file := $(subst MakeCommon,LibExt/lintsum_LibExt.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(DRV_PATH)" "" + log_file := $(subst MakeCommon,Drv/log_Drv.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,Drv/lint_Drv.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_Drv.lnt + lintsum_file := $(subst MakeCommon,Drv/lintsum_Drv.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(DRVEXT_PATH)" "" + log_file := $(subst MakeCommon,DrvExt/log_DrvExt.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,DrvExt/lint_DrvExt.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_DrvExt.lnt + lintsum_file := $(subst MakeCommon,DrvExt/lintsum_DrvExt.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(COM_PATH)" "" + log_file := $(subst MakeCommon,Common/log_Common.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,Common/lint_Common.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_Common.lnt + lintsum_file := $(subst MakeCommon,Common/lintsum_Common.txt,$(MAKE_COMMON_DIR)) +else + log_file := /dev/null + lint_file := /dev/null + lintopt_file := /dev/null + lintsum_file := /dev/null +endif + +ifeq "$(LOG_ERR)" "ON" + LOG_OPTION = 2>>$(log_file) + LOG_DATE = date >>$(log_file) + LOG_SPACE = echo >>$(log_file) +endif + +#---------------------------------------------------------------------- +# set the make targets +#---------------------------------------------------------------------- +build_D: make_debug_begin $(IMAGE_D) +build_R: make_release_begin $(IMAGE_R) +build_pipe_D: $(IMAGE_D) +build_pipe_R: $(IMAGE_R) + +ifeq "$(ISOLATE_DEP)" "ON" +build_DEP: make_dep_begin $(ALL_DEP) +endif + +build_LINT: make_lint_begin $(LINT_FILE) + +$(IMAGE_D): $(ALL_OBJ_D) + @echo Creating library $(notdir $@) ... \ + && rm -f $(IMAGE_D) \ + && $(AR) -cru $@ $^ + +$(IMAGE_R): $(ALL_OBJ_R) + @echo Creating library $(notdir $@) ... \ + && rm -f $(IMAGE_R) \ + && $(AR) -cru $@ $^ + +.PHONY: +rm_log: +ifeq "$(LOCAL_CLEAN_LOG)" "ON" + @-rm -f $(log_file) +endif + +clean: + @-echo Clean $(basename $(notdir $(IMAGE_R))) ... \ + && rm -rf --no-preserve-root $(PRJ_NAME)_Data $(log_file) $(lint_file) + +ifeq "$(ISOLATE_DEP)" "ON" +all: rm_log + @make dep + @make debug + @make release + +rebuild: + @make clean + @make dep + @make debug + @make release + +dep: build_DEP +else +rebuild: clean build_D build_R +endif + +debug: rm_log make_debug_begin +ifeq ($(OS),Linux) + $(MAKE) build_pipe_D +else + $(MAKE) build_pipe_D $(JOB_FLAGS) +endif + +release: rm_log make_release_begin +ifeq ($(OS),Linux) + $(MAKE) build_pipe_R +else + $(MAKE) build_pipe_R $(JOB_FLAGS) +endif + +rm_lint_log: +ifeq "$(LOCAL_CLEAN_LOG)" "ON" + @-rm -f $(lint_file) +endif + +lint: rm_lint_log build_LINT + +lintclean: + @-echo Clean Lint $(basename $(notdir $(IMAGE_R))) checking data ... \ + && rm -rf --no-preserve-root $(LINT_DIR) $(lint_file) diff --git a/board/novatek/na51055/loader/MakeCommon/dump_tmp b/board/novatek/na51055/loader/MakeCommon/dump_tmp new file mode 100755 index 000000000000..e69de29bb2d1 diff --git a/board/novatek/na51055/loader/MakeCommon/make_combo_loader.sh b/board/novatek/na51055/loader/MakeCommon/make_combo_loader.sh new file mode 100755 index 000000000000..355662ca8a54 --- /dev/null +++ b/board/novatek/na51055/loader/MakeCommon/make_combo_loader.sh @@ -0,0 +1,229 @@ +#!/bin/bash +MODEL_BUILD_LIST=("lunch rtos cfg_TEST_REALCHIP gcc-linaro-6.4.1-2018.05-x86_64_arm-eabi" + "lunch rtos cfg_TEST_RTOS_RUN_CORE2 gcc-linaro-6.4.1-2018.05-x86_64_arm-eabi") + +function make_NT98525_loader_only(){ + cp ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h ../LibExt/LIBExt_src/Ctrl_Flow/bl_func_tmp.h + cp ../Project/Model/ModelConfig_EMU_EVB_528.txt ../Project/Model/ModelConfig_EMU_EVB_528_tmp.txt + cp ../Project/Model/ModelConfig_EMU_EVB.txt ../Project/Model/ModelConfig_EMU_EVB_tmp.txt + sed -i 's/^#define LOADER_TYPE[ \t].*/#define LOADER_TYPE STAND_ALONE_LOADER_52x/g' ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + make clean "MODEL=EMU_EVB" + make clean "MODEL=EMU_EVB_528" + make release "MODEL=EMU_EVB" + if [ -d "../output" ]; then + rm -rf ../output + mkdir -p ../output + else + mkdir -p ../output + fi + find ../Project/Model/ -name LD*.bin -exec cp {} ../output \; + cp ../LibExt/LIBExt_src/Ctrl_Flow/bl_func_tmp.h ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + cp ../Project/Model/ModelConfig_EMU_EVB_528_tmp.txt ../Project/Model/ModelConfig_EMU_EVB_528.txt + cp ../Project/Model/ModelConfig_EMU_EVB_tmp.txt ../Project/Model/ModelConfig_EMU_EVB.txt + #cp ../Project/Model/Loader525_Data/Release/LD98525A.bin ../output +} + +function make_NT98528_loader_only(){ + cp ../Project/Model/ModelConfig_EMU_EVB_528.txt ../Project/Model/ModelConfig_EMU_EVB_528_tmp.txt + cp ../Project/Model/ModelConfig_EMU_EVB.txt ../Project/Model/ModelConfig_EMU_EVB_tmp.txt + cp ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h ../LibExt/LIBExt_src/Ctrl_Flow/bl_func_tmp.h + sed -i 's/^#define LOADER_TYPE[ \t].*/#define LOADER_TYPE STAND_ALONE_LOADER_528/g' ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + make clean "MODEL=EMU_EVB" + make clean "MODEL=EMU_EVB_528" + make release "MODEL=EMU_EVB_528" + if [ -d "../output" ]; then + rm -rf ../output + mkdir -p ../output + else + mkdir -p ../output + fi + find ../Project/Model/ -name LD*.bin -exec cp {} ../output \; + cp ../LibExt/LIBExt_src/Ctrl_Flow/bl_func_tmp.h ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + cp ../Project/Model/ModelConfig_EMU_EVB_528_tmp.txt ../Project/Model/ModelConfig_EMU_EVB_528.txt + cp ../Project/Model/ModelConfig_EMU_EVB_tmp.txt ../Project/Model/ModelConfig_EMU_EVB.txt + #cp ../Project/Model/Loader528_Data/Release/LD98528A.bin ../output +} + +function make_NT9852x_combo_loader(){ + if [ -d "../output" ]; then + rm -rf ../output + mkdir -p ../output + else + mkdir -p ../output + fi + sed -i 's/^#define LOADER_TYPE[ \t].*/#define LOADER_TYPE COMBINATION_52x/g' ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + make clean "MODEL=EMU_EVB" + make release "MODEL=EMU_EVB" "BIN_NAME=LDCOMBOA" "52x_528_COMBO=ON" + find ../Project/Model/ -name LD*.bin -exec cp {} ../output/LD9852XA.bin \; + #cp ../Project/Model/Loader525_Data/Release/LDCOMBOA.bin ../output/LD98525A.bin + sed -i 's/^#define LOADER_TYPE[ \t].*/#define LOADER_TYPE COMBINATION_528/g' ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + make clean + make release "MODEL=EMU_EVB_528" "BIN_NAME=LDCOMBOA" + find ../Project/Model/ -name LD*.bin -exec cp {} ../output/LD98528A.bin \; + #cp ../Project/Model/Loader528_Data/Release/LDCOMBOA.bin ../output/LD98528A.bin + cat ../output/LD9852XA.bin ../output/LD98528A.bin > ../output/LDCOMBOA.bin + sed -i 's/^#define LOADER_TYPE[ \t].*/#define LOADER_TYPE STAND_ALONE_LOADER_52x/g' ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h +} + +function make_NT98525_eth_write_loader(){ + cp ../Project/Model/ModelConfig_EMU_EVB.txt ../Project/Model/ModelConfig_EMU_EVB_tmp.txt + sed -i 's/^#define LOADER_TYPE[ \t].*/#define LOADER_TYPE STAND_ALONE_LOADER_52x/g' ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + sed -i 's/^STORAGEEXT =[ \t].*/STORAGEEXT = Eth/g' ../Project/Model/ModelConfig_EMU_EVB.txt + make clean "MODEL=EMU_EVB" + make clean "MODEL=EMU_EVB_528" + make release "MODEL=EMU_EVB" + if [ -d "../output" ]; then + rm -rf ../output + mkdir -p ../output + else + mkdir -p ../output + fi + find ../Project/Model/ -name loader.bin -exec cp {} ../output \; + cp ../Project/Model/ModelConfig_EMU_EVB_tmp.txt ../Project/Model/ModelConfig_EMU_EVB.txt + rm -rf ../Project/Model/ModelConfig_EMU_EVB_tmp.txt + #cp ../Project/Model/Loader525_Data/Release/LD98525A.bin ../output +} + +function make_NT98528_eth_write_loader(){ + cp ../Project/Model/ModelConfig_EMU_EVB_528.txt ../Project/Model/ModelConfig_EMU_EVB_528_tmp.txt + sed -i 's/^#define LOADER_TYPE[ \t].*/#define LOADER_TYPE STAND_ALONE_LOADER_528/g' ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + sed -i 's/^STORAGEEXT =[ \t].*/STORAGEEXT = Eth/g' ../Project/Model/ModelConfig_EMU_EVB_528.txt + make clean "MODEL=EMU_EVB" + make clean "MODEL=EMU_EVB_528" + make release "MODEL=EMU_EVB_528" + if [ -d "../output" ]; then + rm -rf ../output + mkdir -p ../output + else + mkdir -p ../output + fi + find ../Project/Model/ -name loader.bin -exec cp {} ../output/loader.bin \; + cp ../Project/Model/ModelConfig_EMU_EVB_528_tmp.txt ../Project/Model/ModelConfig_EMU_EVB_528.txt + rm -rf ../Project/Model/ModelConfig_EMU_EVB_528_tmp.txt +} + +function make_NT98525_usb_write_loader(){ + cp ../Project/Model/ModelConfig_EMU_EVB.txt ../Project/Model/ModelConfig_EMU_EVB_tmp.txt + sed -i 's/^#define LOADER_TYPE[ \t].*/#define LOADER_TYPE STAND_ALONE_LOADER_52x/g' ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + sed -i 's/^STORAGEEXT =[ \t].*/STORAGEEXT = Usb/g' ../Project/Model/ModelConfig_EMU_EVB.txt + make clean "MODEL=EMU_EVB" + make clean "MODEL=EMU_EVB_528" + make release "MODEL=EMU_EVB" + if [ -d "../output" ]; then + rm -rf ../output + mkdir -p ../output + else + mkdir -p ../output + fi + find ../Project/Model/ -name LD98525A.bin -exec cp {} ../output/Wrldr525.bin \; + #cp ../Project/Model/Loader525_Data/Release/LD98525A.bin ../output + cp ../Project/Model/ModelConfig_EMU_EVB_tmp.txt ../Project/Model/ModelConfig_EMU_EVB.txt + rm -rf ../Project/Model/ModelConfig_EMU_EVB_tmp.txt +} + +function make_NT98528_usb_write_loader(){ + cp ../Project/Model/ModelConfig_EMU_EVB_528.txt ../Project/Model/ModelConfig_EMU_EVB_528_tmp.txt + sed -i 's/^#define LOADER_TYPE[ \t].*/#define LOADER_TYPE STAND_ALONE_LOADER_528/g' ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + sed -i 's/^STORAGEEXT =[ \t].*/STORAGEEXT = Usb/g' ../Project/Model/ModelConfig_EMU_EVB_528.txt + make clean "MODEL=EMU_EVB" + make clean "MODEL=EMU_EVB_528" + make release "MODEL=EMU_EVB_528" + if [ -d "../output" ]; then + rm -rf ../output + mkdir -p ../output + else + mkdir -p ../output + fi + find ../Project/Model/ -name LD98528A.bin -exec cp {} ../output/Wrldr528.bin \; + cp ../Project/Model/ModelConfig_EMU_EVB_528_tmp.txt ../Project/Model/ModelConfig_EMU_EVB_528.txt + rm -rf ../Project/Model/ModelConfig_EMU_EVB_528_tmp.txt +} + +make_NT98528_sqa_fastboot_test_nand(){ + cp ../Project/Model/ModelConfig_EMU_EVB_528.txt ../Project/Model/ModelConfig_EMU_EVB_528_tmp.txt + cp ../Project/Model/ModelConfig_EMU_EVB.txt ../Project/Model/ModelConfig_EMU_EVB_tmp.txt + cp ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h ../LibExt/LIBExt_src/Ctrl_Flow/bl_func_tmp.h + cp ../Project/Model/Src/prj_main.h ../Project/Model/Src/prj_main_tmp.h + + sed -i 's/^SDRAM2_SIZE =[ \t].*/SDRAM2_SIZE = 0/g' ../Project/Model/ModelConfig_EMU_EVB_528.txt + sed -i 's/^#define DEBUG_MSG[ \t].*/#define DEBUG_MSG (DISABLE)/g' ../Project/Model/Src/prj_main.h + sed -i 's/^#define LOADER_TYPE[ \t].*/#define LOADER_TYPE STAND_ALONE_LOADER_528/g' ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + sed -i 's/^[ \t]\/\/strg_obj->flash_setFrequency(96);*/strg_obj->flash_setFrequency(96);/g' ../Project/Model/Src/prj_main.c + make clean "MODEL=EMU_EVB" + make clean "MODEL=EMU_EVB_528" + make release "MODEL=EMU_EVB_528" + if [ -d "../output" ]; then + rm -rf ../output + mkdir -p ../output + else + mkdir -p ../output + fi + find ../Project/Model/ -name LD*.bin -exec cp {} ../output \; + cp ../LibExt/LIBExt_src/Ctrl_Flow/bl_func_tmp.h ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + cp ../Project/Model/ModelConfig_EMU_EVB_528_tmp.txt ../Project/Model/ModelConfig_EMU_EVB_528.txt + cp ../Project/Model/ModelConfig_EMU_EVB_tmp.txt ../Project/Model/ModelConfig_EMU_EVB.txt + cp ../Project/Model/Src/prj_main_tmp.h ../Project/Model/Src/prj_main.h + #cp ../Project/Model/Loader528_Data/Release/LD98528A.bin ../output +} + +echo -e "Please select NMAKE environment:" +echo -e "1. make NT9852x standalone loader(MODEL = EMU_EVB)" +echo -e "2. make NT98528/NT98529 standalone loader(MODEL = EMU_EVB_528)" +echo -e "3. make NT9852x & NT98528 combination loader" +echo -e "4. make NT9852x Eth write loader(MODEL = EMU_EVB)" +echo -e "5. make NT98528/NT98529 Eth write loader(MODEL = EMU_EVB_528)" +echo -e "6. make NT9852x Usb write loader(MODEL = EMU_EVB)" +echo -e "7. make NT98528/NT98529 Usb write loader(MODEL = EMU_EVB_528)" +echo -e "-------------------------------------------------------" +echo -e "8. make NT9852x (tee) & NT98528 (tee) combination loader" +echo -e "-------------------------------------------------------" +echo -e "z. make NT9852x MT version loader(in house usage)" +echo -e "-------------------------------------------------------" +echo -e "s. make NT98528 for SQA fastboot test(internal usage)" +echo -e "-------------------------------------------------------" + + +read NMAKE_ENV +case ${NMAKE_ENV} in + "1") + make_NT98525_loader_only; + ;; + "2") + make_NT98528_loader_only; + ;; + "3") + make_NT9852x_combo_loader; + ;; + "4") + make_NT98525_eth_write_loader; + ;; + "5") + make_NT98528_eth_write_loader; + ;; + "6") + make_NT98525_usb_write_loader; + ;; + "7") + make_NT98528_usb_write_loader; + ;; + "8") + sed -i 's/^#define SDRAM_Start_FW[ \t].*/#define SDRAM_Start_FW 0x08000000/g' ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + make_NT9852x_combo_loader; + sed -i 's/^#define SDRAM_Start_FW[ \t].*/#define SDRAM_Start_FW 0x02000000/g' ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + ;; + "z") + sed -i 's/^#define UITRON_FW[ \t].*/#define UITRON_FW ENABLE/g' ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + make_NT98525_loader_only; + sed -i 's/^#define UITRON_FW[ \t].*/#define UITRON_FW DISABLE/g' ../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h + ;; + "s") + make_NT98528_sqa_fastboot_test_nand; + ;; + + *) + echo -e "exit" + ;; +esac + + + diff --git a/board/novatek/na51055/loader/Project/Model/LDS_LZ.lds b/board/novatek/na51055/loader/Project/Model/LDS_LZ.lds new file mode 100755 index 000000000000..8987f20ed14c --- /dev/null +++ b/board/novatek/na51055/loader/Project/Model/LDS_LZ.lds @@ -0,0 +1,168 @@ +/* Linker script for malta + * + * Version: Sourcery G++ Lite 4.3-221 + * Support: https://support.codesourcery.com/GNUToolchain/ + * + * Copyright (c) 2007, 2008, 2009 CodeSourcery, Inc. + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + * */ + +/* Rule: + * 1. to use .o in project layer just type the .o name with file extension. (UiFlow.o) + * 2. to use .o in library layer have to add prefix module name. (DscSystem/SysTask.o) + * */ + +OUTPUT_ARCH(arm) +ENTRY(__start) +SEARCH_DIR(.) + +SECTIONS +{ + .BOOT_EXEC 0xF07C0000|0x00000000: + AT (0) + { + _load_BOOT_EXEC_start_base = .; + KEEP($LD_RESET_LIB/reset.o(.data*)); + $LD_RESET_LIB/reset.o(.text*); + _load_BOOT_EXEC_end_base = .; + } + .LOADER_CONFIGRAM (0xF07C0000|0x00000000) + 0x30: + AT (0x30) + { + _load_LOADER_CONFIGRAM_start_base = .; + KEEP($LD_REMAP_LIB/$LD_CONFIGRAM.o(.data*)); + _load_LOADER_CONFIGRAM_end_base = .; + _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base = .; + KEEP($LD_RESET_LIB/configramFreqParam.o(.data*)); + _load_LOADER_CONFIGRAM_FREQ_PARAM_end_base = .; + } + .LOADER_CONFIGRAM2 (0xF07C0000|0x00000000) + 0x300: + AT (0x300) + { + KEEP($LD_RESET_LIB/config_dram1_tbl.o(.rodata*)); + config_dram2_tbl_start_base = .; + KEEP($LD_RESET_LIB/config_dram2_tbl.o(.rodata*)); + config_dram1_tbl_2_start_base = .; + KEEP($LD_RESET_LIB/config_dram1_2_tbl.o(.rodata*)); + KEEP($LD_RESET_LIB/config_dram1_tbl2.o(.rodata*)); + KEEP($LD_RESET_LIB/config_dram2_tbl2.o(.rodata*)); + } + .LOADER_REMAP (0xF07C0000|0x00000000) + 0x630: + AT (0x630) + { + _load_vector_int_table_start_base = .; + KEEP($LD_RESET_LIB/isr.o(.text)); + _load_vector_int_table_end_base = .; + $LD_REMAP_LIB/$LD_DOREMAP.o(.text*); + _load_LOADER_REMAP_end_base = .; + _load_vector_exp_table_start_base = .; + KEEP($LD_RESET_LIB/exp.o(.text*)); + _load_vector_exp_table_end_base = .; + KEEP($LD_RESET_LIB/configDDR.o(.text*)); + KEEP($LD_RESET_LIB/configDDR.o(.rodata*)); + . = ALIGN(4); /* This is MUST. Ensure section size is word aligned. */ + } + + . = ALIGN(4); + .LOADER_EXEC ADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP) : + AT (LOADADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP)) + { + _loader_exec_start_base = .; + KEEP(Ctrl_Flow/main.o(.part1*)); + KEEP(Driver/rtc.o(.part1*)); + * (.part1) + _loader_exec_end_base = .; + } + _loader_exec_cpu_addr = LOADADDR(.LOADER_EXEC) + ADDR(.BOOT_EXEC); + _loader_exec_size = SIZEOF(.LOADER_EXEC); + + . = ALIGN(4); + .text $LD_BASE_ADDR: + AT (LOADADDR(.LOADER_EXEC) + SIZEOF(.LOADER_EXEC)) + { + _loader_exec_compres_start = .; + _internal_strg_param_start = .; + *(.text*) + _loader_exec_compres_end = .; + } + _loader_exec_compress_load_base = LOADADDR(.text); + _loader_exec_compress_load_cpu_addr = LOADADDR(.text) + ADDR(.BOOT_EXEC); + .ARM.exidx : + { + *(.ARM.exidx*) + *(.gnu.linkonce.armexidx.*) + } + . = ALIGN(4); + .rodata : + { + *(.rodata*) + . = ALIGN(8); /* This is MUST. Ensure ro size is 2 word aligned. */ + } + .dram_text : + AT (LOADADDR(.rodata) + SIZEOF(.rodata)) + { + _loader_dram_text_start_base = .; + * (.dram_text) + } + _loader_dram_text_cpu_addr = LOADADDR(.dram_text) + ADDR(.BOOT_EXEC); + _loader_dram_text_size = SIZEOF(.dram_text); + .data : + AT (LOADADDR(.dram_text) + SIZEOF(.dram_text)) + { + _loader_data_start_base = .; + _load_general_var_base = .; + _image_general_var_base = .; + *(.data*) + _image_general_var_limit = .; + } + _loader_data_cpu_addr = LOADADDR(.data) + ADDR(.BOOT_EXEC); + _loader_data_size = SIZEOF(.data); + .dummy : { LONG (0x00000000) } + . = ALIGN(4); + .got : { *(.got) } + . = ALIGN(4); + .bss : { /* locate bss at DRAM end */ + _image_general_zi_zi_base = .; + *(.bss) + . = ALIGN(0x4000); + _ttb = .; + . = . + 0x4000; + . = ALIGN(0x400); + _ttb_lv2 = .; + . = . + 0x400; + } + .common : + { + __common_base = ABSOLUTE(.); + /* collect "small" un-initialized global data (mark "C" in sym file) */ + *(.scommon*) + /* collect "large" un-initialized global data (mark "B" in sym file) */ + *(COMMON) + __common_limit = ABSOLUTE(.); + } + . = ALIGN(64); + _image_general_zi_zi_limit = ABSOLUTE(.); + _load_load_reset_base = .; + _image_load_reset_base = .; + _image_load_reset_length = .; + _image_load_reset_zi_base = .; + _image_load_reset_zi_limit = .; + . = ALIGN(64); + .loader_heap : + { + _loader_heap_base = .; + . += 0xA0000 + 0x20000 + 0x80000; + } + . = ALIGN(64); + _stack_start = .; + +} diff --git a/board/novatek/na51055/loader/Project/Model/LDS_LZ_528.lds b/board/novatek/na51055/loader/Project/Model/LDS_LZ_528.lds new file mode 100755 index 000000000000..4b73d7cdec53 --- /dev/null +++ b/board/novatek/na51055/loader/Project/Model/LDS_LZ_528.lds @@ -0,0 +1,193 @@ +/* Linker script for malta + * + * Version: Sourcery G++ Lite 4.3-221 + * Support: https://support.codesourcery.com/GNUToolchain/ + * + * Copyright (c) 2007, 2008, 2009 CodeSourcery, Inc. + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + * */ + +/* Rule: + * 1. to use .o in project layer just type the .o name with file extension. (UiFlow.o) + * 2. to use .o in library layer have to add prefix module name. (DscSystem/SysTask.o) + * */ + +OUTPUT_ARCH(arm) +ENTRY(__start) +SEARCH_DIR(.) + +SECTIONS +{ + .BOOT_EXEC 0xF07C0000|0x00000000: + AT (0) + { + _load_BOOT_EXEC_start_base = .; + KEEP($LD_RESET_LIB/reset.o(.data*)); + $LD_RESET_LIB/reset.o(.text*); + _load_BOOT_EXEC_end_base = .; + } + .LOADER_CONFIGRAM (0xF07C0000|0x00000000) + 0x30: + AT (0x30) + { + _load_LOADER_CONFIGRAM_start_base = .; + KEEP($LD_REMAP_LIB/$LD_CONFIGRAM.o(.data*)); + _load_LOADER_CONFIGRAM_end_base = .; + _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base = .; + KEEP($LD_RESET_LIB/configramFreqParam.o(.data*)); + _load_LOADER_CONFIGRAM_FREQ_PARAM_end_base = .; + } + .LOADER_CONFIGRAM2 (0xF07C0000|0x00000000) + 0x300: + AT (0x300) + { + KEEP($LD_RESET_LIB/config_dram1_tbl.o(.rodata*)); + KEEP($LD_RESET_LIB/config_dram2_tbl.o(.rodata*)); + KEEP($LD_RESET_LIB/config_dram1_tbl2.o(.rodata*)); + KEEP($LD_RESET_LIB/config_dram2_tbl2.o(.rodata*)); + } + .LOADER_CORE2_ENTRY_PROGRAM (0xF07C0000|0x00000000) + 0x580: + AT (0x580) + { + _load_core2_jump_program_start_base = .; + KEEP($LD_RESET_LIB/core2_jump.o(.text)); + _load_core2_jump_program_end_base = .; + _load_core2_entry_program_start_base = .; + KEEP($LD_RESET_LIB/core2_entry.o(.text)); + _load_core2_entry_program_end_base = .; + } + .LOADER_REMAP (0xF07C0000|0x00000000) + 0x750: + AT (0x750) + { + _load_vector_int_table_start_base = .; + _load_vector_int_table_end_base = .; + $LD_REMAP_LIB/$LD_DOREMAP.o(.text* .data*); + _load_LOADER_REMAP_end_base = .; + _load_vector_exp_table_start_base = .; + _load_vector_exp_table_end_base = .; + KEEP($LD_RESET_LIB/configDDR.o (.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/ddr_basic.o (.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/ddr_control.o (.text* .rodata*)); + KEEP($LD_RESET_LIB/ddr_globals.o (.data*)); + KEEP($LD_RESET_LIB/ddr_io.o (.text* .rodata*)); + KEEP($LD_RESET_LIB/clk_tree_k.o (.text* .rodata*)); + KEEP($LD_RESET_LIB/zqk.o (.text* .rodata*)); + KEEP($LD_RESET_LIB/dutyk.o (.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/qsen.o (.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/issue_cmd.o (.text* .rodata*)); + KEEP($LD_RESET_LIB/phy_bist.o (.text* .rodata*)); + KEEP($LD_RESET_LIB/psdk.o (.text* .rodata*)); + KEEP($LD_RESET_LIB/read_eye.o (.text* .rodata* .data*)); + KEEP($LD_RESET_LIB/write_eye.o (.text* .rodata* .data*)); + KEEP($LD_RESET_LIB/write_leveling.o (.text* .rodata*)); + KEEP($LD_RESET_LIB/register_673c.o(.text* .rodata* .data* .bss*)); + *libgcc.a:*(.text*); + . = ALIGN(4); /* This is MUST. Ensure section size is word aligned. */ + } + + . = ALIGN(4); + .LOADER_EXEC ADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP) : + AT (LOADADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP)) + { + _loader_exec_start_base = .; + KEEP(Ctrl_Flow/main.o(.part1*)); + KEEP(Driver/rtc.o(.part1*)); + * (.part1) + _loader_exec_end_base = .; + } + _loader_exec_cpu_addr = LOADADDR(.LOADER_EXEC) + ADDR(.BOOT_EXEC); + _loader_exec_size = SIZEOF(.LOADER_EXEC); + + . = ALIGN(4); + .LOADER_REMAP_BSS (0xF07D0000|0x00000000): + { + KEEP($LD_RESET_LIB/ddr_io.o(.bss*)); + KEEP($LD_RESET_LIB/write_eye.o(.bss*)); + } + .text $LD_BASE_ADDR: + AT (LOADADDR(.LOADER_EXEC) + SIZEOF(.LOADER_EXEC)) + { + _loader_exec_compres_start = .; + _internal_strg_param_start = .; + *(.text*) + _loader_exec_compres_end = .; + } + _loader_exec_compress_load_base = LOADADDR(.text); + _loader_exec_compress_load_cpu_addr = LOADADDR(.text) + ADDR(.BOOT_EXEC); + .ARM.exidx : + { + *(.ARM.exidx*) + *(.gnu.linkonce.armexidx.*) + } + . = ALIGN(4); + .rodata : + { + *(.rodata*) + . = ALIGN(8); /* This is MUST. Ensure ro size is 2 word aligned. */ + } + .dram_text : + AT (LOADADDR(.rodata) + SIZEOF(.rodata)) + { + _loader_dram_text_start_base = .; + * (.dram_text) + } + _loader_dram_text_cpu_addr = LOADADDR(.dram_text) + ADDR(.BOOT_EXEC); + _loader_dram_text_size = SIZEOF(.dram_text); + .data : + AT (LOADADDR(.dram_text) + SIZEOF(.dram_text)) + { + _loader_data_start_base = .; + _load_general_var_base = .; + _image_general_var_base = .; + *(.data*) + _image_general_var_limit = .; + } + _loader_data_cpu_addr = LOADADDR(.data) + ADDR(.BOOT_EXEC); + _loader_data_size = SIZEOF(.data); + .dummy : { LONG (0x00000000) } + . = ALIGN(4); + .got : { *(.got) } + . = ALIGN(4); + .bss : { /* locate bss at DRAM end */ + _image_general_zi_zi_base = .; + *(.bss) + . = ALIGN(0x4000); + _ttb = .; + . = . + 0x4000; + . = ALIGN(0x400); + _ttb_lv2 = .; + . = . + 0x400; + } + .common : + { + __common_base = ABSOLUTE(.); + /* collect "small" un-initialized global data (mark "C" in sym file) */ + *(.scommon*) + /* collect "large" un-initialized global data (mark "B" in sym file) */ + *(COMMON) + __common_limit = ABSOLUTE(.); + } + . = ALIGN(64); + _image_general_zi_zi_limit = ABSOLUTE(.); + _load_load_reset_base = .; + _image_load_reset_base = .; + _image_load_reset_length = .; + _image_load_reset_zi_base = .; + _image_load_reset_zi_limit = .; + . = ALIGN(64); + .loader_heap : + { + _loader_heap_base = .; + . += 0xA0000 + 0x20000 + 0x80000; + } + . = ALIGN(64); + _stack_start = .; + +} diff --git a/board/novatek/na51055/loader/Project/Model/LDS_NM.lds b/board/novatek/na51055/loader/Project/Model/LDS_NM.lds new file mode 100755 index 000000000000..586d5e9998ab --- /dev/null +++ b/board/novatek/na51055/loader/Project/Model/LDS_NM.lds @@ -0,0 +1,161 @@ +/* Linker script for malta + * + * Version: Sourcery G++ Lite 4.3-221 + * Support: https://support.codesourcery.com/GNUToolchain/ + * + * Copyright (c) 2007, 2008, 2009 CodeSourcery, Inc. + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + * */ + +/* Rule: + * 1. to use .o in project layer just type the .o name with file extension. (UiFlow.o) + * 2. to use .o in library layer have to add prefix module name. (DscSystem/SysTask.o) + * */ + +OUTPUT_ARCH(arm) +ENTRY(__start) +SEARCH_DIR(.) + +SECTIONS +{ + .BOOT_EXEC 0xF07C0000|0x00000000: + AT (0) + { + _load_BOOT_EXEC_start_base = .; + KEEP(Reset/reset.o(.data*)); + Reset/reset.o(.text*); + _load_BOOT_EXEC_end_base = .; + } + .LOADER_CONFIGRAM (0xF07C0000|0x00000000) + 0x30: + AT (0x30) + { + _load_LOADER_CONFIGRAM_start_base = .; + KEEP($LD_REMAP_LIB/$LD_CONFIGRAM.o(.data*)); + _load_LOADER_CONFIGRAM_end_base = .; + _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base = .; + KEEP(Reset/configramFreqParam.o(.data*)); + _load_LOADER_CONFIGRAM_FREQ_PARAM_end_base = .; + KEEP(Reset/config_dram1_tbl.o(.rodata*)); + } + .LOADER_CONFIGRAM2 (0xF07C0000|0x00000000) + 0x200: + AT (0x200) + { + KEEP(Reset/config_dram2_tbl.o(.rodata*)); + } + .LOADER_CORE2_ENTRY_PROGRAM (0xF07C0000|0x00000000) + 0x300: + AT (0x300) + { + _load_core2_entry_program_start_base = .; + KEEP(Reset/core2_entry.o(.text)); + _load_core2_entry_program_end_base = .; + } + .internal_stg_type (0xF07C0000|0x00000000) + 0x420: { LONG (0x46495053) } + .internal_stg_version : + AT (LOADADDR(.internal_stg_type) + SIZEOF(.internal_stg_type)) + { + _load_nand_table_start_base = .; + _load_nand_table_end_base = .; + } + .LOADER_REMAP (0xF07C0000|0x00000000) + 0x430: + AT (0x430) + { + _load_vector_int_table_start_base = .; + KEEP(Reset/isr.o(.text)); + _load_vector_int_table_end_base = .; + $LD_REMAP_LIB/$LD_DOREMAP.o(.text*); + _load_LOADER_REMAP_end_base = .; + _load_vector_exp_table_start_base = .; + KEEP(Reset/exp.o(.text*)); + _load_vector_exp_table_end_base = .; + KEEP(Reset/configDDR.o(.text*)); + KEEP(Reset/configDDR.o(.rodata*)); + . = ALIGN(4); /* This is MUST. Ensure section size is word aligned. */ + } + + . = ALIGN(4); + .LOADER_EXEC : + AT (LOADADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP)) + { + _loader_exec_start_base = .; + KEEP(Ctrl_Flow/main.o(.part1*)); + KEEP(Driver/rtc.o(.part1*)); + * (.part1) + _loader_exec_end_base = .; + } + _loader_exec_cpu_addr = LOADADDR(.LOADER_EXEC) + ADDR(.BOOT_EXEC); + _loader_exec_size = SIZEOF(.LOADER_EXEC); + + . = ALIGN(4); + .text : + AT (LOADADDR(.LOADER_EXEC) + SIZEOF(.LOADER_EXEC)) + { + _loader_exec_compres_start = .; + _internal_strg_param_start = .; + *(.text*) + _loader_exec_compres_end = .; + } + _loader_exec_compress_load_base = LOADADDR(.text); + _loader_exec_compress_load_cpu_addr = LOADADDR(.text) + ADDR(.BOOT_EXEC); + . = ALIGN(4); + .rodata : + { + *(.rodata*) + . = ALIGN(4); /* This is MUST. Ensure ro size is word aligned. */ + } + .data 0xFF00000: + AT (LOADADDR(.rodata) + SIZEOF(.rodata)) + { + _loader_data_start_base = .; + _load_general_var_base = .; + _image_general_var_base = .; + *(.data*) + _image_general_var_limit = .; + } + _loader_data_cpu_addr = LOADADDR(.data) + ADDR(.BOOT_EXEC); + _loader_data_size = SIZEOF(.data); + .dummy : { LONG (0x00000000) } + . = ALIGN(4); + .got : { *(.got) } + . = ALIGN(4); + .bss : { /* locate bss at DRAM end */ + _image_general_zi_zi_base = .; + *(.bss) + . = ALIGN(0x4000); + _ttb = .; + . = . + 0x4000; + } + .common : + { + __common_base = ABSOLUTE(.); + /* collect "small" un-initialized global data (mark "C" in sym file) */ + *(.scommon*) + /* collect "large" un-initialized global data (mark "B" in sym file) */ + *(COMMON) + __common_limit = ABSOLUTE(.); + } + . = ALIGN(64); + _image_general_zi_zi_limit = ABSOLUTE(.); + _load_load_reset_base = .; + _image_load_reset_base = .; + _image_load_reset_length = .; + _image_load_reset_zi_base = .; + _image_load_reset_zi_limit = .; + . = ALIGN(64); + .loader_heap : + { + _loader_heap_base = .; + . += 0xA0000 + 0x20000 + 0x80000; + } + . = ALIGN(64); + _stack_start = .; + +} diff --git a/board/novatek/na51055/loader/Project/Model/MakeConfig.txt b/board/novatek/na51055/loader/Project/Model/MakeConfig.txt new file mode 100755 index 000000000000..81468ec5fd3d --- /dev/null +++ b/board/novatek/na51055/loader/Project/Model/MakeConfig.txt @@ -0,0 +1,972 @@ +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +#------------------------------------------------------------------------------ +# Loader version : unsigned long loader version definition +#------------------------------------------------------------------------------ +LOADER_VERSION = 0x01000001 +BL_LOADER_VER_PARAM = \ + -D_LDR_VER_="$(LOADER_VERSION)" + +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +# +# Hardware device selection +# +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#------------------------------------------------------------------------------ +# Select main chip ID +#------------------------------------------------------------------------------ +#CHIP = 520 + +#------------------------------------------------------------------------------ +# Select chip version +#------------------------------------------------------------------------------ +#CHIP_VER = A +#CHIP_VER = B + +#------------------------------------------------------------------------------ +# Select LV1 clock rate +# LV1: 491MHz / 593MHz +#------------------------------------------------------------------------------ +#LV1_CLK = 491 +#LV1_CLK = 593 + +#------------------------------------------------------------------------------ +# Select DMA clock rate +#------------------------------------------------------------------------------ +#DMA_CLOCK = LV0 +#DMA_CLOCK = LV1 + +#ifeq "$(DMA_CLOCK)" "LV1" +#ifeq "$(LV1_CLK)" "491" +#DMA_CLOCK = LV1_4 +#else +#DMA_CLOCK = LV1_5 +#endif +#endif +ifeq "$(CHIP)" "525" +else +ifeq "$(NC520_525_COMBO)" "ON" +$(error NC520_525_COMBO only available while CHIP=525) +endif +endif + +ifeq "$(CHIP)" "528" +ifeq "$(52x_528_COMBO)" "ON" +$(error 52x_528_COMBO only available while CHIP!=528 && CHIP!=529 && CHIP!=580) +endif +else ifeq "$(CHIP)" "529" +ifeq "$(52x_528_COMBO)" "ON" +$(error 52x_528_COMBO only available while CHIP!=528 && CHIP!=529 && CHIP!=580) +endif +endif + + + +ifeq "$(CHIP)" "525" + +# DRAM1 external +# DRAM2 external + +ifeq "$(NC520_525_COMBO)" "ON" +else +NC520_COMBO_DRAM1_CLK = 0 +NC520_COMBO_SDRAM_SIZE = 0 +endif + +else ifeq "$(CHIP)" "523" + +DRAM1_CLK = 933 +DRAM1_2ND_CLK = 933 +# DRAM1 force @ 1Gb +SDRAM_SIZE = 1024 +SDRAM_2ND_SIZE = 1024 +# DRAM2 external + +else ifeq "$(CHIP)" "523_A" + +DRAM1_CLK = 933 +DRAM1_2ND_CLK = 933 +# DRAM1 force @ 1Gb +SDRAM_SIZE = 1024 +SDRAM_2ND_SIZE = 1024 +# DRAM2 external + +else ifeq "$(CHIP)" "522" + +DRAM1_CLK = 933 +DRAM1_2ND_CLK = 933 +# DRAM1 force @ 512Mb +SDRAM_SIZE = 512 +SDRAM_2ND_SIZE = 512 +# DRAM2 external + +else ifeq "$(CHIP)" "520" + +# DRAM1 external +DRAM2_CLK = 0 +SDRAM2_SIZE = 0 + +else ifeq "$(CHIP)" "NC520" +# DRAM1 external +DRAM2_CLK = 0 +SDRAM2_SIZE = 0 + +else ifeq "$(CHIP)" "575" + +DRAM1_CLK = 933 +DRAM1_2ND_CLK = 933 +SDRAM_SIZE = 1024 +SDRAM_2ND_SIZE = 1024 +# DRAM2 external + +else ifeq "$(CHIP)" "570" +# DRAM1 external +# DRAM2 external + +else ifeq "$(CHIP)" "528" +# DRAM1 external +# DRAM2 external + +else ifeq "$(CHIP)" "580" +# DRAM1 external +# DRAM2 external + +else ifeq "$(CHIP)" "529" +# DRAM1 external +# DRAM2 external + +else ifeq "$(CHIP)" "565" + +DRAM1_CLK = 933 +DRAM1_2ND_CLK = 933 +SDRAM_SIZE = 1024 +SDRAM_2ND_SIZE = 1024 +DRAM2_CLK = 0 +DRAM2_2ND_CLK = 0 +SDRAM2_SIZE = 0 +SDRAM2_2ND_SIZE = 0 + +else ifeq "$(CHIP)" "562" + +DRAM1_CLK = 666 +DRAM1_2ND_CLK = 666 +SDRAM_SIZE = 512 +SDRAM_2ND_SIZE = 512 +DRAM2_CLK = 0 +DRAM2_2ND_CLK = 0 +SDRAM2_SIZE = 0 +SDRAM2_2ND_SIZE = 0 +else +endif + +#------------------------------------------------------------------------------ +# Select DRAM Size (unit: Giga bit) +#------------------------------------------------------------------------------ +#SDRAM_SIZE = 1024 +#SDRAM_SIZE = 2048 +#SDRAM_SIZE = 4096 + +#------------------------------------------------------------------------------ +# Select DRAM Type (DDR3L curruently NOT available) +#------------------------------------------------------------------------------ +#DRAM_TYPE = DDR3 +#DRAM_TYPE = DDR3L + +#------------------------------------------------------------------------------ +# Select Phy analog block LV / HV +# (Don't modify this item) +#------------------------------------------------------------------------------ +PHY_ANALOG_HV = HV + +#------------------------------------------------------------------------------ +# CPU Core version configuration +# (Don't modify this item) +#------------------------------------------------------------------------------ +#CA53_ARCH32 +#CA9 +CPU_CORE = CA9 + +#------------------------------------------------------------------------------ +# Select internal storage device +#------------------------------------------------------------------------------ +#STORAGEINT = NandEccRS +#STORAGEINT = NandSpi +#STORAGEINT = SpiFlash + +#------------------------------------------------------------------------------ +# Select external storage device +#------------------------------------------------------------------------------ +#STORAGEEXT = Sdio1 +#STORAGEEXT = Sdio2 +#STORAGEEXT = Usb + +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +# +# Software function selection +# +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#------------------------------------------------------------------------------ +# Dram range scan loader support enable +# (Don't modify this item) +#------------------------------------------------------------------------------ +DRAM_RANGE_SCAN_SUPPORT_EN = ENABLE +#DRAM_RANGE_SCAN_SUPPORT_EN = DISABLE + +#------------------------------------------------------------------------------ +# Select GUI interface display or not +#------------------------------------------------------------------------------ +# [CONFIG_RAM_GUI_EN] +# ENABLE +# DISABLE +CONFIG_RAM_GUI_EN = DISABLE + +#------------------------------------------------------------------------------ +# Set binary file build name +#------------------------------------------------------------------------------ +CHIP_SHORT = $(shell echo $(CHIP)|awk '{print substr($$0,length($$0)-2,3)}') +ifeq "$(CHIP)" "575" +BIN_NAME = LD96575A +else ifeq "$(CHIP)" "570" +BIN_NAME = LD96570A +else ifeq "$(CHIP)" "580" +BIN_NAME = LD96580A +else ifeq "$(CHIP)" "565" +BIN_NAME = LD96565A +endif +ifeq "$(CHIP)" "523_A" +BIN_NAME = LD523_AA +endif +ifeq "$(STORAGEEXT)" "Eth" +LDR_NAME = loader +else +LDR_NAME = $(BIN_NAME) +endif +BL_UPDATE_CALNAME = FW96$(CHIP_SHORT)C.BIN +BL_CALIBRATION_FWNAME = CALFW680.BIN +TMP_NAME = LD96$(CHIP)1 + +#------------------------------------------------------------------------------ +# 1st NAND configuration support list +#------------------------------------------------------------------------------ +ifeq "$(LOADER_SUPPORT_NAND_1st)" "DEFAULT_NAND_TYPE" + _LOADER_NAND_SUPPORT_NAND_1st_ = default_1 +else +ifeq "$(LOADER_SUPPORT_NAND_1st)" "" + _LOADER_NAND_SUPPORT_NAND_1st_ = default_1 +else + _LOADER_NAND_SUPPORT_NAND_1st_ = $(LOADER_SUPPORT_NAND_1st) +endif +endif +#------------------------------------------------------------------------------ +# 1st NAND configuration support list +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# 2nd NAND configuration support list +#------------------------------------------------------------------------------ +ifeq "$(LOADER_SUPPORT_NAND_2nd)" "DEFAULT_NAND_TYPE" + _LOADER_NAND_SUPPORT_NAND_2nd_=default_2 +else +ifeq "$(LOADER_SUPPORT_NAND_2nd)" "" + _LOADER_NAND_SUPPORT_NAND_2nd_ = default_2 +else + _LOADER_NAND_SUPPORT_NAND_2nd_ = $(LOADER_SUPPORT_NAND_2nd) +endif +endif +#------------------------------------------------------------------------------ +# 2nd NAND configuration support list +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# 3rd NAND configuration support list +#------------------------------------------------------------------------------ +ifeq "$(LOADER_SUPPORT_NAND_3rd)" "DEFAULT_NAND_TYPE" + _LOADER_NAND_SUPPORT_NAND_3rd_ = default_3 +else +ifeq "$(LOADER_SUPPORT_NAND_3rd)" "" + _LOADER_NAND_SUPPORT_NAND_3rd_ = default_3 +else + _LOADER_NAND_SUPPORT_NAND_3rd_ = $(LOADER_SUPPORT_NAND_3rd) +endif +endif + +#------------------------------------------------------------------------------ +# 3rd NAND configuration support list +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Set bootloader specific strings +#------------------------------------------------------------------------------ +STR_MODEL = $(MODEL_DESC) +STR_DATE = $(shell date +%m/%d/%Y) +STR_TIME = $(shell date +%H:%M:%S) + +BL_START = "Loader NT98$(CHIP) Start ..." +BL_UPDATE_LOADERNAME = $(BIN_NAME).BIN +ifeq "$(CHIP)" "575" +BL_UPDATE_FWNAME := FW96575A.BIN +BL_UPDATE_CALNAME := FW96575C.BIN +BL_RUN_FWNAME := FW96575T.BIN +BL_CALIBRATION_FWNAME := CALFW575.BIN +BL_START = "Loader NT96$(CHIP) Start ..." +else ifeq "$(CHIP)" "570" +BL_UPDATE_FWNAME := FW96570A.BIN +BL_UPDATE_CALNAME := FW96570C.BIN +BL_RUN_FWNAME := FW96570T.BIN +BL_CALIBRATION_FWNAME := CALFW570.BIN +BL_START = "Loader NT96$(CHIP) Start ..." +else ifeq "$(CHIP)" "580" +BL_UPDATE_FWNAME := FW96580A.BIN +BL_UPDATE_CALNAME := FW96580C.BIN +BL_RUN_FWNAME := FW96580T.BIN +BL_CALIBRATION_FWNAME := CALFW580.BIN +BL_START = "Loader NT96$(CHIP) Start ..." +else ifeq "$(CHIP)" "565" +BL_UPDATE_FWNAME := FW96565A.BIN +BL_UPDATE_CALNAME := FW96565C.BIN +BL_RUN_FWNAME := FW96565T.BIN +BL_CALIBRATION_FWNAME := CALFW565.BIN +BL_START = "Loader NT96$(CHIP) Start ..." +endif +ifeq "$(CHIP)" "523_A" +BL_UPDATE_FWNAME := FW523_AA.BIN +BL_UPDATE_CALNAME := FW523_AC.BIN +BL_RUN_FWNAME := FW523_AT.BIN +BL_CALIBRATION_FWNAME := CALFW523.BIN +BL_START = "Loader NT98$(CHIP) Start ..." +endif + +BL_WRKEY_FWNAME := WRKEY.BIN +BL_UBOOT_FWNAME := UBOOTBIN.BIN + +ifeq "$(NC520_525_COMBO)" "ON" +MODEL_DESC = "$(CHIP)$(CHIP_VER)_DRAM1_$(DRAM1_CLK)_$(SDRAM_SIZE)Mb_DRAM2_$(DRAM2_CLK)_$(SDRAM2_SIZE)Mb_combo_NC520_DRAM1_$(NC520_COMBO_DRAM1_CLK)_$(NC520_COMBO_SDRAM_SIZE)Mb_DRAM2_NULL" +else + +ifneq "$(DRAM_2ND_TBL_DETECT)" "Normal" +ifeq "$(DRAM_ODT)" "Enabled" +MODEL_DESC2 = "$(CHIP)$(CHIP_VER)_DRAM1_$(DRAM1_2ND_CLK)_$(SDRAM_2ND_SIZE)Mb_DRAM2_$(DRAM2_2ND_CLK)_$(SDRAM2_2ND_SIZE)Mb_ODT" +else +MODEL_DESC2 = "$(CHIP)$(CHIP_VER)_DRAM1_$(DRAM1_2ND_CLK)_$(SDRAM_2ND_SIZE)Mb_DRAM2_$(DRAM2_2ND_CLK)_$(SDRAM2_2ND_SIZE)Mb" +endif +BL_VERSION2 = "$(MODEL_DESC2) $(STR_DATE) $(STR_TIME)" +endif + +ifeq "$(DRAM_ODT)" "Enabled" +MODEL_DESC = "$(CHIP)$(CHIP_VER)_DRAM1_$(DRAM1_CLK)_$(SDRAM_SIZE)Mb_DRAM2_$(DRAM2_CLK)_$(SDRAM2_SIZE)Mb_ODT" +else +MODEL_DESC = "$(CHIP)$(CHIP_VER)_DRAM1_$(DRAM1_CLK)_$(SDRAM_SIZE)Mb_DRAM2_$(DRAM2_CLK)_$(SDRAM2_SIZE)Mb" +endif +endif +BL_VERSION = "$(MODEL_DESC) $(STR_DATE) $(STR_TIME)" + +#------------------------------------------------------------------------------ +# Select bootloader compression +# (Don't modify this item) +#------------------------------------------------------------------------------ +# [BL_COMPRESS] +# ENABLE +# DISABLE +BL_COMPRESS = ENABLE + +#Do not modify this parameter 0x08 if loader compress enabled +# [UNCOMPRESSEDPART_SIZE_OFFSET] +# 0x60 +# 0x08 +UNCOMPRESSEDPART_SIZE_OFFSET = 0x08 + +#------------------------------------------------------------------------------ +# Select compressable f/w (main code) +#------------------------------------------------------------------------------ +# [MAINCODE_COMPRESS] +# ENABLE +# DISABLE +MAINCODE_COMPRESS = DISABLE + +#------------------------------------------------------------------------------ +# Select firmware image checksum validation +#------------------------------------------------------------------------------ +# [CHKFWIMAGE] +# NOCHECK +# CHECKSUM +# CRC +CHKFWIMAGE = CHECKSUM + +#------------------------------------------------------------------------------ +# Select loader flow +# (Don't modify this item) +#------------------------------------------------------------------------------ +# [LOADER_FLOW ] +# NORMAL_LDR_FLOW +# MODULE_TST_FLOW +LOADER_FLOW = NORMAL_LDR_FLOW + +ifeq "$(LOADER_FLOW)" "NORMAL_LDR_FLOW" +BL_LOADER_FLOW = 0 +else +BL_LOADER_FLOW = 1 +endif + +BL_LOADER_FLOW_PARAM = \ +-D_BL_MAIN_SPECIAL_FLOW_=$(BL_LOADER_FLOW) + +#------------------------------------------------------------------------------ +# Select Duty calibration ENABLE / DISABLE +#------------------------------------------------------------------------------ +DUTY_CALIBRATION = DISABLE + +#------------------------------------------------------------------------------ +# Select Duty calibration type +# (Don't modify this item) +#------------------------------------------------------------------------------ +# [DUTY_CALIBRATION_TYPE ] +# AUTO +# MANUAL +DUTY_CALIBRATION_TYPE = AUTO + +ifeq "$(DUTY_CALIBRATION_TYPE)" "AUTO" +BL_DUTY_CALIBRATION_TYPE = 0 +else +BL_DUTY_CALIBRATION_TYPE = 1 +endif + +BL_DUTY_CALIBRATION_TYPE_PARAM = \ +-D_LOADER_DUTY_CALIBRATION_TYPE_=$(BL_DUTY_CALIBRATION_TYPE) + +#------------------------------------------------------------------------------ +# Select Duty calibration LOG ENABLE / DISABLE +#------------------------------------------------------------------------------ +# [DUTY_CALIBRATION_LOG] +# ENABLE +# DISABLE +DUTY_CALIBRATION_LOG = DISABLE + +ifeq "$(LOADER_FLOW)" "MODULE_TST_FLOW" +DUTY_CALIBRATION = DISABLE +endif + +ifeq "$(DUTY_CALIBRATION)" "DISABLE" +DUTY_CALIBRATION_LOG = DISABLE +else +ifeq "$(DUTY_CALIBRATION_TYPE)" "MANUAL" +DUTY_CALIBRATION_LOG = DISABLE +endif +endif + +ifeq "$(DUTY_CALIBRATION)" "ENABLE" +BL_DUTY_CALIBRATION = 1 +else +BL_DUTY_CALIBRATION = 0 +endif + +ifeq "$(DUTY_CALIBRATION_LOG)" "ENABLE" +BL_DUTY_CALIBRATION_LOG = 1 +else +BL_DUTY_CALIBRATION_LOG = 0 +endif + +BL_DUTY_CALIBRATION_PARAM = \ +-D_LOADER_DUTY_CALIBRATION_LOG_=$(BL_DUTY_CALIBRATION_LOG)\ +-D_LOADER_DUTY_CALIBRATION_=$(BL_DUTY_CALIBRATION) + + +#------------------------------------------------------------------------------ +# Bootloader update image file name parameters +#------------------------------------------------------------------------------ +BL_UPDATE_NAME_PARAM = \ + -D_UPDATE_FW_NAME_=\"$(BL_UPDATE_FWNAME)\" \ + -D_UPDATE_LOADER_NAME_=\"$(BL_UPDATE_LOADERNAME)\" \ + -D_RUN_FW_NAME_=\"$(BL_RUN_FWNAME)\" \ + -D_UPDATE_CALFW_NAME_=\"$(BL_UPDATE_CALNAME)\"\ + -D_RUN_CAL_FW_NAME_=\"$(BL_CALIBRATION_FWNAME)\" \ + -D_WR_KEY_FW_NAME_=\"$(BL_WRKEY_FWNAME)\" \ + -D_RUN_UBOOT_NAME_=\"$(BL_UBOOT_FWNAME)\" + + +#------------------------------------------------------------------------------ +# Bootloader specific strings parameters +#------------------------------------------------------------------------------ +BL_STRINGS_PARAM = \ +-D_LOADER_VERSION_STR_=\"\\\r\\\n$(BL_VERSION)\\\r\\\n\\\r\\\n\" \ +-D_LOADER_VERSION_STR2_=\"\\\r\\\n$(BL_VERSION2)\\\r\\\n\\\r\\\n\" \ +-D_LOADER_START_STR_=\"\\\r\\\n$(BL_START)\\\r\\\n\" + +#------------------------------------------------------------------------------ +# Bootloader compression parameters +#------------------------------------------------------------------------------ +ifeq "$(BL_COMPRESS)" "ENABLE" + BL_COMPRESS_CFG = 1 + ifeq "$(CHIP)" "52xES" + RESETFLAG = LZ52xES + else ifeq "$(CHIP)" "525" + RESETFLAG = LZ525 + else ifeq "$(CHIP)" "523" + RESETFLAG = LZ523 + else ifeq "$(CHIP)" "523_A" + RESETFLAG = LZ523_A + else ifeq "$(CHIP)" "575" + RESETFLAG = LZ575 + else ifeq "$(CHIP)" "570" + RESETFLAG = LZ570 + else ifeq "$(CHIP)" "522" + RESETFLAG = LZ522 + else ifeq "$(CHIP)" "520" + RESETFLAG = LZ520 + else ifeq "$(CHIP)" "528" + RESETFLAG = LZ528 + else ifeq "$(CHIP)" "529" + RESETFLAG = LZ529 + else ifeq "$(CHIP)" "580" + RESETFLAG = LZ580 + else ifeq "$(CHIP)" "NC520" + RESETFLAG = LZNC520 + else ifeq "$(CHIP)" "565" + RESETFLAG = LZ565 + else ifeq "$(CHIP)" "562" + RESETFLAG = LZ562 + else + RESETFLAG = LZ + endif + + ifeq "$(CHIP)" "528" + RESETCHIP = 528 + SCATTER_EXT= _528 + else ifeq "$(CHIP)" "580" + RESETCHIP = 528 + SCATTER_EXT= _528 + else ifeq "$(CHIP)" "529" + RESETCHIP = 528 + SCATTER_EXT= _528 + else + RESETCHIP = 52x + SCATTER_EXT= + endif + + ifeq "$(EXFAT_FILESYSTEM_SUPPORT)" "EXFAT" + COMMON_LIB = exFAT + else + COMMON_LIB = normal + endif + +else + BL_COMPRESS_CFG = 0 + ifeq "$(CHIP)" "525" + RESETFLAG = NM525 + else ifeq "$(CHIP)" "523" + RESETFLAG = NM523 + else ifeq "$(CHIP)" "522" + RESETFLAG = NM522 + else ifeq "$(CHIP)" "520" + RESETFLAG = NM520 + else + RESETFLAG = NM + endif + + ifeq "$(CHIP)" "528" + RESETCHIP = 528 + else ifeq "$(CHIP)" "580" + RESETCHIP = 580 + else ifeq "$(CHIP)" "529" + RESETCHIP = 529 + else + RESETCHIP = 52x + endif + + ifeq "$(EXFAT_FILESYSTEM_SUPPORT)" "EXFAT" + COMMON_LIB = exFAT + else + COMMON_LIB = normal + endif +endif + +ifeq "$(MAINCODE_COMPRESS)" "ENABLE" + FWCOMPRESS_PARAM = -D_MAINCODE_COMPRESS_=1 +else + FWCOMPRESS_PARAM = -D_MAINCODE_COMPRESS_=0 +endif + +BL_COMPRESS_PARAM = \ +-D_LOADER_COMPRESSED_=$(BL_COMPRESS_CFG) + +BL_COMPRESS_PARAM_ASM = +#\ +#-PD "_LOADER_COMPRESSED_ SETA $(BL_COMPRESS_CFG)" + +#------------------------------------------------------------------------------ +# Firmware image checksum validation parameters +#------------------------------------------------------------------------------ +ifeq "$(CHKFWIMAGE)" "NOCHECK" + CHKFWIMAGE_CFG = FW_CHECK_NOCHECK +endif + +ifeq "$(CHKFWIMAGE)" "CHECKSUM" + CHKFWIMAGE_CFG = FW_CHECK_CHECKSUM +endif + +ifeq "$(CHKFWIMAGE)" "CRC" + CHKFWIMAGE_CFG = FW_CHECK_CRC +endif + +CHKFWIMAGE_PARAM = \ + -DFW_CHECK_NOCHECK=0 \ + -DFW_CHECK_CHECKSUM=1 \ + -DFW_CHECK_CRC=2 \ + -DFW_CHECK_METHOD=$(CHKFWIMAGE_CFG) + +#------------------------------------------------------------------------------ +# External Storage define +#------------------------------------------------------------------------------ + +ifeq "$(STORAGEINT)" "EMMC_NAND_COMBO" +ifeq "$(STORAGEEXT)" "NONE" +else +$(error STORAGEEXT MUST = [NONE] if STORAGEINT= [EMMC_NAND_COMBO]=>Please check [ModelConfig_EMU_EVB.txt] configuration) +endif +endif + + +ifeq "$(STORAGEEXT)" "Sdio1" + STORAGE_EXT_TYPE = STORAGE_EXT_SDIO1 +else ifeq "$(STORAGEEXT)" "Sdio2" + STORAGE_EXT_TYPE = STORAGE_EXT_SDIO2 +else ifeq "$(STORAGEEXT)" "Usb" + STORAGE_EXT_TYPE = STORAGE_EXT_USB +else ifeq "$(STORAGEEXT)" "Eth" + STORAGE_EXT_TYPE = STORAGE_EXT_ETH +else ifeq "$(STORAGEEXT)" "NONE" + STORAGE_EXT_TYPE = STORAGE_EXT_NONE +else + STORAGE_EXT_TYPE = STORAGE_EXT_UNKOWN +endif + +EXTSTRG_PARAM = \ + -DSTORAGE_EXT_UNKOWN=0 \ + -DSTORAGE_EXT_SDIO1=1 \ + -DSTORAGE_EXT_SDIO2=2 \ + -DSTORAGE_EXT_USB=3 \ + -DSTORAGE_EXT_ETH=4 \ + -DSTORAGE_EXT_NONE=5\ + -DSTORAGE_EXT_TYPE=$(STORAGE_EXT_TYPE) + +ifeq "$(FAST_K)" "Enabled" + FAST_K_PARAM = 1 +else + FAST_K_PARAM = 0 +endif + +#------------------------------------------------------------------------------ +# SPI define +#------------------------------------------------------------------------------ +ifeq "$(STORAGEINT)" "SpiFlash" + STORAGE_INT_TYPE = -DSTORAGEINT_SPI=1 +else + STORAGE_INT_TYPE = +endif + +ifeq "$(SPI_SETTING)" "SPI_4BITS" + SPI_PINMUX = SPI_PINMUX_4BITS +endif + +ifeq "$(SPI_SETTING)" "SPI_NORMAL" + SPI_PINMUX = SPI_PINMUX_NORMAL +endif + +SPIPINMUX_PARAM = \ + -DSPI_PINMUX_NORMAL=0 \ + -DSPI_PINMUX_4BITS=1 \ + -DSPI_PINMUX_SETTING=$(SPI_PINMUX) + +#------------------------------------------------------------------------------ +# EMMC define +#------------------------------------------------------------------------------ +ifeq "$(EMMC_SETTING)" "EMMC_8BITS" + EMMC_PINMUX = EMMC_PINMUX_8BITS +endif + +ifeq "$(EMMC_SETTING)" "EMMC_NORMAL" + EMMC_PINMUX = EMMC_PINMUX_NORMAL +endif + +ifeq "$(EMMC_SETTING)" "" + EMMC_PINMUX = EMMC_PINMUX_8BITS +endif + +EMMCPINMUX_PARAM = \ + -DEMMC_PINMUX_NORMAL=0 \ + -DEMMC_PINMUX_8BITS=1 \ + -DEMMC_PINMUX_SETTING=$(EMMC_PINMUX) + +#------------------------------------------------------------------------------ +# Dram range scan support enable parameters +#------------------------------------------------------------------------------ +ifeq "$(DRAM_RANGE_SCAN_SUPPORT_EN)" "ENABLE" + DRAM_SCAN_EN = 1 +else + DRAM_SCAN_EN = 0 +endif + +DRAMSCAN_PARAM = -DDRAM_RANGE_SCAN_EN=$(DRAM_SCAN_EN) + +#------------------------------------------------------------------------------ +# Chip ID related parameters +#------------------------------------------------------------------------------ +ifeq "$(CHIP)" "528" +CHIPID = 528 +else ifeq "$(CHIP)" "580" +CHIPID = 528 +else ifeq "$(CHIP)" "529" +CHIPID = 528 +else +CHIPID = 520 +endif +#------------------------------------------------------------------------------ +# Secure boot parameters +#------------------------------------------------------------------------------ +ifeq "$(SECUREBOOT)" "Secure" +SECUREBOOT_MSG = 0 +ifeq "$(SIGNATUREMETHOD)" "AES128" +#Secure enable + AES signature +SECURE_BOOT = 1 +else +#Secure enable + RSA signature +SECURE_BOOT = 2 +endif +ifeq "$(ENCRYPTDATA)" "AES128" +ENCRYPT_DATA = 1 +else +ENCRYPT_DATA = 0 +endif +else +SECURE_BOOT = 0 +endif + + + +#------------------------------------------------------------------------------ +# DRAM ini file name generation +#------------------------------------------------------------------------------ +#ifeq "$(DRAM_TYPE)" "DDR3L" +# ifeq "$(DMA_CLOCK)" "LV0" +# $(error DDR3L only support DMA_CLOCK = LV1) +# endif +# ifeq "$(LV1_CLK)" "373" +# $(error DDR3L only support LV1_CLK = 400) +# endif +# DDR_FILE_STR = _DDR3L +#else +# DDR_FILE_STR = +#endif + +ifeq "$(DMA_CLOCK)" "LV0" + +DDR_INI_STR = $(CHIP)/51055A_DRAM1_$(DRAM1_CLK)_$(SDRAM_SIZE).ini +DDR_INI2_STR = $(CHIP)/51055A_DRAM2_$(DRAM2_CLK)_$(SDRAM2_SIZE).ini +#DDR_INI_STR = 680_$(CHIP_VER)_LV0_$(SDRAM_SIZE).ini +ifeq "$(LV1_CLK)" "491" +#DDR_INI2_STR = 680_$(CHIP_VER)_LV1_4_$(SDRAM_SIZE).ini +else +#DDR_INI2_STR = 680_$(CHIP_VER)_LV1_5_$(SDRAM_SIZE).ini +endif + +else + +ifneq "$(DRAM_2ND_TBL_DETECT)" "Normal" + +ifeq "$(DRAM_ODT)" "Enabled" +DDR_INI_STR = $(CHIP)/51055A_DRAM1_$(DRAM1_CLK)_$(SDRAM_SIZE)_ODT.ini +DDR_INI2_STR = $(CHIP)/51055A_DRAM2_$(DRAM2_CLK)_$(SDRAM2_SIZE)_ODT.ini + +DDR_INI_STR2 = $(CHIP)/51055A_DRAM1_$(DRAM1_2ND_CLK)_$(SDRAM_2ND_SIZE)_ODT.ini +DDR_INI2_STR2 = $(CHIP)/51055A_DRAM2_$(DRAM2_2ND_CLK)_$(SDRAM2_2ND_SIZE)_ODT.ini + +else +DDR_INI_STR = $(CHIP)/51055A_DRAM1_$(DRAM1_CLK)_$(SDRAM_SIZE).ini +DDR_INI2_STR = $(CHIP)/51055A_DRAM2_$(DRAM2_CLK)_$(SDRAM2_SIZE).ini + +DDR_INI_STR2 = $(CHIP)/51055A_DRAM1_$(DRAM1_2ND_CLK)_$(SDRAM_2ND_SIZE).ini +DDR_INI2_STR2 = $(CHIP)/51055A_DRAM2_$(DRAM2_2ND_CLK)_$(SDRAM2_2ND_SIZE).ini +endif + +2ND_INI = $(DRAM_2ND_TBL_DETECT) +GPIO_NUM = $(DRAM_2ND_TBL_DETECT_GPIO_NO) + +else + +ifeq "$(DRAM_ODT)" "Enabled" +DDR_INI_STR = $(CHIP)/51055A_DRAM1_$(DRAM1_CLK)_$(SDRAM_SIZE)_ODT.ini +DDR_INI2_STR = $(CHIP)/51055A_DRAM2_$(DRAM2_CLK)_$(SDRAM2_SIZE)_ODT.ini +else +DDR_INI_STR = $(CHIP)/51055A_DRAM1_$(DRAM1_CLK)_$(SDRAM_SIZE).ini +DDR_INI2_STR = $(CHIP)/51055A_DRAM2_$(DRAM2_CLK)_$(SDRAM2_SIZE).ini +endif + +DDR_INI_STR2 = "" +DDR_INI2_STR2 = "" + +2ND_INI = "" +GPIO_NUM = 0 + +#DDR_INI_STR = 680_$(CHIP_VER)_$(DMA_CLOCK)_$(SDRAM_SIZE).ini +#DDR_INI2_STR = 680_$(CHIP_VER)_LV0_$(SDRAM_SIZE).ini +endif + +ifeq "$(NC520_525_COMBO)" "ON" +DDR_INI_STR_NC520_525_COMBO = NC520/51055A_DRAM1_$(NC520_COMBO_DRAM1_CLK)_$(NC520_COMBO_SDRAM_SIZE).ini +endif +endif + +ifeq "$(DRAM1_POWEROFF_S3)" "Enabled" +DRAM1_RST_PARAM = 1 +else +DRAM1_RST_PARAM = 0 +endif + +ifeq "$(DRAM_NUMBER_DETECT)" "Enabled" +DRAM_NUMBER_DET_PARAM = 1 +else +DRAM_NUMBER_DET_PARAM = 0 +endif + +ifeq "$(DRAM_SSC_ENABLE)" "Normal" +DRAM_SSC_PARAM = 0 +else ifeq "$(DRAM_SSC_ENABLE)" "1" +DRAM_SSC_PARAM = 1 +else ifeq "$(DRAM_SSC_ENABLE)" "2" +DRAM_SSC_PARAM = 2 +else ifeq "$(DRAM_SSC_ENABLE)" "3" +DRAM_SSC_PARAM = 3 +else ifeq "$(DRAM_SSC_ENABLE)" "4" +DRAM_SSC_PARAM = 4 +else ifeq "$(DRAM_SSC_ENABLE)" "5" +DRAM_SSC_PARAM = 5 +else +DRAM_SSC_PARAM = 0 +endif + +#------------------------------------------------------------------------------- +# set the scatter file name here +#------------------------------------------------------------------------------- +ifeq "$(BL_COMPRESS)" "ENABLE" +SCATTER = LDS_LZ$(SCATTER_EXT).lds +else +SCATTER = LDS_NM.lds +endif + +#------------------------------------------------------------------------------- +# set loader execution DRAM address +#------------------------------------------------------------------------------- +# 255MB +ifeq "$(SDRAM_SIZE)" "1024" +LD_BASE_ADDR = 0x7C00000 +else ifeq "$(SDRAM_SIZE)" "2048" +LD_BASE_ADDR = 0xFC00000 +else +LD_BASE_ADDR = 0xFC00000 +endif +BL_LDADDR_PARAM = \ +-DLD_BASE_ADDR=$(LD_BASE_ADDR) + +#------------------------------------------------------------------------------- +# set loader internal storage type +#------------------------------------------------------------------------------- +BL_STORAGEINT_PARAM = \ +-D_STORAGEINT_$(STORAGEINT)_ + +#------------------------------------------------------------------------------- +# Model parameters +#------------------------------------------------------------------------------- +ifeq "$(MODEL)" "EMU_EVB" + MODEL_TYPE = _MODEL_EMU_EVB_ +endif + +ifeq "$(MODEL)" "DEMO1_EVB" + MODEL_TYPE = _MODEL_DEMO1_EVB_ +endif + +ifeq "$(MODEL)" "ARTOSYN_EVB" + MODEL_TYPE = _MODEL_ARTOSYN_EVB_ +endif +MODEL_PARAM = \ + -D_MODEL_EMU_EVB_=0 \ + -D_MODEL_DEMO1_EVB_=1 \ + -D_MODEL_ARTOSYN_EVB_=2 \ + -D_MODEL_DSC_=$(MODEL_TYPE) + +#------------------------------------------------------------------------------- +# uboot encrypt binary or not parameters +#------------------------------------------------------------------------------- +ifeq "$(SECUREBOOT_DECRYPT_UBOOT)" "Normal" + UBOOT_DECRYPT_TYPE = _SECURE_DECRYPT_UBOOT_DISABLE_ +else ifeq "$(SECUREBOOT_DECRYPT_UBOOT)" "Secure" + UBOOT_DECRYPT_TYPE = _SECURE_DECRYPT_UBOOT_ENABLE_ +else + UBOOT_DECRYPT_TYPE = _SECURE_DECRYPT_UBOOT_DISABLE_ +endif + +SECURE_DECRYPT_UBOOT_PARAM = \ + -D_SECURE_DECRYPT_UBOOT_DISABLE_=0 \ + -D_SECURE_DECRYPT_UBOOT_ENABLE_=1 \ + -DSECURE_DECRYPT_UBOOT=$(UBOOT_DECRYPT_TYPE) + +#------------------------------------------------------------------------------- +# optee parameters +#------------------------------------------------------------------------------- +ifeq "$(SECUREBOOT_DECRYPT_OPTEE)" "Normal" + OPTEE_DECRYPT_TYPE = _SECURE_DECRYPT_OPTEE_DISABLE_ +else ifeq "$(SECUREBOOT_DECRYPT_UBOOT)" "Secure" + OPTEE_DECRYPT_TYPE = _SECURE_DECRYPT_OPTEE_ENABLE_ +else + OPTEE_DECRYPT_TYPE = _SECURE_DECRYPT_OPTEE_DISABLE_ +endif + + +SECURE_DECRYPT_OPTEE_PARAM = \ + -D_SECURE_DECRYPT_OPTEE_DISABLE_=0 \ + -D_SECURE_DECRYPT_OPTEE_ENABLE_=1 \ + -DSECURE_DECRYPT_OPTEE_OS=$(OPTEE_DECRYPT_TYPE) + + +#------------------------------------------------------------------------------- +# optee or uboot digital signature parameters +#------------------------------------------------------------------------------- +ifeq "$(SIGNATUREMETHOD)" "AES128" +# => AES signature +OPTEE_UBOOT_DIGITAL_SIGNATURE_TYPE = _UBOOT_OPTEE_SIGNATURE_USE_AES128_ +else +# => RSA signature +OPTEE_UBOOT_DIGITAL_SIGNATURE_TYPE = _UBOOT_OPTEE_SIGNATURE_USE_RSA_ +endif + +OPTEE_UBOOT_SIGNATURE_PARAM = \ + -D_UBOOT_OPTEE_SIGNATURE_USE_RSA_=0 \ + -D_UBOOT_OPTEE_SIGNATURE_USE_AES128_=1 \ + -DSECURE_SIGNATURE_BY_AES=$(OPTEE_UBOOT_DIGITAL_SIGNATURE_TYPE) + + +#------------------------------------------------------------------------------- +# optee or uboot digital signature parameters +#------------------------------------------------------------------------------- +ifeq "$(CHIP)" "565" +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_1_ +else ifeq "$(CHIP)" "562" +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_2_ +else +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_0_ +endif + +CARDDET_PIN_PARAM = \ + -D_CARD_DETECT_TYPE_0_=0 \ + -D_CARD_DETECT_TYPE_1_=1 \ + -D_CARD_DETECT_TYPE_2_=2 \ + -DCARD_DETECT_PIN=$(CARD_DETECT_PIN_TYPE) + +ifeq "$(DDR_TREFI)" "Extend" +DDR_TREFI_PARAM = 1 +else +DDR_TREFI_PARAM = 0 +endif diff --git a/board/novatek/na51055/loader/Project/Model/Makefile b/board/novatek/na51055/loader/Project/Model/Makefile new file mode 100755 index 000000000000..594475b03a7c --- /dev/null +++ b/board/novatek/na51055/loader/Project/Model/Makefile @@ -0,0 +1,129 @@ +#---------------------------------------------------------------------- +# set the ROOT directory here +#---------------------------------------------------------------------- +ROOT_DIR = ../.. + +#---------------------------------------------------------------------- +# include make config file +#---------------------------------------------------------------------- +include ModelConfig.txt +include ModelConfig_$(MODEL).txt +include MakeConfig.txt + +#---------------------------------------------------------------------- +# set the project name here +#---------------------------------------------------------------------- +PRJ_NAME = Loader$(CHIP) + +#---------------------------------------------------------------------- +# set loader execution DRAM address +#---------------------------------------------------------------------- +ifeq "$(SDRAM_SIZE)" "1024" +# 1Gb*2 => 256MB => 0x1000_0000 +LD_BASE_ADDR = 0xF000000 +else ifeq "$(SDRAM_SIZE)" "2048" +# 2Gb*2 => 512MB => 0x2000_0000 +LD_BASE_ADDR = 0x1F000000 +else +# 4Gb*2 => 1024MB => 0x4000_0000 +LD_BASE_ADDR = 0x3F000000 +endif + +ifeq "$(LOADER_DRAM_ADDR)" "" +LD_BASE_ADDR = 0x1000000 +else +LD_BASE_ADDR = $(LOADER_DRAM_ADDR) +endif + +#---------------------------------------------------------------------- +# set the include directory here +#---------------------------------------------------------------------- +INC_DIR = . \ + ../../Include + +#---------------------------------------------------------------------- +# add/delete the project assembly files here +#---------------------------------------------------------------------- +#ASM = Src/reset.S \ +#Src/remap.S + + + + +#---------------------------------------------------------------------- +# add/delete the project C source files here +#---------------------------------------------------------------------- +SRC = \ + Src/prj_main.c + + + + +#---------------------------------------------------------------------- +# set the image output directory here +#---------------------------------------------------------------------- +IMG_BASE_DIR = $(PRJ_NAME)_Data + +#---------------------------------------------------------------------- +# set the library directory here +#---------------------------------------------------------------------- +LIB_BASE_DIR = ../../LIB + +#---------------------------------------------------------------------- +# set the library directory here +#---------------------------------------------------------------------- +ARC_BASE_DIR = $(ROOT_DIR)/ARC + +#---------------------------------------------------------------------- +# add additional C and assembly flags here, for example, -O2 +#---------------------------------------------------------------------- +C_DEFINE_EXT = \ + $(MODEL_PARAM) \ + $(BL_UPDATE_NAME_PARAM) \ + $(BL_STRINGS_PARAM) \ + $(BL_COMPRESS_PARAM) \ + $(CHKFWIMAGE_PARAM) \ + $(FWCOMPRESS_PARAM) \ + $(BL_LOADER_VER_PARAM) \ + $(BL_LDADDR_PARAM) \ + $(EXTSTRG_PARAM) \ + $(STORAGE_INT_TYPE)\ + $(SPIPINMUX_PARAM)\ + $(EMMCPINMUX_PARAM)\ + $(DRAMSCAN_PARAM)\ + $(BL_DUTY_CALIBRATION_PARAM)\ + $(BL_DUTY_CALIBRATION_TYPE_PARAM)\ + $(BL_LOADER_FLOW_PARAM) \ + $(BL_STORAGEINT_PARAM) \ + $(SECURE_DECRYPT_UBOOT_PARAM) \ + $(SECURE_DECRYPT_OPTEE_PARAM) \ + $(CARDDET_PIN_PARAM) + +CFLAGS_R = $(C_DEFINE_EXT) +CFLAGS_D = $(C_DEFINE_EXT) + +ASMFLAGS_R = \ + $(BL_COMPRESS_PARAM_ASM) + +ASMFLAGS_D = \ + $(BL_COMPRESS_PARAM_ASM) + +GCCFLAGS = \ + $(MODEL_PARAM) \ + $(BL_UPDATE_NAME_PARAM) \ + $(BL_STRINGS_PARAM) \ + $(BL_COMPRESS_PARAM) \ + $(CHKFWIMAGE_PARAM) \ + $(FWCOMPRESS_PARAM) \ + $(BL_LOADER_VER_PARAM) \ + $(STORAGE_INT_TYPE)\ + $(DRAMSCAN_PARAM)\ + $(BL_DUTY_CALIBRATION_PARAM)\ + $(BL_DUTY_CALIBRATION_TYPE_PARAM)\ + $(BL_LOADER_FLOW_PARAM) + +#---------------------------------------------------------------------- +# include common parts of the makefile +#---------------------------------------------------------------------- +MAKE_COMMON_DIR = ../../MakeCommon +include $(MAKE_COMMON_DIR)/OutputImg.txt diff --git a/board/novatek/na51055/loader/Project/Model/ModelConfig.txt b/board/novatek/na51055/loader/Project/Model/ModelConfig.txt new file mode 100755 index 000000000000..91c381c06d11 --- /dev/null +++ b/board/novatek/na51055/loader/Project/Model/ModelConfig.txt @@ -0,0 +1,6 @@ +#---------------------------------------------------------------------- +# Set model here +#---------------------------------------------------------------------- +# EMU_EVB => Model config as NT9852x +# EMU_EVB_528 => Model config as NT98528 +MODEL = EMU_EVB \ No newline at end of file diff --git a/board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB.txt b/board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB.txt new file mode 100755 index 000000000000..db238e129174 --- /dev/null +++ b/board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB.txt @@ -0,0 +1,255 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN + +# Ext => DRAM is external die => Need user configuration +# KGD => DRAM is internal die => Depend on specific chip (force fixed dram size) +#===========+================+==================+ +# chip_name | DDR1 size | DDR2 size | +#===========+===============+===================+ +# 520 | 1/2/4Gb(Ext)| N/A | +#===========+===============+===================+ +# 522 | 512Mb(KGD) | 1/2/4Gb(Ext) | +#===========+===============+===================+ +# 523 | 1Gb(KGD) | 1/2/4Gb(Ext) | +#===========+===============+===================+ +# 575 | 1Gb(KGD) | 1/2/4Gb(Ext) | +#===========+===============+===================+ +# 525 | 1/2/4Gb(Ext)| 1/2/4Gb(Ext) | +#===========+===============+===================+ +# 565 | 1Gb(KGD) | N/A | +#===========+===============+===================+ +# [CHIP] : main chip ID +# 525 +# 523 +# 523_A +# 522 +# 520 +# NC520 +# 575 +# 570 +# 565 +# 562 + +CHIP = 525 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1(16-bit) clock rate +# 700 +# 793 +# 933 +DRAM1_CLK = 933 + +# [DRAM2_CLK] : DRAM2(16-bit) clock rate (must <= DRAM1_CLK) +# 793 +# 933 +DRAM2_CLK = 933 + +# [DMA_CLOCK] : DMA clock rate +# LV0 +# LV1 +#DMA_CLOCK = LV1 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +SDRAM_SIZE = 4096 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +SDRAM2_SIZE = 4096 + +# [NT525 combo NC520] : Once CHIP = 520 can choose combo NC520 +# OFF +# ON +NC520_525_COMBO = OFF + +# [NC520_COMBO_DRAM1_CLK] : DRAM1(16-bit) clock rate +# 700 +# 793 +# 933 +NC520_COMBO_DRAM1_CLK = 933 + +# [2ND_525_SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +NC520_COMBO_SDRAM_SIZE = 4096 + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Normal + +# [DRAM_NUMBER_DETECT] : enable DRAM number detect by L_GPIO3 +# Normal +# Enabled +DRAM_NUMBER_DETECT = Normal + +# [DRAM_ODT] : enable DRAM ODT +# Disabled +# Enabled +DRAM_ODT = Disabled + +# [9852x combo 98528] : Once CHIP = 52x can choose combo 98528 +# OFF +# ON +52x_528_COMBO = OFF + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +DRAM_TYPE = DDR3 + +# [DDR_TREFI] : ddr refresh time select by temparature range +# Normal(0~85) +# Extend(85~95) +DDR_TREFI = Normal + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO (default: P_GPIO13) +# Normal (No GPIO detected) +# 0 (C_GPIO) +# 1 (P_GPIO) +# 2 (S_GPIO) +# 3 (L_GPIO) +# 4 (D_GPIO) +# 5 (HSI_GPI) +# 6 (ADC_GPIO) +# 7 (Reserved) +DRAM_2ND_TBL_DETECT = Normal + +# [DRAM_2ND_TBL_DETECT_GPIO_NO] : enable DRAM 2nd table detect by X_GPIO_n +# where +# C_GPIO --> n=0~22 +# P_GPIO --> n=0~25 +# S_GPIO --> n=0~12 +# L_GPIO --> n=0~24 +# D_GPIO --> n=0~10 +# HSI_GPI --> n=0~11 +# ADC_GPIO --> n=0~2 +DRAM_2ND_TBL_DETECT_GPIO_NO = 13 + +# [DRAM1_2ND_CLK] : DRAM1(16-bit) 2nd table clock rate +# 700 +# 793 +# 933 +DRAM1_2ND_CLK = 793 + +# [DRAM2_2ND_CLK] : DRAM2(16-bit) 2nd table clock rate (must <= DRAM1_CLK) +# 793 +# 933 +DRAM2_2ND_CLK = 793 + +# [SDRAM_2ND_SIZE] : 2nd table DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +SDRAM_2ND_SIZE = 4096 + +# [SDRAM2_2ND_SIZE] : 2nd table DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +SDRAM2_2ND_SIZE = 4096 + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +# EMMC +# EMMC_NAND_COMBO >>>[eMMC & NandSpi 2 in 1 & STORAGEEXT must choose NONE]<<< +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth >>>[During this option => STORAGEINT MUST not choose @EMMC_NAND_COMBO]<<< +STORAGEEXT = Sdio1 + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = AES128 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal + +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x1000000 +LOADER_DRAM_ADDR = 0x1000000 + +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader decrypt optee option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_OPTEE] : Loader decrypt optee or not (Depend on optee build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_OPTEE = Normal + +#==============================================================================# +# exFAT support(Once customer want to use exFAT, need get license from $MS ) # +#==============================================================================# +# [exFAT] : Loader support exFAT or not +# NONE +# EXFAT +EXFAT_FILESYSTEM_SUPPORT = NONE + + diff --git a/board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB_528.txt b/board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB_528.txt new file mode 100755 index 000000000000..9124819832e3 --- /dev/null +++ b/board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB_528.txt @@ -0,0 +1,236 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN + +# Ext => DRAM is external die => Need user configuration +# KGD => DRAM is internal die => Depend on specific chip (force fixed dram size) +#===========+================+==================+ +# chip_name | DDR1 size | DDR2 size | +#===========+===============+===================+ +# 528 | 1/2/4Gb(Ext)| 1/2/4Gb(Ext) | +#===========+===============+===================+ +# 529 | 1/2/4Gb(Ext)| 1/2/4Gb(Ext) | +#===========+===============+===================+ +# [CHIP] : main chip ID + +# 528 +# 580 +# 529 +CHIP = 528 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1(16-bit) clock rate +# 700 +# 793 +# 933 +# 1066 +DRAM1_CLK = 1066 + +# [DRAM2_CLK] : DRAM2(16-bit) clock rate (must <= DRAM1_CLK) +# 793 +# 933 +# 1066 +DRAM2_CLK = 1066 + +# [DMA_CLOCK] : DMA clock rate +# LV0 +# LV1 +#DMA_CLOCK = LV1 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +SDRAM_SIZE = 4096 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +SDRAM2_SIZE = 4096 + +NC520_525_COMBO = OFF + +# [NC520_COMBO_DRAM1_CLK] : DRAM1(16-bit) clock rate +# 700 +# 793 +# 933 +NC520_COMBO_DRAM1_CLK = 933 + +# [2ND_525_SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +NC520_COMBO_SDRAM_SIZE = 4096 + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Normal + +# [DRAM_NUMBER_DETECT] : enable DRAM number detect by L_GPIO3 +# Normal +# Enabled +DRAM_NUMBER_DETECT = Normal + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +DRAM_TYPE = DDR3 + +# [DDR_TREFI] : ddr refresh time select by temparature range +# Normal(0~85) +# Extend(85~95) +DDR_TREFI = Normal + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO (default: P_GPIO13) +# Normal (No GPIO detected) +# 0 (C_GPIO) +# 1 (P_GPIO) +# 2 (S_GPIO) +# 3 (L_GPIO) +# 4 (D_GPIO) +# 5 (HSI_GPI) +# 6 (ADC_GPIO) +# 7 (Reserved) +DRAM_2ND_TBL_DETECT = Normal + +# [DRAM_2ND_TBL_DETECT_GPIO_NO] : enable DRAM 2nd table detect by X_GPIO_n +# where +# C_GPIO --> n=0~22 +# P_GPIO --> n=0~25 +# S_GPIO --> n=0~12 +# L_GPIO --> n=0~24 +# D_GPIO --> n=0~21 +# HSI_GPI --> n=0~11 +# ADC_GPIO --> n=0~2 +DRAM_2ND_TBL_DETECT_GPIO_NO = 13 + +# [DRAM1_2ND_CLK] : DRAM1(16-bit) 2nd table clock rate +# 700 +# 793 +# 933 +# 1066 +DRAM1_2ND_CLK = 933 + +# [DRAM2_2ND_CLK] : DRAM2(16-bit) 2nd table clock rate (must <= DRAM1_CLK) +# 793 +# 933 +# 1066 +DRAM2_2ND_CLK = 933 + +# [SDRAM_2ND_SIZE] : 2nd table DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +SDRAM_2ND_SIZE = 4096 + +# [SDRAM2_2ND_SIZE] : 2nd table DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +SDRAM2_2ND_SIZE = 4096 + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +# EMMC +# EMMC_NAND_COMBO >>>[eMMC & NandSpi 2 in 1 & STORAGEEXT must choose NONE]<<< +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth >>>[During this option => STORAGEINT MUST not choose @EMMC_NAND_COMBO]<<< +STORAGEEXT = Sdio1 + +# [FAST_K] : enable fast k to shrink boot time +# Normal +# Enabled +FAST_K = Normal + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = AES128 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal + +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x1000000 +LOADER_DRAM_ADDR = 0x1000000 + +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader decrypt optee option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_OPTEE] : Loader decrypt optee or not (Depend on optee build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_OPTEE = Normal + +#==============================================================================# +# exFAT support(Once customer want to use exFAT, need get license from $MS ) # +#==============================================================================# +# [exFAT] : Loader support exFAT or not +# NONE +# EXFAT +EXFAT_FILESYSTEM_SUPPORT = NONE + + diff --git a/board/novatek/na51055/loader/Project/Model/Src/prj_main.c b/board/novatek/na51055/loader/Project/Model/Src/prj_main.c new file mode 100755 index 000000000000..9734daeac1db --- /dev/null +++ b/board/novatek/na51055/loader/Project/Model/Src/prj_main.c @@ -0,0 +1,207 @@ +/* + Project layer Main control function + + This file is implement by user mode + + @file prj_main.c + + Copyright Novatek Microelectronics Corp. 2015. All rights reserved. +*/ + +#include "fuart.h" +#include "fat.h" +#include "rtc.h" +#include "timer.h" +#include "StorageDef.h" +#include "global.h" +#include "Clock.h" +#include "string.h" +#include "prj_main.h" +#include "debug.h" + +#define _THUMB2 __attribute__((target("thumb2"))) + +#if defined(_STORAGEINT_EMMC_NAND_COMBO_) +#if (CHECK_CARD_EXIST == ENABLE) +#undef CHECK_CARD_EXIST +#define CHECK_CARD_EXIST DISABLE +#endif + +#endif + +extern UINT32 LoaderInternalInfo[]; + +#if (DEBUG_MSG == DISABLE) +//weak function mechanism for debug msg output +extern void debug_disable_msg(void); +void debug_disable_msg(void) {} +#endif + +#if (SPECIAL_KEY_UPDATE == ENABLE) +/** + Check special key1(s) is(are) pressed. + + Check special key1(s) is(are) pressed or not. + + @return Key pressed status + - @b TRUE: Special key(s) is(are) pressed + - @b FALSE: Otherwise +*/ +static BOOL prj_isSpecialKeyPressed(void) +{ + // Detect key example, must press shutter2 and playback mode keys + // OUT_0: DGPIO 0 + // OUT_1: DGPIO 14 + // OUT_2: DGPIO 2 + // OUT_3: DGPIO 3 + // OUT_4: DGPIO 4 + // IN_0 : DGPIO 5 + // IN_1 : DGPIO 6 + // IN_2 : DGPIO 7 + // IN_3 : DGPIO 8 + // KEY_IN_0 KEY_IN_1 KEY_IN_2 KEY_IN_3 + // KEY_OUT_0 MENU SET PLAYBACK DISPLAY + // KEY_OUT_1 WIDE LEFT MOVIE + // KEY_OUT_2 TELE DOWN TRASH + // KEY_OUT_3 SHUTTER2 RIGHT CAPTURE + // KEY_OUT_4 SHUTTER1 UP + // Add the necessary code.. + return TRUE; +} +#endif + +#if (CHECK_CARD_EXIST == ENABLE) +// MC16 default is config as input and pull up +_THUMB2 static BOOL prj_checkCardExist(void) +{ +#if (STORAGE_EXT_TYPE == STORAGE_EXT_ETH) + return TRUE; // force ethernet probe DHCP server +#else + return (gpio_getPin(DGPIO_CARD_DETECT) == 0 ? TRUE : FALSE); +#endif +} +#endif + +#if 0 +static BOOL bl_spiIdentify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacityID, PSPI_IDENTIFY pIdentify) +{ + // Sample to support SST25VF032 + if ((uiMfgID == 0xBF) && + (uiCapacityID == 0x4A)) { + pIdentify->bDualRead = FALSE; + pIdentify->bSupportAAI = TRUE; + pIdentify->bSupportEWSR = TRUE; + pIdentify->uiFlashSize = 4 * 1024 * 1024; + return TRUE; + } + + return FALSE; +} + +static void bl_flashLED(void) +{ + // use GPIO to control LED +} +#endif + +// main entry of project layer code +_THUMB2 void prj_main(void) +{ + PSTORAGE_OBJ strg_obj = NULL; + loader_setVersion(_LDR_VER_); + + debug_msg("\r\n"); + debug_msg("LD_VER "); + debug_msg(Dec2HexStr2Bytes((LoaderInternalInfo[1] >> 28) & 0xF)); + debug_msg("."); + debug_msg(Dec2HexStr2Bytes((LoaderInternalInfo[1] >> 24) & 0xF)); + debug_msg("."); + debug_msg(Dec2HexStr2Bytes((LoaderInternalInfo[1] >> 16) & 0xFF)); + debug_msg("\r\n"); + + // Print project layer info + if((LoaderInternalInfo[6] & 0x100000) == 0x100000) { + if(gpio_getPin((((LoaderInternalInfo[6]>>12)&0x7)*32) + ((LoaderInternalInfo[6]>>15)&0x1f))) { + debug_msg(_LOADER_VERSION_STR2_); + } else { + debug_msg(_LOADER_VERSION_STR_); + } + } else { + debug_msg(_LOADER_VERSION_STR_); + } + + // Setup loader/fw file names + loader_setUpdateFwName(_UPDATE_FW_NAME_); + loader_setUpdateLdrName(_UPDATE_LOADER_NAME_); + loader_setRunFwName(_RUN_FW_NAME_); + // Setup FW_MAC_CODE_SIZE (i.e. FWResvSize in RTOS) + +#if 0 + // Sample to hook spi flash extending function + flash_installIdentifyCB(bl_spiIdentify); +#endif + +#if 0 + // Sample to hook flash programming LED callback + flash_installAccessCB(bl_flashLED); +#endif + +#if (SPECIAL_KEY_UPDATE == ENABLE) + loader_installSpecialKeyCB(prj_isSpecialKeyPressed); +#endif + +#if (CHECK_CARD_EXIST == ENABLE) + loader_installCardDetectCB(prj_checkCardExist); +#endif + + +#if defined(_STORAGEINT_NandSpi_) + strg_obj = nand_get_storage_object(); +#if (SPI_PINMUX_SETTING == SPI_PINMUX_4BITS) + strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_SUPPORT_4BITS, TRUE); +#endif + loader_setStorageIntType(STORAGEINT_SPI_NAND, strg_obj); + + // set Nand Flash speed to 96MHz + //strg_obj->flash_setFrequency(96); +#elif defined(_STORAGEINT_SpiFlash_) + strg_obj = nor_get_storage_object(); +#if (SPI_PINMUX_SETTING == SPI_PINMUX_4BITS) + strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_SUPPORT_4BITS, TRUE); +#endif + loader_setStorageIntType(STORAGEINT_SPI_NOR, strg_obj); +#elif defined(_STORAGEINT_EMMC_) + strg_obj = emmc_get_storage_object(); + strg_obj->flash_setConfig(FLASH_CFG_ID_EMMC_SUPPORT_8BITS, TRUE); + loader_setStorageIntType(STORAGEINT_EMMC, strg_obj); +#elif defined(_STORAGEINT_EMMC_NAND_COMBO_) + if (top_get_bs() == BOOT_SOURCE_SPI_NAND_2K || top_get_bs() == BOOT_SOURCE_SPI_NAND_4K) { + debug_msg_var("NAND,BS=", top_get_bs()); + strg_obj = nand_get_storage_object(); +#if (SPI_PINMUX_SETTING == SPI_PINMUX_4BITS) + strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_SUPPORT_4BITS, TRUE); +#endif + loader_setStorageIntType(STORAGEINT_SPI_NAND, strg_obj); + } else if (top_get_bs() == BOOT_SOURCE_EMMC_4BIT || top_get_bs() == BOOT_SOURCE_EMMC_8BIT) { + debug_msg("eMMC"); + strg_obj = emmc_get_storage_object(); + if (top_get_bs() == BOOT_SOURCE_EMMC_8BIT) { + strg_obj->flash_setConfig(FLASH_CFG_ID_EMMC_SUPPORT_8BITS, TRUE); + debug_msg("[8bit]\r\n"); + } else { + debug_msg("[4bit]\r\n"); + } + loader_setStorageIntType(STORAGEINT_EMMC, strg_obj); + } else if (top_get_bs() == BOOT_SOURCE_SPI) { + debug_msg("NOR\r\n"); + strg_obj = nor_get_storage_object(); +#if (SPI_PINMUX_SETTING == SPI_PINMUX_4BITS) + strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_SUPPORT_4BITS, TRUE); +#endif + loader_setStorageIntType(STORAGEINT_SPI_NOR, strg_obj); + } else { + debug_msg_var("unknow BS=", top_get_bs()); + } +#endif +} + diff --git a/board/novatek/na51055/loader/Project/Model/Src/prj_main.h b/board/novatek/na51055/loader/Project/Model/Src/prj_main.h new file mode 100755 index 000000000000..7efa3fa71613 --- /dev/null +++ b/board/novatek/na51055/loader/Project/Model/Src/prj_main.h @@ -0,0 +1,82 @@ +/** + Loader project header file + + Loader project header file + + @file prj_main.h + @note Nothing +*/ + +#ifndef _PRJ_MAIN_H +#define _PRJ_MAIN_H + +#include "constant.h" +#include "loader.h" +#include "GPIO.h" + +// Define SPECIAL_KEY_UPDATE == ENABLE will require user to press special key +// to update firmware +#ifndef SPECIAL_KEY_UPDATE +#define SPECIAL_KEY_UPDATE DISABLE +#endif + +#ifndef SPI_PINMUX_NORMAL +#define SPI_PINMUX_NORMAL (0) +#endif + +#ifndef SPI_PINMUX_4BITS +#define SPI_PINMUX_4BITS (1) +#endif + +#ifndef SPI_PINMUX_SETTING +#define SPI_PINMUX_SETTING (SPI_PINMUX_4BITS) +#endif + +// Define MACROs for external storage +// +#ifndef STORAGE_EXT_UNKOWN +#define STORAGE_EXT_UNKOWN (0) +#endif + +#ifndef STORAGE_EXT_SDIO1 +#define STORAGE_EXT_SDIO1 (1) +#endif + +#ifndef STORAGE_EXT_SDIO2 +#define STORAGE_EXT_SDIO2 (2) +#endif + +#ifndef STORAGE_EXT_USB +#define STORAGE_EXT_USB (3) +#endif + +#ifndef STORAGE_EXT_ETH +#define STORAGE_EXT_ETH (4) +#endif + +#ifndef STORAGE_EXT_NONE +#define STORAGE_EXT_NONE (5) +#endif + +#ifndef STORAGE_EXT_TYPE +#define STORAGE_EXT_TYPE (STORAGE_EXT_SDIO1) +#endif + + + +// Card detect GPIO offset +#if (CARD_DETECT_PIN == _CARD_DETECT_TYPE_1_) +#define DGPIO_CARD_DETECT (P_GPIO_12) +#elif (CARD_DETECT_PIN == _CARD_DETECT_TYPE_2_) +#define DGPIO_CARD_DETECT (C_GPIO_9) +#else +#define DGPIO_CARD_DETECT (P_GPIO_17) +#endif + + +#define CHECK_CARD_EXIST (ENABLE) + +// disable debug msg +#define DEBUG_MSG (ENABLE) + +#endif diff --git a/board/novatek/na51055/loader/Tools/Bin/Configram520 b/board/novatek/na51055/loader/Tools/Bin/Configram520 new file mode 100755 index 0000000000000000000000000000000000000000..ca78ec39ee620aaa32f09cbecf18977a37791d81 GIT binary patch literal 1877416 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�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


rnT*$xG@q^-|iqvW{0CJhgW;> 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%0Dg}hs#XNe3aA5Mh4pyU@W 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/Tools/Bin/encrypt_boot b/board/novatek/na51055/loader/Tools/Bin/encrypt_boot new file mode 100755 index 0000000000000000000000000000000000000000..899da5df7a16745ab5fac667b360c6977e05fdd6 GIT binary patch literal 75800 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≶9N2i(iTw%NZxr`+?QUYO$@P53{DK>gn=$ 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 O{KZVRwX1rb`F{W&mY=i$ literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/Tools/Bin/encrypt_boot_dump b/board/novatek/na51055/loader/Tools/Bin/encrypt_boot_dump new file mode 100755 index 0000000000000000000000000000000000000000..1a44cedcf2ce0329117ee9c99962b90329455ce6 GIT binary patch literal 75832 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 Z6x35`rKN1yU6%4WWi#2<uIg##{{o0M7KQ)- literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/Tools/Bin/nvt-ld-op b/board/novatek/na51055/loader/Tools/Bin/nvt-ld-op new file mode 100755 index 0000000000000000000000000000000000000000..99cf292f35b33b287b40943ac101b2f16c64cc3c GIT binary patch literal 754576 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%0AtvhYcfjw99?uiAx6 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 WKU@Fa*V*RRudY)j$@*`jQvVCBRu%OC literal 0 HcmV?d00001 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_400_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_400_1024.ini new file mode 100755 index 000000000000..77a58b73a478 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_400_1024.ini @@ -0,0 +1,138 @@ +ini_ver = 0x11221021 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00215555 +#Dram Configuration register(0xF0000000) +config_reg = 0x00015063 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10606406 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0C2E002A +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x000C1415 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000302 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x07 +# reg_39 +reg_39 = 0x07 +# reg_40 +reg_40 = 0x0D +# reg_41 +reg_41 = 0x0D +# reg_42 +reg_42 = 0x08 +# reg_43 +reg_43 = 0x08 +# reg_44 +reg_44 = 0x08 +# reg_45 +reg_45 = 0x08 +# reg_46 +reg_46 = 0x08 +# reg_47 +reg_47 = 0x08 +# reg_53 +reg_53 = 0x07 +# reg_54 +reg_54 = 0x0B +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0B +# reg_58 +reg_58 = 0x07 +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_400_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_400_2048.ini new file mode 100755 index 000000000000..711265869635 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_400_2048.ini @@ -0,0 +1,138 @@ +ini_ver = 0x11221021 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00215555 +#Dram Configuration register(0xF0000000) +config_reg = 0x00015064 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10606406 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0C2E003F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x000C1415 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000302 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x07 +# reg_39 +reg_39 = 0x07 +# reg_40 +reg_40 = 0x0D +# reg_41 +reg_41 = 0x0D +# reg_42 +reg_42 = 0x08 +# reg_43 +reg_43 = 0x08 +# reg_44 +reg_44 = 0x08 +# reg_45 +reg_45 = 0x08 +# reg_46 +reg_46 = 0x08 +# reg_47 +reg_47 = 0x08 +# reg_53 +reg_53 = 0x07 +# reg_54 +reg_54 = 0x0B +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0B +# reg_58 +reg_58 = 0x07 +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_400_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_400_4096.ini new file mode 100755 index 000000000000..c723466cac62 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_400_4096.ini @@ -0,0 +1,138 @@ +ini_ver = 0x11221021 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00215555 +#Dram Configuration register(0xF0000000) +config_reg = 0x00015065 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10606406 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0C2E0069 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x000C1415 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000302 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x07 +# reg_39 +reg_39 = 0x07 +# reg_40 +reg_40 = 0x0D +# reg_41 +reg_41 = 0x0D +# reg_42 +reg_42 = 0x08 +# reg_43 +reg_43 = 0x08 +# reg_44 +reg_44 = 0x08 +# reg_45 +reg_45 = 0x08 +# reg_46 +reg_46 = 0x08 +# reg_47 +reg_47 = 0x08 +# reg_53 +reg_53 = 0x07 +# reg_54 +reg_54 = 0x0B +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0B +# reg_58 +reg_58 = 0x07 +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_507_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_507_1024.ini new file mode 100755 index 000000000000..261f6c2c5fc6 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_507_1024.ini @@ -0,0 +1,138 @@ +ini_ver = 0x11221021 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x002A4000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00016083 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F550035 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x07 +# reg_39 +reg_39 = 0x07 +# reg_40 +reg_40 = 0x0D +# reg_41 +reg_41 = 0x0D +# reg_42 +reg_42 = 0x08 +# reg_43 +reg_43 = 0x08 +# reg_44 +reg_44 = 0x08 +# reg_45 +reg_45 = 0x08 +# reg_46 +reg_46 = 0x08 +# reg_47 +reg_47 = 0x08 +# reg_53 +reg_53 = 0x07 +# reg_54 +reg_54 = 0x0B +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0B +# reg_58 +reg_58 = 0x07 +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_507_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_507_2048.ini new file mode 100755 index 000000000000..1e5c53e23b17 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_507_2048.ini @@ -0,0 +1,138 @@ +ini_ver = 0x11221021 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x002A4000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00016084 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F55004F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x07 +# reg_39 +reg_39 = 0x07 +# reg_40 +reg_40 = 0x0D +# reg_41 +reg_41 = 0x0D +# reg_42 +reg_42 = 0x08 +# reg_43 +reg_43 = 0x08 +# reg_44 +reg_44 = 0x08 +# reg_45 +reg_45 = 0x08 +# reg_46 +reg_46 = 0x08 +# reg_47 +reg_47 = 0x08 +# reg_53 +reg_53 = 0x07 +# reg_54 +reg_54 = 0x0B +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0B +# reg_58 +reg_58 = 0x07 +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_507_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_507_4096.ini new file mode 100755 index 000000000000..3c1e6c664242 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_507_4096.ini @@ -0,0 +1,138 @@ +ini_ver = 0x11221021 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x002A4000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00016085 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F550081 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x07 +# reg_39 +reg_39 = 0x07 +# reg_40 +reg_40 = 0x0D +# reg_41 +reg_41 = 0x0D +# reg_42 +reg_42 = 0x08 +# reg_43 +reg_43 = 0x08 +# reg_44 +reg_44 = 0x08 +# reg_45 +reg_45 = 0x08 +# reg_46 +reg_46 = 0x08 +# reg_47 +reg_47 = 0x08 +# reg_53 +reg_53 = 0x07 +# reg_54 +reg_54 = 0x0B +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0B +# reg_58 +reg_58 = 0x07 +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_793_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_793_1024.ini new file mode 100755 index 000000000000..02339f7973f1 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_793_1024.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00421554 +#Dram Configuration register(0xF0000000) +config_reg = 0x000180B3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17FC0058 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x0A +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x54 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_793_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_793_2048.ini new file mode 100755 index 000000000000..d99572962afd --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_793_2048.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00421554 +#Dram Configuration register(0xF0000000) +config_reg = 0x000180B4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17FC007F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x0A +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x54 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_793_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_793_4096.ini new file mode 100755 index 000000000000..36aa8746ecc8 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_793_4096.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00421554 +#Dram Configuration register(0xF0000000) +config_reg = 0x000180B5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17FC00D0 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x0A +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x54 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_933_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_933_1024.ini new file mode 100755 index 000000000000..95d0123a69e0 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_933_1024.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004DC000 +#Dram Configuration register(0xF0000000) +config_reg = 0x000190D3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1C390067 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0C +# reg_0F +reg_0F = 0x0E +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x01 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x07 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x44 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_933_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_933_2048.ini new file mode 100755 index 000000000000..cebcefdfada3 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_933_2048.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004DC000 +#Dram Configuration register(0xF0000000) +config_reg = 0x000190D4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1C390096 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0C +# reg_0F +reg_0F = 0x0E +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x01 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x07 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x44 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_933_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_933_4096.ini new file mode 100755 index 000000000000..b01f876a5d2b --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/520/51055A_DRAM1_933_4096.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004DC000 +#Dram Configuration register(0xF0000000) +config_reg = 0x000190D5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1C3900F3 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0C +# reg_0F +reg_0F = 0x0E +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x01 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x07 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x44 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_507_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_507_1024.ini new file mode 100755 index 000000000000..68eaa21e0269 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_507_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00296000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00116083 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F050035 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x65 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_507_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_507_2048.ini new file mode 100755 index 000000000000..4804289a2e8a --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_507_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00296000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00116084 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F05004F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x65 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_507_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_507_4096.ini new file mode 100755 index 000000000000..b4e686d8de22 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_507_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00296000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00116085 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F050081 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x65 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_700_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_700_1024.ini new file mode 100755 index 000000000000..e878164b46a7 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_700_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00396AAA +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x14D7004B +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x06 +# reg_0F +reg_0F = 0x08 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0b +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_700_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_700_2048.ini new file mode 100755 index 000000000000..ae195fc5b7c6 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_700_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00396AAA +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x14D7006E +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x06 +# reg_0F +reg_0F = 0x08 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0b +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_700_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_700_4096.ini new file mode 100755 index 000000000000..bd176845b76f --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_700_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00396AAA +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x14D700B4 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x06 +# reg_0F +reg_0F = 0x08 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0b +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_793_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_793_1024.ini new file mode 100755 index 000000000000..ab0cd190fd26 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_793_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00412000 +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17A20058 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_793_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_793_2048.ini new file mode 100755 index 000000000000..fb0a21f9988d --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_793_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00412000 +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17A2007F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_793_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_793_4096.ini new file mode 100755 index 000000000000..fbce174389cc --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_793_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00412000 +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17A200D0 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_933_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_933_1024.ini new file mode 100755 index 000000000000..8e0e9b9acdc6 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_933_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004CB554 +#Dram Configuration register(0xF0000000) +config_reg = 0x001190D3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1BDA0067 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0D +# reg_0F +reg_0F = 0x0D +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x01 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x05 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0D +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_933_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_933_2048.ini new file mode 100755 index 000000000000..5eb68a216f25 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_933_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004CB554 +#Dram Configuration register(0xF0000000) +config_reg = 0x001190D4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1BDA0096 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0D +# reg_0F +reg_0F = 0x0D +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x01 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x05 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0D +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_933_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_933_4096.ini new file mode 100755 index 000000000000..983e0c00b9bf --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/522/51055A_DRAM2_933_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004CB554 +#Dram Configuration register(0xF0000000) +config_reg = 0x001190D5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1BDA00F3 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0D +# reg_0F +reg_0F = 0x0D +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x01 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x05 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0D +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_507_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_507_1024.ini new file mode 100755 index 000000000000..68eaa21e0269 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_507_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00296000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00116083 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F050035 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x65 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_507_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_507_2048.ini new file mode 100755 index 000000000000..4804289a2e8a --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_507_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00296000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00116084 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F05004F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x65 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_507_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_507_4096.ini new file mode 100755 index 000000000000..b4e686d8de22 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_507_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00296000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00116085 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F050081 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x65 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_700_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_700_1024.ini new file mode 100755 index 000000000000..e878164b46a7 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_700_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00396AAA +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x14D7004B +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x06 +# reg_0F +reg_0F = 0x08 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0b +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_700_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_700_2048.ini new file mode 100755 index 000000000000..ae195fc5b7c6 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_700_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00396AAA +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x14D7006E +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x06 +# reg_0F +reg_0F = 0x08 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0b +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_700_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_700_4096.ini new file mode 100755 index 000000000000..bd176845b76f --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_700_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00396AAA +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x14D700B4 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x06 +# reg_0F +reg_0F = 0x08 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0b +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_793_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_793_1024.ini new file mode 100755 index 000000000000..ab0cd190fd26 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_793_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00412000 +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17A20058 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_793_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_793_2048.ini new file mode 100755 index 000000000000..fb0a21f9988d --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_793_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00412000 +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17A2007F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_793_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_793_4096.ini new file mode 100755 index 000000000000..fbce174389cc --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_793_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00412000 +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17A200D0 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_933_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_933_1024.ini new file mode 100755 index 000000000000..8e0e9b9acdc6 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_933_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004CB554 +#Dram Configuration register(0xF0000000) +config_reg = 0x001190D3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1BDA0067 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0D +# reg_0F +reg_0F = 0x0D +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x01 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x05 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0D +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_933_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_933_2048.ini new file mode 100755 index 000000000000..5eb68a216f25 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_933_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004CB554 +#Dram Configuration register(0xF0000000) +config_reg = 0x001190D4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1BDA0096 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0D +# reg_0F +reg_0F = 0x0D +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x01 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x05 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0D +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_933_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_933_4096.ini new file mode 100755 index 000000000000..983e0c00b9bf --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523/51055A_DRAM2_933_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004CB554 +#Dram Configuration register(0xF0000000) +config_reg = 0x001190D5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1BDA00F3 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0D +# reg_0F +reg_0F = 0x0D +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x01 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x05 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0D +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_507_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_507_1024.ini new file mode 100755 index 000000000000..229160354f96 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_507_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00296000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00116083 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F050035 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x65 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_507_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_507_2048.ini new file mode 100755 index 000000000000..4804289a2e8a --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_507_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00296000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00116084 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F05004F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x65 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_507_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_507_4096.ini new file mode 100755 index 000000000000..b4e686d8de22 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_507_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00296000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00116085 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F050081 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x65 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_700_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_700_1024.ini new file mode 100755 index 000000000000..e878164b46a7 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_700_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00396AAA +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x14D7004B +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x06 +# reg_0F +reg_0F = 0x08 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0b +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_700_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_700_2048.ini new file mode 100755 index 000000000000..ae195fc5b7c6 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_700_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00396AAA +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x14D7006E +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x06 +# reg_0F +reg_0F = 0x08 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0b +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_700_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_700_4096.ini new file mode 100755 index 000000000000..bd176845b76f --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_700_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00396AAA +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x14D700B4 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x06 +# reg_0F +reg_0F = 0x08 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0b +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_793_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_793_1024.ini new file mode 100755 index 000000000000..ab0cd190fd26 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_793_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00412000 +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17A20058 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_793_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_793_2048.ini new file mode 100755 index 000000000000..fb0a21f9988d --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_793_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00412000 +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17A2007F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_793_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_793_4096.ini new file mode 100755 index 000000000000..fbce174389cc --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_793_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00412000 +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17A200D0 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_933_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_933_1024.ini new file mode 100755 index 000000000000..8e0e9b9acdc6 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_933_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004CB554 +#Dram Configuration register(0xF0000000) +config_reg = 0x001190D3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1BDA0067 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0D +# reg_0F +reg_0F = 0x0D +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x01 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x05 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0D +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_933_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_933_2048.ini new file mode 100755 index 000000000000..5eb68a216f25 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_933_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004CB554 +#Dram Configuration register(0xF0000000) +config_reg = 0x001190D4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1BDA0096 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0D +# reg_0F +reg_0F = 0x0D +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x01 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x05 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0D +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_933_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_933_4096.ini new file mode 100755 index 000000000000..983e0c00b9bf --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/523_A/51055A_DRAM2_933_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004CB554 +#Dram Configuration register(0xF0000000) +config_reg = 0x001190D5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1BDA00F3 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0D +# reg_0F +reg_0F = 0x0D +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x01 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x05 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0D +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_507_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_507_1024.ini new file mode 100755 index 000000000000..582d10f3774a --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_507_1024.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x002A4000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00016083 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F550035 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_507_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_507_2048.ini new file mode 100755 index 000000000000..dd9ff2311e19 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_507_2048.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x002A4000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00016084 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F55004F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_507_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_507_4096.ini new file mode 100755 index 000000000000..843f7a286b3a --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_507_4096.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x002A4000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00016085 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F550081 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_700_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_700_1024.ini new file mode 100755 index 000000000000..ca196f9741ca --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_700_1024.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x003A5555 +#Dram Configuration register(0xF0000000) +config_reg = 0x000180B3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x152C004B +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x09 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0b +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_700_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_700_2048.ini new file mode 100755 index 000000000000..2c5bba86dcfb --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_700_2048.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x003A5555 +#Dram Configuration register(0xF0000000) +config_reg = 0x000180B4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x152C006E +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x09 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0b +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_700_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_700_4096.ini new file mode 100755 index 000000000000..5d2376ff8486 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_700_4096.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x003A5555 +#Dram Configuration register(0xF0000000) +config_reg = 0x000180B5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x152C00B4 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x09 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0b +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_1024.ini new file mode 100755 index 000000000000..02339f7973f1 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_1024.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00421554 +#Dram Configuration register(0xF0000000) +config_reg = 0x000180B3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17FC0058 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x0A +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x54 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_2048.ini new file mode 100755 index 000000000000..d99572962afd --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_2048.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00421554 +#Dram Configuration register(0xF0000000) +config_reg = 0x000180B4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17FC007F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x0A +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x54 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_2048_ODT.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_2048_ODT.ini new file mode 100755 index 000000000000..9d245d01a09d --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_2048_ODT.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00421554 +#Dram Configuration register(0xF0000000) +config_reg = 0x000180B4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17FC007F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x0A +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x01 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x54 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_4096.ini new file mode 100755 index 000000000000..36aa8746ecc8 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_4096.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00421554 +#Dram Configuration register(0xF0000000) +config_reg = 0x000180B5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17FC00D0 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x0A +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x00 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x54 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_4096_ODT.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_4096_ODT.ini new file mode 100755 index 000000000000..6e5b1dea98be --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_793_4096_ODT.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00421554 +#Dram Configuration register(0xF0000000) +config_reg = 0x000180B5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17FC00D0 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x0A +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x01 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x08 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x54 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_933_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_933_1024.ini new file mode 100755 index 000000000000..00bd6ff93ffb --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_933_1024.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004DC000 +#Dram Configuration register(0xF0000000) +config_reg = 0x000190D3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1C390067 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0C +# reg_0F +reg_0F = 0x0E +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x01 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x34 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_933_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_933_2048.ini new file mode 100755 index 000000000000..e75c6c0b7241 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_933_2048.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004DC000 +#Dram Configuration register(0xF0000000) +config_reg = 0x000190D4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1C390096 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0C +# reg_0F +reg_0F = 0x0E +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x01 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x34 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_933_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_933_4096.ini new file mode 100755 index 000000000000..d21e4d1445b8 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM1_933_4096.ini @@ -0,0 +1,138 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004DC000 +#Dram Configuration register(0xF0000000) +config_reg = 0x000190D5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1C3900F3 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0C +# reg_0F +reg_0F = 0x0E +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_59 +reg_59 = 0x0E +# reg_5A +reg_5A = 0x0E +# reg_61 +reg_61 = 0x01 +# reg_64 +reg_64 = 0x44 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x08 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x34 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# reg_DE +reg_DE = 0x04 +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_507_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_507_1024.ini new file mode 100755 index 000000000000..68eaa21e0269 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_507_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00296000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00116083 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F050035 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x65 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_507_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_507_2048.ini new file mode 100755 index 000000000000..4804289a2e8a --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_507_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00296000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00116084 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F05004F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x65 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_507_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_507_4096.ini new file mode 100755 index 000000000000..b4e686d8de22 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_507_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00296000 +#Dram Configuration register(0xF0000000) +config_reg = 0x00116085 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x10707507 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x0F050081 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x0010191A +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000403 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC0 +# reg_0D +reg_0D = 0x02 +# reg_0F +reg_0F = 0x02 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x65 +# reg_B1 +reg_B1 = 0x43 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x04 +# reg_B8 +reg_B8 = 0x65 +# reg_D5 +reg_D5 = 0x0B +# reg_D6 +reg_D6 = 0x0B +# descew_c1_reg00 +descew_c1_reg00 = 0x7F +# descew_c1_reg01 +descew_c1_reg01 = 0x7F +# descew_c1_reg02 +descew_c1_reg02 = 0x7F +# descew_c1_reg03 +descew_c1_reg03 = 0x7F +# descew_c1_reg04 +descew_c1_reg04 = 0x7F +# descew_c1_reg05 +descew_c1_reg05 = 0x7F +# descew_c1_reg06 +descew_c1_reg06 = 0x7F +# descew_c1_reg07 +descew_c1_reg07 = 0x7F +# descew_c1_reg08 +descew_c1_reg08 = 0x7F +# descew_c1_reg09 +descew_c1_reg09 = 0x7F +# descew_c1_reg0A +descew_c1_reg0A = 0x7F +# descew_c1_reg0B +descew_c1_reg0B = 0x7F +# descew_c1_reg0C +descew_c1_reg0C = 0x7F +# descew_c1_reg0D +descew_c1_reg0D = 0x7F +# descew_c1_reg0E +descew_c1_reg0E = 0x7F +# descew_c1_reg0F +descew_c1_reg0F = 0x7F +# descew_c1_reg10 +descew_c1_reg10 = 0x7F +# descew_c1_reg11 +descew_c1_reg11 = 0x7F +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_700_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_700_1024.ini new file mode 100755 index 000000000000..b6e8762982f8 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_700_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00396AAA +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x14D7004B +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x07 +# reg_0F +reg_0F = 0x08 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0c +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_700_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_700_2048.ini new file mode 100755 index 000000000000..25d57f9c1051 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_700_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00396AAA +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x14D7006E +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x07 +# reg_0F +reg_0F = 0x08 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0c +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_700_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_700_4096.ini new file mode 100755 index 000000000000..3d5f5ea7af12 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_700_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00396AAA +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x20A09509 +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x14D700B4 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00151C22 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000504 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x07 +# reg_0F +reg_0F = 0x08 +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0b +# reg_D6 +reg_D6 = 0x0c +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_1024.ini new file mode 100755 index 000000000000..ab0cd190fd26 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00412000 +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17A20058 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_2048.ini new file mode 100755 index 000000000000..fb0a21f9988d --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00412000 +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17A2007F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_2048_ODT.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_2048_ODT.ini new file mode 100755 index 000000000000..e8263ff80ee0 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_2048_ODT.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00412000 +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17A2007F +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x01 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_4096.ini new file mode 100755 index 000000000000..fbce174389cc --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00412000 +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17A200D0 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x00000000 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x00 +# reg_85 +reg_85 = 0x00 +# reg_86 +reg_86 = 0x00 +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_4096_ODT.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_4096_ODT.ini new file mode 100755 index 000000000000..2de7def2bee9 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_793_4096_ODT.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x00412000 +#Dram Configuration register(0xF0000000) +config_reg = 0x001180B5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x40D0B60B +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x17A200D0 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x00192027 +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC5 +# reg_0D +reg_0D = 0x09 +# reg_0F +reg_0F = 0x0A +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x01 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x11 +# reg_8A +reg_8A = 0x11 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x40 +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x02 +# reg_B8 +reg_B8 = 0x55 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0C +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_933_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_933_1024.ini new file mode 100755 index 000000000000..2f15c75e32bb --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_933_1024.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004CB554 +#Dram Configuration register(0xF0000000) +config_reg = 0x001190D3 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1BDA0067 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0D +# reg_0F +reg_0F = 0x0D +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x01 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x45 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0D +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_933_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_933_2048.ini new file mode 100755 index 000000000000..6cad41fdff37 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_933_2048.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004CB554 +#Dram Configuration register(0xF0000000) +config_reg = 0x001190D4 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1BDA0096 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0D +# reg_0F +reg_0F = 0x0D +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x01 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x45 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0D +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_933_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_933_4096.ini new file mode 100755 index 000000000000..89bc2a6f95ab --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/525/51055A_DRAM2_933_4096.ini @@ -0,0 +1,130 @@ +ini_ver = 0x01210208 +#DMA freq PLL 0x[XX][0x84][0x83][0x82]=12*(0x84*256*256+0x83*256+0x82)/131072 +pllratio = 0x004CB554 +#Dram Configuration register(0xF0000000) +config_reg = 0x001190D5 +#Dram Timming0 Register(0xF0000008) +timing_reg0 = 0x30D0C50C +#Dram Timming1 Register(0xF000000C) +timing_reg1 = 0x1BDA00F3 +#Dram Timming2 Register(0xF0000010) +timing_reg2 = 0x001C202C +#Dram Timming3 Register(0xF0000014) +timing_reg3 = 0x00000605 +#Dram Timming4 Register(0xF0000040) +timing_reg4 = 0x02000000 +#Engineer Register1(0xC0000050) +engineer_reg = 0x00280D21 +#ODT Register(0xF0000024) +odt_reg = 0x01111113 +# reg_0B +reg_0B = 0xC6 +# reg_0D +reg_0D = 0x0D +# reg_0F +reg_0F = 0x0D +# reg_17 +reg_17 = 0x00 +# reg_20 +reg_20 = 0x02 +# reg_21 +reg_21 = 0x02 +# reg_38 +reg_38 = 0x0A +# reg_39 +reg_39 = 0x0A +# reg_40 +reg_40 = 0x10 +# reg_41 +reg_41 = 0x10 +# reg_42 +reg_42 = 0x1A +# reg_43 +reg_43 = 0x1A +# reg_44 +reg_44 = 0x1A +# reg_45 +reg_45 = 0x1A +# reg_46 +reg_46 = 0x1A +# reg_47 +reg_47 = 0x1A +# reg_53 +reg_53 = 0x0A +# reg_54 +reg_54 = 0x0E +# reg_55 +reg_55 = 0x00 +# reg_56 +reg_56 = 0x00 +# reg_57 +reg_57 = 0x0E +# reg_58 +reg_58 = 0x0A +# reg_61 +reg_61 = 0x01 +# reg_85 +reg_85 = 0xBB +# reg_86 +reg_86 = 0xBB +# reg_89 +reg_89 = 0x00 +# reg_8A +reg_8A = 0x00 +# reg_AE +reg_AE = 0x07 +# reg_AF +reg_AF = 0x0F +# reg_B0 +reg_B0 = 0x60 +# reg_B1 +reg_B1 = 0x5E +# reg_B2 +reg_B2 = 0x06 +# reg_B3 +reg_B3 = 0x0F +# reg_B7 +reg_B7 = 0x1E +# reg_B8 +reg_B8 = 0x45 +# reg_D5 +reg_D5 = 0x0C +# reg_D6 +reg_D6 = 0x0D +# descew_c1_reg00 +descew_c1_reg00 = 0x7C +# descew_c1_reg01 +descew_c1_reg01 = 0x7C +# descew_c1_reg02 +descew_c1_reg02 = 0x7C +# descew_c1_reg03 +descew_c1_reg03 = 0x7C +# descew_c1_reg04 +descew_c1_reg04 = 0x7C +# descew_c1_reg05 +descew_c1_reg05 = 0x7D +# descew_c1_reg06 +descew_c1_reg06 = 0x7D +# descew_c1_reg07 +descew_c1_reg07 = 0x7D +# descew_c1_reg08 +descew_c1_reg08 = 0x7D +# descew_c1_reg09 +descew_c1_reg09 = 0x7D +# descew_c1_reg0A +descew_c1_reg0A = 0x7D +# descew_c1_reg0B +descew_c1_reg0B = 0x7D +# descew_c1_reg0C +descew_c1_reg0C = 0x7D +# descew_c1_reg0D +descew_c1_reg0D = 0x7D +# descew_c1_reg0E +descew_c1_reg0E = 0x7C +# descew_c1_reg0F +descew_c1_reg0F = 0x7C +# descew_c1_reg10 +descew_c1_reg10 = 0x7C +# descew_c1_reg11 +descew_c1_reg11 = 0x7C +#end \ No newline at end of file diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_1024.ini new file mode 100755 index 000000000000..ba98f54ae0a1 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_1024.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x40211104 +pllratio = 0x002c7000 +config_reg = 0x0001a0e3 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x203f0073 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x04 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x3c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_2048.ini new file mode 100755 index 000000000000..a67f963f8b26 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_2048.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x30210205 +pllratio = 0x002c7000 +config_reg = 0x0001a0e4 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x203f00a8 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x57 +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_4096.ini new file mode 100755 index 000000000000..4f900769b572 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_4096.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x60210205 +pllratio = 0x002c7000 +config_reg = 0x0001a0e5 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x203f0113 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_8192.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_8192.ini new file mode 100755 index 000000000000..b0cb51b5e757 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_1066_8192.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x20210205 +pllratio = 0x002c7000 +config_reg = 0x0001a0e6 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x203f0113 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x0c +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0xbc +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_1024.ini new file mode 100755 index 000000000000..62aff4c1a34f --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_1024.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x40211104 +pllratio = 0x00210aaa +config_reg = 0x180B3 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17FC0055 +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0x13 +reg_013 = 0x03 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x2d +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_2048.ini new file mode 100755 index 000000000000..a468afacd5ae --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_2048.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x30210205 +pllratio = 0x00210aaa +config_reg = 0x180B4 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17FC007D +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x41 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_4096.ini new file mode 100755 index 000000000000..0ca2dd927b2d --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_4096.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x50210205 +pllratio = 0x00210aaa +config_reg = 0x180B5 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17FC00CD +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x69 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_8192.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_8192.ini new file mode 100755 index 000000000000..e822134e436c --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_793_8192.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x60210205 +pllratio = 0x00210aaa +config_reg = 0x180B6 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17FC00CD +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0x03 +reg_013 = 0x09 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_1024.ini new file mode 100755 index 000000000000..84f173a654dc --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_1024.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x40211104 +pllratio = 0x0026e000 +config_reg = 0x190D3 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1C390064 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0x93 +reg_013 = 0x03 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x35 +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_2048.ini new file mode 100755 index 000000000000..90e396332c74 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_2048.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x30210205 +pllratio = 0x0026e000 +config_reg = 0x190D4 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1C390093 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0xf3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x4c +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_4096.ini new file mode 100755 index 000000000000..476c1858ccd6 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_4096.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x50210205 +pllratio = 0x0026e000 +config_reg = 0x190D5 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1C3900F0 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0xf3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x7b +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_8192.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_8192.ini new file mode 100755 index 000000000000..138ad97bbfaa --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM1_933_8192.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x20210205 +pllratio = 0x0026e000 +config_reg = 0x190D6 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1C3900F0 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0x93 +reg_013 = 0x0a +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0xa5 +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_1024.ini new file mode 100755 index 000000000000..3f2744af5bb5 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_1024.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x40211104 +pllratio = 0x002be555 +config_reg = 0x0011a0e3 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x1fe00073 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x04 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x3c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_2048.ini new file mode 100755 index 000000000000..9ad6e0f8dd78 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_2048.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x30210205 +pllratio = 0x002be555 +config_reg = 0x0011a0e4 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x1fe000a8 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x57 +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_4096.ini new file mode 100755 index 000000000000..020c9f3a9494 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_4096.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x60210205 +pllratio = 0x002be555 +config_reg = 0x0011a0e5 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x1fe00113 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_8192.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_8192.ini new file mode 100755 index 000000000000..1cf900f7cb37 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_1066_8192.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x20210205 +pllratio = 0x002be555 +config_reg = 0x0011a0e6 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x1fe00113 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x0c +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0xbc +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_1024.ini new file mode 100755 index 000000000000..068bc503fef3 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_1024.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x40211104 +pllratio = 0x00209000 +config_reg = 0x1180B3 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17A20055 +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0x13 +reg_013 = 0x03 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x2d +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_2048.ini new file mode 100755 index 000000000000..ab193072fc9e --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_2048.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x30210205 +pllratio = 0x00209000 +config_reg = 0x1180B4 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17A2007D +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x41 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_4096.ini new file mode 100755 index 000000000000..0b6e5692569b --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_4096.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x50210205 +pllratio = 0x00209000 +config_reg = 0x1180B5 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17A200CD +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x69 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_8192.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_8192.ini new file mode 100755 index 000000000000..440046bfe358 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_793_8192.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x60210205 +pllratio = 0x00209000 +config_reg = 0x1180B6 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17A200CD +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0x03 +reg_013 = 0x09 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_1024.ini new file mode 100755 index 000000000000..9ae140174ed6 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_1024.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x40211104 +pllratio = 0x00265AAA +config_reg = 0x1190D3 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1BDA0064 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0x93 +reg_013 = 0x03 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x35 +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_2048.ini new file mode 100755 index 000000000000..9b44cc855342 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_2048.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x30210205 +pllratio = 0x00265AAA +config_reg = 0x1190D4 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1BDA0093 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0xf3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x4c +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_4096.ini new file mode 100755 index 000000000000..4f05832ecfb4 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_4096.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x50210205 +pllratio = 0x00265AAA +config_reg = 0x1190D5 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1BDA00F0 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0xf3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x7b +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_8192.ini b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_8192.ini new file mode 100755 index 000000000000..b527323ffc8b --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/528/51055A_DRAM2_933_8192.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x20210205 +pllratio = 0x00265AAA +config_reg = 0x1190D6 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1BDA00F0 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0x93 +reg_013 = 0x0a +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0xa5 +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_1024.ini new file mode 100755 index 000000000000..ba98f54ae0a1 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_1024.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x40211104 +pllratio = 0x002c7000 +config_reg = 0x0001a0e3 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x203f0073 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x04 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x3c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_2048.ini new file mode 100755 index 000000000000..a67f963f8b26 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_2048.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x30210205 +pllratio = 0x002c7000 +config_reg = 0x0001a0e4 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x203f00a8 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x57 +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_4096.ini new file mode 100755 index 000000000000..4f900769b572 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_4096.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x60210205 +pllratio = 0x002c7000 +config_reg = 0x0001a0e5 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x203f0113 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_8192.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_8192.ini new file mode 100755 index 000000000000..b0cb51b5e757 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_1066_8192.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x20210205 +pllratio = 0x002c7000 +config_reg = 0x0001a0e6 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x203f0113 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x0c +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0xbc +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_1024.ini new file mode 100755 index 000000000000..62aff4c1a34f --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_1024.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x40211104 +pllratio = 0x00210aaa +config_reg = 0x180B3 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17FC0055 +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0x13 +reg_013 = 0x03 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x2d +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_2048.ini new file mode 100755 index 000000000000..a468afacd5ae --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_2048.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x30210205 +pllratio = 0x00210aaa +config_reg = 0x180B4 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17FC007D +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x41 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_4096.ini new file mode 100755 index 000000000000..0ca2dd927b2d --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_4096.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x50210205 +pllratio = 0x00210aaa +config_reg = 0x180B5 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17FC00CD +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x69 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_8192.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_8192.ini new file mode 100755 index 000000000000..e822134e436c --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_793_8192.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x60210205 +pllratio = 0x00210aaa +config_reg = 0x180B6 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17FC00CD +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0x03 +reg_013 = 0x09 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_1024.ini new file mode 100755 index 000000000000..84f173a654dc --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_1024.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x40211104 +pllratio = 0x0026e000 +config_reg = 0x190D3 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1C390064 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0x93 +reg_013 = 0x03 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x35 +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_2048.ini new file mode 100755 index 000000000000..90e396332c74 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_2048.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x30210205 +pllratio = 0x0026e000 +config_reg = 0x190D4 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1C390093 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0xf3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x4c +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_4096.ini new file mode 100755 index 000000000000..476c1858ccd6 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_4096.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x50210205 +pllratio = 0x0026e000 +config_reg = 0x190D5 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1C3900F0 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0xf3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x7b +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_8192.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_8192.ini new file mode 100755 index 000000000000..138ad97bbfaa --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM1_933_8192.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x20210205 +pllratio = 0x0026e000 +config_reg = 0x190D6 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1C3900F0 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x26 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0x93 +reg_013 = 0x0a +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0xa5 +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_1024.ini new file mode 100755 index 000000000000..3f2744af5bb5 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_1024.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x40211104 +pllratio = 0x002be555 +config_reg = 0x0011a0e3 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x1fe00073 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x04 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x3c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_2048.ini new file mode 100755 index 000000000000..9ad6e0f8dd78 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_2048.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x30210205 +pllratio = 0x002be555 +config_reg = 0x0011a0e4 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x1fe000a8 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x57 +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_4096.ini new file mode 100755 index 000000000000..020c9f3a9494 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_4096.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x60210205 +pllratio = 0x002be555 +config_reg = 0x0011a0e5 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x1fe00113 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_8192.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_8192.ini new file mode 100755 index 000000000000..1cf900f7cb37 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_1066_8192.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x20210205 +pllratio = 0x002be555 +config_reg = 0x0011a0e6 +timing_reg0 = 0x40f0d60d +timing_reg1 = 0x1fe00113 +timing_reg2 = 0x00202531 +timing_reg3 = 0x00000706 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x8f +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x0c +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0xbc +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_1024.ini new file mode 100755 index 000000000000..068bc503fef3 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_1024.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x40211104 +pllratio = 0x00209000 +config_reg = 0x1180B3 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17A20055 +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0x13 +reg_013 = 0x03 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x2d +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_2048.ini new file mode 100755 index 000000000000..ab193072fc9e --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_2048.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x30210205 +pllratio = 0x00209000 +config_reg = 0x1180B4 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17A2007D +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x41 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_4096.ini new file mode 100755 index 000000000000..0b6e5692569b --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_4096.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x50210205 +pllratio = 0x00209000 +config_reg = 0x1180B5 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17A200CD +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x69 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_8192.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_8192.ini new file mode 100755 index 000000000000..440046bfe358 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_793_8192.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x60210205 +pllratio = 0x00209000 +config_reg = 0x1180B6 +timing_reg0 = 0x20B0A50A +timing_reg1 = 0x17A200CD +timing_reg2 = 0x00181F26 +timing_reg3 = 0x00000504 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x00000000 +reg_0BC = 0x00 +reg_14A = 0xf0 +reg_14C = 0xf0 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x70 +reg_011 = 0x06 +reg_012 = 0x03 +reg_013 = 0x09 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x00 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x15 +reg_021 = 0x0c +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_1024.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_1024.ini new file mode 100755 index 000000000000..9ae140174ed6 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_1024.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x40211104 +pllratio = 0x00265AAA +config_reg = 0x1190D3 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1BDA0064 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0x93 +reg_013 = 0x03 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x35 +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_2048.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_2048.ini new file mode 100755 index 000000000000..9b44cc855342 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_2048.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x30210205 +pllratio = 0x00265AAA +config_reg = 0x1190D4 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1BDA0093 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0xf3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x4c +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_4096.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_4096.ini new file mode 100755 index 000000000000..4f05832ecfb4 --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_4096.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x50210205 +pllratio = 0x00265AAA +config_reg = 0x1190D5 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1BDA00F0 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0xf3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x7b +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_8192.ini b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_8192.ini new file mode 100755 index 000000000000..b527323ffc8b --- /dev/null +++ b/board/novatek/na51055/loader/Tools/ConfigRam/529/51055A_DRAM2_933_8192.ini @@ -0,0 +1,123 @@ +#ini note : cs driving and phase fine tune +ini_ver = 0x20210205 +pllratio = 0x00265AAA +config_reg = 0x1190D6 +timing_reg0 = 0x40D0C50C +timing_reg1 = 0x1BDA00F0 +timing_reg2 = 0x001C202C +timing_reg3 = 0x00000605 +timing_reg4 = 0x02000000 +timing_reg5 = 0x00000106 +engineer_reg = 0x00280D21 +odt_reg = 0x01111113 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x0c +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0xc0 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xd1 +reg_0C2 = 0x27 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x01 +reg_0C8 = 0xdd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x40 +reg_164 = 0x46 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x11 +reg_0D3 = 0xdd +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x22 +reg_011 = 0x8f +reg_012 = 0x93 +reg_013 = 0x0a +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0xa5 +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x00 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 From 38ec5add3a818d3d524fe6ecd381c66e3a9c7e15 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:10:24 +0000 Subject: [PATCH 03/38] novatek: build the NA51055 loader with a stock toolchain The NA51089 loader's changes (cf320658df3, 784be2b977c, 1098fc3137e), made again for the NT9852x one, so that a distribution's Arm toolchain builds it (arm-none-eabi, or arm-linux-gnueabi as U-Boot's): - target("thumb2") is not a GCC target attribute: target("thumb"); - bin_info.h's header guard defined a different name than it tested; - -fshort-enums: the vendor libraries are built with short enums; - the link asks for neither libstdc++ nor libm, which nothing uses and Ubuntu's arm-none-eabi does not have; - a raise() for libgcc's division by zero handler; - the OP-TEE decrypt option follows its own setting (the vendor typo NA51089's MakeConfig.txt had too; both are Normal here). And for OpenIPC's images: - both models boot from the SPI NOR (STORAGEINT SpiFlash); - LOADER_TYPE follows CHIP: the NA51084 parts (528, 529) take bl_func.h's stand-alone 528 flow, the others the 52x one. The SDK's make_combo_loader.sh got there by editing bl_func.h with sed before building MODEL=EMU_EVB_528; build.sh passes MODEL instead. --- .../na51055/loader/Include/modelext/bin_info.h | 2 +- .../loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c | 2 +- .../loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h | 3 +++ .../loader/LibExt/LIBExt_src/Ctrl_Flow/main.c | 12 +++++++++++- .../loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c | 2 +- .../LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c | 2 +- .../na51055/loader/MakeCommon/MakeCommon.txt | 2 +- .../novatek/na51055/loader/MakeCommon/OutputImg.txt | 4 ++-- .../na51055/loader/Project/Model/MakeConfig.txt | 13 ++++++++++++- board/novatek/na51055/loader/Project/Model/Makefile | 1 + .../loader/Project/Model/ModelConfig_EMU_EVB.txt | 2 +- .../Project/Model/ModelConfig_EMU_EVB_528.txt | 2 +- .../na51055/loader/Project/Model/Src/prj_main.c | 2 +- 13 files changed, 37 insertions(+), 12 deletions(-) diff --git a/board/novatek/na51055/loader/Include/modelext/bin_info.h b/board/novatek/na51055/loader/Include/modelext/bin_info.h index 78bbdbba45e6..a864df4f04b6 100755 --- a/board/novatek/na51055/loader/Include/modelext/bin_info.h +++ b/board/novatek/na51055/loader/Include/modelext/bin_info.h @@ -39,7 +39,7 @@ Copyright Novatek Microelectronics Corp. 2011. All rights reserved. */ #ifndef _BINI_NFO_H -#define _BIN_INFO_H +#define _BINI_NFO_H #define BIN_INFO_VER 0x19062115 ///< YYYY/MM/DD HH #if UITRON_FW diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c index eea772958f2c..8478d1d48e03 100755 --- a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -44,7 +44,7 @@ static PSTORAGE_OBJ int_strg_obj = NULL; #define FW_PART1_SIZE_OFFSET (CODE_SECTION_OFFSET + 0x04) //ref to CodeInfo.S on rtos (addr of _section_01_size) //#define TEE_HEADER_SIZE 0x1C // refer to: optee_header_t -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) #define bl_memcpy utl_memcpy #define bl_memset utl_memset diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h index 143d6b104bf1..48b07bb85348 100755 --- a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h @@ -204,7 +204,10 @@ #define COMBINATION_52x 2 #define COMBINATION_528 3 +/* OpenIPC: MakeConfig.txt picks it from CHIP (-DLOADER_TYPE) */ +#ifndef LOADER_TYPE #define LOADER_TYPE STAND_ALONE_LOADER_52x +#endif #define COMBINATION_LOADER_SIZE 0x18000 diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c index 7d434143bf9b..47b9ce2136b1 100755 --- a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c @@ -19,7 +19,7 @@ extern char _loader_exec_compress_load_cpu_addr[]; extern char _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[]; extern char _loader_data_start_base[]; -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) //--------------------------------------------------------------------------- // Static function //--------------------------------------------------------------------------- @@ -134,3 +134,13 @@ _THUMB2 UINT32 main(void) return uiReturn; } + +/* + * OpenIPC: libgcc's division by zero handler calls raise() when the + * loader is built with a Linux toolchain + */ +int raise(int sig); +int raise(int sig) +{ + return 0; +} diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c index f38fd45e1f71..037b75552884 100755 --- a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c @@ -11,7 +11,7 @@ #include "compiler.h" #include "fuart.h" -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) NAND_FLASH_DEV nvt_nand_ids[] = { diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c index 669f4034760d..f1e5f15d1715 100755 --- a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c @@ -11,7 +11,7 @@ #include "compiler.h" #include "fuart.h" -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) NOR_FLASH_DEV nvt_nor_ids[] = { diff --git a/board/novatek/na51055/loader/MakeCommon/MakeCommon.txt b/board/novatek/na51055/loader/MakeCommon/MakeCommon.txt index a8ea79e7e32b..95aeec679e6d 100755 --- a/board/novatek/na51055/loader/MakeCommon/MakeCommon.txt +++ b/board/novatek/na51055/loader/MakeCommon/MakeCommon.txt @@ -127,7 +127,7 @@ endif # -fno-optimize-sibling-calls : Don't optimize sibling and tail recursive calls # -fno-omit-frame-pointer : Keep the frame pointer in a register for functions that don't need one #---------------------------------------------------------------------- -PLATFORM_CFLAGS += -fno-builtin -ffreestanding -fno-common -fshort-wchar -fno-strict-aliasing -fno-optimize-sibling-calls -fno-omit-frame-pointer +PLATFORM_CFLAGS += -fno-builtin -ffreestanding -fno-common -fshort-enums -fshort-wchar -fno-strict-aliasing -fno-optimize-sibling-calls -fno-omit-frame-pointer # C Language Options for eCos system ifeq "$(USE_ECOS_KERNEL)" "ON" diff --git a/board/novatek/na51055/loader/MakeCommon/OutputImg.txt b/board/novatek/na51055/loader/MakeCommon/OutputImg.txt index 4d081ec1681e..3dc0f7ed8498 100755 --- a/board/novatek/na51055/loader/MakeCommon/OutputImg.txt +++ b/board/novatek/na51055/loader/MakeCommon/OutputImg.txt @@ -310,7 +310,7 @@ $(LD_LIB_D): $(MODELEXT_D) $(IMAGE_D): $(SRC) $(ASM) $(CPP_SRC) $(ALL_OBJ_D) $(LIB_D) $(LD_LIB_D) $(MODELEXT_D) $(shell mv *.o $(IMG_BASE_DIR)/Debug/ObjectCode 2>>/dev/null) @echo '-o $@ $(ALL_OBJ_D)'> ld_d.tmp - @echo '--start-group $(LD_LIB_D) $(filter-out $(LD_LIB_BAN_D),$(LIB_D)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_D) -L "$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -L"$(libm_dir)" -lstdc++ -lgcc "$(libm_path)" $(LDMAP_D)' >> ld_d.tmp + @echo '--start-group $(LD_LIB_D) $(filter-out $(LD_LIB_BAN_D),$(LIB_D)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_D) -L "$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -L"$(libm_dir)" -lgcc $(LDMAP_D)' >> ld_d.tmp ifeq "$(SCATTER)" "EmuKit_cpu2.lds" @echo "Linking CA53_core2...$(LD_PATH_LDS_D)" \ && echo Creating image $@ ... \ @@ -419,7 +419,7 @@ $(LD_LIB_R): $(MODELEXT_R) $(IMAGE_R): $(SRC) $(ASM) $(CPP_SRC) $(ALL_OBJ_R) $(LIB_R) $(LD_LIB_R) $(MODELEXT_R) $(shell mv *.o $(IMG_BASE_DIR)/Release/ObjectCode 2>>/dev/null) @echo '-o $@ $(ALL_OBJ_R) '> ld_r.tmp - @echo '--start-group $(LD_LIB_R) $(filter-out $(LD_LIB_BAN_R),$(LIB_R)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_R) -L"$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -lstdc++ -lgcc "$(libm_path)" $(LDMAP_R)' >> ld_r.tmp + @echo '--start-group $(LD_LIB_R) $(filter-out $(LD_LIB_BAN_R),$(LIB_R)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_R) -L"$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -lgcc $(LDMAP_R)' >> ld_r.tmp ifeq "$(SCATTER)" "EmuKit_cpu2.lds" @echo "Linking CA53_core2...$(LD_PATH_LDS_R)" \ diff --git a/board/novatek/na51055/loader/Project/Model/MakeConfig.txt b/board/novatek/na51055/loader/Project/Model/MakeConfig.txt index 81468ec5fd3d..2bc77654c792 100755 --- a/board/novatek/na51055/loader/Project/Model/MakeConfig.txt +++ b/board/novatek/na51055/loader/Project/Model/MakeConfig.txt @@ -415,6 +415,17 @@ endif BL_LOADER_FLOW_PARAM = \ -D_BL_MAIN_SPECIAL_FLOW_=$(BL_LOADER_FLOW) +#------------------------------------------------------------------------------ +# OpenIPC: the NA51084 parts (528, 529) take the stand-alone 528 flow of +# bl_func.h, as the SDK's make_combo_loader.sh builds them; the others the +# stand-alone 52x one +#------------------------------------------------------------------------------ +ifneq "$(filter 528 529,$(CHIP))" "" +LOADER_TYPE_PARAM = -DLOADER_TYPE=STAND_ALONE_LOADER_528 +else +LOADER_TYPE_PARAM = -DLOADER_TYPE=STAND_ALONE_LOADER_52x +endif + #------------------------------------------------------------------------------ # Select Duty calibration ENABLE / DISABLE #------------------------------------------------------------------------------ @@ -918,7 +929,7 @@ SECURE_DECRYPT_UBOOT_PARAM = \ #------------------------------------------------------------------------------- ifeq "$(SECUREBOOT_DECRYPT_OPTEE)" "Normal" OPTEE_DECRYPT_TYPE = _SECURE_DECRYPT_OPTEE_DISABLE_ -else ifeq "$(SECUREBOOT_DECRYPT_UBOOT)" "Secure" +else ifeq "$(SECUREBOOT_DECRYPT_OPTEE)" "Secure" OPTEE_DECRYPT_TYPE = _SECURE_DECRYPT_OPTEE_ENABLE_ else OPTEE_DECRYPT_TYPE = _SECURE_DECRYPT_OPTEE_DISABLE_ diff --git a/board/novatek/na51055/loader/Project/Model/Makefile b/board/novatek/na51055/loader/Project/Model/Makefile index 594475b03a7c..3ec1b401180a 100755 --- a/board/novatek/na51055/loader/Project/Model/Makefile +++ b/board/novatek/na51055/loader/Project/Model/Makefile @@ -94,6 +94,7 @@ C_DEFINE_EXT = \ $(BL_DUTY_CALIBRATION_PARAM)\ $(BL_DUTY_CALIBRATION_TYPE_PARAM)\ $(BL_LOADER_FLOW_PARAM) \ + $(LOADER_TYPE_PARAM) \ $(BL_STORAGEINT_PARAM) \ $(SECURE_DECRYPT_UBOOT_PARAM) \ $(SECURE_DECRYPT_OPTEE_PARAM) \ diff --git a/board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB.txt b/board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB.txt index db238e129174..d1946f9025c8 100755 --- a/board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB.txt +++ b/board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB.txt @@ -175,7 +175,7 @@ SDRAM2_2ND_SIZE = 4096 # SpiFlash # EMMC # EMMC_NAND_COMBO >>>[eMMC & NandSpi 2 in 1 & STORAGEEXT must choose NONE]<<< -STORAGEINT = NandSpi +STORAGEINT = SpiFlash # [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) # SPI_NORMAL diff --git a/board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB_528.txt b/board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB_528.txt index 9124819832e3..8d8ec629539a 100755 --- a/board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB_528.txt +++ b/board/novatek/na51055/loader/Project/Model/ModelConfig_EMU_EVB_528.txt @@ -151,7 +151,7 @@ SDRAM2_2ND_SIZE = 4096 # SpiFlash # EMMC # EMMC_NAND_COMBO >>>[eMMC & NandSpi 2 in 1 & STORAGEEXT must choose NONE]<<< -STORAGEINT = NandSpi +STORAGEINT = SpiFlash # [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) # SPI_NORMAL diff --git a/board/novatek/na51055/loader/Project/Model/Src/prj_main.c b/board/novatek/na51055/loader/Project/Model/Src/prj_main.c index 9734daeac1db..8224de511bfd 100755 --- a/board/novatek/na51055/loader/Project/Model/Src/prj_main.c +++ b/board/novatek/na51055/loader/Project/Model/Src/prj_main.c @@ -19,7 +19,7 @@ #include "prj_main.h" #include "debug.h" -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) #if defined(_STORAGEINT_EMMC_NAND_COMBO_) #if (CHECK_CARD_EXIST == ENABLE) From 22afed1a72cd77a1e22cef1731bfd51d3eac56c7 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:10:24 +0000 Subject: [PATCH 04/38] novatek: the NA51055 loader unpacks an LZMA U-Boot U-Boot is ~235 KiB, ~94 KiB in an LZMA BCL1 container: its 128 KiB slot in the 256 KiB boot partition holds nothing larger. Novatek's LZ (algorithm 9), the only method the NT9852x loader unpacks, leaves it at ~176 KiB. NA51089's loader calls the LZMA decoder in its mask ROM; NA51055's mask ROM has none (its table holds memcpy, Dec2HexStr and the efuse reader only), so the loader carries one: Igor Pavlov's public domain LzmaDec, as U-Boot has it in lib/lzma, with the loader's memcpy and a 32 KiB static heap for the probabilities (lc=3, lp=0 needs 16 KiB). bl_load_uboot_from_flash() takes BCL1 algorithm 11 to it, as NA51089's loader takes it to the ROM, and anything else to LZ_Uncompress() as before. openipc/nvt-image.py's image is then the same on both dies. The loader's image is limited to 32 KiB (64 KiB for the 528 flow). Built in Thumb, at -Os, with _LZMA_SIZE_OPT, the decoder adds 4.6 KiB; the 52x loaders end at 32722-32741 bytes, the 528/529 ones at 65047. --- .../LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.c | 1033 +++++++++++++++++ .../LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.h | 223 ++++ .../LibExt/LIBExt_src/Ctrl_Flow/LzmaTypes.h | 239 ++++ .../LibExt/LIBExt_src/Ctrl_Flow/Makefile | 2 + .../LibExt/LIBExt_src/Ctrl_Flow/bl_func.c | 11 + .../LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.c | 50 + .../LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.h | 9 + 7 files changed, 1567 insertions(+) create mode 100644 board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.c create mode 100644 board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.h create mode 100644 board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaTypes.h create mode 100644 board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.c create mode 100644 board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.h diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.c b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.c new file mode 100644 index 000000000000..b2e5b40331ea --- /dev/null +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.c @@ -0,0 +1,1033 @@ +/* LzmaDec.c -- LZMA Decoder +2009-09-20 : Igor Pavlov : Public domain */ + +/* + * OpenIPC: U-Boot's lib/lzma/LzmaDec.c for the loader, which has no + * libc: memcpy is the loader's, and there is no watchdog to feed. + */ +/* OpenIPC: small, in Thumb, to fit the loader's 32 KiB */ +#pragma GCC target("thumb") +#pragma GCC optimize("Os") + +#include "LzmaDec.h" +#include "string.h" + +#define memcpy utl_memcpy +#define WATCHDOG_RESET() do { } while (0) + +#define kNumTopBits 24 +#define kTopValue ((UInt32)1 << kNumTopBits) + +#define kNumBitModelTotalBits 11 +#define kBitModelTotal (1 << kNumBitModelTotalBits) +#define kNumMoveBits 5 + +#define RC_INIT_SIZE 5 + +#define NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | (*buf++); } + +#define IF_BIT_0(p) ttt = *(p); NORMALIZE; bound = (range >> kNumBitModelTotalBits) * ttt; if (code < bound) +#define UPDATE_0(p) range = bound; *(p) = (CLzmaProb)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits)); +#define UPDATE_1(p) range -= bound; code -= bound; *(p) = (CLzmaProb)(ttt - (ttt >> kNumMoveBits)); +#define GET_BIT2(p, i, A0, A1) IF_BIT_0(p) \ + { UPDATE_0(p); i = (i + i); A0; } else \ + { UPDATE_1(p); i = (i + i) + 1; A1; } +#define GET_BIT(p, i) GET_BIT2(p, i, ; , ;) + +#define TREE_GET_BIT(probs, i) { GET_BIT((probs + i), i); } +#define TREE_DECODE(probs, limit, i) \ + { i = 1; do { TREE_GET_BIT(probs, i); } while (i < limit); i -= limit; } + +/* OpenIPC: the loop form, smaller */ +#define _LZMA_SIZE_OPT + +#ifdef _LZMA_SIZE_OPT +#define TREE_6_DECODE(probs, i) TREE_DECODE(probs, (1 << 6), i) +#else +#define TREE_6_DECODE(probs, i) \ + { i = 1; \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + i -= 0x40; } +#endif + +#define NORMALIZE_CHECK if (range < kTopValue) { if (buf >= bufLimit) return DUMMY_ERROR; range <<= 8; code = (code << 8) | (*buf++); } + +#define IF_BIT_0_CHECK(p) ttt = *(p); NORMALIZE_CHECK; bound = (range >> kNumBitModelTotalBits) * ttt; if (code < bound) +#define UPDATE_0_CHECK range = bound; +#define UPDATE_1_CHECK range -= bound; code -= bound; +#define GET_BIT2_CHECK(p, i, A0, A1) IF_BIT_0_CHECK(p) \ + { UPDATE_0_CHECK; i = (i + i); A0; } else \ + { UPDATE_1_CHECK; i = (i + i) + 1; A1; } +#define GET_BIT_CHECK(p, i) GET_BIT2_CHECK(p, i, ; , ;) +#define TREE_DECODE_CHECK(probs, limit, i) \ + { i = 1; do { GET_BIT_CHECK(probs + i, i) } while (i < limit); i -= limit; } + + +#define kNumPosBitsMax 4 +#define kNumPosStatesMax (1 << kNumPosBitsMax) + +#define kLenNumLowBits 3 +#define kLenNumLowSymbols (1 << kLenNumLowBits) +#define kLenNumMidBits 3 +#define kLenNumMidSymbols (1 << kLenNumMidBits) +#define kLenNumHighBits 8 +#define kLenNumHighSymbols (1 << kLenNumHighBits) + +#define LenChoice 0 +#define LenChoice2 (LenChoice + 1) +#define LenLow (LenChoice2 + 1) +#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits)) +#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits)) +#define kNumLenProbs (LenHigh + kLenNumHighSymbols) + + +#define kNumStates 12 +#define kNumLitStates 7 + +#define kStartPosModelIndex 4 +#define kEndPosModelIndex 14 +#define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) + +#define kNumPosSlotBits 6 +#define kNumLenToPosStates 4 + +#define kNumAlignBits 4 +#define kAlignTableSize (1 << kNumAlignBits) + +#define kMatchMinLen 2 +#define kMatchSpecLenStart (kMatchMinLen + kLenNumLowSymbols + kLenNumMidSymbols + kLenNumHighSymbols) + +#define IsMatch 0 +#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax)) +#define IsRepG0 (IsRep + kNumStates) +#define IsRepG1 (IsRepG0 + kNumStates) +#define IsRepG2 (IsRepG1 + kNumStates) +#define IsRep0Long (IsRepG2 + kNumStates) +#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax)) +#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits)) +#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex) +#define LenCoder (Align + kAlignTableSize) +#define RepLenCoder (LenCoder + kNumLenProbs) +#define Literal (RepLenCoder + kNumLenProbs) + +#define LZMA_BASE_SIZE 1846 +#define LZMA_LIT_SIZE 768 + +#define LzmaProps_GetNumProbs(p) ((UInt32)LZMA_BASE_SIZE + (LZMA_LIT_SIZE << ((p)->lc + (p)->lp))) + +#if Literal != LZMA_BASE_SIZE +StopCompilingDueBUG +#endif + +#define LZMA_DIC_MIN (1 << 12) + +/* First LZMA-symbol is always decoded. +And it decodes new LZMA-symbols while (buf < bufLimit), but "buf" is without last normalization +Out: + Result: + SZ_OK - OK + SZ_ERROR_DATA - Error + p->remainLen: + < kMatchSpecLenStart : normal remain + = kMatchSpecLenStart : finished + = kMatchSpecLenStart + 1 : Flush marker + = kMatchSpecLenStart + 2 : State Init Marker +*/ + +static int MY_FAST_CALL LzmaDec_DecodeReal(CLzmaDec *p, SizeT limit, const Byte *bufLimit) +{ + CLzmaProb *probs = p->probs; + + unsigned state = p->state; + UInt32 rep0 = p->reps[0], rep1 = p->reps[1], rep2 = p->reps[2], rep3 = p->reps[3]; + unsigned pbMask = ((unsigned)1 << (p->prop.pb)) - 1; + unsigned lpMask = ((unsigned)1 << (p->prop.lp)) - 1; + unsigned lc = p->prop.lc; + + Byte *dic = p->dic; + SizeT dicBufSize = p->dicBufSize; + SizeT dicPos = p->dicPos; + + UInt32 processedPos = p->processedPos; + UInt32 checkDicSize = p->checkDicSize; + unsigned len = 0; + + const Byte *buf = p->buf; + UInt32 range = p->range; + UInt32 code = p->code; + + WATCHDOG_RESET(); + + do + { + CLzmaProb *prob; + UInt32 bound; + unsigned ttt; + unsigned posState = processedPos & pbMask; + + prob = probs + IsMatch + (state << kNumPosBitsMax) + posState; + IF_BIT_0(prob) + { + unsigned symbol; + UPDATE_0(prob); + prob = probs + Literal; + if (checkDicSize != 0 || processedPos != 0) + prob += (LZMA_LIT_SIZE * (((processedPos & lpMask) << lc) + + (dic[(dicPos == 0 ? dicBufSize : dicPos) - 1] >> (8 - lc)))); + + if (state < kNumLitStates) + { + state -= (state < 4) ? state : 3; + symbol = 1; + + WATCHDOG_RESET(); + + do { GET_BIT(prob + symbol, symbol) } while (symbol < 0x100); + } + else + { + unsigned matchByte = p->dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; + unsigned offs = 0x100; + state -= (state < 10) ? 3 : 6; + symbol = 1; + + WATCHDOG_RESET(); + + do + { + unsigned bit; + CLzmaProb *probLit; + matchByte <<= 1; + bit = (matchByte & offs); + probLit = prob + offs + bit + symbol; + GET_BIT2(probLit, symbol, offs &= ~bit, offs &= bit) + } + while (symbol < 0x100); + } + dic[dicPos++] = (Byte)symbol; + processedPos++; + continue; + } + else + { + UPDATE_1(prob); + prob = probs + IsRep + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + state += kNumStates; + prob = probs + LenCoder; + } + else + { + UPDATE_1(prob); + if (checkDicSize == 0 && processedPos == 0) + return SZ_ERROR_DATA; + prob = probs + IsRepG0 + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + prob = probs + IsRep0Long + (state << kNumPosBitsMax) + posState; + IF_BIT_0(prob) + { + UPDATE_0(prob); + dic[dicPos] = dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; + dicPos++; + processedPos++; + state = state < kNumLitStates ? 9 : 11; + continue; + } + UPDATE_1(prob); + } + else + { + UInt32 distance; + UPDATE_1(prob); + prob = probs + IsRepG1 + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + distance = rep1; + } + else + { + UPDATE_1(prob); + prob = probs + IsRepG2 + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + distance = rep2; + } + else + { + UPDATE_1(prob); + distance = rep3; + rep3 = rep2; + } + rep2 = rep1; + } + rep1 = rep0; + rep0 = distance; + } + state = state < kNumLitStates ? 8 : 11; + prob = probs + RepLenCoder; + } + { + unsigned limit, offset; + CLzmaProb *probLen = prob + LenChoice; + IF_BIT_0(probLen) + { + UPDATE_0(probLen); + probLen = prob + LenLow + (posState << kLenNumLowBits); + offset = 0; + limit = (1 << kLenNumLowBits); + } + else + { + UPDATE_1(probLen); + probLen = prob + LenChoice2; + IF_BIT_0(probLen) + { + UPDATE_0(probLen); + probLen = prob + LenMid + (posState << kLenNumMidBits); + offset = kLenNumLowSymbols; + limit = (1 << kLenNumMidBits); + } + else + { + UPDATE_1(probLen); + probLen = prob + LenHigh; + offset = kLenNumLowSymbols + kLenNumMidSymbols; + limit = (1 << kLenNumHighBits); + } + } + TREE_DECODE(probLen, limit, len); + len += offset; + } + + if (state >= kNumStates) + { + UInt32 distance; + prob = probs + PosSlot + + ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << kNumPosSlotBits); + TREE_6_DECODE(prob, distance); + if (distance >= kStartPosModelIndex) + { + unsigned posSlot = (unsigned)distance; + int numDirectBits = (int)(((distance >> 1) - 1)); + distance = (2 | (distance & 1)); + if (posSlot < kEndPosModelIndex) + { + distance <<= numDirectBits; + prob = probs + SpecPos + distance - posSlot - 1; + { + UInt32 mask = 1; + unsigned i = 1; + + WATCHDOG_RESET(); + + do + { + GET_BIT2(prob + i, i, ; , distance |= mask); + mask <<= 1; + } + while (--numDirectBits != 0); + } + } + else + { + numDirectBits -= kNumAlignBits; + + WATCHDOG_RESET(); + + do + { + NORMALIZE + range >>= 1; + + { + UInt32 t; + code -= range; + t = (0 - ((UInt32)code >> 31)); /* (UInt32)((Int32)code >> 31) */ + distance = (distance << 1) + (t + 1); + code += range & t; + } + /* + distance <<= 1; + if (code >= range) + { + code -= range; + distance |= 1; + } + */ + } + while (--numDirectBits != 0); + prob = probs + Align; + distance <<= kNumAlignBits; + { + unsigned i = 1; + GET_BIT2(prob + i, i, ; , distance |= 1); + GET_BIT2(prob + i, i, ; , distance |= 2); + GET_BIT2(prob + i, i, ; , distance |= 4); + GET_BIT2(prob + i, i, ; , distance |= 8); + } + if (distance == (UInt32)0xFFFFFFFF) + { + len += kMatchSpecLenStart; + state -= kNumStates; + break; + } + } + } + rep3 = rep2; + rep2 = rep1; + rep1 = rep0; + rep0 = distance + 1; + if (checkDicSize == 0) + { + if (distance >= processedPos) + return SZ_ERROR_DATA; + } + else if (distance >= checkDicSize) + return SZ_ERROR_DATA; + state = (state < kNumStates + kNumLitStates) ? kNumLitStates : kNumLitStates + 3; + } + + len += kMatchMinLen; + + if (limit == dicPos) + return SZ_ERROR_DATA; + { + SizeT rem = limit - dicPos; + unsigned curLen = ((rem < len) ? (unsigned)rem : len); + SizeT pos = (dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0); + + processedPos += curLen; + + len -= curLen; + if (pos + curLen <= dicBufSize) + { + Byte *dest = dic + dicPos; + ptrdiff_t src = (ptrdiff_t)pos - (ptrdiff_t)dicPos; + const Byte *lim = dest + curLen; + dicPos += curLen; + + WATCHDOG_RESET(); + + do + *(dest) = (Byte)*(dest + src); + while (++dest != lim); + } + else + { + + WATCHDOG_RESET(); + + do + { + dic[dicPos++] = dic[pos]; + if (++pos == dicBufSize) + pos = 0; + } + while (--curLen != 0); + } + } + } + } + while (dicPos < limit && buf < bufLimit); + + WATCHDOG_RESET(); + + NORMALIZE; + p->buf = buf; + p->range = range; + p->code = code; + p->remainLen = len; + p->dicPos = dicPos; + p->processedPos = processedPos; + p->reps[0] = rep0; + p->reps[1] = rep1; + p->reps[2] = rep2; + p->reps[3] = rep3; + p->state = state; + + return SZ_OK; +} + +static void MY_FAST_CALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit) +{ + if (p->remainLen != 0 && p->remainLen < kMatchSpecLenStart) + { + Byte *dic = p->dic; + SizeT dicPos = p->dicPos; + SizeT dicBufSize = p->dicBufSize; + unsigned len = p->remainLen; + UInt32 rep0 = p->reps[0]; + if (limit - dicPos < len) + len = (unsigned)(limit - dicPos); + + if (p->checkDicSize == 0 && p->prop.dicSize - p->processedPos <= len) + p->checkDicSize = p->prop.dicSize; + + p->processedPos += len; + p->remainLen -= len; + while (len-- != 0) + { + dic[dicPos] = dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; + dicPos++; + } + p->dicPos = dicPos; + } +} + +static int MY_FAST_CALL LzmaDec_DecodeReal2(CLzmaDec *p, SizeT limit, const Byte *bufLimit) +{ + do + { + SizeT limit2 = limit; + if (p->checkDicSize == 0) + { + UInt32 rem = p->prop.dicSize - p->processedPos; + if (limit - p->dicPos > rem) + limit2 = p->dicPos + rem; + } + RINOK(LzmaDec_DecodeReal(p, limit2, bufLimit)); + if (p->processedPos >= p->prop.dicSize) + p->checkDicSize = p->prop.dicSize; + LzmaDec_WriteRem(p, limit); + } + while (p->dicPos < limit && p->buf < bufLimit && p->remainLen < kMatchSpecLenStart); + + if (p->remainLen > kMatchSpecLenStart) + { + p->remainLen = kMatchSpecLenStart; + } + return 0; +} + +typedef enum +{ + DUMMY_ERROR, /* unexpected end of input stream */ + DUMMY_LIT, + DUMMY_MATCH, + DUMMY_REP +} ELzmaDummy; + +static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, SizeT inSize) +{ + UInt32 range = p->range; + UInt32 code = p->code; + const Byte *bufLimit = buf + inSize; + CLzmaProb *probs = p->probs; + unsigned state = p->state; + ELzmaDummy res; + + { + CLzmaProb *prob; + UInt32 bound; + unsigned ttt; + unsigned posState = (p->processedPos) & ((1 << p->prop.pb) - 1); + + prob = probs + IsMatch + (state << kNumPosBitsMax) + posState; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK + + /* if (bufLimit - buf >= 7) return DUMMY_LIT; */ + + prob = probs + Literal; + if (p->checkDicSize != 0 || p->processedPos != 0) + prob += (LZMA_LIT_SIZE * + ((((p->processedPos) & ((1 << (p->prop.lp)) - 1)) << p->prop.lc) + + (p->dic[(p->dicPos == 0 ? p->dicBufSize : p->dicPos) - 1] >> (8 - p->prop.lc)))); + + if (state < kNumLitStates) + { + unsigned symbol = 1; + do { GET_BIT_CHECK(prob + symbol, symbol) } while (symbol < 0x100); + } + else + { + unsigned matchByte = p->dic[p->dicPos - p->reps[0] + + ((p->dicPos < p->reps[0]) ? p->dicBufSize : 0)]; + unsigned offs = 0x100; + unsigned symbol = 1; + do + { + unsigned bit; + CLzmaProb *probLit; + matchByte <<= 1; + bit = (matchByte & offs); + probLit = prob + offs + bit + symbol; + GET_BIT2_CHECK(probLit, symbol, offs &= ~bit, offs &= bit) + } + while (symbol < 0x100); + } + res = DUMMY_LIT; + } + else + { + unsigned len; + UPDATE_1_CHECK; + + prob = probs + IsRep + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + state = 0; + prob = probs + LenCoder; + res = DUMMY_MATCH; + } + else + { + UPDATE_1_CHECK; + res = DUMMY_REP; + prob = probs + IsRepG0 + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + prob = probs + IsRep0Long + (state << kNumPosBitsMax) + posState; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + NORMALIZE_CHECK; + return DUMMY_REP; + } + else + { + UPDATE_1_CHECK; + } + } + else + { + UPDATE_1_CHECK; + prob = probs + IsRepG1 + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + } + else + { + UPDATE_1_CHECK; + prob = probs + IsRepG2 + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + } + else + { + UPDATE_1_CHECK; + } + } + } + state = kNumStates; + prob = probs + RepLenCoder; + } + { + unsigned limit, offset; + CLzmaProb *probLen = prob + LenChoice; + IF_BIT_0_CHECK(probLen) + { + UPDATE_0_CHECK; + probLen = prob + LenLow + (posState << kLenNumLowBits); + offset = 0; + limit = 1 << kLenNumLowBits; + } + else + { + UPDATE_1_CHECK; + probLen = prob + LenChoice2; + IF_BIT_0_CHECK(probLen) + { + UPDATE_0_CHECK; + probLen = prob + LenMid + (posState << kLenNumMidBits); + offset = kLenNumLowSymbols; + limit = 1 << kLenNumMidBits; + } + else + { + UPDATE_1_CHECK; + probLen = prob + LenHigh; + offset = kLenNumLowSymbols + kLenNumMidSymbols; + limit = 1 << kLenNumHighBits; + } + } + TREE_DECODE_CHECK(probLen, limit, len); + len += offset; + } + + if (state < 4) + { + unsigned posSlot; + prob = probs + PosSlot + + ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << + kNumPosSlotBits); + TREE_DECODE_CHECK(prob, 1 << kNumPosSlotBits, posSlot); + if (posSlot >= kStartPosModelIndex) + { + int numDirectBits = ((posSlot >> 1) - 1); + + /* if (bufLimit - buf >= 8) return DUMMY_MATCH; */ + + if (posSlot < kEndPosModelIndex) + { + prob = probs + SpecPos + ((2 | (posSlot & 1)) << numDirectBits) - posSlot - 1; + } + else + { + numDirectBits -= kNumAlignBits; + do + { + NORMALIZE_CHECK + range >>= 1; + code -= range & (((code - range) >> 31) - 1); + /* if (code >= range) code -= range; */ + } + while (--numDirectBits != 0); + prob = probs + Align; + numDirectBits = kNumAlignBits; + } + { + unsigned i = 1; + do + { + GET_BIT_CHECK(prob + i, i); + } + while (--numDirectBits != 0); + } + } + } + } + } + NORMALIZE_CHECK; + return res; +} + + +static void LzmaDec_InitRc(CLzmaDec *p, const Byte *data) +{ + p->code = ((UInt32)data[1] << 24) | ((UInt32)data[2] << 16) | ((UInt32)data[3] << 8) | ((UInt32)data[4]); + p->range = 0xFFFFFFFF; + p->needFlush = 0; +} + +static void LzmaDec_InitDicAndState(CLzmaDec *p, Bool initDic, Bool initState) +{ + p->needFlush = 1; + p->remainLen = 0; + p->tempBufSize = 0; + + if (initDic) + { + p->processedPos = 0; + p->checkDicSize = 0; + p->needInitState = 1; + } + if (initState) + p->needInitState = 1; +} + +void LzmaDec_Init(CLzmaDec *p) +{ + p->dicPos = 0; + LzmaDec_InitDicAndState(p, True, True); +} + +static void LzmaDec_InitStateReal(CLzmaDec *p) +{ + UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (p->prop.lc + p->prop.lp)); + UInt32 i; + CLzmaProb *probs = p->probs; + for (i = 0; i < numProbs; i++) + probs[i] = kBitModelTotal >> 1; + p->reps[0] = p->reps[1] = p->reps[2] = p->reps[3] = 1; + p->state = 0; + p->needInitState = 0; +} + +SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *srcLen, + ELzmaFinishMode finishMode, ELzmaStatus *status) +{ + SizeT inSize = *srcLen; + (*srcLen) = 0; + LzmaDec_WriteRem(p, dicLimit); + + *status = LZMA_STATUS_NOT_SPECIFIED; + + while (p->remainLen != kMatchSpecLenStart) + { + int checkEndMarkNow; + + if (p->needFlush != 0) + { + for (; inSize > 0 && p->tempBufSize < RC_INIT_SIZE; (*srcLen)++, inSize--) + p->tempBuf[p->tempBufSize++] = *src++; + if (p->tempBufSize < RC_INIT_SIZE) + { + *status = LZMA_STATUS_NEEDS_MORE_INPUT; + return SZ_OK; + } + if (p->tempBuf[0] != 0) + return SZ_ERROR_DATA; + + LzmaDec_InitRc(p, p->tempBuf); + p->tempBufSize = 0; + } + + checkEndMarkNow = 0; + if (p->dicPos >= dicLimit) + { + if (p->remainLen == 0 && p->code == 0) + { + *status = LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK; + return SZ_OK; + } + if (finishMode == LZMA_FINISH_ANY) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_OK; + } + if (p->remainLen != 0) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_ERROR_DATA; + } + checkEndMarkNow = 1; + } + + if (p->needInitState) + LzmaDec_InitStateReal(p); + + if (p->tempBufSize == 0) + { + SizeT processed; + const Byte *bufLimit; + if (inSize < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) + { + int dummyRes = LzmaDec_TryDummy(p, src, inSize); + if (dummyRes == DUMMY_ERROR) + { + memcpy(p->tempBuf, src, inSize); + p->tempBufSize = (unsigned)inSize; + (*srcLen) += inSize; + *status = LZMA_STATUS_NEEDS_MORE_INPUT; + return SZ_OK; + } + if (checkEndMarkNow && dummyRes != DUMMY_MATCH) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_ERROR_DATA; + } + bufLimit = src; + } + else + bufLimit = src + inSize - LZMA_REQUIRED_INPUT_MAX; + p->buf = src; + if (LzmaDec_DecodeReal2(p, dicLimit, bufLimit) != 0) + return SZ_ERROR_DATA; + processed = (SizeT)(p->buf - src); + (*srcLen) += processed; + src += processed; + inSize -= processed; + } + else + { + unsigned rem = p->tempBufSize, lookAhead = 0; + while (rem < LZMA_REQUIRED_INPUT_MAX && lookAhead < inSize) + p->tempBuf[rem++] = src[lookAhead++]; + p->tempBufSize = rem; + if (rem < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) + { + int dummyRes = LzmaDec_TryDummy(p, p->tempBuf, rem); + if (dummyRes == DUMMY_ERROR) + { + (*srcLen) += lookAhead; + *status = LZMA_STATUS_NEEDS_MORE_INPUT; + return SZ_OK; + } + if (checkEndMarkNow && dummyRes != DUMMY_MATCH) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_ERROR_DATA; + } + } + p->buf = p->tempBuf; + if (LzmaDec_DecodeReal2(p, dicLimit, p->buf) != 0) + return SZ_ERROR_DATA; + lookAhead -= (rem - (unsigned)(p->buf - p->tempBuf)); + (*srcLen) += lookAhead; + src += lookAhead; + inSize -= lookAhead; + p->tempBufSize = 0; + } + } + if (p->code == 0) + *status = LZMA_STATUS_FINISHED_WITH_MARK; + return (p->code == 0) ? SZ_OK : SZ_ERROR_DATA; +} + +SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status) +{ + SizeT outSize = *destLen; + SizeT inSize = *srcLen; + *srcLen = *destLen = 0; + for (;;) + { + SizeT inSizeCur = inSize, outSizeCur, dicPos; + ELzmaFinishMode curFinishMode; + SRes res; + if (p->dicPos == p->dicBufSize) + p->dicPos = 0; + dicPos = p->dicPos; + if (outSize > p->dicBufSize - dicPos) + { + outSizeCur = p->dicBufSize; + curFinishMode = LZMA_FINISH_ANY; + } + else + { + outSizeCur = dicPos + outSize; + curFinishMode = finishMode; + } + + res = LzmaDec_DecodeToDic(p, outSizeCur, src, &inSizeCur, curFinishMode, status); + src += inSizeCur; + inSize -= inSizeCur; + *srcLen += inSizeCur; + outSizeCur = p->dicPos - dicPos; + memcpy(dest, p->dic + dicPos, outSizeCur); + dest += outSizeCur; + outSize -= outSizeCur; + *destLen += outSizeCur; + if (res != 0) + return res; + if (outSizeCur == 0 || outSize == 0) + return SZ_OK; + } +} + +void LzmaDec_FreeProbs(CLzmaDec *p, ISzAlloc *alloc) +{ + alloc->Free(alloc, p->probs); + p->probs = 0; +} + +static void LzmaDec_FreeDict(CLzmaDec *p, ISzAlloc *alloc) +{ + alloc->Free(alloc, p->dic); + p->dic = 0; +} + +void LzmaDec_Free(CLzmaDec *p, ISzAlloc *alloc) +{ + LzmaDec_FreeProbs(p, alloc); + LzmaDec_FreeDict(p, alloc); +} + +SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size) +{ + UInt32 dicSize; + Byte d; + + if (size < LZMA_PROPS_SIZE) + return SZ_ERROR_UNSUPPORTED; + else + dicSize = data[1] | ((UInt32)data[2] << 8) | ((UInt32)data[3] << 16) | ((UInt32)data[4] << 24); + + if (dicSize < LZMA_DIC_MIN) + dicSize = LZMA_DIC_MIN; + p->dicSize = dicSize; + + d = data[0]; + if (d >= (9 * 5 * 5)) + return SZ_ERROR_UNSUPPORTED; + + p->lc = d % 9; + d /= 9; + p->pb = d / 5; + p->lp = d % 5; + + return SZ_OK; +} + +static SRes LzmaDec_AllocateProbs2(CLzmaDec *p, const CLzmaProps *propNew, ISzAlloc *alloc) +{ + UInt32 numProbs = LzmaProps_GetNumProbs(propNew); + if (p->probs == 0 || numProbs != p->numProbs) + { + LzmaDec_FreeProbs(p, alloc); + p->probs = (CLzmaProb *)alloc->Alloc(alloc, numProbs * sizeof(CLzmaProb)); + p->numProbs = numProbs; + if (p->probs == 0) + return SZ_ERROR_MEM; + } + return SZ_OK; +} + +SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc) +{ + CLzmaProps propNew; + RINOK(LzmaProps_Decode(&propNew, props, propsSize)); + RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); + p->prop = propNew; + return SZ_OK; +} + +SRes LzmaDec_Allocate(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc) +{ + CLzmaProps propNew; + SizeT dicBufSize; + RINOK(LzmaProps_Decode(&propNew, props, propsSize)); + RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); + dicBufSize = propNew.dicSize; + if (p->dic == 0 || dicBufSize != p->dicBufSize) + { + LzmaDec_FreeDict(p, alloc); + p->dic = (Byte *)alloc->Alloc(alloc, dicBufSize); + if (p->dic == 0) + { + LzmaDec_FreeProbs(p, alloc); + return SZ_ERROR_MEM; + } + } + p->dicBufSize = dicBufSize; + p->prop = propNew; + return SZ_OK; +} + +SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, + const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, + ELzmaStatus *status, ISzAlloc *alloc) +{ + CLzmaDec p; + SRes res; + SizeT inSize = *srcLen; + SizeT outSize = *destLen; + *srcLen = *destLen = 0; + if (inSize < RC_INIT_SIZE) + return SZ_ERROR_INPUT_EOF; + + LzmaDec_Construct(&p); + res = LzmaDec_AllocateProbs(&p, propData, propSize, alloc); + if (res != 0) + return res; + p.dic = dest; + p.dicBufSize = outSize; + + LzmaDec_Init(&p); + + *srcLen = inSize; + res = LzmaDec_DecodeToDic(&p, outSize, src, srcLen, finishMode, status); + + if (res == SZ_OK && *status == LZMA_STATUS_NEEDS_MORE_INPUT) + res = SZ_ERROR_INPUT_EOF; + + (*destLen) = p.dicPos; + LzmaDec_FreeProbs(&p, alloc); + return res; +} diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.h b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.h new file mode 100644 index 000000000000..8e9b4410a0b7 --- /dev/null +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.h @@ -0,0 +1,223 @@ +/* LzmaDec.h -- LZMA Decoder +2009-02-07 : Igor Pavlov : Public domain */ + +#ifndef __LZMA_DEC_H +#define __LZMA_DEC_H + +#include "LzmaTypes.h" + +/* #define _LZMA_PROB32 */ +/* _LZMA_PROB32 can increase the speed on some CPUs, + but memory usage for CLzmaDec::probs will be doubled in that case */ + +#ifdef _LZMA_PROB32 +#define CLzmaProb UInt32 +#else +#define CLzmaProb UInt16 +#endif + + +/* ---------- LZMA Properties ---------- */ + +#define LZMA_PROPS_SIZE 5 + +typedef struct _CLzmaProps +{ + unsigned lc, lp, pb; + UInt32 dicSize; +} CLzmaProps; + +/* LzmaProps_Decode - decodes properties +Returns: + SZ_OK + SZ_ERROR_UNSUPPORTED - Unsupported properties +*/ + +SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size); + + +/* ---------- LZMA Decoder state ---------- */ + +/* LZMA_REQUIRED_INPUT_MAX = number of required input bytes for worst case. + Num bits = log2((2^11 / 31) ^ 22) + 26 < 134 + 26 = 160; */ + +#define LZMA_REQUIRED_INPUT_MAX 20 + +typedef struct +{ + CLzmaProps prop; + CLzmaProb *probs; + Byte *dic; + const Byte *buf; + UInt32 range, code; + SizeT dicPos; + SizeT dicBufSize; + UInt32 processedPos; + UInt32 checkDicSize; + unsigned state; + UInt32 reps[4]; + unsigned remainLen; + int needFlush; + int needInitState; + UInt32 numProbs; + unsigned tempBufSize; + Byte tempBuf[LZMA_REQUIRED_INPUT_MAX]; +} CLzmaDec; + +#define LzmaDec_Construct(p) { (p)->dic = 0; (p)->probs = 0; } + +void LzmaDec_Init(CLzmaDec *p); + +/* There are two types of LZMA streams: + 0) Stream with end mark. That end mark adds about 6 bytes to compressed size. + 1) Stream without end mark. You must know exact uncompressed size to decompress such stream. */ + +typedef enum +{ + LZMA_FINISH_ANY, /* finish at any point */ + LZMA_FINISH_END /* block must be finished at the end */ +} ELzmaFinishMode; + +/* ELzmaFinishMode has meaning only if the decoding reaches output limit !!! + + You must use LZMA_FINISH_END, when you know that current output buffer + covers last bytes of block. In other cases you must use LZMA_FINISH_ANY. + + If LZMA decoder sees end marker before reaching output limit, it returns SZ_OK, + and output value of destLen will be less than output buffer size limit. + You can check status result also. + + You can use multiple checks to test data integrity after full decompression: + 1) Check Result and "status" variable. + 2) Check that output(destLen) = uncompressedSize, if you know real uncompressedSize. + 3) Check that output(srcLen) = compressedSize, if you know real compressedSize. + You must use correct finish mode in that case. */ + +typedef enum +{ + LZMA_STATUS_NOT_SPECIFIED, /* use main error code instead */ + LZMA_STATUS_FINISHED_WITH_MARK, /* stream was finished with end mark. */ + LZMA_STATUS_NOT_FINISHED, /* stream was not finished */ + LZMA_STATUS_NEEDS_MORE_INPUT, /* you must provide more input bytes */ + LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK /* there is probability that stream was finished without end mark */ +} ELzmaStatus; + +/* ELzmaStatus is used only as output value for function call */ + + +/* ---------- Interfaces ---------- */ + +/* There are 3 levels of interfaces: + 1) Dictionary Interface + 2) Buffer Interface + 3) One Call Interface + You can select any of these interfaces, but don't mix functions from different + groups for same object. */ + + +/* There are two variants to allocate state for Dictionary Interface: + 1) LzmaDec_Allocate / LzmaDec_Free + 2) LzmaDec_AllocateProbs / LzmaDec_FreeProbs + You can use variant 2, if you set dictionary buffer manually. + For Buffer Interface you must always use variant 1. + +LzmaDec_Allocate* can return: + SZ_OK + SZ_ERROR_MEM - Memory allocation error + SZ_ERROR_UNSUPPORTED - Unsupported properties +*/ + +SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc); +void LzmaDec_FreeProbs(CLzmaDec *p, ISzAlloc *alloc); + +SRes LzmaDec_Allocate(CLzmaDec *state, const Byte *prop, unsigned propsSize, ISzAlloc *alloc); +void LzmaDec_Free(CLzmaDec *state, ISzAlloc *alloc); + +/* ---------- Dictionary Interface ---------- */ + +/* You can use it, if you want to eliminate the overhead for data copying from + dictionary to some other external buffer. + You must work with CLzmaDec variables directly in this interface. + + STEPS: + LzmaDec_Constr() + LzmaDec_Allocate() + for (each new stream) + { + LzmaDec_Init() + while (it needs more decompression) + { + LzmaDec_DecodeToDic() + use data from CLzmaDec::dic and update CLzmaDec::dicPos + } + } + LzmaDec_Free() +*/ + +/* LzmaDec_DecodeToDic + + The decoding to internal dictionary buffer (CLzmaDec::dic). + You must manually update CLzmaDec::dicPos, if it reaches CLzmaDec::dicBufSize !!! + +finishMode: + It has meaning only if the decoding reaches output limit (dicLimit). + LZMA_FINISH_ANY - Decode just dicLimit bytes. + LZMA_FINISH_END - Stream must be finished after dicLimit. + +Returns: + SZ_OK + status: + LZMA_STATUS_FINISHED_WITH_MARK + LZMA_STATUS_NOT_FINISHED + LZMA_STATUS_NEEDS_MORE_INPUT + LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK + SZ_ERROR_DATA - Data error +*/ + +SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, + const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); + + +/* ---------- Buffer Interface ---------- */ + +/* It's zlib-like interface. + See LzmaDec_DecodeToDic description for information about STEPS and return results, + but you must use LzmaDec_DecodeToBuf instead of LzmaDec_DecodeToDic and you don't need + to work with CLzmaDec variables manually. + +finishMode: + It has meaning only if the decoding reaches output limit (*destLen). + LZMA_FINISH_ANY - Decode just destLen bytes. + LZMA_FINISH_END - Stream must be finished after (*destLen). +*/ + +SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, + const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); + + +/* ---------- One Call Interface ---------- */ + +/* LzmaDecode + +finishMode: + It has meaning only if the decoding reaches output limit (*destLen). + LZMA_FINISH_ANY - Decode just destLen bytes. + LZMA_FINISH_END - Stream must be finished after (*destLen). + +Returns: + SZ_OK + status: + LZMA_STATUS_FINISHED_WITH_MARK + LZMA_STATUS_NOT_FINISHED + LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK + SZ_ERROR_DATA - Data error + SZ_ERROR_MEM - Memory allocation error + SZ_ERROR_UNSUPPORTED - Unsupported properties + SZ_ERROR_INPUT_EOF - It needs more bytes in input buffer (src). +*/ + +SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, + const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, + ELzmaStatus *status, ISzAlloc *alloc); + +#endif diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaTypes.h b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaTypes.h new file mode 100644 index 000000000000..da502ffc2279 --- /dev/null +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaTypes.h @@ -0,0 +1,239 @@ +/* Types.h -- Basic types +2010-10-09 : Igor Pavlov : Public domain */ + +#ifndef __7Z_TYPES_H +#define __7Z_TYPES_H + +/* OpenIPC: the loader has no libc headers; size_t is its string.h's */ +#include "string.h" +typedef int ptrdiff_t; +#ifndef NULL +#define NULL ((void *)0) +#endif + +#ifdef _WIN32 +#include <windows.h> +#endif + +#define SZ_OK 0 + +#define SZ_ERROR_DATA 1 +#define SZ_ERROR_MEM 2 +#define SZ_ERROR_CRC 3 +#define SZ_ERROR_UNSUPPORTED 4 +#define SZ_ERROR_PARAM 5 +#define SZ_ERROR_INPUT_EOF 6 +#define SZ_ERROR_OUTPUT_EOF 7 +#define SZ_ERROR_READ 8 +#define SZ_ERROR_WRITE 9 +#define SZ_ERROR_PROGRESS 10 +#define SZ_ERROR_FAIL 11 +#define SZ_ERROR_THREAD 12 + +#define SZ_ERROR_ARCHIVE 16 +#define SZ_ERROR_NO_ARCHIVE 17 + +typedef int SRes; + +#ifdef _WIN32 +typedef DWORD WRes; +#else +typedef int WRes; +#endif + +#ifndef RINOK +#define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; } +#endif + +typedef unsigned char Byte; +typedef short Int16; +typedef unsigned short UInt16; + +#ifdef _LZMA_UINT32_IS_ULONG +typedef long Int32; +typedef unsigned long UInt32; +#else +typedef int Int32; +typedef unsigned int UInt32; +#endif + +#ifdef _SZ_NO_INT_64 + +/* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers. + NOTES: Some code will work incorrectly in that case! */ + +typedef long Int64; +typedef unsigned long UInt64; + +#else + +#if defined(_MSC_VER) || defined(__BORLANDC__) +typedef __int64 Int64; +typedef unsigned __int64 UInt64; +#define UINT64_CONST(n) n +#else +typedef long long int Int64; +typedef unsigned long long int UInt64; +#define UINT64_CONST(n) n ## ULL +#endif + +#endif + +#ifdef _LZMA_NO_SYSTEM_SIZE_T +typedef UInt32 SizeT; +#else +typedef size_t SizeT; +#endif + +typedef int Bool; +#define True 1 +#define False 0 + + +#ifdef _MSC_VER + +#if _MSC_VER >= 1300 +#define MY_NO_INLINE __declspec(noinline) +#else +#define MY_NO_INLINE +#endif + +#define MY_CDECL __cdecl +#define MY_FAST_CALL __fastcall + +#else + +#define MY_CDECL +#define MY_FAST_CALL + +#endif + + +/* The following interfaces use first parameter as pointer to structure */ + +typedef struct +{ + Byte (*Read)(void *p); /* reads one byte, returns 0 in case of EOF or error */ +} IByteIn; + +typedef struct +{ + void (*Write)(void *p, Byte b); +} IByteOut; + +typedef struct +{ + SRes (*Read)(void *p, void *buf, size_t *size); + /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. + (output(*size) < input(*size)) is allowed */ +} ISeqInStream; + +/* it can return SZ_ERROR_INPUT_EOF */ +SRes SeqInStream_Read(ISeqInStream *stream, void *buf, size_t size); +SRes SeqInStream_Read2(ISeqInStream *stream, void *buf, size_t size, SRes errorType); +SRes SeqInStream_ReadByte(ISeqInStream *stream, Byte *buf); + +typedef struct +{ + size_t (*Write)(void *p, const void *buf, size_t size); + /* Returns: result - the number of actually written bytes. + (result < size) means error */ +} ISeqOutStream; + +typedef enum +{ + SZ_SEEK_SET = 0, + SZ_SEEK_CUR = 1, + SZ_SEEK_END = 2 +} ESzSeek; + +typedef struct +{ + SRes (*Read)(void *p, void *buf, size_t *size); /* same as ISeqInStream::Read */ + SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin); +} ISeekInStream; + +typedef struct +{ + SRes (*Look)(void *p, const void **buf, size_t *size); + /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. + (output(*size) > input(*size)) is not allowed + (output(*size) < input(*size)) is allowed */ + SRes (*Skip)(void *p, size_t offset); + /* offset must be <= output(*size) of Look */ + + SRes (*Read)(void *p, void *buf, size_t *size); + /* reads directly (without buffer). It's same as ISeqInStream::Read */ + SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin); +} ILookInStream; + +SRes LookInStream_LookRead(ILookInStream *stream, void *buf, size_t *size); +SRes LookInStream_SeekTo(ILookInStream *stream, UInt64 offset); + +/* reads via ILookInStream::Read */ +SRes LookInStream_Read2(ILookInStream *stream, void *buf, size_t size, SRes errorType); +SRes LookInStream_Read(ILookInStream *stream, void *buf, size_t size); + +#define LookToRead_BUF_SIZE (1 << 14) + +typedef struct +{ + ILookInStream s; + ISeekInStream *realStream; + size_t pos; + size_t size; + Byte buf[LookToRead_BUF_SIZE]; +} CLookToRead; + +void LookToRead_CreateVTable(CLookToRead *p, int lookahead); +void LookToRead_Init(CLookToRead *p); + +typedef struct +{ + ISeqInStream s; + ILookInStream *realStream; +} CSecToLook; + +void SecToLook_CreateVTable(CSecToLook *p); + +typedef struct +{ + ISeqInStream s; + ILookInStream *realStream; +} CSecToRead; + +void SecToRead_CreateVTable(CSecToRead *p); + +typedef struct +{ + SRes (*Progress)(void *p, UInt64 inSize, UInt64 outSize); + /* Returns: result. (result != SZ_OK) means break. + Value (UInt64)(Int64)-1 for size means unknown value. */ +} ICompressProgress; + +typedef struct +{ + void *(*Alloc)(void *p, size_t size); + void (*Free)(void *p, void *address); /* address can be 0 */ +} ISzAlloc; + +#define IAlloc_Alloc(p, size) (p)->Alloc((p), size) +#define IAlloc_Free(p, a) (p)->Free((p), a) + +#ifdef _WIN32 + +#define CHAR_PATH_SEPARATOR '\\' +#define WCHAR_PATH_SEPARATOR L'\\' +#define STRING_PATH_SEPARATOR "\\" +#define WSTRING_PATH_SEPARATOR L"\\" + +#else + +#define CHAR_PATH_SEPARATOR '/' +#define WCHAR_PATH_SEPARATOR u'/' +#define STRING_PATH_SEPARATOR "/" +#define WSTRING_PATH_SEPARATOR u"/" + +#endif + +#endif diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile index f138d5a59dd8..457fb97d9268 100755 --- a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile @@ -19,6 +19,8 @@ SRC = \ main.c \ nand_ids.c\ spi_nor_ids.c\ + bl_lzma.c\ + LzmaDec.c\ diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c index 8478d1d48e03..e80b6c716d89 100755 --- a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -34,6 +34,7 @@ #include "crypto.h" #include "nand.h" #include "nor.h" +#include "bl_lzma.h" #if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) @@ -1846,6 +1847,16 @@ _THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char debug_err_var("bl_load_uboot_from_flash_comp,er=", er); // read bfc-uboot failed bl_displayErrMsg(RWErrorMsg); } + /* OpenIPC: algorithm 11, LZMA, as NA51089's loader takes it */ + if ((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF) == 11) { + if (bl_lzma_inflate(p_tmp + sizeof(NVTPACK_BFC_HDR), size_comp_le, + (unsigned char *)p_dram_partition->uboot_addr, + invertEndian(pBfc->uiSizeUnComp)) < 0) { + debug_err("lzma\r\n"); + return -1; + } + debug_msg("lzma "); + } else LZ_Uncompress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->uboot_addr, size_comp_le); } else diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.c b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.c new file mode 100644 index 000000000000..c545ab81cde0 --- /dev/null +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.c @@ -0,0 +1,50 @@ +/* + * OpenIPC: LZMA for U-Boot's BCL1 container (algorithm 11). NA51089's + * mask ROM has a decoder the loader calls; NA51055's has none, so the + * loader carries its own, Igor Pavlov's public domain LzmaDec as U-Boot + * has it (lib/lzma). The input is an .lzma stream: 5 bytes of properties, + * the unpacked size as a 64-bit word, then the data. + */ +/* OpenIPC: small, in Thumb, to fit the loader's 32 KiB */ +#pragma GCC target("thumb") +#pragma GCC optimize("Os") + +#include "LzmaDec.h" +#include "bl_lzma.h" + +/* lc + lp <= 4: at most 1846 + 768 << 4 probabilities of 16 bits */ +static unsigned char lzma_heap[0x8000] __attribute__((aligned(8))); + +static void *lzma_alloc(void *p, size_t size) +{ + (void)p; + return size <= sizeof(lzma_heap) ? lzma_heap : NULL; +} + +static void lzma_free(void *p, void *address) +{ + (void)p; + (void)address; +} + +int bl_lzma_inflate(unsigned char *in, unsigned int in_size, + unsigned char *out, unsigned int out_size) +{ + ISzAlloc alloc = { lzma_alloc, lzma_free }; + SizeT src_len, dst_len = out_size; + ELzmaStatus status; + unsigned int len; + + if (in_size < LZMA_PROPS_SIZE + 8) + return -1; + len = in[LZMA_PROPS_SIZE] | in[LZMA_PROPS_SIZE + 1] << 8 | + in[LZMA_PROPS_SIZE + 2] << 16 | + (unsigned int)in[LZMA_PROPS_SIZE + 3] << 24; + if (len < dst_len) + dst_len = len; + src_len = in_size - LZMA_PROPS_SIZE - 8; + if (LzmaDecode(out, &dst_len, in + LZMA_PROPS_SIZE + 8, &src_len, in, + LZMA_PROPS_SIZE, LZMA_FINISH_END, &status, &alloc) != SZ_OK) + return -1; + return (int)dst_len; +} diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.h b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.h new file mode 100644 index 000000000000..3ba773801442 --- /dev/null +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.h @@ -0,0 +1,9 @@ +/* OpenIPC: LZMA for U-Boot's BCL1 container (bl_lzma.c) */ +#ifndef _BL_LZMA_H +#define _BL_LZMA_H + +/* Returns the unpacked length, or -1 */ +int bl_lzma_inflate(unsigned char *in, unsigned int in_size, + unsigned char *out, unsigned int out_size); + +#endif From 0b9f1e9f9023a4fc245c7c4827a9ac70e5592da5 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:15:00 +0000 Subject: [PATCH 05/38] novatek: import the NA51068 loader from the NT9832x SDK The loader of Novatek's NT9832x DVR/NVR SDK v1.02.024, release na51068_loader_v1.08.014 (software/board/loader/source_code), as the SDK ships it: the boot flow sources (LibExt/LIBExt_src/Ctrl_Flow, Project/Model/Src), the headers, the make system, the model files, the DRAM parameter tables of the parts it builds for (Tools/ConfigRam: 321, 323, 621, 623, NC321, NC323), and what Novatek ships as binaries: the driver and DRAM libraries (ARC/Lib/Release) and the Linux host tools (Tools/Bin: nvt-ld-op, bfc, Configram321, encrypt_boot, encrypt_boot_dump). The die is NA51068 (NT98321, NT98323): two Cortex-A9s, SRAM at 0xFE080000. The mask ROM loads the loader into SRAM; it trains the DDR, reads the device tree at flash block 1 (0x10000 on NOR), loads U-Boot from the tree's /nor/partition_uboot to /nvt_memory_cfg/uboot (a BCL1 container through its LZ decoder, whatever the algorithm field says; anything else copied by the HEADINFO's length at 0x300) and starts it, as NA51089's does. Its mask ROM exports no routines. Left out: the git metadata the archive carries, the Jenkins scripts (admin/), History.txt, the Windows tools and the ICE / debugger scripts (*.exe, *.bat, *.ttl, gdb*), the sample AES/RSA keys and their tools (aes.txt, rsa_*, rsa_genkey; secure boot is off), packtool (the make system does not call it), and the build output the archive carries (Project/Model/loader.bin, ld_d.tmp, and ld.script, which nothing reads). .gitattributes keeps the vendor bytes as they are; .gitignore lets the libraries in. --- board/novatek/na51068/loader/.gitattributes | 2 + board/novatek/na51068/loader/.gitignore | 2 + .../na51068/loader/ARC/Lib/Release/CA9.a | Bin 0 -> 4566 bytes .../na51068/loader/ARC/Lib/Release/Common.a | Bin 0 -> 25924 bytes .../na51068/loader/ARC/Lib/Release/Compress.a | Bin 0 -> 4760 bytes .../loader/ARC/Lib/Release/Ctrl_Flow.a | Bin 0 -> 29268 bytes .../na51068/loader/ARC/Lib/Release/Debug.a | Bin 0 -> 3014 bytes .../na51068/loader/ARC/Lib/Release/Driver.a | Bin 0 -> 10052 bytes .../loader/ARC/Lib/Release/Remap_LZ321.a | Bin 0 -> 4858 bytes .../loader/ARC/Lib/Release/Remap_LZ323.a | Bin 0 -> 4858 bytes .../loader/ARC/Lib/Release/Remap_LZ621.a | Bin 0 -> 4850 bytes .../loader/ARC/Lib/Release/Remap_LZ623.a | Bin 0 -> 4850 bytes .../loader/ARC/Lib/Release/Remap_LZNC321.a | Bin 0 -> 4928 bytes .../loader/ARC/Lib/Release/Remap_LZNC323.a | Bin 0 -> 4928 bytes .../loader/ARC/Lib/Release/Remap_NM321.a | Bin 0 -> 4898 bytes .../na51068/loader/ARC/Lib/Release/Reset.a | Bin 0 -> 121464 bytes .../loader/ARC/Lib/Release/STRGEXT_Eth.a | Bin 0 -> 12668 bytes .../loader/ARC/Lib/Release/STRGEXT_NONE.a | Bin 0 -> 1336 bytes .../loader/ARC/Lib/Release/STRGEXT_Sdio1.a | Bin 0 -> 9018 bytes .../loader/ARC/Lib/Release/STRGEXT_Uart.a | Bin 0 -> 1336 bytes .../loader/ARC/Lib/Release/STRGEXT_Usb.a | Bin 0 -> 1336 bytes .../loader/ARC/Lib/Release/STRGINT_NandSpi.a | Bin 0 -> 12134 bytes .../loader/ARC/Lib/Release/STRGINT_SpiFlash.a | Bin 0 -> 9980 bytes .../na51068/loader/ARC/Lib/Release/fdt.a | Bin 0 -> 13126 bytes .../na51068/loader/ARC/Lib/Release/nvtpack.a | Bin 0 -> 7752 bytes .../na51068/loader/Include/Driver/Memory.h | 174 ++ .../na51068/loader/Include/Driver/bus.h | 37 + .../na51068/loader/Include/Driver/cache.h | 511 ++++ .../na51068/loader/Include/Driver/chipset.h | 347 +++ .../na51068/loader/Include/Driver/crypto.h | 97 + .../na51068/loader/Include/Driver/mmc.h | 232 ++ .../na51068/loader/Include/Driver/mmc_api.h | 13 + .../na51068/loader/Include/Driver/nand.h | 118 + .../na51068/loader/Include/Driver/nor.h | 51 + .../na51068/loader/Include/Driver/pll.h | 24 + .../na51068/loader/Include/Driver/rcw_macro.h | 205 ++ .../na51068/loader/Include/Driver/regdef.h | 311 +++ .../na51068/loader/Include/Driver/top_ctrl.h | 160 ++ .../na51068/loader/Include/StorageDef.h | 524 ++++ board/novatek/na51068/loader/Include/Type.h | 9 + .../novatek/na51068/loader/Include/ahb_dma.h | 98 + board/novatek/na51068/loader/Include/bdata.h | 7 + board/novatek/na51068/loader/Include/board.h | 139 ++ .../novatek/na51068/loader/Include/compiler.h | 56 + .../novatek/na51068/loader/Include/constant.h | 118 + board/novatek/na51068/loader/Include/ctype.h | 36 + .../na51068/loader/Include/data_keeper.h | 17 + board/novatek/na51068/loader/Include/debug.h | 31 + board/novatek/na51068/loader/Include/fat.h | 48 + board/novatek/na51068/loader/Include/fdt.h | 111 + .../na51068/loader/Include/fdt/compiler.h | 56 + .../novatek/na51068/loader/Include/fdt/fdt.h | 111 + .../na51068/loader/Include/fdt/libfdt.h | 1578 ++++++++++++ .../na51068/loader/Include/fdt/libfdt_env.h | 63 + board/novatek/na51068/loader/Include/fuart.h | 81 + board/novatek/na51068/loader/Include/global.h | 67 + board/novatek/na51068/loader/Include/kprint.h | 29 + board/novatek/na51068/loader/Include/libfdt.h | 1578 ++++++++++++ .../na51068/loader/Include/libfdt_env.h | 63 + .../na51068/loader/Include/libfdt_internal.h | 56 + board/novatek/na51068/loader/Include/loader.h | 83 + board/novatek/na51068/loader/Include/lz.h | 26 + .../loader/Include/modelext/bin_info.h | 143 ++ .../Include/modelext/dram_partition_info.h | 48 + .../Include/modelext/emb_partition_info.h | 55 + .../loader/Include/modelext/modelext_info.h | 16 + .../loader/Include/modelext/shm_info.h | 131 + .../na51068/loader/Include/nvt_crypto.h | 50 + .../novatek/na51068/loader/Include/nvt_hash.h | 30 + .../na51068/loader/Include/nvt_rdata_sys.h | 49 + .../novatek/na51068/loader/Include/nvt_rsa.h | 49 + .../na51068/loader/Include/nvtpack/nvtpack.h | 195 ++ .../novatek/na51068/loader/Include/scsi_op.h | 205 ++ board/novatek/na51068/loader/Include/sdhci.h | 218 ++ board/novatek/na51068/loader/Include/signal.h | 4 + board/novatek/na51068/loader/Include/spi020.h | 281 +++ .../na51068/loader/Include/spi_flash.h | 111 + board/novatek/na51068/loader/Include/stdarg.h | 19 + board/novatek/na51068/loader/Include/stdio.h | 23 + board/novatek/na51068/loader/Include/stdlib.h | 4 + board/novatek/na51068/loader/Include/string.h | 47 + board/novatek/na51068/loader/Include/timer.h | 9 + .../LibExt/LIBExt_src/Ctrl_Flow/Makefile | 57 + .../LibExt/LIBExt_src/Ctrl_Flow/bl_func.c | 2114 +++++++++++++++++ .../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h | 282 +++ .../LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c | 372 +++ .../LibExt/LIBExt_src/Ctrl_Flow/bl_u2.h | 7 + .../loader/LibExt/LIBExt_src/Ctrl_Flow/main.c | 1168 +++++++++ .../loader/LibExt/LIBExt_src/Ctrl_Flow/main.h | 36 + .../LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c | 49 + .../LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c | 43 + board/novatek/na51068/loader/LibExt/Makefile | 62 + .../na51068/loader/MakeCommon/InputSource.txt | 177 ++ .../na51068/loader/MakeCommon/MakeCommon.txt | 651 +++++ .../na51068/loader/MakeCommon/MakeOption.txt | 278 +++ .../na51068/loader/MakeCommon/Makefile | 128 + .../na51068/loader/MakeCommon/OutputImg.txt | 553 +++++ .../na51068/loader/MakeCommon/OutputLib.txt | 155 ++ .../na51068/loader/MakeCommon/dump_tmp | 0 .../na51068/loader/Project/Model/LDS_LZ.lds | 186 ++ .../na51068/loader/Project/Model/LDS_NM.lds | 144 ++ .../loader/Project/Model/MakeConfig.txt | 720 ++++++ .../na51068/loader/Project/Model/Makefile | 129 + .../loader/Project/Model/ModelConfig.txt | 18 + .../ModelConfig_321_DDR3_4Gx1_NAND_SYS.txt | 210 ++ .../ModelConfig_321_DDR4_8GX1_NAND_SYS.txt | 210 ++ ...ModelConfig_323_DDR3_4GX2_NAND_EVB_SYS.txt | 210 ++ ...ModelConfig_323_DDR4_8GX2_NAND_EVB_SYS.txt | 210 ++ .../Project/Model/ModelConfig_EMU_EVB.txt | 210 ++ .../ModelConfig_NC321_DDR3_4GX1_NAND_SYS.txt | 210 ++ ...delConfig_NC323_DDR3_4GX2_NAND_EVB_SYS.txt | 210 ++ ...ModelConfig_WRLD_USB_321_DDR3_4GX1_SYS.txt | 210 ++ ...Config_WRLD_USB_321_DDR4_8GX1_NAND_SYS.txt | 210 ++ ...Config_WRLD_USB_323_DDR3_4GX2_NAND_EVB.txt | 210 ++ ...ModelConfig_WRLD_USB_323_DDR4_8GX2_SYS.txt | 210 ++ ...delConfig_WRLD_USB_NC321_DDR3_4GX1_SYS.txt | 210 ++ ..._WRLD_USB_NC323_DDR3_4GX2_NAND_EVB_SYS.txt | 210 ++ .../Project/Model/Src/UART/uart_upgrade.c | 211 ++ .../Project/Model/Src/UART/uart_upgrade.h | 100 + .../loader/Project/Model/Src/USB/usb_update.c | 1240 ++++++++++ .../loader/Project/Model/Src/USB/usb_update.h | 297 +++ .../loader/Project/Model/Src/prj_main.c | 190 ++ .../loader/Project/Model/Src/prj_main.h | 72 + .../na51068/loader/Tools/Bin/Configram321 | Bin 0 -> 1852840 bytes board/novatek/na51068/loader/Tools/Bin/bfc | Bin 0 -> 26872 bytes .../na51068/loader/Tools/Bin/encrypt_boot | Bin 0 -> 67608 bytes .../loader/Tools/Bin/encrypt_boot_dump | Bin 0 -> 75832 bytes .../na51068/loader/Tools/Bin/nvt-ld-op | Bin 0 -> 754576 bytes .../321/51068A_DDR3_16_1024_0_1066_UBT.ini | 147 ++ .../321/51068A_DDR3_16_1024_0_800_UBT.ini | 147 ++ .../321/51068A_DDR3_16_1024_0_933_UBT.ini | 147 ++ .../321/51068A_DDR3_16_2048_0_1066_UBT.ini | 147 ++ .../321/51068A_DDR3_16_2048_0_800_UBT.ini | 147 ++ .../321/51068A_DDR3_16_2048_0_933_UBT.ini | 147 ++ .../321/51068A_DDR3_16_4096_0_1066_FB.ini | 147 ++ .../321/51068A_DDR3_16_4096_0_1066_UBT.ini | 147 ++ .../321/51068A_DDR3_16_4096_0_800_UBT.ini | 147 ++ .../321/51068A_DDR3_16_4096_0_933_UBT.ini | 147 ++ .../321/51068A_DDR3_16_8192_0_1066_UBT.ini | 147 ++ .../321/51068A_DDR4_16_4096_0_1200_FB.ini | 147 ++ .../321/51068A_DDR4_16_4096_0_1200_UBT.ini | 147 ++ .../321/51068A_DDR4_16_8192_0_1200_UBT.ini | 147 ++ .../323/51068A_DDR3_16_2048_0_1066_FB.ini | 147 ++ .../323/51068A_DDR3_16_2048_0_1200_FB.ini | 147 ++ .../323/51068A_DDR3_16_2048_0_933_FB.ini | 147 ++ .../323/51068A_DDR3_16_4096_0_1066_FB.ini | 147 ++ .../323/51068A_DDR3_16_4096_0_1066_UBT.ini | 147 ++ .../323/51068A_DDR3_16_4096_0_1200_FB.ini | 147 ++ .../323/51068A_DDR3_16_4096_0_933_FB.ini | 147 ++ .../323/51068A_DDR3_32_2048_2048_1066_FB.ini | 147 ++ .../323/51068A_DDR3_32_2048_2048_800_FB.ini | 147 ++ .../323/51068A_DDR3_32_2048_2048_800_UBT.ini | 147 ++ .../323/51068A_DDR3_32_2048_2048_933_FB.ini | 147 ++ .../323/51068A_DDR3_32_2048_2048_933_UBT.ini | 147 ++ .../323/51068A_DDR3_32_4096_2048_1066_FB.ini | 147 ++ .../323/51068A_DDR3_32_4096_2048_1066_UBT.ini | 147 ++ .../323/51068A_DDR3_32_4096_4096_1066_FB.ini | 147 ++ .../323/51068A_DDR3_32_4096_4096_1066_UBT.ini | 147 ++ .../323/51068A_DDR3_32_4096_4096_800_FB.ini | 147 ++ .../323/51068A_DDR3_32_4096_4096_800_UBT.ini | 147 ++ .../323/51068A_DDR3_32_4096_4096_933_FB.ini | 147 ++ .../323/51068A_DDR3_32_4096_4096_933_UBT.ini | 147 ++ .../323/51068A_DDR3_32_8192_8192_1066_FB.ini | 147 ++ .../323/51068A_DDR4_16_4096_0_1200_FB.ini | 147 ++ .../323/51068A_DDR4_16_8192_0_1200_FB.ini | 147 ++ .../323/51068A_DDR4_32_4096_4096_1200_FB.ini | 147 ++ .../323/51068A_DDR4_32_8192_8192_1200_FB.ini | 147 ++ .../621/51068A_DDR3_16_1024_0_1066_UBT.ini | 147 ++ .../621/51068A_DDR3_16_1024_0_800_UBT.ini | 147 ++ .../621/51068A_DDR3_16_1024_0_933_UBT.ini | 147 ++ .../621/51068A_DDR3_16_2048_0_1066_UBT.ini | 147 ++ .../621/51068A_DDR3_16_2048_0_800_UBT.ini | 147 ++ .../621/51068A_DDR3_16_2048_0_933_UBT.ini | 147 ++ .../621/51068A_DDR3_16_4096_0_1066_FB.ini | 147 ++ .../621/51068A_DDR3_16_4096_0_1066_UBT.ini | 147 ++ .../621/51068A_DDR3_16_4096_0_800_UBT.ini | 147 ++ .../621/51068A_DDR3_16_4096_0_933_UBT.ini | 147 ++ .../621/51068A_DDR3_16_8192_0_1066_UBT.ini | 147 ++ .../621/51068A_DDR4_16_4096_0_1200_FB.ini | 147 ++ .../621/51068A_DDR4_16_4096_0_1200_UBT.ini | 147 ++ .../621/51068A_DDR4_16_8192_0_1200_UBT.ini | 147 ++ .../623/51068A_DDR3_16_2048_0_1066_FB.ini | 147 ++ .../623/51068A_DDR3_16_2048_0_1200_FB.ini | 147 ++ .../623/51068A_DDR3_16_2048_0_933_FB.ini | 147 ++ .../623/51068A_DDR3_16_4096_0_1066_FB.ini | 147 ++ .../623/51068A_DDR3_16_4096_0_1066_UBT.ini | 147 ++ .../623/51068A_DDR3_16_4096_0_1200_FB.ini | 147 ++ .../623/51068A_DDR3_16_4096_0_933_FB.ini | 147 ++ .../623/51068A_DDR3_32_2048_2048_1066_FB.ini | 147 ++ .../623/51068A_DDR3_32_2048_2048_800_FB.ini | 147 ++ .../623/51068A_DDR3_32_2048_2048_800_UBT.ini | 147 ++ .../623/51068A_DDR3_32_2048_2048_933_FB.ini | 147 ++ .../623/51068A_DDR3_32_2048_2048_933_UBT.ini | 147 ++ .../623/51068A_DDR3_32_4096_2048_1066_FB.ini | 147 ++ .../623/51068A_DDR3_32_4096_2048_1066_UBT.ini | 147 ++ .../623/51068A_DDR3_32_4096_4096_1066_FB.ini | 147 ++ .../623/51068A_DDR3_32_4096_4096_1066_UBT.ini | 147 ++ .../623/51068A_DDR3_32_4096_4096_800_FB.ini | 147 ++ .../623/51068A_DDR3_32_4096_4096_800_UBT.ini | 147 ++ .../623/51068A_DDR3_32_4096_4096_933_FB.ini | 147 ++ .../623/51068A_DDR3_32_4096_4096_933_UBT.ini | 147 ++ .../623/51068A_DDR3_32_8192_8192_1066_FB.ini | 147 ++ .../623/51068A_DDR4_16_4096_0_1200_FB.ini | 147 ++ .../623/51068A_DDR4_16_8192_0_1200_FB.ini | 147 ++ .../623/51068A_DDR4_32_4096_4096_1200_FB.ini | 147 ++ .../623/51068A_DDR4_32_8192_8192_1200_FB.ini | 147 ++ .../NC321/51068A_DDR3_16_1024_0_1066_UBT.ini | 147 ++ .../NC321/51068A_DDR3_16_1024_0_800_UBT.ini | 147 ++ .../NC321/51068A_DDR3_16_1024_0_933_UBT.ini | 147 ++ .../NC321/51068A_DDR3_16_2048_0_1066_UBT.ini | 147 ++ .../NC321/51068A_DDR3_16_2048_0_800_UBT.ini | 147 ++ .../NC321/51068A_DDR3_16_2048_0_933_UBT.ini | 147 ++ .../NC321/51068A_DDR3_16_4096_0_1066_FB.ini | 147 ++ .../NC321/51068A_DDR3_16_4096_0_1066_UBT.ini | 147 ++ .../NC321/51068A_DDR3_16_4096_0_800_UBT.ini | 147 ++ .../NC321/51068A_DDR3_16_4096_0_933_UBT.ini | 147 ++ .../NC321/51068A_DDR3_16_8192_0_1066_UBT.ini | 147 ++ .../NC321/51068A_DDR4_16_4096_0_1200_FB.ini | 147 ++ .../NC321/51068A_DDR4_16_4096_0_1200_UBT.ini | 147 ++ .../NC321/51068A_DDR4_16_8192_0_1200_UBT.ini | 147 ++ .../NC323/51068A_DDR3_16_2048_0_1066_FB.ini | 147 ++ .../NC323/51068A_DDR3_16_2048_0_1200_FB.ini | 147 ++ .../NC323/51068A_DDR3_16_2048_0_933_FB.ini | 147 ++ .../NC323/51068A_DDR3_16_4096_0_1066_FB.ini | 147 ++ .../NC323/51068A_DDR3_16_4096_0_1066_UBT.ini | 147 ++ .../NC323/51068A_DDR3_16_4096_0_1200_FB.ini | 147 ++ .../NC323/51068A_DDR3_16_4096_0_933_FB.ini | 147 ++ .../51068A_DDR3_32_2048_2048_1066_FB.ini | 147 ++ .../NC323/51068A_DDR3_32_2048_2048_800_FB.ini | 147 ++ .../51068A_DDR3_32_2048_2048_800_UBT.ini | 147 ++ .../NC323/51068A_DDR3_32_2048_2048_933_FB.ini | 147 ++ .../51068A_DDR3_32_2048_2048_933_UBT.ini | 147 ++ .../51068A_DDR3_32_4096_2048_1066_FB.ini | 147 ++ .../51068A_DDR3_32_4096_2048_1066_UBT.ini | 147 ++ .../51068A_DDR3_32_4096_4096_1066_FB.ini | 147 ++ .../51068A_DDR3_32_4096_4096_1066_UBT.ini | 147 ++ .../NC323/51068A_DDR3_32_4096_4096_800_FB.ini | 147 ++ .../51068A_DDR3_32_4096_4096_800_UBT.ini | 147 ++ .../NC323/51068A_DDR3_32_4096_4096_933_FB.ini | 147 ++ .../51068A_DDR3_32_4096_4096_933_UBT.ini | 147 ++ .../51068A_DDR3_32_8192_8192_1066_FB.ini | 147 ++ .../NC323/51068A_DDR4_16_4096_0_1200_FB.ini | 147 ++ .../NC323/51068A_DDR4_16_8192_0_1200_FB.ini | 147 ++ .../51068A_DDR4_32_4096_4096_1200_FB.ini | 147 ++ .../51068A_DDR4_32_8192_8192_1200_FB.ini | 147 ++ 245 files changed, 38324 insertions(+) create mode 100644 board/novatek/na51068/loader/.gitattributes create mode 100644 board/novatek/na51068/loader/.gitignore create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/CA9.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/Common.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/Compress.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/Ctrl_Flow.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/Debug.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/Driver.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZ321.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZ323.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZ621.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZ623.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZNC321.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZNC323.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/Remap_NM321.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/Reset.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_Eth.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_NONE.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_Sdio1.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_Uart.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_Usb.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/STRGINT_NandSpi.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/STRGINT_SpiFlash.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/fdt.a create mode 100644 board/novatek/na51068/loader/ARC/Lib/Release/nvtpack.a create mode 100755 board/novatek/na51068/loader/Include/Driver/Memory.h create mode 100755 board/novatek/na51068/loader/Include/Driver/bus.h create mode 100755 board/novatek/na51068/loader/Include/Driver/cache.h create mode 100755 board/novatek/na51068/loader/Include/Driver/chipset.h create mode 100755 board/novatek/na51068/loader/Include/Driver/crypto.h create mode 100755 board/novatek/na51068/loader/Include/Driver/mmc.h create mode 100755 board/novatek/na51068/loader/Include/Driver/mmc_api.h create mode 100755 board/novatek/na51068/loader/Include/Driver/nand.h create mode 100755 board/novatek/na51068/loader/Include/Driver/nor.h create mode 100755 board/novatek/na51068/loader/Include/Driver/pll.h create mode 100755 board/novatek/na51068/loader/Include/Driver/rcw_macro.h create mode 100755 board/novatek/na51068/loader/Include/Driver/regdef.h create mode 100755 board/novatek/na51068/loader/Include/Driver/top_ctrl.h create mode 100755 board/novatek/na51068/loader/Include/StorageDef.h create mode 100755 board/novatek/na51068/loader/Include/Type.h create mode 100755 board/novatek/na51068/loader/Include/ahb_dma.h create mode 100755 board/novatek/na51068/loader/Include/bdata.h create mode 100755 board/novatek/na51068/loader/Include/board.h create mode 100755 board/novatek/na51068/loader/Include/compiler.h create mode 100755 board/novatek/na51068/loader/Include/constant.h create mode 100755 board/novatek/na51068/loader/Include/ctype.h create mode 100755 board/novatek/na51068/loader/Include/data_keeper.h create mode 100755 board/novatek/na51068/loader/Include/debug.h create mode 100755 board/novatek/na51068/loader/Include/fat.h create mode 100755 board/novatek/na51068/loader/Include/fdt.h create mode 100755 board/novatek/na51068/loader/Include/fdt/compiler.h create mode 100755 board/novatek/na51068/loader/Include/fdt/fdt.h create mode 100755 board/novatek/na51068/loader/Include/fdt/libfdt.h create mode 100755 board/novatek/na51068/loader/Include/fdt/libfdt_env.h create mode 100755 board/novatek/na51068/loader/Include/fuart.h create mode 100755 board/novatek/na51068/loader/Include/global.h create mode 100755 board/novatek/na51068/loader/Include/kprint.h create mode 100755 board/novatek/na51068/loader/Include/libfdt.h create mode 100755 board/novatek/na51068/loader/Include/libfdt_env.h create mode 100755 board/novatek/na51068/loader/Include/libfdt_internal.h create mode 100755 board/novatek/na51068/loader/Include/loader.h create mode 100755 board/novatek/na51068/loader/Include/lz.h create mode 100755 board/novatek/na51068/loader/Include/modelext/bin_info.h create mode 100755 board/novatek/na51068/loader/Include/modelext/dram_partition_info.h create mode 100755 board/novatek/na51068/loader/Include/modelext/emb_partition_info.h create mode 100755 board/novatek/na51068/loader/Include/modelext/modelext_info.h create mode 100755 board/novatek/na51068/loader/Include/modelext/shm_info.h create mode 100755 board/novatek/na51068/loader/Include/nvt_crypto.h create mode 100755 board/novatek/na51068/loader/Include/nvt_hash.h create mode 100755 board/novatek/na51068/loader/Include/nvt_rdata_sys.h create mode 100755 board/novatek/na51068/loader/Include/nvt_rsa.h create mode 100755 board/novatek/na51068/loader/Include/nvtpack/nvtpack.h create mode 100755 board/novatek/na51068/loader/Include/scsi_op.h create mode 100755 board/novatek/na51068/loader/Include/sdhci.h create mode 100755 board/novatek/na51068/loader/Include/signal.h create mode 100755 board/novatek/na51068/loader/Include/spi020.h create mode 100755 board/novatek/na51068/loader/Include/spi_flash.h create mode 100755 board/novatek/na51068/loader/Include/stdarg.h create mode 100755 board/novatek/na51068/loader/Include/stdio.h create mode 100755 board/novatek/na51068/loader/Include/stdlib.h create mode 100755 board/novatek/na51068/loader/Include/string.h create mode 100755 board/novatek/na51068/loader/Include/timer.h create mode 100644 board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile create mode 100755 board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c create mode 100644 board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h create mode 100755 board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c create mode 100755 board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.h create mode 100755 board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c create mode 100755 board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/main.h create mode 100755 board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c create mode 100755 board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c create mode 100755 board/novatek/na51068/loader/LibExt/Makefile create mode 100755 board/novatek/na51068/loader/MakeCommon/InputSource.txt create mode 100755 board/novatek/na51068/loader/MakeCommon/MakeCommon.txt create mode 100755 board/novatek/na51068/loader/MakeCommon/MakeOption.txt create mode 100755 board/novatek/na51068/loader/MakeCommon/Makefile create mode 100755 board/novatek/na51068/loader/MakeCommon/OutputImg.txt create mode 100755 board/novatek/na51068/loader/MakeCommon/OutputLib.txt create mode 100755 board/novatek/na51068/loader/MakeCommon/dump_tmp create mode 100755 board/novatek/na51068/loader/Project/Model/LDS_LZ.lds create mode 100755 board/novatek/na51068/loader/Project/Model/LDS_NM.lds create mode 100755 board/novatek/na51068/loader/Project/Model/MakeConfig.txt create mode 100755 board/novatek/na51068/loader/Project/Model/Makefile create mode 100755 board/novatek/na51068/loader/Project/Model/ModelConfig.txt create mode 100755 board/novatek/na51068/loader/Project/Model/ModelConfig_321_DDR3_4Gx1_NAND_SYS.txt create mode 100755 board/novatek/na51068/loader/Project/Model/ModelConfig_321_DDR4_8GX1_NAND_SYS.txt create mode 100755 board/novatek/na51068/loader/Project/Model/ModelConfig_323_DDR3_4GX2_NAND_EVB_SYS.txt create mode 100755 board/novatek/na51068/loader/Project/Model/ModelConfig_323_DDR4_8GX2_NAND_EVB_SYS.txt create mode 100755 board/novatek/na51068/loader/Project/Model/ModelConfig_EMU_EVB.txt create mode 100755 board/novatek/na51068/loader/Project/Model/ModelConfig_NC321_DDR3_4GX1_NAND_SYS.txt create mode 100755 board/novatek/na51068/loader/Project/Model/ModelConfig_NC323_DDR3_4GX2_NAND_EVB_SYS.txt create mode 100755 board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_321_DDR3_4GX1_SYS.txt create mode 100755 board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_321_DDR4_8GX1_NAND_SYS.txt create mode 100755 board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_323_DDR3_4GX2_NAND_EVB.txt create mode 100755 board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_323_DDR4_8GX2_SYS.txt create mode 100755 board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_NC321_DDR3_4GX1_SYS.txt create mode 100755 board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_NC323_DDR3_4GX2_NAND_EVB_SYS.txt create mode 100755 board/novatek/na51068/loader/Project/Model/Src/UART/uart_upgrade.c create mode 100755 board/novatek/na51068/loader/Project/Model/Src/UART/uart_upgrade.h create mode 100755 board/novatek/na51068/loader/Project/Model/Src/USB/usb_update.c create mode 100755 board/novatek/na51068/loader/Project/Model/Src/USB/usb_update.h create mode 100755 board/novatek/na51068/loader/Project/Model/Src/prj_main.c create mode 100755 board/novatek/na51068/loader/Project/Model/Src/prj_main.h create mode 100755 board/novatek/na51068/loader/Tools/Bin/Configram321 create mode 100755 board/novatek/na51068/loader/Tools/Bin/bfc create mode 100755 board/novatek/na51068/loader/Tools/Bin/encrypt_boot create mode 100755 board/novatek/na51068/loader/Tools/Bin/encrypt_boot_dump create mode 100755 board/novatek/na51068/loader/Tools/Bin/nvt-ld-op create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_1024_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_1024_0_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_1024_0_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_2048_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_2048_0_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_2048_0_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_8192_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR4_16_4096_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR4_16_4096_0_1200_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR4_16_8192_0_1200_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_2048_0_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_2048_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_2048_0_933_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_933_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_800_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_933_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_2048_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_2048_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_800_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_933_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_8192_8192_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_16_4096_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_16_8192_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_32_4096_4096_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_32_8192_8192_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_1024_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_1024_0_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_1024_0_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_2048_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_2048_0_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_2048_0_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_8192_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR4_16_4096_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR4_16_4096_0_1200_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR4_16_8192_0_1200_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_2048_0_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_2048_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_2048_0_933_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_933_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_800_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_933_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_2048_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_2048_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_800_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_933_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_8192_8192_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_16_4096_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_16_8192_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_32_4096_4096_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_32_8192_8192_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_1024_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_1024_0_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_1024_0_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_2048_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_2048_0_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_2048_0_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_8192_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR4_16_4096_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR4_16_4096_0_1200_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR4_16_8192_0_1200_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_2048_0_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_2048_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_2048_0_933_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_933_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_800_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_933_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_2048_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_2048_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_1066_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_800_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_800_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_933_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_933_UBT.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_8192_8192_1066_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_16_4096_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_16_8192_0_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_32_4096_4096_1200_FB.ini create mode 100755 board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_32_8192_8192_1200_FB.ini diff --git a/board/novatek/na51068/loader/.gitattributes b/board/novatek/na51068/loader/.gitattributes new file mode 100644 index 000000000000..1c5b20e00b05 --- /dev/null +++ b/board/novatek/na51068/loader/.gitattributes @@ -0,0 +1,2 @@ +# The vendor loader, as the SDK ships it: no line-ending conversion +* -text diff --git a/board/novatek/na51068/loader/.gitignore b/board/novatek/na51068/loader/.gitignore new file mode 100644 index 000000000000..f84d41d3cbe0 --- /dev/null +++ b/board/novatek/na51068/loader/.gitignore @@ -0,0 +1,2 @@ +# The vendor libraries the loader links against +!*.a diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/CA9.a b/board/novatek/na51068/loader/ARC/Lib/Release/CA9.a new file mode 100644 index 0000000000000000000000000000000000000000..4df32c913b5b99bac691a348cfeaac81f8b28c66 GIT binary patch literal 4566 zcmeHJUu;uV82@f>w{DlQKa5FNk=@~p6Ii)jyRstgPdBGH6tkd$i0fTj(#EnbU56u* zP~(dUF&H(GgqJ<)(*|aVi7Yen=nE4`;LSIDFwF>mL?F)ZJNKO1v%8|i2cJC2>G%E4 z_dCDu>pkb*b6WS9xp=Ba+o`W^fp8!a4tIA4x^&%OA^BI=L&0u7A*KO99e{HG-}Zsm z-`G2T+{~mCW<I%hz>KGo{h17m#>pFvXOialXo4fN6iC~1MscDk5#ke5qowFzdBqaJ z7N@K<m!&L~R1zptX*83KzsF{k1g!~W2TOF8L}E(VL2_2|=o+nwSmn{o)MRQTX(rfz z2Ql(iE}c(WL%^P{KWi_%yyAgKS14@oU&9E8L%8CGVQm3Drk#3m-;kmxxbRj}pdCsG zpl=-;uLv>I4x6DF)ZxNB%=%J4c^>{;Sb#;t^TQuF@-)nPicP(q;?>^8Tl>!}-pZaS zED$qw-qqf`w0?O1-Ibg#=1YBc0k%C@(uS3-zL@sQM;`SKjOam6@$KHvqxY8-!`*&+ zsro!=6c#R`HrIb_oj1$qoV0b6R+t5S<@Y~Vpw-2!m5C~yz)F2~r8TcKrp{e}?GKjL zt*Q0hGC3Y%j&gYvo(D6teDur;^ZIfNz-;Ssi}G>Qb;WvGo?=&>Zrr^AK-GAP;X0~~ zYE`iUZ*1UR-wvzV3HHn_4NtMBj&#trs6(ft^{8ge(uTdU!t<Bz73x2XR$ue5e__o> z?Or|j>kV&AH<oX};<EjGDDUnyc?&%69P%h@OQ0~X4q5e|j@H;2J;Q4=?Z!;M@k}(| zaMUjT+xI*N)v`8+c7>ipIsG2gFLHgFOZt~8=jN3`m~{^+muX(Za!ZBla@7#|?wc(@ z`s>frQ(Ncz=1!s4b)6z}3)ZhPNbw&l3-jJZ;=rtTQ4h$>0%PJzzBDkfTW{Z&9yfDY z9f2P9hdMfqK)2uMdX9iUpc6Dgon89j4C8f396gsjo}Nr+$Ms!ffv$wn9gf6}Ncd<n z7zrCeGZ79Z;(>@cwkv+r2zDjMb{R*YzZ>61Gii>cLGhzoF_6vWlhYmj5vbHW{Z&e} zYlCZ}(xhxsy-Ks<Q?|IbD%+Gn`Nd}MGk)i}CF6#hD-r~CRTL1r<S=5@f!$DzBc!<z zy9*VcS;cVU*9D;79&_6sIVw~*_!W$Q&}Lcjn1o4hM#7ZuD+yEFZU0GYe!YZkDmp57 z9Qi$R7~@rrconNpw^>!TM~(`bgRe3EKAS}cZmFqI<KWjg^lM6F^i-&I@M{@=kIkyJ zJ#tih@~hXQp7A%^tkTL@{00ZVf$?egS*<}h%&O4n;5RzrO^$ezBfiOjy|5ieXt})D zH{kw=qHV_hGRKF}ni4*V{@2)j*oprI+Dq79<M>;&4Jf#U<Ev;%-@+a!a@@w^RiI*! z;s+Sk;3<x+cnx%LJjmj;5an2BxE|i&xR2om_<-Xch8y7%j<+$4&%-**<LqXT>Eu_T z_sw*Ebn?V_d^C|APeNNB+7fgXDBUOizig$F|HWl%4%bQR0HA$D){E<>?Euip?gVJ( zmflpY(%M&K1*UyWn7)tpc-Y$C8rn`8HvqcH2Kju%wBNKY{P9noIF>iZ(B^ZNO$iT= zfIRr=1`YnP$w~0jfS<0xkJ?E7Tr%UIFmw3;Czsh%)>CCnTW`$;`R~K!B&16+te!1J z_(VG|3zarKzjK$F?&LTt5ZCC^#kwRSV$v1cAI}~;mK?{Y+duNE-^}N8>9MJNauV0$ zG24^K!>s|h^sI%r6^3HeTCtNaPS!{9o<$CwHvh!Kt+^&I?LE=l+!;YD*GJ!1LllL+ z;L&%K&iFp;)C>geXz6=fft`3%*CFh(-ZTRG#)>9x67;>6d1n#OUKdT|oyGw<??D8V zhw_pYdC#FQ>s>@}0LMfVdSBvztQV8?=u{SZi|EUG^;meD5aT?8-(i>aQj#9M`$F$J z`m$aK^#*ZFG~!XCb4k{lko4$O7kanRm-VJmPscIQgdTmTWZqfi^$8MM!P|%=Iq$TT zmri?;x8I?64fW_u6AdA2FF5oHsHbCu){SllLhpz}?+M)4bS8=>^bR@nW>AlAEu@F1 zr>%FK>*1%9wLa9F;yxJ+vwjL43{8m8Jc5V-oI{ZQJBI8whk4JC2yenAD{7_CGESPo aPVYb6W$6D>y*Pc9-lurgoDm`z6YgL2<);h) literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/Common.a b/board/novatek/na51068/loader/ARC/Lib/Release/Common.a new file mode 100644 index 0000000000000000000000000000000000000000..9799a0723b69963b9cc193d58d9a51d744315b7a GIT binary patch literal 25924 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/Compress.a b/board/novatek/na51068/loader/ARC/Lib/Release/Compress.a new file mode 100644 index 0000000000000000000000000000000000000000..647ba358915c5f5b44b9b98501fa24b100e062ae GIT binary patch literal 4760 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/Ctrl_Flow.a b/board/novatek/na51068/loader/ARC/Lib/Release/Ctrl_Flow.a new file mode 100644 index 0000000000000000000000000000000000000000..80a173d092401fa227f834f7af34e406b66c36eb GIT binary patch literal 29268 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/Debug.a b/board/novatek/na51068/loader/ARC/Lib/Release/Debug.a new file mode 100644 index 0000000000000000000000000000000000000000..a26501ba1b166ffb31b410f1ad8614d146f78a7d GIT binary patch literal 3014 zcma)7&u<$=7@hSxsbi&SFex<w+G!Oa1hT9X+liwJH6(E?+6V*zAvMT9w~3`Bj%=p{ zaUeIi^}r<u4oDn0CPj)=grZ*h4<N*e1D8q#AtWjxH5Ul)&F<I}D@gg|+3$Pbym_7< z-_BmXTCA5>-iW>~k6R+0$fVPglZlj+uIe(MQYI2Uma-5PLUf~jcT%f(rOoAh!)xZt zwe?1A)f0ZktJm96{&rELwZ?LgM`YwHn`;~SVx<!BoLXzb=1dcrR5I-bPuESSlTwaN zOr-s_6{4Tb-N;&&g^BuRiDA)3Ld4Igd{<JrVG$SS#ooTy?OGUF8N54tap2H8C%)f1 zcy;CG%Fg_gN2J-;x50=PB6n@%whx%w*$-#MuAMu2^6!z%^0}k(d;49;_vCt2Zdg6L z4HlXHs6EBEp~WfjAJ|9r9mM|llSks8?(1=*zaPHco&EK2>1(n3MK+9Raj*N2i2c=@ z)=vk&9p357y?Du=WB74z4<ojB)V$t544>1P4^?Ji?(ZM%Tz`_;Umo$;Ik&TD{b+Mj zLb_YxY*gSmC54ni%+JhB$>AH-^<upy0c6@qj*hvBNykmSLf|AMp_?2_$(yT+H)?QX z-Md|FRBP*UqLfHg+{tvN>}Jxpyzxxh9WPeW<CStEQ!GuCZ@J?suQcI)B&H`ZnW9%L zRfXjs?3$_7o8H#wbVhVX&rC<Go=_|_V4b%v*m3JwYtXtFzG977vt}J&m@+dL7LSi~ zp58uIIm98e8<?liHd};64<I!qS_pU$zHMRg0>JaFM7R|(u<?=|=XWbU_ue<Ygl)4$ zq=O$({DBrF(ux?^BHF=^D*kIN7Eioww&?BP_qIC`*`lwbzfb86wOD<vh=GkNI=;Ss z#b0W%eB6Q<Ap^jjvVcvqMa+cgeYyh=h!JFX9^8`{_V;Rl;|fPaHoz>Y81`ooUK{s4 zkH+!bnHct?8er~O4D0_mz^e*lgu48ka&X0MY&P?aX1%(;EQXq5s3O)nZpqW!o3mbd zEaz>#*F60ds%k8RP2(EqSqV{;4^M=i`w>DRa$Usa(LWP-)@byKU&qY96y&*Xj&lQ_ z3_Q<=Jp7brr4aLksB=sg`61+~GaPtg^7%fKKNet~3-i~4{A_^V3j7CwUxKGzA@G&J zuLNE=jZfB^#S(n8?)w!T;qGV(r&4Sdg;Q!Ygj4rc9VQ+BOJ*EmXP0?=oqhZOo{&?Y zyv{s7iYMew<hDPQPQAuib4dv&A)In;ZOvQ9TBhG!aEeXTU1_uFHLwMzw&%cPy<^Lj z@qA5VAMG+4WBo?{AMa&wSbHWf46IGZtf$WZm6`;vd8|L)vDeUOkuG1K^+gUF|L;1Q zskaC`fTm6B%_Cvz^&5KJ1Fg4=*wkZP@ea|Z^~y+?dU5EH$N6zyTJKZDrrtI%Yh9bx z<NadlxzNiYr`{)ct@kBjQ|}%y-)(K7Ah-i>>TMb8<vXkOzC~>6Jpkt3Yt!@l1_@Jd z8+u#^=f}H7>)l6e>iq@0il$BL{eXn2cMp06<fz9xO6&cMn0mY?XiEU*?aw~8hk<8( z(P~I;`k{Ji-k(6I(GA`85FHr};K`#sg$7>B;wX}TTByw<U++1)B|rh~0^&<(TnE>~ QwVHa{==dBtZTf%z1D(3F^Z)<= literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/Driver.a b/board/novatek/na51068/loader/ARC/Lib/Release/Driver.a new file mode 100644 index 0000000000000000000000000000000000000000..899aba3e6dd30dbbff8aff5092e42e4a6003ce18 GIT binary patch literal 10052 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 L|B<3J+ll-yQZIr- literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZ321.a b/board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZ321.a new file mode 100644 index 0000000000000000000000000000000000000000..dd1bb8cb3886fd34735e6ceded727c768b1972bc GIT binary patch literal 4858 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 O+T}B!_c^b4@%{@Rc~Xr4 literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZ323.a b/board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZ323.a new file mode 100644 index 0000000000000000000000000000000000000000..9e81d4bd156d2eec509688dceac16b1c60b8226b GIT binary patch literal 4858 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 LeBS5$;>Y_hb#qdZ literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZ621.a b/board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZ621.a new file mode 100644 index 0000000000000000000000000000000000000000..ec9a9b86a34cc9daf015ee8996ab2270f0330370 GIT binary patch literal 4850 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 N<vX9xIoV{q{{rzEP*?x} literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZ623.a b/board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZ623.a new file mode 100644 index 0000000000000000000000000000000000000000..22e65764eb4845bce7a1c043bb1eb47e8ab7420b GIT binary patch literal 4850 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 N@}1A;oNO}Qe*rdQP+R~2 literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZNC321.a b/board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZNC321.a new file mode 100644 index 0000000000000000000000000000000000000000..4112d022ad3c9da7bdf8253315448a629d156583 GIT binary patch literal 4928 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZNC323.a b/board/novatek/na51068/loader/ARC/Lib/Release/Remap_LZNC323.a new file mode 100644 index 0000000000000000000000000000000000000000..69f6407f77e133a21d289c74f973a33ca4a88d74 GIT binary patch literal 4928 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/Remap_NM321.a b/board/novatek/na51068/loader/ARC/Lib/Release/Remap_NM321.a new file mode 100644 index 0000000000000000000000000000000000000000..b9f016eac0200d41ba286d293d67f75012e5fbdb GIT binary patch literal 4898 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/Reset.a b/board/novatek/na51068/loader/ARC/Lib/Release/Reset.a new file mode 100644 index 0000000000000000000000000000000000000000..f31cd87d18363940712486b170396ba0a6e08ac1 GIT binary patch literal 121464 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 Nu`eNm4r!FU{|_25PFnx~ literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_Eth.a b/board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_Eth.a new file mode 100644 index 0000000000000000000000000000000000000000..52779ff0cd820c69beca7701307f23c29f4e8db7 GIT binary patch literal 12668 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 ajqS?s6dEth6OA?1Ulc!(<fjNUfBy}MRl<(| literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_NONE.a b/board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_NONE.a new file mode 100644 index 0000000000000000000000000000000000000000..930b28a0c4dd24cc27cf01e552bf307c3ecd22b2 GIT binary patch literal 1336 zcma)5OK;Oa5T0!wO#?^}@kT;hgw%k@cAdnV7*$9iJS5a!xFXc9AEiM}9N7+PxX>TN zofAjIZ{pS)%-Gq+u|Q>{*_m(V^Um(<cymWb-qExAHeVG>S&mZuzU6Q((^P)t+-@8G zK^*`}s3%4}9r^p=G?+l@dB<TKWbTI`*-z%v0KlJ($8!;$m(AC+9J{OJVwF;<F6WkI ztE}Qd{maYUSBx<%mkEO=ED^xhwKQJorltv(VFOOT1BY*?KhS1tis1Ed_>?zyM-v@| z906CN+iFXzFQom5fUr10*=^hW-Eqom<v2VFK8@m0IN?3lvVGZCjwc;;7<3#ZJK9$r z-?JR;_Pj&cu>-d!-@~Af=hA_8N5BNSm0=hq!AWc2K()R;sIiT;#@cmugWW3KW_Q?K zcE9|9J!UWRS4?k~50v58?=-krN-G_q2g;gaIHmN-45EA)yOfu59$>yw$X5#aY9U`O z<kt(hhVKIDDQjpOSpVh%)0Yjbx4DwXXf`w+JWR52x?sjcJRc|81raAvW{-@A{Z2sm zI?*89I0iuhu^ikS&c-(vI3Hr+h2wEB!HouQ_k>Q8Xyne4AjV_=x7<S}y`$+?HnYpm z%^RCu(2qv)FWwgBsGk?{o*<`Km%cM%rey~Mc^+YNR^l4oUV--<@!$5-3!X$v@&<L5 zdf7s?NI#<D9i~|n;3qnc0ceRsat+nomGBlG=rcJBF+8&7tdu&V1%sE+TtTI2zluu# PKz_e7<ZNTih}rKCVuYS{ literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_Sdio1.a b/board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_Sdio1.a new file mode 100644 index 0000000000000000000000000000000000000000..64b2dd9a16010b527e3bb3ae79a928065c6c78cb GIT binary patch literal 9018 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 Mq)%Q*QyF{z51tHPk^lez literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_Uart.a b/board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_Uart.a new file mode 100644 index 0000000000000000000000000000000000000000..930b28a0c4dd24cc27cf01e552bf307c3ecd22b2 GIT binary patch literal 1336 zcma)5OK;Oa5T0!wO#?^}@kT;hgw%k@cAdnV7*$9iJS5a!xFXc9AEiM}9N7+PxX>TN zofAjIZ{pS)%-Gq+u|Q>{*_m(V^Um(<cymWb-qExAHeVG>S&mZuzU6Q((^P)t+-@8G zK^*`}s3%4}9r^p=G?+l@dB<TKWbTI`*-z%v0KlJ($8!;$m(AC+9J{OJVwF;<F6WkI ztE}Qd{maYUSBx<%mkEO=ED^xhwKQJorltv(VFOOT1BY*?KhS1tis1Ed_>?zyM-v@| z906CN+iFXzFQom5fUr10*=^hW-Eqom<v2VFK8@m0IN?3lvVGZCjwc;;7<3#ZJK9$r z-?JR;_Pj&cu>-d!-@~Af=hA_8N5BNSm0=hq!AWc2K()R;sIiT;#@cmugWW3KW_Q?K zcE9|9J!UWRS4?k~50v58?=-krN-G_q2g;gaIHmN-45EA)yOfu59$>yw$X5#aY9U`O z<kt(hhVKIDDQjpOSpVh%)0Yjbx4DwXXf`w+JWR52x?sjcJRc|81raAvW{-@A{Z2sm zI?*89I0iuhu^ikS&c-(vI3Hr+h2wEB!HouQ_k>Q8Xyne4AjV_=x7<S}y`$+?HnYpm z%^RCu(2qv)FWwgBsGk?{o*<`Km%cM%rey~Mc^+YNR^l4oUV--<@!$5-3!X$v@&<L5 zdf7s?NI#<D9i~|n;3qnc0ceRsat+nomGBlG=rcJBF+8&7tdu&V1%sE+TtTI2zluu# PKz_e7<ZNTih}rKCVuYS{ literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_Usb.a b/board/novatek/na51068/loader/ARC/Lib/Release/STRGEXT_Usb.a new file mode 100644 index 0000000000000000000000000000000000000000..930b28a0c4dd24cc27cf01e552bf307c3ecd22b2 GIT binary patch literal 1336 zcma)5OK;Oa5T0!wO#?^}@kT;hgw%k@cAdnV7*$9iJS5a!xFXc9AEiM}9N7+PxX>TN zofAjIZ{pS)%-Gq+u|Q>{*_m(V^Um(<cymWb-qExAHeVG>S&mZuzU6Q((^P)t+-@8G zK^*`}s3%4}9r^p=G?+l@dB<TKWbTI`*-z%v0KlJ($8!;$m(AC+9J{OJVwF;<F6WkI ztE}Qd{maYUSBx<%mkEO=ED^xhwKQJorltv(VFOOT1BY*?KhS1tis1Ed_>?zyM-v@| z906CN+iFXzFQom5fUr10*=^hW-Eqom<v2VFK8@m0IN?3lvVGZCjwc;;7<3#ZJK9$r z-?JR;_Pj&cu>-d!-@~Af=hA_8N5BNSm0=hq!AWc2K()R;sIiT;#@cmugWW3KW_Q?K zcE9|9J!UWRS4?k~50v58?=-krN-G_q2g;gaIHmN-45EA)yOfu59$>yw$X5#aY9U`O z<kt(hhVKIDDQjpOSpVh%)0Yjbx4DwXXf`w+JWR52x?sjcJRc|81raAvW{-@A{Z2sm zI?*89I0iuhu^ikS&c-(vI3Hr+h2wEB!HouQ_k>Q8Xyne4AjV_=x7<S}y`$+?HnYpm z%^RCu(2qv)FWwgBsGk?{o*<`Km%cM%rey~Mc^+YNR^l4oUV--<@!$5-3!X$v@&<L5 zdf7s?NI#<D9i~|n;3qnc0ceRsat+nomGBlG=rcJBF+8&7tdu&V1%sE+TtTI2zluu# PKz_e7<ZNTih}rKCVuYS{ literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/STRGINT_NandSpi.a b/board/novatek/na51068/loader/ARC/Lib/Release/STRGINT_NandSpi.a new file mode 100644 index 0000000000000000000000000000000000000000..13e18c96e5997c4da79dd7fc03ff49fd33460d9c GIT binary patch literal 12134 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/STRGINT_SpiFlash.a b/board/novatek/na51068/loader/ARC/Lib/Release/STRGINT_SpiFlash.a new file mode 100644 index 0000000000000000000000000000000000000000..a4f1d9eb18277b0c63e037ec4640c987dbfef8b7 GIT binary patch literal 9980 zcmbVS4OA3YmVQ;$Ee#R{8<ii41>Ghf($fec4rqXe76F9_*|>3LsOlf6=C7IVCXqNZ z_MB`^%sH7en9P}QHnSU(b?0PecLL7Dvl2saCfQ`i&1PXWvuZpe#%wx2nlurUR!rP` zUsZJ%H9E6r@8R`*_wT#+y?RyeRcT(87;sBlQog}2q>}QIP37ek73=Lh4}U<~U!E^3 zQ~iY$LI?|O09(I5(9z`$bp%8HfY{~j@VmOb?hpwM_&UHuuw(OUl4<jlY}!y(ZdZQo z_VRMbv8lpdA!ia&_SH8#8HRy0GBKopBqTyicT&BvjIsi<fvhKs6yN_3OKA)rA){u= zG8Zm23#O(lDQ_;!WC`g~&0M%7UC5Sd=fZ5Z5S}2Dt%Q8N3tIR{%Usw_M#B>r8=hdB zNFMewCGY}bn^4+CV-oU6Ty87~A4zH=qwE<rACavE%o#)ewMb^c6O)VbP5E;XGKp~v z_>ob=6j!il${$T8;R$2Y8G-QO39c!5JWIS5Ve+%ZFCyqGS3*efN70s+C^0=cR_`=8 z$!OYmOZ29__5vp{Mb}QduOzQ=_}o`kdl`%SN|yA9WGMO+v|E=uB*!?{Q#$@yx8?9_ z;A@(!kER(f`pk!)_x-dfTet{OtjP^lOLs#wyvu!MW&J;N^F{v&(JLD+cGpK)W6t6H zo|JLdl^UZ<V%C!Aqv7O}?AlkSA8V?Q8jK|050-3!nR%qqEIiVbE%~nynAv<ES$qG~ zd);Jh`&72{gB|B%WzR!<vNp<qmCY}e&c+Bi6C-J^E4$t2W2=5$Dx3h#??I!rjkFCk zCM=eodEuJW*F*~IrZ030J$r?hg_~b~ebd(j^HGu|v_yX*mIz(j04Z%=0xbK5?w6&# z5?696R(5>9DP78v-UXX*WjXVmhBV=|7&-p$G@}DnN~!Qb)9yylh5t^-^IhyFg`1~H zQTbH5^jF*OZ%9rqlKz;q?vz>j?I&jQBeh?isfyG`O~!{KSjjQrI;~`DypjV@Nh7U< z<l(3;bYGW_NkR`-((>_vRJD>cp{lVLs>v2!j#M`>d0B#4x~Jiu?K#QYXGl?OitiD7 z&c_VDJs*2(h8$Zi@kMt!Uzp_YDo#EJvlUJ<zGHWig5-10<V2@0MAD>x{Uj}I?CQh& zK09;ygFnVdtD)f3B*`{Z)Wi(CKaMcY6@ZY72y4nI!ttb}cT7%O_L4ecOFp+d=koNc zfbxcda{0`O4_ae}p0{H}xD-j3Ui&0H{TH?Od~y6mMtVExi+32|U{B_F#>NTf#D~!z zo11bZZh-K(c89N<pz+WMbMS@<S}HW29J~=GB#kh`*9~AxBTsy709|$MQbKr=W`e#I z^vB;Qh9?C0Kuj963}~4kj~y8vy93sL^e|J9I=R8R+)DDQ@+)$24J>X-nyqFla$ga@ za_9K=3XJ8LKrHhD8>`;D*Zs1)(v4o#Q0v%)(fS^}znFsIBae)w0^-ss!%4Pa3EYuM zWYNsET*9OG{1D+SLMp@zPh88r8o8Eh;6KOF9XT)t_pno&-I)KfSdoi0+@Sf{TjsB$ zSa@%%7*+WsPac7(39HB23B=9|m2SqemsYJr(dS3_$ReJMVs+sO6(hC^Wo!wwR6x6- zLE|mQM9xy_QZeNi10AOppDj>lc{MzvQYTBS=~gW&j*x+hvC^-^O)j-soaZ6kJTuk{ zbe{3~^@q&m&eo<Ue|=!=htB;l<BLA#Qu2Reyt=RMpPV<#R#ktiKJE1RnDuabea=aE z9z6F_ZOzI09mHB!-*}SnSRt;lT}~XOmsY){=>ds7JiK-B)$s1~k#)}Vkz38fyRkGo z&V*X$=|3|M^%VErn8D5+9@%QR8ZP^n2(QU_HeqRhF_M^XYm`etsnmC(&hUwGaYgQ% zu~lPg#!~6cSjEBL%!c<pKDo>S>q0bGel{sz4cK#niR-MrCa+&v%oUB_Pb&&aN<E>6 zU_Ni&#PxHacH{`|1({Cc8Dj%x_eU3#kqNUi-+<Bx>}}{bawG%1Si@qcJQC2;{p7i^ zoy}x)zjKAN<zuo9uW-_=iD2YKY5uU=M~eJY|LD6s&K0#pnUvRKnFm)+CC!GJ0w)vu z{<qN&o9Mf@-adV856jm?s~ObDW5D>9sf!XRYM!!4IQE(|8)=ojmU$TeUKeYr6it>& zH)gf?i1mi>W{e*`2ES$DSKMFIb<aEhM!D{6Av4YKZ$}J;Z%@zfX^FCntMUt-Nwan2 zv6ykJ^1GPX;zN1D^Oa|>rxLEfu7jI9k9EBn3mtqjHZX=BW094#h90Pav%C_y=zHd{ zT%GAmI<-_O)iIXQ$P%ilq`p@pvftyAW(!AsMkeRQy)FWy_!(W}t6{E-py3(D0S(st z)+ga9fq8$~*b@DLgXCokzi2c|xYwA4r;u|`!JakjIs|)hOZ4E*2LxCTt}O8Z@j39b zL_c*{=4LoY)YRsfBWAPE1}7TOMIYiEbD)dnb8W)Y=sCB~Y?&KqGsEuTm|JUh%<<5F zvgygjOvx;91s$iwD-35Ai1o)!Epuf3`B?k&c`$paBwMJ;#|qEFU4n9zc%Soo;=J%I zJSi%3D?J9w4fip6Ee_Tm|NPVN*_g?`W$5Xcaro)jqA)4iJe8WC=RBGzW0<M|gR6CJ zbK0E;w=x9=XYusB6l^#VTV=2Gorq=F_rfo+qqm*jSJ>;N^V|@ZeN?WF%e?bfGsXhu zG?VvCBndd1_jJS&<+z_lBwO<I_-yr3SfK{T)X~|Dr6ZHX+Bmc7^eS5tSnSlYe)^Kw zD}EM9J<ZsdX~z0-WU*~oJnkY`FGP6T@~Mpwvux&fw#!q-(@)s$oSL+Grik@q<Q*GJ zu_BSrYzErn0Oexj-)tX5F#9{xtffc13jKklzn?l5LFp7oJk7pw`snP6rDKq#jE*ZY zZkul0MY?fUjUS!OU3$+K`$q4gmP^75vl%8>A!hEn=}LY>k$|&TAmJ~z)zoXn%=m20 z(tUG#MltWcxzH$%{&?glXpJyOjZ1$r4Hz6V11rH?Brtq~e2+bbXUbUQ=1qpdGcoSl zJmJ13!~hL9?cwVJG_VnP9Uw!{!q9#M?I^Tk&?q$&e`FZ@(R+kE`#)s=#D@k@_Imrf zLK44)clihVJz`*}L(zBxfjd&jy&VCs=;6zD#rx2y8x(sr`h*C!w$^R@j+UMLHjlSI z<m(*bT|@jpz>hC1>-g>4>Nb;g?SI``53Ft51He>&YQn(IUNI=~Ay+To?+@{vSXJ?s zPJh7d<voy>@AG@SkZ1E20>5Od!|_eNpxM_i2K+n-e7UWxc)h)(!e-x4h=Q$zN6}uk zegnU|m--cJeE5L(L0{14@8>tVN;Y`x73G`U_D$uT-qKCw_EOPPUg~j|Y!Y1?-JSN* z4PMtq`?pC=1<af16<t2U*r024_yZyDp5mHKWKl{|jfqKSm$4bla%Lr$$z(Cv%$<gO zW-U{veXXLGL#r^5S-N*n1N?9c-ojAE*TDpF1g~C#IASD8AR;C{=U9-<2{ZJJWCi@L zi|dT>9(Fi*t6S*5h-85t@#L4$g>QWvWLxN;M6uByJy}`}bQI!<N#}1OxL(me4H^q} ztS=RsOeVEMIR{lN%$GvkU`fQM=;E>J1aW}8Fg}&uCyDq}U3{VvMB&I1UHlSq0Q4AN z0F4DZ)^CL-(-O5qIR~R$m_Lmi0t?3DHDSSy@rWf8&PswfvP>7hjJyP9jF;zoS;855 z9C$CxXC|i<e-nrK%rxIvd|55@=E!ng{Bm+xiO1{4f*tE^h9=W;wL>{aR_fwc(qggR za%e2rwZy?{TUbFBNdsr}ucQ81G+%W*2v=u<IFh4_&mk5i9`9Ec>{u_}8#3jn9m+Y9 ztBcPiWlB7*1QzUC;>c>9|7x;B@o%U8t7$%*E1B>Vk|2)c>EiQ<dqI4jE<P_23_Xrm zbnzDQpc)UH1v|Yy(3i=gb|~k_8eRMv@~9Fouje&1KCzzH=;H6z#otZ-R*A=z$dbEt z{)IaKLh>uc-vgW_h4OfzFH@n~p`3#g+`{!yL?)H^7_4Cy>^R<|@%4-+z65ckn4E}X zqrRB>C+;#?PDHTeKNNohC>h9r_z5zQvkUA7@)5}BEBhPBS0Lk4OqG{GZMc?HIUi)q zugZ6WoS~7+LC)034v<%AWa!3;Bj1SkvBMF&PA(zaAzmfS+o6*KI{EuL`Ei~6lumw8 zCyy&Kj%gXp_Y}xDR=gk6VLs`HOE;lAeuul)AM_Gyh*&*}20nS#_WIpDZN7)SiYn+0 z?eqq{fd{>w8aSA27xz$)9fN%?Zy*uY?hlE*nlN8~5EQ*NZnrlWbkr)2idH?T#PyKG z8Ss90(A)1GO5}C;`#XJI30bY9R`h6V=okAv9g;s7>hJ}FgWir%K<p28LUHhsRvst} zt1Tpk27`%u73{dnL!uAHDSC#~Z@e8rFTlF{JP8<Yzv$}q-XHLVyv<_BEuqDUXQvKt zKn!}@;J^jnhU1VhC?#v$?;(s;ilF^gF%a^F;4q|B%0Ozdcp6-&@eg?WiB%+BgTA%_ zpQE>@&i5dpeOe8@3SD4n4fwkPVxI%9L#^oUA*hQ_y{dHGJ1BbO*%%CXJ*2C{9Rx7c z;(W9Z4R{Ilsi&j&5EmXk(L@}r_jUFT1|<|6qFeIDHFS<-)nKT%qtDw1lR;n=`QR8k zFc@+ZkJmNW)zKI1BKNg7<EQqzz=Q351GR&laOG+|o&YQxQs;HAZ}9GE3kAqu_#lsK zoV`!J_gUDS>HcxAa?aTy-{Wkfd~dUh<$Ici$19I<aBQ$5Pgl+ru&u5`8MZsTqgmL7 za1Uei<ok#PCB=uNdQNd*ucyy*u&;vWQHn&!&yoA&{3+dpYyrF!aB4<e^g|hv;t2-r z<%+!;INDV`;$j@F2lRLjN!bVud8y)8naG3pJ^IspV6RjBTY)2PHp-B%R`FBySXT-J z?L^)~2)I!Ee&m3^2RSH5kOThTEA~Ukp`KqNhqzaf1J3J;{0HO^|2}evx8l4&{95Et zpB*{GS0RV^R^ajR_bT(`RIZm-p8ph(7mNeu5mYqKF61z{?;r<!S~uX(Iw9|WDRs;t z2l)nau&==UzzY<v*3pjjK;B&n|CYi9g_|(GPZ>Xq?=1!QQ{*7i^#Hi};GY7Mc^7h! z*C~9xqAyouIuBs4RrF3pp8=0@jLSw2ICm<tRpDzDy-ktJ6#h*`zeSOEDBPp)ZpGfO z$RUNl1)PO-eHuB8|D3{S6#l-#KUDZ7g+~=WhuomtkAOpL!J)p8=mH)J$Xrr;@M0Gt zwt%<S<`F|8vAN($U_+%%yKQMT3$`t-;m>bgG=~NlU=rJy-l*TuZex!>Uu)$dXy6xY za{6#EDqGTR>ep?0iTK-Ye+d`ZfAkw+!Wg%x`EllH+3~Q%=9mZrBmPrpVw+rGl0pAu z!(8Cw{FAM7fmw!tc~Lge1x7hm-cAz+IYhUy-qNgYsCuJzv(?+^wwqAiW=FCG{J3m! zU6<HOh|TTq>x1ty#8$I&yG;y*0zTJZ$Qy)P;Qvba)&#dbeb!?PKKr$VHYC{2s2|>5 zNa$BZd-4z5ew6ayHyK(rl?Z8v*TMnl!{ZT8i1fUO&#@wC$W=V_;i0Ld;@Lr=tq=XQ zHL8BKI=@38r$AE)b0h7Brp0>^WZdUeQvDtWh1TySkkeEr;A-ASp|2h9>o8s%7mgP> z`XT>0G%eoiAm0k_dC+U|-qPUVcvQSMba<z3gZDcf-YE@Uss`^v9p3vO7eG@9^CF>M zTi-bi-V(5>^%-HX+VQ4>unqwfQt|M=DroWE*Wls&sCYR#yb6$Sb=~T9e$^o3_YsxU zyfvWL=Dh@YF&|zxGc+}?q{C|fL#qm=_@RjJyjr{)fR_n+#KSKsDxUgIuGT&R20V|c zq^`do>hLlE4A&9j0dySiSzUcofLEu2DSjwEqr+PTcxrw4<wdRU6&+rNQ9hR<1`_%q z9o6BLY4GrwqT>Cx4zC&TaNVh-j`ySvuURu*{8FRh&Fk=X0baWbrud=wr4Fwh@G3x$ z^M_w<R6IQ6fNOj${qt?`R)C-O`aYo<Z=MEkqYe*&@m!~pI)9})yhDID3{F^|1)5r4 zs}8RnJ__IJzHHXvmBB>?NQ$>cgXh=beGl-oUmC$osYi#`40!7L!!JQ<eNX7{h5--n z1(nqC?$_b91Kxgc!toYDQ}JHV;mtu({2ru|ig!qdcMkA)$cuQmx2Sj%I=oAZ<@Yr` z9)8=<Uf&yV=vT*Etie00;H_5yU@_x+h)OtgY#%9pcE#{2_zkK~iVymI4u0@>8c<E8 zcM!5k6%;=d;q@`TSE6iyn+(s)Dj^mUa)69eFW{xYHNibof`;>w1`Wrm2`Asnkk8+s IrljKiFK#rzg#Z8m literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/fdt.a b/board/novatek/na51068/loader/ARC/Lib/Release/fdt.a new file mode 100644 index 0000000000000000000000000000000000000000..6833c1dc0431196a1c002d3f243ee51d96892429 GIT binary patch literal 13126 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 F`(LYkNP++W literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/ARC/Lib/Release/nvtpack.a b/board/novatek/na51068/loader/ARC/Lib/Release/nvtpack.a new file mode 100644 index 0000000000000000000000000000000000000000..eeccff9b4f099d31cb99242bb9f39fd824144d3c GIT binary patch literal 7752 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 XsN;1b)@wpCCvH4m#2pF*eX9Cj-m_Bo literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/Include/Driver/Memory.h b/board/novatek/na51068/loader/Include/Driver/Memory.h new file mode 100755 index 000000000000..ca922899c0e4 --- /dev/null +++ b/board/novatek/na51068/loader/Include/Driver/Memory.h @@ -0,0 +1,174 @@ +# ifndef _MEMORY_680_H +# define _MEMORY_680_H + + +# define DRAM_BASE_ADDR (0x0000000) +# define DRAM_EXP_BASE_ADDR (DRAM_BASE_ADDR + 0x180) +# define DRAM_INT_BASE_ADDR (DRAM_BASE_ADDR + 0x200) + +# define StackSize_KNL 0x1000 /* 4KB */ +# define StackSize_INT 0x400 /* 1KB */ + +# define FAT_HEAP_BUFFER_SIZE 0xA0000 +# define LOADER_TMP_BUFFER_SIZE 0x80000 + +# define BOOT_ROM_SP_LIMIT_ADDR 0xFE0F8000 +# define BOOT_ROM_RAM_TEMP_ADDR 0xF0800200 +# define BOOT_ROM_CFG_TEMP_ADDR 0xF0800248 +# define BOOT_ROM_RAM_BASE_ADDR 0x00000000 +# define DMA2_CTRL_REG_BASE_ADDR 0xF0100000 +# define DMA2_PHY_REG_BASE_ADDR 0xF0101000 +# define USB_OTG_REG_BASE_ADDR 0xF0600000 +# define DDR_CTRL_REG_BASE_ADDR 0xFC400000 /* DDR phy base address */ +# define DDR_PHY_REG_BASE_ADDR 0xFC408000 +# define DDR_ARB_REG_BASE_ADDR 0xF0008000 +# define DMA2_ARB_REG_BASE_ADDR 0xF0108000 + +# define GPIO_CTRL_REG_BASE_ADDR 0xF0070000 +# define PMC_REG_BASE 0xF00A0000 + + + +# define UART2_REG_BASE_ADDR 0xF0300000 +# define SM_HOST_REG_BASE_ADDR 0xF0400000 +# define MS_HOST_REG_BASE_ADDR 0xF0410000 +# define SD_HOST1_REG_BASE_ADDR 0xF0420000 +# define SD_HOST2_REG_BASE_ADDR 0xF0500000 +# define SD_HOST3_REG_BASE_ADDR 0xF0510000 +# define SPI_CTRL_REG_BASE_ADDR 0xF0230000 +# define ETH_CTRL_REG_BASE_ADDR 0xFCD00000 +# define IDE_SRAM_BASE_ADDR 0xF07F0000 +# define IDE_CTRL_REG_BASE_ADDR 0xF0800000 +# define TIMER_REG_BASE_ADDR 0xF0040000 +# define WDT_REG_BASE_ADDR 0xF0050000 + +# define BOOT_LOADER_TMP_BUFFER 0x00001000 +# define CHIP_REMAP_REG_OFFSET 0x00000088 +# define CPE_RTC_BASE 0xF0060000 /* RTC controller */ +# define CPE_GPIO_BASE 0xF0070000 /* GPIO controller */ +# define INTERRUPT_BASE_ADDR 0xF0080000 /* Interrupt controller */ +# define CC_BASE_ADDR 0xF0090000 /* CC controller */ +# define IOADDR_GIC_REG_BASE 0xF1500000 /* GIC Interrupt */ +# define PAD_REG_BASE 0xF0030000 + +#define EFUSE_CTRL_REG_BASE_ADDR 0xFECE0000 +#define CRYPTO_REG_BASE_ADDR 0xFEC60000 +#define HASH_REG_BASE_ADDR 0xFEC80000 +#define RSA_REG_BASE_ADDR 0xFECA0000 + +#define BASE_CA9_TIMER 0xF9C00000 +#define BASE_PMU 0xFE000000 //SCU + + +#define CC_CPU2_CPU1_CMDBUF_REG1 0xFE0B9000 //CC_CPU2_CPU1_CMDBUF_REG1 to store uboot starting address +#define CC_CPU2_CPU1_CMDBUF_REG2 0xFE0B9004 //CC_CPU2_CPU1_CMDBUF_REG1 has used in core2_entry.s +#define NVT_CORE2_START CC_CPU2_CPU1_CMDBUF_REG2 //core2_entry.S 's entry point + +// Crypto controller register address +#define CRYPTO_CONFIG_REG (CRYPTO_REG_BASE_ADDR + 0x00) +#define CRYPTO_CONTROL_REG (CRYPTO_REG_BASE_ADDR + 0x04) +#define CRYPTO_OUT_DATA_REG (CRYPTO_REG_BASE_ADDR + 0x08) +#define CRYPTO_STATUS_REG (CRYPTO_REG_BASE_ADDR + 0x0C) + +#define CRYPTO_PIO_KEY0_REG (CRYPTO_REG_BASE_ADDR + 0x10) +#define CRYPTO_PIO_KEY1_REG (CRYPTO_REG_BASE_ADDR + 0x14) +#define CRYPTO_PIO_KEY2_REG (CRYPTO_REG_BASE_ADDR + 0x18) +#define CRYPTO_PIO_KEY3_REG (CRYPTO_REG_BASE_ADDR + 0x1C) + +#define CRYPTO_PIO_INPUT0_REG (CRYPTO_REG_BASE_ADDR + 0x30) +#define CRYPTO_PIO_INPUT1_REG (CRYPTO_REG_BASE_ADDR + 0x34) +#define CRYPTO_PIO_INPUT2_REG (CRYPTO_REG_BASE_ADDR + 0x38) +#define CRYPTO_PIO_INPUT3_REG (CRYPTO_REG_BASE_ADDR + 0x3C) +#define CRYPTO_PIO_OUTPUT0_REG (CRYPTO_REG_BASE_ADDR + 0x40) +#define CRYPTO_PIO_OUTPUT1_REG (CRYPTO_REG_BASE_ADDR + 0x44) +#define CRYPTO_PIO_OUTPUT2_REG (CRYPTO_REG_BASE_ADDR + 0x48) +#define CRYPTO_PIO_OUTPUT3_REG (CRYPTO_REG_BASE_ADDR + 0x4C) + +// Hash +#define HASH_CONFIG_REG (HASH_REG_BASE_ADDR + 0x00) +#define HASH_STATUS_REG (HASH_REG_BASE_ADDR + 0x0C) +#define HASH_OUTPUT_DATA1_REG (HASH_REG_BASE_ADDR + 0x70) +#define HASH_INPUT_DATA_REG (HASH_REG_BASE_ADDR + 0x90) + +//RSA +#define RSA_CONFIG_REG (RSA_REG_BASE_ADDR + 0x00) +#define RSA_CONTROL_REG (RSA_REG_BASE_ADDR + 0x04) +#define RSA_STATUS_REG (RSA_REG_BASE_ADDR + 0x0C) +#define RSA_KEY_N_REG (RSA_REG_BASE_ADDR + 0x10) +#define RSA_KEY_N_ADDR_REG (RSA_REG_BASE_ADDR + 0x14) +#define RSA_KEY_ED_REG (RSA_REG_BASE_ADDR + 0x18) +#define RSA_KEY_ED_ADDR_REG (RSA_REG_BASE_ADDR + 0x1C) +#define RSA_DATA_REG (RSA_REG_BASE_ADDR + 0x20) +#define RSA_DATA_ADDR_REG (RSA_REG_BASE_ADDR + 0x24) +#define RSA_CRC32_DEFAULT_REG_OFS (RSA_REG_BASE_ADDR + 0x30) +#define RSA_CRC32_POLY_REG_OFS (RSA_REG_BASE_ADDR + 0x34) +#define RSA_CRC32_OUTPUT_REG_OFS (RSA_REG_BASE_ADDR + 0x38) + +// Crypto +#define CRYPTO_CONFREG_SWRST (1<<0) +#define CRYPTO_CONFREG_CRYPTO_EN (1<<1) +#define CRYPTO_CONFREG_AES128 (2<<4) +#define CRYPTO_CONFREG_DECRYPT (1<<8) + +#define CRYPTO_PIO_DONE (1<<0) + + +// Hash +#define HASH_CONFREG_INITSTATE (1<<20) +#define HASH_CONFREG_SHA256 (1<<4) +#define HASH_CONFREG_ENABLE (1<<1) + +//RSA +#define RSA_ENABLE (1<<0) + +#define RSA_KEYWIDTH_256 (0x0<<1) +#define RSA_KEYWIDTH_512 (0x1<<1) +#define RSA_KEYWIDTH_1024 (0x2<<1) +#define RSA_KEYWIDTH_2048 (0x3<<1) +#define RSA_KEYWIDTH_4096 (0x4<<1) + +#define RSA_NORMAL_MODE (0x0<<4) +#define RSA_MODE_CRC_KEY_N (0x1<<4) +#define RSA_MODE_CRC_KEY_ED (0x2<<4) + + +#define RSA_TRANSFER_END (0x1<<0) +#define RSA_BUSY (0x1<<1) + +#define HASH_TRANSFER_END (0x1<<0) + + +// DDR phy duty configuration register bit +#define DDR_PHY_INCREASE_DUTY 0x40 // P < N +#define DDR_PHY_DECREASE_DUTY 0x00 // P > N +#define DDR_PHY_DUTY_TYPE_MSK 0x40 // bit mask for increase/decrease duty +#define DDR_PHY_CLK_ADJ_EN 0x80 + +// DDR phy duty calibration control register bit +#define DDR_PHY_CLK_OP_ONGOING 0x10 +#define DDR_PHY_CLK_OP_DONE 0x00 +#define DDR_PHY_DQS_OP_ONGOING 0x20 +#define DDR_PHY_DQS_OP_DONE 0x00 + + + +# define DDR_PHY_CAL_CLK_ADJ_OFS 0x000 /* 0x00 */ +# define DDR_PHY_CAL_CMD_ADJ_OFS 0x01C /* 0x1C */ +# define DDR_PHY_CAL_CTRL_OFS 0x150 /* 0x54 */ +# define DDR_PHY_CAL_CLK_CFG_OFS 0x154 /* 0x55 */ +# define DDR_PHY_CAL_DQS_CFG_OFS 0x158 /* 0x56 */ +# define DDR_PHY_CAL_DTY_CNT_LB_OFS 0x15C /* 0x57 duty cnt low byte */ +# define DDR_PHY_CAL_DTY_CNT_HB_OFS 0x160 /* 0x58 duty cnt high byte */ +# define DDR_PHY_CAL_DQS0_ADJ_OFS 0x1D0 /* 0x1D0 */ +# define DDR_PHY_CAL_DQ_ADJ_OFS 0x1D4 /* 0x1D0 */ + + +# define IDENTIFY_ERR 2 +# define MBR_ERR 3 +# define PBR_ERR 4 +# define READ512_ERR 5 +# define READ_ERR 7 +# define HPA_ERR 8 +# define CHECKSUM_ERR 9 + +# endif diff --git a/board/novatek/na51068/loader/Include/Driver/bus.h b/board/novatek/na51068/loader/Include/Driver/bus.h new file mode 100755 index 000000000000..ba8ca5cc6abf --- /dev/null +++ b/board/novatek/na51068/loader/Include/Driver/bus.h @@ -0,0 +1,37 @@ +#ifndef __BUS_H__ +#define __BUS_H__ + +/* FTAXIC030_Reg, size 256MB:8 512MB:9 1GB:A */ +//#ifdef DDR0_1600_SZ_4Gbx2 + unsigned int bus_arg[][2] ={ + {0x00000008, 0xFF800000},//default 0x10080000 + {0x00000010, 0x40090000},//ddr1, default 0x20080000, remap to 0x40000000, 512MB + {0x0000000C, 0x000A0000}, + {0x00000084, 0x60090000},//remap with PCIE + {0x00020084, 0x60090000}, + {0x00020088, 0x800A0000}, + {0x0002008C, 0xC0090000}, + {0x00020090, 0xE0070000}, + {0x000C0084, 0x60090000}, + {0x000C0088, 0x800A0000}, + {0x000C008C, 0xC0090000}, + {0x000C0090, 0xE0070000}, + {0x000E0084, 0x60090000}, + {0x000E0088, 0x800A0000}, + {0x000E008C, 0xC0090000}, + {0x000E0090, 0xE0070000}, + {0x00020000, 0x000A0000},//default 0x00080000 + {0x00020004, 0x40090000},//ddr1, default 0x20090000 + {0x00040000, 0x000A0000}, + {0x00060000, 0x000A0000}, + {0x00080000, 0x000A0000}, + {0x00080004, 0x40090000},//ddr1 + {0x000A0000, 0x000A0000}, + {0x000A0004, 0x40090000},//ddr1 + {0x000C0000, 0x000A0000}, + {0x000C0004, 0x40090000},//ddr1 + {0x000E0000, 0x000A0000}, + {0x000E0004, 0x40090000}};//ddr1 +//#endif //DDR0_SZ_4Gbx2 + +#endif \ No newline at end of file diff --git a/board/novatek/na51068/loader/Include/Driver/cache.h b/board/novatek/na51068/loader/Include/Driver/cache.h new file mode 100755 index 000000000000..e840ce007b2a --- /dev/null +++ b/board/novatek/na51068/loader/Include/Driver/cache.h @@ -0,0 +1,511 @@ +/** + CPU module driver. + + This file is the driver of CPU module. + + @file Cache.h + @ingroup mIHALCore + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2005. All rights reserved. +*/ + +#ifndef _CACHE_H +#define _CACHE_H +#include "constant.h" + + +/* + csselrcache level & type selection + + Detailed reference to [trm p4-177 CSSELR] +*/ +typedef enum _CACHE_LV_TYPE_ +{ + LEVEL_1_DCACHE = 0x0, //< Level 1 data cache + LEVEL_1_ICACHE, //< Level 1 instruction cache + LEVEL_2_DCACHE, //< Level 2 data cache +} CACHE_LV_TYPE; + + +/* + Values for Ctype fields in CLIDR +*/ + +typedef enum _CLIDR_CTYPE_ +{ + CLIDR_CTYPE_NO_CACHE = 0x0, + CLIDR_CTYPE_INSTRUCTION_ONLY= 0x1, + CLIDR_CTYPE_DATA_ONLY = 0x2, + CLIDR_CTYPE_INSTRUCTION_DATA= 0x3, + CLIDR_CTYPE_UNIFIED = 0x4, +}CLIDR_CTYPE; + + +//Instruction Synchronization Barrier. +#define _ISB() \ + __asm__ __volatile__("isb\n\t") + +//Data Synchronization Barrier +#define _DSB() \ + __asm__ __volatile__("dsb\n\t") + +//Data Memory Barrier +#define _DMB() \ + __asm__ __volatile__("dmb\n\t") + + +/* + ************************************************************************ + * Cache Size ID Register, CCSIDR (cp15, 1, c0, c0, 0) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |W|W|R|W|NumSets |Associativity |L | + * |T|B|A|A| | |S | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_DC_SETS 8 +#define S_DC_W 2 +#define S_DC_LS 5 + +#define _DC_SETS (1 << S_DC_SETS) /* 256 sets */ +#define _DC_W (1 << S_DC_W) /* 4 way */ +#define _DC_LS (1 << S_DC_LS) /* 32 byte line size */ + +#define S_IC_SETS 8 +#define S_IC_W 2 +#define S_IC_LS 5 + +#define _IC_SETS (1 << S_IC_SETS) /* 256 sets */ +#define _IC_W (1 << S_IC_W) /* 4 way */ +#define _IC_LS (1 << S_IC_LS) /* 32 byte line size */ + +#define S_DC_W_L2 4 /* L2 way shift*/ + +#define S_SC_SETS 9 +#define S_SC_W 3 +#define S_SC_LS 5 + +#define _SC_SETS (1 << S_SC_SETS) /* 512 sets */ +#define _SC_W (1 << S_SC_W) /* 8 way */ +#define _SC_LS (1 << S_SC_LS) /* 32 byte line size */ + + +#define S_CCSIDR_WT 31 +#define M_CCSIDR_WT (0x1 << S_CCSIDR_WT) /* Support write-through */ +#define S_CCSIDR_WB 30 +#define M_CCSIDR_WB (0x1 << S_CCSIDR_WB) /* Support write-back */ +#define S_CCSIDR_RA 29 +#define M_CCSIDR_RA (0x1 << S_CCSIDR_RA) /* Support read-allocation */ +#define S_CCSIDR_WA 28 +#define M_CCSIDR_WA (0x1 << S_CCSIDR_WA) /* Support write-allocation */ +#define S_CCSIDR_SETS 13 +#define M_CCSIDR_SETS (0x7fff << S_CCSIDR_SETS) /* Number of sets */ +#define S_CCSIDR_A 3 +#define M_CCSIDR_A (0x3ff << S_CCSIDR_A) /* Number of associatiovity */ +#define S_CCSIDR_LS 0 +#define M_CCSIDR_LS (0x7 << S_CCSIDR_LS) /* Cache line size */ + + +/* + * SCTLR_EL1/SCTLR_EL2/SCTLR_EL3 bits definitions + */ +#define CR_M (1 << 0) /* MMU enable */ +#define CR_A (1 << 1) /* Alignment abort enable */ +#define CR_C (1 << 2) /* Dcache enable */ +#define CR_SA (1 << 3) /* Stack Alignment Check Enable */ +#define CR_I (1 << 12) /* Icache enable */ +#define CR_WXN (1 << 19) /* Write Permision Imply XN */ +#define CR_EE (1 << 25) /* Exception (Big) Endian */ + +#define SCTLR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__( \ + "mrc p15, 0, %0, c1, c0, 0\n\t" \ + : "=r" (val)); \ + val; \ + }) + +#define LEVEL_1 (1 - 1) +#define LEVEL_2 (2 - 1) + +#define CCSIDR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__( \ + "mrc p15, 1, %0, c0, c0, 0\n\t" \ + : "=r" (val)); \ + val; \ + }) + + +#define sel_CSSELR(InD) \ + __asm__ __volatile__( \ + "mcr p15, 2, %0, c0, c0, 0\n\t" \ + : \ + : "r"(InD)); + +#define _ICACHE_INV_ALL() _ICIALLU() \ + _BPIALL() + +/* + ICIALLU, Instruction Cache Invalidate All to PoU + The ICIALLU characteristics are: + + Invalidate all instruction caches to PoU. If branch predictors are + architecturally visible, also flush branch predictors. + + This register is part of the Cache maintenance instructions functional group. + + Usage constraints + If EL3 is implemented and is using AArch32, this operation can be performed at the following + exception levels: +*/ +#define _ICIALLU() \ + __asm__ __volatile__("mcr p15, 0, %0, c7, c5, 0" : : "r" (0)); + +/* + Branch Predictor Invalidate All + The BPIALL characteristics are: + + Invalidate all entries from branch predictors. + This register is part of the Cache maintenance instructions functional group. + Usage constraints + If EL3 is implemented and is using AArch32, this operation can be performed at the following + exception levels: +*/ +#define _BPIALL() \ + __asm__ __volatile__("mcr p15, 0, %0, c7, c5, 6" : : "r" (0)); + + +/* + ICIMVAU : Instruction Cache line Invalidate by VA to PoU +*/ +#define _ICACHE_INV_MVAU(addr) _ICIMVAU(addr) +#define _ICIMVAU(addr) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7, c5, 1\n\t" \ + : \ + : "r"(addr)); + +#define _DCACHE_INV_MVAC(addr) _DCIMVAC(addr) +#define _DCIMVAC(addr) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7, c6, 1\n\t" \ + : \ + : "r"(addr)); + +//DCCMVAC Clean data cache line by VA to PoC +#define _DCACHE_WBACK_MVAC(addr) _DCCMVAC(addr) +#define _DCCMVAC(addr) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7, c10, 1\n\t" \ + : \ + : "r"(addr)); + +//_DCCIMVAC Clean and invalidate data cache line by VA to PoC +#define _DCACHE_WBACK_INV_MVAC(addr) _DCCIMVAC(addr) +#define _DCCIMVAC(addr) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7, c14, 1\n\t" \ + : \ + : "r"(addr)); + +//DCCISW Clean and invalidate data cache line by set/way +#define _DCCISW(way_set) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7 ,c14, 2\n\t" \ + : \ + : "r"(way_set)); + +//DCISW Invalidate data cache line by set/way +/* + The DCISW input value bit assignments are: + + |31......................4 | 3...1 | 0 | + Setway level rsv + bit[3..1] = 0x0 = Level 1 + bit[3..1] = 0x1 = Level 2 + ... +*/ +#define _DCISW(way_set) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7 ,c6, 2\n\t" \ + : \ + : "r"(way_set)); + + +//DCCSW Clean data cache line by set/way +/* + The DCCSW input value bit assignments are: + + |31......................4 | 3...1 | 0 | + Setway level rsv + bit[3..1] = 0x0 = Level 1 + bit[3..1] = 0x1 = Level 2 + ... +*/ +#define _DCCSW(way_set) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7 ,c10, 2\n\t" \ + : \ + : "r"(way_set)) + + + + +/* Cache dirty register () */ +#define read_CDSR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__(\ + "mrc p15, 0, %0, c7, c10, 6\n\t" \ + : "=r"(val) \ + );\ + val;\ + }) + +/* Get CPU ID */ +#define read_MPIDR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__(\ + "mrc p15, 0, %0, c0, c0, 5\n\t" \ + : "=r"(val) \ + );\ + val;\ + }) + +/* ead current CP15 Cache Level ID Register */ +#define read_CLIDR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__(\ + "mrc p15, 1, %0, c0, c0, 1\n\t" \ + : "=r"(val) \ + );\ + val;\ + }) + +#define change_property() \ + ({ \ + __asm__ __volatile__( \ + ".arch_extension sec\n\t" \ + "smc #123\n\t" \ + : \ + : \ + ); \ + }) + +#define CLEAR_MMU() \ + __asm__ __volatile__("mcr p15, 0, r0, c8, c7, 0\n\t"); + + +#define DISABLE_MMU() \ + ({ \ + unsigned long val = 0; \ + __asm__ __volatile__( \ + "mrc p15, 0, %0, c1, c0, 0\n\t" \ + "bic %0, %0, #0x1\n\t" \ + "mcr p15, 0, %0, c1, c0, 0\n\t" \ + : \ + : "r" (val) \ + ); \ + }) + +#define DISABLE_DCACHE() \ + ({ \ + unsigned long val = 0; \ + __asm__ __volatile__( \ + "mrc p15, 0, %0, c1, c0, 0\n\t" \ + "bic %0, %0, #0x4\n\t" \ + "mcr p15, 0, %0, c1, c0, 0\n\t" \ + : \ + : "r" (val) \ + ); \ + }) + +#define DISABLE_ICACHE() \ + ({ \ + unsigned long val = 0; \ + __asm__ __volatile__( \ + "mrc p15, 0, %0, c1, c0, 0\n\t" \ + "bic %0, %0, #0x1000\n\t" \ + "mcr p15, 0, %0, c1, c0, 0\n\t" \ + : \ + : "r" (val) \ + ); \ + }) + +#define SETUP_TTBR0(val) \ + ({ \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c2, c0, 0\n\t" \ + : \ + : "r" (val) \ + ); \ + }) +/* Cache dirty register () */ +#define read_CDSR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__(\ + "mrc p15, 0, %0, c7, c10, 6\n\t" \ + : "=r"(val) \ + );\ + val;\ + }) +/** + @addtogroup mIHALCore +*/ +//@{ + +/** + @name CPU clean invalidate all DCache + + Clean and invalidate all data cache + + @return void +*/ +//@{ +#define CPUCleanInvalidateDCacheAll() cpu_cleanInvalidateDCacheAll() ///< clean invalidate all DCache +//@} + +/** + @name CPU clean invalidate DCache + + Clean and invalidate data cache + Cache line associated with input address will be clean and invalidated + + @param[in] addr data address to be clean and invalidated + + @return void +*/ +//@{ +#define CPUCleanInvalidateDCache(addr) cpu_cleanInvalidateDCache(addr) ///< clean invalidate DCache +//@} + +/** + @name CPU clean invalidate DCache block + + Clean and invalidate data cache block + Cache line associated with input region will be clean and invalidated + + @param[in] m starting data address to be clean and invalidated + @param[in] n end data address to be clean and invalidated + + @return void +*/ +//@{ +#define CPUCleanInvalidateDCacheBlock(m,n) cpu_cleanInvalidateDCacheBlock(m, n) ///< clean invalidate DCache block +//@} + +/** + @name CPU invalidate DCache + + Invalidate data cache + Cache line associated with input address will be invalidated + + @param[in] addr data address to be invalidated + + @return void +*/ +//@{ +#define CPUInvalidateDCache(m) cpu_invalidateDCache(m) ///< invalidate DCache +//@} + +/** + @name CPU invalidate DCache block + + Invalidate data cache block + Cache line associated with input region will be invalidated + + @param[in] m starting data address to be invalidated + @param[in] n end data address to be invalidated + + @return void +*/ +//@{ +#define CPUInvalidateDCacheBlock(m,n) cpu_invalidateDCacheBlock(m,n) ///< invalidate DCache block +//@} + +/** + @name CPU clean DCache + + Clean data cache + Cache line associated with input address will be clean + + @param[in] addr data address to be clean + + @return void +*/ +//@{ +#define CPUCleanDCache(m) cpu_cleanDCache(m) ///< clean DCache +//@} + +/** + @name CPU clean DCache block + + Clean data cache block + Cache line associated with input region will be clean + + @param[in] m starting data address to be clean + @param[in] n end data address to be clean + + @return void +*/ +//@{ +#define CPUCleanDCacheBlock(m, n) cpu_cleanDCacheBlock(m, n) ///< clean DCache block +//@} + +/** + @name CPU invalidate all DCache + + Invalidate all data cache + + @return void +*/ +//@{ +#define CPUInvalidateDCacheAll() cpu_invalidateDCacheAll() ///< invalidate all DCache +//@} + + +extern BOOL CPUChkDCacheEnabled(UINT32 addr); +extern void CPUInvalidateICacheAll(void) __attribute__ ((section (".part1"))); +//extern void CPUInvalidateICacheAll(void) __attribute__ ((section (".part1"), far)); +//extern void CPUInvalidateICache(UINT32 addr); +extern void CPUInvalidateICacheBlock(UINT32 start, UINT32 end); + +#if 0 +extern void CPUInvalidateDCacheAll(void); +extern void CPUInvalidateDCache(UINT32 addr); +extern void CPUInvalidateDCacheBlock(UINT32 start, UINT32 end); +#endif +extern void cpu_invalidateDCacheBlock(UINT32 start, UINT32 end); +extern void cpu_invalidateDCache(UINT32 addr); +extern void cpu_invalidateDCacheAll(void)__attribute__ ((section (".part1"))); +extern void cpu_cleanDCache(UINT32 addr); +extern void cpu_cleanDCacheBlock(UINT32 start, UINT32 end); +extern void _cache_clean_d_cache_all(UINT32 level_type, BOOL DSB)__attribute__ ((section (".part1"))); +extern void _cache_invalidate_data_cache_all(UINT32 level_type, BOOL DSB)__attribute__ ((section (".part1"))); +extern void _cache_clean_invalidate_d_cache_All(UINT32 level_type, BOOL DSB)__attribute__ ((section (".part1"))); + + + +extern void cpu_cleanInvalidateDCacheAll(void)__attribute__ ((section (".part1"))); +//extern void cpu_cleanInvalidateDCacheAll(void)__attribute__ ((section (".part1"), far)); +extern void cpu_cleanInvalidateDCache(UINT32 addr); +extern void cpu_cleanInvalidateDCacheBlock(UINT32 start, UINT32 end); + +extern void CPUflushReadCache(UINT32 uiStartAddr, UINT32 uiLength); +extern void CPUflushWriteCache(UINT32 uiStartAddr, UINT32 uiLength); + + + +#endif + +//@} diff --git a/board/novatek/na51068/loader/Include/Driver/chipset.h b/board/novatek/na51068/loader/Include/Driver/chipset.h new file mode 100755 index 000000000000..6b2456070368 --- /dev/null +++ b/board/novatek/na51068/loader/Include/Driver/chipset.h @@ -0,0 +1,347 @@ +# ifndef _CHIPSET_H +# define _CHIPSET_H + +/* Copyright (c) 2005 Novatek Microelectronics Corporation + +COMMENT Module Name: +COMMENT Chipset.h + +COMMENT Abstract: +COMMENT Definitions for CPU Mode, Interrupt and Stack +COMMENT This is a shared header file for ASM and C +COMMENT For more information, please refer to http://www.arm.com/support/faqdev/1208.html +COMMENT Only support "# define" now + +COMMENT Notes: +COMMENT Copyright (c) 2005 Novatek Microelectronics Corporation. All Rights Reserved. + +COMMENT Revision History: +COMMENT 03/11/05: Created by Chris Hsu */ + +/* CPU */ + + +#ifndef KNL_SUPPORT_ISR_DUMP_INTERVAL +#define KNL_SUPPORT_ISR_DUMP_INTERVAL 0 +#endif + +#ifndef KNL_SUPPORT_TASK_DUMP_UTILIZATION +#define KNL_SUPPORT_TASK_DUMP_UTILIZATION 0 +#endif + + +# define Mode_USR 0x10 /* M[4:0] = 01010 */ +# define Mode_FIQ 0x11 /* M[4:0] = 10001 */ +# define Mode_IRQ 0x12 /* M[4:0] = 10010 */ +# define Mode_SVC 0x13 /* M[4:0] = 10011 */ +# define Mode_ABT 0x17 /* M[4:0] = 10111 */ +# define Mode_UNDEF 0x1B /* M[4:0] = 11011 */ +# define Mode_SYS 0x1F /* M[4:0] = 11111 */ +# define Mode_MSK 0x1F /* M[4:0] = 11111 */ +# define I_Bit 0x80 /* 7 6 5 4 3 2 1 0 */ +# define F_Bit 0x40 /* I F T M4 M3 M2 M1 M0 */ + +//# define INT_CTRL_ADDR (0xF0080000) +//# define TIMER_CTRL_ADDR (0xF0040000) +# define L2_MEM_BASE (0xf9C20000) +/* + ************************************************************************ + * System Control Register, SCTLR (cp15, 0, c1, c0, 0) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |R|T|A|T|N|0|E|V|1|U|F|U|W|1|H|1|0|R|V|I|Z|S|0|0|B|1|B|1|1|C|A|M| + * | |E|F|R|M| |E|E| | |I|W|X| |A| | | | | | |W| | | | |E| | | | | | + * | | |E|E|F| | | | | | |X|N| | | | | | | | | | | | | |N| | | | | | + * | | | | |I| | | | | | |N| | | | | | | | | | | | | | | | | | | | | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_SCTLR_TE 30 +#define M_SCTLR_TE (0x1 << S_SCTLR_TE) /* Thumb exception enable */ +#define S_SCTLR_AFE 29 +#define M_SCTLR_AFE (0x1 << S_SCTLR_AFE) /* Access flag enable */ +#define S_SCTLR_TRE 28 +#define M_SCTLR_TRE (0x1 << S_SCTLR_TRE) /* TXE remap enable */ +#define S_SCTLR_NMFI 27 +#define M_SCTLR_NMFI (0x1 << S_SCTLR_NMFI) /* None-maskable FIQ enbale (RO) */ +#define S_SCTLR_EE 25 +#define M_SCTLR_EE (0x1 << S_SCTLR_EE) /* Exception Endianness: big-endian */ +#define S_SCTLR_VE 24 +#define M_SCTLR_VE (0x1 << S_SCTLR_VE) /* Interrupt Vector Enable */ +#define S_SCTLR_FI 21 +#define M_SCTLR_FI (0x1 << S_SCTLR_FI) /* Fast interrupt configuraiont enable */ +#define S_SCTLR_UWXN 20 +#define M_SCTLR_UWXN (0x1 << S_SCTLR_UWXN) /* */ +#define S_SCTLR_WXN 19 +#define M_SCTLR_WXN (0x1 << S_SCTLR_WXN) +#define S_SCTLR_HA 17 +#define M_SCTLR_HA (0x1 << S_SCTLR_HA) /* Hardware access flag enable */ +#define S_SCTLR_RR 14 +#define M_SCTLR_RR (0x1 << S_SCTLR_RR) /* Round-robin select */ +#define S_SCTLR_V 13 +#define M_SCTLR_V (0x1 << S_SCTLR_V) /* Vector bits */ +#define S_SCTLR_I 12 +#define M_SCTLR_I (0x1 << S_SCTLR_I) /* Instruction cache enable */ +#define S_SCTLR_Z 11 +#define M_SCTLR_Z (0x1 << S_SCTLR_Z) /* Branch prediction enable */ +#define S_SCTLR_SW 10 +#define M_SCTLR_SW (0x1 << S_SCTLR_SW) /* SW and SWP enable */ +#define S_SCTLR_CP15BEN 5 +#define M_SCTLR_CP15BEN (0x1 << S_SCTLR_CP15BEN) /* CP15 barrier support */ +#define S_SCTLR_C 2 +#define M_SCTLR_C (0x1 << S_SCTLR_C) /* Data and Unidied cache enable */ +#define S_SCTLR_A 1 +#define M_SCTLR_A (0x1 << S_SCTLR_A) /* Alignment fault checking enable */ +#define S_SCTLR_M 0 +#define M_SCTLR_M (0x1 << S_SCTLR_M) /* PL1&0 stage MMU enable */ + +/************************************************************************ + * Auxiliary Control Register, ACTLR (cp15, 0, c1, c0, 1) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |UNP/SBZP |P|A|E|S|RAZ|W|L|L|F| + * | |a|l|X|M| | |1|2|W| + * | |r|l|C|P| |f| | | | + * | | |o|L| | |l|p|p| | + * | |o|c| | | | |r|r| | + * | |n| | | | |z|e|e| | + * | | |o| | | |e|f|f| | + * | | |n| | | |r| | | | + * | | |e| | | |o|e|e| | + * | | | | | | |s|n|n| | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_ACTLR_PAR_ON 9 +#define M_ACTLR_PAR_ON (0x1 << S_ACTLR_PAR_ON) /* Parity on */ +#define S_ACTLR_ALLOC_ONE 8 +#define M_ACTLR_ALLOC_ONE (0x1 << S_ACTLR_ALLOC_ONE) /* Alloc in one way */ +#define S_ACTLR_EXCL 7 +#define M_ACTLR_EXCL (0x1 << S_ACTLR_EXCL) /* Exclusive cache */ +#define S_ACTLR_SMP 6 +#define M_ACTLR_SMP (0x1 << S_ACTLR_SMP) /* SMP */ +#define S_ACTLR_W_FL_ZEROS 3 +#define M_ACTLR_W_FL_ZEROS (0x1 << S_ACTLR_W_FL_ZEROS) /* Write full line of zeros mode */ +#define S_ACTLR_L1_PERF_EN 2 +#define M_ACTLR_L1_PERF_EN (0x1 << S_ACTLR_L1_PERF_EN) /* Dside prefetch enable */ +#define S_ACTLR_L2_PERF_EN 1 +#define M_ACTLR_L2_PERF_EN (0x1 << S_ACTLR_L2_PERF_EN) /* L2 prefetch enable */ +#define S_ACTLR_FW 0 +#define M_ACTLR_FW (0x1 << S_ACTLR_FW) /* Cache and TLB maintenance boardcast */ + +#define L2_REG0_BASE (L2_MEM_BASE + 0x000) /* Cache ID and Cache Type */ +#define L2_REG1_BASE (L2_MEM_BASE + 0x100) /* Control */ +#define L2_REG2_BASE (L2_MEM_BASE + 0X200) /* Interrupt and Counter Control Registers */ +#define L2_REG7_BASE (L2_MEM_BASE + 0x700) /* Cache Maintenance Operations */ +#define L2_REG9_BASE (L2_MEM_BASE + 0x900) /* Cache Lockdown */ +#define L2_REG12_BASE (L2_MEM_BASE + 0xC00) /* Address Filtering */ +#define L2_REG15_BASE (L2_MEM_BASE + 0xF00) /* Debug, Prefetch and Power */ + +/** + * Cache ID and Cache Type + */ +#define L2_REG0_CACHE_ID (*((volatile unsigned long *)(L2_REG0_BASE + 0x00))) +#define L2_REG0_CACHE_TYPE (*((volatile unsigned long *)(L2_REG0_BASE + 0x04))) + +#define S_L2_REG0_CACHE_TYPE_DB (31) +#define M_L2_REG0_CACHE_TYPE_DB (0xf << S_L2_REG0_CACHE_TYPE_DB) +#define S_L2_REG0_CACHE_TYPE_CTYPE (25) +#define M_L2_REG0_CACHE_TYPE_CTYPE (0xf << S_L2_REG0_CACHE_TYPE_CTYPE) +#define S_L2_REG0_CACHE_TYPE_H (24) +#define M_L2_REG0_CACHE_TYPE_H (0x1 << S_L2_REG0_CACHE_TYPE_H) +#define S_L2_REG0_CACHE_TYPE_DWS (20) +#define M_L2_REG0_CACHE_TYPE_DWS (0x7 << S_L2_REG0_CACHE_TYPE_DWS) +#define S_L2_REG0_CACHE_TYPE_DA (18) +#define M_L2_REG0_CACHE_TYPE_DA (0x1 << S_L2_REG0_CACHE_TYPE_DA) +#define S_L2_REG0_CACHE_TYPE_DLS (12) +#define M_L2_REG0_CACHE_TYPE_DLS (0x3 << S_L2_REG0_CACHE_TYPE_DLS) +#define S_L2_REG0_CACHE_TYPE_IWS (8) +#define M_L2_REG0_CACHE_TYPE_IWS (0x7 << S_L2_REG0_CACHE_TYPE_IWS) +#define S_L2_REG0_CACHE_TYPE_IA (6) +#define M_L2_REG0_CACHE_TYPE_IA (0x1 << S_L2_REG0_CACHE_TYPE_IA) +#define S_L2_REG0_CACHE_TYPE_ILS (0) +#define M_L2_REG0_CACHE_TYPE_ILS (0x3 << S_L2_REG0_CACHE_TYPE_ILS) + +#define K_L2_REG0_CACHE_TYPE_DA_16WAY (1) +#define K_L2_REG0_CACHE_TYPE_DA_8WAY (0) + + +/** + * Control + */ +#define L2_REG1_CONTROL (*((volatile unsigned long *)(L2_REG1_BASE + 0x00))) +#define L2_REG1_AUX_CTRL (*((volatile unsigned long *)(L2_REG1_BASE + 0x04))) +#define L2_REG1_TAG_RAM_CTRL (*((volatile unsigned long *)(L2_REG1_BASE + 0x08))) +#define L2_REG1_DATA_RAM_CTRL (*((volatile unsigned long *)(L2_REG1_BASE + 0x0C))) + +#define S_L2_REG1_CONTROL_EN (0) +#define M_L2_REG1_CONTROL_EN (0x1 << S_L2_REG1_CONTROL_EN) + +#define K_L2_REG1_CONTROL_EN_ON 1 +#define K_L2_REG1_CONTROL_EN_OFF 0 + +#define S_L2_REG1_AUX_CTRL_BRESP (30) +#define M_L2_REG1_AUX_CTRL_BRESP (0x1 << S_L2_REG1_AUX_CTRL_BRESP) +#define S_L2_REG1_AUX_CTRL_INSTR_PREF (29) +#define M_L2_REG1_AUX_CTRL_INSTR_PREF (0x1 << S_L2_REG1_AUX_CTRL_INSTR_PREF) +#define S_L2_REG1_AUX_CTRL_DATA_PERF (28) +#define M_L2_REG1_AUX_CTRL_DATA_PERF (0x1 << S_L2_REG1_AUX_CTRL_DATA_PERF) +#define S_L2_REG1_AUX_CTRL_NS_INT_CTRL (27) +#define M_L2_REG1_AUX_CTRL_NS_INT_CTRL (0x1 << S_L2_REG1_AUX_CTRL_NS_INT_CTRL) +#define S_L2_REG1_AUX_CTRL_NS_LOCK_EN (26) +#define M_L2_REG1_AUX_CTRL_NS_LOCK_EN (0x1 << S_L2_REG1_AUX_CTRL_NS_LOCK_EN) +#define S_L2_REG1_AUX_CTRL_CACHE_POLICY (25) +#define M_L2_REG1_AUX_CTRL_CACHE_POLICY (0x1 << S_L2_REG1_AUX_CTRL_CACHE_POLICY) +#define S_L2_REG1_AUX_CTRL_FORCE_WA (23) +#define M_L2_REG1_AUX_CTRL_FORCE_WA (0x3 << S_L2_REG1_AUX_CTRL_FORCE_WA) +#define S_L2_REG1_AUX_CTRL_SHARED_OVERRIDE_EN (22) +#define M_L2_REG1_AUX_CTRL_SHARED_OVERRIDE_EN (0x1 << S_L2_REG1_AUX_CTRL_SHARED_OVERRIDE_EN) +#define S_L2_REG1_AUX_CTRL_PARITY_EN (21) +#define M_L2_REG1_AUX_CTRL_PARITY_EN (0x1 << S_L2_REG1_AUX_CTRL_PARITY_EN) +#define S_L2_REG1_AUX_CTRL_EVENT_MON_BUD_EN (20) +#define M_L2_REG1_AUX_CTRL_EVENT_MON_BUD_EN (0x1 << S_L2_REG1_AUX_CTRL_EVENT_MON_BUD_EN) +#define S_L2_REG1_AUX_CTRL_WAT_SIZE (17) +#define M_L2_REG1_AUX_CTRL_WAT_SIZE (0x7 << S_L2_REG1_AUX_CTRL_WAT_SIZE) +#define S_L2_REG1_AUX_CTRL_ASSOCIATIVITY (16) +#define M_L2_REG1_AUX_CTRL_ASSOCIATIVITY (0x1 << S_L2_REG1_AUX_CTRL_ASSOCIATIVITY) +#define S_L2_REG1_AUX_CTRL_SHARED_INV_EN (13) +#define M_L2_REG1_AUX_CTRL_SHARED_INV_EN (0x1 << S_L2_REG1_AUX_CTRL_SHARED_INV_EN) +#define S_L2_REG1_AUX_CTRL_EXCLUSIVE_CACHE_CONF (12) +#define M_L2_REG1_AUX_CTRL_EXCLUSIVE_CACHE_CONF (0x1 << S_L2_REG1_AUX_CTRL_EXCLUSIVE_CACHE_CONF) +#define S_L2_REG1_AUX_CTRL_STORE_BUD_DEV_LIMIT_EN (11) +#define M_L2_REG1_AUX_CTRL_STORE_BUD_DEV_LIMIT_EN (0x1 << S_L2_REG1_AUX_CTRL_STORE_BUD_DEV_LIMIT_EN) +#define S_L2_REG1_AUX_CTRL_HIGH_PRIO_SO_DEV_READS_EN (10) +#define M_L2_REG1_AUX_CTRL_HIGH_PRIO_SO_DEV_READS_EN (0x1 << S_L2_REG1_AUX_CTRL_HIGH_PRIO_SO_DEV_READS_EN) +#define S_L2_REG1_AUX_CTRL_FULL_LINE_Z_EN (0) +#define M_L2_REG1_AUX_CTRL_FULL_LINE_Z_EN (0x1 << S_L2_REG1_AUX_CTRL_FULL_LINE_Z_EN) + +#define reg0_cache_type_ofs 0x004 //reg0_cache_type +#define CACHE_CTRL_REG_OFS 0x100 +#define CACHE_AUX_CTRL_REG_OFS 0x104 + +#define CACHE_TAG_RAM_CTRL_OFS 0x108 +#define CACHE_DATA_RAM_CTRL_OFS 0x10C + +#define reg2_int_clear_ofs 0x220 //reg2_int_clear +#define reg7_cache_sync 0x730 //reg7_cache_sync +#define reg7_inv_way 0x77C //reg7_inv_way +#define CACHE_PREFETCH_REG_OFS 0xF60 + + +/** + * Interrupt and Counter Control Registers + */ +#define L2_REG2_EV_CNT_CTRL (*((volatile unsigned long *)(L2_REG2_BASE + 0x00))) +#define L2_REG2_EV_CNT1_CFG (*((volatile unsigned long *)(L2_REG2_BASE + 0x04))) +#define L2_REG2_EV_CNT0_CFG (*((volatile unsigned long *)(L2_REG2_BASE + 0x08))) +#define L2_REG2_EV_CNT1 (*((volatile unsigned long *)(L2_REG2_BASE + 0x0C))) +#define L2_REG2_EV_CNT0 (*((volatile unsigned long *)(L2_REG2_BASE + 0x10))) +#define L2_REG2_INT_MASK (*((volatile unsigned long *)(L2_REG2_BASE + 0x14))) +#define L2_REG2_INT_MASK_STATUS (*((volatile unsigned long *)(L2_REG2_BASE + 0x18))) +#define L2_REG2_INT_RAW_STATUS (*((volatile unsigned long *)(L2_REG2_BASE + 0x1C))) +#define L2_REG2_INT_CLEAR (*((volatile unsigned long *)(L2_REG2_BASE + 0x20))) + +#define S_L2_REG2_INT_DECERR (8) +#define M_L2_REG2_INT_DECERR (0x1 << S_L2_REG2_INT_DECERR) /* Decode error */ +#define S_L2_REG2_INT_SLVERR (7) +#define M_L2_REG2_INT_SLVERR (0x1 << S_L2_REG2_INT_SLVERR) /* Slave error */ +#define S_L2_REG2_INT_ERRRD (6) +#define M_L2_REG2_INT_ERRRD (0x1 << S_L2_REG2_INT_ERRRD) /* Data RAM read error */ +#define S_L2_REG2_INT_ERRRT (5) +#define M_L2_REG2_INT_ERRRT (0x1 << S_L2_REG2_INT_ERRRT) /* Tag RAM read error */ +#define S_L2_REG2_INT_ERRWD (4) +#define M_L2_REG2_INT_ERRWD (0x1 << S_L2_REG2_INT_ERRWD) /* Data RAM write error */ +#define S_L2_REG2_INT_ERRWT (3) +#define M_L2_REG2_INT_ERRWT (0x1 << S_L2_REG2_INT_ERRWT) /* Tag RAM write error */ +#define S_L2_REG2_INT_PARRD (2) +#define M_L2_REG2_INT_PARRD (0x1 << S_L2_REG2_INT_PARRD) /* Parity error on data RAM read */ +#define S_L2_REG2_INT_PARRT (1) +#define M_L2_REG2_INT_PARRT (0x1 << S_L2_REG2_INT_PARRT) /* Pariry error on tag RAM read */ +#define S_L2_REG2_INT_ECNTR (0) +#define M_L2_REG2_INT_ECNTR (0x1 << S_L2_REG2_INT_ECNTR) /* Event counter1/0 overflow increment */ + +/** + * Cache Maintenance Operations + */ +#define L2_REG7_CACHE_SYNC (*((volatile unsigned long *)(L2_REG7_BASE + 0x30))) +#define L2_REG7_INV_PA (*((volatile unsigned long *)(L2_REG7_BASE + 0x70))) +#define L2_REG7_INV_WAY (*((volatile unsigned long *)(L2_REG7_BASE + 0x7C))) +#define L2_REG7_CLEAN_PA (*((volatile unsigned long *)(L2_REG7_BASE + 0xB0))) +#define L2_REG7_CLEAN_INDEX (*((volatile unsigned long *)(L2_REG7_BASE + 0xB8))) +#define L2_REG7_CLEAN_WAY (*((volatile unsigned long *)(L2_REG7_BASE + 0xBC))) +#define L2_REG7_CLEAN_INV_PA (*((volatile unsigned long *)(L2_REG7_BASE + 0xF0))) +#define L2_REG7_CLEAN_INV_INDEX (*((volatile unsigned long *)(L2_REG7_BASE + 0xF8))) +#define L2_REG7_CLEAN_INV_WAY (*((volatile unsigned long *)(L2_REG7_BASE + 0xFC))) + + +#define K_L2_REG7_CACHE_SYNC_C (0x1) + +#define K_L2_REG7_INV_WAY_8WAY (0x00ff) +#define K_L2_REG7_INV_WAY_16WAY (0xffff) +#define K_L2_REG7_CLEAN_WAY_8WAY (0x00ff) +#define K_L2_REG7_CLEAN_WAY_16WAY (0xffff) +#define L2_INT_CLEAR_STATUS 0x1FF +/** + * Cache Lockdown + */ +#define L2_REG9_D_LOCKDOWN0 (*((volatile unsigned long *)(L2_REG9_BASE + 0x00))) +#define L2_REG9_I_LOCKDOWN0 (*((volatile unsigned long *)(L2_REG9_BASE + 0x04))) +#define L2_REG9_D_LOCKDOWN1 (*((volatile unsigned long *)(L2_REG9_BASE + 0x08))) +#define L2_REG9_I_LOCKDOWN1 (*((volatile unsigned long *)(L2_REG9_BASE + 0x0C))) +#define L2_REG9_D_LOCKDOWN2 (*((volatile unsigned long *)(L2_REG9_BASE + 0x10))) +#define L2_REG9_I_LOCKDOWN2 (*((volatile unsigned long *)(L2_REG9_BASE + 0x14))) +#define L2_REG9_D_LOCKDOWN3 (*((volatile unsigned long *)(L2_REG9_BASE + 0x18))) +#define L2_REG9_I_LOCKDOWN3 (*((volatile unsigned long *)(L2_REG9_BASE + 0x1C))) +#define L2_REG9_D_LOCKDOWN4 (*((volatile unsigned long *)(L2_REG9_BASE + 0x20))) +#define L2_REG9_I_LOCKDOWN4 (*((volatile unsigned long *)(L2_REG9_BASE + 0x24))) +#define L2_REG9_D_LOCKDOWN5 (*((volatile unsigned long *)(L2_REG9_BASE + 0x28))) +#define L2_REG9_I_LOCKDOWN5 (*((volatile unsigned long *)(L2_REG9_BASE + 0x2C))) +#define L2_REG9_D_LOCKDOWN6 (*((volatile unsigned long *)(L2_REG9_BASE + 0x30))) +#define L2_REG9_I_LOCKDOWN6 (*((volatile unsigned long *)(L2_REG9_BASE + 0x34))) +#define L2_REG9_D_LOCKDOWN7 (*((volatile unsigned long *)(L2_REG9_BASE + 0x38))) +#define L2_REG9_I_LOCKDOWN7 (*((volatile unsigned long *)(L2_REG9_BASE + 0x3C))) +#define L2_REG9_LOCK_LINE_EN (*((volatile unsigned long *)(L2_REG9_BASE + 0x50))) +#define L2_REG9_UNLOCK_WAY (*((volatile unsigned long *)(L2_REG9_BASE + 0x54))) + +/** + * Address Filtering + */ +#define L2_REG12_ADDR_FILTERING_START (*((volatile unsigned long *)(L2_REG12_BASE + 0x00))) +#define L2_REG12_ADDR_FILTERING_END (*((volatile unsigned long *)(L2_REG12_BASE + 0x04))) + +/** + * Debug, Prefetch and Power + */ +#define L2_REG15_DEBUG_CTRL (*((volatile unsigned long *)(L2_REG15_BASE + 0x40))) +#define L2_REG15_PREF_CTRL (*((volatile unsigned long *)(L2_REG15_BASE + 0x60))) +#define L2_REG15_POWER_CTRL (*((volatile unsigned long *)(L2_REG15_BASE + 0x80))) + +#define S_L2_REG15_DEBUG_CTRL_SPNIDEN (2) +#define M_L2_REG15_DEBUG_CTRL_SPNIDEN (0x1 << S_L2_REG15_DEBUG_CTRL_SPNIDEN) +#define S_L2_REG15_DEBUG_CTRL_DWB (1) +#define M_L2_REG15_DEBUG_CTRL_DWB (0x1 << S_L2_REG15_DEBUG_CTRL_DWB) +#define S_L2_REG15_DEBUG_CTRL_DCL (0) +#define M_L2_REG15_DEBUG_CTRL_DCL (0x1 << S_L2_REG15_DEBUG_CTRL_DCL) + +#define S_L2_REG15_PREF_CTRL_DL_FILL_EN (30) +#define M_L2_REG15_PREF_CTRL_DL_FILL_EN (0x1 << S_L2_REG15_PREF_CTRL_DL_FILL_EN) +#define S_L2_REG15_PREF_CTRL_INST_PREF_EN (29) +#define M_L2_REG15_PREF_CTRL_INST_PREF_EN (0x1 << S_L2_REG15_PREF_CTRL_INST_PREF_EN) +#define S_L2_REG15_PREF_CTRL_DATA_PREF_EN (28) +#define M_L2_REG15_PREF_CTRL_DATA_PREF_EN (0x1 << S_L2_REG15_PREF_CTRL_DATA_PREF_EN) +#define S_L2_REG15_PREF_CTRL_DL_WRAP_READ_DIS (27) +#define M_L2_REG15_PREF_CTRL_DL_WRAP_READ_DIS (0x1 << S_L2_REG15_PREF_CTRL_DL_WRAP_READ_DIS) +#define S_L2_REG15_PREF_CTRL_PREF_DROP_EN (24) +#define M_L2_REG15_PREF_CTRL_PREF_DROP_EN (0x1 << S_L2_REG15_PREF_CTRL_PREF_DROP+EN) +#define S_L2_REG15_PREF_CTRL_INCR_DL_FILL_EN (23) +#define M_L2_REG15_PREF_CTRL_INCR_DL_FILL_EN (0x1 << S_L2_REG15_PREF_CTRL_INCR_DL_FILL_EN) +#define S_L2_REG15_PREF_CTRL_NOT_SAME_ID_EXCLU_SEQ_EN (21) +#define M_L2_REG15_PREF_CTRL_NOT_SAME_ID_EXCLU_SEQ_EN (0x1 << S_L2_REG15_PREF_CTRL_NOT_SAME_ID_EXCLU_SEQ_EN) +#define S_L2_REG15_PREF_CTRL_PREF_OFF (0) +#define M_L2_REG15_PREF_CTRL_PREF_OFF (0xf << S_L2_REG15_PREF_CTRL_PREF_OFF) +# endif + diff --git a/board/novatek/na51068/loader/Include/Driver/crypto.h b/board/novatek/na51068/loader/Include/Driver/crypto.h new file mode 100755 index 000000000000..8f59d8893e56 --- /dev/null +++ b/board/novatek/na51068/loader/Include/Driver/crypto.h @@ -0,0 +1,97 @@ +/** + Header file for CC (Core Communicator) module. + + This file is the header file that define the API and data type + for CC module. + + @file CC.h + @ingroup mIDrvSys_CC + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2015. All rights reserved. +*/ + +#include "constant.h" + +#ifndef _CRYPTO_H +#define _CRYPTO_H + +#define ROM_AES_SIZE (16) +#define ROM_SHA_SIZE (32) // unit: byte +#define ROM_RSA_SIZE (256) // RSA-2048 +#define ROM_RSA_EKEY_SIZE (32) +#define ROM_RSA_CRC32_SIZE (4) +/** + Crypto engine crypto mode +*/ +typedef enum { + CRYPTO_RSV0, + CRYPTO_RSV1, + CRYPTO_AES, ///< Select Crypto mode AES + CRYPTO_MODE_NUM, +} CRYPTO_MODE; + +/** + Crypto engine crypto Operating mode +*/ +typedef enum { + CRYPTO_EBC = 0x00, ///< Select Crypto opmode EBC + CRYPTO_CBC, ///< Select Crypto opmode CBC + CRYPTO_OPMODE_NUM, +} CRYPTO_OPMODE; + +/** + Crypto engine encrypt or decrypt +*/ +typedef enum { + CRYPTO_ENCRYPT = 0x00, ///< Select Crypto engine encrypt + CRYPTO_DECRYPT, ///< Select Crypto engine decrypt + CRYPTO_TYPE_NUM, + +} CRYPTO_TYPE; + +typedef enum { + EFUSE_OTP_1ST_KEY_SET_FIELD = 0x0, // This if for secure boot + EFUSE_OTP_2ND_KEY_SET_FIELD, + EFUSE_OTP_3RD_KEY_SET_FIELD, + EFUSE_OTP_4TH_KEY_SET_FIELD, + + EFUSE_OTP_TOTAL_KEY_SET_FIELD, +} EFUSE_OTP_KEY_SET_FIELD; + +typedef struct _CRYPT_OP { + CRYPTO_OPMODE op_mode; ///< Operation Mode (now support ECB only) + CRYPTO_TYPE en_de_crypt; ///< Encrypt or decrypt (CRYPTO_ENCRYPT or CRYPTO_DECRYPT) + UINT32 src_addr; ///< Source address + UINT32 dst_addr; ///< Destination address + UINT32 length; ///< length +} CRYPT_OP; + +/** + Crypto engine check +*/ +typedef enum { + SECUREBOOT_SECURE_EN = 0x00, ///< Quary if secure enable or not + SECUREBOOT_DATA_AREA_ENCRYPT, ///< Quary if data area encrypt to cypher text or not + SECUREBOOT_SIGN_RSA, ///< Quary if Signature methed is RSA or not(AES) + SECUREBOOT_SIGN_RSA_CHK, ///< Quary if Signature hash checksum RSA key correct or not + SECUREBOOT_STATUS_NUM, + +} SECUREBOOT_STATUS; + +#define is_secure_enable() quary_secure_boot(SECUREBOOT_SECURE_EN) //For backward compatitable +#define is_data_area_encrypted() quary_secure_boot(SECUREBOOT_DATA_AREA_ENCRYPT) //For backward compatitable +#define is_signature_rsa() quary_secure_boot(SECUREBOOT_SIGN_RSA) //For backward compatitable +#define is_signature_aes() !quary_secure_boot(SECUREBOOT_SIGN_RSA) //For backward compatitable +BOOL quary_secure_boot(SECUREBOOT_STATUS scu_status); +UINT32 crypto_data_operation(EFUSE_OTP_KEY_SET_FIELD key_set, CRYPT_OP crypt_op_param); +void rsa_setConfig(UINT32 mode); +void rsa_setkey_n(UINT8* key, UINT32 len); +void rsa_setkey_ed(UINT8* key, UINT32 len); +INT32 rsa_pio_enable(UINT8* data, UINT32 len); +void rsa_getOutput(UINT8 * Output, UINT32 len); +void shahw( const unsigned char *input, int ilen, UINT32 output[8]); +void rsa_decrypt(UINT32 *input ,UINT32 input_len, UINT32 *pRSAN, UINT32 RSAN_len, UINT32 *pRSAED, UINT32 RSAED_len , UINT32 *pShaOut); +BOOL rsa_keycheck(UINT32 *input , BOOL efuseCheck); + +#endif diff --git a/board/novatek/na51068/loader/Include/Driver/mmc.h b/board/novatek/na51068/loader/Include/Driver/mmc.h new file mode 100755 index 000000000000..1c04929cb08a --- /dev/null +++ b/board/novatek/na51068/loader/Include/Driver/mmc.h @@ -0,0 +1,232 @@ +#ifndef __MMC_H__ +#define __MMC_H__ + +#define CONFIG_WITH_SDC_INIT + +#define SD_VERSION_SD 0x20000 +#define SD_VERSION_3 (SD_VERSION_SD | 0x300) +#define SD_VERSION_2 (SD_VERSION_SD | 0x20) +#define SD_VERSION_1_0 (SD_VERSION_SD | 0x10) +#define SD_VERSION_1_10 (SD_VERSION_SD | 0x1a) +#define MMC_VERSION_MMC 0x10000 +#define MMC_VERSION_UNKNOWN (MMC_VERSION_MMC) +#define MMC_VERSION_1_2 (MMC_VERSION_MMC | 0x12) +#define MMC_VERSION_1_4 (MMC_VERSION_MMC | 0x14) +#define MMC_VERSION_2_2 (MMC_VERSION_MMC | 0x22) +#define MMC_VERSION_3 (MMC_VERSION_MMC | 0x30) +#define MMC_VERSION_4 (MMC_VERSION_MMC | 0x40) + +#define MMC_MODE_HS 0x001 +#define MMC_MODE_HS_52MHz 0x010 +#define MMC_MODE_4BIT 0x100 +#define MMC_MODE_8BIT 0x200 +#define MMC_MODE_SPI 0x400 +#define MMC_MODE_HC 0x800 + +#define MMC_MODE_MASK_WIDTH_BITS (MMC_MODE_4BIT | MMC_MODE_8BIT) +#define MMC_MODE_WIDTH_BITS_SHIFT 8 + +#define SD_DATA_4BIT 0x00040000 + +#define IS_SD(x) (x->version & SD_VERSION_SD) + +#define MMC_DATA_READ 1 +#define MMC_DATA_WRITE 2 + +#define NO_CARD_ERR -16 /* No SD/MMC card inserted */ +#define UNUSABLE_ERR -17 /* Unusable Card */ +#define COMM_ERR -18 /* Communications Error */ +#define TIMEOUT -19 + +#define MMC_CMD_GO_IDLE_STATE 0 +#define MMC_CMD_SEND_OP_COND 1 +#define MMC_CMD_ALL_SEND_CID 2 +#define MMC_CMD_SET_RELATIVE_ADDR 3 +#define MMC_CMD_SET_DSR 4 +#define MMC_CMD_SWITCH 6 +#define MMC_CMD_SELECT_CARD 7 +#define MMC_CMD_SEND_EXT_CSD 8 +#define MMC_CMD_SEND_CSD 9 +#define MMC_CMD_SEND_CID 10 +#define MMC_CMD_STOP_TRANSMISSION 12 +#define MMC_CMD_SEND_STATUS 13 +#define MMC_CMD_SET_BLOCKLEN 16 +#define MMC_CMD_READ_SINGLE_BLOCK 17 +#define MMC_CMD_READ_MULTIPLE_BLOCK 18 +#define MMC_CMD_WRITE_SINGLE_BLOCK 24 +#define MMC_CMD_WRITE_MULTIPLE_BLOCK 25 +#define MMC_CMD_ERASE_GROUP_START 35 +#define MMC_CMD_ERASE_GROUP_END 36 +#define MMC_CMD_ERASE 38 +#define MMC_CMD_APP_CMD 55 +#define MMC_CMD_SPI_READ_OCR 58 +#define MMC_CMD_SPI_CRC_ON_OFF 59 + +#define SD_CMD_SEND_RELATIVE_ADDR 3 +#define SD_CMD_SWITCH_FUNC 6 +#define SD_CMD_SEND_IF_COND 8 + +#define SD_CMD_APP_SET_BUS_WIDTH 6 +#define SD_CMD_ERASE_WR_BLK_START 32 +#define SD_CMD_ERASE_WR_BLK_END 33 +#define SD_CMD_APP_SEND_OP_COND 41 +#define SD_CMD_APP_SEND_SCR 51 + +/* SCR definitions in different words */ +#define SD_HIGHSPEED_BUSY 0x00020000 +#define SD_HIGHSPEED_SUPPORTED 0x00020000 + +#define MMC_HS_TIMING 0x00000100 +#define MMC_HS_52MHZ 0x2 + +#define OCR_BUSY 0x80000000 +#define OCR_HCS 0x40000000 +#define OCR_VOLTAGE_MASK 0x007FFF80 +#define OCR_ACCESS_MODE 0x60000000 + +#define SECURE_ERASE 0x80000000 + +#define MMC_STATUS_MASK (~0x0206BF7F) +#define MMC_STATUS_RDY_FOR_DATA (1 << 8) +#define MMC_STATUS_CURR_STATE (0xf << 9) +#define MMC_STATUS_ERROR (1 << 19) + +#define MMC_STATE_PRG (7 << 9) + +#if 0 +#define MMC_VDD_165_195 0x00000080 /* VDD voltage 1.65 - 1.95 */ +#define MMC_VDD_20_21 0x00000100 /* VDD voltage 2.0 ~ 2.1 */ +#define MMC_VDD_21_22 0x00000200 /* VDD voltage 2.1 ~ 2.2 */ +#define MMC_VDD_22_23 0x00000400 /* VDD voltage 2.2 ~ 2.3 */ +#define MMC_VDD_23_24 0x00000800 /* VDD voltage 2.3 ~ 2.4 */ +#define MMC_VDD_24_25 0x00001000 /* VDD voltage 2.4 ~ 2.5 */ +#define MMC_VDD_25_26 0x00002000 /* VDD voltage 2.5 ~ 2.6 */ +#define MMC_VDD_26_27 0x00004000 /* VDD voltage 2.6 ~ 2.7 */ +#define MMC_VDD_27_28 0x00008000 /* VDD voltage 2.7 ~ 2.8 */ +#define MMC_VDD_28_29 0x00010000 /* VDD voltage 2.8 ~ 2.9 */ +#endif +#define MMC_VDD_29_30 0x00020000 /* VDD voltage 2.9 ~ 3.0 */ +#define MMC_VDD_30_31 0x00040000 /* VDD voltage 3.0 ~ 3.1 */ +#define MMC_VDD_31_32 0x00080000 /* VDD voltage 3.1 ~ 3.2 */ +#define MMC_VDD_32_33 0x00100000 /* VDD voltage 3.2 ~ 3.3 */ +#define MMC_VDD_33_34 0x00200000 /* VDD voltage 3.3 ~ 3.4 */ +#define MMC_VDD_34_35 0x00400000 /* VDD voltage 3.4 ~ 3.5 */ +#define MMC_VDD_35_36 0x00800000 /* VDD voltage 3.5 ~ 3.6 */ + /* Change the command set */ +#define MMC_SWITCH_MODE_CMD_SET 0x00 +/* Set bits in EXT_CSD byte addressed by index which are 1 in value field */ +#define MMC_SWITCH_MODE_SET_BITS 0x01 + /* Clear bits in EXT_CSD byte addressed by index, which are 1 in value field */ +#define MMC_SWITCH_MODE_CLEAR_BITS 0x02 +/* Set target byte to value */ +#define MMC_SWITCH_MODE_WRITE_BYTE 0x03 + +#define SD_SWITCH_CHECK 0 +#define SD_SWITCH_SWITCH 1 + +/* + * EXT_CSD fields + */ + +#define EXT_CSD_PARTITIONING_SUPPORT 160 /* RO */ +#define EXT_CSD_ERASE_GROUP_DEF 175 /* R/W */ +#define EXT_CSD_PART_CONF 179 /* R/W */ +#define EXT_CSD_BUS_WIDTH 183 /* R/W */ +#define EXT_CSD_HS_TIMING 185 /* R/W */ +#define EXT_CSD_REV 192 /* RO */ +#define EXT_CSD_CARD_TYPE 196 /* RO */ +#define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */ +#define EXT_CSD_HC_ERASE_GRP_SIZE 224 /* RO */ +#define EXT_CSD_BOOT_MULT 226 /* RO */ + +/* + * EXT_CSD field definitions + */ + +#define EXT_CSD_CMD_SET_NORMAL (1 << 0) +#define EXT_CSD_CMD_SET_SECURE (1 << 1) +#define EXT_CSD_CMD_SET_CPSECURE (1 << 2) + +#define EXT_CSD_CARD_TYPE_26 (1 << 0) /* Card can run at 26MHz */ +#define EXT_CSD_CARD_TYPE_52 (1 << 1) /* Card can run at 52MHz */ + +#define EXT_CSD_BUS_WIDTH_1 0 /* Card is in 1 bit mode */ +#define EXT_CSD_BUS_WIDTH_4 1 /* Card is in 4 bit mode */ +#define EXT_CSD_BUS_WIDTH_8 2 /* Card is in 8 bit mode */ + +#define R1_ILLEGAL_COMMAND (1 << 22) +#define R1_APP_CMD (1 << 5) + +#define MMC_RSP_PRESENT (1 << 0) +#define MMC_RSP_136 (1 << 1) /* 136 bit response */ +#define MMC_RSP_CRC (1 << 2) /* expect valid crc */ +#define MMC_RSP_BUSY (1 << 3) /* card may send busy */ +#define MMC_RSP_OPCODE (1 << 4) /* response contains opcode */ + +#define MMC_RSP_NONE (0) +#define MMC_RSP_R1 (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE) +#define MMC_RSP_R1b (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE| MMC_RSP_BUSY) +#define MMC_RSP_R2 (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC) +#define MMC_RSP_R3 (MMC_RSP_PRESENT) +#define MMC_RSP_R4 (MMC_RSP_PRESENT) +#define MMC_RSP_R5 (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE) +#define MMC_RSP_R6 (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE) +#define MMC_RSP_R7 (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE) + +#define MMCPART_NOAVAILABLE (0xff) +#define PART_ACCESS_MASK (0x7) +#define PART_SUPPORT (0x1) + +struct mmc_cmd { + uint cmdidx; + uint resp_type; + uint cmdarg; + uint response[4]; +}; + +struct mmc_data { + char *paddr; + uint flags; + uint blocks; + uint blocksize; +}; + +struct mmc { + void *priv; + uint voltages; + uint version; + uint has_init; + uint f_min; + uint f_max; + int high_capacity; + uint bus_width; + uint clock; + uint card_caps; + uint host_caps; + uint ocr; + uint scr[2]; + //uint csd[4]; + //uint cid[4]; + uint rca; + uint tran_speed; + uint read_bl_len; + uint write_bl_len; + uint erase_grp_size; + u32 capacity; + int (*send_cmd)(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data); +#ifdef CONFIG_WITH_SDC_INIT + void (*set_ios)(struct mmc *mmc); + int (*init)(struct mmc *mmc); +#endif + uint b_max; +}; + +int mmc_init(struct mmc *mmc); +struct mmc *get_mmc(void); +int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd, + struct mmc_data *data); + +void sdhci_set_ios(struct mmc *mmc); +int sdhci_init(struct mmc *mmc); + +#endif /* __MMC_H__ */ diff --git a/board/novatek/na51068/loader/Include/Driver/mmc_api.h b/board/novatek/na51068/loader/Include/Driver/mmc_api.h new file mode 100755 index 000000000000..c15f6fbbee82 --- /dev/null +++ b/board/novatek/na51068/loader/Include/Driver/mmc_api.h @@ -0,0 +1,13 @@ +#ifndef __MMC_API_H__ +#define __MMC_API_H__ + +int add_sdhci (void); +int mmc_bread(unsigned long start, unsigned long blkcnt, unsigned long dst); +//int mmc_loader(unsigned int load_addr, UINT8 * p_run_filename, UINT8 * p_update_filename, UINT32 * uiLoaderFunc); + +INT32 card_open(void); +void card_close(void); + + + +#endif /* __MMC_API_H__ */ diff --git a/board/novatek/na51068/loader/Include/Driver/nand.h b/board/novatek/na51068/loader/Include/Driver/nand.h new file mode 100755 index 000000000000..bb1d2112482c --- /dev/null +++ b/board/novatek/na51068/loader/Include/Driver/nand.h @@ -0,0 +1,118 @@ +/** + nand module driver. + + This file is the driver of storage module. + + @file nand.h + @ingroup mIDrvStorage + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _NAND_DEF_ +#define _NAND_DEF_ + +#include "board.h" + +#define _SNAND_WINBOND_ID (0xEF) +#define _SNAND_ESMT_ID (0xC8) +#define _SNAND_GD_ID (0xC8) +#define _SNAND_MICRON_ID (0x2C) +#define _SNAND_ATO_ID (0x9B) +#define _SNAND_ETRON_ID (0xD5) +#define _SNAND_MXIC_ID (0xC2) +#define _SNAND_TOSHIBA_ID (0x98) + + + +#define _GD_SPI_NAND_1Gb (0xF1) +#define _MXIC_SPI_NAND_1Gb (0x12) + +/** + SPI NAND flash QE(quid enable) identify type + +*/ +//@{ +typedef enum { + SPINAND_QE_NONE = 0x0, ///< SPI NAND flash not with QE bit(only by quad command) + SPINAND_QE_FEATURE2_B0H_BIT0_TYPE1, ///< SPI NAND flash QE bit locate at feature field(0xB0H) bit[0] +} SPINAND_QE_TYPE; + + +/** + SPI NAND flash twp plane identify type + +*/ +//@{ +typedef enum { + SPINAND_2_PLANE_NONE = 0x0, ///< SPI NAND flash not 2 plane type + SPINAND_2_PLANE_COLUMN_ADDR_BIT_12_AS_PLANE_SEL,///< SPI NAND flash use column addr bit[12] as plane select +} SPINAND_PLANE_TYPE; + + + +/** + SPI flash identification structure + + @note For SPIFLASH_IDENTIFY_CB +*/ +typedef struct { + UINT32 pagesize; + UINT32 erasesize; + UINT32 qe_opt; + UINT32 plane_opt; +} SPINAND_IDENTIFY, *PSPINAND_IDENTIFY; + +/** + SPIFLASH identify callback + + Callback routine to be invoked after JEDEC ID is read from spi flash. + Callback routine should check if read ID is supported. + + @note STRG_EXT_CMD_SPI_IDENTIFY_CB + + @param[in] first parameter (JEDEC) manufacturer ID read from spi flash + @param[in] second parameter (JEDEC) type ID read from spi flash + @param[in] third parameter (JEDEC) capacity ID read from spi flash + @param[out] forth parameter flash identification returned to spi flash driver + + @return + - @b TRUE: call back will handle identification of this flash. and PSPI_IDENTIFY will fill identifed information + - @b FALSE: input ID is NOT supported/identified by call back +*/ +typedef BOOL (*SPINAND_IDENTIFY_CB)(UINT32, UINT32, PSPINAND_IDENTIFY); + + + + +/** + * struct nand_flash_dev - NAND Flash Device ID Structure + * @mfr_id: manufecturer ID part of the full chip ID array (refers the same + * memory address as @id[0]) + * @dev_id: the device ID (the second byte of the full chip ID array) + * @pagesize: size of the NAND page in bytes; if 0, then the real page size (as + * well as the eraseblock size) is determined from the extended NAND + * chip ID array) + * @erasesize: NAND block size + * @qe_opt: Quad enable type(please reference document to select this option) + * @plane_opt: 2 plane nand option(please reference document to select this option) + * @options: stores various chip bit options + * + */ +typedef struct _nand_flash_dev { + UINT32 mfr_id; + UINT32 dev_id; + UINT32 pagesize; + UINT32 erasesize; + UINT32 qe_opt; + UINT32 plane_opt; +} NAND_FLASH_DEV, *PNAND_FLASH_DEV; + +#define SPI_ID_NAND(mfrid, devid, pagesz, erasesz, opts, plane_opt_type)\ + { .mfr_id =(mfrid), .dev_id = (devid), .pagesize = (pagesz), \ + .erasesize = (erasesz), .qe_opt = (opts), .plane_opt=(plane_opt_type) } + +extern BOOL nand_identify(UINT32 uiMfgID, UINT32 uiTypeID, PSPINAND_IDENTIFY pIdentify); + +#endif diff --git a/board/novatek/na51068/loader/Include/Driver/nor.h b/board/novatek/na51068/loader/Include/Driver/nor.h new file mode 100755 index 000000000000..c8ae1a44c77b --- /dev/null +++ b/board/novatek/na51068/loader/Include/Driver/nor.h @@ -0,0 +1,51 @@ +/** + nand module driver. + + This file is the driver of storage module. + + @file nand.h + @ingroup mIDrvStorage + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _NOR_DEF_ +#define _NOR_DEF_ + +#include "board.h" +#include "StorageDef.h" + + +/** + * struct nand_flash_dev - NAND Flash Device ID Structure + * @name: a human-readable name of the NAND chip + * @dev_id: the device ID (the second byte of the full chip ID array) + * @mfr_id: manufecturer ID part of the full chip ID array (refers the same + * memory address as @id[0]) + * @dev_id: device ID part of the full chip ID array (refers the same memory + * address as @id[1]) + * @pagesize: size of the NAND page in bytes; if 0, then the real page size (as + * well as the eraseblock size) is determined from the extended NAND + * chip ID array) + * @chipsize: total chip size in MiB + * @erasesize: eraseblock size in bytes (determined from the extended ID if 0) + * @options: stores various chip bit options + * + */ +typedef struct _nor_flash_dev { + UINT32 mfr_id; + UINT32 dev_id; + UINT32 capacity_id; + UINT32 bDualRead; + UINT32 uiQuadReadType; + UINT32 uiFlashSize; +} NOR_FLASH_DEV, *PNOR_FLASH_DEV; + +#define SPI_ID_NOR(mfrid, devid, capacityid, dual_read, quad_read_type, flash_size)\ + { .mfr_id =(mfrid), .dev_id = (devid), .capacity_id =(capacityid), .bDualRead=(dual_read), \ + .uiQuadReadType=(quad_read_type), .uiFlashSize=(flash_size) } + + +extern BOOL nor_identify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacityID, PSPI_IDENTIFY pIdentify); +#endif diff --git a/board/novatek/na51068/loader/Include/Driver/pll.h b/board/novatek/na51068/loader/Include/Driver/pll.h new file mode 100755 index 000000000000..ff65b52bed23 --- /dev/null +++ b/board/novatek/na51068/loader/Include/Driver/pll.h @@ -0,0 +1,24 @@ +#ifndef __PLL_H__ +#define __PLL_H__ + + /* + CPU 1200=0x027fff 0x01aaaa + DSP 800=0x855555 0x640000 + codec 400=0x42aaaa 0x3a5555 + ddr0 466=0x4daaaa 0x42aaaa + ddr1 466=0x42aaaa 0x42aaaa + */ +#ifdef MODE0//CPU 800, DSP 600, codec 350, ddr0 1600, ddr1 1600 + unsigned int PLL[5] = {0x01aaaa, 0x640000, 0x3a5555, 0x42aaaa, 0x42aaaa}; +#endif +#ifdef MODE1 + unsigned int PLL[5] = {0x01aaaa, 0x640000, 0x3a5555, 0x42aaaa, 0x42aaaa}; +#endif +#ifdef MODE2 + unsigned int PLL[5] = {0x01aaaa, 0x640000, 0x3a5555, 0x42aaaa, 0x42aaaa}; +#endif +#ifdef MODE3 + unsigned int PLL[5] = {0x01aaaa, 0x640000, 0x3a5555, 0x42aaaa, 0x42aaaa}; +#endif + +#endif \ No newline at end of file diff --git a/board/novatek/na51068/loader/Include/Driver/rcw_macro.h b/board/novatek/na51068/loader/Include/Driver/rcw_macro.h new file mode 100755 index 000000000000..032ea838a57c --- /dev/null +++ b/board/novatek/na51068/loader/Include/Driver/rcw_macro.h @@ -0,0 +1,205 @@ +/* + Driver Register Cache Word (RCW) operation header file. + + Driver Register Cache Word (RCW) operation header file. + The macros defined in this header file is used to simply the register + bit field read and write. By adapting this way of register access, + it shall provide more error-proof and more readable way to write + drivers. It also does register access in load/store way which allow + one to accurately control the number of counts the register read and + write is proceeded from code writing. + + @file RCWMacro.h + @ingroup mIDriver + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2010. All rights reserved. +*/ + +#ifndef __ASM_ARCH_NVT_IVOT_RCW_MACRO_H +#define __ASM_ARCH_NVT_IVOT_RCW_MACRO_H +#include "constant.h" + +/** + @addtogroup mIDriver +*/ +//@{ + +/* + Translate DRAM address to non-cacheable address. + + Translate DRAM address to non-cacheable address. + + @param[in] addr DRAM address + + @return non-cacheable DRAM address +*/ +#define dma_getNonCacheAddr(addr) ((((UINT32)(addr))<0x60000000UL)?((UINT32)(addr)+0x60000000UL):(UINT32)(addr)) + + +#define dma_getPhyAddr(addr) ((((UINT32)(addr))>=0x60000000UL)?((UINT32)(addr)-0x60000000UL):(UINT32)(addr)) + +/** + Translate DRAM address to cacheable address. + + Translate DRAM address to cacheable address. + + @param[in] addr DRAM address + + @return Cacheable DRAM address +*/ +#define dma_getCacheAddr(addr) ((((UINT32)(addr))>=0x60000000UL)?((UINT32)(addr)-0x60000000UL):(UINT32)(addr)) + + +// +// Register word value type +// +// The size in bits of this type should match the RCW type +#define REGVALUE UINT32 + +#define UBITFIELD unsigned int /* Unsigned bit field */ +#define BITFIELD signed int /* Signed bit field */ + + +#define FALSE 0 +#define TRUE 1 + +/** + @name Assert macros +*/ +//@{ +#define ASSERT_CONCAT_(a, b) a##b +#define ASSERT_CONCAT(a, b) ASSERT_CONCAT_(a, b) + +#if defined(__COUNTER__) + +#define STATIC_ASSERT(expr) \ +enum { ASSERT_CONCAT(FAILED_STATIC_ASSERT_, __COUNTER__) = 1/(expr) } + +#else + +// This might cause compile error when writing STATIC_ASSERT at the same line +// in two (or more) files and one file include another one. +#define STATIC_ASSERT(expr) \ +enum { ASSERT_CONCAT(FAILED_STATIC_ASSERT_, __LINE__) = 1/(expr) } + +#endif + +#ifndef OUTW +#define OUTW(addr,value) (*(REGVALUE volatile *)(addr) = (REGVALUE)(value)) +#endif + +#ifndef INW +#define INW(addr) (*(REGVALUE volatile *)(addr)) +#endif + +#define INREG8(x) (*((volatile UINT8*)x)) +#define OUTREG8(x, y) (*((volatile UINT8*)x) = (y)) +#define SETREG8(x, y) OUTREG8(x, INREG8(x) | (y)) +#define CLRREG8(x, y) OUTREG8(x, INREG8(x) & ~(y)) + +#define OUTREG32(x, y) (*((volatile UINT32*)(x)) = (y)) ///< Write 32bits IO register +#define INREG32(addr) (*(UINT32 volatile *)(addr)) + +#define SETREG32(x, y) OUTREG32((x), INREG32(x) | (y)) +#define CLRREG32(x, y) OUTREG32((x), INREG32(x) & ~(y)) +#define SETCLRREG32(x, y, z) OUTREG32((x), (INREG32(x) & ~(z)) | (y)) + +// +// Macros for Register Cache Word (RCW) type definition +// +// Each RCW type should be exactly the same size with REGVALUE type +// For example, to declare a Register Cache Word type: +// +// #define rcwname_OFS 0x00 /* the name of RCW corresponding register address offset +// should be in specific format with "_OFS" appended */ +// REGDEF_BEGIN(rcwname) +// REGDEF_BIT(field1, 8) /* declare field1 as 8 bits width */ +// REGDEF_BIT(field2, 8) /* declare field1 as 8 bits width */ +// REGDEF_BIT(, 16) /* pad reserved (not-used) bits to fill RCW type same as REGVALUE size */ +// REGDEF_END(rcwname) +// +// Register Cache Word type defintion header +#define REGDEF_BEGIN(name) \ +typedef union \ +{ \ + REGVALUE reg; \ + struct \ + { + +// Register Cache Word bit defintion +#define REGDEF_BIT(field, bits) \ + UBITFIELD field : bits; + +// Register Cache Word type defintion trailer +#define REGDEF_END(name) \ + } bit; \ +} T_##name; \ +STATIC_ASSERT(sizeof(T_##name) == sizeof(REGVALUE)); + +// Macro to define register offset +#define REGDEF_OFFSET(name, ofs) static const UINT32 name##_OFS=(ofs); + +// +// Macros for prerequisite stuff initialization for Register Cache Word +// operations +// +// Macro to set register base address for current module +// One must call this macro somewhere to set register I/O base address for +// current module, either globally or locally before any RCW operations is +// invoked +// What this macro set is only effective in current C file +#define REGDEF_SETIOBASE(base) static const UINT32 _REGIOBASE=(base) + +// Macro to set register repeat group offset address in byte +// This macro is optional and only used where register with repeat group exist, +// only one repeat group is allowed in one file +// If registers with repeat group exist, then one only have to define the RCW type +// for the first group, respective group of registers can be accessed through +// RCW_LD2, RCW_ST2, RCW_LD2OF macros +// What this macro set is only effective in current C file +#define REGDEF_SETGRPOFS(grpofs) static const UINT32 _REGGRPOFS=(grpofs) + +// +// Macros for Register Cache Word (RCW) operations +// +// These RCW operations are most likely to be used inside C functions +// It is not recommended to use RCW_DEF(RCW) in global scope which +// declare RCW as global variable +// RCW_LD/RCW_ST/RCW_LDOF pair is for normal single register access while +// RCW_LD2/RCW_ST2/RCW_LD2OF pair is for repeat group register access +// Beware that the RCW_LD/RCW_ST/RCW_LDOF and RCW_LD2/RCW_ST2/RCW_LD2OF +// must not be mixed used. e.g. use RCW_LD then RCW_ST2 or use RCW_LD2 then RCW_ST +// +// Register Cache Word declaration +#define RCW_DEF(RCW) T##_##RCW t##RCW +// Register Cache Word read from I/O +#define RCW_LD(RCW) t##RCW.reg = INW(_REGIOBASE+RCW##_OFS) +// Register Cache Word repeat from I/O for group read +#define RCW_LD2(RCW, grpidx) t##RCW.reg = INW(_REGIOBASE+RCW##_OFS+(grpidx)*_REGGRPOFS) +// Register Cache Word bit reference +#define RCW_OF(RCW) t##RCW.bit +// Register Cache Word reference +#define RCW_VAL(RCW) t##RCW.reg +// Register Cache Word write to I/O +#define RCW_ST(RCW) OUTW(_REGIOBASE+RCW##_OFS, t##RCW.reg) +// Register Cache Word write to I/O for repeat group +#define RCW_ST2(RCW, grpidx) OUTW(_REGIOBASE+RCW##_OFS+(grpidx)*_REGGRPOFS, t##RCW.reg) +// Register Cache Word read and reference to register cache word bit +// !!!need to check for compiler if support for this syntax +#define RCW_LDOF(RCW) ((T##_##RCW)(RCW_LD(RCW))).bit +// Register Cache Word read and reference to register cache word bit for repeat group +// !!!need to check for compiler if support for this syntax +#define RCW_LD2OF(RCW, grpidx) ((T##_##RCW)(RCW_LD2(RCW, grpidx))).bit + +#define rcw_get_phy_addr(addr) ((addr) & 0x1FFFFFFF) + + /** + Macro to generate dummy element for enum type to expand enum size to word (4 bytes) + */ + //@{ + #define ENUM_DUMMY4WORD(name) E_##name = 0x10000000 + //@} +//@} + +#endif /* __ASM_ARCH_NVT_IVOT_RCW_MACRO_H */ diff --git a/board/novatek/na51068/loader/Include/Driver/regdef.h b/board/novatek/na51068/loader/Include/Driver/regdef.h new file mode 100755 index 000000000000..4805c4c0d506 --- /dev/null +++ b/board/novatek/na51068/loader/Include/Driver/regdef.h @@ -0,0 +1,311 @@ +/* + * MIPS register definitions, originally from: + * + * include/asm-mips/regdefs.h + * + * This file is subject to the terms and conditions of the GNU General Public + * License, Version 2. See the file "COPYING" in the main directory of this + * archive for more details. + * + * Copyright (C) 1994, 1995 by Ralf Baechle + */ + +/* + * Symbolic register names for 32 bit ABI + */ + +# define Mode_USR 0x10 /* M[4:0] = 01010 */ +# define Mode_FIQ 0x11 /* M[4:0] = 10001 */ +# define Mode_IRQ 0x12 /* M[4:0] = 10010 */ +# define Mode_SVC 0x13 /* M[4:0] = 10011 */ +# define Mode_MON 0x16 /* M[4:0] = 10110 */ +# define Mode_ABT 0x17 /* M[4:0] = 10111 */ +# define Mode_UNDEF 0x1B /* M[4:0] = 11011 */ +# define Mode_SYS 0x1F /* M[4:0] = 11111 */ +# define Mode_MSK 0x1F /* M[4:0] = 11111 */ +# define I_Bit 0x80 /* 7 6 5 4 3 2 1 0 */ +# define F_Bit 0x40 /* I F T M4 M3 M2 M1 M0 */ + +/* + ************************************************************************ + * Cache Size ID Register, CCSIDR (cp15, 1, c0, c0, 0) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |W|W|R|W|NumSets |Associativity |L | + * |T|B|A|A| | |S | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_CCSIDR_WT 31 +#define M_CCSIDR_WT (0x1 << S_CCSIDR_WT) /* Support write-through */ +#define S_CCSIDR_WB 30 +#define M_CCSIDR_WB (0x1 << S_CCSIDR_WB) /* Support write-back */ +#define S_CCSIDR_RA 29 +#define M_CCSIDR_RA (0x1 << S_CCSIDR_RA) /* Support read-allocation */ +#define S_CCSIDR_WA 28 +#define M_CCSIDR_WA (0x1 << S_CCSIDR_WA) /* Support write-allocation */ +#define S_CCSIDR_SETS 13 +#define M_CCSIDR_SETS (0x7fff << S_CCSIDR_SETS) /* Number of sets */ +#define S_CCSIDR_A 3 +#define M_CCSIDR_A (0x3ff << S_CCSIDR_A) /* Number of associatiovity */ +#define S_CCSIDR_LS 0 +#define M_CCSIDR_LS (0x7 << S_CCSIDR_LS) /* Cache line size */ + +/* + ************************************************************************ + * Cache Level ID Register, CLIDR (cp15, 1, c0, c0, 1) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |0|0|LoUU |LoC |LoUIS|CT7 |CT6 |CT5 |CT4 |CT3 |CT2 |CT1 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_CLIDR_LoUU 27 +#define M_CLIDR_LoUU (0x7 << S_CLIDR_LoUU) +#define S_CLIDR_LoC 24 +#define M_CLIDR_LoC (0x7 << S_CLIDR_LoC) /* Cache cohernecy level */ +#define S_CLIDR_LoUIS 21 +#define M_CLIDR_LoUIS (0x7 << S_CLIDR_LoUIS) +#define S_CLIDR_Ctype7 18 +#define M_CLIDR_Ctype7 (0x7 << S_CLIDR_Ctype7) /* Cache type of level 7 cache */ +#define S_CLIDR_Ctype6 15 +#define M_CLIDR_Ctype6 (0x7 << S_CLIDR_Ctype6) /* Cache type of level 6 cache */ +#define S_CLIDR_Ctype5 12 +#define M_CLIDR_Ctype5 (0x7 << S_CLIDR_Ctype5) /* Cache type of level 5 cache */ +#define S_CLIDR_Ctype4 9 +#define M_CLIDR_Ctype4 (0x7 << S_CLIDR_Ctype4) /* Cache type of level 4 cache */ +#define S_CLIDR_Ctype3 6 +#define M_CLIDR_Ctype3 (0x7 << S_CLIDR_Ctype3) /* Cache type of level 3 cache */ +#define S_CLIDR_Ctype2 3 +#define M_CLIDR_Ctype2 (0x7 << S_CLIDR_Ctype2) /* Cache type of level 2 cache */ +#define S_CLIDR_Ctype1 0 +#define M_CLIDR_Ctype1 (0x7 << S_CLIDR_Ctype1) /* Cache type of level 1 cache */ + +#define K_CLIDR_Ctype_NO 0 /* No cache */ +#define K_CLIDR_Ctype_IC 1 /* Instruction cache only */ +#define K_CLIDR_Ctype_DC 2 /* Data cache only */ +#define K_CLIDR_Ctype_ID 3 /* Seperate instruction and data caches, Harvard cache */ +#define K_CLIDR_Ctype_U 4 /* Unified cache, von Neumann cacge */ + +/* + ************************************************************************ + * Cache Size Selection Register, CCSELR (cp15, 2, c0, c0, 0) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |Reserved |Level|I| + * | | |n| + * | | |D| + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_CCSELR_Level 1 +#define M_CCSELR_Level (0x7 << S_CCSELR_Level) /* Cache level */ +#define S_CCSELR_InD 0 +#define M_CCSELR_InD (0x1 << S_CCSELR_InD) /* I$ or D$ */ + +/* + ************************************************************************ + * System Control Register, SCTLR (cp15, 0, c1, c0, 0) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |R|T|A|T|N|0|E|V|1|U|F|U|W|1|H|1|0|R|V|I|Z|S|0|0|B|1|B|1|1|C|A|M| + * | |E|F|R|M| |E|E| | |I|W|X| |A| | | | | | |W| | | | |E| | | | | | + * | | |E|E|F| | | | | | |X|N| | | | | | | | | | | | | |N| | | | | | + * | | | | |I| | | | | | |N| | | | | | | | | | | | | | | | | | | | | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_SCTLR_TE 30 +#define M_SCTLR_TE (0x1 << S_SCTLR_TE) /* Thumb exception enable */ +#define S_SCTLR_AFE 29 +#define M_SCTLR_AFE (0x1 << S_SCTLR_AFE) /* Access flag enable */ +#define S_SCTLR_TRE 28 +#define M_SCTLR_TRE (0x1 << S_SCTLR_TRE) /* TXE remap enable */ +#define S_SCTLR_NMFI 27 +#define M_SCTLR_NMFI (0x1 << S_SCTLR_NMFI) /* None-maskable FIQ enbale (RO) */ +#define S_SCTLR_EE 25 +#define M_SCTLR_EE (0x1 << S_SCTLR_EE) /* Exception Endianness: big-endian */ +#define S_SCTLR_VE 24 +#define M_SCTLR_VE (0x1 << S_SCTLR_VE) /* Interrupt Vector Enable */ +#define S_SCTLR_FI 21 +#define M_SCTLR_FI (0x1 << S_SCTLR_FI) /* Fast interrupt configuraiont enable */ +#define S_SCTLR_UWXN 20 +#define M_SCTLR_UWXN (0x1 << S_SCTLR_UWXN) /* */ +#define S_SCTLR_WXN 19 +#define M_SCTLR_WXN (0x1 << S_SCTLR_WXN) +#define S_SCTLR_HA 17 +#define M_SCTLR_HA (0x1 << S_SCTLR_HA) /* Hardware access flag enable */ +#define S_SCTLR_RR 14 +#define M_SCTLR_RR (0x1 << S_SCTLR_RR) /* Round-robin select */ +#define S_SCTLR_V 13 +#define M_SCTLR_V (0x1 << S_SCTLR_V) /* Vector bits */ +#define S_SCTLR_I 12 +#define M_SCTLR_I (0x1 << S_SCTLR_I) /* Instruction cache enable */ +#define S_SCTLR_Z 11 +#define M_SCTLR_Z (0x1 << S_SCTLR_Z) /* Branch prediction enable */ +#define S_SCTLR_SW 10 +#define M_SCTLR_SW (0x1 << S_SCTLR_SW) /* SW and SWP enable */ +#define S_SCTLR_CP15BEN 5 +#define M_SCTLR_CP15BEN (0x1 << S_SCTLR_CP15BEN) /* CP15 barrier support */ +#define S_SCTLR_C 2 +#define M_SCTLR_C (0x1 << S_SCTLR_C) /* Data and Unidied cache enable */ +#define S_SCTLR_A 1 +#define M_SCTLR_A (0x1 << S_SCTLR_A) /* Alignment fault checking enable */ +#define S_SCTLR_M 0 +#define M_SCTLR_M (0x1 << S_SCTLR_M) /* PL1&0 stage MMU enable */ + +/************************************************************************ + * Auxiliary Control Register, ACTLR (cp15, 0, c1, c0, 1) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |UNP/SBZP |P|A|E|S|RAZ|W|L|L|F| + * | |a|l|X|M| | |1|2|W| + * | |r|l|C|P| |f| | | | + * | | |o|L| | |l|p|p| | + * | |o|c| | | | |r|r| | + * | |n| | | | |z|e|e| | + * | | |o| | | |e|f|f| | + * | | |n| | | |r| | | | + * | | |e| | | |o|e|e| | + * | | | | | | |s|n|n| | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_ACTLR_PAR_ON 9 +#define M_ACTLR_PAR_ON (0x1 << S_ACTLR_PAR_ON) /* Parity on */ +#define S_ACTLR_ALLOC_ONE 8 +#define M_ACTLR_ALLOC_ONE (0x1 << S_ACTLR_ALLOC_ONE) /* Alloc in one way */ +#define S_ACTLR_EXCL 7 +#define M_ACTLR_EXCL (0x1 << S_ACTLR_EXCL) /* Exclusive cache */ +#define S_ACTLR_SMP 6 +#define M_ACTLR_SMP (0x1 << S_ACTLR_SMP) /* SMP */ +#define S_ACTLR_W_FL_ZEROS 3 +#define M_ACTLR_W_FL_ZEROS (0x1 << S_ACTLR_W_FL_ZEROS) /* Write full line of zeros mode */ +#define S_ACTLR_L1_PERF_EN 2 +#define M_ACTLR_L1_PERF_EN (0x1 << S_ACTLR_L1_PERF_EN) /* Dside prefetch enable */ +#define S_ACTLR_L2_PERF_EN 1 +#define M_ACTLR_L2_PERF_EN (0x1 << S_ACTLR_L2_PERF_EN) /* L2 prefetch enable */ +#define S_ACTLR_FW 0 +#define M_ACTLR_FW (0x1 << S_ACTLR_FW) /* Cache and TLB maintenance boardcast */ + +#if 0 +#define zero $0 /* wired zero */ +#define AT $1 /* assembler temp - uppercase because of ".set at" */ +#define v0 $2 /* return value */ +#define v1 $3 +#define a0 $4 /* argument registers */ +#define a1 $5 +#define a2 $6 +#define a3 $7 +#define t0 $8 /* caller saved */ +#define t1 $9 +#define t2 $10 +#define t3 $11 +#define t4 $12 +#define t5 $13 +#define t6 $14 +#define t7 $15 +#define s0 $16 /* callee saved */ +#define s1 $17 +#define s2 $18 +#define s3 $19 +#define s4 $20 +#define s5 $21 +#define s6 $22 +#define s7 $23 +#define t8 $24 /* caller saved */ +#define t9 $25 +#define jp $25 /* PIC jump register */ +#define k0 $26 /* kernel scratch */ +#define k1 $27 +#define gp $28 /* global pointer */ +#define sp $29 /* stack pointer */ +#define fp $30 /* frame pointer */ +#define s8 $30 /* same like fp! */ +#define ra $31 /* return address */ + +#define C0_Count $9 +#define C0_Compare $11 +#define C0_Status $12 +#define C0_Cause $13 +#define C0_EPC $14 +#define C0_Config $16 +#define C0_WatchLo $18 +#define C0_WatchHi $19 + +#define S_ConfigK0 0 /* Kseg0 coherency algorithm (R/W) */ +#define M_ConfigK0 (0x7 << S_ConfigK0) + +#define S_StatusERL 2 /* Denotes error level (R/W) */ +#define M_StatusERL (0x1 << S_StatusERL) + + +#define S_StatusKSU 3 /* Two-bit current mode (R/W) */ +#define M_StatusKSU (0x3 << S_StatusKSU) + +#define S_StatusIE 0 /* Enables interrupts (R/W) */ +#define M_StatusIE (0x1 << S_StatusIE) + +#define S_StatusBEV 22 /* Enable Boot Exception Vectors (R/W) */ +#define M_StatusBEV (0x1 << S_StatusBEV) + + +/* + * Cache attribute values in the C field of EntryLo and the + * K0 field of Config + */ +#define K_CacheAttrCWTnWA 0 /* Cacheable, write-thru, no write allocate */ +#define K_CacheAttrCWTWA 1 /* Cacheable, write-thru, write allocate */ +#define K_CacheAttrU 2 /* Uncached */ +#define K_CacheAttrC 3 /* Cacheable */ +#define K_CacheAttrCN 3 /* Cacheable, non-coherent */ +#define K_CacheAttrCCE 4 /* Cacheable, coherent, exclusive */ +#define K_CacheAttrCCS 5 /* Cacheable, coherent, shared */ +#define K_CacheAttrCCU 6 /* Cacheable, coherent, update */ +#define K_CacheAttrUA 7 /* Uncached accelerated */ + +#define S_EntryLo0PFN S_EntryLoPFN +#define M_EntryLo0PFN M_EntryLoPFN + + +#define R_C0_SRSCtl 12 +#define R_C0_SelSRSCtl 2 + +#define S_SRSCtlHSS 26 /* Highest shadow set (R) */ +#define W_SRSCtlHSS 4 +#define M_SRSCtlHSS (0xf << S_SRSCtlHSS) +#define S_SRSCtlEICSS 18 /* Exception shadow set (R/W) */ +#define W_SRSCtlEICSS 4 +#define M_SRSCtlEICSS (0xf << S_SRSCtlEICSS) +#define S_SRSCtlESS 12 /* Exception shadow set (R/W) */ +#define W_SRSCtlESS 4 +#define M_SRSCtlESS (0xf << S_SRSCtlESS) +#define S_SRSCtlPSS 6 /* Previous shadow set (R/W) */ +#define W_SRSCtlPSS 4 +#define M_SRSCtlPSS (0xf << S_SRSCtlPSS) +#define S_SRSCtlCSS 0 +#define W_SRSCtlCSS 4 +#define M_SRSCtlCSS (0xf << S_SRSCtlCSS) /* Current Shadow set (R/W) */ + +#define M_SRSCtl0Fields 0xc3c30c30 +#define M_SRSCtlRFields 0x3c3c000f + + +#define KUSEG_MSK 0x80000000 +#define KSEG_MSK 0xE0000000 +#define KUSEGBASE 0x00000000 +#define KSEG0BASE 0x80000000 +#define KSEG1BASE 0xA0000000 +#define KSSEGBASE 0xC0000000 +#define KSEG3BASE 0xE0000000 +#endif diff --git a/board/novatek/na51068/loader/Include/Driver/top_ctrl.h b/board/novatek/na51068/loader/Include/Driver/top_ctrl.h new file mode 100755 index 000000000000..df2a8c90778b --- /dev/null +++ b/board/novatek/na51068/loader/Include/Driver/top_ctrl.h @@ -0,0 +1,160 @@ +#ifndef __TOP_CTRL_H +#define __TOP_CTRL_H + +#include "board.h" +#define TOP_CTRL_REG_BASE_ADDR REG_TOP_BASE + +#define TOP_CTRL_BOOTSRC (TOP_CTRL_REG_BASE_ADDR + 0x00) + +#define TOP_CTRL_PIN_MUX_CTRL_REG0 (TOP_CTRL_REG_BASE_ADDR + 0x20) +#define TOP_CTRL_PIN_MUX_CTRL_REG1 (TOP_CTRL_REG_BASE_ADDR + 0x24) + +#define TOP_CTRL_PIN_MUX_CTRL_REG2 (TOP_CTRL_REG_BASE_ADDR + 0x08) +#define TOP_CTRL_PIN_MUX_CTRL_REG4 (TOP_CTRL_REG_BASE_ADDR + 0x10) +#define TOP_CTRL_PIN_MUX_CTRL_REG5 (TOP_CTRL_REG_BASE_ADDR + 0x14) +#define TOP_CTRL_PIN_MUX_CTRL_REG8 (TOP_CTRL_REG_BASE_ADDR + 0x20) +#define TOP_CTRL_PIN_MUX_CTRL_REG9 (TOP_CTRL_REG_BASE_ADDR + 0x24) +#define TOP_CTRL_PIN_MUX_CTRL_REG6 (TOP_CTRL_REG_BASE_ADDR + 0x44) + +#define TOP_CTRL_ETH0_MUX_REG0 (TOP_CTRL_REG_BASE_ADDR + 0x70) +#define TOP_CTRL_ETH0_MUX_REG1 (TOP_CTRL_REG_BASE_ADDR + 0x74) +#define TOP_CTRL_ETH_MUX_SEL (TOP_CTRL_REG_BASE_ADDR + 0xC8) + + + +#define TOP_CTRL_CGPIO_MUX_REG0 (TOP_CTRL_REG_BASE_ADDR + 0xA0) +#define TOP_CTRL_CGPIO_MUX_REG1 (TOP_CTRL_REG_BASE_ADDR + 0xA4) +#define TOP_CTRL_PGPIO_MUX_REG0 (TOP_CTRL_REG_BASE_ADDR + 0xA8) +#define TOP_CTRL_PGPIO_MUX_REG1 (TOP_CTRL_REG_BASE_ADDR + 0xAC) +#define TOP_CTRL_SGPIO_MUX_REG0 (TOP_CTRL_REG_BASE_ADDR + 0xB0) +#define TOP_CTRL_LGPIO_MUX_REG0 (TOP_CTRL_REG_BASE_ADDR + 0xB8) +#define TOP_CTRL_DGPIO_MUX_REG0 (TOP_CTRL_REG_BASE_ADDR + 0xD0) +#define TOP_CTRL_VERSION_REG (TOP_CTRL_REG_BASE_ADDR + 0xF0) + + +#define TOP_CTRL_SRAM_RESET_REG0 (TOP_CTRL_REG_BASE_ADDR + 0x1000) + +#define TOP_CTRL_BS_SPI_NAND_2K_PAGE (1<<3) +#define TOP_CTRL_BS_SPI_NAND_4K_PAGE (0) + +#define TOP_BOOTSRC_MSK 0x07 + +#define TOP_GETROMVER() INREG32(0xE0007FFC) +// +// ROM code version number +// +#define TOP_ROMVER_A 0x00000103 +#define TOP_ROMVER_B 0x00000106 + +//#define PINMUX_NAND_ACT (1<<0) +//#define PINMUX_SPI_ACT (1<<1) +//#define PINMUX_NAND_EXIST (1<<12) +//#define PINMUX_SPI_EXIST (1<<13) +#define PINMUX_SDIO_EXIST (1<<14) +#define PINMUX_EXTROM_EXIST (1<<16) +#define PINMUX_SDIO3_EXIST (1<<17) +#define PINMUX_SDIO3_MUX_1 (0) +#define PINMUX_ICE_EXIST (1<<20) +#define PINMUX_SDIO3_MUX_2 (1<<24) +#define PINMUX_SDIO3_4BITS (0) +#define PINMUX_SDIO3_8BITS (1<<31) +#define PINMUX_ROM_SRC (1<<28) + +//need to check (0xF0010018) +#define PINMUX_ETH_RMII (1<<12)//((1<<16) | (1<<8)) SP clk need ?? +#define PINMUX_ETH_REFCLK_INPUT (1<<15) //RMII refclk input mode + +#define PINMUX_ETH_EXTPHY_CLK_EN (1<<28) + + +//Shut down SRAM SDIO1 mask +#define TOP_SRAM_SD_SDIO1 0x20000000 +//Shut down SRAM RSA mask +#define TOP_SRAM_SD_RSA 0x02000000 + +// For storage pinmux +#define TOP_REG0_SDIO_PINMUX (PINMUX_SDIO_EXIST) +#define TOP_REG0_SDIO3_PINMUX (PINMUX_SDIO3_EXIST | PINMUX_SDIO3_MUX_1) +#define TOP_REG0_EMMC_PINMUX (PINMUX_SDIO3_EXIST ) +//#define TOP_REG1_NAND_PINMUX (PINMUX_NAND_EXIST) +#define TOP_REG0_SPI_PINMUX ((2<<28)|(2<<24)|(2<<20)) +#define TOP_REG0_SPI_MASK ((7<<28)|(7<<24)|(7<<20)) +#define TOP_REG0_BMC_PINMUX (PINMUX_EXTROM_EXIST) +#define TOP_REG0_ICE_PINMUX (PINMUX_ICE_EXIST) +#define TOP_REG1_SPI_PINMUX ((2<<12)|(2<<8)|(2<<4)|(2<<0)) +#define TOP_REG1_SPI_MASK ((7<<12)|(7<<8)|(7<<4)|(7<<0)) +#if 0 +#if ((USE_FPGA_EMULATION == 1) || (USE_BMC_EMULATION == 1)) +#define TOP_CGPIO0_SDIO_PINMUX (0xFFFFFFFF & ~((0x3F<<11))) +#define TOP_CGPIO0_SDIO3_PINMUX (0xFFFFFFFF & ~((0xF<<28)|(0xF<<18))) +#define TOP_CGPIO1_SDIO3_PINMUX (0) +#define TOP_CGPIO0_EMMC_PINMUX (0xFFFFFFFF & ~((0xFF<<0)|(1<<8)|(1<<9)|(1<<10))) +#define TOP_CGPIO0_EMMC_4BIT_PINMUX (0xFFFFFFFF & ~((0xF<<0)|(1<<8)|(1<<9)|(1<<10)|(0xF<<18))) +#define TOP_CGPIO0_NAND_PINMUX (0xFFFFFFFF & ~((0xFFFF<<0)|(0xF<<18))) +//#define TOP_CGPIO0_SPI_PINMUX (0xFFFFFFFF & ~((0xF<<0)|(1<<8)|(1<<10))) +#define TOP_SGPIO0_BMC_PINMUX (0xFFFFFFFF & ~((1<<4)|(1<<6)|(1<<7)|(1<<8))) +#else +#define TOP_CGPIO0_SDIO_PINMUX (0xFFFFFFFF & ~(0x3F << 11)) +#define TOP_CGPIO0_SDIO3_PINMUX (0xFFFFFFFF & ~(0xF<<28)) +#define TOP_CGPIO1_SDIO3_PINMUX (0) +#define TOP_CGPIO0_EMMC_PINMUX (0xFFFFFFFF & ~((0xFF<<0)|(1<<8)|(1<<9)|(1<<10))) +#define TOP_CGPIO0_EMMC_4BIT_PINMUX (0xFFFFFFFF & ~((0xF<<0)|(1<<8)|(1<<9)|(1<<10))) +#define TOP_CGPIO0_NAND_PINMUX (0xFFFFFFFF & ~((0xFFFF<<0))) +//#define TOP_CGPIO0_SPI_PINMUX (0xFFFFFFFF & ~((0xF<<0)|(1<<8)|(1<<10))) +#endif +#endif +//Below need to check again +#define TOP_LGPIO0_ETH_MII_PINMUX (0xFFFFFFFF & ~(0xFF7FF)) +#define TOP_LGPIO0_ETH_RMII_PINMUX (0xFFFFFFFF & ~(0x7FF)) +#define TOP_LGPIO0_ETH_EMBED_PINMUX (0xFFFFFFFF & ~((0x1<<19)|(0x3<<9))) +#define TOP_PGPIO0_ETH_PINMUX (0xFFFFFFFF & ~(1<<22)) + +// For eMMC configuration +#define TOP_REG0_EMMC_4BITS (0) +#define TOP_REG0_EMMC_8BITS (1 << 7) +#define TOP_REG0_EMMC_BUSWIDTH_MSK (1 << 7) +#define TOP_REG0_EMMC_BOOT_SDR (0) +#define TOP_REG0_EMMC_BOOT_DDR (1 << 8) +#define TOP_REG0_EMMC_BOOTMODE_MSK (1 << 8) +#define TOP_REG0_EMMC_DDR_ODD_1ST (0) +#define TOP_REG0_EMMC_DDR_EVEN_1ST (1 << 9) +#define TOP_REG0_EMMC_DDREDGE_MSK (1 << 9) + +//Below need to check again +// For ethernet configuration +#define TOP_REG0_ETH_PINMUX_MSK (0x3 << 3) +#define TOP_REG0_ETH_PINMUX_RMII_OUTPUT (0 << 3) +#define TOP_REG0_ETH_PINMUX_RMII_INPUT (1 << 3) +#define TOP_REG0_ETH_PINMUX_RGMII (2 << 3) +#define TOP_REG0_ETH_PINMUX_EMB (3 << 3) + +// ETH LED +#define TOP_REG6_ETH_LED_MSK (0xFF0 ) +#define TOP_REG6_ETH_LED_2 (2 << 13) +#define TOP_REG6_ETH_LED_1 (0x55 << 4) +#define TOP_REG6_ETH_LED_DISABLE (0 << 13) +// WDT +#define TOP_REG0_WDT_PINMUX_MSK (0x01 <<12) + + +#define TOP_DSP_IOP_CH_EN (1 << 17) + +// For UART pinmux +#define UART0_SWITCH (0x01 << 0) + +// For USB pinmux +#define TOP_USB_VBUSI (0x03) // Bit2: device mode, Bit1: VBUSI + +//#define selectUART() SETREG32(TOP_CTRL_PIN_MUX_CTRL_REG9, UART0_SWITCH) +#if 0 +#if ((USE_FPGA_EMULATION == 1) || (USE_BMC_EMULATION == 1)) +#define selectCardType(type) OUTREG32(TOP_CTRL_PIN_MUX_CTRL_REG1, (INREG32(TOP_CTRL_PIN_MUX_CTRL_REG1)&(TOP_REG0_BMC_PINMUX|TOP_REG0_ICE_PINMUX))|(type)) +#else +#define selectCardType(type) OUTREG32(TOP_CTRL_PIN_MUX_CTRL_REG1, (INREG32(TOP_CTRL_PIN_MUX_CTRL_REG1)&(TOP_REG0_BMC_PINMUX|TOP_REG0_ICE_PINMUX))|(type)) +#endif +#endif + +#define selectUART0() CLRREG32(TOP_CTRL_PIN_MUX_CTRL_REG1, ((0x3 << 20) | (0x3 << 24)));\ + SETREG32(TOP_CTRL_PIN_MUX_CTRL_REG1, ((0x1 << 20) | (0x1 << 24))); + +#endif diff --git a/board/novatek/na51068/loader/Include/StorageDef.h b/board/novatek/na51068/loader/Include/StorageDef.h new file mode 100755 index 000000000000..7968627103e4 --- /dev/null +++ b/board/novatek/na51068/loader/Include/StorageDef.h @@ -0,0 +1,524 @@ +/** + Storage module driver. + + This file is the driver of storage module. + + @file StorageDef.h + @ingroup mIDrvStorage + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _STORAGE_DEF_ +#define _STORAGE_DEF_ + +#include "board.h" + +#define _STORAGE_OBJ_ 1 +/** + @addtogroup mIDrvStorage +*/ +//@{ + +/** + @name External storage type + +*/ +//@{ +#define EXT_STORAGE_TYPE_NONE (0) +#define EXT_STORAGE_TYPE_SDIO1 (1) +#define EXT_STORAGE_TYPE_SDIO2 (2) +#define EXT_STORAGE_TYPE_USB (3) +#define EXT_STORAGE_TYPE_ETH (4) +//*} + +/** + @name SPI Quad read type + + @note for SPI_IDENTIFY +*/ +//@{ +#define SPI_QUAD_NONE 0 ///< Not support +#define SPI_QUAD_TYPE1 1 ///< Support quad read, QE(Quad Enable) bit is in Status Reigster[bit 6] and 0x6B command requires 8 dummy clocks. +#define SPI_QUAD_TYPE2 2 ///< Support quad read, QE(Quad Enable) bit is in Status Register[bit 9] and 0x6B command requires 8 dummy clocks. +#define SPI_QUAD_TYPE3 3 ///< Support quad read, QE(Quad Enable) NOT exist and 0x6B command requires 8 dummy clocks +#define SPI_QUAD_TYPE4 4 ///< Support quad read, QE(Quad Enable) bit is in Status Register[bit 9] and 0x6B command requires 8 dummy clocks. + ///< But QE CAN'T be modified by 0x31 command. Instead, QE is enabled by 0x01 command 2nd data byte +//@} + +/** + SPI flash identify descriptor + + @note For STRG_IDENTIFY_CB +*/ +typedef struct +{ + BOOL bDualRead; ///< Dual read (0x3B) command capability + ///< - @b TRUE: support dual read comand. (Command value should be 0x3B.) + ///< - @b FALSE: NOT support dual read command + UINT32 uiQuadReadType; ///< Quad read type capability. (ONLY support quad command 0x6B) + ///< - @b SPI_QUAD_NONE: NOT support quad read command + ///< - @b SPI_QUAD_TYPE1: Support quad read command, QE in Status Register bit 6 + ///< - @b SPI_QUAD_TYPE2: Support quad read command, QE in Status Register bit 9 + ///< - @b SPI_QUAD_TYPE3: Support quad read command, QE NOT exist + ///< - @b SPI_QUAD_TYPE4: Support quad read command, QE in Status Register bit 9 (but need 0x31 command) + UINT32 uiFlashSize; ///< Flash total byte size. (unit: byte) +} SPI_IDENTIFY, *PSPI_IDENTIFY; + +/** + @name Storage Access CallBack + + Storage Access CallBack Prototype + + @return void +*/ +//@{ +typedef void (*STRG_ACCESS_CB)(void); ///< Storage access call back prototype +//@} + +/** + @name Storage Identify CallBack + + Storage Identify CallBack Prototype + + @param[in] UINT32 uiMfgID (JEDEC) manufacturer ID read from spi flash + @param[in] UINT32 uiTypeID (JEDEC) type ID read from spi flash + @param[in] UINT32 uiCapacityID (JEDEC) capacity ID read from spi flash + @param[out] PSPI_IDENTIFY flash identification returned to spi flash driver + + @return + - @b TRUE: call back will handle identification of this flash. and PSPI_IDENTIFY will fill identifed information + - @b FALSE: input ID is NOT supported/identified by call back +*/ +//@{ +typedef BOOL (*STRG_IDENTIFY_CB)(UINT32, UINT32, UINT32, PSPI_IDENTIFY); ///< Storage identify call back prototype +//@} + +/** + @name Storage return value + + @note for flash_open(), flash_readSectors(), and flash_writeSectors() +*/ +//@{ +#define E_OK 0 ///< Success +#define E_NAND_IDENTIFY_ERR -1 ///< Read NAND ID (information) error +#define E_NAND_INSUFFICINET_BLK -2 ///< Bad block is too much to write data +#define E_NAND_BLK_NOT_FOUND -3 ///< Logic block number not found in physical block +#define E_NAND_WRITE_PAGEDATA_ERR -4 ///< Logic block number not found in physical block +#define E_NAND_ERASEE_BLK_ERR -5 ///< NAND erase block error +#define E_NAND_READ_PAGE_ERR -6 ///< NAND read page data error +#define E_NAND_READ_BLK_ERR -7 ///< NAND read block data error +#define E_NAND_ID_NOT_SUPPORT -8 ///< Not support NAND ID +#define E_IDENTIFY_ERR -9 ///< SPI IDENTIFY error +#define E_SYS -10 ///< System Error +#define E_NAND_ALIGN_ERR -11 ///< Not block alignment +#define E_NAND_BOUNDARY_ERR -12 ///< boundary < write buffer +#define E_OK_TABLE_FOUND 1 ///< Success & NAND table find +#define E_OK_TABLE_NOT_FOUND 2 ///< Success & NAND table not find +//@} + +/** + @name Internal Storage Update Region + + @note for flash_readSectors(), and flash_writeSectors() +*/ +//@{ +#define NAND_RW_LOADER 0 ///< Update Region is Loader (Update size is assumed 16 KB) +#define NAND_RW_RESERVED 1 ///< Update Region is reserved area (Update size is assumed 16 KB) +#define NAND_RW_FIRMWARE 2 ///< Update Region is FW (Update size is variable) +#define NAND_RW_FIRMWARE_2 3 ///< Update Region is FW from 2-5(Update size is variable) +#define NAND_RW_FIRMWARE_3 4 ///< Update Region is FW from 2-5(Update size is variable) +#define NAND_RW_FIRMWARE_4 5 ///< Update Region is FW from 2-5(Update size is variable) +#define NAND_RW_FIRMWARE_5 6 ///< Update Region is FW from 2-5(Update size is variable) +//@} + +/** + @name Internal Storage Configuration ID + + @note for flash_setConfig() +*/ +//@{ +#define FLASH_CFG_ID_NONE 0 +#define FLASH_CFG_ID_SPI_SUPPORT_4BITS 1 ///< Enable your project to support 4 bit SPI flash. ONLY enable when you ENSURE SPI_D0~SPI_D3 are connected to SPI flash in your PCB!!! +#define FLASH_CFG_ID_EMMC_SUPPORT_8BITS 2 ///< Enable your project to support 8 bit EMMC. ONLY enable when you ENSURE EMMC_D0~SPI_D7 are connected to EMMC flash in your PCB!!! +#define FLASH_CFG_ID_CS_SELECT 3 ///< Select this flash (nand/nor) is connected with CS0 or CS1 +#define FLASH_CFG_ID_SPI_IDENTIFY_CB 4 ///< Install flash identify call back +//@} + +/** + @name Internal Storage Configuration ID + + @note for flash_getConfig() +*/ +//@{ +#define FLASH_CFG_ID_SPI_GET_STATUS_1 0 ///< Get SPI-NOR flash get status 1( S7~S0) +#define FLASH_CFG_ID_SPI_GET_STATUS_2 1 ///< Get SPI-NOR flash get status 2(S15~S8) +#define FLASH_CFG_ID_SPI_GET_STATUS_3 2 ///< Get SPI-NOR flash get status 3(S23~S16) +//@} + +#if (_STORAGE_OBJ_== 1) + + +#define BOOT_SOURCE_SPI 0x00 +#define BOOT_SOURCE_SPI_NAND_2K 0x09 +#define BOOT_SOURCE_SPI_NAND_4K 0x01 + +/** + @name New storage object interface + + For new version storage device driver +*/ +//@{ +typedef struct { + INT32(*flash_open)(void); ///< Flash Open + void(*flash_close)(void); ///< Flash Close + INT32(*flash_readSectors)(UINT32, UINT32, UINT8 *,UINT32); ///< Flash Read Sector + INT32(*flash_writeSectors)(UINT32, UINT32, UINT8 *, UINT32); ///< Flash Write Sector + INT32(*flash_writePartition)(UINT32, UINT32, UINT32, UINT8 *, UINT32); ///< Flash Write Sector, and remain space need erase + UINT32(*flash_getBlockSize)(void); ///< Flash Get Block Size + void(*flash_setReservedBadBlockNumber)(UINT32); ///< Flash Set Reserved Bad Block Number + void(*flash_setReservedAreaMaxBlockNumber)(UINT32); ///< Flash Set Reserved Area Block Number + UINT64(*flash_getTotalSize)(void); + void(*flash_installAccessCB)(STRG_ACCESS_CB); + void(*flash_installIdentifyCB)(STRG_IDENTIFY_CB); + void(*flash_setFrequency)(UINT32); + INT32(*flash_setConfig)(UINT32, UINT32); + INT32(*flash_getConfig)(UINT32, UINT32); +} STORAGE_OBJ, *PSTORAGE_OBJ; + +extern PSTORAGE_OBJ nand_get_storage_object(void); +extern PSTORAGE_OBJ nor_get_storage_object(void); + +//@} +#else +// Internal storage public API ( NAND / SPI flash) +/** + Flash Open + + This function will initialize internal flash driver + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @return + - @b E_OK: open success + - @b E_IDENTIFY_ERR: identify fail (SPI path) + - @b E_NAND_IDENTIFY_ERR: identify fail (NAND path) + - @b E_NAND_ID_NOT_SUPPORT: not supported NAND flash +*/ +extern INT32 flash_open(void); +/** + Flash Close + + This function will close internal flash driver + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @return void +*/ +extern void flash_close(void); + +/** + Flash Read Sector + + This function will read data from internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] startblk Start block of this read operation (unit: flash block) + @param[in] length Length of read operation (unit: byte) + @param[out] buffer Pointer to DRAM buffer to receive read data (word alignment) + @param[in] updateType Operation Access Region + - @b NAND_RW_LOADER: loader region + - @b NAND_RW_RESERVED: reserved area + - @b NAND_RW_FIRMWARE: f/w region + + @return + - @b E_OK: read success + - @b E_NAND_BLK_NOT_FOUND: can not find available physical block + - @b E_NAND_READ_BLK_ERR: NAND access block error + - @b E_NAND_READ_PAGE_ERR: NAND access page error +*/ +extern INT32 flash_readSectors(UINT32 startblk, UINT32 length, UINT8 * buffer, UINT32 updateType); + +/** + Flash Write Sector + + This function will write data to internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] startblk Start block of this write operation (unit: flash block) + @param[in] length Length of write operation (unit: byte) + @param[in] buffer Pointer to DRAM buffer of written data (word alignment) + @param[in] updateType Operation Access Region + - @b NAND_RW_LOADER: loader region + - @b NAND_RW_RESERVED: reserved area + - @b NAND_RW_FIRMWARE: f/w region + + @return + - @b E_OK: read success + - @b E_NAND_BLK_NOT_FOUND: can not find available physical block + - @b E_NAND_ERASEE_BLK_ERR: erase block error + - @b E_NAND_WRITE_PAGEDATA_ERR: page program error + - @b E_NAND_INSUFFICINET_BLK: insufficient good block +*/ +extern INT32 flash_writeSectors(UINT32 startblk, UINT32 length, UINT8 * buffer, UINT32 updateType); + +/** + Flash Write partition + + This function will write data to internal flash and continue erase flash to partition boundary + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] startblk Start block of this write operation (unit: flash block) + @param[in] length Length of write operation (unit: byte) + @param[in] boundary_length Length of write partition boundary (unit: byte) (limit:block boundary) + @param[in] buffer Pointer to DRAM buffer of written data (word alignment) + @param[in] updateType Operation Access Region + - @b NAND_RW_LOADER: loader region + - @b NAND_RW_RESERVED: reserved area + - @b NAND_RW_FIRMWARE: f/w region + + @return + - @b E_OK: read success + - @b E_NAND_BLK_NOT_FOUND: can not find available physical block + - @b E_NAND_ERASEE_BLK_ERR: erase block error + - @b E_NAND_WRITE_PAGEDATA_ERR: page program error + - @b E_NAND_INSUFFICINET_BLK: insufficient good block +*/ +extern INT32 flash_writePartition(UINT32 startblk, UINT32 length, UINT32 boundary_length, UINT8 * buffer, UINT32 updateType); + +/** + Flash Get Block Size + + This function will return block size of attached internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @return block size (unit: byte) +*/ +extern UINT32 flash_getBlockSize(void); + +/** + Flash Mount File system + + Mount file system (FAT) on flash + + @param[in] startblk start LBA of file system on flash. This should point to MBR. + @param[in] uiBuf DRAM address of file system buffer + @param[in] uiSize buffer size of file system buffer (unit: byte) (Recommend size is 0xA0000) + + @note only support by eMMC + + @return + - @b E_OK: mount success + - @b E_SYS: not support or mount fail +*/ +extern INT32 flash_mount_fs(UINT32 startblk, UINT32 uiBuf, UINT32 uiSize); + +/** + Flash Mount Partition + + Mount partition on flash + + @param[in] partition_id partition to be mounted. valid setting: 0 ~ 3 + + @note only support by eMMC + + @return + - @b E_OK: mount success + - @b E_SYS: not support or mount fail +*/ +extern INT32 flash_mount_partition(UINT32 partition_id); + +/** + Flash Open File + + Open File on flash + + @param[in] pfilename file name. It should be 8.3 format + + @note only support by eMMC + + @return + - @b TRUE: open file success + - @b FALSE: not support or open fail +*/ +extern BOOL flash_open_file(UINT8 *pfilename); + +/** + Flash Read File + + Read File on flash + + @param[in] buf_addr buffer address + @param[in] buf_size buffer size + + @note only support by eMMC + + @return + - @b 0: read fail + - @b else: actual read length +*/ +extern UINT32 flash_read_file(UINT8 *buf_addr, UINT32 buf_size); + +/** + Flash Set Reserved Bad Block Number + + This function will set block count reserved to do bad block replacement + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] badBlkNum reserved bad block count (unit: block) + + @return void +*/ +extern void flash_setReservedBadBlockNumber(UINT32 badBlkNum); + +//#NT#2010/04/20#Steven Wang -begin +//#NT#Autumn reserved area from 2 ~ 23 +/** + Flash Set Reserved Area Block Number + + This function will set reserved area max block count + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] RsvMaxBlkNum max reserved area block count (unit: block) + + @return void +*/ +extern void flash_setReservedAreaMaxBlockNumber(UINT32 RsvMaxBlkNum); +//#NT#2010/04/20#Steven Wang -end + +/** + Flash Set Reserved Bad Block Number for loader region + + This function will set block count reserved to do bad block replacement in loader region + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] badBlkNum reserved bad block count (unit: block) + + @return void +*/ +extern void flash_setLoaderReservedBadBlockNumber(UINT32 badBlkNum); + +/** + Flash Get Total Size + + This function will return total size of attached internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @return total size (unit: byte) +*/ +extern UINT64 flash_getTotalSize(void); + +/** + Install Flash Access CallBack + + This function will install access callback. + The installed callback will be invoked when one block/page is programmed + + @note card is selected by STORAGEEXT in MakeConfig.txt + + @param[in] accessCB installed callback + + @return void +*/ +extern void flash_installAccessCB(STRG_ACCESS_CB accessCB); + +/** + Install Flash Identify CallBack + + This function will install identification callback. + The installed callback will be invoked when spi flash driver is opened. + + @note NAND driver will NOT invoke the installed call back + + @param[in] identifyCB installed callback + + @return void +*/ +extern void flash_installIdentifyCB(STRG_IDENTIFY_CB identifyCB); + +/** + Flash Set Bus Frequency + + This function will set operating frequency of attached internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] uiFreq Operating frequency (unit: MHz) + + @return void +*/ +extern void flash_setFrequency(UINT32 uiFreq); + +/** + Flash Set Configuration + + This function will set specific configuration for internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] uiConfigId Configuration ID, can be: + - @b FLASH_CFG_ID_SPI_SUPPORT_4BITS: configure to support 4 bit SPI flash + @param[in] uiContext Configuration context for uiConfigId + When uiConfigId == FLASH_CFG_ID_SPI_SUPPORT_4BITS: + - @b TRUE: use 4 bit read when attached SPI flash support 4 bit read + - @b FALSE: won't use 4 bit read + + @return + - @b E_OK: success + - @b Else: fail +*/ +extern INT32 flash_setConfig(UINT32 uiConfigId, UINT32 uiContext); +#endif +// External storage public API ( SDIO/MS/xD ) +/** + Open card driver + + This function will initialize card driver and register it to file system + + @note card is selected by STORAGEEXT in MakeConfig.txt + + @return + - @b TRUE: open success + - @b FALSE: open fail +*/ +extern INT32 card_open(void); + +/** + Close card driver + + This function will close card driver + + @note card is selected by STORAGEEXT in MakeConfig.txt + + @return void +*/ +extern void card_close(void); + +/** + Get card type + + This function is used to get card storage type + + @note card is selected by STORAGEEXT in MakeConfig.txt + + @return void +*/ + +extern UINT32 card_get_type(void); + +//@} + +extern void USBOTGReset(void); +extern INT32 USB3Download(void); +extern void USBSetResult(UINT32 uiResult); +extern INT32 USBStateMachine(void); +#endif diff --git a/board/novatek/na51068/loader/Include/Type.h b/board/novatek/na51068/loader/Include/Type.h new file mode 100755 index 000000000000..74a00059eaaa --- /dev/null +++ b/board/novatek/na51068/loader/Include/Type.h @@ -0,0 +1,9 @@ +#ifndef __TYPE_H +#define __TYPE_H + +#include <stdio.h> +//#include <stdint.h> + +#define _ALIGNED(x) __attribute__((aligned(x))) + +#endif // __TYPE_H diff --git a/board/novatek/na51068/loader/Include/ahb_dma.h b/board/novatek/na51068/loader/Include/ahb_dma.h new file mode 100755 index 000000000000..5bb1a1203f58 --- /dev/null +++ b/board/novatek/na51068/loader/Include/ahb_dma.h @@ -0,0 +1,98 @@ +#ifndef __AHB_DMA_H + #define __AHB_DMA_H + #include "board.h" + + typedef struct { + INT32U ctrl; + INT32U cfg; + INT32U *src; + INT32U *dst; + INT32U llp; + INT32U size; + INT32U reserved[2]; + } CHANNELx; + + typedef struct { + INT32U ints; // 0x00 + INT32U int_tc; + INT32U int_tc_clr; + INT32U int_err; + INT32U int_err_clr; // 0x10 + INT32U tc; + INT32U err; + INT32U ch_en; + INT32U ch_busy; // 0x20 + INT32U csr; + INT32U sync; //0x28 + INT32U reserved[53]; + CHANNELx ch[8]; //0x100 + } ipDMA; + + typedef struct { + INT32U src_addr; + INT32U dst_addr; + INT32U llp; + INT32U llp_ctrl; + INT32U size; + }DMA_LLPD; + + + #define REQ_NANDTX 0 /* Use CH2 in DMAC */ + #define REQ_NANDRX 0 + #define REQ_SPI020TX 0 /* Use CH8 in DMAC for NOR TX */ + #define REQ_SPI020RX 0 /* Use CH8 in DMAC for NOR RX */ + + // bit[7:0]: dedicated channel no if 0-7 + // any channel no if other + // bit[15: 8]: request no. + /* The following defintions are not hardware relative. The following high byte is just table index to ahbdma_cmd[]. + */ + #define DMA_MEM2MEM ((0UL << 8) | 0) /* index 0 */ + + #define NAND_CHANNEL 0 /* Use CH0 in DMAC */ + /* define at ahb_dma.c ahbdma_cmd[4][2] */ + #define ARRAY_MEM2NAND 0 + #define ARRAY_NAND2MEM 1 + + #define DMA_MEM2NAND ((ARRAY_MEM2NAND << 8) | NAND_CHANNEL) /* index 1 */ + #define DMA_NAND2MEM ((ARRAY_NAND2MEM << 8) | NAND_CHANNEL) /* index 2 */ + + #define SPI020_CHANNEL 0 /* Use CH0 in DMAC */ + /* define at ahb_dma.c ahbdma_cmd[4][2] */ + #define ARRAY_MEM2SPI020 2 + #define ARRAY_SPI0202MEM 3 + + #define DMA_MEM2SPI020 ((ARRAY_MEM2SPI020 << 8) | SPI020_CHANNEL) /* index 1 */ + #define DMA_SPI0202MEM ((ARRAY_SPI0202MEM << 8) | SPI020_CHANNEL) /* index 2 */ + + + #define DMA_MAX 8 + + typedef void (* DMA_FINISH_CALLBACK)(volatile CHANNELx * pch, INT32U dma_st); + + #define AHB_DMA_EXT extern + + AHB_DMA_EXT INT32S Dma_go_trigger(INT32U * src, INT32U *dst, INT32U byte, DMA_LLPD *pllpd,INT32U req, int real); + AHB_DMA_EXT INT32S Dma_wait_timeout(INT32S hw_ch, INT32U timeout); + AHB_DMA_EXT void Dma_init(INT32U sync); + + + //DMA Source size + #define DMA_BURST_1 0x0L + #define DMA_BURST_4 0x1L + #define DMA_BURST_8 0x2L + #define DMA_BURST_16 0x3L + #define DMA_BURST_32 0x4L + #define DMA_BURST_64 0x5L + #define DMA_BURST_128 0x6L + #define DMA_BURST_256 0x7L + + /* req: DMA_MEM2MEM / DMA_MEM2NAND .... + * burst: DMA_BURST_1 ~ DMA_BURST_256 + * return: + * >= 0 for success + */ + AHB_DMA_EXT int Dma_Set_BurstSz(INT32U req, int burst); + +#endif /* __AHB_DMA_H */ + diff --git a/board/novatek/na51068/loader/Include/bdata.h b/board/novatek/na51068/loader/Include/bdata.h new file mode 100755 index 000000000000..b3eaa7031862 --- /dev/null +++ b/board/novatek/na51068/loader/Include/bdata.h @@ -0,0 +1,7 @@ +#ifndef __BDATA_H__ +#define __BDATA_H__ + +#define READ_SYSTEM_DATA 0xf9005100 +unsigned char __attribute__ ((section (".BDATA"))) bdata[] = {0x04, 0xB0, 0x2D, 0xE5, 0x00, 0xB0, 0x8D, 0xE2, 0x34, 0xD0, 0x4D, 0xE2, 0x30, 0x00, 0x0B, 0xE5, 0x34, 0x10, 0x0B, 0xE5, 0x30, 0x30, 0x1B, 0xE5, 0x10, 0x30, 0x43, 0xE2, 0x03, 0x00, 0x53, 0xE3, 0x03, 0xF1, 0x9F, 0x97, 0x1F, 0x00, 0x00, 0xEA, 0x38, 0x56, 0x00, 0xF9, 0x54, 0x56, 0x00, 0xF9, 0x70, 0x56, 0x00, 0xF9, 0x8C, 0x56, 0x00, 0xF9, 0x89, 0x32, 0x00, 0xE3, 0x08, 0x30, 0x0B, 0xE5, 0xF5, 0x32, 0x00, 0xE3, 0x0C, 0x30, 0x0B, 0xE5, 0xF6, 0x32, 0x00, 0xE3, 0x10, 0x30, 0x0B, 0xE5, 0x16, 0x00, 0x00, 0xEA, 0x8F, 0x32, 0x00, 0xE3, 0x08, 0x30, 0x0B, 0xE5, 0xF7, 0x32, 0x00, 0xE3, 0x0C, 0x30, 0x0B, 0xE5, 0xBE, 0x3F, 0xA0, 0xE3, 0x10, 0x30, 0x0B, 0xE5, 0x0F, 0x00, 0x00, 0xEA, 0x95, 0x32, 0x00, 0xE3, 0x08, 0x30, 0x0B, 0xE5, 0xF9, 0x32, 0x00, 0xE3, 0x0C, 0x30, 0x0B, 0xE5, 0xFA, 0x32, 0x00, 0xE3, 0x10, 0x30, 0x0B, 0xE5, 0x08, 0x00, 0x00, 0xEA, 0x9B, 0x32, 0x00, 0xE3, 0x08, 0x30, 0x0B, 0xE5, 0xFB, 0x32, 0x00, 0xE3, 0x0C, 0x30, 0x0B, 0xE5, 0xBF, 0x3F, 0xA0, 0xE3, 0x10, 0x30, 0x0B, 0xE5, 0x01, 0x00, 0x00, 0xEA, 0x00, 0x30, 0xE0, 0xE3, 0x68, 0x00, 0x00, 0xEA, 0x0C, 0x30, 0x1B, 0xE5, 0xA3, 0x31, 0xA0, 0xE1, 0x03, 0x30, 0xC3, 0xE3, 0xFE, 0x34, 0x83, 0xE2, 0x02, 0x38, 0x83, 0xE2, 0x18, 0x30, 0x0B, 0xE5, 0x18, 0x30, 0x1B, 0xE5, 0x00, 0x30, 0x93, 0xE5, 0x14, 0x30, 0x0B, 0xE5, 0x0C, 0x30, 0x1B, 0xE5, 0x1F, 0x30, 0x03, 0xE2, 0x14, 0x20, 0x1B, 0xE5, 0x32, 0x33, 0xA0, 0xE1, 0x01, 0x30, 0x03, 0xE2, 0x1C, 0x30, 0x0B, 0xE5, 0x10, 0x30, 0x1B, 0xE5, 0xA3, 0x31, 0xA0, 0xE1, 0x03, 0x30, 0xC3, 0xE3, 0xFE, 0x34, 0x83, 0xE2, 0x02, 0x38, 0x83, 0xE2, 0x18, 0x30, 0x0B, 0xE5, 0x18, 0x30, 0x1B, 0xE5, 0x00, 0x30, 0x93, 0xE5, 0x14, 0x30, 0x0B, 0xE5, 0x10, 0x30, 0x1B, 0xE5, 0x1F, 0x30, 0x03, 0xE2, 0x14, 0x20, 0x1B, 0xE5, 0x32, 0x33, 0xA0, 0xE1, 0x01, 0x30, 0x03, 0xE2, 0x20, 0x30, 0x0B, 0xE5, 0x20, 0x30, 0x1B, 0xE5, 0x01, 0x00, 0x53, 0xE3, 0x01, 0x00, 0x00, 0x1A, 0x04, 0x30, 0xE0, 0xE3, 0x45, 0x00, 0x00, 0xEA, 0x1C, 0x30, 0x1B, 0xE5, 0x00, 0x00, 0x53, 0xE3, 0x01, 0x00, 0x00, 0x1A, 0x03, 0x30, 0xE0, 0xE3, 0x40, 0x00, 0x00, 0xEA, 0x30, 0x30, 0x1B, 0xE5, 0x10, 0x00, 0x53, 0xE3, 0x30, 0x00, 0x00, 0x3A, 0x12, 0x00, 0x53, 0xE3, 0x02, 0x00, 0x00, 0x9A, 0x13, 0x00, 0x53, 0xE3, 0x10, 0x00, 0x00, 0x0A, 0x2B, 0x00, 0x00, 0xEA, 0x08, 0x30, 0x1B, 0xE5, 0xA3, 0x31, 0xA0, 0xE1, 0x03, 0x30, 0xC3, 0xE3, 0xFE, 0x34, 0x83, 0xE2, 0x02, 0x38, 0x83, 0xE2, 0x18, 0x30, 0x0B, 0xE5, 0x18, 0x30, 0x1B, 0xE5, 0x00, 0x30, 0x93, 0xE5, 0x14, 0x30, 0x0B, 0xE5, 0x08, 0x30, 0x1B, 0xE5, 0x1F, 0x30, 0x03, 0xE2, 0x14, 0x20, 0x1B, 0xE5, 0x32, 0x33, 0xA0, 0xE1, 0x3F, 0x30, 0x03, 0xE2, 0x14, 0x30, 0x0B, 0xE5, 0x1D, 0x00, 0x00, 0xEA, 0x08, 0x30, 0x1B, 0xE5, 0xA3, 0x31, 0xA0, 0xE1, 0x03, 0x30, 0xC3, 0xE3, 0xFE, 0x34, 0x83, 0xE2, 0x02, 0x38, 0x83, 0xE2, 0x18, 0x30, 0x0B, 0xE5, 0x18, 0x30, 0x1B, 0xE5, 0x00, 0x30, 0x93, 0xE5, 0x14, 0x30, 0x0B, 0xE5, 0x08, 0x30, 0x1B, 0xE5, 0x1F, 0x30, 0x03, 0xE2, 0x14, 0x20, 0x1B, 0xE5, 0x32, 0x33, 0xA0, 0xE1, 0x3F, 0x30, 0x03, 0xE2, 0x14, 0x30, 0x0B, 0xE5, 0x18, 0x30, 0x1B, 0xE5, 0x04, 0x30, 0x83, 0xE2, 0x24, 0x30, 0x0B, 0xE5, 0x24, 0x30, 0x1B, 0xE5, 0x00, 0x30, 0x93, 0xE5, 0x01, 0x30, 0x03, 0xE2, 0x28, 0x30, 0x0B, 0xE5, 0x28, 0x30, 0x1B, 0xE5, 0x83, 0x32, 0xA0, 0xE1, 0x14, 0x20, 0x1B, 0xE5, 0x03, 0x30, 0x82, 0xE1, 0x14, 0x30, 0x0B, 0xE5, 0x01, 0x00, 0x00, 0xEA, 0x04, 0x30, 0xA0, 0xE3, 0x0A, 0x00, 0x00, 0xEA, 0x14, 0x30, 0x1B, 0xE5, 0x08, 0x00, 0x53, 0xE3, 0x01, 0x00, 0x00, 0x8A, 0x04, 0x30, 0xE0, 0xE3, 0x05, 0x00, 0x00, 0xEA, 0x34, 0x30, 0x1B, 0xE5, 0x00, 0x30, 0x93, 0xE5, 0x14, 0x20, 0x1B, 0xE5, 0x72, 0x20, 0xEF, 0xE6, 0x00, 0x20, 0xC3, 0xE5, 0x00, 0x30, 0xA0, 0xE3, 0x03, 0x00, 0xA0, 0xE1, 0x00, 0xD0, 0x8B, 0xE2, 0x04, 0xB0, 0x9D, 0xE4, 0x1E, 0xFF, 0x2F, 0xE1}; + +#endif \ No newline at end of file diff --git a/board/novatek/na51068/loader/Include/board.h b/board/novatek/na51068/loader/Include/board.h new file mode 100755 index 000000000000..06cbc879e35f --- /dev/null +++ b/board/novatek/na51068/loader/Include/board.h @@ -0,0 +1,139 @@ +#ifndef __BOARD_H__ +#define __BOARD_H__ + +//#define NULL 0 +#define BIT0 0x00000001L +#define BIT1 0x00000002L +#define BIT2 0x00000004L +#define BIT3 0x00000008L +#define BIT4 0x00000010L +#define BIT5 0x00000020L +#define BIT6 0x00000040L +#define BIT7 0x00000080L +#define BIT8 0x00000100L +#define BIT9 0x00000200L +#define BIT10 0x00000400L +#define BIT11 0x00000800L +#define BIT12 0x00001000L +#define BIT13 0x00002000L +#define BIT14 0x00004000L +#define BIT15 0x00008000L +#define BIT16 0x00010000L +#define BIT17 0x00020000L +#define BIT18 0x00040000L +#define BIT19 0x00080000L +#define BIT20 0x00100000L +#define BIT21 0x00200000L +#define BIT22 0x00400000L +#define BIT23 0x00800000L + +#define IMAGE_ADDR 0x100000 +#if (defined(CONFIG_MT) || defined(CONFIG_RA)) +#define LOAD_ADDR 0x0F000040 +#define LOAD_EP_ADDR 0x1F000000 +#else +#define LOAD_ADDR 0xB00000//0xF9001000 +#endif +#define LOAD_FDT_ADDR 0x01F00000 +#define SYS_CLK 12000000 + +#define SRAM0_BASE 0xf9001640 +#define SRAM0_SIZE 0x6000 /* 24K */ +#define SRAM1_BASE SRAM0_BASE+SRAM0_SIZE//(0xf9001200 + 0x6000) +#define SRAM1_SIZE 0x2000 + +//#define AXIC_REMAP 0x130 + +#define REG_HEAVY_LOAD_BASE 0xfd600000 +#define REG_H2X_BASE 0xfe600000 +#define REG_AXIC_BASE 0xfe700000 + +#define REG_UART0_BASE 0xfe200000 +#define REG_UART1_BASE 0xfe220000 +#define REG_UART2_BASE 0xfe240000 +#define REG_TOP_BASE 0xfe030000 +#define REG_PAD_BASE 0xfe040000 +#define REG_PMU_BASE 0xfe000000 +#define REG_DMA_BASE 0xfca00000 /* dmac030 */ + +#define REG_DDR0_BASE 0xfc400000 +#define REG_DDR1_BASE 0xfc500000 +//#define REG_DDR2_BASE 0xfc600000 +//#define REG_DDR3_BASE 0xfc700000 + +//#define REG_GPIO0_BASE 0xfe400000 +//#define REG_GPIO1_BASE 0xfe420000 +#define REG_GPIO2_BASE 0xfe440000 + +#define REG_WDT_BASE 0xfe8a0000 +#define REG_GIC_BASE 0xf9c00000 +//#define REG_SPI020_BASE 0xfa700000 +#define BASE_SPI 0xFA900000 +//#define REG_DMAC020_BASE 0xFA500000 +#define REG_DMAC030_BASE REG_DMA_BASE +#define REG_TMR010_BASE 0xFE8C0000 +#define REG_SDHCI_BASE 0xFA600000 +#define AXI_PCIE_IC10 0xFE840000 /* S1 for pcie0, S2 for pcie1 */ +#define REG_CRYPTO_BASE 0xFEC60000 +#define REG_HASH_BASE 0xFEC80000 +#define REG_RSA_BASE 0xFECA0000 +#define INTC_OSPREY_BASE 0xF8401000 +#define MP0_BASE 0xFDC00000 +#define REG_PWM_BASE 0xFE6C0000 +#define configARM_TIMER_BASEADDR 0xF9C00200 +#define ARM_TIMER_LOAD_OFFSET 0x00 /**< Timer Load Register */ +#define ARM_TIMER_COUNTER_OFFSET 0x04 /**< Timer Counter Register */ +#define ARM_TIMER_CONTROL_OFFSET 0x08 /**< Timer Control Register */ +#define ARM_TIMER_ISR_OFFSET 0x0C /**< Timer Interrupt Status Register */ +#define ARM_TIMER_COUNTER_OFFSET_L 0x00 /**< Timer Counter Register */ +#define ARM_TIMER_COUNTER_OFFSET_H 0x04 /**< Timer Counter Register */ +#define ARM_TIMER_COUNTER_CMP_OFFSET_L 0x10 /**< Timer Counter Register */ +#define ARM_TIMER_COUNTER_CMP_OFFSET_H 0x14 /**< Timer Counter Register */ + +#define CYGHWR_HAL_RTC_PRESCALER 1 +#define ARM_TIMER_CONTROL_PRESCALER_MASK 0x0000FF00 /**< Prescaler */ +#define ARM_TIMER_CONTROL_PRESCALER_SHIFT 8 +#define ARM_TIMER_CONTROL_IRQ_ENABLE_MASK 0x00000004 /**< Intr enable */ +#define ARM_TIMER_CONTROL_AUTO_RELOAD_MASK 0x00000002 /**< Auto-reload */ +#define ARM_TIMER_CONTROL_ENABLE_MASK 0x00000001 /**< Timer enable */ + +#define ARM_TIMER_ISR_EVENT_FLAG_MASK 0x00000001 /**< Event flag */ + + +#define PAD_PUPD_REG0 (REG_PAD_BASE + 0x00) +#define PAD_PUPD_REG1 (REG_PAD_BASE + 0x04) +#define PAD_PUPD_REG8 (REG_PAD_BASE + 0x40) + + +#ifndef __ASSEMBLY__ + +#include "constant.h" + +typedef enum +{ + FLASH_NOR = 0, + FLASH_SPI_NAND, + FLASH_SD +} FLASH_TYPE_T; + +unsigned int read_reg(unsigned int reg); +void write_reg(unsigned int reg, unsigned int value); +void sal_memset(void *pbuf, unsigned char val, int len); +int sal_memcmp(void *sbuf, void *dbuf, int len); +//int sal_memcpy(void *sbuf, void *dbuf, int len); +void *memcpy(void *dst, const void *src, unsigned int n); + + +#ifndef OUTW +#define OUTW(addr,value) (*(UINT32 volatile *)(addr) = (UINT32)(value)) +#endif + +#ifndef INW +#define INW(addr) (*(UINT32 volatile *)(addr)) +#endif +#define _ALIGNED(x) __attribute__((aligned(x))) + +#endif /* __ASSEMBLY__ */ + + +#endif diff --git a/board/novatek/na51068/loader/Include/compiler.h b/board/novatek/na51068/loader/Include/compiler.h new file mode 100755 index 000000000000..7fa9b3831ab4 --- /dev/null +++ b/board/novatek/na51068/loader/Include/compiler.h @@ -0,0 +1,56 @@ +/* + * Keep all the ugly #ifdef for system stuff here + */ + +#ifndef __COMPILER_H__ +#define __COMPILER_H__ + +#ifndef NULL +#define NULL 0 +#endif + +#if 0 +#define uswap_16(x) (x) +#define uswap_32(x) (x) +#define _uswap_64(x, sfx) (x) +#else +#define uswap_16(x) \ + ((((x) & 0xff00) >> 8) | \ + (((x) & 0x00ff) << 8)) +#define uswap_32(x) \ + ((((x) & 0xff000000) >> 24) | \ + (((x) & 0x00ff0000) >> 8) | \ + (((x) & 0x0000ff00) << 8) | \ + (((x) & 0x000000ff) << 24)) +#define _uswap_64(x, sfx) \ + ((((x) & 0xff00000000000000##sfx) >> 56) | \ + (((x) & 0x00ff000000000000##sfx) >> 40) | \ + (((x) & 0x0000ff0000000000##sfx) >> 24) | \ + (((x) & 0x000000ff00000000##sfx) >> 8) | \ + (((x) & 0x00000000ff000000##sfx) << 8) | \ + (((x) & 0x0000000000ff0000##sfx) << 24) | \ + (((x) & 0x000000000000ff00##sfx) << 40) | \ + (((x) & 0x00000000000000ff##sfx) << 56)) +#endif +#if defined(__GNUC__) +#define uswap_64(x) _uswap_64(x, ull) +#else +#define uswap_64(x) _uswap_64(x, ) +#endif +#define cpu_to_le16(x) (x) +#define cpu_to_le32(x) (x) +#define cpu_to_le64(x) (x) +#define le16_to_cpu(x) (x) +#define le32_to_cpu(x) (x) +#define le64_to_cpu(x) (x) +#define cpu_to_be16(x) uswap_16(x) +#define cpu_to_be32(x) uswap_32(x) +#define cpu_to_be64(x) uswap_64(x) +#define be16_to_cpu(x) uswap_16(x) +#define be32_to_cpu(x) uswap_32(x) +#define be64_to_cpu(x) uswap_64(x) + +/* Type for `void *' pointers. */ +typedef unsigned long int uintptr_t; + +#endif diff --git a/board/novatek/na51068/loader/Include/constant.h b/board/novatek/na51068/loader/Include/constant.h new file mode 100755 index 000000000000..bf38c0a333b8 --- /dev/null +++ b/board/novatek/na51068/loader/Include/constant.h @@ -0,0 +1,118 @@ +#ifndef _CONSTANT_H +#define _CONSTANT_H + +//Size MNEMONIC + +#define SZ_1 (1 << 0) /* 0x00000001 */ +#define SZ_2 (1 << 1) /* 0x00000002 */ +#define SZ_4 (1 << 2) /* 0x00000004 */ +#define SZ_8 (1 << 3) /* 0x00000008 */ +#define SZ_16 (1 << 4) /* 0x00000010 */ +#define SZ_32 (1 << 5) /* 0x00000020 */ +#define SZ_64 (1 << 6) /* 0x00000040 */ +#define SZ_128 (1 << 7) /* 0x00000080 */ +#define SZ_256 (1 << 8) /* 0x00000100 */ +#define SZ_512 (1 << 9) /* 0x00000200 */ + +#define SZ_1K (1 << 10) /* 0x00000400 */ +#define SZ_2K (1 << 11) /* 0x00000800 */ +#define SZ_4K (1 << 12) /* 0x00001000 */ +#define SZ_8K (1 << 13) /* 0x00002000 */ +#define SZ_16K (1 << 14) /* 0x00004000 */ +#define SZ_32K (1 << 15) /* 0x00008000 */ +#define SZ_64K (1 << 16) /* 0x00010000 */ +#define SZ_128K (1 << 17) /* 0x00020000 */ +#define SZ_256K (1 << 18) /* 0x00040000 */ +#define SZ_512K (1 << 19) /* 0x00080000 */ + +#define SZ_1M (1 << 20) /* 0x00100000 */ +#define SZ_2M (1 << 21) /* 0x00200000 */ +#define SZ_4M (1 << 22) /* 0x00400000 */ +#define SZ_8M (1 << 23) /* 0x00800000 */ +#define SZ_16M (1 << 24) /* 0x01000000 */ +#define SZ_32M (1 << 25) /* 0x02000000 */ +#define SZ_64M (1 << 26) /* 0x04000000 */ +#define SZ_128M (1 << 27) /* 0x08000000 */ +#define SZ_256M (1 << 28) /* 0x10000000 */ +#define SZ_512M (1 << 29) /* 0x20000000 */ + +#define SZ_1G (1 << 30) /* 0x40000000 */ +#define SZ_2G (1 << 31) /* 0x80000000 */ + +#define SZ_30M (SZ_32M - SZ_2M) + +// ASCII code + +#define CR 0x0D +#define LF 0x0A +#define BS 0x08 +#define ESC 27 + +// Boolean constant definition + +#if 0 +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif +#endif + +#ifndef NULL +#define NULL 0 +#endif + +#ifndef ON +#define ON 1 +#endif + +#ifndef OFF +#define OFF 0 +#endif + +#ifndef ENABLE +#define ENABLE 1 +#endif + +#ifndef DISABLE +#define DISABLE 0 +#endif + +#ifndef DISK_FULL +#define DISK_FULL (-1) +#endif + +// type declaration +typedef unsigned int UINT32; +typedef unsigned int INT32U; +typedef int INT32; +typedef int INT32S; +typedef unsigned short UINT16; +typedef unsigned short INT16U; +typedef short INT16; +typedef unsigned char UINT8; +typedef unsigned char INT8U; +typedef char INT8; +typedef char INT8S; +typedef unsigned int BOOL; +typedef unsigned long long u64; +typedef unsigned int u32; +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int uint; +typedef unsigned short ushort; +typedef unsigned char uchar; +typedef int BOOLEAN; +typedef unsigned long long UINT64; +typedef long long INT64; +typedef unsigned int UINT; +typedef int INT; +typedef long ER; + +enum {FALSE=0, TRUE=1}; + +// error codes +typedef long ER; + +#endif diff --git a/board/novatek/na51068/loader/Include/ctype.h b/board/novatek/na51068/loader/Include/ctype.h new file mode 100755 index 000000000000..dbbc7cf7dd9c --- /dev/null +++ b/board/novatek/na51068/loader/Include/ctype.h @@ -0,0 +1,36 @@ + + +#ifndef NVT_CTYPES_H__ +#define NVT_CTYPES_H__ + + +#define _U 0x01 /* upper */ +#define _L 0x02 /* lower */ +#define _D 0x04 /* digit */ +#define _C 0x08 /* cntrl */ +#define _P 0x10 /* punct */ +#define _S 0x20 /* white space (space/lf/tab) */ +#define _X 0x40 /* hex digit */ +#define _SP 0x80 /* hard space (0x20) */ + +extern unsigned char _ctype[]; + +#define __ismask(x) (_ctype[(int)(unsigned char)(x)]) + +#define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) +#define isalpha(c) ((__ismask(c)&(_U|_L)) != 0) +#define iscntrl(c) ((__ismask(c)&(_C)) != 0) +#define isdigit(c) ((__ismask(c)&(_D)) != 0) +#define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0) +#define islower(c) ((__ismask(c)&(_L)) != 0) +#define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0) +#define ispunct(c) ((__ismask(c)&(_P)) != 0) +#define isspace(c) ((__ismask(c)&(_S)) != 0) +#define isupper(c) ((__ismask(c)&(_U)) != 0) +#define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0) + +#define isascii(c) (((unsigned char)(c))<=0x7f) +#define toascii(c) (((unsigned char)(c))&0x7f) + + +#endif diff --git a/board/novatek/na51068/loader/Include/data_keeper.h b/board/novatek/na51068/loader/Include/data_keeper.h new file mode 100755 index 000000000000..3a32e8f47db1 --- /dev/null +++ b/board/novatek/na51068/loader/Include/data_keeper.h @@ -0,0 +1,17 @@ +#ifndef __DATA_KEEPER_H__ +#define __DATA_KEEPER_H__ + +struct buffer_info_t { + unsigned char *data; + unsigned int size; + unsigned int read_which_chip; +}; + +typedef enum { + READ_FROM_RC = 0, + READ_FROM_EP0 = 1 +} READ_FROM_CHIP_TYPE; + +int read_system_data(unsigned int data_id, struct buffer_info_t *buffer); + +#endif diff --git a/board/novatek/na51068/loader/Include/debug.h b/board/novatek/na51068/loader/Include/debug.h new file mode 100755 index 000000000000..5cf99e50bdcb --- /dev/null +++ b/board/novatek/na51068/loader/Include/debug.h @@ -0,0 +1,31 @@ +/** + string header + + string header + + @file string.h + @ingroup mISYSClib + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef __NVT_DEBUG_H__ +#define __NVT_DEBUG_H__ + +#include "fuart.h" +/** \addtogroup mISYSClib */ +//@{ + +extern void debug_set_console(CONSOLE_OBJ *p_obj); +extern void debug_err(char *str); +extern void debug_err_var(char *str, int var); +extern void debug_msg(char *str); +extern void debug_msg_var(char *str, int var); +extern void debug_dump_addr(UINT32 addr, UINT32 size); + + +//@} + +#endif + diff --git a/board/novatek/na51068/loader/Include/fat.h b/board/novatek/na51068/loader/Include/fat.h new file mode 100755 index 000000000000..618767a91580 --- /dev/null +++ b/board/novatek/na51068/loader/Include/fat.h @@ -0,0 +1,48 @@ +/** + File system library + + This file is the library of file system + + @file fat.h + @ingroup mISYSFile + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _FAT_H +#define _FAT_H + +#include "board.h" +#include "StorageDef.h" +#include "compiler.h" +/** + @addtogroup mISYSFile +*/ +//@{ + +#define FAT_READ_TOTAL_FILE_LENGTH 0 + +typedef void (*TOGGLE_LED)(UINT8 WithCount); + +extern BOOL fat_initFAT(UINT32 uiBuf, UINT32 uiSize); +extern UINT32 fat_getPartitionCount(void); +extern BOOL fat_mountPartition(UINT32 partition_id); +extern void fat_closeFAT(void); +extern BOOL fat_open_rootfile(UINT8 *pfilename); +extern UINT32 fat_read_rootfile(UINT8 *pbuf, UINT32 uiRdLen); +extern UINT32 fat_getRootfileSize(void); +extern void fat_close_rootfile(void); +extern void fat_regToggleLED(TOGGLE_LED pToggleLED); +extern void fat_installAccessCB(STRG_ACCESS_CB accessCB); + +// For SD registration +extern BOOL fat_internal_initFAT(UINT32 uiBuf, UINT32 uiSize); +extern BOOL fat_internal_open_rootfile(UINT8 *pfilename); +extern UINT32 fat_internal_read_rootfile(UINT8 *pbuf, UINT32 uiRdLen); +extern void fat_internal_close_rootfile(void); + +//@} + +#endif + diff --git a/board/novatek/na51068/loader/Include/fdt.h b/board/novatek/na51068/loader/Include/fdt.h new file mode 100755 index 000000000000..0187749f19b6 --- /dev/null +++ b/board/novatek/na51068/loader/Include/fdt.h @@ -0,0 +1,111 @@ +#ifndef _FDT_H +#define _FDT_H +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * Copyright 2012 Kim Phillips, Freescale Semiconductor. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __ASSEMBLY__ + +struct fdt_header { + fdt32_t magic; /* magic word FDT_MAGIC */ + fdt32_t totalsize; /* total size of DT block */ + fdt32_t off_dt_struct; /* offset to structure */ + fdt32_t off_dt_strings; /* offset to strings */ + fdt32_t off_mem_rsvmap; /* offset to memory reserve map */ + fdt32_t version; /* format version */ + fdt32_t last_comp_version; /* last compatible version */ + + /* version 2 fields below */ + fdt32_t boot_cpuid_phys; /* Which physical CPU id we're + booting on */ + /* version 3 fields below */ + fdt32_t size_dt_strings; /* size of the strings block */ + + /* version 17 fields below */ + fdt32_t size_dt_struct; /* size of the structure block */ +}; + +struct fdt_reserve_entry { + fdt64_t address; + fdt64_t size; +}; + +struct fdt_node_header { + fdt32_t tag; + char name[0]; +}; + +struct fdt_property { + fdt32_t tag; + fdt32_t len; + fdt32_t nameoff; + char data[0]; +}; + +#endif /* !__ASSEMBLY */ + +#define FDT_MAGIC 0xd00dfeed /* 4: version, 4: total size */ +#define FDT_TAGSIZE sizeof(fdt32_t) + +#define FDT_BEGIN_NODE 0x1 /* Start node: full name */ +#define FDT_END_NODE 0x2 /* End node */ +#define FDT_PROP 0x3 /* Property: name off, + size, content */ +#define FDT_NOP 0x4 /* nop */ +#define FDT_END 0x9 + +#define FDT_V1_SIZE (7*sizeof(fdt32_t)) +#define FDT_V2_SIZE (FDT_V1_SIZE + sizeof(fdt32_t)) +#define FDT_V3_SIZE (FDT_V2_SIZE + sizeof(fdt32_t)) +#define FDT_V16_SIZE FDT_V3_SIZE +#define FDT_V17_SIZE (FDT_V16_SIZE + sizeof(fdt32_t)) + +#endif /* _FDT_H */ diff --git a/board/novatek/na51068/loader/Include/fdt/compiler.h b/board/novatek/na51068/loader/Include/fdt/compiler.h new file mode 100755 index 000000000000..7fa9b3831ab4 --- /dev/null +++ b/board/novatek/na51068/loader/Include/fdt/compiler.h @@ -0,0 +1,56 @@ +/* + * Keep all the ugly #ifdef for system stuff here + */ + +#ifndef __COMPILER_H__ +#define __COMPILER_H__ + +#ifndef NULL +#define NULL 0 +#endif + +#if 0 +#define uswap_16(x) (x) +#define uswap_32(x) (x) +#define _uswap_64(x, sfx) (x) +#else +#define uswap_16(x) \ + ((((x) & 0xff00) >> 8) | \ + (((x) & 0x00ff) << 8)) +#define uswap_32(x) \ + ((((x) & 0xff000000) >> 24) | \ + (((x) & 0x00ff0000) >> 8) | \ + (((x) & 0x0000ff00) << 8) | \ + (((x) & 0x000000ff) << 24)) +#define _uswap_64(x, sfx) \ + ((((x) & 0xff00000000000000##sfx) >> 56) | \ + (((x) & 0x00ff000000000000##sfx) >> 40) | \ + (((x) & 0x0000ff0000000000##sfx) >> 24) | \ + (((x) & 0x000000ff00000000##sfx) >> 8) | \ + (((x) & 0x00000000ff000000##sfx) << 8) | \ + (((x) & 0x0000000000ff0000##sfx) << 24) | \ + (((x) & 0x000000000000ff00##sfx) << 40) | \ + (((x) & 0x00000000000000ff##sfx) << 56)) +#endif +#if defined(__GNUC__) +#define uswap_64(x) _uswap_64(x, ull) +#else +#define uswap_64(x) _uswap_64(x, ) +#endif +#define cpu_to_le16(x) (x) +#define cpu_to_le32(x) (x) +#define cpu_to_le64(x) (x) +#define le16_to_cpu(x) (x) +#define le32_to_cpu(x) (x) +#define le64_to_cpu(x) (x) +#define cpu_to_be16(x) uswap_16(x) +#define cpu_to_be32(x) uswap_32(x) +#define cpu_to_be64(x) uswap_64(x) +#define be16_to_cpu(x) uswap_16(x) +#define be32_to_cpu(x) uswap_32(x) +#define be64_to_cpu(x) uswap_64(x) + +/* Type for `void *' pointers. */ +typedef unsigned long int uintptr_t; + +#endif diff --git a/board/novatek/na51068/loader/Include/fdt/fdt.h b/board/novatek/na51068/loader/Include/fdt/fdt.h new file mode 100755 index 000000000000..0187749f19b6 --- /dev/null +++ b/board/novatek/na51068/loader/Include/fdt/fdt.h @@ -0,0 +1,111 @@ +#ifndef _FDT_H +#define _FDT_H +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * Copyright 2012 Kim Phillips, Freescale Semiconductor. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __ASSEMBLY__ + +struct fdt_header { + fdt32_t magic; /* magic word FDT_MAGIC */ + fdt32_t totalsize; /* total size of DT block */ + fdt32_t off_dt_struct; /* offset to structure */ + fdt32_t off_dt_strings; /* offset to strings */ + fdt32_t off_mem_rsvmap; /* offset to memory reserve map */ + fdt32_t version; /* format version */ + fdt32_t last_comp_version; /* last compatible version */ + + /* version 2 fields below */ + fdt32_t boot_cpuid_phys; /* Which physical CPU id we're + booting on */ + /* version 3 fields below */ + fdt32_t size_dt_strings; /* size of the strings block */ + + /* version 17 fields below */ + fdt32_t size_dt_struct; /* size of the structure block */ +}; + +struct fdt_reserve_entry { + fdt64_t address; + fdt64_t size; +}; + +struct fdt_node_header { + fdt32_t tag; + char name[0]; +}; + +struct fdt_property { + fdt32_t tag; + fdt32_t len; + fdt32_t nameoff; + char data[0]; +}; + +#endif /* !__ASSEMBLY */ + +#define FDT_MAGIC 0xd00dfeed /* 4: version, 4: total size */ +#define FDT_TAGSIZE sizeof(fdt32_t) + +#define FDT_BEGIN_NODE 0x1 /* Start node: full name */ +#define FDT_END_NODE 0x2 /* End node */ +#define FDT_PROP 0x3 /* Property: name off, + size, content */ +#define FDT_NOP 0x4 /* nop */ +#define FDT_END 0x9 + +#define FDT_V1_SIZE (7*sizeof(fdt32_t)) +#define FDT_V2_SIZE (FDT_V1_SIZE + sizeof(fdt32_t)) +#define FDT_V3_SIZE (FDT_V2_SIZE + sizeof(fdt32_t)) +#define FDT_V16_SIZE FDT_V3_SIZE +#define FDT_V17_SIZE (FDT_V16_SIZE + sizeof(fdt32_t)) + +#endif /* _FDT_H */ diff --git a/board/novatek/na51068/loader/Include/fdt/libfdt.h b/board/novatek/na51068/loader/Include/fdt/libfdt.h new file mode 100755 index 000000000000..9cade83bb638 --- /dev/null +++ b/board/novatek/na51068/loader/Include/fdt/libfdt.h @@ -0,0 +1,1578 @@ +#ifndef _LIBFDT_H +#define _LIBFDT_H +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "libfdt_env.h" +#include "fdt.h" + +#define FDT_FIRST_SUPPORTED_VERSION 0x10 +#define FDT_LAST_SUPPORTED_VERSION 0x11 + +/* Error codes: informative error codes */ +#define FDT_ERR_NOTFOUND 1 + /* FDT_ERR_NOTFOUND: The requested node or property does not exist */ +#define FDT_ERR_EXISTS 2 + /* FDT_ERR_EXISTS: Attemped to create a node or property which + * already exists */ +#define FDT_ERR_NOSPACE 3 + /* FDT_ERR_NOSPACE: Operation needed to expand the device + * tree, but its buffer did not have sufficient space to + * contain the expanded tree. Use fdt_open_into() to move the + * device tree to a buffer with more space. */ + +/* Error codes: codes for bad parameters */ +#define FDT_ERR_BADOFFSET 4 + /* FDT_ERR_BADOFFSET: Function was passed a structure block + * offset which is out-of-bounds, or which points to an + * unsuitable part of the structure for the operation. */ +#define FDT_ERR_BADPATH 5 + /* FDT_ERR_BADPATH: Function was passed a badly formatted path + * (e.g. missing a leading / for a function which requires an + * absolute path) */ +#define FDT_ERR_BADPHANDLE 6 + /* FDT_ERR_BADPHANDLE: Function was passed an invalid phandle + * value. phandle values of 0 and -1 are not permitted. */ +#define FDT_ERR_BADSTATE 7 + /* FDT_ERR_BADSTATE: Function was passed an incomplete device + * tree created by the sequential-write functions, which is + * not sufficiently complete for the requested operation. */ + +/* Error codes: codes for bad device tree blobs */ +#define FDT_ERR_TRUNCATED 8 + /* FDT_ERR_TRUNCATED: Structure block of the given device tree + * ends without an FDT_END tag. */ +#define FDT_ERR_BADMAGIC 9 + /* FDT_ERR_BADMAGIC: Given "device tree" appears not to be a + * device tree at all - it is missing the flattened device + * tree magic number. */ +#define FDT_ERR_BADVERSION 10 + /* FDT_ERR_BADVERSION: Given device tree has a version which + * can't be handled by the requested operation. For + * read-write functions, this may mean that fdt_open_into() is + * required to convert the tree to the expected version. */ +#define FDT_ERR_BADSTRUCTURE 11 + /* FDT_ERR_BADSTRUCTURE: Given device tree has a corrupt + * structure block or other serious error (e.g. misnested + * nodes, or subnodes preceding properties). */ +#define FDT_ERR_BADLAYOUT 12 + /* FDT_ERR_BADLAYOUT: For read-write functions, the given + * device tree has it's sub-blocks in an order that the + * function can't handle (memory reserve map, then structure, + * then strings). Use fdt_open_into() to reorganize the tree + * into a form suitable for the read-write operations. */ + +/* "Can't happen" error indicating a bug in libfdt */ +#define FDT_ERR_INTERNAL 13 + /* FDT_ERR_INTERNAL: libfdt has failed an internal assertion. + * Should never be returned, if it is, it indicates a bug in + * libfdt itself. */ + +#define FDT_ERR_MAX 13 + +/**********************************************************************/ +/* Low-level functions (you probably don't need these) */ +/**********************************************************************/ + +const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen); +static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen) +{ + return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen); +} + +uint32_t fdt_next_tag(const void *fdt, int offset, int *nextoffset); + +/**********************************************************************/ +/* Traversal functions */ +/**********************************************************************/ + +int fdt_next_node(const void *fdt, int offset, int *depth); + +/** + * fdt_first_subnode() - get offset of first direct subnode + * + * @fdt: FDT blob + * @offset: Offset of node to check + * @return offset of first subnode, or -FDT_ERR_NOTFOUND if there is none + */ +int fdt_first_subnode(const void *fdt, int offset); + +/** + * fdt_next_subnode() - get offset of next direct subnode + * + * After first calling fdt_first_subnode(), call this function repeatedly to + * get direct subnodes of a parent node. + * + * @fdt: FDT blob + * @offset: Offset of previous subnode + * @return offset of next subnode, or -FDT_ERR_NOTFOUND if there are no more + * subnodes + */ +int fdt_next_subnode(const void *fdt, int offset); + +/**********************************************************************/ +/* General functions */ +/**********************************************************************/ + +#define fdt_get_header(fdt, field) \ + (fdt32_to_cpu(((const struct fdt_header *)(fdt))->field)) +#define fdt_magic(fdt) (fdt_get_header(fdt, magic)) +#define fdt_totalsize(fdt) (fdt_get_header(fdt, totalsize)) +#define fdt_off_dt_struct(fdt) (fdt_get_header(fdt, off_dt_struct)) +#define fdt_off_dt_strings(fdt) (fdt_get_header(fdt, off_dt_strings)) +#define fdt_off_mem_rsvmap(fdt) (fdt_get_header(fdt, off_mem_rsvmap)) +#define fdt_version(fdt) (fdt_get_header(fdt, version)) +#define fdt_last_comp_version(fdt) (fdt_get_header(fdt, last_comp_version)) +#define fdt_boot_cpuid_phys(fdt) (fdt_get_header(fdt, boot_cpuid_phys)) +#define fdt_size_dt_strings(fdt) (fdt_get_header(fdt, size_dt_strings)) +#define fdt_size_dt_struct(fdt) (fdt_get_header(fdt, size_dt_struct)) + +#define __fdt_set_hdr(name) \ + static inline void fdt_set_##name(void *fdt, uint32_t val) \ + { \ + struct fdt_header *fdth = (struct fdt_header*)fdt; \ + fdth->name = cpu_to_fdt32(val); \ + } +__fdt_set_hdr(magic); +__fdt_set_hdr(totalsize); +__fdt_set_hdr(off_dt_struct); +__fdt_set_hdr(off_dt_strings); +__fdt_set_hdr(off_mem_rsvmap); +__fdt_set_hdr(version); +__fdt_set_hdr(last_comp_version); +__fdt_set_hdr(boot_cpuid_phys); +__fdt_set_hdr(size_dt_strings); +__fdt_set_hdr(size_dt_struct); +#undef __fdt_set_hdr + +/** + * fdt_check_header - sanity check a device tree or possible device tree + * @fdt: pointer to data which might be a flattened device tree + * + * fdt_check_header() checks that the given buffer contains what + * appears to be a flattened device tree with sane information in its + * header. + * + * returns: + * 0, if the buffer appears to contain a valid device tree + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings, as above + */ +int fdt_check_header(const void *fdt); + +/** + * fdt_move - move a device tree around in memory + * @fdt: pointer to the device tree to move + * @buf: pointer to memory where the device is to be moved + * @bufsize: size of the memory space at buf + * + * fdt_move() relocates, if possible, the device tree blob located at + * fdt to the buffer at buf of size bufsize. The buffer may overlap + * with the existing device tree blob at fdt. Therefore, + * fdt_move(fdt, fdt, fdt_totalsize(fdt)) + * should always succeed. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, bufsize is insufficient to contain the device tree + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_move(const void *fdt, void *buf, int bufsize); + +/**********************************************************************/ +/* Read-only functions */ +/**********************************************************************/ + +/** + * fdt_string - retrieve a string from the strings block of a device tree + * @fdt: pointer to the device tree blob + * @stroffset: offset of the string within the strings block (native endian) + * + * fdt_string() retrieves a pointer to a single string from the + * strings block of the device tree blob at fdt. + * + * returns: + * a pointer to the string, on success + * NULL, if stroffset is out of bounds + */ +const char *fdt_string(const void *fdt, int stroffset); + +/** + * fdt_num_mem_rsv - retrieve the number of memory reserve map entries + * @fdt: pointer to the device tree blob + * + * Returns the number of entries in the device tree blob's memory + * reservation map. This does not include the terminating 0,0 entry + * or any other (0,0) entries reserved for expansion. + * + * returns: + * the number of entries + */ +int fdt_num_mem_rsv(const void *fdt); + +/** + * fdt_get_mem_rsv - retrieve one memory reserve map entry + * @fdt: pointer to the device tree blob + * @address, @size: pointers to 64-bit variables + * + * On success, *address and *size will contain the address and size of + * the n-th reserve map entry from the device tree blob, in + * native-endian format. + * + * returns: + * 0, on success + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size); + +/** + * fdt_subnode_offset_namelen - find a subnode based on substring + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * @namelen: number of characters of name to consider + * + * Identical to fdt_subnode_offset(), but only examine the first + * namelen characters of name for matching the subnode name. This is + * useful for finding subnodes based on a portion of a larger string, + * such as a full path. + */ +int fdt_subnode_offset_namelen(const void *fdt, int parentoffset, + const char *name, int namelen); +/** + * fdt_subnode_offset - find a subnode of a given node + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * + * fdt_subnode_offset() finds a subnode of the node at structure block + * offset parentoffset with the given name. name may include a unit + * address, in which case fdt_subnode_offset() will find the subnode + * with that unit address, or the unit address may be omitted, in + * which case fdt_subnode_offset() will find an arbitrary subnode + * whose name excluding unit address matches the given name. + * + * returns: + * structure block offset of the requested subnode (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested subnode does not exist + * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_subnode_offset(const void *fdt, int parentoffset, const char *name); + +/** + * fdt_path_offset - find a tree node by its full path + * @fdt: pointer to the device tree blob + * @path: full path of the node to locate + * + * fdt_path_offset() finds a node of a given path in the device tree. + * Each path component may omit the unit address portion, but the + * results of this are undefined if any such path component is + * ambiguous (that is if there are multiple nodes at the relevant + * level matching the given component, differentiated only by unit + * address). + * + * returns: + * structure block offset of the node with the requested path (>=0), on success + * -FDT_ERR_BADPATH, given path does not begin with '/' or is invalid + * -FDT_ERR_NOTFOUND, if the requested node does not exist + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_path_offset(const void *fdt, const char *path); + +/** + * fdt_get_name - retrieve the name of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of the starting node + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_name() retrieves the name (including unit address) of the + * device tree node at structure block offset nodeoffset. If lenp is + * non-NULL, the length of this name is also returned, in the integer + * pointed to by lenp. + * + * returns: + * pointer to the node's name, on success + * If lenp is non-NULL, *lenp contains the length of that name (>=0) + * NULL, on error + * if lenp is non-NULL *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +const char *fdt_get_name(const void *fdt, int nodeoffset, int *lenp); + +/** + * fdt_first_property_offset - find the offset of a node's first property + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of a node + * + * fdt_first_property_offset() finds the first property of the node at + * the given structure block offset. + * + * returns: + * structure block offset of the property (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested node has no properties + * -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_first_property_offset(const void *fdt, int nodeoffset); + +/** + * fdt_next_property_offset - step through a node's properties + * @fdt: pointer to the device tree blob + * @offset: structure block offset of a property + * + * fdt_next_property_offset() finds the property immediately after the + * one at the given structure block offset. This will be a property + * of the same node as the given property. + * + * returns: + * structure block offset of the next property (>=0), on success + * -FDT_ERR_NOTFOUND, if the given property is the last in its node + * -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_next_property_offset(const void *fdt, int offset); + +/** + * fdt_get_property_by_offset - retrieve the property at a given offset + * @fdt: pointer to the device tree blob + * @offset: offset of the property to retrieve + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_property_by_offset() retrieves a pointer to the + * fdt_property structure within the device tree blob at the given + * offset. If lenp is non-NULL, the length of the property value is + * also returned, in the integer pointed to by lenp. + * + * returns: + * pointer to the structure representing the property + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const struct fdt_property *fdt_get_property_by_offset(const void *fdt, + int offset, + int *lenp); + +/** + * fdt_get_property_namelen - find a property based on substring + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @namelen: number of characters of name to consider + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * Identical to fdt_get_property_namelen(), but only examine the first + * namelen characters of name for matching the property name. + */ +const struct fdt_property *fdt_get_property_namelen(const void *fdt, + int nodeoffset, + const char *name, + int namelen, int *lenp); + +/** + * fdt_get_property - find a given property in a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_property() retrieves a pointer to the fdt_property + * structure within the device tree blob corresponding to the property + * named 'name' of the node at offset nodeoffset. If lenp is + * non-NULL, the length of the property value is also returned, in the + * integer pointed to by lenp. + * + * returns: + * pointer to the structure representing the property + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_NOTFOUND, node does not have named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const struct fdt_property *fdt_get_property(const void *fdt, int nodeoffset, + const char *name, int *lenp); +static inline struct fdt_property *fdt_get_property_w(void *fdt, int nodeoffset, + const char *name, + int *lenp) +{ + return (struct fdt_property *)(uintptr_t) + fdt_get_property(fdt, nodeoffset, name, lenp); +} + +/** + * fdt_getprop_by_offset - retrieve the value of a property at a given offset + * @fdt: pointer to the device tree blob + * @ffset: offset of the property to read + * @namep: pointer to a string variable (will be overwritten) or NULL + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_getprop_by_offset() retrieves a pointer to the value of the + * property at structure block offset 'offset' (this will be a pointer + * to within the device blob itself, not a copy of the value). If + * lenp is non-NULL, the length of the property value is also + * returned, in the integer pointed to by lenp. If namep is non-NULL, + * the property's namne will also be returned in the char * pointed to + * by namep (this will be a pointer to within the device tree's string + * block, not a new copy of the name). + * + * returns: + * pointer to the property's value + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * if namep is non-NULL *namep contiains a pointer to the property + * name. + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const void *fdt_getprop_by_offset(const void *fdt, int offset, + const char **namep, int *lenp); + +/** + * fdt_getprop_namelen - get property value based on substring + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @namelen: number of characters of name to consider + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * Identical to fdt_getprop(), but only examine the first namelen + * characters of name for matching the property name. + */ +const void *fdt_getprop_namelen(const void *fdt, int nodeoffset, + const char *name, int namelen, int *lenp); + +/** + * fdt_getprop - retrieve the value of a given property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_getprop() retrieves a pointer to the value of the property + * named 'name' of the node at offset nodeoffset (this will be a + * pointer to within the device blob itself, not a copy of the value). + * If lenp is non-NULL, the length of the property value is also + * returned, in the integer pointed to by lenp. + * + * returns: + * pointer to the property's value + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_NOTFOUND, node does not have named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const void *fdt_getprop(const void *fdt, int nodeoffset, + const char *name, int *lenp); +static inline void *fdt_getprop_w(void *fdt, int nodeoffset, + const char *name, int *lenp) +{ + return (void *)(uintptr_t)fdt_getprop(fdt, nodeoffset, name, lenp); +} + +/** + * fdt_get_phandle - retrieve the phandle of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of the node + * + * fdt_get_phandle() retrieves the phandle of the device tree node at + * structure block offset nodeoffset. + * + * returns: + * the phandle of the node at nodeoffset, on success (!= 0, != -1) + * 0, if the node has no phandle, or another error occurs + */ +uint32_t fdt_get_phandle(const void *fdt, int nodeoffset); + +/** + * fdt_get_alias_namelen - get alias based on substring + * @fdt: pointer to the device tree blob + * @name: name of the alias th look up + * @namelen: number of characters of name to consider + * + * Identical to fdt_get_alias(), but only examine the first namelen + * characters of name for matching the alias name. + */ +const char *fdt_get_alias_namelen(const void *fdt, + const char *name, int namelen); + +/** + * fdt_get_alias - retrieve the path referenced by a given alias + * @fdt: pointer to the device tree blob + * @name: name of the alias to look up + * + * fdt_get_alias() retrieves the value of a given alias. That is, the + * value of the property named 'name' in the node /aliases. + * + * returns: + * a pointer to the expansion of the alias named 'name', if it exists + * NULL, if the given alias or the /aliases node does not exist + */ +const char *fdt_get_alias(const void *fdt, const char *name); + +/** + * fdt_get_path - determine the full path of a node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose path to find + * @buf: character buffer to contain the returned path (will be overwritten) + * @buflen: size of the character buffer at buf + * + * fdt_get_path() computes the full path of the node at offset + * nodeoffset, and records that path in the buffer at buf. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + * 0, on success + * buf contains the absolute path of the node at + * nodeoffset, as a NUL-terminated string. + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_NOSPACE, the path of the given node is longer than (bufsize-1) + * characters and will not fit in the given buffer. + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen); + +/** + * fdt_supernode_atdepth_offset - find a specific ancestor of a node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * @supernodedepth: depth of the ancestor to find + * @nodedepth: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_supernode_atdepth_offset() finds an ancestor of the given node + * at a specific depth from the root (where the root itself has depth + * 0, its immediate subnodes depth 1 and so forth). So + * fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, NULL); + * will always return 0, the offset of the root node. If the node at + * nodeoffset has depth D, then: + * fdt_supernode_atdepth_offset(fdt, nodeoffset, D, NULL); + * will return nodeoffset itself. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + + * structure block offset of the node at node offset's ancestor + * of depth supernodedepth (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag +* -FDT_ERR_NOTFOUND, supernodedepth was greater than the depth of nodeoffset + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset, + int supernodedepth, int *nodedepth); + +/** + * fdt_node_depth - find the depth of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * + * fdt_node_depth() finds the depth of a given node. The root node + * has depth 0, its immediate subnodes depth 1 and so forth. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + * depth of the node at nodeoffset (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_depth(const void *fdt, int nodeoffset); + +/** + * fdt_parent_offset - find the parent of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * + * fdt_parent_offset() locates the parent node of a given node (that + * is, it finds the offset of the node which contains the node at + * nodeoffset as a subnode). + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset, *twice*. + * + * returns: + * structure block offset of the parent of the node at nodeoffset + * (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_parent_offset(const void *fdt, int nodeoffset); + +/** + * fdt_node_offset_by_prop_value - find nodes with a given property value + * @fdt: pointer to the device tree blob + * @startoffset: only find nodes after this offset + * @propname: property name to check + * @propval: property value to search for + * @proplen: length of the value in propval + * + * fdt_node_offset_by_prop_value() returns the offset of the first + * node after startoffset, which has a property named propname whose + * value is of length proplen and has value equal to propval; or if + * startoffset is -1, the very first such node in the tree. + * + * To iterate through all nodes matching the criterion, the following + * idiom can be used: + * offset = fdt_node_offset_by_prop_value(fdt, -1, propname, + * propval, proplen); + * while (offset != -FDT_ERR_NOTFOUND) { + * ... other code here ... + * offset = fdt_node_offset_by_prop_value(fdt, offset, propname, + * propval, proplen); + * } + * + * Note the -1 in the first call to the function, if 0 is used here + * instead, the function will never locate the root node, even if it + * matches the criterion. + * + * returns: + * structure block offset of the located node (>= 0, >startoffset), + * on success + * -FDT_ERR_NOTFOUND, no node matching the criterion exists in the + * tree after startoffset + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_prop_value(const void *fdt, int startoffset, + const char *propname, + const void *propval, int proplen); + +/** + * fdt_node_offset_by_phandle - find the node with a given phandle + * @fdt: pointer to the device tree blob + * @phandle: phandle value + * + * fdt_node_offset_by_phandle() returns the offset of the node + * which has the given phandle value. If there is more than one node + * in the tree with the given phandle (an invalid tree), results are + * undefined. + * + * returns: + * structure block offset of the located node (>= 0), on success + * -FDT_ERR_NOTFOUND, no node with that phandle exists + * -FDT_ERR_BADPHANDLE, given phandle value was invalid (0 or -1) + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle); + +/** + * fdt_node_check_compatible: check a node's compatible property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of a tree node + * @compatible: string to match against + * + * + * fdt_node_check_compatible() returns 0 if the given node contains a + * 'compatible' property with the given string as one of its elements, + * it returns non-zero otherwise, or on error. + * + * returns: + * 0, if the node has a 'compatible' property listing the given string + * 1, if the node has a 'compatible' property, but it does not list + * the given string + * -FDT_ERR_NOTFOUND, if the given node has no 'compatible' property + * -FDT_ERR_BADOFFSET, if nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_check_compatible(const void *fdt, int nodeoffset, + const char *compatible); + +/** + * fdt_node_offset_by_compatible - find nodes with a given 'compatible' value + * @fdt: pointer to the device tree blob + * @startoffset: only find nodes after this offset + * @compatible: 'compatible' string to match against + * + * fdt_node_offset_by_compatible() returns the offset of the first + * node after startoffset, which has a 'compatible' property which + * lists the given compatible string; or if startoffset is -1, the + * very first such node in the tree. + * + * To iterate through all nodes matching the criterion, the following + * idiom can be used: + * offset = fdt_node_offset_by_compatible(fdt, -1, compatible); + * while (offset != -FDT_ERR_NOTFOUND) { + * ... other code here ... + * offset = fdt_node_offset_by_compatible(fdt, offset, compatible); + * } + * + * Note the -1 in the first call to the function, if 0 is used here + * instead, the function will never locate the root node, even if it + * matches the criterion. + * + * returns: + * structure block offset of the located node (>= 0, >startoffset), + * on success + * -FDT_ERR_NOTFOUND, no node matching the criterion exists in the + * tree after startoffset + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_compatible(const void *fdt, int startoffset, + const char *compatible); + +/** + * fdt_stringlist_contains - check a string list property for a string + * @strlist: Property containing a list of strings to check + * @listlen: Length of property + * @str: String to search for + * + * This is a utility function provided for convenience. The list contains + * one or more strings, each terminated by \0, as is found in a device tree + * "compatible" property. + * + * @return: 1 if the string is found in the list, 0 not found, or invalid list + */ +int fdt_stringlist_contains(const char *strlist, int listlen, const char *str); + +/**********************************************************************/ +/* Write-in-place functions */ +/**********************************************************************/ + +/** + * fdt_setprop_inplace - change a property's value, but not its size + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: pointer to data to replace the property value with + * @len: length of the property value + * + * fdt_setprop_inplace() replaces the value of a given property with + * the data in val, of length len. This function cannot change the + * size of a property, and so will only work if len is equal to the + * current length of the property. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if len is not equal to the property's current length + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + +/** + * fdt_setprop_inplace_u32 - change the value of a 32-bit integer property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value to replace the property with + * + * fdt_setprop_inplace_u32() replaces the value of a given property + * with the 32-bit integer value in val, converting val to big-endian + * if necessary. This function cannot change the size of a property, + * and so will only work if the property already exists and has length + * 4. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if the property's length is not equal to 4 + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_inplace_u32(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_setprop_inplace(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_inplace_u64 - change the value of a 64-bit integer property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value to replace the property with + * + * fdt_setprop_inplace_u64() replaces the value of a given property + * with the 64-bit integer value in val, converting val to big-endian + * if necessary. This function cannot change the size of a property, + * and so will only work if the property already exists and has length + * 8. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if the property's length is not equal to 8 + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_inplace_u64(void *fdt, int nodeoffset, + const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_setprop_inplace(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_inplace_cell - change the value of a single-cell property + * + * This is an alternative name for fdt_setprop_inplace_u32() + */ +static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + return fdt_setprop_inplace_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_nop_property - replace a property with nop tags + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to nop + * @name: name of the property to nop + * + * fdt_nop_property() will replace a given property's representation + * in the blob with FDT_NOP tags, effectively removing it from the + * tree. + * + * This function will alter only the bytes in the blob which contain + * the property, and will not alter or move any other part of the + * tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_nop_property(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_nop_node - replace a node (subtree) with nop tags + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node to nop + * + * fdt_nop_node() will replace a given node's representation in the + * blob, including all its subnodes, if any, with FDT_NOP tags, + * effectively removing it from the tree. + * + * This function will alter only the bytes in the blob which contain + * the node and its properties and subnodes, and will not alter or + * move any other part of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_nop_node(void *fdt, int nodeoffset); + +/**********************************************************************/ +/* Sequential write functions */ +/**********************************************************************/ + +int fdt_create(void *buf, int bufsize); +int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size); +int fdt_finish_reservemap(void *fdt); +int fdt_begin_node(void *fdt, const char *name); +int fdt_property(void *fdt, const char *name, const void *val, int len); +static inline int fdt_property_u32(void *fdt, const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_property(fdt, name, &tmp, sizeof(tmp)); +} +static inline int fdt_property_u64(void *fdt, const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_property(fdt, name, &tmp, sizeof(tmp)); +} +static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val) +{ + return fdt_property_u32(fdt, name, val); +} +#define fdt_property_string(fdt, name, str) \ + fdt_property(fdt, name, str, strlen(str)+1) +int fdt_end_node(void *fdt); +int fdt_finish(void *fdt); + +/**********************************************************************/ +/* Read-write functions */ +/**********************************************************************/ + +int fdt_create_empty_tree(void *buf, int bufsize); +int fdt_open_into(const void *fdt, void *buf, int bufsize); +int fdt_pack(void *fdt); + +/** + * fdt_add_mem_rsv - add one memory reserve map entry + * @fdt: pointer to the device tree blob + * @address, @size: 64-bit values (native endian) + * + * Adds a reserve map entry to the given blob reserving a region at + * address address of length size. + * + * This function will insert data into the reserve map and will + * therefore change the indexes of some entries in the table. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new reservation entry + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size); + +/** + * fdt_del_mem_rsv - remove a memory reserve map entry + * @fdt: pointer to the device tree blob + * @n: entry to remove + * + * fdt_del_mem_rsv() removes the n-th memory reserve map entry from + * the blob. + * + * This function will delete data from the reservation table and will + * therefore change the indexes of some entries in the table. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, there is no entry of the given index (i.e. there + * are less than n+1 reserve map entries) + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_del_mem_rsv(void *fdt, int n); + +/** + * fdt_set_name - change the name of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of a node + * @name: name to give the node + * + * fdt_set_name() replaces the name (including unit address, if any) + * of the given node with the given string. NOTE: this function can't + * efficiently check if the new name is unique amongst the given + * node's siblings; results are undefined if this function is invoked + * with a name equal to one of the given node's siblings. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob + * to contain the new name + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_set_name(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_setprop - create or change a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: pointer to data to set the property value to + * @len: length of the property value + * + * fdt_setprop() sets the value of the named property in the given + * node to the given value and length, creating the property if it + * does not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_setprop(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + +/** + * fdt_setprop_u32 - set a property to a 32-bit integer + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value for the property (native endian) + * + * fdt_setprop_u32() sets the value of the named property in the given + * node to the given 32-bit integer value (converting to big-endian if + * necessary), or creates a new property with that value if it does + * not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_u32(void *fdt, int nodeoffset, const char *name, + uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_setprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_u64 - set a property to a 64-bit integer + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value for the property (native endian) + * + * fdt_setprop_u64() sets the value of the named property in the given + * node to the given 64-bit integer value (converting to big-endian if + * necessary), or creates a new property with that value if it does + * not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_u64(void *fdt, int nodeoffset, const char *name, + uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_setprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_cell - set a property to a single cell value + * + * This is an alternative name for fdt_setprop_u32() + */ +static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name, + uint32_t val) +{ + return fdt_setprop_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_setprop_string - set a property to a string value + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @str: string value for the property + * + * fdt_setprop_string() sets the value of the named property in the + * given node to the given string value (using the length of the + * string to determine the new length of the property), or creates a + * new property with that value if it does not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +#define fdt_setprop_string(fdt, nodeoffset, name, str) \ + fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1) + +/** + * fdt_appendprop - append to or create a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to append to + * @val: pointer to data to append to the property value + * @len: length of the data to append to the property value + * + * fdt_appendprop() appends the value to the named property in the + * given node, creating the property if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_appendprop(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + +/** + * fdt_appendprop_u32 - append a 32-bit integer value to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value to append to the property (native endian) + * + * fdt_appendprop_u32() appends the given 32-bit integer value + * (converting to big-endian if necessary) to the value of the named + * property in the given node, or creates a new property with that + * value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_appendprop_u32(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_appendprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_appendprop_u64 - append a 64-bit integer value to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value to append to the property (native endian) + * + * fdt_appendprop_u64() appends the given 64-bit integer value + * (converting to big-endian if necessary) to the value of the named + * property in the given node, or creates a new property with that + * value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_appendprop_u64(void *fdt, int nodeoffset, + const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_appendprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_appendprop_cell - append a single cell value to a property + * + * This is an alternative name for fdt_appendprop_u32() + */ +static inline int fdt_appendprop_cell(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + return fdt_appendprop_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_appendprop_string - append a string to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @str: string value to append to the property + * + * fdt_appendprop_string() appends the given string to the value of + * the named property in the given node, or creates a new property + * with that value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +#define fdt_appendprop_string(fdt, nodeoffset, name, str) \ + fdt_appendprop((fdt), (nodeoffset), (name), (str), strlen(str)+1) + +/** + * fdt_delprop - delete a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to nop + * @name: name of the property to nop + * + * fdt_del_property() will delete the given property. + * + * This function will delete data from the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_delprop(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_add_subnode_namelen - creates a new node based on substring + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * @namelen: number of characters of name to consider + * + * Identical to fdt_add_subnode(), but use only the first namelen + * characters of name as the name of the new node. This is useful for + * creating subnodes based on a portion of a larger string, such as a + * full path. + */ +int fdt_add_subnode_namelen(void *fdt, int parentoffset, + const char *name, int namelen); + +/** + * fdt_add_subnode - creates a new node + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * + * fdt_add_subnode() creates a new node as a subnode of the node at + * structure block offset parentoffset, with the given name (which + * should include the unit address, if any). + * + * This function will insert data into the blob, and will therefore + * change the offsets of some existing nodes. + + * returns: + * structure block offset of the created nodeequested subnode (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested subnode does not exist + * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag + * -FDT_ERR_EXISTS, if the node at parentoffset already has a subnode of + * the given name + * -FDT_ERR_NOSPACE, if there is insufficient free space in the + * blob to contain the new node + * -FDT_ERR_NOSPACE + * -FDT_ERR_BADLAYOUT + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_add_subnode(void *fdt, int parentoffset, const char *name); + +/** + * fdt_del_node - delete a node (subtree) + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node to nop + * + * fdt_del_node() will remove the given node, including all its + * subnodes if any, from the blob. + * + * This function will delete data from the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_del_node(void *fdt, int nodeoffset); + +/**********************************************************************/ +/* Debugging / informational functions */ +/**********************************************************************/ + +const char *fdt_strerror(int errval); + +struct fdt_region { + int offset; + int size; +}; + +/** + * fdt_find_regions() - find regions in device tree + * + * Given a list of nodes to include and properties to exclude, find + * the regions of the device tree which describe those included parts. + * + * The intent is to get a list of regions which will be invariant provided + * those parts are invariant. For example, if you request a list of regions + * for all nodes but exclude the property "data", then you will get the + * same region contents regardless of any change to "data" properties. + * + * This function can be used to produce a byte-stream to send to a hashing + * function to verify that critical parts of the FDT have not changed. + * + * Nodes which are given in 'inc' are included in the region list, as + * are the names of the immediate subnodes nodes (but not the properties + * or subnodes of those subnodes). + * + * For eaxample "/" means to include the root node, all root properties + * and the FDT_BEGIN_NODE and FDT_END_NODE of all subnodes of /. The latter + * ensures that we capture the names of the subnodes. In a hashing situation + * it prevents the root node from changing at all Any change to non-excluded + * properties, names of subnodes or number of subnodes would be detected. + * + * When used with FITs this provides the ability to hash and sign parts of + * the FIT based on different configurations in the FIT. Then it is + * impossible to change anything about that configuration (include images + * attached to the configuration), but it may be possible to add new + * configurations, new images or new signatures within the existing + * framework. + * + * Adding new properties to a device tree may result in the string table + * being extended (if the new property names are different from those + * already added). This function can optionally include a region for + * the string table so that this can be part of the hash too. + * + * The device tree header is not included in the list. + * + * @fdt: Device tree to check + * @inc: List of node paths to included + * @inc_count: Number of node paths in list + * @exc_prop: List of properties names to exclude + * @exc_prop_count: Number of properties in exclude list + * @region: Returns list of regions + * @max_region: Maximum length of region list + * @path: Pointer to a temporary string for the function to use for + * building path names + * @path_len: Length of path, must be large enough to hold the longest + * path in the tree + * @add_string_tab: 1 to add a region for the string table + * @return number of regions in list. If this is >max_regions then the + * region array was exhausted. You should increase max_regions and try + * the call again. + */ +int fdt_find_regions(const void *fdt, char * const inc[], int inc_count, + char * const exc_prop[], int exc_prop_count, + struct fdt_region region[], int max_regions, + char *path, int path_len, int add_string_tab); + +#endif /* _LIBFDT_H */ diff --git a/board/novatek/na51068/loader/Include/fdt/libfdt_env.h b/board/novatek/na51068/loader/Include/fdt/libfdt_env.h new file mode 100755 index 000000000000..5573b3f8c523 --- /dev/null +++ b/board/novatek/na51068/loader/Include/fdt/libfdt_env.h @@ -0,0 +1,63 @@ +/* + * libfdt - Flat Device Tree manipulation (build/run environment adaptation) + * Copyright (C) 2007 Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com + * Original version written by David Gibson, IBM Corporation. + * + * SPDX-License-Identifier: LGPL-2.1+ + */ + +#ifndef _LIBFDT_ENV_H +#define _LIBFDT_ENV_H + +#include "compiler.h" + +typedef __signed__ char __s8; +typedef unsigned char __u8; + +typedef __signed__ short __s16; +typedef unsigned short __u16; + +typedef __signed__ int __s32; +typedef unsigned int __u32; + +#if defined(__GNUC__) +__extension__ typedef __signed__ long long __s64; +__extension__ typedef unsigned long long __u64; +#endif + +typedef __u8 uint8_t; +typedef __u16 uint16_t; +typedef __u32 uint32_t; + +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) +typedef __u64 uint64_t; +typedef __u64 u_int64_t; +typedef __s64 int64_t; +#endif + +#define __bitwise + +typedef __u16 __bitwise __le16; +typedef __u16 __bitwise __be16; +typedef __u32 __bitwise __le32; +typedef __u32 __bitwise __be32; +#if defined(__GNUC__) +typedef __u64 __bitwise __le64; +typedef __u64 __bitwise __be64; +#endif + +extern struct fdt_header *working_fdt; /* Pointer to the working fdt */ + +typedef __be16 fdt16_t; +typedef __be32 fdt32_t; +typedef __be64 fdt64_t; + +#define fdt32_to_cpu(x) be32_to_cpu(x) +#define cpu_to_fdt32(x) cpu_to_be32(x) +#define fdt64_to_cpu(x) be64_to_cpu(x) +#define cpu_to_fdt64(x) cpu_to_be64(x) + +/* adding a ramdisk needs 0x44 bytes in version 2008.10 */ +#define FDT_RAMDISK_OVERHEAD 0x80 + +#endif /* _LIBFDT_ENV_H */ diff --git a/board/novatek/na51068/loader/Include/fuart.h b/board/novatek/na51068/loader/Include/fuart.h new file mode 100755 index 000000000000..50584e8a43b0 --- /dev/null +++ b/board/novatek/na51068/loader/Include/fuart.h @@ -0,0 +1,81 @@ +/** + Header file for UART + + This file is the header file for UART driver + + @file fuart.h + @ingroup mIIOUART + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + + +#ifndef _FUART_H +#define _FUART_H + +#include "board.h" + +/** + @addtogroup mIIOUART +*/ + /** + Macro to generate dummy element for enum type to expand enum size to word (4 bytes) + */ + //@{ + #ifndef ENUM_DUMMY4WORD + #define ENUM_DUMMY4WORD(name) E_##name = 0x10000000 + #endif + //@} +//@} +//@{ +typedef enum { + CONSOLE_UART0, + CONSOLE_UART1, + + ENUM_DUMMY4WORD(UART_CONSOLE_CH) +} UART_CONSOLE_CH; + + +typedef struct _CONSOLE { + void (*hook)(void); ///< start this object + void (*putc)(char c); ///< console input funciton pointer + unsigned char (*getc)(void); ///< console output function point +} CONSOLE_OBJ, *PCONSOLE_OBJ; + +/** + @name Put system UART string + + Print string to UART + + @param[in] m printed string +*/ +//@{ +//#define uart_putSystemUARTStr(m) fLib_PutSerialStr(m) ///< Print string MACRO +//@} + +/** + @name Put system UART character + + Print character to UART + + @param[in] m printed character +*/ +//@{ +#define fLib_PutSerialChar(m) serial_putc(m) +#define uart_putSystemUARTChar(m) fLib_PutSerialChar(m) ///< Print character MACRO +//@} + + + + +void serial_init(void); +unsigned char serial_getc(void); +void serial_putc(char c); +void uart_putSystemUARTStr(char *str); +PCONSOLE_OBJ get_uart_object(UART_CONSOLE_CH uart_ch); + + +//@} + +#endif diff --git a/board/novatek/na51068/loader/Include/global.h b/board/novatek/na51068/loader/Include/global.h new file mode 100755 index 000000000000..c26677328728 --- /dev/null +++ b/board/novatek/na51068/loader/Include/global.h @@ -0,0 +1,67 @@ +/** + Global utility header file + + Global utility header file + + @file global.h + @ingroup mISYSUtil + @note Nothing +*/ + +#ifndef _GLOBAL_H +#define _GLOBAL_H + +#include "board.h" + + +#define BOOT_SOURCE_SPI 0x00 +#define BOOT_SOURCE_SPI_NAND 0x01 +#define BOOT_SOURCE_USB 0x02 +#define BOOT_SOURCE_ETHERNET 0x03 +#define BOOT_SOURCE_UART 0x04 +#define BOOT_SOURCE_CARD 0x05 + +#define BOOT_SOURCE_MSK 0x07 + +#define CHIPVER_A 0x0 +#define CHIPVER_B 0x1 + +/** + @addtogroup mISYSUtil +*/ +//@{ +extern char* Dec2HexStr(UINT32 data); +extern void PrintDec2Hex(UINT32 data) __attribute__ ((section (".part1"))); +extern char* Dec2HexStr2Bytes(UINT32 data); +extern void PrintDec2HexStr2Bytes(UINT32 data) __attribute__ ((section (".part1"))); +extern UINT32 DecStr2Int(char* str); +extern UINT32 bitCount(UINT32 data); +extern void exit(int num); + +extern int printf(char const *, ...) __attribute__ ((section (".part1")));; +extern BOOL utl_is_sram_fw(UINT32 fw_addr); +extern UINT32 utl_get_bootsrc(void); +extern UINT32 utl_get_chipversion(void); +extern void UTL_setDrvTmpBufferAddress(UINT32 addr); +extern UINT32 UTL_getDrvTmpBufferAddress(void); + +#if 0 +extern BOOL UTL_canUpdateSecKey(void); +extern BOOL utl_is_sram_fw(UINT32 fw_addr); +extern void utl_test_checksum(UINT32 addr, UINT32 size); +extern void utl_dram_protect_enable(UINT32 addr, UINT32 size); +extern void utl_dram_protect_disable(void); +extern UINT32 utl_dram_protect_check(void); +extern UINT32 utl_dram_get_size(void); + +extern void load_dram_scan(UINT32 addr, UINT32 size) __attribute__ ((section (".dram_text"))); + +extern UINT32 dma_get_capacity(void); +#endif +extern __attribute__((target("thumb2"))) void udelay(UINT32 US) __attribute__ ((section (".part1"))); +extern __attribute__((target("thumb2"))) void timer0_tm1_init(void) __attribute__ ((section (".part1"))); + +#define timer_getSysTick() ((*(UINT32 volatile *)(REG_TMR010_BASE + 0x10)) / 16) +//@} + +#endif diff --git a/board/novatek/na51068/loader/Include/kprint.h b/board/novatek/na51068/loader/Include/kprint.h new file mode 100755 index 000000000000..4f1aa6653899 --- /dev/null +++ b/board/novatek/na51068/loader/Include/kprint.h @@ -0,0 +1,29 @@ +#ifndef __KPRINT_H__ +#define __KPRINT_H__ + +extern void KPrint(char const *, ...); +extern void putc(const char c); +extern void puts(const char *s); + +/* +#ifndef _VALIST +#define _VALIST +typedef char *va_list; +#endif*/ + +/* + * Storage alignment properties + */ +#define _AUPBND (sizeof(int) - 1) +#define _ADNBND (sizeof(int) - 1) + +/* + * Variable argument list macro definitions + */ +#define _bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) +#define va_arg(ap, T) (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND)))) +#define va_end(ap) (void) 0 +#define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND)))) + +#endif /* __KPRINT_H__ */ + diff --git a/board/novatek/na51068/loader/Include/libfdt.h b/board/novatek/na51068/loader/Include/libfdt.h new file mode 100755 index 000000000000..9cade83bb638 --- /dev/null +++ b/board/novatek/na51068/loader/Include/libfdt.h @@ -0,0 +1,1578 @@ +#ifndef _LIBFDT_H +#define _LIBFDT_H +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "libfdt_env.h" +#include "fdt.h" + +#define FDT_FIRST_SUPPORTED_VERSION 0x10 +#define FDT_LAST_SUPPORTED_VERSION 0x11 + +/* Error codes: informative error codes */ +#define FDT_ERR_NOTFOUND 1 + /* FDT_ERR_NOTFOUND: The requested node or property does not exist */ +#define FDT_ERR_EXISTS 2 + /* FDT_ERR_EXISTS: Attemped to create a node or property which + * already exists */ +#define FDT_ERR_NOSPACE 3 + /* FDT_ERR_NOSPACE: Operation needed to expand the device + * tree, but its buffer did not have sufficient space to + * contain the expanded tree. Use fdt_open_into() to move the + * device tree to a buffer with more space. */ + +/* Error codes: codes for bad parameters */ +#define FDT_ERR_BADOFFSET 4 + /* FDT_ERR_BADOFFSET: Function was passed a structure block + * offset which is out-of-bounds, or which points to an + * unsuitable part of the structure for the operation. */ +#define FDT_ERR_BADPATH 5 + /* FDT_ERR_BADPATH: Function was passed a badly formatted path + * (e.g. missing a leading / for a function which requires an + * absolute path) */ +#define FDT_ERR_BADPHANDLE 6 + /* FDT_ERR_BADPHANDLE: Function was passed an invalid phandle + * value. phandle values of 0 and -1 are not permitted. */ +#define FDT_ERR_BADSTATE 7 + /* FDT_ERR_BADSTATE: Function was passed an incomplete device + * tree created by the sequential-write functions, which is + * not sufficiently complete for the requested operation. */ + +/* Error codes: codes for bad device tree blobs */ +#define FDT_ERR_TRUNCATED 8 + /* FDT_ERR_TRUNCATED: Structure block of the given device tree + * ends without an FDT_END tag. */ +#define FDT_ERR_BADMAGIC 9 + /* FDT_ERR_BADMAGIC: Given "device tree" appears not to be a + * device tree at all - it is missing the flattened device + * tree magic number. */ +#define FDT_ERR_BADVERSION 10 + /* FDT_ERR_BADVERSION: Given device tree has a version which + * can't be handled by the requested operation. For + * read-write functions, this may mean that fdt_open_into() is + * required to convert the tree to the expected version. */ +#define FDT_ERR_BADSTRUCTURE 11 + /* FDT_ERR_BADSTRUCTURE: Given device tree has a corrupt + * structure block or other serious error (e.g. misnested + * nodes, or subnodes preceding properties). */ +#define FDT_ERR_BADLAYOUT 12 + /* FDT_ERR_BADLAYOUT: For read-write functions, the given + * device tree has it's sub-blocks in an order that the + * function can't handle (memory reserve map, then structure, + * then strings). Use fdt_open_into() to reorganize the tree + * into a form suitable for the read-write operations. */ + +/* "Can't happen" error indicating a bug in libfdt */ +#define FDT_ERR_INTERNAL 13 + /* FDT_ERR_INTERNAL: libfdt has failed an internal assertion. + * Should never be returned, if it is, it indicates a bug in + * libfdt itself. */ + +#define FDT_ERR_MAX 13 + +/**********************************************************************/ +/* Low-level functions (you probably don't need these) */ +/**********************************************************************/ + +const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen); +static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen) +{ + return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen); +} + +uint32_t fdt_next_tag(const void *fdt, int offset, int *nextoffset); + +/**********************************************************************/ +/* Traversal functions */ +/**********************************************************************/ + +int fdt_next_node(const void *fdt, int offset, int *depth); + +/** + * fdt_first_subnode() - get offset of first direct subnode + * + * @fdt: FDT blob + * @offset: Offset of node to check + * @return offset of first subnode, or -FDT_ERR_NOTFOUND if there is none + */ +int fdt_first_subnode(const void *fdt, int offset); + +/** + * fdt_next_subnode() - get offset of next direct subnode + * + * After first calling fdt_first_subnode(), call this function repeatedly to + * get direct subnodes of a parent node. + * + * @fdt: FDT blob + * @offset: Offset of previous subnode + * @return offset of next subnode, or -FDT_ERR_NOTFOUND if there are no more + * subnodes + */ +int fdt_next_subnode(const void *fdt, int offset); + +/**********************************************************************/ +/* General functions */ +/**********************************************************************/ + +#define fdt_get_header(fdt, field) \ + (fdt32_to_cpu(((const struct fdt_header *)(fdt))->field)) +#define fdt_magic(fdt) (fdt_get_header(fdt, magic)) +#define fdt_totalsize(fdt) (fdt_get_header(fdt, totalsize)) +#define fdt_off_dt_struct(fdt) (fdt_get_header(fdt, off_dt_struct)) +#define fdt_off_dt_strings(fdt) (fdt_get_header(fdt, off_dt_strings)) +#define fdt_off_mem_rsvmap(fdt) (fdt_get_header(fdt, off_mem_rsvmap)) +#define fdt_version(fdt) (fdt_get_header(fdt, version)) +#define fdt_last_comp_version(fdt) (fdt_get_header(fdt, last_comp_version)) +#define fdt_boot_cpuid_phys(fdt) (fdt_get_header(fdt, boot_cpuid_phys)) +#define fdt_size_dt_strings(fdt) (fdt_get_header(fdt, size_dt_strings)) +#define fdt_size_dt_struct(fdt) (fdt_get_header(fdt, size_dt_struct)) + +#define __fdt_set_hdr(name) \ + static inline void fdt_set_##name(void *fdt, uint32_t val) \ + { \ + struct fdt_header *fdth = (struct fdt_header*)fdt; \ + fdth->name = cpu_to_fdt32(val); \ + } +__fdt_set_hdr(magic); +__fdt_set_hdr(totalsize); +__fdt_set_hdr(off_dt_struct); +__fdt_set_hdr(off_dt_strings); +__fdt_set_hdr(off_mem_rsvmap); +__fdt_set_hdr(version); +__fdt_set_hdr(last_comp_version); +__fdt_set_hdr(boot_cpuid_phys); +__fdt_set_hdr(size_dt_strings); +__fdt_set_hdr(size_dt_struct); +#undef __fdt_set_hdr + +/** + * fdt_check_header - sanity check a device tree or possible device tree + * @fdt: pointer to data which might be a flattened device tree + * + * fdt_check_header() checks that the given buffer contains what + * appears to be a flattened device tree with sane information in its + * header. + * + * returns: + * 0, if the buffer appears to contain a valid device tree + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings, as above + */ +int fdt_check_header(const void *fdt); + +/** + * fdt_move - move a device tree around in memory + * @fdt: pointer to the device tree to move + * @buf: pointer to memory where the device is to be moved + * @bufsize: size of the memory space at buf + * + * fdt_move() relocates, if possible, the device tree blob located at + * fdt to the buffer at buf of size bufsize. The buffer may overlap + * with the existing device tree blob at fdt. Therefore, + * fdt_move(fdt, fdt, fdt_totalsize(fdt)) + * should always succeed. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, bufsize is insufficient to contain the device tree + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_move(const void *fdt, void *buf, int bufsize); + +/**********************************************************************/ +/* Read-only functions */ +/**********************************************************************/ + +/** + * fdt_string - retrieve a string from the strings block of a device tree + * @fdt: pointer to the device tree blob + * @stroffset: offset of the string within the strings block (native endian) + * + * fdt_string() retrieves a pointer to a single string from the + * strings block of the device tree blob at fdt. + * + * returns: + * a pointer to the string, on success + * NULL, if stroffset is out of bounds + */ +const char *fdt_string(const void *fdt, int stroffset); + +/** + * fdt_num_mem_rsv - retrieve the number of memory reserve map entries + * @fdt: pointer to the device tree blob + * + * Returns the number of entries in the device tree blob's memory + * reservation map. This does not include the terminating 0,0 entry + * or any other (0,0) entries reserved for expansion. + * + * returns: + * the number of entries + */ +int fdt_num_mem_rsv(const void *fdt); + +/** + * fdt_get_mem_rsv - retrieve one memory reserve map entry + * @fdt: pointer to the device tree blob + * @address, @size: pointers to 64-bit variables + * + * On success, *address and *size will contain the address and size of + * the n-th reserve map entry from the device tree blob, in + * native-endian format. + * + * returns: + * 0, on success + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size); + +/** + * fdt_subnode_offset_namelen - find a subnode based on substring + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * @namelen: number of characters of name to consider + * + * Identical to fdt_subnode_offset(), but only examine the first + * namelen characters of name for matching the subnode name. This is + * useful for finding subnodes based on a portion of a larger string, + * such as a full path. + */ +int fdt_subnode_offset_namelen(const void *fdt, int parentoffset, + const char *name, int namelen); +/** + * fdt_subnode_offset - find a subnode of a given node + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * + * fdt_subnode_offset() finds a subnode of the node at structure block + * offset parentoffset with the given name. name may include a unit + * address, in which case fdt_subnode_offset() will find the subnode + * with that unit address, or the unit address may be omitted, in + * which case fdt_subnode_offset() will find an arbitrary subnode + * whose name excluding unit address matches the given name. + * + * returns: + * structure block offset of the requested subnode (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested subnode does not exist + * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_subnode_offset(const void *fdt, int parentoffset, const char *name); + +/** + * fdt_path_offset - find a tree node by its full path + * @fdt: pointer to the device tree blob + * @path: full path of the node to locate + * + * fdt_path_offset() finds a node of a given path in the device tree. + * Each path component may omit the unit address portion, but the + * results of this are undefined if any such path component is + * ambiguous (that is if there are multiple nodes at the relevant + * level matching the given component, differentiated only by unit + * address). + * + * returns: + * structure block offset of the node with the requested path (>=0), on success + * -FDT_ERR_BADPATH, given path does not begin with '/' or is invalid + * -FDT_ERR_NOTFOUND, if the requested node does not exist + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_path_offset(const void *fdt, const char *path); + +/** + * fdt_get_name - retrieve the name of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of the starting node + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_name() retrieves the name (including unit address) of the + * device tree node at structure block offset nodeoffset. If lenp is + * non-NULL, the length of this name is also returned, in the integer + * pointed to by lenp. + * + * returns: + * pointer to the node's name, on success + * If lenp is non-NULL, *lenp contains the length of that name (>=0) + * NULL, on error + * if lenp is non-NULL *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +const char *fdt_get_name(const void *fdt, int nodeoffset, int *lenp); + +/** + * fdt_first_property_offset - find the offset of a node's first property + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of a node + * + * fdt_first_property_offset() finds the first property of the node at + * the given structure block offset. + * + * returns: + * structure block offset of the property (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested node has no properties + * -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_first_property_offset(const void *fdt, int nodeoffset); + +/** + * fdt_next_property_offset - step through a node's properties + * @fdt: pointer to the device tree blob + * @offset: structure block offset of a property + * + * fdt_next_property_offset() finds the property immediately after the + * one at the given structure block offset. This will be a property + * of the same node as the given property. + * + * returns: + * structure block offset of the next property (>=0), on success + * -FDT_ERR_NOTFOUND, if the given property is the last in its node + * -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_next_property_offset(const void *fdt, int offset); + +/** + * fdt_get_property_by_offset - retrieve the property at a given offset + * @fdt: pointer to the device tree blob + * @offset: offset of the property to retrieve + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_property_by_offset() retrieves a pointer to the + * fdt_property structure within the device tree blob at the given + * offset. If lenp is non-NULL, the length of the property value is + * also returned, in the integer pointed to by lenp. + * + * returns: + * pointer to the structure representing the property + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const struct fdt_property *fdt_get_property_by_offset(const void *fdt, + int offset, + int *lenp); + +/** + * fdt_get_property_namelen - find a property based on substring + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @namelen: number of characters of name to consider + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * Identical to fdt_get_property_namelen(), but only examine the first + * namelen characters of name for matching the property name. + */ +const struct fdt_property *fdt_get_property_namelen(const void *fdt, + int nodeoffset, + const char *name, + int namelen, int *lenp); + +/** + * fdt_get_property - find a given property in a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_property() retrieves a pointer to the fdt_property + * structure within the device tree blob corresponding to the property + * named 'name' of the node at offset nodeoffset. If lenp is + * non-NULL, the length of the property value is also returned, in the + * integer pointed to by lenp. + * + * returns: + * pointer to the structure representing the property + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_NOTFOUND, node does not have named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const struct fdt_property *fdt_get_property(const void *fdt, int nodeoffset, + const char *name, int *lenp); +static inline struct fdt_property *fdt_get_property_w(void *fdt, int nodeoffset, + const char *name, + int *lenp) +{ + return (struct fdt_property *)(uintptr_t) + fdt_get_property(fdt, nodeoffset, name, lenp); +} + +/** + * fdt_getprop_by_offset - retrieve the value of a property at a given offset + * @fdt: pointer to the device tree blob + * @ffset: offset of the property to read + * @namep: pointer to a string variable (will be overwritten) or NULL + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_getprop_by_offset() retrieves a pointer to the value of the + * property at structure block offset 'offset' (this will be a pointer + * to within the device blob itself, not a copy of the value). If + * lenp is non-NULL, the length of the property value is also + * returned, in the integer pointed to by lenp. If namep is non-NULL, + * the property's namne will also be returned in the char * pointed to + * by namep (this will be a pointer to within the device tree's string + * block, not a new copy of the name). + * + * returns: + * pointer to the property's value + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * if namep is non-NULL *namep contiains a pointer to the property + * name. + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const void *fdt_getprop_by_offset(const void *fdt, int offset, + const char **namep, int *lenp); + +/** + * fdt_getprop_namelen - get property value based on substring + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @namelen: number of characters of name to consider + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * Identical to fdt_getprop(), but only examine the first namelen + * characters of name for matching the property name. + */ +const void *fdt_getprop_namelen(const void *fdt, int nodeoffset, + const char *name, int namelen, int *lenp); + +/** + * fdt_getprop - retrieve the value of a given property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_getprop() retrieves a pointer to the value of the property + * named 'name' of the node at offset nodeoffset (this will be a + * pointer to within the device blob itself, not a copy of the value). + * If lenp is non-NULL, the length of the property value is also + * returned, in the integer pointed to by lenp. + * + * returns: + * pointer to the property's value + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_NOTFOUND, node does not have named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const void *fdt_getprop(const void *fdt, int nodeoffset, + const char *name, int *lenp); +static inline void *fdt_getprop_w(void *fdt, int nodeoffset, + const char *name, int *lenp) +{ + return (void *)(uintptr_t)fdt_getprop(fdt, nodeoffset, name, lenp); +} + +/** + * fdt_get_phandle - retrieve the phandle of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of the node + * + * fdt_get_phandle() retrieves the phandle of the device tree node at + * structure block offset nodeoffset. + * + * returns: + * the phandle of the node at nodeoffset, on success (!= 0, != -1) + * 0, if the node has no phandle, or another error occurs + */ +uint32_t fdt_get_phandle(const void *fdt, int nodeoffset); + +/** + * fdt_get_alias_namelen - get alias based on substring + * @fdt: pointer to the device tree blob + * @name: name of the alias th look up + * @namelen: number of characters of name to consider + * + * Identical to fdt_get_alias(), but only examine the first namelen + * characters of name for matching the alias name. + */ +const char *fdt_get_alias_namelen(const void *fdt, + const char *name, int namelen); + +/** + * fdt_get_alias - retrieve the path referenced by a given alias + * @fdt: pointer to the device tree blob + * @name: name of the alias to look up + * + * fdt_get_alias() retrieves the value of a given alias. That is, the + * value of the property named 'name' in the node /aliases. + * + * returns: + * a pointer to the expansion of the alias named 'name', if it exists + * NULL, if the given alias or the /aliases node does not exist + */ +const char *fdt_get_alias(const void *fdt, const char *name); + +/** + * fdt_get_path - determine the full path of a node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose path to find + * @buf: character buffer to contain the returned path (will be overwritten) + * @buflen: size of the character buffer at buf + * + * fdt_get_path() computes the full path of the node at offset + * nodeoffset, and records that path in the buffer at buf. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + * 0, on success + * buf contains the absolute path of the node at + * nodeoffset, as a NUL-terminated string. + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_NOSPACE, the path of the given node is longer than (bufsize-1) + * characters and will not fit in the given buffer. + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen); + +/** + * fdt_supernode_atdepth_offset - find a specific ancestor of a node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * @supernodedepth: depth of the ancestor to find + * @nodedepth: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_supernode_atdepth_offset() finds an ancestor of the given node + * at a specific depth from the root (where the root itself has depth + * 0, its immediate subnodes depth 1 and so forth). So + * fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, NULL); + * will always return 0, the offset of the root node. If the node at + * nodeoffset has depth D, then: + * fdt_supernode_atdepth_offset(fdt, nodeoffset, D, NULL); + * will return nodeoffset itself. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + + * structure block offset of the node at node offset's ancestor + * of depth supernodedepth (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag +* -FDT_ERR_NOTFOUND, supernodedepth was greater than the depth of nodeoffset + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset, + int supernodedepth, int *nodedepth); + +/** + * fdt_node_depth - find the depth of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * + * fdt_node_depth() finds the depth of a given node. The root node + * has depth 0, its immediate subnodes depth 1 and so forth. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + * depth of the node at nodeoffset (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_depth(const void *fdt, int nodeoffset); + +/** + * fdt_parent_offset - find the parent of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * + * fdt_parent_offset() locates the parent node of a given node (that + * is, it finds the offset of the node which contains the node at + * nodeoffset as a subnode). + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset, *twice*. + * + * returns: + * structure block offset of the parent of the node at nodeoffset + * (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_parent_offset(const void *fdt, int nodeoffset); + +/** + * fdt_node_offset_by_prop_value - find nodes with a given property value + * @fdt: pointer to the device tree blob + * @startoffset: only find nodes after this offset + * @propname: property name to check + * @propval: property value to search for + * @proplen: length of the value in propval + * + * fdt_node_offset_by_prop_value() returns the offset of the first + * node after startoffset, which has a property named propname whose + * value is of length proplen and has value equal to propval; or if + * startoffset is -1, the very first such node in the tree. + * + * To iterate through all nodes matching the criterion, the following + * idiom can be used: + * offset = fdt_node_offset_by_prop_value(fdt, -1, propname, + * propval, proplen); + * while (offset != -FDT_ERR_NOTFOUND) { + * ... other code here ... + * offset = fdt_node_offset_by_prop_value(fdt, offset, propname, + * propval, proplen); + * } + * + * Note the -1 in the first call to the function, if 0 is used here + * instead, the function will never locate the root node, even if it + * matches the criterion. + * + * returns: + * structure block offset of the located node (>= 0, >startoffset), + * on success + * -FDT_ERR_NOTFOUND, no node matching the criterion exists in the + * tree after startoffset + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_prop_value(const void *fdt, int startoffset, + const char *propname, + const void *propval, int proplen); + +/** + * fdt_node_offset_by_phandle - find the node with a given phandle + * @fdt: pointer to the device tree blob + * @phandle: phandle value + * + * fdt_node_offset_by_phandle() returns the offset of the node + * which has the given phandle value. If there is more than one node + * in the tree with the given phandle (an invalid tree), results are + * undefined. + * + * returns: + * structure block offset of the located node (>= 0), on success + * -FDT_ERR_NOTFOUND, no node with that phandle exists + * -FDT_ERR_BADPHANDLE, given phandle value was invalid (0 or -1) + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle); + +/** + * fdt_node_check_compatible: check a node's compatible property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of a tree node + * @compatible: string to match against + * + * + * fdt_node_check_compatible() returns 0 if the given node contains a + * 'compatible' property with the given string as one of its elements, + * it returns non-zero otherwise, or on error. + * + * returns: + * 0, if the node has a 'compatible' property listing the given string + * 1, if the node has a 'compatible' property, but it does not list + * the given string + * -FDT_ERR_NOTFOUND, if the given node has no 'compatible' property + * -FDT_ERR_BADOFFSET, if nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_check_compatible(const void *fdt, int nodeoffset, + const char *compatible); + +/** + * fdt_node_offset_by_compatible - find nodes with a given 'compatible' value + * @fdt: pointer to the device tree blob + * @startoffset: only find nodes after this offset + * @compatible: 'compatible' string to match against + * + * fdt_node_offset_by_compatible() returns the offset of the first + * node after startoffset, which has a 'compatible' property which + * lists the given compatible string; or if startoffset is -1, the + * very first such node in the tree. + * + * To iterate through all nodes matching the criterion, the following + * idiom can be used: + * offset = fdt_node_offset_by_compatible(fdt, -1, compatible); + * while (offset != -FDT_ERR_NOTFOUND) { + * ... other code here ... + * offset = fdt_node_offset_by_compatible(fdt, offset, compatible); + * } + * + * Note the -1 in the first call to the function, if 0 is used here + * instead, the function will never locate the root node, even if it + * matches the criterion. + * + * returns: + * structure block offset of the located node (>= 0, >startoffset), + * on success + * -FDT_ERR_NOTFOUND, no node matching the criterion exists in the + * tree after startoffset + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_compatible(const void *fdt, int startoffset, + const char *compatible); + +/** + * fdt_stringlist_contains - check a string list property for a string + * @strlist: Property containing a list of strings to check + * @listlen: Length of property + * @str: String to search for + * + * This is a utility function provided for convenience. The list contains + * one or more strings, each terminated by \0, as is found in a device tree + * "compatible" property. + * + * @return: 1 if the string is found in the list, 0 not found, or invalid list + */ +int fdt_stringlist_contains(const char *strlist, int listlen, const char *str); + +/**********************************************************************/ +/* Write-in-place functions */ +/**********************************************************************/ + +/** + * fdt_setprop_inplace - change a property's value, but not its size + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: pointer to data to replace the property value with + * @len: length of the property value + * + * fdt_setprop_inplace() replaces the value of a given property with + * the data in val, of length len. This function cannot change the + * size of a property, and so will only work if len is equal to the + * current length of the property. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if len is not equal to the property's current length + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + +/** + * fdt_setprop_inplace_u32 - change the value of a 32-bit integer property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value to replace the property with + * + * fdt_setprop_inplace_u32() replaces the value of a given property + * with the 32-bit integer value in val, converting val to big-endian + * if necessary. This function cannot change the size of a property, + * and so will only work if the property already exists and has length + * 4. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if the property's length is not equal to 4 + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_inplace_u32(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_setprop_inplace(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_inplace_u64 - change the value of a 64-bit integer property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value to replace the property with + * + * fdt_setprop_inplace_u64() replaces the value of a given property + * with the 64-bit integer value in val, converting val to big-endian + * if necessary. This function cannot change the size of a property, + * and so will only work if the property already exists and has length + * 8. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if the property's length is not equal to 8 + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_inplace_u64(void *fdt, int nodeoffset, + const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_setprop_inplace(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_inplace_cell - change the value of a single-cell property + * + * This is an alternative name for fdt_setprop_inplace_u32() + */ +static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + return fdt_setprop_inplace_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_nop_property - replace a property with nop tags + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to nop + * @name: name of the property to nop + * + * fdt_nop_property() will replace a given property's representation + * in the blob with FDT_NOP tags, effectively removing it from the + * tree. + * + * This function will alter only the bytes in the blob which contain + * the property, and will not alter or move any other part of the + * tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_nop_property(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_nop_node - replace a node (subtree) with nop tags + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node to nop + * + * fdt_nop_node() will replace a given node's representation in the + * blob, including all its subnodes, if any, with FDT_NOP tags, + * effectively removing it from the tree. + * + * This function will alter only the bytes in the blob which contain + * the node and its properties and subnodes, and will not alter or + * move any other part of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_nop_node(void *fdt, int nodeoffset); + +/**********************************************************************/ +/* Sequential write functions */ +/**********************************************************************/ + +int fdt_create(void *buf, int bufsize); +int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size); +int fdt_finish_reservemap(void *fdt); +int fdt_begin_node(void *fdt, const char *name); +int fdt_property(void *fdt, const char *name, const void *val, int len); +static inline int fdt_property_u32(void *fdt, const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_property(fdt, name, &tmp, sizeof(tmp)); +} +static inline int fdt_property_u64(void *fdt, const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_property(fdt, name, &tmp, sizeof(tmp)); +} +static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val) +{ + return fdt_property_u32(fdt, name, val); +} +#define fdt_property_string(fdt, name, str) \ + fdt_property(fdt, name, str, strlen(str)+1) +int fdt_end_node(void *fdt); +int fdt_finish(void *fdt); + +/**********************************************************************/ +/* Read-write functions */ +/**********************************************************************/ + +int fdt_create_empty_tree(void *buf, int bufsize); +int fdt_open_into(const void *fdt, void *buf, int bufsize); +int fdt_pack(void *fdt); + +/** + * fdt_add_mem_rsv - add one memory reserve map entry + * @fdt: pointer to the device tree blob + * @address, @size: 64-bit values (native endian) + * + * Adds a reserve map entry to the given blob reserving a region at + * address address of length size. + * + * This function will insert data into the reserve map and will + * therefore change the indexes of some entries in the table. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new reservation entry + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size); + +/** + * fdt_del_mem_rsv - remove a memory reserve map entry + * @fdt: pointer to the device tree blob + * @n: entry to remove + * + * fdt_del_mem_rsv() removes the n-th memory reserve map entry from + * the blob. + * + * This function will delete data from the reservation table and will + * therefore change the indexes of some entries in the table. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, there is no entry of the given index (i.e. there + * are less than n+1 reserve map entries) + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_del_mem_rsv(void *fdt, int n); + +/** + * fdt_set_name - change the name of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of a node + * @name: name to give the node + * + * fdt_set_name() replaces the name (including unit address, if any) + * of the given node with the given string. NOTE: this function can't + * efficiently check if the new name is unique amongst the given + * node's siblings; results are undefined if this function is invoked + * with a name equal to one of the given node's siblings. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob + * to contain the new name + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_set_name(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_setprop - create or change a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: pointer to data to set the property value to + * @len: length of the property value + * + * fdt_setprop() sets the value of the named property in the given + * node to the given value and length, creating the property if it + * does not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_setprop(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + +/** + * fdt_setprop_u32 - set a property to a 32-bit integer + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value for the property (native endian) + * + * fdt_setprop_u32() sets the value of the named property in the given + * node to the given 32-bit integer value (converting to big-endian if + * necessary), or creates a new property with that value if it does + * not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_u32(void *fdt, int nodeoffset, const char *name, + uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_setprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_u64 - set a property to a 64-bit integer + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value for the property (native endian) + * + * fdt_setprop_u64() sets the value of the named property in the given + * node to the given 64-bit integer value (converting to big-endian if + * necessary), or creates a new property with that value if it does + * not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_u64(void *fdt, int nodeoffset, const char *name, + uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_setprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_cell - set a property to a single cell value + * + * This is an alternative name for fdt_setprop_u32() + */ +static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name, + uint32_t val) +{ + return fdt_setprop_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_setprop_string - set a property to a string value + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @str: string value for the property + * + * fdt_setprop_string() sets the value of the named property in the + * given node to the given string value (using the length of the + * string to determine the new length of the property), or creates a + * new property with that value if it does not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +#define fdt_setprop_string(fdt, nodeoffset, name, str) \ + fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1) + +/** + * fdt_appendprop - append to or create a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to append to + * @val: pointer to data to append to the property value + * @len: length of the data to append to the property value + * + * fdt_appendprop() appends the value to the named property in the + * given node, creating the property if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_appendprop(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + +/** + * fdt_appendprop_u32 - append a 32-bit integer value to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value to append to the property (native endian) + * + * fdt_appendprop_u32() appends the given 32-bit integer value + * (converting to big-endian if necessary) to the value of the named + * property in the given node, or creates a new property with that + * value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_appendprop_u32(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_appendprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_appendprop_u64 - append a 64-bit integer value to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value to append to the property (native endian) + * + * fdt_appendprop_u64() appends the given 64-bit integer value + * (converting to big-endian if necessary) to the value of the named + * property in the given node, or creates a new property with that + * value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_appendprop_u64(void *fdt, int nodeoffset, + const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_appendprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_appendprop_cell - append a single cell value to a property + * + * This is an alternative name for fdt_appendprop_u32() + */ +static inline int fdt_appendprop_cell(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + return fdt_appendprop_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_appendprop_string - append a string to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @str: string value to append to the property + * + * fdt_appendprop_string() appends the given string to the value of + * the named property in the given node, or creates a new property + * with that value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +#define fdt_appendprop_string(fdt, nodeoffset, name, str) \ + fdt_appendprop((fdt), (nodeoffset), (name), (str), strlen(str)+1) + +/** + * fdt_delprop - delete a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to nop + * @name: name of the property to nop + * + * fdt_del_property() will delete the given property. + * + * This function will delete data from the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_delprop(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_add_subnode_namelen - creates a new node based on substring + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * @namelen: number of characters of name to consider + * + * Identical to fdt_add_subnode(), but use only the first namelen + * characters of name as the name of the new node. This is useful for + * creating subnodes based on a portion of a larger string, such as a + * full path. + */ +int fdt_add_subnode_namelen(void *fdt, int parentoffset, + const char *name, int namelen); + +/** + * fdt_add_subnode - creates a new node + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * + * fdt_add_subnode() creates a new node as a subnode of the node at + * structure block offset parentoffset, with the given name (which + * should include the unit address, if any). + * + * This function will insert data into the blob, and will therefore + * change the offsets of some existing nodes. + + * returns: + * structure block offset of the created nodeequested subnode (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested subnode does not exist + * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag + * -FDT_ERR_EXISTS, if the node at parentoffset already has a subnode of + * the given name + * -FDT_ERR_NOSPACE, if there is insufficient free space in the + * blob to contain the new node + * -FDT_ERR_NOSPACE + * -FDT_ERR_BADLAYOUT + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_add_subnode(void *fdt, int parentoffset, const char *name); + +/** + * fdt_del_node - delete a node (subtree) + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node to nop + * + * fdt_del_node() will remove the given node, including all its + * subnodes if any, from the blob. + * + * This function will delete data from the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_del_node(void *fdt, int nodeoffset); + +/**********************************************************************/ +/* Debugging / informational functions */ +/**********************************************************************/ + +const char *fdt_strerror(int errval); + +struct fdt_region { + int offset; + int size; +}; + +/** + * fdt_find_regions() - find regions in device tree + * + * Given a list of nodes to include and properties to exclude, find + * the regions of the device tree which describe those included parts. + * + * The intent is to get a list of regions which will be invariant provided + * those parts are invariant. For example, if you request a list of regions + * for all nodes but exclude the property "data", then you will get the + * same region contents regardless of any change to "data" properties. + * + * This function can be used to produce a byte-stream to send to a hashing + * function to verify that critical parts of the FDT have not changed. + * + * Nodes which are given in 'inc' are included in the region list, as + * are the names of the immediate subnodes nodes (but not the properties + * or subnodes of those subnodes). + * + * For eaxample "/" means to include the root node, all root properties + * and the FDT_BEGIN_NODE and FDT_END_NODE of all subnodes of /. The latter + * ensures that we capture the names of the subnodes. In a hashing situation + * it prevents the root node from changing at all Any change to non-excluded + * properties, names of subnodes or number of subnodes would be detected. + * + * When used with FITs this provides the ability to hash and sign parts of + * the FIT based on different configurations in the FIT. Then it is + * impossible to change anything about that configuration (include images + * attached to the configuration), but it may be possible to add new + * configurations, new images or new signatures within the existing + * framework. + * + * Adding new properties to a device tree may result in the string table + * being extended (if the new property names are different from those + * already added). This function can optionally include a region for + * the string table so that this can be part of the hash too. + * + * The device tree header is not included in the list. + * + * @fdt: Device tree to check + * @inc: List of node paths to included + * @inc_count: Number of node paths in list + * @exc_prop: List of properties names to exclude + * @exc_prop_count: Number of properties in exclude list + * @region: Returns list of regions + * @max_region: Maximum length of region list + * @path: Pointer to a temporary string for the function to use for + * building path names + * @path_len: Length of path, must be large enough to hold the longest + * path in the tree + * @add_string_tab: 1 to add a region for the string table + * @return number of regions in list. If this is >max_regions then the + * region array was exhausted. You should increase max_regions and try + * the call again. + */ +int fdt_find_regions(const void *fdt, char * const inc[], int inc_count, + char * const exc_prop[], int exc_prop_count, + struct fdt_region region[], int max_regions, + char *path, int path_len, int add_string_tab); + +#endif /* _LIBFDT_H */ diff --git a/board/novatek/na51068/loader/Include/libfdt_env.h b/board/novatek/na51068/loader/Include/libfdt_env.h new file mode 100755 index 000000000000..5573b3f8c523 --- /dev/null +++ b/board/novatek/na51068/loader/Include/libfdt_env.h @@ -0,0 +1,63 @@ +/* + * libfdt - Flat Device Tree manipulation (build/run environment adaptation) + * Copyright (C) 2007 Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com + * Original version written by David Gibson, IBM Corporation. + * + * SPDX-License-Identifier: LGPL-2.1+ + */ + +#ifndef _LIBFDT_ENV_H +#define _LIBFDT_ENV_H + +#include "compiler.h" + +typedef __signed__ char __s8; +typedef unsigned char __u8; + +typedef __signed__ short __s16; +typedef unsigned short __u16; + +typedef __signed__ int __s32; +typedef unsigned int __u32; + +#if defined(__GNUC__) +__extension__ typedef __signed__ long long __s64; +__extension__ typedef unsigned long long __u64; +#endif + +typedef __u8 uint8_t; +typedef __u16 uint16_t; +typedef __u32 uint32_t; + +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) +typedef __u64 uint64_t; +typedef __u64 u_int64_t; +typedef __s64 int64_t; +#endif + +#define __bitwise + +typedef __u16 __bitwise __le16; +typedef __u16 __bitwise __be16; +typedef __u32 __bitwise __le32; +typedef __u32 __bitwise __be32; +#if defined(__GNUC__) +typedef __u64 __bitwise __le64; +typedef __u64 __bitwise __be64; +#endif + +extern struct fdt_header *working_fdt; /* Pointer to the working fdt */ + +typedef __be16 fdt16_t; +typedef __be32 fdt32_t; +typedef __be64 fdt64_t; + +#define fdt32_to_cpu(x) be32_to_cpu(x) +#define cpu_to_fdt32(x) cpu_to_be32(x) +#define fdt64_to_cpu(x) be64_to_cpu(x) +#define cpu_to_fdt64(x) cpu_to_be64(x) + +/* adding a ramdisk needs 0x44 bytes in version 2008.10 */ +#define FDT_RAMDISK_OVERHEAD 0x80 + +#endif /* _LIBFDT_ENV_H */ diff --git a/board/novatek/na51068/loader/Include/libfdt_internal.h b/board/novatek/na51068/loader/Include/libfdt_internal.h new file mode 100755 index 000000000000..4e9e43437786 --- /dev/null +++ b/board/novatek/na51068/loader/Include/libfdt_internal.h @@ -0,0 +1,56 @@ +#ifndef _LIBFDT_INTERNAL_H +#define _LIBFDT_INTERNAL_H +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * SPDX-License-Identifier: GPL-2.0+ BSD-2-Clause + */ +#include <fdt.h> + +#define FDT_ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1)) +#define FDT_TAGALIGN(x) (FDT_ALIGN((x), FDT_TAGSIZE)) + +#define FDT_CHECK_HEADER(fdt) \ + { \ + int err; \ + if ((err = fdt_check_header(fdt)) != 0) \ + return err; \ + } + +int _fdt_check_node_offset(const void *fdt, int offset); +int _fdt_check_prop_offset(const void *fdt, int offset); +const char *_fdt_find_string(const char *strtab, int tabsize, const char *s); +int _fdt_node_end_offset(void *fdt, int nodeoffset); + +static inline const void *_fdt_offset_ptr(const void *fdt, int offset) +{ + return (const char *)fdt + fdt_off_dt_struct(fdt) + offset; + //return (const char *)fdt + fdt_off_dt_struct(fdt) + offset; +} + +static inline void *_fdt_offset_ptr_w(void *fdt, int offset) +{ + //return (void *)(uintptr_t)_fdt_offset_ptr(fdt, offset); + return 0; +} + +static inline const struct fdt_reserve_entry *_fdt_mem_rsv(const void *fdt, int n) +{ + return 0; +#if 0 + const struct fdt_reserve_entry *rsv_table = + (const struct fdt_reserve_entry *) + ((const char *)fdt + fdt_off_mem_rsvmap(fdt)); + + return rsv_table + n; +#endif +} +static inline struct fdt_reserve_entry *_fdt_mem_rsv_w(void *fdt, int n) +{ + //return (void *)(uintptr_t)_fdt_mem_rsv(fdt, n); + return 0; +} + +#define FDT_SW_MAGIC (~FDT_MAGIC) + +#endif /* _LIBFDT_INTERNAL_H */ diff --git a/board/novatek/na51068/loader/Include/loader.h b/board/novatek/na51068/loader/Include/loader.h new file mode 100755 index 000000000000..8fd11b4a3b8c --- /dev/null +++ b/board/novatek/na51068/loader/Include/loader.h @@ -0,0 +1,83 @@ +/** + Global loader header file + + Global loader header file + + @file loader.h + @ingroup mISYSUtil + @note Nothing +*/ + +#ifndef _LOADER_H +#define _LOADER_H + +#include "constant.h" +#include "StorageDef.h" + +/** + @name Special key detect CallBack + + Special key detect Prototype + + Project layer can detect special key in this callback. + If callback returns TRUE, loader will try to find files on SD card. + + @return + - @b TRUE: special key is pressed + - @b FALSE: special key is NOT pressed +*/ +//@{ +typedef BOOL (*LDR_SPECIAL_KEY_CB)(void); +//@} + +/** + @name Card detect CallBack + + Card detect Prototype + + Project layer can detect SD card existence in this callback. + If callback returns TRUE, loader will consider SD is plugged + + @return + - @b TRUE: SD exist + - @b FALSE: SD NOT exist +*/ +//@{ +typedef BOOL (*LDR_CARD_DETECT_CB)(void); +//@} +/** + @name Recovery Trigger CallBack + + Recovery trigger Prototype + + Project layer can detect if the recovery flow should started. + If callback returns TRUE, recovery flow will start. + + @return + - @b TRUE: Recovery flow is triggered. + - @b FALSE: Recovery flow is NOT triggered. +*/ +//@{ +typedef BOOL (*LDR_RECOVERY_TRIGGER_CB)(void); +//@} + +typedef enum _STORAGEINT { + STORAGEINT_UNOKNOWN, + STORAGEINT_SPI_NAND, + STORAGEINT_SPI_NOR, +} STORAGEINT; + +extern void loader_setUpdateFwName(char* fileName); +extern void loader_setUpdateLdrName(char* fileName); +extern void loader_setRunFwName(char* fileName); +extern void loader_setRecoveryFwName(char *fileName); +extern void loader_setRecoveryPartitionID(UINT32 partition_id); +extern void loader_setVersion(UINT32 version); +extern void loader_setStorageIntType(STORAGEINT type, PSTORAGE_OBJ strg_obj); +//extern void loader_installSpecialKeyCB(LDR_SPECIAL_KEY_CB callback); +//extern void loader_installCardDetectCB(LDR_CARD_DETECT_CB callback); +//extern void loader_installRecoveryTriggerCB(LDR_RECOVERY_TRIGGER_CB callback); + +#endif + + diff --git a/board/novatek/na51068/loader/Include/lz.h b/board/novatek/na51068/loader/Include/lz.h new file mode 100755 index 000000000000..738f1607037d --- /dev/null +++ b/board/novatek/na51068/loader/Include/lz.h @@ -0,0 +1,26 @@ +/** + Decompress library header file + + Decompress library header file + + @file lz.h + @ingroup mISYSUtil + @note Nothing +*/ +#ifndef __NVT_LZ_DEF__ +#define __NVT_LZ_DEF__ + +#include "constant.h" + +/** + @addtogroup mISYSUtil +*/ +//@{ + +extern unsigned int LZ_Uncompress(UINT8 *in, UINT8 *out, UINT32 insize) __attribute__ ((section (".part1"))); +//extern void LZ_Uncompress(UINT8 *in, UINT8 *out, UINT32 insize) __attribute__ ((section (".part1"), far)); +extern int lzma_inflate(UINT8 *in_ptr, UINT32 in_size, UINT8 *out_ptr, UINT32 out_size, UINT8 *p_tmp, UINT32 tmp_size); + +//@} + +#endif diff --git a/board/novatek/na51068/loader/Include/modelext/bin_info.h b/board/novatek/na51068/loader/Include/modelext/bin_info.h new file mode 100755 index 000000000000..c697c9416314 --- /dev/null +++ b/board/novatek/na51068/loader/Include/modelext/bin_info.h @@ -0,0 +1,143 @@ +/** + Bin File Information + + Bin file layout + + ----------------------------------------------------- + HEADINFO 0x00 ~ 0x80 = 128 bytes = 32 WORDS + ----------------------------------------------------- + + EXCEPTION_TABLE: 0x180 ~ 0x200 = 128 bytes = 32 WORDS (see exception_MIPS.s) + + ----------------------------------------------------- + + VECTOR_TABLE: 0x200 ~ 0x2f0 = 240 bytes = 60 WORDS (see isr_MIPS.s) + + ----------------------------------------------------- + + Code Info: 0x2f0 ~ 0x400 = 272 bytes = 68 WORDS (see CodeInfo_MIPS.s) + + ----------------------------------------------------- + + Code Entry: 0x400 (see Loader_MIPS.s) + + : + + PART-1 + PART-2 + PART-3 + : + PART-N + + ----------------------------------------------------- + + @file bin_info.h + @ingroup mMODELEXT + @note THESE STRUCTS ARE VERY VERY IMPORTANT FORMAT DEFINITION OF SYSTEM, + DO NOT MODIFY ANY ITEM OR INSERT/REMOVE ANY ITEM OF THESE STRUCTS!!! + + Copyright Novatek Microelectronics Corp. 2011. All rights reserved. +*/ +#ifndef _BINI_NFO_H +#define _BIN_INFO_H + +#define BIN_INFO_VER 0x19062115 ///< YYYY/MM/DD HH + +#define BIN_INFO_OFFSET_RTOS 0x00000200 ///< uITRON HEADINFO.o attached to this offset +#define BIN_INFO_OFFSET_UBOOT 0x00000300 ///< uboot HEADINFO.o attached to this +#define BIN_INFO_OFFSET_NUTTX 0x00000100 ///< nuttx + +//Ep: Encryption Program (CheckSum version) +//Epcrc: Encryption Program (CRC version) +//Bfc: Bin File Compress +//Ld: Loader +//Fw: Firmware + +//Head control flag for HEADINFO.BinCtrl +#define HDCF_LZCOMPRESS_EN 0x0000001 ///< BIT 0.compressed enable (0=no,1=yes) + +/** + @name Ld control flag for LDINFO.LdCtrl +*/ +//@{ +#define BOOT_FLAG_PARTLOAD_EN 0x0000001 ///< BIT 0.PARTLOAD_EN (0=no,1=yes) +//@} + +//HEADINFO::Resv field definition +typedef enum _HEADINFO_RESV_IDX_{ + HEADINFO_RESV_IDX_FDT_ADDR = 0, + HEADINFO_RESV_IDX_SHM_ADDR = 1, + HEADINFO_RESV_IDX_BOOT_FLAG = 2, + HEADINFO_RESV_IDX_COUNTS = 19, +} HEADINFO_RESV_IDX; + +/** + Header information + + 0x00 ~ 0x80 = 128 bytes = 32 WORDS +*/ +typedef struct HEADINFO { + unsigned int CodeEntry; ///< [0x00] fw CODE entry (4) ----- r by Ld + unsigned int Resv1[HEADINFO_RESV_IDX_COUNTS]; + ///< [0x04~0x50] reserved (4*19) -- reserved, its mem value will filled by Ld + ///< Resv1[HEADINFO_RESV_IDX_FDT_ADDR]: store fdt addr for rtos + ///< Resv1[HEADINFO_RESV_IDX_SHM_ADDR]: store shm addr for rtos + ///< Resv1[HEADINFO_RESV_IDX_BOOT_FLAG]: boot flag for rtos + char BinInfo_1[8]; ///< [0x50~0x58] CHIP-NAME (8) ---- r by Ep + char BinInfo_2[8]; ///< [0x58~0x60] SDK version (8) + char BinInfo_3[8]; ///< [0x60~0x68] SDK releasedate (8) + unsigned int BinLength; ///< [0x68] Bin File Length (4) --- w by Ep/bfc + unsigned int Checksum; ///< [0x6c] Check Sum or CRC (4) ----- w by Ep/Epcrc + unsigned int CRCLenCheck; ///< [0x70~0x74] Length check for CRC (4) ----- w by Epcrc (total len ^ 0xAA55) + unsigned int ModelextAddr;///< [0x74~0x78] where modelext data is. w by Ld / u-boot + unsigned int BinCtrl; ///< [0x78~0x7C] Bin flag (4) --- w by bfc + ///< BIT 0.compressed enable (w by bfc) + ///< BIT 1.Linux SMP enable (1: SMP/VOS, 0: Dual OS) + unsigned int CRCBinaryTag;///< [0x7C~0x80] Binary Tag for CRC (4) ----- w by Epcrc (0xAA55 + "NT") +} +HEADINFO; + +STATIC_ASSERT(sizeof(HEADINFO) == 128); + + +/** + Binary file information + + 0x00 ~ 0x180 = 384 bytes = 96 WORDS +*/ +typedef struct _BININFO { + HEADINFO head; ///< 0x00 ~ 0x80 = 128 bytes = 32 WORDS, header information + unsigned int Resv[64]; ///< 0x80 ~ 0x180 = 384 bytes = 64 WORDS, reserved information +} +BININFO; + +STATIC_ASSERT(sizeof(BININFO) == 384); + +/////////////////////////////////////////////////////////////////////////////// +//Code Info: 0x2f0 ~ 0x400 + +#define ZI_SECTION_OFFSET (0x3f0+0x10) ///< ZI area information of starting offset +#define CODE_SECTION_OFFSET (0x3f0+0x18) ///< code section information of starting offset + +/* +bfc syntex + +bfc.exe p1 p2 p3 p4 p5 p6 p7 p8 p9 + +p1: compress/decompress +p2: compress method +p3: input file name +p4: output file name +p5: partial load flag ('1' means partial load) +p6: partial load file start [locate offset of bin file] +p7: output binary file length [locate offset of bin file] +p8: partial compress flag [locate offset of bin file] +p9: NAND block size (option) + +NOTE: p6~p9 must be hex format (0x****) + +@$(BFC) c lz $(BIN_R) tmp 1 0x310 0x68 0x78 $(EMBMEM_BLK_SIZE) +*/ + +#endif + diff --git a/board/novatek/na51068/loader/Include/modelext/dram_partition_info.h b/board/novatek/na51068/loader/Include/modelext/dram_partition_info.h new file mode 100755 index 000000000000..b1f14a322274 --- /dev/null +++ b/board/novatek/na51068/loader/Include/modelext/dram_partition_info.h @@ -0,0 +1,48 @@ +#ifndef _DRAM_PARTITION_INFO_H +#define _DRAM_PARTITION_INFO_H + +#if defined(__UITRON) +#include "Type.h" +#else +#include "nvt_type.h" +#endif + +/** + DRAM Partition + + This is common header used between firmware of uITRON, eCos, Linux, DSP + so !!!!!! DO NOT modify it !!!!!! +*/ + +#define DRAM_PARTITION_INFO_VER 0x17032309 ///< YYYY/MM/DD HH + +typedef struct _DRAM_PARTITION { + unsigned int fourcc; ///< FourCC DRAM + unsigned int info_size; ///< sizeof(CORE_INFO) + unsigned int dram_addr; ///< whole dram starting address + unsigned int dram_size; ///< whole dram size + unsigned int rev_addr; ///< reversed starting address + unsigned int rev_size; ///< reversed size + unsigned int fdt_addr; ///< ipc starting address + unsigned int fdt_size; ///< ipc size + unsigned int linux_addr;///< linux-kernel starting address + unsigned int linux_size;///< linux-kernel size + unsigned int uboot_addr;///< u-boot starting address + unsigned int uboot_size;///< u-boot size + unsigned int rtos_addr; ///< rtos starting address + unsigned int rtos_size; ///< rtos size + unsigned int dsp1_addr; ///< DSP1 starting address + unsigned int dsp1_size; ///< DSP1 size + unsigned int dsp2_addr; ///< ecos(na51023) / DSP2(na51000) starting address + unsigned int dsp2_size; ///< ecos(na51023) / DSP2(na51000) size + unsigned int loader_addr; ///< loader starting address + unsigned int loader_size; ///< loader size + unsigned int nuttx_addr; ///< nuttx starting address + unsigned int nuttx_size; ///< nuttx size + unsigned int core2_entry1_addr; ///< for smp boot, cpu2 start at 0 then jump to core2_entry2 for addr 0 can be reuse. + unsigned int core2_entry1_size; ///< for smp boot, cpu2 start at 0 then jump to core2_entry2 for addr 0 can be reuse. + unsigned int core2_entry2_addr; ///< asm code to start smp + unsigned int core2_entry2_size; ///< asm code to start smp +}DRAM_PARTITION; + +#endif \ No newline at end of file diff --git a/board/novatek/na51068/loader/Include/modelext/emb_partition_info.h b/board/novatek/na51068/loader/Include/modelext/emb_partition_info.h new file mode 100755 index 000000000000..aa4e1f95c1a6 --- /dev/null +++ b/board/novatek/na51068/loader/Include/modelext/emb_partition_info.h @@ -0,0 +1,55 @@ +#ifndef _EMB_PARTITION_INFO_H +#define _EMB_PARTITION_INFO_H + +#define EMB_PARTITION_INFO_VER 0x16072117 ///< YYYY/MM/DD HH + +/** + Partition Infomation + This is common header used between firmware of uITRON, eCos, Linux, DSP + so !!!!!! DO NOT modify it !!!!!! +*/ + +#define EMB_PARTITION_INFO_COUNT 16 + +#define EMBTYPE_UNKNOWN 0x00 +#define EMBTYPE_LOADER 0x01 /* loader must always put in partition[0] */ +#define EMBTYPE_MODELEXT 0x02 /* modelext must always put in partition[1] */ +#define EMBTYPE_UITRON 0x03 +#define EMBTYPE_ECOS 0x04 +#define EMBTYPE_UBOOT 0x05 +#define EMBTYPE_LINUX 0x06 +#define EMBTYPE_DSP 0x07 +#define EMBTYPE_PSTORE 0x08 +#define EMBTYPE_FAT 0x09 +#define EMBTYPE_EXFAT 0x0A +#define EMBTYPE_ROOTFS 0x0B +#define EMBTYPE_RAMFS 0x0C +#define EMBTYPE_UENV 0x0D /* u-boot environment data */ +#define EMBTYPE_MBR 0x0E /* for emmc partition, mbr always put in partition[0] instead of loader */ +#define EMBTYPE_NUTTX 0x0F +#define EMBTYPE_RTOS 0x10 + +/** + customer defined data partition format +*/ +#define EMBTYPE_USER0 0x80 +#define EMBTYPE_USER1 0x81 +#define EMBTYPE_USER2 0x82 +#define EMBTYPE_USER3 0x83 +#define EMBTYPE_USER4 0x84 +#define EMBTYPE_USER5 0x85 +#define EMBTYPE_USER6 0x86 +#define EMBTYPE_USER7 0x87 + + +/* for reason of compatiable linux, we use original type to decalre */ + +typedef struct _EMB_PARTITION { + unsigned short EmbType; /* EMBTYPE_ */ + unsigned short OrderIdx; /* Order index of the same EmbType based on '0' */ + unsigned long long PartitionOffset; /* Phyical offset of partition */ + unsigned long long PartitionSize; /* Size of this partition */ + unsigned long long ReversedSize; /* Reserved size for bad block */ +} EMB_PARTITION, *PEMB_PARTITION; + +#endif diff --git a/board/novatek/na51068/loader/Include/modelext/modelext_info.h b/board/novatek/na51068/loader/Include/modelext/modelext_info.h new file mode 100755 index 000000000000..a06cbf05e796 --- /dev/null +++ b/board/novatek/na51068/loader/Include/modelext/modelext_info.h @@ -0,0 +1,16 @@ +#ifndef _MODELEXT_INFO_H +#define _MODELEXT_INFO_H + +#define MODELEXT_INFO_VER 0x19071014 ///< YYYY/MM/DD HH + +typedef enum _MODELEXT_TYPE { + MODELEXT_TYPE_DUMMY = 0, + MODELEXT_TYPE_INFO , + MODELEXT_TYPE_BIN_INFO , + MODELEXT_TYPE_EMB_PARTITION, + MODELEXT_TYPE_DRAM_PARTITION, + MODELEXT_TYPE_MAX, +} MODELEXT_TYPE; + + +#endif diff --git a/board/novatek/na51068/loader/Include/modelext/shm_info.h b/board/novatek/na51068/loader/Include/modelext/shm_info.h new file mode 100755 index 000000000000..4ffaeaa3e637 --- /dev/null +++ b/board/novatek/na51068/loader/Include/modelext/shm_info.h @@ -0,0 +1,131 @@ +/** + @file shm_info.h + @ingroup + @note THESE STRUCTS ARE VERY VERY IMPORTANT FORMAT DEFINITION OF SYSTEM, + DO NOT MODIFY ANY ITEM OR INSERT/REMOVE ANY ITEM OF THESE STRUCTS!!! + + Copyright Novatek Microelectronics Corp. 2018. All rights reserved. +*/ +#ifndef __ARCH_COMMON_SHM_INFO_H +#define __ARCH_COMMON_SHM_INFO_H + +#if defined(__UITRON) +#include "Type.h" +#elif defined(_NVT_LINUX_) +#include <mach/nvt_type.h> +#else +#include <asm/nvt-common/nvt_types.h> +#endif + +#define SHM_INFO_VER 0x18060815 ///< YYYY/MM/DD HH + +/** + @name Ld control flag for LDINFO.LdCtrl +*/ +//@{ +#define LDCF_PARTLOAD_EN 0x0000001 ///< BIT 0.PARTLOAD_EN (0=no,1=yes) +//@} + +/** + @name Ld control flag for LDINFO.LdCtrl2 +*/ +//@{ +#define LDCF_UPDATE_FW 0x0000001 ///< BIT 0.UPDATE_FW (0=no,1=yes) +#define LDCF_UPDATE_LD 0x0000002 ///< BIT 1.UPDATE_LD (0=no,1=yes) +#define LDCF_BOOT_CARD 0x0000004 ///< BIT 2.BOOT_CARD (0=no,1=yes) +#define LDCF_BOOT_FLASH 0x0000008 ///< BIT 3.BOOT_FLASH (0=no,1=yes) +#define LDCF_UPDATE_CAL 0x0000010 ///< BIT 4.UPDATE_CAL (0=no,1=yes) +#define LDCF_UPDATE_FW_DONE 0x0000100 ///< BIT 8.UPDATE_FW_DONE (0=no,1=yes) +#define LDCF_S3_BOOT 0x0000200 ///< BIT 9.BOOT FROM S3 STATE (0=no,1=yes) +//@} + +/** + Loader information + + MUST 28 WORDS +*/ +typedef struct _BOOTINFO { + char LdInfo_1[16]; ///< LD-NAME(16) ------ w by Ld + UINT32 LdCtrl; ///< Fw flag (4) ----------- r by Ld + ///< BIT 0.enable part-load (0=full load,1=part load) + UINT32 LdCtrl2; ///< Ld flag (4) ----------- w by Ld + ///< BIT 0.UPDATE_FW (0=no,1=yes) + ///< BIT 1.UPDATE_LOADER (0=no,1=yes) + ///< BIT 2.BOOT_CARD (0=no,1=yes) + ///< BIT 3.BOOT_FLASH (0=no,1=yes) + ///< BIT 4.UPDATE_CAL (0=no,1=yes) + ///< BIT 8.UPDATE_FW_DONE (0=no,1=yes) + //< BIT 9.BOOT FROM S3 STATE (0=no,1=yes) + UINT32 LdLoadSize; ///< Ld load size (4) ------ w by Ld (NOTE: this value must be block size align) + UINT32 LdLoadTime; ///< Ld exec time(us) (4) -- w by Ld + UINT32 LdResvSize; ///< Ld size (by bytes, reserved size in partition) (4) ------ w by Ld + UINT32 FWResvSize; ///< FW reserved size (4) ------ w by Ld + UINT16 LdPackage; ///< IC package expected by Ld (0xFF: ES, 0: 660, 3: 663, 5: 665, etc...) + UINT16 LdStorage; ///< Internal storage expected by Ld (0: unkown, 1: nand, 2: spi nand, 3: spi nor) + UINT32 fdt_addr; + UINT32 Resv[16]; ///< (4*5) ------------ reserved for project Ld +} BOOTINFO; + +STATIC_ASSERT(sizeof(BOOTINFO) == 112); + +/** + communication information + + MUST 54 WORDS +*/ +//BOOT_REASON +#define BOOT_REASON_NORMAL 0 // normal or from sd +#define BOOT_REASON_FWUPDFW 1 // Firmware update Firmware +#define BOOT_REASON_FROM_USB 2 // Update from USB +#define BOOT_REASON_FROM_ETH 3 // Update from ethernet +#define BOOT_REASON_FORMAT_ROOTFS 4 // Format rootfs because rootfs broken is detected +#define BOOT_REASON_RECOVERY_SYS 5 // System recovery from eMMC +#define BOOT_REASON_FROM_UART 6 // Update from uart + +//COMMINFO::Resv field definition +typedef enum _COMM_RESV_IDX_{ + COMM_RESV_IDX_BOOT_REASON = 0, + COMM_RESV_IDX_CORE1_START = 1, + COMM_RESV_IDX_CORE2_START = 2, + COMM_RESV_IDX_UITRON_COMP_ADDR = 3, + COMM_RESV_IDX_UITRON_COMP_LEN = 4, + COMM_RESV_IDX_FW_UPD_ADDR = 5, + COMM_RESV_IDX_FW_UPD_LEN = 6, + COMM_RESV_IDX_OTA_NAME_ADDR = 7, + COMM_RESV_IDX_S3_APB_ADDR = 8, + COMM_RESV_IDX_S3_APB_LEN = 9, +} COMM_RESV_IDX; + +typedef struct _COMMINFO { + char CommInfo_1[16];///< COMMINFO (16) + UINT32 Resv[45];///< reversed data for communication between loader, uboot, uitron, linux + // Resv[0]: COMM_RESV_IDX_BOOT_REASON, + // BYTE[0]: BOOT_REASON: use #define COMM_BOOT_REASON_ + // BYTE[1]: BOOT_DONE: 0:Not yet, 1:Done 2:NG + // BYTE[2]: DSP_DONE: 0:Not yet, 1:Done 2:NG + // Resv[1]: COMM_CORE1_START (used on uboot trigger loader to start uitron) + // Resv[2]: COMM_CORE2_START (used on uitron trigger linux resume) + // Resv[3]: COMM_UITRON_COMP_ADDR + // Resv[4]: COMM_UITRON_COMP_LEN + // Resv[5]: COMM_FW_UPD_ADDR + // Resv[6]: COMM_FW_UPD_LEN + // Resv[7]: COMM_OTA_NAME_ADDR : OTA name + // Resv[8]: COMM_S3_APB_ADDR : S3-resume's apb register info addr + // Resv[9]: COMM_S3_APB_LEN : S3-resume's apb register info len + UINT32 UserDef[5]; ///< can be used for customer +} COMMINFO; + +STATIC_ASSERT(sizeof(COMMINFO) == 216); + +/** + Binary file information + + MUST 82 WORDS +*/ +typedef struct _SHMINFO { + BOOTINFO boot; + COMMINFO comm; +} SHMINFO; + +STATIC_ASSERT(sizeof(SHMINFO) == 328); +#endif /* __ARCH_COMMON_SHM_INFO_H */ diff --git a/board/novatek/na51068/loader/Include/nvt_crypto.h b/board/novatek/na51068/loader/Include/nvt_crypto.h new file mode 100755 index 000000000000..fed9c24fb035 --- /dev/null +++ b/board/novatek/na51068/loader/Include/nvt_crypto.h @@ -0,0 +1,50 @@ +#ifndef _NVT_CRYPTO_H_ +#define _NVT_CRYPTO_H_ + +#define NVT_CRYPTO_AES_BLOCK_SIZE 16 ///< bytes +#define NVT_CRYPTO_AES_128_KEY_SIZE 16 ///< bytes +#define NVT_CRYPTO_AES_256_KEY_SIZE 32 ///< bytes + +typedef enum { + NVT_CRYPTO_MODE_DES = 0, ///< Block Size => 64 bits, Key Size => 64 bits, Single Block Cipher + NVT_CRYPTO_MODE_3DES, ///< Block Size => 64 bits, Key Size => 192 bits, Single Block Cipher + NVT_CRYPTO_MODE_AES_128, ///< Block Size => 128 bits, Key Size => 128 bits, Single Block Cipher + NVT_CRYPTO_MODE_AES_256, ///< Block Size => 128 bits, Key Size => 256 bits, Single Block Cipher + NVT_CRYPTO_MODE_MAX +} NVT_CRYPTO_MODE_T; + +typedef enum { + NVT_CRYPTO_OPMODE_ECB = 0, ///< ECB mode + NVT_CRYPTO_OPMODE_CBC, ///< CBC mode, need IV + NVT_CRYPTO_OPMODE_MAX +} NVT_CRYPTO_OPMODE_T; + +typedef enum { + NVT_CRYPTO_KEY_SRC_EFUSE = 0, ///< key from efuse + NVT_CRYPTO_KEY_SRC_DATA, ///< key from user key data + NVT_CRYPTO_KEY_SRC_MAX +} NVT_CRYPTO_KEY_SRC_T; + +struct nvt_crypto_pio_t { + u32 encrypt; ///< 0:decrypt 1:encrypt + NVT_CRYPTO_OPMODE_T opmode; ///< 0:ecb 1:cbc + u8 *src; ///< input data buffer + u8 *dst; ///< output data buffer + u8 *key; ///< key data buffer, key => NULL means from efuse secure boot key + u8 *iv; ///< initial vector data buffer + NVT_CRYPTO_KEY_SRC_T key_src; ///< key from efuse or key buffer, 0:from efuse 1:frome key buffer + u32 key_ofs; ///< key offset from efuse, word(4bytes) unit, used if key source from efuse + u32 src_size; ///< input data buffer length, bytes + u32 dst_size; ///< output data buffer length, bytes + u32 key_size; ///< key data buffer length, bytes, 16=>AES-128, 32=>AES-256 + u32 iv_size; ///< initial vector data buffer length, bytes +}; + +/************************************************************************************* + * Public Function Prototype + *************************************************************************************/ +void nvt_crypto_close(void); +int nvt_crypto_open(void); +int nvt_crypto_pio_aes(struct nvt_crypto_pio_t *p_crypto); + +#endif /* _NVT_CRYPTO_H_ */ diff --git a/board/novatek/na51068/loader/Include/nvt_hash.h b/board/novatek/na51068/loader/Include/nvt_hash.h new file mode 100755 index 000000000000..c7324ad1ef48 --- /dev/null +++ b/board/novatek/na51068/loader/Include/nvt_hash.h @@ -0,0 +1,30 @@ +#ifndef _NVT_HASH_H_ +#define _NVT_HASH_H_ + +typedef enum { + NVT_HASH_MODE_SHA1 = 0, ///< block size=> 64 bytes, digest size 20 bytes + NVT_HASH_MODE_SHA256, ///< block size=> 64 bytes, digest size 32 bytes + NVT_HASH_MODE_MAX +} NVT_HASH_MODE_T; + +#define NVT_HASH_SHA1_DIGEST_SIZE 20 +#define NVT_HASH_SHA1_BLOCK_SIZE 64 +#define NVT_HASH_SHA256_DIGEST_SIZE 32 +#define NVT_HASH_SHA256_BLOCK_SIZE 64 + +struct nvt_hash_pio_t { + u32 mode; ///< hash mode + u8 *src; ///< input data buffer + u8 *digest; ///< digest data buffer + u32 src_size; ///< input data buffer length + u32 digest_size; ///< digest data buffer length +}; + +/************************************************************************************* + * Public Function Prototype + *************************************************************************************/ +void nvt_hash_close(void); +int nvt_hash_open(void); +int nvt_hash_pio_sha(struct nvt_hash_pio_t *p_hash); + +#endif /* _NVT_HASH_H_ */ diff --git a/board/novatek/na51068/loader/Include/nvt_rdata_sys.h b/board/novatek/na51068/loader/Include/nvt_rdata_sys.h new file mode 100755 index 000000000000..0c045271a0bf --- /dev/null +++ b/board/novatek/na51068/loader/Include/nvt_rdata_sys.h @@ -0,0 +1,49 @@ +#ifndef __SYSTEM_H__ +#define __CUSTOM_SYSTEM_H__ + +typedef enum { + SYS_SECURE_MODE = 0, + SYS_SECURE_INVISIBLE, + SYS_SECURE_BOOT_EN, + SYS_CHIP_UNIQE_ID, + SYS_HDMI0_PHY_TRIM, + SYS_THREMAL_SENSOR_PHY_TRIM, + SYS_CHIP_PACKAGE_ID, + SYS_CHIP_CUSTOMER_ID, + SYS_CHIP_VER, + SYS_CHIP_DIE_ID, + SYS_CORE_POWER_CTRL, /* 10 */ + SYS_EFUSE_READ_ONLY, + SYS_VDAC_R, + SYS_VDAC_G, + SYS_VDAC_B, + SYS_VDAC_CVBS, + SYS_DDR_PHY_32BIT_PLEG, + SYS_DDR_PHY_32BIT_NLEG, + SYS_DDR_PHY_16BIT_PLEG, + SYS_DDR_PHY_16BIT_NLEG, /* 19 */ + SYS_MAX_DATA_ID = SYS_DDR_PHY_16BIT_NLEG + } PUBLIC_SYS_DATA; + +enum CHIP_VER { + VERSION_UNKNOW = 0, + VERSION_A, + VERSION_B, + VERSION_C, + VERSION_D, + VERSION_E, + VERSION_F, + VERSION_G +}; + +enum CHIP_PACKAGE { + CHIP_UNKNOW = 0, + NT98310, + NT98311, + NT98312, + NT98313, + NT98314, + NT98315, + NT98316 +}; +#endif diff --git a/board/novatek/na51068/loader/Include/nvt_rsa.h b/board/novatek/na51068/loader/Include/nvt_rsa.h new file mode 100755 index 000000000000..1dc342a25443 --- /dev/null +++ b/board/novatek/na51068/loader/Include/nvt_rsa.h @@ -0,0 +1,49 @@ +#ifndef _NVT_RSA_H_ +#define _NVT_RSA_H_ + +typedef enum { + NVT_RSA_MODE_NORMAL = 0, ///< normal mode, encryption or decryption + NVT_RSA_MODE_MAX +} NVT_RSA_MODE_T; + +typedef enum { + NVT_RSA_KEY_WIDTH_256 = 0, ///< key width 256 bits + NVT_RSA_KEY_WIDTH_512, ///< key width 512 bits + NVT_RSA_KEY_WIDTH_1024, ///< key width 1024 bits + NVT_RSA_KEY_WIDTH_2048, ///< key width 2048 bits + NVT_RSA_KEY_WIDTH_4096, ///< key width 4096 bits + NVT_RSA_KEY_WIDTH_MAX +} NVT_RSA_KEY_WIDTH_T; + +#define NVT_RSA_256_KEY_SIZE 32 ///< bytes +#define NVT_RSA_512_KEY_SIZE 64 ///< bytes +#define NVT_RSA_1024_KEY_SIZE 128 ///< bytes +#define NVT_RSA_2048_KEY_SIZE 256 ///< bytes +#define NVT_RSA_4096_KEY_SIZE 512 ///< bytes + +#define NVT_RSA_256_OUT_SIZE NVT_RSA_256_KEY_SIZE ///< bytes +#define NVT_RSA_512_OUT_SIZE NVT_RSA_512_KEY_SIZE ///< bytes +#define NVT_RSA_1024_OUT_SIZE NVT_RSA_1024_KEY_SIZE ///< bytes +#define NVT_RSA_2048_OUT_SIZE NVT_RSA_2048_KEY_SIZE ///< bytes +#define NVT_RSA_4096_OUT_SIZE NVT_RSA_4096_KEY_SIZE ///< bytes + +struct nvt_rsa_pio_t { + NVT_RSA_KEY_WIDTH_T key_w; ///< key width + u8 *src; ///< input data buffer + u8 *dst; ///< output data buffer + u8 *key_n; ///< key_n data buffer + u8 *key_ed; ///< key_ed data buffer, (N, e) as public key, (N, d) as private key + u32 src_size; ///< input data buffer length + u32 dst_size; ///< output data buffer length + u32 key_n_size; ///< key_n data buffer length + u32 key_ed_size; ///< key_ed data buffer length +}; + +/************************************************************************************* + * Public Function Prototype + *************************************************************************************/ +void nvt_rsa_close(void); +int nvt_rsa_open(void); +int nvt_rsa_pio_normal(struct nvt_rsa_pio_t *p_rsa); + +#endif /* _NVT_RSA_H_ */ diff --git a/board/novatek/na51068/loader/Include/nvtpack/nvtpack.h b/board/novatek/na51068/loader/Include/nvtpack/nvtpack.h new file mode 100755 index 000000000000..ab5ef6f289ea --- /dev/null +++ b/board/novatek/na51068/loader/Include/nvtpack/nvtpack.h @@ -0,0 +1,195 @@ +#ifndef _NVTPACK_H +#define _NVTPACK_H + +#define CHECKSUM_EN 0 + +#define NVTPACK_CHKSUM_HDR_VERSION 0x16040719U +#define NVTPACK_FW_HDR2_VERSION 0x16071515U + +typedef enum _NVTPACK_ER { + NVTPACK_ER_SUCCESS = 0, + NVTPACK_ER_FAILED = -1, + NVTPACK_ER_UNKNOWN_FORMAT = -2, + NVTPACK_ER_CHECK_SUM = -3, + NVTPACK_ER_NOT_FOUND = -4, + NVTPACK_ER_USER_BREAK = -5, + NVTPACK_ER_PARAM = -6, + NVTPACK_ER_MEM_NOT_ENOUGH = -7, + NVTPACK_ER_UITRON_SIZE_ALIGN4 = -8, ///< uITRON size must align by 4 + NVTPACK_ER_INVALID_WHOLE_SIZE = -9, ///< after nvtpack, whole size must align by 4 + NVTPACK_ER_SRC_NAME_BLANK = -10, ///< resource's SrcName cannot be NULL or blank + NVTPACK_ER_SRC_NAME_EXCEED = -11, ///< resource's SrcName cannot exceed 12 bytes + NVTPACK_ER_SRC_NAME_INVALID = -12, ///< resource's SrcName include invalid character + NVTPACK_ER_SRC_NAME_ALIKE = -13, ///< there resource's SrcName are alike. +} NVTPACK_ER; + +typedef enum _NVTPACK_VER { + NVTPACK_VER_UNKNOWN, ///< UNKNOWN + NVTPACK_VER_13012816, ///< NT9666X, NT9850X + NVTPACK_VER_16072017, ///< NT9668X +} NVTPACK_VER; + +#if !defined(_WIN32) +typedef struct _GUID { + unsigned int Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[8]; +} GUID; +#endif + +typedef struct _NVTPACK_RES_HDR { + GUID guid; ///< {B5CB64AE-05DD-46FA-B906-0C62D22958D6} + unsigned int TotalSize; + unsigned int CheckSum; + unsigned int ContentSize; + char SrcName[16]; ///< original packed bin file name + char DstName[16]; ///< target file name +} NVTPACK_RES_HDR; + +typedef struct _NVTPACK_FW_HDR { + GUID guid; ///< {8827BE90-36CD-4FC2-A987-73A8484E84B1} + unsigned int TotalSize; ///< sizeof(NVTPACK_FW_HDR) + n*sizeof(NVTPACK_PARTITION_HDR) + unsigned int CheckSum; ///< check sum of sizeof(NVTPACK_FW_HDR) + n*sizeof(NVTPACK_PARTITION_HDR) + unsigned int TotalRes; ///< total partitions +} NVTPACK_FW_HDR; + +typedef struct _NVTPACK_FW_HDR2 { + GUID guid; ///< {D6012E07-10BC-4F91-B28A-352F82261A50} + unsigned int uiVersion; ///< NVTPACK_FW_HDR2_VERSION + unsigned int uiHdrSize; ///< sizeof(NVTPACK_FW_HDR2); + unsigned int TotalRes; ///< total resource counts + unsigned int TotalSize; ///< whole bin size + unsigned int uiChkMethod; ///< 0: CheckSum + unsigned int uiChkValue; ///< check sum value or crc value within NVTPACK_FW_HDR2 + unsigned int uiUserData[4]; ///< user defined data that may be used in future + unsigned int uiReversed[18];///< align to 128 bytes +} NVTPACK_FW_HDR2; + +typedef struct _NVTPACK_PARTITION_HDR { + unsigned int Offset; + unsigned int Size; + unsigned int PartitionID; +} NVTPACK_PARTITION_HDR; + +typedef struct _NVTPACK_CHKSUM_HDR { + unsigned int uiFourCC ; ///< 'C','K','S','M' + unsigned int uiVersion; ///< NVTPACK_CHKSUM_HDR header version + unsigned int uiChkMethod; ///< 0: CheckSum + unsigned int uiChkValue; ///< check sum value or crc value within NVTPACK_CHKSUM_HDR + unsigned int uiDataOffset; ///< real data starting offset without NVTPACK_CHKSUM_HDR + unsigned int uiDataSize; ///< real data size without NVTPACK_CHKSUM_HDR + unsigned int uiPaddingSize; ///< padding bytes for check sum + unsigned int uiEmbType; ///< relate to EMBTYPE_????? + unsigned int uiReversed[8]; ///< align to 64 bytes +} NVTPACK_CHKSUM_HDR; + +typedef struct _NVTPACK_BFC_HDR { + unsigned int uiFourCC; ///< FourCC = BCL1 + unsigned int uiAlgorithm; ///< algorithm always is 9 + unsigned int uiSizeUnComp;///< big endian uncompressed size + unsigned int uiSizeComp; ///< big endian compressed size +} NVTPACK_BFC_HDR; + +typedef struct _NVTPACK_BININFO_HDR { + unsigned int CodeEntry; ///< [0x00] fw CODE entry (4) ----- r by Ld + unsigned int Resv1[19]; ///< [0x04~0x50] reserved (4*19) -- reserved, its mem value will filled by Ld + char BinInfo_1[8]; ///< [0x50~0x58] CHIP-NAME (8) ---- r by Ep + char BinInfo_2[8]; ///< [0x58~0x60] SDK version (8) + char BinInfo_3[8]; ///< [0x60~0x68] SDK release-date (8) + unsigned int BinLength; ///< [0x68] Bin File Length (4) --- w by Ep/bfc + unsigned int Checksum; ///< [0x6c] Check Sum or CRC (4) ----- w by Ep/Epcrc + unsigned int CRCLenCheck; ///< [0x70~0x74] Length check for CRC (4) ----- w by Epcrc (total len ^ 0xAA55) + unsigned int Resv2; ///< [0x74~0x78] reserved (4) --- reserved for other bin tools + unsigned int BinCtrl; ///< [0x78~0x7C] Bin flag (4) --- w by bfc + ///< BIT 0.compressed enable (w by bfc) + unsigned int CRCBinaryTag; ///< [0x7C~0x80] Binary Tag for CRC (4) ----- w by Epcrc (0xAA55 + "NT") +} NVTPACK_BININFO_HDR; + +typedef struct _NVTPACK_MEM { + void *p_data; + unsigned int len; +} NVTPACK_MEM; + +typedef struct _NVTPACK_VERIFY_OUTPUT { + NVTPACK_VER ver; ///< indicate package type + unsigned int partition_cnt; ///< total partition counts +} NVTPACK_VERIFY_OUTPUT; + +typedef struct _NVTPACK_GET_PARTITION_INPUT { + unsigned int id; + NVTPACK_MEM mem; +} NVTPACK_GET_PARTITION_INPUT; + +typedef struct _NVTPACK_GET_RESOURCE_INPUT { + const char *filename; + NVTPACK_MEM mem; +} NVTPACK_GET_RESOURCE_INPUT; + +typedef struct _NVTPACK_ENUM_PARTITION_INPUT { + NVTPACK_MEM mem; + void *p_user_data; ///< [Optional] e.g. if use c class, you can pass that class point to your static callback. + int (*fp_enum)(unsigned int id, NVTPACK_MEM *p_mem, void *p_user_data); +} NVTPACK_ENUM_PARTITION_INPUT; + +typedef struct _NVTPACK_ENUM_RESOURCE_INPUT { + NVTPACK_MEM mem; + void *p_user_data; ///< [Optional] e.g. if use c class, you can pass that class point to your static callback. + int (*fp_enum)(NVTPACK_RES_HDR *p_hdr, NVTPACK_MEM *p_mem, void *p_user_data); +} NVTPACK_ENUM_RESOURCE_INPUT; + +typedef struct _NVTPACK_PARTITION_ITEM { + unsigned int id; + NVTPACK_MEM mem; +} NVTPACK_PARTITION_ITEM; + +typedef struct _NVTPACK_MAKE_PARTITION_INPUT { + NVTPACK_VER ver; ///< package version + NVTPACK_PARTITION_ITEM *p_list; ///< data list + int num; ///< data counts + NVTPACK_MEM mem_work; ///< working buffer +} NVTPACK_MAKE_PARTITION_INPUT; + +typedef struct _NVTPACK_RESOURCE_ITEM { + char SrcName[16]; ///< original name + char DstName[16]; ///< target file name + NVTPACK_MEM mem; +} NVTPACK_RESOURCE_ITEM; + +typedef struct _NVTPACK_MAKE_RESOURCE_INPUT { + NVTPACK_RESOURCE_ITEM *p_list; + int num; + NVTPACK_MEM mem_work; +} NVTPACK_MAKE_RESOURCE_INPUT; + +#ifndef IsEqualGUID +#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID))) +#endif + +#ifndef MAKEFOURCC +#define MAKEFOURCC(ch0, ch1, ch2, ch3) ((unsigned int)(unsigned char)(ch0) | ((unsigned int)(unsigned char)(ch1) << 8) | ((unsigned int)(unsigned char)(ch2) << 16) | ((unsigned int)(unsigned char)(ch3) << 24 )) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +extern unsigned int nvtpack_calc_nvt_sum(NVTPACK_MEM *p_mem); +extern NVTPACK_ER nvtpack_getver(NVTPACK_MEM *p_mem, NVTPACK_VER *p_ver); +extern NVTPACK_ER nvtpack_verify(NVTPACK_MEM *p_mem, NVTPACK_VERIFY_OUTPUT *p_output); +extern NVTPACK_ER nvtpack_get_partition(NVTPACK_GET_PARTITION_INPUT *p_input, NVTPACK_MEM *p_out); +extern NVTPACK_ER nvtpack_enum_partition(NVTPACK_ENUM_PARTITION_INPUT *p_input); +//NVTPACK_VER_13012816: need sizeof(NVTPACK_FW_HDR) +n*(sizeof(NVTPACK_PARTITION_HDR) + 4) + whole_data_size +//NVTPACK_VER_16072017: need sizeof(NVTPACK_FW_HDR2) +n*(sizeof(NVTPACK_PARTITION_HDR) + 4) + whole_data_size +extern NVTPACK_ER nvtpack_make_parition_pkg(NVTPACK_MAKE_PARTITION_INPUT *p_input, NVTPACK_MEM *p_out); + +extern NVTPACK_ER nvtpack_get_resource(NVTPACK_GET_RESOURCE_INPUT *p_input, NVTPACK_MEM *p_out); +extern NVTPACK_ER nvtpack_enum_resource(NVTPACK_ENUM_RESOURCE_INPUT *p_input); +//buf need n*(sizeof(NVTPACK_RES_HDR)+32)+ whole_data_size +extern NVTPACK_ER nvtpack_make_resource_pkg(NVTPACK_MAKE_RESOURCE_INPUT *p_input, NVTPACK_MEM *p_out); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/board/novatek/na51068/loader/Include/scsi_op.h b/board/novatek/na51068/loader/Include/scsi_op.h new file mode 100755 index 000000000000..bda03aa4f419 --- /dev/null +++ b/board/novatek/na51068/loader/Include/scsi_op.h @@ -0,0 +1,205 @@ +#ifndef _SCSI_OP_H +#define _SCSI_OP_H + +/** +Only Support MSDC Vendor command code 0xF0/0xE0/0xC0. +Others vendor code would STALL OUT EP. Sense data would return illegal request sense code. +*/ +#define SCSI_OP_SET0 0xF0 +#define SCSI_OP_SET1 0xE0 +#define SCSI_OP_SET2 0xC0 + + +/////////////////////////////////////////////////////////////////////////////// +// Uart's return status: CDB[13] +// Uart's extra data len: CDB[6] ~ CDB[9] except SCSIOP_OUT_ADDR_WRITE +// Checksum rule: The CDB[0] ~ CDB[15]'s sum LSB 8bits shall be 0x00 +// Checksum is fixed CDB[14] ~ CDB[15] +// When Checksum failed. CSW Status 0x1 means command failed. +/////////////////////////////////////////////////////////////////////////////// +#define IDX_CDB_UART_DATA_LEN_LWLB 6 ///< uart's data len low word low byte +#define IDX_CDB_UART_DATA_LEN_LWHB 7 ///< uart's data len low word high byte +#define IDX_CDB_UART_DATA_LEN_HWLB 8 ///< uart's data len high word low byte +#define IDX_CDB_UART_DATA_LEN_HWHB 9 ///< uart's data len high word low byte +#define IDX_CDB_UART_STATUS_ER 13 ///< uart's csw status +#define IDX_CDB_CHKSUM_LB 14 ///< check sum low bytes +#define IDX_CDB_CHKSUM_HB 15 ///< check sum high bytes + +/////////////////////////////////////////////////////////////////////////////// +// SCSI CBW +/////////////////////////////////////////////////////////////////////////////// +typedef struct _NVT_SCSI_CBW { + unsigned int dCBWSignature; + unsigned int dCBWTag; + unsigned int dCBWDataTransferLength; + unsigned char bmCBWFlags; + unsigned char bCBWLUN; + unsigned char bCBWCBLength; + unsigned char CBWCB[16]; +} NVT_SCSI_CBW; + +/** +Open NVT Device + +The commands except SCSIOP_IN_IS_NVT can be run if open device success. +If not open first, the operation commands got CSW Status 0x1 means command failed. + +@DATA_PHASE: None. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define SCSIOP_OUT_OPEN_DEVICE 0x01 + + +/** +Send Write Loader + +The Write Address @ CDB[2]~[5]; +For example address 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE +MSDC: CDB[6]~[15] shall follow checksum rule. Content is dont care. +UART: CDB[6]~[9] is data size (because uart has no CBW to tell transmitting size) + +@DATA_PHASE: None. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define SCSIOP_OUT_WRLOADER 0x02 + +/** +Address WRITE WORD (DRAM/REG/SRAM dont care) + +The Write Address @ CDB[2]~[5]; +For example address 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE +The Write DATA @ CDB[6]~[9]. +For example address 0x12345678 shall fill CDB[6]=0x78 CDB[7]=0x56 CDB[8]=0x34 CDB[9]=0x12 +CDB[10]~[15] shall follow checksum rule. Content is dont care. + +@DATA_PHASE: None. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define SCSIOP_OUT_ADDR_WRITE 0x03 + +/** +Write Memory + +The Write Starting Address @ CDB[2]~[5]; +For example offset 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE +MSDC: CDB[6]~[15] shall follow checksum rule. Content is dont care. +UART: CDB[6]~[9] is data size (because uart has no CBW to tell transmitting size) + +@DATA_PHASE: None. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define SCSIOP_OUT_MEM_WRITE 0x04 + +/** +Read / Write flash + +send SCSIOP_FLASH_OP to loader +MSDC: CDB[6]~[15] shall follow checksum rule. Content is dont care. except CDB[10] +UART: CDB[6]~[9] is SCSIOP_FLASH_OP size (because uart has no CBW to tell transmitting size) + +@DATA_PHASE: None. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define FLASH_ACCESS_TYPE_AUTO 0 +#define FLASH_ACCESS_TYPE_NAND 1 +#define FLASH_ACCESS_TYPE_NOR 2 +#define FLASH_ACCESS_TYPE_EMMC 3 +typedef struct _SCSIOP_FLASH_OP { + unsigned int type; //FLASH_ACCESS_TYPE + unsigned int is_write; //indicate write + unsigned long long offset; //flash r/w offset + unsigned long long size; //flash r/w size + unsigned long long partition_size; //flash partition size +} SCSIOP_FLASH_OP; +#define SCSIOP_OUT_FLASH_ACCESS 0x05 + + +/** +Ask if NVT Device + +No need to SCSIOP_IN_OPEN_DEVICE +CDB[2]~[15] shall follow checksum rule + +@DATA_PHASE: IN 4 bytes return; The value 0x81200000 woule be return for 98321. <8321 = 0x2081> If checksum fail, the 0x0 would be returned. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. + +*/ +#define SCSIOP_IN_IS_NVT 0x81 + + +/** +End USB ROM CODE. + +Exit USB ROM code after receiving this command. The checksum must be correct. +After SCSIOP_IN_WRLOADER is invoked, PC invoked this to confirm write loader is ok. + +CDB[2]~[15] shall follow checksum rule + +@DATA_PHASE: None. +@CSW_PHASE status code: 0 is success and end usb rom. 0x1 means checksum failed. +*/ +#define SCSIOP_IN_WAIT_DONE 0x82 + + +/** +Address READ WORD (DRAM/REG/SRAM dont care) + +The READ Address @ CDB[2]~[5]; +For example address 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE +CDB[6]~[15] shall follow checksum rule. Content is dont care. + +@DATA_PHASE: IN 8 bytes return. DATA[0]~[3] is repeat CDB address. Read out DATA is [4] ~[7]. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define SCSIOP_IN_ADDR_READ 0x83 + + +/** +The Read Starting Address @ CDB[2]~[5]; +For example address 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE +CDB[6]~[9] is read data size +CDB[10]~[15] shall follow checksum rule. Content is dont care. + +@DATA_PHASE: IN 8 bytes return. DATA[0]~[3] is repeat CDB address. Read out DATA is [3] ~[7]. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. + +*/ +#define SCSIOP_IN_MEM_READ 0x84 + + +/** +Get Temp Buffer Address + +MSDC: CDB[6]~[15] shall follow checksum rule. Content is dont care. +UART: CDB[6]~[9] is data size (because uart has no CBW to tell transmitting size) + +@DATA_PHASE: Read out DATA is [3] ~[7]. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define SCSIOP_IN_GET_TMP_ADDR 0x85 + +/** +Notify fdt has send + +The fdt has sent into loader's temp buffer. notify loader to check its sanity. +CDB[2]~[5] is status result in word. +MSDC: CDB[6]~[15] shall follow checksum rule. Content is dont care. +UART: CDB[6]~[9] is data size (because uart has no CBW to tell transmitting size) + +@DATA_PHASE: None. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define SCSIOP_IN_FDT 0x86 + + +/** +Notify uboot or nvtpack has send + +The uboot or nvtpack has sent into loader's temp buffer. notify loader to check its sanity. +CDB[2]~[5] is status result in word. +MSDC: CDB[6]~[15] shall follow checksum rule. Content is dont care. +UART: CDB[6]~[9] is data size (because uart has no CBW to tell transmitting size) +*/ +#define SCSIOP_IN_UBOOT 0x87 + +#endif \ No newline at end of file diff --git a/board/novatek/na51068/loader/Include/sdhci.h b/board/novatek/na51068/loader/Include/sdhci.h new file mode 100755 index 000000000000..c14d3af67e51 --- /dev/null +++ b/board/novatek/na51068/loader/Include/sdhci.h @@ -0,0 +1,218 @@ +#ifndef __SDHCI_H__ +#define __SDHCI_H__ + +#define SDHCI_SPEC_300 2 +/* SDHCI_BLOCK_SIZE 0x04 */ +#define SDHCI_MAKE_BLKSZ(dma, blksz) (((dma & 0x7) << 12) | (blksz & 0xFFF)) + +/* SDHCI_TRANSFER_MODE 0x0C */ +#define SDHCI_TRNS_DMA 0x01 +#define SDHCI_TRNS_BLK_CNT_EN 0x02 +#define SDHCI_TRNS_ACMD12 0x04 +#define SDHCI_TRNS_READ 0x10 +#define SDHCI_TRNS_MULTI 0x20 + +/* SDHCI_COMMAND 0x0E */ +#define SDHCI_CMD_RESP_MASK 0x03 +#define SDHCI_CMD_CRC 0x08 +#define SDHCI_CMD_INDEX 0x10 +#define SDHCI_CMD_DATA 0x20 +#define SDHCI_CMD_ABORTCMD 0xC0 + +#define SDHCI_CMD_RESP_NONE 0x00 +#define SDHCI_CMD_RESP_LONG 0x01 +#define SDHCI_CMD_RESP_SHORT 0x02 +#define SDHCI_CMD_RESP_SHORT_BUSY 0x03 + +#define SDHCI_MAKE_CMD(c, f) (((c & 0xff) << 8) | (f & 0xff)) +#define SDHCI_GET_CMD(c) ((c>>8) & 0x3f) + +/* SDHCI_PRESENT_STATE 0x24 */ +#define SDHCI_CMD_INHIBIT 0x00000001 +#define SDHCI_DATA_INHIBIT 0x00000002 +#define SDHCI_DOING_WRITE 0x00000100 +#define SDHCI_DOING_READ 0x00000200 +#define SDHCI_SPACE_AVAILABLE 0x00000400 +#define SDHCI_DATA_AVAILABLE 0x00000800 +#define SDHCI_CARD_PRESENT 0x00010000 +#define SDHCI_CARD_STATE_STABLE 0x00020000 +#define SDHCI_CARD_DETECT_PIN_LEVEL 0x00040000 +#define SDHCI_WRITE_PROTECT 0x00080000 + +/* SDHCI_HOST_CONTROL 0x28 */ +//#define SDHCI_CTRL_LED 0x01 +#define SDHCI_CTRL_4BITBUS 0x02 +#define SDHCI_CTRL_HISPD 0x04 +#define SDHCI_CTRL_8BITBUS 0x20 +#define SDHCI_CTRL_CD_TEST_INS 0x40 +#define SDHCI_CTRL_CD_TEST 0x80 + +/* SDHCI_POWER_CONTROL 0x29 */ +#define SDHCI_POWER_ON 0x01 +//#define SDHCI_POWER_180 0x0A +//#define SDHCI_POWER_300 0x0C +#define SDHCI_POWER_330 0x0E + +/* SDHCI_CLOCK_CONTROL 0x2C */ +#define SDHCI_DIVIDER_SHIFT 8 +#define SDHCI_DIVIDER_HI_SHIFT 6 +#define SDHCI_DIV_MASK 0xFF +#define SDHCI_DIV_MASK_LEN 8 +#define SDHCI_DIV_HI_MASK 0x300 +#define SDHCI_CLOCK_CARD_EN 0x0004 +#define SDHCI_CLOCK_INT_STABLE 0x0002 +#define SDHCI_CLOCK_INT_EN 0x0001 + +/* SDHCI_SOFTWARE_RESET 0x2F */ +#define SDHCI_RESET_ALL 0x01 +#define SDHCI_RESET_CMD 0x02 +#define SDHCI_RESET_DATA 0x04 + +/* SDHCI_INT_STATUS 0x30 */ +/* SDHCI_INT_ENABLE 0x34 */ +/* SDHCI_SIGNAL_ENABLE 0x38 */ +#define SDHCI_INT_RESPONSE 0x00000001 +#define SDHCI_INT_DATA_END 0x00000002 +#define SDHCI_INT_DMA_END 0x00000008 +#define SDHCI_INT_SPACE_AVAIL 0x00000010 +#define SDHCI_INT_DATA_AVAIL 0x00000020 +#define SDHCI_INT_CARD_INSERT 0x00000040 +#define SDHCI_INT_CARD_REMOVE 0x00000080 +#define SDHCI_INT_CARD_INT 0x00000100 +#define SDHCI_INT_ERROR 0x00008000 +#define SDHCI_INT_TIMEOUT 0x00010000 +#define SDHCI_INT_CRC 0x00020000 +#define SDHCI_INT_END_BIT 0x00040000 +#define SDHCI_INT_INDEX 0x00080000 +#define SDHCI_INT_DATA_TIMEOUT 0x00100000 +#define SDHCI_INT_DATA_CRC 0x00200000 +#define SDHCI_INT_DATA_END_BIT 0x00400000 +#define SDHCI_INT_BUS_POWER 0x00800000 +#define SDHCI_INT_ACMD12ERR 0x01000000 +#define SDHCI_INT_ADMA_ERROR 0x02000000 + +#define SDHCI_INT_NORMAL_MASK 0x00007FFF +#define SDHCI_INT_ERROR_MASK 0xFFFF8000 + +#define SDHCI_INT_CMD_MASK (SDHCI_INT_RESPONSE | SDHCI_INT_TIMEOUT | \ + SDHCI_INT_CRC | SDHCI_INT_END_BIT | SDHCI_INT_INDEX) +#define SDHCI_INT_DATA_MASK (SDHCI_INT_DATA_END | SDHCI_INT_DMA_END | \ + SDHCI_INT_DATA_AVAIL | SDHCI_INT_SPACE_AVAIL | \ + SDHCI_INT_DATA_TIMEOUT | SDHCI_INT_DATA_CRC | \ + SDHCI_INT_DATA_END_BIT | SDHCI_INT_ADMA_ERROR) +#define SDHCI_INT_ALL_MASK ((unsigned int)-1) & ~0x100 + +typedef enum sdhci_reg +{ + SDHCI_DMA_ADDRESS = 0x00, + SDHCI_BLOCK_SIZE = 0x04, + SDHCI_BLOCK_COUNT = 0x06, + SDHCI_ARGUMENT = 0x08, + SDHCI_TRANSFER_MODE = 0x0c, + SDHCI_COMMAND = 0x0E, + SDHCI_RESPONSE = 0x10, + SDHCI_RESPONSE1 = 0x14, + SDHCI_RESPONSE2 = 0x18, + SDHCI_RESPONSE3 = 0x1c, + SDHCI_BUFFER = 0x20, + SDHCI_PRESENT_STATE = 0x24, + SDHCI_HOST_CONTROL = 0x28, + SDHCI_POWER_CONTROL = 0x29, + SDHCI_BLOCK_GAP_CONTROL = 0x2a, + SDHCI_WAKE_UP_CONTROL = 0x2b, + SDHCI_CLOCK_CONTROL = 0x2c, + SDHCI_TIMEOUT_CONTROL = 0x2e, + SDHCI_SOFTWARE_RESET = 0x2f, + SDHCI_INT_STATUS = 0x30, + SDHCI_ERRINT_STATUS = 0x32, + SDHCI_INT_ENABLE = 0x34, + SDHCI_ERRINT_ENABLE = 0x36, + SDHCI_SIGNAL_ENABLE = 0x38, + SDHCI_ERRSIGNAL_ENABLE = 0x3a, + SDHCI_ACMD12_ERR = 0x3c, + SDHCI_HOST_CONTROL2 = 0x3e, + SDHCI_CAPABILITIES = 0x40, + SDHCI_CAPABILITIES_1 = 0x44, + SDHCI_MAX_CURRENT = 0x48, + SDHCI_SET_ACMD12_ERROR = 0x50, + SDHCI_SET_INT_ERROR = 0x52, + SDHCI_ADMA_ERROR = 0x54, + SDHCI_ADMA_ADDRESS = 0x58, + SDHCI_ADMA_ADDRESS_HI = 0x5c, + SDHCI_PRESET_FOR_SDR12 = 0x66, + SDHCI_PRESET_FOR_SDR25 = 0x68, + SDHCI_PRESET_FOR_SDR50 = 0x6a, + SDHCI_PRESET_FOR_SDR104 = 0x6c, + SDHCI_PRESET_FOR_DDR50 = 0x6e, + SDHCI_PRESET_FOR_HS400 = 0x74, + + SPEC_VERSION_NUMBER = 0xfe, + VENDOR_DEFINE_REG0 = 0x100, + VENDOR_DEFINE_REG1 = 0x104, + VENDOR_DEFINE_REG2 = 0x108, + VENDOR_DEFINE_REG3 = 0x10c, + VENDOR_DEFINE_REG4 = 0x110, + VENDOR_DEFINE_REG5 = 0x114, + VENDOR_DEFINE_REG6 = 0x118, + VENDOR_DEFINE_REG7 = 0x11c, + VENDOR_DEFINE_REG8 = 0x120, + VENDOR_DEFINE_REG9 = 0x124, + DMA_HANDSHAKE_EN_REG = 0x128, + HW_ATTRIBUTES_REG = 0x178, + IP_REVISION_REG = 0x17C, + SDHCI_REG_MAX = 0xFFFF +} SDHCI_REG_T; +/* + * End of controller registers. + */ +//#define SDHCI_MAX_DIV_SPEC_200 256 +#define SDHCI_MAX_DIV_SPEC_300 2046 +/* + * Host SDMA buffer boundary. Valid values from 4K to 512K in powers of 2. + */ +#define SDHCI_DEFAULT_BOUNDARY_SIZE (512 * 1024) +#define SDHCI_DEFAULT_BOUNDARY_ARG (7) + +struct sdhci_host { + u32 ioaddr; + u32 quirks; + u32 host_caps; + u32 version; + u32 clock; + u32 voltages; + int index; + struct mmc *mmc; +}; + +static __inline void sdhci_writel(struct sdhci_host *host, u32 val, SDHCI_REG_T reg) +{ + (*((volatile unsigned int *)(host->ioaddr + reg)) = (unsigned int)(val)); +} + +static __inline void sdhci_writew(struct sdhci_host *host, u16 val, SDHCI_REG_T reg) +{ + (*((volatile unsigned short *)(host->ioaddr + reg)) = (unsigned short)(val)); +} + +static __inline void sdhci_writeb(struct sdhci_host *host, u8 val, SDHCI_REG_T reg) +{ + (*((volatile unsigned char *)(host->ioaddr + reg)) = (unsigned char)(val)); +} + +static __inline u32 sdhci_readl(struct sdhci_host *host, SDHCI_REG_T reg) +{ + return *((volatile unsigned int *)(host->ioaddr + reg)); +} + +static __inline u16 sdhci_readw(struct sdhci_host *host, SDHCI_REG_T reg) +{ + return *((volatile unsigned short *)(host->ioaddr + reg)); +} + +static __inline u8 sdhci_readb(struct sdhci_host *host, SDHCI_REG_T reg) +{ + return *((volatile unsigned char *)(host->ioaddr + reg)); +} + + +#endif /* __SDHCI_H__ */ diff --git a/board/novatek/na51068/loader/Include/signal.h b/board/novatek/na51068/loader/Include/signal.h new file mode 100755 index 000000000000..5a2a7078c80c --- /dev/null +++ b/board/novatek/na51068/loader/Include/signal.h @@ -0,0 +1,4 @@ +#ifndef _NVT_LIBC_SIGNAL_H__ +#define _NVT_LIBC_SIGNAL_H__ +int raise(int sig); +#endif diff --git a/board/novatek/na51068/loader/Include/spi020.h b/board/novatek/na51068/loader/Include/spi020.h new file mode 100755 index 000000000000..ea07e949ef28 --- /dev/null +++ b/board/novatek/na51068/loader/Include/spi020.h @@ -0,0 +1,281 @@ +#ifndef _SPI020_H_ +#define _SPI020_H_ + +#include "stdio.h" +#include "stdlib.h" +#include "string.h" +#include "spi_flash.h" + +#define FTSPI020_DMA_TX_CH 0 +#define FTSPI020_DMA_RX_CH 1 + +//#define CONFIG_SPI_DMA +//#define CONFIG_SPI_QUAD +//============================================================================= +// System Header, size = 256 bytes +//============================================================================= + +#define NORMAL_MODE 0 +#define HW_HANDSHAKE_MODE 1 + +#define FTSPI020_32BIT(offset) *((volatile unsigned int *)(REG_SPI020_BASE + offset)) +#define FTSPI020_16BIT(offset) *((volatile UINT16 *)(REG_SPI020_BASE + offset)) +#define FTSPI020_8BIT(offset) *((volatile unsigned char *)(REG_SPI020_BASE + offset)) +#define READ_REG32(_register_) *((volatile unsigned int *)(_register_)) +#define WRITE_REG32(_register_, _value_) (*((volatile unsigned int *)(_register_)) = (unsigned int)(_value_)) + +#define SPI_FLASH_ADDR 0x0000 +#define SPI_CMD_FEATURE1 0x0004 + #define no_addr_state 0 // bit[2:0] + #define addr_1byte 1 + #define addr_2byte 2 + #define addr_3byte 3 + #define addr_4byte 4 + #define no_dummy_cycle_2nd 0 // bit[23:16] + #define dummy_1cycle_2nd 1 + #define dummy_2cycle_2nd 2 + #define dummy_3cycle_2nd 3 + #define no_instr_state 0 // bit[25:24] + #define instr_1byte 1 + #define instr_2byte 2 + // bit[27:26] + #define no_enable_dummy_cycle 0 + +#define SPI_DATA_CNT 0x0008 +#define SPI_CMD_FEATURE2 0x000C + // bit0 + #define cmd_complete_intr_enable 1 + // bit1 + #define spi_read 0 + #define spi_write 1 + // bit2 + #define read_status_disable 0 + #define read_status_enable 1 + // bit3 + #define read_status_by_hw 0 + #define read_status_by_sw 1 + // bit4 + #define dtr_disable 0 + #define dtr_enable 1 + // bit[7:5] + #define spi_operate_serial_mode 0 + #define spi_operate_dual_mode 1 + #define spi_operate_quad_mode 2 + #define spi_operate_dualio_mode 3 + #define spi_operate_quadio_mode 4 + // bit[9:8] + #define start_ce0 0 + // bit[23:16] op_code info + + // bit[31:24] instr index + +#define CONTROL_REG 0x0010 + // bit[1:0] divider + #define divider_2 0 + #define divider_4 1 + #define divider_6 2 + #define divider_8 3 + // bit 4 mode + #define mode0 0 + #define mode3 1 + // bit 8 abort + // bit 9 wp_en + // bit[18:16] busy_loc + #define BUSY_BIT0 0 + +#define AC_TIMING 0x0014 +// bit[3:0] CS timing +// bit[7:4] Trace delay + +#define STATUS_REG 0x0018 +// bit0 Tx Empty +// bit1 Rx Full + #define tx_ready 0 + #define rx_ready 1 +// bit2 Cmd Queue Full + +#define INTR_CONTROL_REG 0x0020 + +#define INTR_STATUS_REG 0x0024 +#define cmd_complete (0x1 << 0) + +#define SPI_READ_STATUS 0x0028 +#define TX_DATA_CNT 0x0030 +#define RX_DATA_CNT 0x0034 +#define REVISION 0x0050 +#define FEATURE 0x0054 +#define support_dtr_mode (0x1 << 24) +#define SPI020_DATA_PORT 0x0100 + +// ===================================== Common commands ===================================== +#define CMD_READ_ID 0x9F +#define CMD_RESET 0xFF + +// Command +#define COMMAND_WRITE_ENABLE 0x06 +#define COMMAND_WRITE_DISABLE 0x04 +#define COMMAND_ERASE_SECTOR 0x20 +#define COMMAND_ERASE_32K_BLOCK 0x52 +#define COMMAND_ERASE_64K_BLOCK 0xD8 +#define COMMAND_ERASE_CHIP 0xC7 +#define COMMAND_READ_STATUS1 0x05 +#define COMMAND_READ_STATUS2 0x35 +#define COMMAND_WRITE_STATUS 0x01 +#define COMMAND_WRITE_PAGE 0x02 +#define COMMAND_WINBOND_QUAD_WRITE_PAGE 0x32 +#define COMMAND_QUAD_WRITE_PAGE 0x38 +#define COMMAND_READ_DATA 0x03 +#define COMMAND_FAST_READ 0x0B +#define COMMAND_FAST_READ_DUAL 0x3B +#define COMMAND_FAST_READ_DUAL_IO 0xBB +#define COMMAND_FAST_READ_QUAD 0x6B +#define COMMAND_FAST_READ_QUAD_IO 0xEB +#define COMMAND_FAST_READ_DTR_QUAD_IO 0xED +#define COMMAND_WORD_READ_QUAD_IO 0xE7 +#define COMMAND_READ_UNIQUE_ID 0x4B +#define COMMAND_EN4B 0xB7 //enter 4 byte mode +#define COMMAND_EX4B 0xE9 //exit 4 byte mode + +/* Additional command for SPI NAND */ +#define COMMAND_GET_FEATURES 0x0F +#define COMMAND_SET_FEATURES 0x1F +#define COMMAND_PAGE_READ 0x13 +#define COMMAND_PROGRAM_LOAD 0x02 +#define COMMAND_PROGRAM_EXECUTE 0x10 +#define COMMAND_BLOCK_ERASE 0xD8 + +#define SPI_XFER_CMD_STATE 0x00000002 +#define SPI_XFER_DATA_STATE 0x00000004 +#define SPI_XFER_CHECK_CMD_COMPLETE 0x00000008 + +/* Status register 1 bits */ +#define FLASH_STS_BUSY (0x1 << 0) +// ===================================== Variable and Struct ===================================== + +/* default flash parameters */ + +typedef enum { + READ_DATA = 0, + FAST_READ, + FAST_READ_QUAD_IO +} read_type_t; + +typedef enum { + SECTOR_ERASE = 0, //4K + BLOCK_32K_ERASE, + BLOCK_64K_ERASE +} erase_type_t; + +// Cmd Type for choosing +typedef enum { + PAGE_PROGRAM = 0, + QUAD_PROGRAM +} write_type_t; + +struct spi_flash { + unsigned int ce; + unsigned int erase_sector_size; + unsigned int page_size; + unsigned int nr_pages; + unsigned int size; //chip size + unsigned int mode_3_4; //addres length = 3 or 4 bytes + unsigned int read_command; + int (*spi_xfer)(struct spi_flash * flash, unsigned int len, const void *dout, void *din, unsigned long flags, int sts_hw); + int (*read) (struct spi_flash * flash, read_type_t type, unsigned int offset, unsigned int len, void *buf); + int (*write) (struct spi_flash * flash, write_type_t type, unsigned int offset, unsigned int len, void *buf); + int (*erase) (struct spi_flash * flash, erase_type_t type, unsigned int offset, unsigned int len); + int (*erase_all) (struct spi_flash * flash); + struct { + UINT32 chip_block; + UINT32 block_pg; + UINT32 page_size; + UINT32 spare_size; + UINT32 block_size; + } nand_parm; +}; + +typedef struct ftspi020_cmd { + // offset 0x00 + unsigned int spi_addr; + // offset 0x04 + unsigned char addr_len; + unsigned char dum_2nd_cyc; + unsigned char ins_len; /* instruction length */ + unsigned char conti_read_mode_en; + // offset 0x08 + unsigned int data_cnt; + // offset 0x0C + unsigned char intr_en; + unsigned char write_en; + unsigned char read_status_en; + unsigned char read_status; + unsigned char dtr_mode; + unsigned char spi_mode; + unsigned char start_ce; + unsigned char conti_read_mode_code; + unsigned char ins_code; +} ftspi020_cmd_t; + +/* Init function, 0 for success, otherwise for fail + */ +struct spi_flash *FTSPI020_Init(void); + +/* Flash Read function, + * start_pg: start page + * len: how many bytes + * 0 for success, otherwise for fail + */ +int FTSPI020_PgRd(unsigned int start_pg, unsigned char *rx_buf, unsigned int len); + +/* Flash Write function, + * start_pg: start page + * 0 for success, otherwise for fail + */ +int FTSPI020_PgWr(unsigned int start_pg, unsigned char *tx_buf); + +/* Flash sector erase, + * sector: sector no. + * sector_cnt: how many sectors + * 0 for success, otherwise for fail + */ +int FTSPI020_Erase_Sector(unsigned int sector, unsigned int sector_cnt); + +/* Flash chip erase + * 0 for success, otherwise for fail + */ +int FTSPI020_Erase_Chip(void); + +/* Update the flash config + */ +int FTSPI020_Update_Param(unsigned int divisor, unsigned int pagesz_log2, unsigned int secsz_log2, unsigned int chipsz_log2); + +/* load the code and execute it. */ +unsigned int fLib_NOR_Copy_Image(unsigned int addr, unsigned int fdt_addr); +unsigned int fLib_SPI_NAND_Copy_Image(unsigned int addr, unsigned int fdt_addr); + +/* Get the current config of FLASH. + */ +struct spi_flash *FTSPI020_Get_Param(void); + +/* Get FLASH status-1 and -2 register + */ +unsigned int FTSPI020_Get_Status(void); +int flash_set_quad_enable(struct spi_flash *flash, int en); +/* + * API backward compatiable + */ +#define spi_init FTSPI020_Init +#define spi_load_para FTSPI020_Update_Param +#define spi_pgrd FTSPI020_PgRd +#define spi_pgwr FTSPI020_PgWr +#define spi_get_satus FTSPI020_Get_Status +#define spi_erase_sect FTSPI020_Erase_Sector +#define spi_erase_chip FTSPI020_Erase_Chip +/* + * The following functions are used internal only. + */ +void ftspi020_read_status(unsigned char * status); +unsigned char ftspi020_issue_cmd(struct ftspi020_cmd *command); +void ftspi020_data_access(unsigned char *dout, unsigned char *din, unsigned int len); +void ftspi020_wait_cmd_complete(void); +#endif /* _SPI020_H_ */ \ No newline at end of file diff --git a/board/novatek/na51068/loader/Include/spi_flash.h b/board/novatek/na51068/loader/Include/spi_flash.h new file mode 100755 index 000000000000..2bef2975df8d --- /dev/null +++ b/board/novatek/na51068/loader/Include/spi_flash.h @@ -0,0 +1,111 @@ +//***************************************************************************** +// Copyright Faraday Technology Corp 2002-2003. All rights reserved. * +//----------------------------------------------------------------------------* +// Name: spi_flash.h * +// Description: SPI flash access functions * +//***************************************************************************** +#ifndef _SPI_FALSH_H_ +#define _SPI_FALSH_H_ + +#include "board.h" + +#define READ_REG32(_register_) *((volatile unsigned int *)(_register_)) +#define WRITE_REG32(_register_, _value_) (*((volatile unsigned int *)(_register_)) = (unsigned int)(_value_)) + +#define SS_SIGNATURE "NT8313" + +//============================================================================= +// System Header, size = 256 bytes +//============================================================================= +typedef struct +{ + char signature[8]; /* Signature is "GM8xxx" */ + struct { + unsigned int addr; /* partition address */ + unsigned int size; /* partition size */ + unsigned char name[8]; /* partition name */ + unsigned int img_size; /* image size */ + } image[12]; + + struct { + unsigned char pagesz_log2; // page size with bytes in log2 + unsigned char secsz_log2; // sector size with bytes in log2 + unsigned char chipsz_log2; // chip size with bytes in log2 + unsigned char clk_div; // 2/4/6/8 + } norfixup; + unsigned char reserved[2]; // Reserved for future + unsigned char last_256[2]; // byte254:0x55, byte255:0xAA +} NOR_SYSHDR; + +#if 0//def CONFIG_FPGA + +typedef struct +{ + char signature[8]; /* Signature is "GM8xxx" */ + struct { + unsigned int addr; /* partition address */ + unsigned int size; /* partition size */ + unsigned char name[8]; /* partition name */ + unsigned int img_size; /* image size */ + } image[23]; + + struct { + unsigned int nand_numblks; //number of blocks in chip + unsigned int nand_numpgs_blk; //how many pages in a block + unsigned int nand_pagesz; //real size in bytes + unsigned int nand_sparesz_inpage; //64bytes for 2k, ...... needed for NANDC023 + unsigned int nand_numce; //how many CE in chip + unsigned int nand_clkdiv; // 2/4/6/8 + unsigned int nand_ecc_capability; + unsigned int nand_sparesz_insect; + } nandfixup; + unsigned int reserved[2]; // unused + unsigned char last_511[4]; // byte510:0x55, byte511:0xAA +} SPI_NAND_SYSHDR; + +#else + +typedef struct +{ + char signature[8]; /* Signature is "GM8xxx" */ + struct { + unsigned int addr; /* partition address */ + unsigned int size; /* partition size */ + unsigned char name[8]; /* partition name */ + unsigned int img_size; /* image size */ + } image[20]; + + unsigned int arg[10][2]; + unsigned char reserved_0[4]; + + struct { + unsigned int nand_numblks; //number of blocks in chip + unsigned int nand_numpgs_blk; //how many pages in a block + unsigned short nand_pagesz; //real size in bytes + unsigned short nand_sparesz_inpage; //64bytes for 2k, ...... needed for NANDC023 + unsigned short nand_numce; //how many CE in chip + unsigned char nand_clkdiv; // 2/4/6/8 + unsigned char function; + //unsigned int nand_ecc_capability; + //unsigned int nand_sparesz_insect; + } nandfixup; + unsigned char reserved[2]; // unused + unsigned char last_511[2]; // byte510:0x55, byte511:0xAA +} SPI_NAND_SYSHDR; +#endif + +//============================================================================= +// SPI flash access functions +//============================================================================= +void spi_load_para(INT32U dividor, INT32U pagesz_log2, + INT32U secsz_log2, INT32U chipsz_log2); +INT32U spi_get_satus(void); +void spi_erase_sect(INT32U sector, INT32U sector_cnt); +void spi_erase_chip(void); +int spi_pgrd(INT32U page, INT32U *buf, INT32U len); +int spi_pgwr(INT32U page, INT32U *buf); + +#endif //_SPI_FALSH_H_ + +//----------------------------------------------------------------------------- +// EOF spi_flash.h diff --git a/board/novatek/na51068/loader/Include/stdarg.h b/board/novatek/na51068/loader/Include/stdarg.h new file mode 100755 index 000000000000..f9af3123244d --- /dev/null +++ b/board/novatek/na51068/loader/Include/stdarg.h @@ -0,0 +1,19 @@ +#ifndef __NVT_STDARG_H__ +#define __NVT_STDARG_H__ + +typedef char *va_list; + +/* + * Storage alignment properties + */ +#define _AUPBND (sizeof (int) - 1) +#define _ADNBND (sizeof (int) - 1) + +/* + * Variable argument list macro definitions + */ +#define _bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) +#define va_arg(ap, T) (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND)))) +#define va_end(ap) (void) 0 +#define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND)))) +#endif diff --git a/board/novatek/na51068/loader/Include/stdio.h b/board/novatek/na51068/loader/Include/stdio.h new file mode 100755 index 000000000000..ec8eff4318d4 --- /dev/null +++ b/board/novatek/na51068/loader/Include/stdio.h @@ -0,0 +1,23 @@ +/** + STDIO header + + STDIO header + + @file stdio.h + @ingroup mISYSClib + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef __NVT_STDIO_H__ +#define __NVT_STDIO_H__ + +/** \addtogroup mISYSClib */ +//@{ + +int sprintf(char * buf, const char *fmt, ...); +int sscanf(const char * buf, const char * fmt, ...); + +//@} +#endif diff --git a/board/novatek/na51068/loader/Include/stdlib.h b/board/novatek/na51068/loader/Include/stdlib.h new file mode 100755 index 000000000000..9f8540807eb6 --- /dev/null +++ b/board/novatek/na51068/loader/Include/stdlib.h @@ -0,0 +1,4 @@ +#ifndef __NVT_LIBC_STDLIB_H__ +#define __NVT_LIBC_STDLIB_H__ +int atoi(const char *nptr); +#endif diff --git a/board/novatek/na51068/loader/Include/string.h b/board/novatek/na51068/loader/Include/string.h new file mode 100755 index 000000000000..5895db6eba7e --- /dev/null +++ b/board/novatek/na51068/loader/Include/string.h @@ -0,0 +1,47 @@ +/** + string header + + string header + + @file string.h + @ingroup mISYSClib + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef __NVT_LIBC_STRING_H__ +#define __NVT_LIBC_STRING_H__ + +/** \addtogroup mISYSClib */ +//@{ + +/** + size_t data type + + data type to store value return by sizeof keyword +*/ +typedef unsigned int size_t; + +extern size_t strlen(const char *s) __attribute__ ((section (".part1"))); +extern size_t strnlen(const char *s, size_t count); +extern char *strncpy(char *dest, const char *src, size_t count); +extern char *strncat(char *dest, const char *src, size_t count); +extern char *strstr(const char *s1, const char *s2); +extern int strncmp(const char *cs, const char *ct, size_t count); +extern char *strrchr(const char *s, int c); +extern char *strcpy(char *dest, const char *src); +extern char *strcat(char *dest, const char *src); +extern char *strchr(const char *s, int c); +extern char* strtok(char *s, const char *delim); +extern int strcmp(const char *cs, const char *ct); + +extern void *utl_memset(void *s, int c, size_t count); +extern void *utl_memcpy(void *dest, const void *src, size_t count); +extern int memcmp(const void *cs, const void *ct, size_t count); +extern void *memmove(void *dest, const void *src, size_t count); +extern void *memchr(const void *ptr, int value, size_t count); +//@} + +#endif + diff --git a/board/novatek/na51068/loader/Include/timer.h b/board/novatek/na51068/loader/Include/timer.h new file mode 100755 index 000000000000..8f829f0f0410 --- /dev/null +++ b/board/novatek/na51068/loader/Include/timer.h @@ -0,0 +1,9 @@ +#ifndef __TIMER_H__ +#define __TIMER_H__ + +void udelay(unsigned int usec); +void mdelay(unsigned int msec); +void delay(unsigned int sec); + + +#endif /* __TIMER_H__ */ diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile new file mode 100644 index 000000000000..96063aba60a6 --- /dev/null +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile @@ -0,0 +1,57 @@ +#---------------------------------------------------------------------- +# include make config file +#---------------------------------------------------------------------- +include ../../../Project/Model/ModelConfig.txt +include ../../../Project/Model/ModelConfig_$(MODEL).txt +include ../../../Project/Model/MakeConfig.txt + +#---------------------------------------------------------------------- +# set the library name here +#---------------------------------------------------------------------- +PRJ_NAME = Ctrl_Flow + + +#---------------------------------------------------------------------- +# add/delete source files here +#---------------------------------------------------------------------- +SRC = \ + main.c \ + bl_func.c \ + bl_u2.c \ + nand_ids.c\ + spi_nor_ids.c\ + +ASM = + +#---------------------------------------------------------------------- +# set the include directory here +#---------------------------------------------------------------------- +INC_DIR = . \ + ../../../Include + +#---------------------------------------------------------------------- +# set the image output directory here +#---------------------------------------------------------------------- +IMG_BASE_DIR = ../../../ARC/Lib + +#---------------------------------------------------------------------- +# add additional C and assembly flags here +#---------------------------------------------------------------------- +CFLAGS_D = -O2 +ASMFLAGS_D = + +CFLAGS_R = -O2 +ASMFLAGS_R = + +C_DEFINE_EXT = \ + $(EXTSTRG_PARAM) \ + $(SECURE_DECRYPT_UBOOT_PARAM) \ + $(UBOOT_BIND_PARAM) + +CFLAGS_R = $(C_DEFINE_EXT) + +#---------------------------------------------------------------------- +# include common parts of the makefile +#---------------------------------------------------------------------- +MAKE_COMMON_DIR = ../../../MakeCommon +include $(MAKE_COMMON_DIR)/OutputLib.txt diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c new file mode 100755 index 000000000000..704d4ff7ca45 --- /dev/null +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -0,0 +1,2114 @@ +/* + Main control function + + This file is implement by user mode + + @file bl_func.c + + Copyright Novatek Microelectronics Corp. 2014. All rights reserved. +*/ + +#include "constant.h" +#include "fuart.h" +#include "fat.h" +#include "StorageDef.h" +#include "global.h" +#include "bl_func.h" +#include "string.h" +#include "lz.h" +#include "debug.h" +#include "loader.h" +#include "emb_partition_info.h" +#include "modelext_info.h" +#include "bin_info.h" +#include "shm_info.h" +#include "libfdt.h" +#include <stdlib.h> +#include "mmc_api.h" +#include "cache.h" +#include "Memory.h" +#include "bl_u2.h" +#include "crypto.h" +#include "nand.h" +#include "nor.h" + +PSTORAGE_OBJ int_strg_obj = NULL; +#define _THUMB2 __attribute__((target("thumb2"))) +#define FW_PART1_SIZE_OFFSET (CODE_SECTION_OFFSET + 0x04) //ref to CodeInfo.S on rtos (addr of _section_01_size) +static uint32_t global_timer_freq = 3000000; //3MHz = 3000000 Hz + +static UINT8 UPDATE_FW_NAME[] = {"FW98321A.BIN"}; +static UINT8 UPDATE_LOADER_NAME[] = {"LD98321A.BIN"}; +static UINT8 RUN_FW_NAME[] = {"FW98321T.BIN"}; +static UINT8 *LOADER_START_STR = {(UINT8 *)"\r\nLoader Start ..."}; +static UINT8 RECOVERY_FW_NAME[] = {"FW98321R.BIN"}; +static UINT32 g_uiPartitionID = 2; +static UINT32 g_uiVersion = 0; + +#define _TODO 0 + +#define bl_memcpy utl_memcpy +#define bl_memset utl_memset +#define ALIGN_FLOOR(value, base) ((value) & ~((base)-1)) +#define ALIGN_CEIL(value, base) ALIGN_FLOOR((value) + ((base)-1), base) +#define SIZE_PRELOAD 0x400 +#define SIZE_PRESERVE_USB 0x2000 + +static UINT32 g_rtos_load_addr = 0; +static UINT32 g_rtos_target_addr = 0; +static UINT32 g_rtos_size = 0; + + +extern char _loader_heap_base[]; +static BOOL g_is_flash_open = FALSE; // indicate flash is open for updating non-fully all-in-one bin. +static UINT32 g_uiStartBlkUpdateFW = StartNandBlkUpdateFW; +static STORAGEINT gStorageIntType = STORAGEINT_UNOKNOWN; +static UINT32 g_uiNandBlkSize = 0; + +extern void uart_upgrade_procedure(void); +#if !(USB_WRITELOADER) +extern void set_usb_suspend(void); +#endif + +#if (FDT_SUPPORT) +#define PATH_MEM_DRAM "/nvt_memory_cfg/dram" +#define PATH_MEM_LOADER "/nvt_memory_cfg/loader" +#define PATH_MEM_UBOOT "/nvt_memory_cfg/uboot" +#define PATH_MEM_FDT "/nvt_memory_cfg/fdt" +#define PATH_MEM_SHMEM "/nvt_memory_cfg/shmem" +#define PATH_MEM_RTOS "/nvt_memory_cfg/rtos" +#define PATH_MEM_NUTTX "/nvt_memory_cfg/nuttx" +#define PATH_MEM_CORE2_ENTRY1 "/nvt_memory_cfg/core2entry1" +#define PATH_MEM_CORE2_ENTRY2 "/nvt_memory_cfg/core2entry2" +#define PATH_NVTPACK_INDEX "nvtpack/index" +#define PATH_PARTITION_LOADER "partition_loader" +#define PATH_PARTITION_FDT "partition_fdt" +#define PATH_PARTITION_UBOOT "partition_uboot" +#define PATH_PARTITION_NUTTX "partition_nuttx" +#define PATH_PARTITION_RTOS "partition_rtos" +#define PROPERTY_REG "reg" +#define PROPERTY_LABEL "label" +#define PROPERTY_PARTITION_NAME "partition_name" +static DRAM_PARTITION g_dram_partition = {0}; +static EMB_PARTITION g_emb_uboot = {0}; +static EMB_PARTITION g_emb_loader = {0}; +static EMB_PARTITION g_emb_rtos = {0}; +#else // NO FDT_SUPPORT +// refer to met-tbl.dtsi /nvt_memory_cfg +static DRAM_PARTITION g_dram_partition = { + .dram_addr = 0x00000000, + .dram_size = 0x20000000, + .rev_addr = 0x00200000, ///< shmem + .rev_size = 0x00000200, ///< shmem + .loader_addr = 0x01000000, + .loader_size = 0x00800000, + .fdt_addr = 0x00100000, + .fdt_size = 0x00040000, + .uboot_addr = 0x1E000000, + .uboot_size = 0x01FC0000, + .rtos_addr = 0x01840000, ///< optional, only for fast-boot, + .rtos_size = 0x00780000, ///< optional, only for fast-boot + .core2_entry1_addr = 0x00000000, ///< optional, only for dual core IC (fixed here, and must be) + .core2_entry1_size = 0x00004000, ///< optional, only for dual core IC + .core2_entry2_addr = 0x1FFC0000, ///< optional, only for dual core IC (address better in the bottom of dram to avoid memory space overlap) + .core2_entry2_size = 0x00040000, ///< optional, only for dual core IC +}; +// refer to storage-partition.dtsi +static EMB_PARTITION g_emb_loader = { + .PartitionOffset = 0x00000, + .PartitionSize = 0x40000, +}; +static EMB_PARTITION g_emb_uboot = { + .PartitionOffset = 0xC0000, + .PartitionSize = 0x200000, +}; +static EMB_PARTITION g_emb_rtos = { ///< optional, only for fast-boot, + .PartitionOffset = 0x2B40000, + .PartitionSize = 0xA00000, +}; +//following just for processing all-in-one bin (nvtpack) +//refer to nvtpack.dtsi +#define NVTPACK_IDX_LOADER 0 +#define NVTPACK_IDX_UBOOT 3 +#define NVTPACK_IDX_RTOS 10 +#endif + +//#if CHECKSUM_EN +// Error message +static char FWErrorMsg[] = "\r\nFW check fail\r\n"; +//#endif + +// Error message +static char RWErrorMsg[] = "\r\nR/W error\r\n"; +static char LoaderErrorMsg[] = "\r\nLoader check fail\r\n"; + +//--------------------------------------------------------------------------- +// Static function +//--------------------------------------------------------------------------- +/** + Display error message. + + Display error message. + CPU loop forever and LED is red. + + @param Msg: Message to display + @return void +*/ +_THUMB2 static void bl_displayErrMsg(char *Msg) +{ + // Display error message to UART + debug_msg(Msg); + // Loop forever + while (1) { + ; + } +} + + +/** + Invert endianess of input word + + + @param[in] a input word + + @return translated word +*/ +_THUMB2 static UINT32 invertEndian(UINT32 a) +{ + return __builtin_bswap32(a); +} + + +/** + Check FW code. + + Check FW code and file length. + The FW binary file must be post-proecessd by encrypt_bin.exe. + This function must sync to encrypt_bin.exe. + If FW checking is fail, the CPU will loop forever and LED is red. + + @param[in] uiAddress FW code in DRAM starting address + @param[in] uiFileLen FW code length + @return void +*/ +_THUMB2 static void bl_checkFW(UINT32 uiAddress, UINT32 uiFileLen) +{ + NVTPACK_MEM mem = {0}; + mem.p_data = (void *)uiAddress; + mem.len = uiFileLen; + if (nvtpack_calc_nvt_sum(&mem) != 0) { + bl_displayErrMsg(FWErrorMsg); + } +} + +/** + Check boot loader code. + + Check boot loader code. + + @return void +*/ +_THUMB2 static void bl_checkLoader(UINT32 uiAddr, UINT32 uiSize) +{ + UINT16 *puiValue, uiSum; + UINT32 i; + + puiValue = (UINT16 *)uiAddr; + uiSum = 0; + + for (i = 0; i < (uiSize >> 1); i++) { + uiSum += (*puiValue + i); + puiValue++; + } + + if ((*(UINT16 *)(uiAddr + LOADER_TAG_OFFSET) != LOADER_TAG_VALUE) || + (uiSum != 0)) { + bl_displayErrMsg(LoaderErrorMsg); + } +} +#if (SECURE_DECRYPT_UBOOT) + +_THUMB2 static void get_bininfo_size_offset(unsigned char* bininfo,unsigned int* size,unsigned int *offset) +{ + /****this headinfo is for encrypt header + BinInfo will set partition offset and size + BinInfo_1[0~3] public key offset + BinInfo_1[4~7] public key length + BinInfo_2[0~3] signature offset + BinInfo_2[4~7] signature length + BinInfo_3[0~3] encrypted offset + BinInfo_3[4~7] encrypted size + BinLength total bin size + Checksum total bin checksum + others parameters set 0 + */ + *size = bininfo[4] | bininfo[5]<<8 | bininfo[6] << 16 | bininfo[7] << 24; + *offset = bininfo[0] | bininfo[1] << 8 | bininfo[2] << 16 | bininfo[3] <<24; +} + +_THUMB2 static int decrypt_aes_cbc(unsigned int input, unsigned int output, unsigned len) +{ + + CRYPT_OP crypt_op_param; + if(len &0x0f) + { + debug_msg_var("enc size", len); + debug_err("not align 16\r\n"); + return -21; + } + if((input & 0x03) || (output & 0x03) || (len & 0x03) ){ //check word alignment + //debug_msg_var("input", input); + //debug_msg_var("output", output); + //debug_msg_var("len", len); + //debug_err("not word align\r\n"); + return -22; + } + crypt_op_param.op_mode = CRYPTO_CBC; + crypt_op_param.en_de_crypt = CRYPTO_DECRYPT; + crypt_op_param.src_addr = input; + crypt_op_param.dst_addr = output; + crypt_op_param.length = len; //Need align to 16bytes align + //debug_msg_var("src",(unsigned int)crypt_op_param.src_addr); + //debug_msg_var("dst",(unsigned int)crypt_op_param.dst_addr); + + #if 0 + debug_msg_var("input",input); + debug_msg_var("output",output); + debug_msg_var("len",len); + unsigned char *tmp = (unsigned char *) crypt_op_param.src_addr; + int i=0; + debug_msg_var("encryped buf addr",(unsigned int)tmp); + for(i=0;i<16;i++){ + debug_msg_var("encryped buf",(unsigned int)tmp[i]); + } + #endif + if(crypto_data_operation(EFUSE_OTP_1ST_KEY_SET_FIELD, crypt_op_param) != 0) + { + //debug_err("aes dec fail\r\n"); + return -23; + } + #if 0 + unsigned char *tmp = (unsigned char *) crypt_op_param.src_addr; + int i=0; + tmp = (unsigned char *) crypt_op_param.dst_addr; + debug_msg_var("decryped addr",(unsigned int)&tmp[0]); + for(i=0;i<16;i++){ + debug_msg_var("decryped buf",(unsigned int)tmp[i]); + } + + #endif + return 0; + +} + +_THUMB2 static void data_reverse(unsigned char* input_data, unsigned int size) +{ + unsigned int i=0; + unsigned char tmp=0; + for(i=0;i< (size/2);i++) + { + tmp = input_data[size - 1 - i]; + input_data[size - 1 - i] = input_data[i]; + input_data[i] = tmp; + } + +} + +_THUMB2 static int do_decrypt_aes(unsigned int input_data, unsigned int output_data, unsigned int* output_size,unsigned int partition_size) +{ + + unsigned int encrypt_offset =0; + unsigned int encrypt_size =0; + unsigned int data_size = 0; + HEADINFO *p_headinfo = (HEADINFO *)input_data; + int er=0; + get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_3, &encrypt_size, &encrypt_offset); + data_size = p_headinfo->BinLength - encrypt_offset; +#if 1 //for signature check + unsigned int key_offset =0; + unsigned int key_size =0; + unsigned int signature_offset =0; + unsigned int signature_size = 0; + UINT32 hash_buf[8]; + unsigned int n_size=0; + unsigned int e_size=0; + unsigned int sha256_align_size =0; + UINT32 rsa_output[64]; + UINT32 * signature_buff = NULL; + UINT32 *key_n = NULL; + UINT32 *key_e = NULL; + UINT32 *signature_addr = NULL; + get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_1, &key_size, &key_offset); + get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_2, &signature_size, &signature_offset); + n_size = signature_size;// if rsa 2048 , signature_size should be 256 bytes + e_size = key_size - n_size; + key_n = (UINT32 *)(input_data + key_offset); + // now only support rsa 2048 + key_e = (UINT32 *)(input_data + key_offset + signature_size); // signature_size should be 256 bytes, n key should be 256 + data_reverse((unsigned char *)(key_n),n_size); + data_reverse((unsigned char *)(key_e),e_size); + + er = rsa_keycheck(key_n, 1);// check rsa n key in efuse 1 and 2 field, 0 field for aes key + if(er == 0) + { + debug_err("key fail\r\n"); + return -20; + } + signature_addr = (UINT32 *)(input_data + signature_offset); + data_reverse((unsigned char *)signature_addr, signature_size); + + //decrypt signature + rsa_decrypt(signature_addr, signature_size, key_n, n_size, key_e, e_size,rsa_output); + + data_reverse((unsigned char *)rsa_output, signature_size); + + //remove pending data 0, the last 32 bytes will be signature data + signature_buff = (UINT32 *)&rsa_output[(sizeof(rsa_output)/4 ) - (32/4 )];// offset need devided by 4, because of UINT32 type + //hash encrypt data + #if 0 + debug_msg_var("partition_size:",partition_size); + debug_msg_var("partition last addr:",input_data); + debug_msg_var("partition last addr:",input_data + partition_size); + debug_msg_var("input_data + encrypt_offset:",input_data + encrypt_offset); + debug_msg_var("input_data + encrypt_offset + data_size:",input_data + encrypt_offset + data_size); + debug_msg_var("data_size:",data_size); + debug_msg_var("hash buf addr:",(unsigned int)hash_buf); + #endif + + if((data_size & 0x3f) != 0) + { + // hardware sha256 need align 64, need set pending 0 + sha256_align_size = ((data_size/0x40) + 1)*0x40; + bl_memset((unsigned char *)(input_data + encrypt_offset + data_size),0, sha256_align_size - data_size); + } + else + { + sha256_align_size = data_size; + } + + shahw((unsigned char *)(input_data + encrypt_offset), sha256_align_size, hash_buf); + + //compare signature and current hash + if(memcmp((void *)hash_buf, (void *)signature_buff, sizeof(hash_buf)) != 0) + { + debug_err("sig fail\r\n"); + return -20; + } +#endif +//decrypt data + //dma addr should 4 alignment, input_data address is 4 alignment + if((input_data + encrypt_offset) & 0x03) + { + utl_memcpy((void *)input_data,(unsigned char*)(input_data + encrypt_offset), data_size); + er = decrypt_aes_cbc(input_data, output_data, encrypt_size); + } + else + { + er = decrypt_aes_cbc(input_data + encrypt_offset, output_data, encrypt_size); + } + if(er != 0) + { + debug_err("aes fail\r\n"); + return er; + } + + *output_size = data_size; + + //add plaintext data to output buf--> aes should 16 alignment, if data not alignment, the last bytes we will not encrypt data + int plaintext_size = data_size - encrypt_size; + unsigned char *p_output = (unsigned char *)output_data; + if( plaintext_size > 0) + { + utl_memcpy(&p_output[encrypt_size], (unsigned char*)(input_data + encrypt_offset+ encrypt_size),plaintext_size); + } + return 0; + +} +#endif + + + +_THUMB2 static void bl_cpu_timer_init(UINT32 value) +{ + UINT32 dwVal; + OUTW(configARM_TIMER_BASEADDR + ARM_TIMER_LOAD_OFFSET, value); + + dwVal = INW(configARM_TIMER_BASEADDR + ARM_TIMER_CONTROL_OFFSET); + /* Enable Auto reload mode. */ + dwVal |= ARM_TIMER_CONTROL_AUTO_RELOAD_MASK; + /* Clear prescaler control bits */ + dwVal &= ~ARM_TIMER_CONTROL_PRESCALER_MASK; + /* Set prescaler value */ + dwVal |= ((CYGHWR_HAL_RTC_PRESCALER - 1) << ARM_TIMER_CONTROL_PRESCALER_SHIFT); + /* Enable the decrementer */ + //dwVal |= ARM_TIMER_CONTROL_ENABLE_MASK; + /* Enable the interrupt */ + dwVal |= ARM_TIMER_CONTROL_IRQ_ENABLE_MASK; + + OUTW(configARM_TIMER_BASEADDR + ARM_TIMER_CONTROL_OFFSET, dwVal); + + OUTW(configARM_TIMER_BASEADDR + ARM_TIMER_ISR_OFFSET, + ARM_TIMER_ISR_EVENT_FLAG_MASK); + +} + +_THUMB2 int bl_flash_open(void) +{ + int er; + //UINT32 uiStorageVersion = (UINT32)&_load_nand_table_start_base; + + if (g_is_flash_open) { + return 0; + } +// User define SPI-NAND id table sample code +// int_strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_IDENTIFY_CB, (UINT32)nand_identify); + +// User define SPI-NOR id table sample code +// int_strg_obj->flash_installIdentifyCB(nor_identify); + er = int_strg_obj->flash_open(); + + if (er < 0) { + debug_err_var("flash open fail", er); + return -1; + } + + //OUTREG32(NAND_TABLE_VERSION_ADDR, INREG32(uiStorageVersion)); + + //if (er == E_OK) { + // OUTREG32(NAND_TABLE_FLAG_ADDR, 0x46495053); //'S''P''I''F' + //} else { // E_OK_TABLE_FOUND(1) or E_OK_TABLE_NOT_FOUND(2) + // OUTREG32(NAND_TABLE_FLAG_ADDR, er); + //} + g_uiNandBlkSize = int_strg_obj->flash_getBlockSize(); + if (g_uiNandBlkSize == 0x10000) { + debug_msg("SPI NOR\r\n"); + g_uiStartBlkUpdateFW = 1; + } else if (g_uiNandBlkSize == EMMC_BLOCK_SIZE) { + debug_msg("EMMC\r\n"); + g_uiStartBlkUpdateFW = FDT_OFFSET / EMMC_BLOCK_SIZE; + } else { + g_uiStartBlkUpdateFW = StartNandBlkUpdateFW; + } + + g_is_flash_open = TRUE; + return 0; +} + + + +#if (FDT_SUPPORT) +_THUMB2 static const void *bl_get_fdt_property(const void *p_dtb, const char *p_path, const char *p_property, int *len) +{ + int nodeoffset; /* next node offset from libfdt */ + const void *nodep; /* property node pointer */ + + nodeoffset = fdt_path_offset(p_dtb, p_path); + if (nodeoffset < 0) { + return NULL; + } + nodep = fdt_getprop(p_dtb, nodeoffset, p_property, len); + if (len == 0) { + return NULL; + } + return nodep; +} +#endif + + +_THUMB2 static unsigned char *bl_get_fdt_cfg(const void *p_dtb, MODELEXT_TYPE type) +{ +#if (FDT_SUPPORT) + int len; + const int *nodep; + + UINT8 *p_rt = NULL; + + switch (type) { + case MODELEXT_TYPE_DRAM_PARTITION: + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_DRAM, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get dram fail\r\n"); + return NULL; + } + g_dram_partition.dram_addr = be32_to_cpu(nodep[0]); + g_dram_partition.dram_size = be32_to_cpu(nodep[1]); + + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_LOADER, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get loader fail\r\n"); + return NULL; + } + g_dram_partition.loader_addr = be32_to_cpu(nodep[0]); + g_dram_partition.loader_size = be32_to_cpu(nodep[1]); + + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_UBOOT, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get uboot fail\r\n"); + return NULL; + } + g_dram_partition.uboot_addr = be32_to_cpu(nodep[0]); + g_dram_partition.uboot_size = be32_to_cpu(nodep[1]); + + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_FDT, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get fdt fail\r\n"); + return NULL; + } + g_dram_partition.fdt_addr = be32_to_cpu(nodep[0]); + g_dram_partition.fdt_size = be32_to_cpu(nodep[1]); + + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_RTOS, PROPERTY_REG, &len); + if (nodep != NULL) { + g_dram_partition.rtos_addr = be32_to_cpu(nodep[0]); + g_dram_partition.rtos_size = be32_to_cpu(nodep[1]); + } + + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_NUTTX, PROPERTY_REG, &len); + if (nodep != NULL) { + g_dram_partition.nuttx_addr = be32_to_cpu(nodep[0]); + g_dram_partition.nuttx_size = be32_to_cpu(nodep[1]); + } + + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_CORE2_ENTRY1, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("get CORE2_ENTRY1 dtb fail\r\n"); +// return NULL; + } + + g_dram_partition.core2_entry1_addr = be32_to_cpu(nodep[0]); + g_dram_partition.core2_entry1_size = be32_to_cpu(nodep[1]); + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_CORE2_ENTRY2, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("get CORE2_ENTRY2 dtb fail\r\n"); +// return NULL; + } + g_dram_partition.core2_entry2_addr = be32_to_cpu(nodep[0]); + g_dram_partition.core2_entry2_size = be32_to_cpu(nodep[1]); + + p_rt = (UINT8 *)&g_dram_partition; + + break; + + case MODELEXT_TYPE_BIN_INFO: + nodep = (const int *)bl_get_fdt_property(p_dtb, PATH_MEM_SHMEM, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get shmem fail\r\n"); + return NULL; + } + + if (sizeof(SHMINFO) > be32_to_cpu(nodep[1])) { + debug_err("shmem size mismatch\r\n"); + return NULL; + } + + p_rt = (UINT8 *)be32_to_cpu(nodep[0]); + break; + + default: + debug_err_var("not handle type\r\n", type); + return NULL; + } + return p_rt; +#else // NO FDT_SUPPORT + switch (type) { + case MODELEXT_TYPE_DRAM_PARTITION: + return (UINT8 *)&g_dram_partition; + case MODELEXT_TYPE_BIN_INFO: + return (UINT8 *)g_dram_partition.rev_addr; + default: + return NULL; + } +#endif +} + +_THUMB2 int bl_chk_valid_all_in_one(NVTPACK_MEM *p_mem_all_in_one) +{ + NVTPACK_ER er; + NVTPACK_VER ver; + + er = nvtpack_getver(p_mem_all_in_one, &ver); + + if (er != NVTPACK_ER_SUCCESS) { + return -1; + } + + if (ver == NVTPACK_VER_16072017) { + return 0; + } + + return -1; +} + +_THUMB2 int bl_chk_fdt(unsigned int addr, unsigned int size) +{ + DRAM_PARTITION *p_dram_partition = NULL; + + if (fdt_check_header((void *)addr) != 0) { + debug_err("invalid dtb\r\n"); + return -1; + } + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)addr, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("invalid dram_partition\r\n"); + return -1; + } + + // check tmp memory (file load) cannot overlap with uboot + // we allow to overlap with linux, root-fs because uboot will reload bin file later + debug_msg_var("tmp_addr", SDRAM_Start_FW); + + if ((addr < p_dram_partition->uboot_addr && addr + size > p_dram_partition->uboot_addr) || + (addr > p_dram_partition->uboot_addr && addr + size < p_dram_partition->uboot_addr + p_dram_partition->uboot_size)) { + debug_err_var("addr", addr); + debug_err_var("size", size); + debug_err("uboot & tmp_addr are overlapped\r\n"); + return -1; + } + return 0; +} + +_THUMB2 int bl_chk_uboot(unsigned int addr, unsigned int size) +{ + #if CHECKSUM_EN + NVTPACK_MEM mem = {0}; + mem.p_data = (void *)addr; + mem.len = size; + if (nvtpack_calc_nvt_sum(&mem) != 0) { + debug_err("uboot check sum fail"); + return -1; + } + #endif + return 0; +} + +_THUMB2 static void bl_core2_reset(void) +{ + UINT32 core_reg; + //cc_startCore(CC_CORE_CA53_CORE2); + //0xF8400000 + core_reg = *(volatile UINT32 *)0xF84000F0; + core_reg &= ~(1<<3); + core_reg &= ~(1<<11); + *(volatile UINT32 *)0xF84000F0 = core_reg; + core_reg |= (1<<2)|(1<<10) | (1<<21); + core_reg |= (1<<17); + *(volatile UINT32 *)0xF84000F0 = core_reg; + +} + +_THUMB2 static int bl_smp_start(unsigned char *p_modelext, UINT32 uboot_entry) +{ + extern char _load_core2_jump_program_start_base[]; + extern char _load_core2_jump_program_end_base[]; + extern char _load_core2_entry_program_start_base[]; + extern char _load_core2_entry_program_end_base[]; + UINT32 code2JumpCodelen, code2EntryCodelen; + + + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_modelext, MODELEXT_TYPE_BIN_INFO); + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + + DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_modelext, MODELEXT_TYPE_DRAM_PARTITION); + if (p_bininfo == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + debug_msg_var("fdt", (UINT32)p_modelext); + debug_msg_var("shm", (UINT32)p_bininfo); + + p_bininfo->boot.fdt_addr = (UINT32)p_modelext; + debug_msg_var("p_bininfo->boot.fdt_addr", p_bininfo->boot.fdt_addr); + utl_memset(p_bininfo->boot.LdInfo_1, 0, sizeof(p_bininfo->boot.LdInfo_1)); + utl_memcpy(p_bininfo->boot.LdInfo_1, "LD_NVT", 6); + // clear cc_core1_addr, cc_core2_addr +#if USB_WRITELOADER + if(utl_get_bootsrc() == BOOT_SOURCE_UART) { + p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_UART; + } else if(USB_WRITELOADER || utl_get_bootsrc() == BOOT_SOURCE_USB) { + p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_USB; + } else { + p_bininfo->comm.Resv[0] = BOOT_REASON_NORMAL; + } +#else +// if (card_get_type() == EXT_STORAGE_TYPE_ETH) +// p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_ETH; +// else if (g_is_recovery_triggered) +// p_bininfo->comm.Resv[0] = BOOT_REASON_RECOVERY_SYS; +// else +#if (STORAGE_EXT_TYPE == STORAGE_EXT_ETH) + p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_ETH; +#else + p_bininfo->comm.Resv[0] = BOOT_REASON_NORMAL; +#endif +#endif + p_bininfo->comm.Resv[1] = 0; // COMM_CORE1_START + p_bininfo->comm.Resv[2] = 0; // COMM_CORE2_START + p_bininfo->comm.Resv[3] = 0; // COMM_UITRON_COMP_ADDR + p_bininfo->comm.Resv[4] = 0; // COMM_UITRON_COMP_LEN + + debug_msg("bl_smp_start\r\n"); + + debug_msg_var("uboot_entry", uboot_entry); + + //check core2_entry1 must at addr 0 + if (p_dram_partition->core2_entry1_addr != CORE2_JUMP_ADDR) { + bl_displayErrMsg("core2entry1 != 0"); + } + + // copy core2 jump code to dram 0x0 + code2JumpCodelen = _load_core2_jump_program_end_base - _load_core2_jump_program_start_base; + utl_memcpy((void *)p_dram_partition->core2_entry1_addr, _load_core2_jump_program_start_base, code2JumpCodelen); + CPUflushWriteCache(p_dram_partition->core2_entry1_addr, code2JumpCodelen); + //CPUflushWriteCache((UINT32)p_bininfo, sizeof(BININFO)); + debug_msg_var("core2_jump_program", (int)_load_core2_jump_program_start_base); + debug_msg_var("code2JumpCodelen", (int)code2JumpCodelen); + debug_msg_var("core2_entry2_addr", (int)p_dram_partition->core2_entry2_addr); + + // copy core2 entry code to dram specified by fdt + *(volatile UINT32 *)(NVT_CORE2_START) = p_dram_partition->core2_entry2_addr; + code2EntryCodelen = _load_core2_entry_program_end_base - _load_core2_entry_program_start_base; + utl_memcpy((void *)p_dram_partition->core2_entry2_addr, _load_core2_entry_program_start_base, code2EntryCodelen); + CPUflushWriteCache(p_dram_partition->core2_entry2_addr, code2EntryCodelen); + //CPUflushWriteCache((UINT32)p_bininfo, sizeof(BININFO)); + debug_msg_var("core2_entry_program", (int)_load_core2_entry_program_start_base); + debug_msg_var("code2EntryCodelen", (int)code2EntryCodelen); + *(volatile UINT32 *)0xFE0B9000 = 0; + debug_msg_var("0xFE0B9000=", (int)*(volatile UINT32 *)0xFE0B9000); + + //reset core2 + debug_msg("reset core2\r\n"); + bl_core2_reset(); + + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); + + { + typedef void (*BRANCH_CB)(void); + BRANCH_CB p_func = (BRANCH_CB)uboot_entry; + p_func(); + } + + return 0; +} + + + +_THUMB2 static int bl_entry_boot(unsigned char *p_fdt, UINT32 uboot_entry) +{ + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + + debug_msg_var("fdt", (UINT32)p_fdt); + debug_msg_var("shm", (UINT32)p_bininfo); + + p_bininfo->boot.fdt_addr = (UINT32)p_fdt; + utl_memset(p_bininfo->boot.LdInfo_1, 0, sizeof(p_bininfo->boot.LdInfo_1)); + utl_memcpy(p_bininfo->boot.LdInfo_1, "LD_NVT", 6); + // clear cc_core1_addr, cc_core2_addr +#if USB_WRITELOADER + CPUflushWriteCache((UINT32)p_bininfo, sizeof(BININFO)); + p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_USB; +#else +#if _TODO + if (card_get_type() == EXT_STORAGE_TYPE_ETH) { + p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_ETH; + } else if (g_is_recovery_triggered) { + p_bininfo->comm.Resv[0] = BOOT_REASON_RECOVERY_SYS; + } else { + p_bininfo->comm.Resv[0] = BOOT_REASON_NORMAL; + } +#else +#if (STORAGE_EXT_TYPE == STORAGE_EXT_ETH) + p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_ETH; +#else + p_bininfo->comm.Resv[0] = BOOT_REASON_NORMAL; +#endif +#endif +#endif + p_bininfo->comm.Resv[1] = 0; // COMM_CORE1_START + p_bininfo->comm.Resv[2] = 0; // COMM_CORE2_START + p_bininfo->comm.Resv[3] = 0; // COMM_UITRON_COMP_ADDR + p_bininfo->comm.Resv[4] = 0; // COMM_UITRON_COMP_LEN + + debug_msg_var("jump", uboot_entry); + + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); + + { + typedef void (*BRANCH_CB)(void); + BRANCH_CB p_func = (BRANCH_CB)uboot_entry; + p_func(); + } + + return 0; +} + +_THUMB2 int bl_boot_uboot(unsigned char *p_fdt) +{ + DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + UINT32 No_CPU; + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // update headinfo as real u-boot address + HEADINFO *p_headinfo = (HEADINFO *)(p_dram_partition->uboot_addr + BIN_INFO_OFFSET_UBOOT); + + if (bl_chk_uboot(p_dram_partition->uboot_addr, p_headinfo->BinLength) != 0) { + return -1; + } + // start cpu2 + if (p_dram_partition->uboot_addr != p_headinfo->CodeEntry) { + debug_err_var("drampat-uboot_addr ", (int)p_dram_partition->uboot_addr); + debug_err_var("bin-uboot_addr ", (int)p_headinfo->CodeEntry); + return -1; + } + // for uboot to indicate this boot is all-in-one fw or non-all-in-one boot from uart or usb + // if boot from uart or usb with non-all-in-one fw, the uboot's ModelextAddr will be zero + p_headinfo->ModelextAddr = p_dram_partition->fdt_addr; + + CPUflushWriteCache(p_headinfo->CodeEntry, p_headinfo->BinLength); + + UINT32 isSMP = (p_headinfo->BinCtrl & 0x00000002); + No_CPU = *(UINT32 *)0xF9C00004; + debug_msg_var("core No.", No_CPU); + No_CPU &= 0x3; + + if (!isSMP || !No_CPU) { + debug_msg("Single core\r\n"); + // init cpu timer + //bl_cpu_timer_init(CPU_TIMER_SETTING); + + // init uart2 + //uart_openSystemUART2(); + + bl_entry_boot(p_fdt, p_headinfo->CodeEntry); + // boot u-boot and never return back to loader + } else { + // init cpu timer + bl_cpu_timer_init(global_timer_freq); + + // init uart2 +// uart_openSystemUART2(); + + bl_smp_start(p_fdt, p_headinfo->CodeEntry); + // boot u-boot and never return back to loader + } + + return 0; +} + +_THUMB2 static int bl_update_loader_flag(unsigned char *p_fdt, UINT32 uiLoaderFunc) +{ + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + + utl_memcpy(p_bininfo->boot.LdInfo_1, "LD_NVT", 6); + + p_bininfo->boot.LdCtrl2 = 0; + if (uiLoaderFunc & FUNC_UPDATE_FW) { + p_bininfo->boot.LdCtrl2 |= LDCF_UPDATE_FW; + } + if (uiLoaderFunc & FUNC_UPDATE_LOADER) { + p_bininfo->boot.LdCtrl2 |= LDCF_UPDATE_LD; + } + if (uiLoaderFunc & FUNC_RUN_CARD) { + p_bininfo->boot.LdCtrl2 |= LDCF_BOOT_CARD; + } + if (uiLoaderFunc & FUNC_RUN_FLASH) { + p_bininfo->boot.LdCtrl2 |= LDCF_BOOT_FLASH; + } + //CPUflushWriteCache((UINT32)p_bininfo, sizeof(BININFO)); + debug_msg_var("LdCtrl2", p_bininfo->boot.LdCtrl2); + + return 0; +} + +_THUMB2 int bl_copy_fdt_to_fdt_addr(unsigned char *p_fdt /*IN*/, unsigned char **pp_fdt /*OUT*/) +{ + DRAM_PARTITION *p_dram_partition; + + if (fdt_check_header((const void *)p_fdt) != 0) { + debug_err("invalid dtb\r\n"); + return -1; + } + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("bl_copy_fdt_to_fdt_addr failed.\r\n"); + return -1; + } + + // load fdt to fdt buffer + utl_memcpy((void *)p_dram_partition->fdt_addr, p_fdt, fdt_totalsize(p_fdt)); + *pp_fdt = (unsigned char *)p_dram_partition->fdt_addr; + + //reset shminfo + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + bl_memset(p_bininfo, 0, sizeof(SHMINFO)); + return 0; +} + +_THUMB2 static int bl_load_fdt_from_flash(unsigned char *p_tmp, unsigned int tmp_size, unsigned char **pp_fdt /*OUT*/) +{ + int blk_size = (int)int_strg_obj->flash_getBlockSize(); + // read first block to get dtb size + int er = int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW, blk_size, p_tmp, NAND_RW_FIRMWARE); + if (er < 0) { + debug_err("bl_load_fdt_from_flash"); + return -1; + } + + int total_size = ALIGN_CEIL(fdt_totalsize(p_tmp), blk_size); + if ((int)tmp_size < total_size) { + debug_err_var("tmp_size too small, require:", fdt_totalsize(p_tmp)); + return -1; + } + + total_size -= blk_size; + if (total_size > 0) { + // read remain to get uboot starting addr on dram and offset in flash + er = int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW+1, total_size, p_tmp+blk_size, NAND_RW_FIRMWARE); + if (er < 0) { + debug_err("bl_load_fdt_from_flash"); + return -1; + } + } + + if (bl_chk_fdt((unsigned int)p_tmp, fdt_totalsize(p_tmp)) == 0) { + return bl_copy_fdt_to_fdt_addr(p_tmp, pp_fdt); + } + + return -1; +} + +#if (FDT_SUPPORT) +_THUMB2 static char *bl_get_partition_name(unsigned char *p_fdt) +{ + int i; + const static char *p_name[3] = { + "/nand", + "/nor", + "/mmc@fa600000" + }; + const static char *p_uboot[3] = { + "/nand/partition_uboot", + "/nor/partition_uboot", + "/mmc@fa600000/partition_uboot" + }; + + for (i = 0; i < 3; i++) { + int nodeoffset = fdt_path_offset(p_fdt, p_uboot[i]); + if (nodeoffset > 0) { + return (char *)p_name[i]; + } + } + + debug_err("E:bl_get_partition_name\r\n"); + return NULL; +} +#endif + +#if (FDT_SUPPORT) +_THUMB2 static char *bl_make_fdt_path(char *root, char *name) +{ + //for fdt to combine the full path of node + static char g_tmp_path[64] = {0}; + g_tmp_path[0] = 0; + strcat(g_tmp_path, "/"); + strcat(g_tmp_path, root); + strcat(g_tmp_path, "/"); + strcat(g_tmp_path, name); + return g_tmp_path; +} +#endif + +#if (FDT_SUPPORT) +_THUMB2 static int bl_get_partition(unsigned char *p_fdt /*IN*/, char *p_emb_name /*IN*/, EMB_PARTITION *p_emb/*OUT*/, int *p_id) +{ + int len; + const unsigned long long *nodep; + char *p_name = bl_get_partition_name(p_fdt); + char *p_path = NULL; + + if (p_name == NULL) { + return -1; + } + + p_path = bl_make_fdt_path(p_name, p_emb_name); + + // get partition offset and size + nodep = (const unsigned long long *)bl_get_fdt_property(p_fdt, p_path, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("bl_get_partition-1\r\n"); + return -1; + } + + p_emb->PartitionOffset = be64_to_cpu(nodep[0]); + p_emb->PartitionSize = be64_to_cpu(nodep[1]); + + // get partition label + char *p_label_name = (char *)bl_get_fdt_property(p_fdt, p_path, PROPERTY_LABEL, &len); + if (p_label_name == NULL) { + debug_err("bl_get_partition-2\r\n"); + return -1; + } + + // get id + p_path = bl_make_fdt_path(p_name, PATH_NVTPACK_INDEX); + int nodeoffset = fdt_path_offset(p_fdt, p_path); + + for (nodeoffset = fdt_first_subnode(p_fdt, nodeoffset); + (nodeoffset >= 0); + (nodeoffset = fdt_next_subnode(p_fdt, nodeoffset))) { + const struct fdt_property *prop; + + if (!(prop = fdt_get_property(p_fdt, nodeoffset, PROPERTY_PARTITION_NAME, &len))) { + break; + } + const char *p_id_name = fdt_get_name(p_fdt, nodeoffset, &len); + + if (strcmp(p_label_name, (char *)prop->data) == 0) { + *p_id = atoi(p_id_name + strlen("id")); + return 0; + } + } + + return -1; +} +#endif + +_THUMB2 static void *bl_get_uboot_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) +{ +#if (FDT_SUPPORT) + if (bl_get_partition(p_fdt, PATH_PARTITION_UBOOT, &g_emb_uboot, p_id) != 0) { + return NULL; + } +#else + *p_id = NVTPACK_IDX_UBOOT; +#endif + g_emb_uboot.EmbType = EMBTYPE_UBOOT; + return &g_emb_uboot; +} + +_THUMB2 static int bl_load_fdt_from_all_in_one(unsigned char *p_all_in_one, unsigned int all_in_one_size, unsigned char **pp_fdt /*OUT*/) +{ + NVTPACK_ER er; + NVTPACK_MEM emb_fdt; + NVTPACK_VERIFY_OUTPUT np_verify = {0}; + NVTPACK_GET_PARTITION_INPUT np_get_input; + NVTPACK_MEM mem_in = {(void *)p_all_in_one, (unsigned int)all_in_one_size}; + + if (nvtpack_verify(&mem_in, &np_verify) != NVTPACK_ER_SUCCESS) { + debug_err("packbin verify failed.\r\n"); + return -1; + } + + np_get_input.id = 1; // fdt must always put in partition[1] + np_get_input.mem = mem_in; + er = nvtpack_get_partition(&np_get_input, &emb_fdt); + + if (er == NVTPACK_ER_NOT_FOUND) { + return -2; + } else if (er == NVTPACK_ER_SUCCESS) { + debug_msg_var("fdt addr", (int)emb_fdt.p_data); + debug_msg_var("fdt size", (int)emb_fdt.len); + if (bl_chk_fdt((unsigned int)emb_fdt.p_data, emb_fdt.len) == 0) { + return bl_copy_fdt_to_fdt_addr(emb_fdt.p_data, pp_fdt); + } + } + return -1; +} + +_THUMB2 static void *bl_get_rtos_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) +{ +#if (FDT_SUPPORT) + if (bl_get_partition(p_fdt, PATH_PARTITION_RTOS, &g_emb_rtos, p_id) != 0) { + return NULL; + } +#else + *p_id = NVTPACK_IDX_RTOS; +#endif + g_emb_rtos.EmbType = EMBTYPE_RTOS; + return &g_emb_rtos; +} + +_THUMB2 static void *bl_get_loader_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) +{ +#if (FDT_SUPPORT) + if (bl_get_partition(p_fdt, PATH_PARTITION_LOADER, &g_emb_loader, p_id) != 0) { + return NULL; + } +#else + *p_id = NVTPACK_IDX_LOADER; +#endif + g_emb_loader.EmbType = EMBTYPE_LOADER; + return &g_emb_loader; +} + +// return decompress_fw_size +_THUMB2 static unsigned int bl_decompress_rtos(UINT32 compress_addr, UINT32 compress_size, UINT32 fw_base_addr) +{ + UINT32 decoded_size; + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)compress_addr; + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + UINT32 size_uncomp_le = invertEndian(pBfc->uiSizeUnComp); + + size_comp_le = (compress_size < size_comp_le) ? compress_size : size_comp_le; + decoded_size = LZ_Uncompress((UINT8 *)compress_addr + sizeof(NVTPACK_BFC_HDR), (UINT8 *)fw_base_addr, size_comp_le); + + //because some padding bytes are decoded, we must return real rtos size + return (decoded_size < size_uncomp_le) ? decoded_size : size_uncomp_le; +} + +static _THUMB2 int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) +{ + int er; + int uboot_partition_id; + DRAM_PARTITION *p_dram_partition = NULL; + unsigned int blk_size = int_strg_obj->flash_getBlockSize(); + EMB_PARTITION *p_emb_partition_uboot = bl_get_uboot_partition(p_fdt, &uboot_partition_id); + + if (p_emb_partition_uboot == NULL) { + debug_err("null p_emb_partition_uboot\r\n"); + return -1; + } + + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // load 1st block of u-boot to tmp dram (to detect compressed u-boot) + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, ALIGN_CEIL(BIN_INFO_OFFSET_UBOOT + sizeof(HEADINFO), blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_uboot_from_flash,er=", er); + bl_displayErrMsg(RWErrorMsg); // read uboot failed + } + + + debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); + debug_msg_var("uboot_size", p_dram_partition->uboot_size); +#if 0 + if(0){ +#else + if(is_secure_enable() == 0) { +#endif + HEADINFO *p_headinfo = (HEADINFO *)(p_tmp + BIN_INFO_OFFSET_UBOOT); // describe uncompressed u-boot + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)p_tmp; // describe compressed u-boot + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) + { + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, + ALIGN_CEIL(size_comp_le, blk_size),p_tmp, NAND_RW_FIRMWARE)) < 0) + { + debug_err_var("bl_load_uboot_from_flash_comp,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + LZ_Uncompress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->uboot_addr, size_comp_le); + } + else + { + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, + ALIGN_CEIL(p_headinfo->BinLength, blk_size), + (UINT8 *)p_dram_partition->uboot_addr, NAND_RW_FIRMWARE)) < 0) + { + debug_err_var("bl_load_uboot_from_flash,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + } + } + else + { +#if (SECURE_DECRYPT_UBOOT) + HEADINFO *p_headinfo = (HEADINFO *)(p_tmp); // describe uncompressed u-boot + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, + ALIGN_CEIL(p_headinfo->BinLength, blk_size), + (UINT8 *)p_dram_partition->uboot_addr, NAND_RW_FIRMWARE)) < 0) + { + debug_err_var("bl_load_uboot_from_flash,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + unsigned int plaintext_size=0; + if((er =do_decrypt_aes(p_dram_partition->uboot_addr, p_dram_partition->uboot_addr, &plaintext_size, p_dram_partition->uboot_size))!= 0) + { + debug_err("aes fail\r\n"); + return er; + } +#else + debug_msg("plase enable SECURE_DECRYPT_UBOOT config\r\n"); + return -1; +#endif + } + return 0; +} + +_THUMB2 static int bl_load_rtos_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) +{ + int er; + int rtos_partition_id; + DRAM_PARTITION *p_dram_partition = NULL; + unsigned int blk_size = int_strg_obj->flash_getBlockSize(); + EMB_PARTITION *p_emb_partition_rtos = bl_get_rtos_partition(p_fdt, &rtos_partition_id); + SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + + if (p_emb_partition_rtos == NULL) { + debug_err("null p_emb_partition_rtos\r\n"); + return -1; + } + + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // load 1st block of u-boot to tmp dram (to detect compressed u-boot) + unsigned int bininfo_preload_size = ALIGN_CEIL(BIN_INFO_OFFSET_RTOS + sizeof(HEADINFO), blk_size); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, bininfo_preload_size, p_tmp, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_rtos_from_flash,er=", er); + bl_displayErrMsg(RWErrorMsg); // read rtos failed + } + + // flow to handle compressed u-boot and uncompressed one. + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)p_tmp; // describe compressed u-boot + + // load rtos bin to dram partiton location + //debug_msg_var("rtos_addr", p_dram_partition->rtos_addr); + //debug_msg_var("rtos_size", p_dram_partition->rtos_size); + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + + if((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF ) == 11) + { + /* lzma compressed image*/ + debug_msg("lzma, use uboot\r\n"); + er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load uboot failed\r\n"); + } + + // boot uboot + er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); + if (er != 0) { + bl_displayErrMsg("boot uboot failed\r\n"); + } + } else { + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, ALIGN_CEIL(size_comp_le, blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_rtos_from_flash_comp,er=", er); // read bfc-rtos failed + bl_displayErrMsg(RWErrorMsg); + } + LZ_Uncompress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->rtos_addr, size_comp_le); + } + } else { + BININFO *p_bininfo = (BININFO *)(p_tmp + BIN_INFO_OFFSET_RTOS); // describe uncompressed u-boot + if (p_bininfo->head.Resv1[HEADINFO_RESV_IDX_BOOT_FLAG] & BOOT_FLAG_PARTLOAD_EN) { + // copy bininfo_preload to rtos_addr + bl_memcpy((UINT8 *)p_dram_partition->rtos_addr, p_tmp, bininfo_preload_size); + // preload some to get part-1 size for partial load and partial compressed load + UINT32 preload_size = ALIGN_CEIL(FW_PART1_SIZE_OFFSET, blk_size) - bininfo_preload_size; + + if (preload_size!= 0) { + er = int_strg_obj->flash_readSectors( + (p_emb_partition_rtos->PartitionOffset + bininfo_preload_size) / blk_size, + preload_size, + (UINT8 *)(p_dram_partition->rtos_addr + bininfo_preload_size), NAND_RW_FIRMWARE + ); + + if (er < 0) { + debug_err_var("bl_load_rtos_from_flash_pl1,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + } + UINT32 part1_size = *(UINT32 *)(p_dram_partition->rtos_addr + FW_PART1_SIZE_OFFSET); + debug_msg_var("part1_size",part1_size); + part1_size = ALIGN_CEIL(part1_size, blk_size); + //debug_msg_var("part1_size_aligned",part1_size); + if ((er =int_strg_obj-> flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, part1_size, (UINT8 *)p_dram_partition->rtos_addr, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_rtos_from_flash_pl1,er=", er); + bl_displayErrMsg(RWErrorMsg); + } + // update loaded size + p_shminfo->boot.LdLoadSize = part1_size; + } else { + // full load + debug_msg_var("rtos_size", p_bininfo->head.BinLength); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset /blk_size, ALIGN_CEIL(p_bininfo->head.BinLength, blk_size), (UINT8 *)p_dram_partition->rtos_addr, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_rtos_from_flash,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + // update loaded size + p_shminfo->boot.LdLoadSize = p_bininfo->head.BinLength; + } + } + return 0; +} +_THUMB2 static void bl_update_uItron_headInfo(UINT32 fw_base_addr, DRAM_PARTITION *p_dram_partition) +{ + HEADINFO *pHeadInfo; + + pHeadInfo = (HEADINFO *)(fw_base_addr + BIN_INFO_OFFSET_RTOS); + if (p_dram_partition) { + pHeadInfo->ModelextAddr = p_dram_partition->fdt_addr; + } else { + pHeadInfo->ModelextAddr = 0; + } +} + +_THUMB2 static int bl_update_loader_bininfo(unsigned char *p_fdt, unsigned int ld_flag, unsigned int rtos_loaded_size) +{ + unsigned int ver; + unsigned int *p_param; + BOOTINFO *p_ld; + int id; + + SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + EMB_PARTITION *p_emb_partition = bl_get_loader_partition(p_fdt, &id); + DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + BININFO *p_bininfo = (BININFO *)(p_dram_partition->rtos_addr + BIN_INFO_OFFSET_RTOS); + + if (p_emb_partition == NULL) { + return -1; + } + + p_ld = &p_shminfo->boot; + + utl_memset(p_ld->LdInfo_1, 0, sizeof(p_ld->LdInfo_1)); + utl_memcpy(p_ld->LdInfo_1, "LD_NVT", 6); + + ver = (((LoaderInternalInfo[1] >> 28) & 0xF) << 24) | + (((LoaderInternalInfo[1] >> 24) & 0xF) << 16) | + ((LoaderInternalInfo[1] >> 16) & 0xFF); + + if (g_uiVersion == 0) { + g_uiVersion = ver; + } + + utl_memcpy(&p_ld->LdInfo_1[8], &g_uiVersion, sizeof(g_uiVersion)); + p_ld->LdCtrl2 = ld_flag; + if (!(p_bininfo->head.Resv1[HEADINFO_RESV_IDX_BOOT_FLAG] & BOOT_FLAG_PARTLOAD_EN)) { + // LdLoadSize updated on uboot or bl_load_rtos_from_flash(), if BOOT_FLAG_PARTLOAD_EN + p_ld->LdLoadSize = rtos_loaded_size; + } + p_ld->LdLoadTime = timer_getSysTick();//timer_getLdrElapse(); + p_ld->LdResvSize = p_emb_partition->PartitionSize; + p_ld->FWResvSize = 0; //unused + + p_param = (unsigned int *)(&_load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[0]); + p_ld->LdPackage = p_param[3] & 0xFFFF; + p_ld->LdStorage = (p_param[3] >> 16) & 0xFF; + return 0; +} + +_THUMB2 static int bl_load_uboot_from_all_in_one(unsigned char *p_fdt, unsigned char *p_all_in_one, unsigned int all_in_one_size) +{ + NVTPACK_ER er; + NVTPACK_MEM mem_uboot; + int uboot_partition_id; + NVTPACK_GET_PARTITION_INPUT input; + DRAM_PARTITION *p_dram_partition = NULL; + EMB_PARTITION *p_emb_partition_uboot = bl_get_uboot_partition(p_fdt, &uboot_partition_id); + + if (p_emb_partition_uboot == NULL) { + debug_err("null p_emb_partition_uboot\r\n"); + return -1; + } + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // get partition data address and size + input.id = (unsigned int)uboot_partition_id; + input.mem.p_data = (void *)p_all_in_one; + input.mem.len = all_in_one_size; + er = nvtpack_get_partition(&input, &mem_uboot); + if (er == NVTPACK_ER_NOT_FOUND) { + return -2; + } + + if (er != NVTPACK_ER_SUCCESS) { + return -1; + } + + debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); + debug_msg_var("uboot_size", p_dram_partition->uboot_size); +# if 0 + if(0) { +#else + if(is_secure_enable() == 0) { +#endif + if (bl_chk_uboot((unsigned int)mem_uboot.p_data, mem_uboot.len) != 0) { + return -1; + } + + // flow to handle compressed u-boot and uncompressed one. + HEADINFO *p_headinfo = (HEADINFO *)(mem_uboot.p_data + BIN_INFO_OFFSET_UBOOT); // describe uncompressed u-boot + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)mem_uboot.p_data; // describe compressed u-boot + + // load uboot bin to dram partiton location + //debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); + //debug_msg_var("uboot_size", p_dram_partition->uboot_size); + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + LZ_Uncompress(mem_uboot.p_data + sizeof(NVTPACK_BFC_HDR), (unsigned char *) p_dram_partition->uboot_addr, size_comp_le); + } else { + utl_memcpy((void *)p_dram_partition->uboot_addr, mem_uboot.p_data, p_headinfo->BinLength); + } + } else { +#if (SECURE_DECRYPT_UBOOT) + utl_memcpy((void *)p_dram_partition->uboot_addr, mem_uboot.p_data, mem_uboot.len); + unsigned int plaintext_size =0; + + if((er = do_decrypt_aes(p_dram_partition->uboot_addr, p_dram_partition->uboot_addr, &plaintext_size, p_dram_partition->uboot_size))!= 0 ) + { + debug_err("aes fail\r\n"); + return er; + } + if (bl_chk_uboot((unsigned int)p_dram_partition->uboot_addr, plaintext_size) != 0) { + return -1; + } +#else + debug_msg("please enable SECURE_DECRYPT_UBOOT\r\n"); + return -1; +#endif + } + + return 0; +} + +_THUMB2 static unsigned int bl_load_rtos_from_all_in_one(unsigned char *p_all_in_one, unsigned int all_in_one_size, unsigned char **pp_fdt /*OUT*/) +{ + UINT32 uItron_fw_addr= 0; + NVTPACK_ER er; + NVTPACK_MEM emb_fdt; + NVTPACK_VERIFY_OUTPUT np_verify = {0}; + NVTPACK_GET_PARTITION_INPUT np_get_input; + NVTPACK_MEM mem_in = {(void *)p_all_in_one, (unsigned int)all_in_one_size}; + HEADINFO *p_headinfo; + + if (nvtpack_verify(&mem_in, &np_verify) != NVTPACK_ER_SUCCESS) { + debug_err("packbin verify failed.\r\n"); + return 0; + } + + np_get_input.id = 5; // rtos must always put in partition[5] for now + np_get_input.mem = mem_in; + er = nvtpack_get_partition(&np_get_input, &emb_fdt);//&np_get_input, &emb_fdt); + + if (er == NVTPACK_ER_NOT_FOUND) { + return 0; + } else if (er == NVTPACK_ER_SUCCESS) { + debug_msg("get rtos partition ok\r\n"); + + p_headinfo = (HEADINFO *)(emb_fdt.p_data + BIN_INFO_OFFSET_RTOS); + uItron_fw_addr = p_headinfo->CodeEntry; + + utl_memcpy((void *)uItron_fw_addr, emb_fdt.p_data, emb_fdt.len); + //CPUflushWriteCache(uItron_fw_addr, emb_fdt.len); + } + debug_msg_var("uItron_fw_addr=", uItron_fw_addr); + return uItron_fw_addr; +} + +#if !(USB_WRITELOADER || UART_UPDATE) +_THUMB2 static int bl_load_rtos_from_non_nvtpack(unsigned int src_addr, unsigned int src_size, unsigned int *p_dst_addr, unsigned int *p_dst_size) +{ + NVTPACK_BFC_HDR *pBFC = (NVTPACK_BFC_HDR *)src_addr; + HEADINFO *p_headinfo = (HEADINFO *)(src_addr + BIN_INFO_OFFSET_RTOS); + if (pBFC->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + // to avoid rtos_addr is overlapped by src_addr, we need extract some bits to get real rtos addr. + // compressed firmware + debug_msg("compressed t.bin\r\n"); + // decode some bytes to get uncompressed address + bl_decompress_rtos(src_addr, SIZE_PRELOAD, src_addr + SIZE_PRELOAD); + p_headinfo = (HEADINFO *)(src_addr + SIZE_PRELOAD + BIN_INFO_OFFSET_RTOS); + // check if valid after decode + if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || + (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { + UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; + UINT32 uncompress_size = p_headinfo->BinLength; + UINT32 compress_size = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); + //adjust src_addr that lay compressed f.w followed by uncomppressed f.w + src_addr = uncompress_addr + uncompress_size; + src_addr = ALIGN_CEIL(src_addr, 4); + src_size = fat_read_rootfile((UINT8 *)src_addr, compress_size); + } else { + return -1; + } + } else if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || + (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { + // uncompressed firmware + UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; + UINT32 uncompress_size = p_headinfo->BinLength; + + src_size = fat_read_rootfile((UINT8 *)src_addr, uncompress_size); + src_addr = uncompress_addr; + src_size = uncompress_size; + debug_msg("uncompressed t.bin\r\n"); +#if (DRAM_RANGE_SCAN_EN == ENABLE) + } else if (utl_is_sram_fw(src_addr) == TRUE) { + debug_msg("detected as SRAM fw\r\n"); + src_size = fat_read_rootfile((UINT8 *)src_addr, FAT_READ_TOTAL_FILE_LENGTH); +#endif + } else { + return -1; + } + + *p_dst_addr = src_addr; + *p_dst_size = src_size; + return 0; +} +#endif + +#if !UPDATE_EMU_CODE && !REMOVED_FLASH +_THUMB2 static unsigned int bl_process_flash_boot(unsigned char *p_tmp, DRAM_PARTITION **pOut_dram_partition, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size) +{ + int er; + unsigned char *p_fdt = NULL; + DRAM_PARTITION *p_dram_partition = NULL; + + // open flash + if (bl_flash_open() != 0) { + bl_displayErrMsg("flash open failed\r\n"); + } + + // load fdt + er = bl_load_fdt_from_flash(p_tmp, SDRAM_Start_FW, &p_fdt); // dtb size less than 32MB to be safer. + if (er != 0) { + bl_displayErrMsg("load fdt failed\r\n"); + } + + // update loader flag + bl_update_loader_flag(p_fdt, uiLoaderFunc); + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition->rtos_addr == 0) { + // load uboot + er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load uboot failed\r\n"); + } + + // boot uboot + er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); + if (er != 0) { + bl_displayErrMsg("boot uboot failed\r\n"); + } + } else { + // load rtos + er = bl_load_rtos_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load rtos failed\r\n"); + } + } + + // update compressed rtos information + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((unsigned char *)p_dram_partition->fdt_addr, MODELEXT_TYPE_BIN_INFO); + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + *p_comp_addr = p_bininfo->comm.Resv[3]; // COMM_UITRON_COMP_ADDR + *p_comp_size = p_bininfo->comm.Resv[4]; // COMM_UITRON_COMP_LEN + + *pOut_dram_partition = p_dram_partition; + return p_dram_partition->rtos_addr; +} +#endif + +static _THUMB2 int bl_process_update_loader(unsigned int loader_addr, unsigned int loader_size) +{ + unsigned int reload_addr; + + // Check boot loader read from SD card + if(is_data_area_encrypted() == 0){ + bl_checkLoader(loader_addr, loader_size); + } + // open flash + if (bl_flash_open() != 0) { + bl_displayErrMsg("flash open failed\r\n"); + } + + // Program loader + if (int_strg_obj->flash_writeSectors(StartNandBlkUpdateLoader, loader_size, (UINT8 *)loader_addr, NAND_RW_LOADER) < 0) { + bl_displayErrMsg(RWErrorMsg); + } + // Read back + reload_addr = loader_addr + loader_size; + if (int_strg_obj->flash_readSectors(StartNandBlkUpdateLoader, loader_size, (UINT8 *)reload_addr, NAND_RW_LOADER) < 0) { + bl_displayErrMsg("rd fail\r\n"); + } + // Verify + if (memcmp((void *)loader_addr, (void *)reload_addr, loader_size) != 0) { + bl_displayErrMsg("verify fail\r\n"); + } + return 0; +} + + +// return uItron_fw_addr +unsigned _THUMB2 int bl_process_all_in_one(UINT32 uiFwBuf, UINT32 uiFwBufSize, DRAM_PARTITION **pOut_dram_partition, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size) +{ + int er; + unsigned char *p_fdt = NULL; + DRAM_PARTITION *p_dram_partition = NULL; + //p_tmp for the case of all-in-one without fdt or uboot + unsigned char *p_tmp = (unsigned char *)(uiFwBuf + ALIGN_CEIL(uiFwBufSize, 4)); + + // load fdt + er = bl_load_fdt_from_all_in_one((unsigned char *)uiFwBuf, uiFwBufSize, &p_fdt); + if (er == -2) { // try to load from nand + debug_msg("fdt from flash.\r\n"); + // open flash + if (bl_flash_open() != 0) { // dont move flash open outside section, consider that T without flash device. + bl_displayErrMsg("flash open failed\r\n"); + } + + //p_tmp for the case of all-in-one without fdt or uboot + unsigned char *p_tmp = (unsigned char *)(uiFwBuf + ALIGN_CEIL(uiFwBufSize, 4)); + er = bl_load_fdt_from_flash(p_tmp, 0x2000000, &p_fdt); // dtb size less than 32MB to be safer. + if (er != 0) { + bl_displayErrMsg("load fdt failed\r\n"); + } + } + + // update loader flag + bl_update_loader_flag(p_fdt, uiLoaderFunc); + if (uiLoaderFunc & FUNC_UPDATE_FW) { + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_BIN_INFO); + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + p_bininfo->comm.Resv[5] = uiFwBuf; // COMM_FW_UPD_ADDR + p_bininfo->comm.Resv[6] = uiFwBufSize; // COMM_FW_UPD_LEN + debug_msg_var("upd_src_addr=", uiFwBuf); + debug_msg_var("upd_src_size=", uiFwBufSize); + } + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + //check loader addr is matched with loader self. + extern char _loader_exec_compres_start[]; + if (p_dram_partition->loader_addr != (UINT32)_loader_exec_compres_start) { + debug_msg_var("p_dram_partition->loader_addr", p_dram_partition->loader_addr); + debug_msg_var("_loader_exec_compres_start", (UINT32)_loader_exec_compres_start); + bl_displayErrMsg("loader addr is not match."); + } + //when rtos boot from flash, the boot from loader directly, + //but when rtos need to burn image, the uboot is still required. + //so, any one need to burn image, uboot is always needed to boot. + if ((uiLoaderFunc & FUNC_UPDATE_FW) || p_dram_partition->rtos_addr == 0) { + // always use uboot to handle all-in-one bin + if (p_dram_partition->nuttx_size == 0) { + // load uboot + er = bl_load_uboot_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); + if (er == -2) { // try to load from nand + debug_msg("uboot from flash.\r\n"); + // open flash + if (bl_flash_open() != 0) { // dont move flash open outside section, consider that T without flash device. + bl_displayErrMsg("flash open failed\r\n"); + } + er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load uboot failed\r\n"); + } + } + er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); + if (er != 0) { + bl_displayErrMsg("boot uboot failed\r\n"); + } + } else { +#if _TODO + // load nuttx + er = bl_load_nuttx_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); + if (er != 0) { + bl_displayErrMsg("load nuttx failed\r\n"); + } + er = bl_boot_nuttx((unsigned char *)p_dram_partition->fdt_addr); + if (er != 0) { + bl_displayErrMsg("boot nuttx failed\r\n"); + } +#else + bl_displayErrMsg("not support nuttx\r\n"); +#endif + } + return er; + } else { + // update rtos information + // the following is for uncompressed-rtos only, others needing uboot + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_dram_partition->fdt_addr, MODELEXT_TYPE_BIN_INFO); + + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + *p_comp_addr = p_bininfo->comm.Resv[3]; // COMM_UITRON_COMP_ADDR + *p_comp_size = p_bininfo->comm.Resv[4]; // COMM_UITRON_COMP_LEN + + *pOut_dram_partition = p_dram_partition; + return bl_load_rtos_from_all_in_one((unsigned char *)uiFwBuf, uiFwBufSize, &p_fdt); + } +} + + +/** + main flow code + + If there is Calibration Firmware code store in NAND, running flow as follow + O's work flow + + @return fw base addr +*/ + + +_THUMB2 UINT32 bl_mainFlow(void) +{ + UINT32 uiUpdateFileLen = 0; + UINT32 uiLoaderFunc = 0; + UINT32 uiLoaderSize = 64 * 1024; // pre-assume 32KB, actual size is parsed from loader + UINT32 uiFwBaseAddr = SDRAM_Start_FW; // FW base address + DRAM_PARTITION *p_dram_partition = NULL; + + // BaseOfStack is initialized at doRemapLZ.s + UINT32 uiheapBufferAddr = (UINT32)_loader_heap_base; + UINT32 uiTmpBufferAddr = uiheapBufferAddr + FAT_HEAP_BUFFER_SIZE; + UINT32 uiUpdateBootloaderBufAddr = uiTmpBufferAddr + 0x4000; + UINT32 uiUpdateMainBinBufAddr = SDRAM_Start_FW; + +#if !(USB_WRITELOADER || UART_UPDATE) + unsigned int adjusted_addr = 0; + unsigned int adjusted_size = 0; +#endif + + serial_init(); + debug_msg((char *)LOADER_START_STR); + UTL_setDrvTmpBufferAddress(uiTmpBufferAddr); + + prj_main(); + +#if !(USB_WRITELOADER) + set_usb_suspend(); +#endif + + if(utl_get_bootsrc() == BOOT_SOURCE_UART) + { +#if UART_UPDATE + debug_msg("Boot from UART ...\r\n"); + bl_uart();//never returned. +#else + bl_displayErrMsg("UART_UPDATE must enable on loader\r\n"); +#endif + } + + if(USB_WRITELOADER || utl_get_bootsrc() == BOOT_SOURCE_USB) + { +#if USB_WRITELOADER + debug_msg("Boot from USB ...\r\n"); + bl_usb(); //never returned. +#else + bl_displayErrMsg("USB_WRITELOADER must enable on loader\r\n"); +#endif + } + + + +#if !(USB_WRITELOADER || UART_UPDATE) + if (card_open() == TRUE && fat_initFAT(uiheapBufferAddr, FAT_HEAP_BUFFER_SIZE) == TRUE) { + if (fat_open_rootfile(UPDATE_LOADER_NAME) == TRUE) { + // Read byte count specified in file directory entry + fat_read_rootfile((UINT8 *)uiUpdateBootloaderBufAddr, FAT_READ_TOTAL_FILE_LENGTH); + fat_close_rootfile(); + debug_msg("\r\n"); // for line end RRRRRRR.... + uiLoaderFunc |= FUNC_UPDATE_LOADER; + uiLoaderSize = *((UINT32 *)(uiUpdateBootloaderBufAddr + 0x24)); + } + + if (fat_open_rootfile(UPDATE_FW_NAME) == TRUE) { + NVTPACK_MEM mem_in ; + fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, SIZE_PRELOAD); + mem_in.p_data = (void *)uiUpdateMainBinBufAddr; + mem_in.len = uiUpdateFileLen; + // all in one bin + if (bl_chk_valid_all_in_one(&mem_in) == 0) { + // Read all + uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); + uiLoaderFunc |= FUNC_UPDATE_FW; + } else { + // only rtos + debug_msg("not all-in-one, force behavior as T bin.\r\n"); + adjusted_addr = 0; + adjusted_size = 0; + if (bl_load_rtos_from_non_nvtpack(uiUpdateMainBinBufAddr, uiUpdateFileLen, &adjusted_addr, &adjusted_size) == 0) { + uiFwBaseAddr = adjusted_addr; //fix compressed fit bl_checkDramScanFW() after copy its to temp area, see commit log + uiUpdateFileLen = adjusted_size; + } else { + bl_displayErrMsg("invalid firmware"); + } +#if UPDATE_EMU_CODE + uiLoaderFunc |= FUNC_UPDATE_FW; +#else + uiLoaderFunc |= FUNC_RUN_CARD; +#endif + + } + fat_close_rootfile(); + debug_msg("\r\n"); // for line end RRRRRRR.... + } + // Run FW has lower priority + else if (fat_open_rootfile(RUN_FW_NAME) == TRUE) { + NVTPACK_MEM mem_in ; + uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, SIZE_PRELOAD); + mem_in.p_data = (void *)uiUpdateMainBinBufAddr; + mem_in.len = uiUpdateFileLen; + if (bl_chk_valid_all_in_one(&mem_in) == 0) { + // Read all + uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); + } else { + // Read rtos + unsigned int adjusted_addr = 0; + unsigned int adjusted_size = 0; + if (bl_load_rtos_from_non_nvtpack(uiUpdateMainBinBufAddr, uiUpdateFileLen, &adjusted_addr, &adjusted_size) != 0) { + bl_displayErrMsg("invalid firmware"); + } else { + uiFwBaseAddr = adjusted_addr; //fix compressed fit bl_checkDramScanFW() after copy its to temp area, see commit log + uiUpdateFileLen = adjusted_size; + } + uiLoaderFunc |= FUNC_RUN_CARD; + } + fat_close_rootfile(); + debug_msg("\r\n"); // for line end RRRRRRR.... + uiLoaderFunc |= FUNC_RUN_CARD; + } + card_close(); + } else { + debug_msg("card open fail\r\n"); +// while (1); + } +#endif + + if (uiLoaderFunc & FUNC_UPDATE_LOADER) { + bl_process_update_loader(uiUpdateBootloaderBufAddr, uiLoaderSize); + } + // Run FW + UINT32 comp_addr = 0; + UINT32 comp_size = 0; + if (uiLoaderFunc & (FUNC_RUN_CARD | FUNC_UPDATE_FW)) { + debug_msg("RC\r\n"); + NVTPACK_MEM mem_in ; + int chk_valid_all_in_one; +#if (DRAM_RANGE_SCAN_EN == ENABLE) + // First word is code entry point address, once if entry address is 0xC000XXXX + // represent code is running on sram. + debug_msg("Check SRAM fw\r\n"); + if (bl_checkDramScanFW(uiUpdateMainBinBufAddr) == TRUE) { + + debug_msg("This fw is on SRAM\r\n"); + // Enable sram usage + SETREG32(0xF0900128, 0x00000002); + SETREG32(0xF0800128, 0x00000006); + SETREG32(0xF0020060, 0x00030002); + + debug_msg(Dec2HexStr(*((UINT32 *)SRAM_Start_FW))); + debug_msg("before jump\r\n"); +// while (b_debug_go == FALSE); + load_dram_scan(uiUpdateMainBinBufAddr, uiUpdateFileLen); + return *((UINT32 *)SRAM_Start_FW); + } +#endif + mem_in.p_data = (void *)uiUpdateMainBinBufAddr; + mem_in.len = uiUpdateFileLen; + chk_valid_all_in_one = bl_chk_valid_all_in_one(&mem_in); + if (chk_valid_all_in_one == 0) { + // all-in-one flow + // File len got from fat_read_rootfile() may exceed actual file size. + // In such condition, we should use info in NVTPACK_FW_HDR2 + if (((NVTPACK_FW_HDR2 *)uiUpdateMainBinBufAddr)->TotalSize < uiUpdateFileLen) { + uiUpdateFileLen = ((NVTPACK_FW_HDR2 *)uiUpdateMainBinBufAddr)->TotalSize; + mem_in.len = uiUpdateFileLen; + } +//#if (REMOVED_FLASH == ENABLE) +// bl_displayErrMsg("cannot process all-in-one fw"); +//#else + uiFwBaseAddr = bl_process_all_in_one(uiUpdateMainBinBufAddr, uiUpdateFileLen, &p_dram_partition, uiLoaderFunc, &comp_addr, &comp_size); +//#endif + } else { +//#if UPDATE_EMU_CODE +// bl_process_update_emu_firmware(uiUpdateMainBinBufAddr, uiUpdateFileLen); +//#else + bl_displayErrMsg("cannot process non-all-in-one fw"); +//#endif + } +// uiFwBaseAddr = bl_process_rtos_only(uiUpdateMainBinBufAddr, mem_in.len, uiLoaderFunc, &comp_addr, &comp_size); + + + // here uiFwBaseAddr is ready to use. + if (comp_addr == 0) { + HEADINFO *p_headinfo = (HEADINFO *)(uiFwBaseAddr + BIN_INFO_OFFSET_RTOS); + debug_msg("Nrml\r\n"); + if (chk_valid_all_in_one == 0) { + uiUpdateFileLen = p_headinfo->BinLength; + uiUpdateMainBinBufAddr = uiFwBaseAddr; + } else { + // uiUpdateFileLen is already set when file is loaded + } + } else { + debug_msg("Fcompress\r\n"); + //for speed up, u-boot only copy compressed rtos and loader needs to decode it + uiUpdateFileLen = bl_decompress_rtos(comp_addr, comp_size, uiFwBaseAddr); + uiUpdateMainBinBufAddr = uiFwBaseAddr; + } + debug_msg_var("uiUpdateFileLen", uiUpdateFileLen); + //boot from flash or update fw is no need to check sanity because of ecc, turn on it just for debug + if (uiLoaderFunc & FUNC_RUN_CARD) { + bl_checkFW(uiUpdateMainBinBufAddr, uiUpdateFileLen); + } + if (chk_valid_all_in_one == 0) { + bl_update_uItron_headInfo(uiFwBaseAddr, p_dram_partition); + } else { + debug_msg_var("fw load addr", uiUpdateMainBinBufAddr); + bl_update_uItron_headInfo(uiUpdateMainBinBufAddr, p_dram_partition); + } + } else { //boot from flash +#if (REMOVED_FLASH == DISABLE) +#if UPDATE_EMU_CODE +// UINT32 uiNandBlkSize; + // open flash +/* + if (bl_flash_open() != 0) { + bl_displayErrMsg("flash open failed\r\n"); + } + debug_msg("RFlash\r\n"); + if (flash_readSectors(g_uiStartBlkUpdateFW, g_uiNandBlkSize, (UINT8 *)SDRAM_Start_FW, NAND_RW_FIRMWARE) < 0) { + bl_displayErrMsg(RWErrorMsg); + } + + uiUpdateFileLen = *(volatile UINT32 *)(SDRAM_Start_FW + 0x168); + + if (flash_readSectors(g_uiStartBlkUpdateFW + 1, uiUpdateFileLen - g_uiNandBlkSize, (UINT8 *)(SDRAM_Start_FW + g_uiNandBlkSize), NAND_RW_FIRMWARE) < 0) { + bl_displayErrMsg(RWErrorMsg); + } + + uiFwBaseAddr = bl_process_rtos_only(SDRAM_Start_FW, uiUpdateFileLen, uiLoaderFunc, &comp_addr, &comp_size); + bl_checkFW(SDRAM_Start_FW, uiUpdateFileLen); + uiUpdateMainBinBufAddr = SDRAM_Start_FW; + if (comp_addr == 0) { + debug_msg("Nrml\r\n"); + } else { + debug_msg("Fcompress not support\r\n"); + } +*/ +#else + uiFwBaseAddr = bl_process_flash_boot((UINT8 *)SDRAM_Start_FW, &p_dram_partition, uiLoaderFunc, &comp_addr, &comp_size); + if (comp_addr == 0) { + uiUpdateMainBinBufAddr = uiFwBaseAddr; + } else { + //for speed up, u-boot only copy compressed rtos and loader needs to decode it + uiUpdateFileLen = bl_decompress_rtos(comp_addr, comp_size, uiFwBaseAddr); + uiUpdateMainBinBufAddr = uiFwBaseAddr; + } + // no need to bl_checkFW, because check sanity in flash_read + bl_update_uItron_headInfo(uiFwBaseAddr, p_dram_partition); +#endif +#endif + } + + if (p_dram_partition) { + bl_update_loader_bininfo((unsigned char *)p_dram_partition->fdt_addr, uiLoaderFunc, uiUpdateFileLen); + } + +//#if UPDATE_EMU_CODE +// debug_msg_var("emu fw len", uiUpdateFileLen); +//#endif + g_rtos_load_addr = uiUpdateMainBinBufAddr; + g_rtos_target_addr = uiFwBaseAddr; + g_rtos_size = uiUpdateFileLen; + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); + debug_msg_var("rtos start", uiFwBaseAddr); + return uiFwBaseAddr; + + + + + +/* + uiUpdateFileLen = mmc_loader(uiFwBaseAddr, RUN_FW_NAME, UPDATE_FW_NAME); + + if(uiUpdateFileLen > 0) { + uiLoaderFunc = FUNC_RUN_CARD; +#if CHECKSUM_EN + NVTPACK_MEM mem_in; + mem_in.p_data = (void *)uiFwBaseAddr; + mem_in.len = uiUpdateFileLen; + + debug_msg("checksum "); + if (nvtpack_calc_nvt_sum(&mem_in)!= 0) { + bl_displayErrMsg(FWErrorMsg); + } + debug_msg("done\r\n"); +#endif + } else { + + } +*/ + //return bl_process_all_in_one(uiFwBaseAddr, uiUpdateFileLen, &p_dram_partition, uiLoaderFunc, &comp_addr, &comp_size); +} + +_THUMB2 void loader_setUpdateFwName(char *fileName) +{ + strncpy((char *)UPDATE_FW_NAME, fileName, sizeof(UPDATE_FW_NAME)); +} + +_THUMB2 void loader_setUpdateLdrName(char *fileName) +{ + strncpy((char *)UPDATE_LOADER_NAME, fileName, sizeof(UPDATE_LOADER_NAME)); +} + +_THUMB2 void loader_setRunFwName(char *fileName) +{ + strncpy((char *)RUN_FW_NAME, fileName, sizeof(RUN_FW_NAME)); +} + +_THUMB2 void loader_setRecoveryFwName(char *fileName) +{ + strncpy((char *)RECOVERY_FW_NAME, fileName, sizeof(RECOVERY_FW_NAME)); +} + +_THUMB2 void loader_setRecoveryPartitionID(UINT32 partition_id) +{ + g_uiPartitionID = partition_id; +} + +_THUMB2 void loader_setVersion(UINT32 version) +{ + g_uiVersion = version; +} +_THUMB2 void loader_setStorageIntType(STORAGEINT type, PSTORAGE_OBJ strg_obj) +{ + gStorageIntType = type; + int_strg_obj = strg_obj; +} diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h new file mode 100644 index 000000000000..f6e05b459d32 --- /dev/null +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h @@ -0,0 +1,282 @@ +/** + @file bl_func.h + @brief Header file for main function + + Copyright Novatek Microelectronics Corp. 2014. All rights reserved. +*/ +#ifndef _BL_MAIN_H +#define _BL_MAIN_H + +#include "main.h" +#include "nvtpack.h" +#include "dram_partition_info.h" +#include "loader.h" +//------------------------------------------------------------------------------ +// Compiler option +// +// These compiler option are define in MakeConfig.txt +//!!!!!!!!!!!!!!!!!!! DO NOT MODIFY COMPILER OPTION HERE !!!!!!!!!!!!!!!!!!!! +//------------------------------------------------------------------------------ +#ifndef SECURE_DECRYPT_UBOOT +#define SECURE_DECRYPT_UBOOT 0 //Decrypt uboot sample code +#endif //Option move to ModelConfig_EMU_EVB_XXX.txt + +#if (SECURE_DECRYPT_UBOOT) +#define SECURE_OFFSET 1024 //Decrypt uboot from which offset +#endif + +// Define LED_FUNCTION == ENABLE will enable LED on/off in boot loader +#define LED_FUNCTION ENABLE//DISABLE + +// FW checking method, support checksum & CRC now +//#define FW_CHECK_NOCHECK 0 +//#define FW_CHECK_CHECKSUM 1 +//#define FW_CHECK_CRC 2 +#ifndef FW_CHECK_METHOD +#define FW_CHECK_METHOD FW_CHECK_CHECKSUM +#endif + +///#define FW_CHECK_INSTRUCTION0 0xE59FF018 + +// Optional pseudo string for checksum & CRC checking +#define FW_CHECK_PSEUDO_STR_EN DISABLE +#if (FW_CHECK_PSEUDO_STR_EN == ENABLE) + // Must sync to MakeConfig.txt + #define FW_CHECK_PSEUDO_STR "DSC_FW" +#endif + +// Determine if need to support compressable main code +#ifndef _MAINCODE_COMPRESS_ +#define _MAINCODE_COMPRESS_ 0 +#endif + +#ifndef STORAGEINT_SPI +#define STORAGEINT_SPI 0 +#endif + +#define FW_EXCEED_16MB_TEST DISABLE + +//------------------------------------------------------------------------------ +// Global definition +//------------------------------------------------------------------------------ +#define LOADER_CODE_SIZE 0x8000 // Reserve 32 KB + +#define RESERVED_DATA_SIZE 0x4000 // Fixed to 16 KB + +#define SDRAM_Start_FW 0x02000000 // DRAM uITRON starting address + +#define SRAM_Start_FW 0xF07c0000 // SRAM FW starting address + +#define SRAM_TAG 0xF0000000 // SRAM tag + +#define CORE2_JUMP_ADDR 0x00000000 // Core2 entry code should put on 0, because when core2 reset is released, core2 will jump to 0 and run + +#define CPU_TIMER_SETTING 0x00B71B00 //0x016E3600 + +#define _BOARD_IPC_ADDR_ 0x00002000 // must be the same with BOARD_IPC_ADDR on ModelConfig. + + + +#define UPDATE_CFG_BUFADDR 0x06000000 +#define UPDATE_CFG_TAGCODE 0xABCD0043 +#define UPDATE_CFG_LOADER_OFS 0x00 +#define UPDATE_CFG_FW_OFS 0x10 + +#define UPDATE_CFG_ITEM_LD 0xABCD0001 +#define UPDATE_CFG_ITEM_FW 0xABCD0002 + +#define UPDATE_CFG_TAG 0 +#define UPDATE_CFG_ITEM 1 +#define UPDATE_CFG_ADDR 2 +#define UPDATE_CFG_LEN 3 + +#define USB_RESULT_LOADER_INVALID_FW_INVALID (0) +#define USB_RESULT_LOADER_INVALID_FW_OK (1) +#define USB_RESULT_LOADER_INVALIE_FW_FAIL (2) +#define USB_RESULT_LOADER_OK_FW_INVALID (3) +#define USB_RESULT_LOADER_FAIL_FW_INVALID (4) +#define USB_RESULT_LOADER_OK_FW_OK (5) +#define USB_RESULT_LOADER_FAIL_FW_OK (6) +#define USB_RESULT_LOADER_OK_FW_FAIL (7) +#define USB_RESULT_LOADER_FAIL_FW_FAIL (8) +#define USB_RESULT_OTHER (9) + +// Loader checking +#define LOADER_TAG_OFFSET 0x30 +#define LOADER_TAG_VALUE 0xAA55 + +//#NT#2011/06/30#Steven Wang -begin +//#NT#Checksum offset +///#define CHECKSUM_OFFSET 0x1C +#define CHECKSUM_TAG 0xAA55 +//#NT#2011/06/30#Steven Wang -end + +// Config table tag value (for USB flow) +#define CFG_TABLE_TAG (0x4B54564E) // 'N' 'V' 'T' 'K' + +#define COMPRESS_TAG_VALUE (0x314C4342) // use to distinguish full compressed main code + +#define SPI_FLASH_IDENTIFY (0x46495053) //'S''P''I''F' + +#define BOOTVER_SET(OutMaj,OutMin,InnMaj,InnMin) (((OutMaj)<<24)|((OutMin)<<16)|((InnMaj)<<8)|((InnMin))) + +#define BOOTVER_GETOuterMajor(Ver) (((Ver)&0xFF000000)>>24) +#define BOOTVER_GETOuterMinor(Ver) (((Ver)&0x00FF0000)>>16) +#define BOOTVER_GETInnerMajor(Ver) (((Ver)&0x0000FF00)>>8) +#define BOOTVER_GETInnerMinor(Ver) (((Ver)&0x000000FF)) + +// Define loader version (_LDR_VER_) in MakeConfig.txt +#define BOOTLOADER_OUTERMAJOR (((_LDR_VER_)&0xFF000000)>>24) +#define BOOTLOADER_OUTERMINOR (((_LDR_VER_)&0x00FF0000)>>16) +#define BOOTLOADER_INNERMAJOR (((_LDR_VER_)&0x0000FF00)>>8) +#define BOOTLOADER_INNERMINOR (((_LDR_VER_)&0x000000FF)) + +// Binary tag value +#define FW_BINARY_TAG 0xAA55544E // 'N' 'T' 0x55 0xAA + +// CAL FW size exit tag +#define CAL_SIZE_TAG 0x5A534C43 // CLSZ +// FW size exit tag +#define FW_SIZE_TAG 0x5A535746 // FWSZ + +// Reserved area FW size offset +#define RESERVED_AREA_FW_SIZE_OFFSET 0x00 +// Reserved area CAL size offset +#define RESERVED_AREA_CAL_SIZE_OFFSET 0x04 +// Reserved area FW size tag offset +#define RESERVED_AREA_FW_TAG_OFFSET 0x08 +// Reserved area CAL size tag offset +#define RESERVED_AREA_CAL_TAG_OFFSET 0x0C + +// Operation of boot loader +#define FUNC_UPDATE_FW 0x01 // Read FW code from card and update to NAND and run +#define FUNC_UPDATE_LOADER 0x02 // Read boot loader code from card and update to NAND +#define FUNC_RUN_CARD 0x04 // Read FW code from card and run +#define FUNC_RUN_FLASH 0x08 // Read FW code from internal flash and run +#define FUNC_UPDATE_CAL 0X10 // Update CAL data +#define FUNC_RUN_WRBIN 0X20 // RUN wrkey data +#define FUNC_RUN_UBOOT 0X40 // Read Uboot from card and run +#define FUNC_UPDATE_FW_DONE 0x0100 // update f/w to NAND/SPI done + +// API to turn on / off LED +#if (LED_FUNCTION == ENABLE) +// Red LED (DGPIO 6) +// Green LED (DGPIO 9) +#define TurnOff_RedLED() OUTREG32(CPE_GPIO_BASE + 0x4C, 0x00000040) +#define TurnOn_RedLED() OUTREG32(CPE_GPIO_BASE + 0x38, 0x00000040) +#define TurnOff_GreenLED() OUTREG32(CPE_GPIO_BASE + 0x4C, 0x00000200) +#define TurnOn_GreenLED() OUTREG32(CPE_GPIO_BASE + 0x38, 0x00000200) +#else +#define TurnOff_RedLED() +#define TurnOn_RedLED() +#define TurnOff_GreenLED() +#define TurnOn_GreenLED() +#endif + +//Configure build as USB write loader @ ModelConfig_EMU_EVB.txt +//UART & USB can enable at the same time. +#if (STORAGE_EXT_TYPE == STORAGE_EXT_USB) || (STORAGE_EXT_TYPE == STORAGE_EXT_UART) +#define USB_WRITELOADER ENABLE +#define UART_UPDATE ENABLE +#else +#define USB_WRITELOADER DISABLE +#define UART_UPDATE DISABLE +#endif + + + +#define UPDATE_EMU_CODE DISABLE +#define REMOVED_FLASH DISABLE +#define FDT_SUPPORT ENABLE + +#define EMUKIT 0 +#define DEMOKIT 0x1800000 +#define RESUME_ADDR DEMOKIT + +//#NT#2018/03/07#Ben Wang -begin +//#NT#Support EMMC boot flow +#define EMMC_BLOCK_SIZE 0x200 +#define FDT_OFFSET 0x40000 +//#NT#2018/03/07#Ben Wang -end + +#if (STORAGEINT_SPI == 1) + #define StartNandBlkUpdateLoader 0 + #define StartNandBlkReserved 0 + //#NT#2012/12/17#HH Chuang -begin + //#NT#Sync spi erase unit to best access size of f/w storage object + #define StartNandBlkUpdateFW 16 + //#NT#2012/12/17#HH Chuang -end +#else + #define StartNandBlkUpdateLoader 0 + #define StartNandBlkUpdateFW 2 +#endif + +#if (FW_CHECK_METHOD == FW_CHECK_CRC) +static UINT32 g_uiCRCTable[256]; +#endif + +// Card detect GPIO offset +#define DGPIO_CARD_DETECT (0 | GPIO_IS_DGPIO) + + +#define CHECK_CARD_EXIST (ENABLE) +#if (CHECK_CARD_EXIST == ENABLE) +// MC16 default is config as input and pull up +#define bl_checkCardExist() (gpio_getPin(DGPIO_CARD_DETECT) == 0 ? TRUE : FALSE) +#else +#define bl_checkCardExist() TRUE +#endif + +/** + @name Assert macros +*/ +//@{ +#define ASSERT_CONCAT_(a, b) a##b +#define ASSERT_CONCAT(a, b) ASSERT_CONCAT_(a, b) + +#if defined(__COUNTER__) + +#define STATIC_ASSERT(expr) \ +enum { ASSERT_CONCAT(FAILED_STATIC_ASSERT_, __COUNTER__) = 1/(expr) } + +#else + +// This might cause compile error when writing STATIC_ASSERT at the same line +// in two (or more) files and one file include another one. +#define STATIC_ASSERT(expr) \ +enum { ASSERT_CONCAT(FAILED_STATIC_ASSERT_, __LINE__) = 1/(expr) } + +#endif +//@} + +//#NT#2010/05/21#Steven Wang -begin +//#NT#Check if FW size > EXEC base address +extern UINT32 _load_BOOT_EXEC_start_base; +//#NT#2010/05/21#Steven Wang -end + +extern char _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[]; + +extern UINT32 LoaderInternalInfo[]; + +extern PSTORAGE_OBJ int_strg_obj; + +//------------------------------------------------------------------------------ +// internal functions +//------------------------------------------------------------------------------ +extern int bl_chk_valid_all_in_one(NVTPACK_MEM *p_mem_all_in_one); +extern int bl_chk_uboot(unsigned int addr, unsigned int size); +extern unsigned int bl_process_all_in_one(UINT32 uiFwBuf, UINT32 uiFwBufSize, DRAM_PARTITION **pOut_dram_partition, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size); +extern int bl_boot_uboot(unsigned char *p_fdt); +extern int bl_chk_fdt(unsigned int addr, unsigned int size); +extern int bl_copy_fdt_to_fdt_addr(unsigned char *p_fdt /*IN*/, unsigned char **pp_fdt /*OUT*/); +extern int bl_flash_open(void); + +//------------------------------------------------------------------------------ +// Exported functions +//------------------------------------------------------------------------------ +extern UINT32 bl_mainFlow(void); + +// project(customer) main function +extern void prj_main(void); +extern void bl_read_rtos_addr(UINT32* pLoadAddr, UINT32* pTargetAddr, UINT32* pSize); +#endif diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c new file mode 100755 index 000000000000..ae3c0eba200f --- /dev/null +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c @@ -0,0 +1,372 @@ +#include "constant.h" +#include "fuart.h" +#include "fat.h" +#include "StorageDef.h" +#include "global.h" +#include "nvtpack.h" +#include "dram_partition_info.h" +#include "bl_func.h" +#include "string.h" +#include "lz.h" +#include "debug.h" +#include "loader.h" +#include "emb_partition_info.h" +#include "modelext_info.h" +#include "bin_info.h" +#include "shm_info.h" +#include "libfdt.h" +#include <stdlib.h> +#include "mmc_api.h" +#include "cache.h" +#include "Memory.h" +#include "timer.h" +#include "lz.h" +#include "bl_u2.h" +#include "nand.h" +#include "nor.h" + +#ifndef ALIGN_FLOOR +#define ALIGN_FLOOR(value, base) ((value) & ~((base)-1)) +#endif +#ifndef ALIGN_CEIL +#define ALIGN_CEIL(value, base) ALIGN_FLOOR((value) + ((base)-1), base) +#endif + +#if (USB_WRITELOADER || UART_UPDATE) + +//u2: means usb and uart +#include "scsi_op.h" + +typedef enum _U2_FW_TYPE { + U2_FW_TYPE_UNKNOWN, + U2_FW_TYPE_NVTPACK, + U2_FW_TYPE_UBOOT, +} U2_FW_TYPE; + +#define MAKEUINT32(a, b, c, d) ((UINT32)((a)&0xFF)) | (((UINT32)((b)&0xFF)) << 8) | (((UINT32)((c)&0xFF)) << 16) | (((UINT32)((d)&0xFF)) << 24) + +static U2_FW_TYPE m_u2_fw_type = U2_FW_TYPE_UNKNOWN; +static unsigned int m_u2_fw_size = 0; +static unsigned char *m_fdt = NULL; +UINT32 m_tmp_addr = SDRAM_Start_FW; +static int m_uboot_status = -2; +static int m_fdt_status = -1; +static SCSIOP_FLASH_OP m_flash_op = {0}; + +__attribute__((target("thumb2"))) static int u2_check_firmware(unsigned int addr) +{ + NVTPACK_FW_HDR2 *p_hdr = (NVTPACK_FW_HDR2 *)addr; + unsigned int size = p_hdr->TotalSize; + NVTPACK_MEM mem_in ; + mem_in.p_data = (void *)addr; + mem_in.len = size; + // all in one bin + if (bl_chk_valid_all_in_one(&mem_in) == 0) { + m_u2_fw_type = U2_FW_TYPE_NVTPACK; + m_u2_fw_size = size; + return 0; + } + // uboot + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)addr; // describe compressed u-boot + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + UINT32 size_comp_le = __builtin_bswap32(pBfc->uiSizeComp); + UINT32 addr_uncomp = ALIGN_CEIL(addr + size_comp_le, 4); + LZ_Uncompress((UINT8 *)addr + sizeof(NVTPACK_BFC_HDR), (unsigned char *)addr_uncomp, 1024); + addr = addr_uncomp; + } + HEADINFO *p_headinfo = (HEADINFO *)(addr + BIN_INFO_OFFSET_UBOOT); + if (p_headinfo->BinLength < 0x1000000 && bl_chk_uboot(addr, p_headinfo->BinLength) == 0) { + m_u2_fw_type = U2_FW_TYPE_UBOOT; + m_u2_fw_size = p_headinfo->BinLength; + return 0; + } + + return -1; +} + +__attribute__((target("thumb2"))) static int u2_boot_uboot(unsigned int addr, unsigned int size, U2_FW_TYPE fw_type) +{ + if (fw_type == U2_FW_TYPE_NVTPACK) { + UINT32 comp_addr = 0; + UINT32 comp_size = 0; + DRAM_PARTITION *p_dram_partition = NULL; + return bl_process_all_in_one(addr, size, &p_dram_partition, FUNC_UPDATE_FW, &comp_addr, &comp_size); + } else { + // update headinfo as real u-boot address + HEADINFO *p_headinfo = (HEADINFO *)(addr + BIN_INFO_OFFSET_UBOOT); + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)addr; // describe compressed u-boot + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + UINT32 size_comp_le = __builtin_bswap32(pBfc->uiSizeComp); + UINT32 addr_uncomp = ALIGN_CEIL(addr + size_comp_le, 4); + LZ_Uncompress((UINT8 *)addr + sizeof(NVTPACK_BFC_HDR), (unsigned char *)addr_uncomp, 1024); + p_headinfo = (HEADINFO *)(addr_uncomp + BIN_INFO_OFFSET_UBOOT); + } + // check tmp memory (file load) cannot overlap with uboot + if ((addr < p_headinfo->CodeEntry && addr + size > p_headinfo->CodeEntry) || + (addr > p_headinfo->CodeEntry && addr + size < p_headinfo->CodeEntry + size)) { + debug_err_var("addr", addr); + debug_err_var("size", size); + debug_err_var("CodeEntry", p_headinfo->CodeEntry); + debug_err("uboot & tmp_addr are overlapped\r\n"); + return -1; + } + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + UINT32 size_comp_le = __builtin_bswap32(pBfc->uiSizeComp); + LZ_Uncompress((UINT8 *)addr + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_headinfo->CodeEntry, size_comp_le); + } else { + utl_memcpy((void *)p_headinfo->CodeEntry, (void *)addr, size); + } + + if (m_fdt != NULL) { + bl_boot_uboot(m_fdt); + } else { + //check fdt followed uboot + unsigned char *fdt = (unsigned char *)(addr + size); + if (fdt_check_header(fdt) != 0) { + debug_err("no fdt behind uboot\r\n"); + return -1; + } + utl_memcpy((void *)(p_headinfo->CodeEntry + size), fdt, fdt_totalsize(fdt)); + debug_msg_var("jump", p_headinfo->CodeEntry); + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); + { + typedef void (*BRANCH_CB)(void); + BRANCH_CB p_func = (BRANCH_CB)p_headinfo->CodeEntry; + p_func(); + } + } + } + return 0; +} + +__attribute__((target("thumb2"))) static int u2_on_verify(unsigned int p_cmd, unsigned int *p_data, unsigned int *in_size) +{ + NVT_SCSI_CBW *p_cbw = (NVT_SCSI_CBW *)p_cmd; + int cmd_id = p_cbw->CBWCB[1]; + + switch (cmd_id) { + case SCSIOP_OUT_MEM_WRITE: + *p_data = MAKEUINT32(p_cbw->CBWCB[2], p_cbw->CBWCB[3], p_cbw->CBWCB[4], p_cbw->CBWCB[5]); + *in_size = p_cbw->dCBWDataTransferLength; + break; + case SCSIOP_OUT_FLASH_ACCESS: + if (p_cbw->dCBWDataTransferLength != sizeof(m_flash_op)) { + debug_err_var("m_flash_op size not matched", *in_size); + return -1; + } + *p_data = (UINT32)&m_flash_op; + *in_size = p_cbw->dCBWDataTransferLength; + break; + case SCSIOP_IN_MEM_READ: + *p_data = MAKEUINT32(p_cbw->CBWCB[2], p_cbw->CBWCB[3], p_cbw->CBWCB[4], p_cbw->CBWCB[5]); + *in_size = p_cbw->dCBWDataTransferLength; + //debug_msg_var("p_data:", MAKEUINT32(p_cbw->CBWCB[2], p_cbw->CBWCB[3], p_cbw->CBWCB[4], p_cbw->CBWCB[5])); + break; + case SCSIOP_IN_GET_TMP_ADDR: + *p_data = (unsigned int)&m_tmp_addr; + *in_size = sizeof(m_tmp_addr); + break; + case SCSIOP_IN_FDT: + *p_data = (unsigned int)&m_fdt_status; + *in_size = sizeof(m_fdt_status); + if (bl_chk_fdt((unsigned int)SDRAM_Start_FW, p_cbw->dCBWDataTransferLength) == 0) { + m_fdt_status = bl_copy_fdt_to_fdt_addr((unsigned char *)SDRAM_Start_FW, &m_fdt); + } else { + m_fdt_status = -1; + } + break; + case SCSIOP_IN_UBOOT: + *p_data = (unsigned int)&m_uboot_status; + *in_size = sizeof(m_uboot_status); + if (u2_check_firmware(SDRAM_Start_FW) == 0) { + m_uboot_status = 0; + } else { + m_uboot_status = -1; + } + break; + default: + debug_err_var("unknown_cmd_id", cmd_id); + break; + } + return 0; +} + +__attribute__((target("thumb2"))) static int u2_flash_open(unsigned int flash_type) +{ + static int is_opened[4] = {0}; + + if (flash_type >= 4) { + debug_err_var("flash_type", flash_type); + return -1; + } + + // open default and its related to + if (is_opened[0] == 0) { + if (bl_flash_open() != 0) { + return -1; + } + is_opened[0] = 1; + if (int_strg_obj == nand_get_storage_object()) { + is_opened[FLASH_ACCESS_TYPE_NAND] = 1; + } + if (int_strg_obj == nor_get_storage_object()) { + is_opened[FLASH_ACCESS_TYPE_NOR] = 1; + } + } + + if (is_opened[flash_type]) { + return 0; + } + + switch(flash_type) { + case FLASH_ACCESS_TYPE_NAND: +#if 0 + nand_get_storage_object()->flash_setConfig(FLASH_CFG_ID_SPI_IDENTIFY_CB, (UINT32)nand_identify); +#endif + nand_get_storage_object()->flash_open(); + is_opened[FLASH_ACCESS_TYPE_NAND] = 1; + break; + case FLASH_ACCESS_TYPE_NOR: +#if 0 + nor_get_storage_object()->flash_installIdentifyCB(nor_identify); +#endif + nor_get_storage_object()->flash_open(); + is_opened[FLASH_ACCESS_TYPE_NOR] = 1; + break; + default: + debug_err_var("unsupport flash_type", flash_type); + return -1; + } + return 0; +} + +__attribute__((target("thumb2"))) static int u2_on_vendor(unsigned int p_cmd) +{ + int er; + PSTORAGE_OBJ p_strg = NULL; + NVT_SCSI_CBW *p_cbw = (NVT_SCSI_CBW *)p_cmd; + int cmd_id = p_cbw->CBWCB[1]; + + switch (cmd_id) { + case SCSIOP_OUT_MEM_WRITE: + break; + case SCSIOP_OUT_FLASH_ACCESS: + if (u2_flash_open(m_flash_op.type) != 0) { + return -1; + } + switch(m_flash_op.type) { + case FLASH_ACCESS_TYPE_AUTO: + p_strg = int_strg_obj; + break; + case FLASH_ACCESS_TYPE_NAND: + p_strg = nand_get_storage_object(); + break; + case FLASH_ACCESS_TYPE_NOR: + p_strg = nor_get_storage_object(); + break; + default: + debug_err_var("unsupport flash_type", m_flash_op.type); + return -1; + } + // If use USB write loader & nand user define table => should add this + // User define SPI-NAND id table sample code(you can remove // by your self) + //p_strg->flash_setConfig(FLASH_CFG_ID_SPI_IDENTIFY_CB, (UINT32)nand_identify); + + if (m_flash_op.is_write) { + //write + unsigned int block_size = p_strg->flash_getBlockSize(); + unsigned int startblk = (unsigned int)(m_flash_op.offset / block_size); + unsigned int write_size = ALIGN_CEIL(m_flash_op.size, block_size); + if ((er = p_strg->flash_writePartition(startblk, write_size, (unsigned int)(m_flash_op.partition_size), (UINT8 *)SDRAM_Start_FW, NAND_RW_FIRMWARE)) != 0) { + debug_err_var("wr failed", er); + return -1; + } + //Once write loader something wrong happen.. + //Can enable code bellow make sure data were program into SPI-NOR/NAND +#if 0 + else { //Read back and make checksum + unsigned int reload_addr; + UINT32 status = 0; + reload_addr = SDRAM_Start_FW + write_size; + + int_strg_obj->flash_getConfig(FLASH_CFG_ID_SPI_GET_STATUS_1,(UINT32)&status); + debug_msg_var( +"status1", status); + + if (int_strg_obj->flash_readSectors(startblk, write_size, (UINT8 *)reload_addr, NAND_RW_LOADER) < 0) { + debug_err("rd fail\r\n"); + } else { + debug_err("rd success\r\n"); + } + // Verify + if (memcmp((void *)SDRAM_Start_FW, (void *)reload_addr, write_size) != 0) { + debug_err("verify fail\r\n"); + } else { + debug_msg_var("read back 0x0",*(UINT32 *)(reload_addr+0x0)); + debug_msg_var("read back 0x4",*(UINT32 *)(reload_addr+0x4)); + debug_msg_var("read back 0x8",*(UINT32 *)(reload_addr+0x8)); + debug_msg_var("read back 0xc",*(UINT32 *)(reload_addr+0xc)); + } + + } +#endif + } else { + //read + unsigned int block_size = p_strg->flash_getBlockSize(); + unsigned int startblk = (unsigned int)(m_flash_op.offset / block_size); + unsigned int read_size = ALIGN_CEIL(m_flash_op.size, block_size); + if ((er = p_strg->flash_readSectors(startblk, read_size, (UINT8 *)SDRAM_Start_FW, NAND_RW_FIRMWARE)) != 0) { + debug_err_var("rd failed", er); + return -1; + } + } + break; + case SCSIOP_IN_MEM_READ: + case SCSIOP_IN_GET_TMP_ADDR: + break; + case SCSIOP_IN_FDT: + break; + case SCSIOP_IN_UBOOT: + break; + default: + debug_err_var("unknown_cmd_id", cmd_id); + break; + } + return 0; +} + +__attribute__((target("thumb2"))) int bl_usb(void) +{ + + typedef int (*MSDC_Verify_CB)(unsigned int pCmdBuf, unsigned int *pDataBuf, unsigned int *IN_size); + typedef int (*MSDC_VenDone_CB)(unsigned int pCmdBuf); + extern void fLib_USB_Update_FW(void); + extern MSDC_Verify_CB guiU2MsdcCheck_cb; + extern MSDC_VenDone_CB guiU2MsdcVendorDone_cb; + guiU2MsdcCheck_cb = u2_on_verify; + guiU2MsdcVendorDone_cb = u2_on_vendor; + fLib_USB_Update_FW(); + u2_boot_uboot(SDRAM_Start_FW, m_u2_fw_size, m_u2_fw_type); + return 0; +} + +__attribute__((target("thumb2"))) int bl_uart(void) +{ + + typedef int (*UART_Verify_CB)(unsigned int pCmdBuf, unsigned int *pDataBuf, unsigned int *IN_size); + typedef int (*UART_Vendor_CB)(unsigned int pCmdBuf); + extern void uart_upgrade_procedure(void); + extern UART_Verify_CB guiUARTCheck_cb; + extern UART_Vendor_CB guiUARTVendor_cb; + guiUARTCheck_cb = u2_on_verify; + guiUARTVendor_cb = u2_on_vendor; + uart_upgrade_procedure(); + u2_boot_uboot(SDRAM_Start_FW, m_u2_fw_size, m_u2_fw_type); + return 0; +} + +#endif //USB_WRITELOADER diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.h b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.h new file mode 100755 index 000000000000..28ae6ee7c714 --- /dev/null +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.h @@ -0,0 +1,7 @@ +#ifndef _BL_USB_H +#define _BL_USB_H + +extern int bl_usb(void); +extern int bl_uart(void); + +#endif \ No newline at end of file diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c new file mode 100755 index 000000000000..18bea8a3a3ff --- /dev/null +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c @@ -0,0 +1,1168 @@ +/* + * main.c + * + * Entry point for nsboot + * + * Copyright (c) 2018 Novatek, ALL Rights Reserve + */ +#include "main.h" +#include "board.h" +#include "constant.h" +#include "compiler.h" +#include "mmc_api.h" +#include "spi020.h" +#include "fuart.h" +#include "timer.h" +#include "ahb_dma.h" +#include "bus.h" +#include "pll.h" +//#include "ddr.h" +#include "debug.h" +#include "bdata.h" +#include "nvt_rdata_sys.h" +#include "data_keeper.h" +#include "bl_func.h" +#include "cache.h" +#include "global.h" +#include "nvtpack.h" +#include "bin_info.h" +#include "Memory.h" + +//#define MEM_TEST +//#define CONFIG_FIX_ADDR 1 +//#define DO_DEBUG +//#define USE_SCP /* use ice scp file set ddr and remap */ + +//int __attribute__ ((section (".READ_CUSTOM_DATA"))) read_custom_data_if(unsigned int, struct buffer_info_t*, int, int); + +FLASH_TYPE_T flash_type = FLASH_SD; +#define _THUMB2 __attribute__((target("thumb2"))) +#define VERSION "Version 1.0.00" + +// Specific test +#define DRAM_TEST (0) +#define HVYLOAD_TEST (0) +#define WDT_TEST_ENABLE (0) + +#define WDT_CASE_INTRESET (0) +#define WDT_CASE_EXTRESET (1) +#define WDT_CASE_NORMAL (2) +#define WDT_TEST_CASE (WDT_CASE_EXTRESET) + +#ifndef ALIGN_FLOOR +#define ALIGN_FLOOR(value, base) ((value) & ~((base)-1)) +#endif +#ifndef ALIGN_CEIL +#define ALIGN_CEIL(value, base) ALIGN_FLOOR((value) + ((base)-1), base) +#endif + +extern char _loader_exec_compres_start[]; +extern char _loader_exec_compress_load_cpu_addr[]; + +extern char _loader_data_cpu_addr[]; +extern char _loader_exec_end_base[]; +extern char _loader_data_start_base[]; +extern char _loader_data_size[]; + +extern int decompress(unsigned char *buf, int in_len, unsigned char *output); +extern void reset_cpu(unsigned int base, unsigned int count); +extern void wait_delay(unsigned int loop); +extern void jmpcore1(void); +extern void fLib_USB_Update_FW(void); + +extern void serial_init(void); + + +extern unsigned int read_reg(unsigned int reg); +extern void write_reg(unsigned int reg, unsigned int value); + +#define write_reg(m,n) OUTW(m,n) +#define read_reg(m) INW(m) + +void hang(void); +void __div0(void); +void check_storage_type(void); +void u32PMU_WritePLL(unsigned int base, uint num, uint offset, uint value); +void set_bus(unsigned int base); +void set_ddr0(unsigned int base); +#if (defined(DDR1_1800_SZ_1Gb) || defined(DDR1_1800_SZ_2Gb) || defined(DDR1_1800_SZ_4Gb) || defined(DDR1_1600_SZ_4Gb)) +/* RC DDRC1 */ +void set_ddr1(unsigned int base); +#endif +void set_fire(unsigned int base); +void cpu_change_armpll(void); +void show_evb_message(void); +void reset_EP(void); +#if HVYLOAD_TEST +void heavy_load_test(void); +#endif +//void entry(void); +void entry(void) __attribute__ ((section (".part1"))); + +#define KPrint +void hang(void) +{ + debug_msg("### ERROR ### Please RESET the board ###\n"); + for (;;) ; +} + +void __div0(void) +{ + hang(); +} + +#ifdef DO_DEBUG + +_THUMB2 static void hexdump(unsigned char *data, int len) +{ + int i, j; + + for (i = 0; i < len; i += 16) { + KPrint("\n%04xh:", i); + for (j = 0; j < 16; j++) + KPrint(" %02X", data[i + j]); + KPrint(" "); + for (j = 0; j < 16; j++) { + int c = data[i + j]; + if (c < 0x20) + KPrint("."); + else + KPrint("%c", c); + } + } + KPrint("\n"); +} + +_THUMB2 void syshdrdump(SYSHDR * hdr) +{ + KPrint("<System Header>\n"); + KPrint(" signature: %s\n", hdr->signature); + KPrint(" bootm_addr: 0x%x\n", hdr->bootm_addr); + KPrint(" stsize: %d\n", hdr->stsize); + KPrint(" st_0: 0x%x\n", hdr->st.setting[0]); + KPrint(" st_1: 0x%x\n", hdr->st.setting[1]); + KPrint(" st_2: 0x%x\n", hdr->st.setting[2]); +} + +#endif //DO_DEBUG + +_THUMB2 void u32PMU_WritePLL(unsigned int base, uint num, uint offset, uint value) +{ + unsigned int data; + + if(num == 2) { + /* CPU switch to 12M */ + write_reg(base + 0x1340, 0x02); + } + + if(offset == 0x7C0) {/* CPU */ + data = (value * (1 << 17) / 80) / 12; + } else if((offset == 0x4C0) || (offset == 0x500)) {/* DDR */ + data = (value * 68266) / 1000;/* 131072 / (12 * 160) *///0x01F111; + //KPrint("data = 0x%x\n", data); + } else { + data = (value * (1 << 17)) / 12; + } + + write_reg(base + 0x10000 + offset + 0x20, data & 0xFF); + write_reg(base + 0x10000 + offset + 0x24, (data >> 8) & 0xFF); + write_reg(base + 0x10000 + offset + 0x28, (data >> 16) & 0xFF); + + /* ddr0 & ddr1 set at the same time */ + if(num == 3) + return; + + /* hit cache & wait clock stable */ + if((num < 2) || (num > 4)) { + /* delay 30 us */ + wait_delay(3000); + } else if(num == 2) { + /* cpu delay 300 us */ + wait_delay(30000); + write_reg(base + 0x1340, 0x03); + } else if(num == 4) { + /* ddr delay 30 us */ + wait_delay(3000); + write_reg(base + 0x20, 0x0000A001); + /* ddr delay 300 us */ + wait_delay(30000); + write_reg(base + 0x20, 0x0000E001); + } +} + +_THUMB2 void check_storage_type(void) +{ + unsigned int value; + + value = read_reg(REG_PMU_BASE + 0x04) & (1 << 2); + if (value) + flash_type = FLASH_NOR; + else + flash_type = FLASH_SPI_NAND; + //else + // flash_type = FLASH_SD; +} + +#if HVYLOAD_TEST +__attribute__((target("thumb2"))) void heavy_load_test(void) +{ + //volatile int tt = 0; + unsigned int test_addr1 = 0x30001000, test_addr2 = 0x30101000, test_addr3 = 0x30202000; + unsigned int test_size = 0x100000; + unsigned int value; + + //value = read_reg(REG_PMU_BASE + 0x50); + //value |= (1 << 25); + //write_reg(REG_PMU_BASE + 0x50, value); + + // set heavy load pattern + write_reg(REG_HEAVY_LOAD_BASE + 0x8090, 0xaaaaaaaa); + write_reg(REG_HEAVY_LOAD_BASE + 0x8094, 0x55555555); + write_reg(REG_HEAVY_LOAD_BASE + 0x8098, 0x00000000); + write_reg(REG_HEAVY_LOAD_BASE + 0x809C, 0xffffffff); + + // set heavy load region + write_reg(REG_HEAVY_LOAD_BASE + 0x8064, test_addr1); + write_reg(REG_HEAVY_LOAD_BASE + 0x8068, test_size); + write_reg(REG_HEAVY_LOAD_BASE + 0x8074, test_addr2); + write_reg(REG_HEAVY_LOAD_BASE + 0x8078, test_size); + write_reg(REG_HEAVY_LOAD_BASE + 0x8084, test_addr3); + write_reg(REG_HEAVY_LOAD_BASE + 0x8088, test_size); + + // trigger heavy load + + write_reg(REG_HEAVY_LOAD_BASE + 0x8060, 0x00103fc1); + write_reg(REG_HEAVY_LOAD_BASE + 0x8070, 0x00103fc1); + write_reg(REG_HEAVY_LOAD_BASE + 0x8080, 0x00103fc1); + write_reg(REG_HEAVY_LOAD_BASE + 0x805c, 0x7); + + value = read_reg(REG_HEAVY_LOAD_BASE + 0x80A0); + value &= 0x03; + + while(value == 0) { + value = read_reg(REG_HEAVY_LOAD_BASE + 0x80A0); + //KPrint("data = 0x%x\n", value); + value &= 0x03; + if(value) + break; + } + + //KPrint("0x80A0 data = 0x%x\n", value); + if(read_reg(REG_HEAVY_LOAD_BASE + 0x80A0) & 0x2){ + //KPrint("HEAVY LOAD fail, ERROR_DATA = 0x%x, CORRECT_DATA = 0x%x, ADDR = 0x%x\n", + // read_reg(REG_HEAVY_LOAD_BASE + 0x80A4), read_reg(REG_HEAVY_LOAD_BASE + 0x80A8), read_reg(REG_HEAVY_LOAD_BASE + 0x80AC)); + debug_msg("HEAVY LOAD NG\n"); + while(1); + } + else + debug_msg("HEAVY LOAD pass\n"); + + // write 1 clear + write_reg(REG_HEAVY_LOAD_BASE + 0x80A0, 0x03); + + //tt++; + //while(tt > 0); +} +#endif + +void set_bus(unsigned int base) +{ + volatile unsigned int i; + + //KPrint("set_bus\n"); + + for(i = 0; i < sizeof(bus_arg) / 8; i++) { + write_reg(base + bus_arg[i][0], bus_arg[i][1]); + } + + for(i = 0; i < 60000; i++); + +} + +/* RC DDRC0 */ +void set_ddr0(unsigned int base) +{ +#if 0 + volatile unsigned int i; + + //KPrint("set ddr0 arg\n"); + + while(!(read_reg(base + 0x1000) & 0x10)); + + for(i = 0; i < sizeof(DDR0_arg) / 8; i++) { + write_reg(base + DDR0_arg[i][0], DDR0_arg[i][1]); + } + + write_reg(base + 0x04, 0x00000001); + while(!(read_reg(base + 0x04) & 0x100)); + + //for(i = 0; i < 60000; i++); +#endif +} + +#if (defined(DDR1_1800_SZ_1Gb) || defined(DDR1_1800_SZ_2Gb) || defined(DDR1_1800_SZ_4Gb) || defined(DDR1_1600_SZ_4Gb)) +/* RC DDRC1 */ +void set_ddr1(unsigned int base) +{ + volatile unsigned int i; + + //KPrint("set ddr1 arg\n"); + + while(!(read_reg(base + 0x1000) & 0x10)); + + for(i = 0; i < sizeof(DDR1_arg) / 8; i++) { + write_reg(base + DDR1_arg[i][0], DDR1_arg[i][1]); + } + + write_reg(base + 0x04, 0x00000001); + while(!(read_reg(base + 0x04) & 0x100)); + + //for(i = 0; i < 60000; i++); +} +#endif //(defined(DDR1_1800_SZ_1Gb) || defined(DDR1_1800_SZ_2Gb) || defined(DDR1_1800_SZ_4Gb)) + +static void platform_setup(unsigned int pmu_base, unsigned int h2x_base, unsigned int dmac030_base, unsigned int tmr010_base) +{ +#if 0 + unsigned int value; + + /* Enable gating clock */ + /* release tmr & wdt */ + value = read_reg(pmu_base + 0x78); + value = value & ~((0x1 << 7) | (0x1 << 15)); + write_reg(pmu_base + 0x78, value); + + /* disable DSP */ + write_reg(pmu_base + 0x104, 0x00060000); + + /* Set H2X R/W prottype */ + write_reg(h2x_base + 0x20000, 0x5 << 2); + //write_reg(h2x_base + 0x40000, 0x5 << 2); + //write_reg(h2x_base + 0x60000, 0x14); + write_reg(h2x_base + 0x80000, 0x14); + //write_reg(h2x_base + 0xA0000, 0x5 << 2); + write_reg(h2x_base + 0xC0000, 0x5 << 2); + + /* Set VGA & CVBS */ + value = read_reg(pmu_base + 0xFC) & 0xFE1FFE1F; + value = value | (0x7 << 21) | (0x7 << 5); + write_reg(pmu_base + 0xFC, value); + + /* WDT exit reset */ + value = read_reg(pmu_base + 0x5C); + value |= (0x1 << 28); + write_reg(pmu_base + 0x5C, value); + + /* DMAC030 exit reset */ + value = read_reg(pmu_base + 0x50); + value |= (0x1 << 16); + write_reg(pmu_base + 0x50, value); + + /* Turn on u_FTDMAC030 PClk */ + value = read_reg(pmu_base + 0x70); + value &= ~(0x1 << 23); + write_reg(pmu_base + 0x70, value); + + /* Disable debug uart */ + value = read_reg(0xfe4e0010); + value &= ~(0x1 << 7); + write_reg(0xfe4e0010, value); + /* The following IP is used by ROM CODE, we need to clear its interrupt + */ + /* clear DMAC030 pending interrupts */ + write_reg(dmac030_base + 0x8, 0xff); + /* clear DMAC030 Error/Abort interrupts */ + write_reg(dmac030_base + 0x10, 0xff); + /* synchronize the corresponding dma_req */ + write_reg(dmac030_base + 0x20, 0xffff); + + write_reg(tmr010_base + 0x38, 0xff); + + /* UART pin mux */ + /* UART clock source */ + /* UART from PLL4, calc clock div to uart */ + //reg = read_reg(REG_PMU_BASE + 0x194) & 0xFFFFFFC0; + //value = u32PMU_ReadPLL4CLK() / 6; + //value = (value / (2*16*115200)) - 1; + value = read_reg(pmu_base + 0x194); + value &= ~0xFF; + write_reg(pmu_base + 0x194, value | 0x1); + + if(pmu_base == REG_PMU_BASE) + serial_init(); +#endif +} + +void set_fire(unsigned int base) +{ +#if 0 +#if (defined(DDR0_1200_SZ_4Gbx2) || defined(DDR0_1200_SZ_2Gbx2)) + unsigned int i, PLL[6][2] = {}; + KPrint("clock no change...\n"); + return; +#else + #if (defined(DDR0_1600_SZ_4Gbx2) || defined(DDR0_1600_SZ_2Gbx2)) + /* codec, axi0, CPU, ddr0, ddr1 7.5~11.5, cnn */ + unsigned int i, PLL[6][2] = {{0x740, 380}, {0x400, 467}, {0x7C0, 1100}, {0x4C0, 1600}, {0x500, 1600}, {0x480, 600}}; + #else + #if (defined(DDR0_1800_SZ_4Gb) || defined(DDR0_1800_SZ_4Gbx2) || defined(DDR0_1800_SZ_2Gbx2) || defined(DDR0_1800_SZ_1Gbx2)) + unsigned int i, PLL[6][2] = {{0x740, 380}, {0x400, 467}, {0x7C0, 1100}, {0x4C0, 1866}, {0x500, 1866}, {0x480, 600}}; + #else + KPrint("not define this type ddr setting...\n"); + return; + #endif + #endif +#endif + debug_msg("clock change..."); + for(i = 0; i < 6; i++) { + //KPrint("offset = 0x%08x, data = 0x%08x\n", PLL[i][0], PLL[i][1]); + u32PMU_WritePLL(base, i, PLL[i][0], PLL[i][1]); + } + + debug_msg("done\n"); +#endif +} + +#ifdef MEM_TEST +int memtest(void); + +_THUMB2 int memtest(void) +{ + unsigned int *bg; + int i = 0, j = 0, fail = 0; + unsigned int pattern[2] = {0x5a5a5a5a, 0xa5a5a5a5}; + int TEST_LENGTH = 0x100000; /* 1MB */ + unsigned int addr = 0x1000000; + + //KPrint("Test addr: 0x%x, len = 0x%x\n", addr, TEST_LENGTH); + debug_msg("Test addr: 0x%x, len =\n"); + bg = (unsigned int *)addr; + + for (j = 0; j < (TEST_LENGTH / 4); j += 2) { + *bg++ = pattern[0]; + *bg++ = pattern[1]; + } + + bg = (unsigned int *)addr; + for (j = 0; j < (TEST_LENGTH / 4); j += 2) { + if (*bg != pattern[i] || (*(bg + 1) != pattern[i + 1])){ + fail++; +#if 1 + if (*bg != pattern[i]) + debug_msg("addr: 0x%x correct data: 0x%x, err = 0x%x\n"); + if (*(bg + 1) != pattern[i + 1]) + debug_msg("addr: 0x%x correct data: 0x%x, err = 0x%x\n"); +#endif + } + bg += 2; + } + + if (fail) + debug_msg("error number %d: "); + else + debug_msg("Test pass, pattern 0x%x, 0x%x\n"); + + if(fail > 0) + while(1); + + return 0; +} +#endif + +_THUMB2 void cpu_change_armpll(void) +{ + //spare pll power down + write_reg(REG_PMU_BASE + 0x10000 + (0x210), 0x01); + + #if 0 + debug_msg("CPU1400 "); + //CPU 1400 MHz -> CPU-MPLL-175Mhz = 0x1D2AAA + write_reg(REG_PMU_BASE + 0x10000 + (0x7C0+0x20), 0xAA); // B0 + write_reg(REG_PMU_BASE + 0x10000 + (0x7C0+0x24), 0x2A); // B1 + write_reg(REG_PMU_BASE + 0x10000 + (0x7C0+0x28), 0x1D); // B2 + #elif 1 + debug_msg("CPU1200 "); + //CPU 1200 MHz -> CPU-MPLL-150Mhz = 0x190000 + write_reg(REG_PMU_BASE + 0x10000 + (0x7C0+0x20), 0x00); // B0 + write_reg(REG_PMU_BASE + 0x10000 + (0x7C0+0x24), 0x00); // B1 + write_reg(REG_PMU_BASE + 0x10000 + (0x7C0+0x28), 0x19); // B2 + #elif 0 + debug_msg("CPU1000 "); + //CPU 1000 MHz -> CPU-MPLL-125Mhz = 0x14D555 + write_reg(REG_PMU_BASE + 0x10000 + (0x7C0+0x20), 0x55); // B0 + write_reg(REG_PMU_BASE + 0x10000 + (0x7C0+0x24), 0xD5); // B1 + write_reg(REG_PMU_BASE + 0x10000 + (0x7C0+0x28), 0x14); // B2 + #else + debug_msg("CPU800"); + //CPU 800 MHz -> CPU-MPLL-100Mhz = 0x10AAAA + write_reg(REG_PMU_BASE + 0x10000 + (0x7C0+0x20), 0xAA); // B0 + write_reg(REG_PMU_BASE + 0x10000 + (0x7C0+0x24), 0xAA); // B1 + write_reg(REG_PMU_BASE + 0x10000 + (0x7C0+0x28), 0x10); // B2 + #endif + + // wait 300us for synthesizer stable + udelay(300); + + // de-assert resetb_armpll to 1: Write 0xD1 = 0x10 + write_reg(REG_PMU_BASE + 0x10000 + (0xD1<<2), 0x10); + + // wait 300us for ARMPLL stable + udelay(500); + + // Set ARMPLL output. Write 0xD0 = 0x03 + write_reg(REG_PMU_BASE + 0x10000 + (0xD0<<2), 0x03); + + // Change CPU to APLL + write_reg(REG_PMU_BASE + 0x100, read_reg(REG_PMU_BASE + 0x100)|(0x1<<31)); + + debug_msg("DONE\r\n"); +} + + +_THUMB2 void show_evb_message(void) +{ + + debug_msg("NA51068 "); + debug_msg(Dec2HexStr2Bytes((LoaderInternalInfo[1] >> 28) & 0xF)); + debug_msg("."); + debug_msg(Dec2HexStr2Bytes((LoaderInternalInfo[1] >> 24) & 0xF)); + debug_msg("."); + debug_msg(Dec2HexStr2Bytes((LoaderInternalInfo[1] >> 16) & 0xFF)); + debug_msg("\r\n"); + +#ifdef DDR0_1200_SZ_4Gbx2 + KPrint("DDR0 1200 4Gbx2\r\n"); +#endif + +#ifdef DDR0_1600_SZ_2Gbx1 + KPrint("DDR0 1600 2Gbx1\r\n"); +#endif + +#ifdef DDR0_1600_SZ_4Gbx1 + KPrint("DDR0 1600 4Gbx1\r\n"); +#endif + +#ifdef DDR0_1600_SZ_2Gbx2 + KPrint("DDR0 1600 2Gbx2\r\n"); +#endif + +#ifdef DDR0_1600_SZ_4Gbx2 + KPrint("DDR0 1600 4Gbx2\r\n"); +#endif + +#ifdef DDR0_1800_SZ_4Gb + KPrint("DDR0 1800 4Gb\r\n"); +#endif + +#ifdef DDR0_1800_SZ_1Gbx2 + KPrint("DDR0 1800 1Gbx2\r\n"); +#endif + +#ifdef DDR0_1800_SZ_4Gbx2 + KPrint("DDR0 1800 4Gbx2\r\n"); +#endif + +#ifdef DDR0_FPGA + debug_msg("FPGA EMULATION Loader\r\n"); +#endif + +#ifdef MODE0 + KPrint("CPU800, DSP 600, codec 350, ddr 1600\n"); +#endif + + +} + +/* set ep 12MHz */ +_THUMB2 void reset_EP(void) +{ + unsigned int reg; + /* set ext clk */ + reg = read_reg(REG_PMU_BASE + 0x1a4); + reg &= ~0x3; + reg |= 0x1; + write_reg(REG_PMU_BASE + 0x1a4, reg); + + /* set clk 12MHz */ + reg = read_reg(REG_PMU_BASE + 0x170); + reg &= ~0xFF; + reg |= 0x6; + write_reg(REG_PMU_BASE + 0x170, reg); + + /* enable gpio2 */ + reg = read_reg(REG_PMU_BASE + 0x58); + reg |= (0x1 << 29); + write_reg(REG_PMU_BASE + 0x58, reg); + + reg = read_reg(REG_PMU_BASE + 0x74); + reg &= ~(0x1 << 5); + write_reg(REG_PMU_BASE + 0x74, reg); + + /* set gpio2 pulse */ + reg = read_reg(REG_GPIO2_BASE + 0x08); + reg |= (0x1 << 27); + write_reg(REG_GPIO2_BASE + 0x08, reg); + + reg = read_reg(REG_GPIO2_BASE + 0x14); + reg |= (0x1 << 27); + write_reg(REG_GPIO2_BASE + 0x14, reg); + + wait_delay(0x10000); + + reg = read_reg(REG_GPIO2_BASE + 0x10); + reg |= (0x1 << 27); + write_reg(REG_GPIO2_BASE + 0x10, reg); +} + +#if (_FPGA_EMULATION_ == 1) +static inline unsigned long read_periphbase(void) +{ + unsigned long val; + __asm__ __volatile__( + "mrc p15, 4, %0, c15, c0, 0\n\t" + : "=r"(val) + ); + return val; +} +#endif + + +#if (_LOADER_COMPRESSED_ == ENABLE) && defined(_UBOOT_BIND_ON_) +_THUMB2 static void bl_core2_reset(void) +{ + UINT32 core_reg; + core_reg = *(volatile UINT32 *)0xF84000F0; + core_reg &= ~(1<<3); + core_reg &= ~(1<<11); + *(volatile UINT32 *)0xF84000F0 = core_reg; + core_reg |= (1<<2)|(1<<10) | (1<<21); + core_reg |= (1<<17); + *(volatile UINT32 *)0xF84000F0 = core_reg; + +} + +_THUMB2 static UINT32 bl_boot_bind_uboot(void) +{ + extern char _lzma_tmp_start[]; + extern char _lzma_tmp_end[]; + _ALIGNED(4) static char uboot_pre_deocde[BIN_INFO_OFFSET_UBOOT+sizeof(HEADINFO)]; + int loader_size, padding_bytes; + NVTPACK_BFC_HDR *p_loader, *p_uboot; + + p_loader = (NVTPACK_BFC_HDR *)(_loader_exec_compress_load_cpu_addr); + padding_bytes = 4 - (__builtin_bswap32(p_loader->uiSizeComp)&0x3); + loader_size = __builtin_bswap32(p_loader->uiSizeComp) + LDC_HEADER_SIZE + padding_bytes; + p_uboot = (NVTPACK_BFC_HDR *)(_loader_exec_compress_load_cpu_addr + loader_size); + + lzma_inflate( + (UINT8 *)&p_uboot[1], + __builtin_bswap32(p_uboot->uiSizeComp), + (UINT8 *)uboot_pre_deocde, + sizeof(uboot_pre_deocde), + (UINT8 *)_lzma_tmp_start, + (UINT32)(_lzma_tmp_end - _lzma_tmp_start) + ); + + HEADINFO *p_head = (HEADINFO *)&uboot_pre_deocde[BIN_INFO_OFFSET_UBOOT]; + + lzma_inflate( + (UINT8 *)&p_uboot[1], + __builtin_bswap32(p_uboot->uiSizeComp), + (UINT8 *)p_head->CodeEntry, + __builtin_bswap32(p_uboot->uiSizeUnComp), + (UINT8 *)_lzma_tmp_start, + (UINT32)(_lzma_tmp_end - _lzma_tmp_start) + ); + + UINT32 No_CPU; + No_CPU = *(UINT32 *)0xF9C00004; + No_CPU &= 0x3; + + if (No_CPU) { + extern char _load_core2_jump_program_start_base[]; + extern char _load_core2_jump_program_end_base[]; + extern char _load_core2_entry_program_start_base[]; + extern char _load_core2_entry_program_end_base[]; + UINT32 code2JumpCodelen = _load_core2_jump_program_end_base - _load_core2_jump_program_start_base; + UINT32 code2EntryCodelen = _load_core2_entry_program_end_base - _load_core2_entry_program_start_base; + UINT32 core2_entry1_addr = 0x00000000; + //UINT32 core2_entry2_addr = 0x1FFC0000; + UINT32 core2_entry2_addr = (_SDRAM_SIZE_ / 8) * 1024 * 1024 - ALIGN_CEIL(code2EntryCodelen, 0x10000); + // copy core2 jump code to dram 0x0 + utl_memcpy((void *)core2_entry1_addr, _load_core2_jump_program_start_base, code2JumpCodelen); + CPUflushWriteCache(core2_entry1_addr, code2JumpCodelen);; + //debug_msg_var("core2_jump_program", (int)_load_core2_jump_program_start_base); + //debug_msg_var("code2JumpCodelen", (int)code2JumpCodelen); + debug_msg_var("core2_entry2_addr", (int)core2_entry2_addr); + + // copy core2 entry code into the bottom of memory + *(volatile UINT32 *)(NVT_CORE2_START) = core2_entry2_addr; + utl_memcpy((void *)core2_entry2_addr, _load_core2_entry_program_start_base, code2EntryCodelen); + CPUflushWriteCache(core2_entry2_addr, code2EntryCodelen); + //debug_msg_var("core2_entry_program", (int)_load_core2_entry_program_start_base); + //debug_msg_var("code2EntryCodelen", (int)code2EntryCodelen); + *(volatile UINT32 *)0xFE0B9000 = 0; + //debug_msg_var("0xFE0B9000=", (int)*(volatile UINT32 *)0xFE0B9000); + //reset core2 + //debug_msg("reset core2\r\n"); + bl_core2_reset(); + } + + debug_msg_var("j", p_head->CodeEntry); + + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); + + { + typedef void (*BRANCH_CB)(void); + BRANCH_CB p_func = (BRANCH_CB)p_head->CodeEntry; + p_func(); + } + + return p_head->CodeEntry; +} +#endif +//--------------------------------------------------------------------------- +// Static function +//--------------------------------------------------------------------------- +/* + BL_RunPartOne + + Expend loader if use compress + + @return void +*/ +_THUMB2 static void BL_RunPartOne(void) +{ +#if (_LOADER_COMPRESSED_ == ENABLE) + UINT8 *in_addr = (UINT8 *)(_loader_exec_compress_load_cpu_addr); + UINT8 *out_addr = (UINT8 *)(_loader_exec_compres_start); + UINT32 uiCompressedOutSize; + unsigned int out_size; + + // Get decompress size within specific header + uiCompressedOutSize = (((UINT32)*(in_addr + 12)) << 24) + + (((UINT32)*(in_addr + 13)) << 16) + + (((UINT32)*(in_addr + 14)) << 8) + + ((UINT32)*(in_addr + 15)); + + // Decompress loader image + out_size = LZ_Uncompress((unsigned char *)(in_addr + LDC_HEADER_SIZE), (unsigned char *)(out_addr), uiCompressedOutSize); + + // Need to clean data cache + CPUInvalidateICacheAll(); + CPUCleanInvalidateDCacheAll(); + + // Copy data to its execution address + in_addr = (UINT8 *)((UINT32)_loader_exec_compres_start+(UINT32)_loader_data_cpu_addr - (UINT32)_loader_exec_end_base); + out_addr = (UINT8 *)(_loader_data_start_base); + out_size =(UINT32) _loader_data_size; + + //PrintDec2Hex((UINT32)in_addr); + //PrintDec2Hex((UINT32)out_addr); + //PrintDec2Hex((UINT32)out_size); + utl_memcpy((void *)out_addr, in_addr, out_size); + + debug_msg("\r\nUNZOK!"); +#else + debug_msg("\r\nOK!"); +#endif +} + + +_THUMB2 void entry(void) +{ + UINT32 reg; +#if HVYLOAD_TEST +// UINT32 src; +// UINT32 i; +// UINT32 reg; +#endif + void (*image_entry)(void) = (void *)LOAD_ADDR; + +#ifndef HEAVY_LOAD + //struct spi_flash *spi_chip = NULL; + //unsigned int reg;//, i; + +#ifdef COMPRESS + unsigned char *in_ptr = (unsigned char *)IMAGE_ADDR; + unsigned char *out_ptr = (unsigned char *)LOAD_ADDR; + unsigned int img_addr = IMAGE_ADDR; +#else + unsigned int img_addr = LOAD_ADDR; +#endif +#endif //HEAVY_LOAD + + + // Run part one loader + // If using compressed loader, just decompress the loader image at first! + BL_RunPartOne(); + + platform_setup(REG_PMU_BASE, REG_H2X_BASE, REG_DMAC030_BASE, REG_TMR010_BASE); +#if (_FPGA_EMULATION_ == 1 ) + debug_msg_var("\r\nperiphbase=", read_periphbase()); +#endif +#ifndef USE_SCP +/* +#ifdef CONFIG_MT + debug_msg("MT test\r\n"); +#else +#ifdef CONFIG_RA + reset_cpu(REG_WDT_BASE, 0xffffffff); +#else + reset_cpu(REG_WDT_BASE, SYS_CLK * 160); +#endif //CONFIG_RA +#endif //CONFIG_MT +*/ + + show_evb_message(); + + #if (_FPGA_EMULATION_ == 0) + cpu_change_armpll(); + #endif + + #if 0 + fLib_USB_Update_FW(); + #endif + + +#if (_FPGA_EMULATION_ == 0) + //set_fire(REG_PMU_BASE); +#endif + + +#if (_FPGA_EMULATION_ == 0) + //write_reg(REG_PMU_BASE + 0x20, 0x0000A001); /* DDR0 + DDR1 phy reset */ + //write_reg(REG_PMU_BASE + 0x20, 0x0000E001); + //set_ddr0(REG_DDR0_BASE); +#endif + + //debug_msg("0xFE030000 = 0x"); + //debug_msg(Dec2HexStr(*(UINT32 *)0xFE030000)); + //debug_msg("\r\n"); + reg = *(UINT32 *)0xFE030000; + reg = reg&0xFFFFFF3F; + *(UINT32 *)0xFE030000 = reg; + //debug_msg("Force bit6/7 to 0\r\n"); + //debug_msg("0xFE030000 = 0x"); + //debug_msg(Dec2HexStr(*(UINT32 *)0xFE030000)); + //debug_msg("\r\n"); + + +#ifdef DDR1_1200_SZ_4Gb +#ifndef CONFIG_FPGA + debug_msg("DDR1 1200 4Gb\r\n"); + set_ddr1(REG_DDR1_BASE); +#endif +#endif //DDR1_1200_SZ_4Gb + +#ifdef DDR1_1600_SZ_4Gb +#ifndef CONFIG_FPGA + debug_msg("DDR1 1600 4Gb\r\n"); + set_ddr1(REG_DDR1_BASE); +#endif +#endif //DDR1_1600_SZ_4Gb + +#ifdef DDR1_1800_SZ_1Gb + debug_msg("DDR1 1800 1Gb\r\n"); + set_ddr1(REG_DDR1_BASE); +#endif //DDR1_1800_SZ_1Gb + +#ifdef DDR1_1800_SZ_2Gb + debug_msg("DDR1 1800 2Gb\r\n"); + set_ddr1(REG_DDR1_BASE); +#endif //DDR1_1800_SZ_2Gb + +#ifdef DDR1_1800_SZ_4Gb +#if (_FPGA_EMULATION_ == 0) + debug_msg("DDR1 1800 4Gb\n"); + set_ddr1(REG_DDR1_BASE); +#endif +#endif //DDR1_1800_SZ_4Gb + + + //write_reg(REG_PMU_BASE + 0x198, 0x10); //remap + + /* modify DDR base address if user update DDR size */ + //set_bus(REG_AXIC_BASE); +#else + heavy_load_test(); +#endif //USE_SCP + +#if HVYLOAD_TEST +heavy_load_test(); +#endif + +#if DRAM_TEST +printf("mem r/w test ~~ \r\n"); + +for(i=0;i<0x100000;i=i+4) +{ + write_reg( i, i); +} + +for(i=0;i<0x100000;i=i+4) +{ + src = read_reg(i); + if(src !=i) + { + printf("mem r/w failed ~~ \r\n"); + while(1); + } +} +printf("mem r/w pass \r\n"); +#endif + +#if WDT_TEST_ENABLE + //UINT32 reg; + //if ((INREG32(0xF0020010) & 0x3) != 1) + //debug_msg(("CPU CLKSEL != PLL8 !!\r\n")); + +#if (WDT_TEST_CASE == WDT_CASE_NORMAL) + //gpio_setDir(Y_GPIO_Y, GPIO_DIR_OUTPUT); + *(UINT32 *)(0xF0070024) = 1; + //gpio_setPin(Y_GPIO_Y); + *(UINT32 *)(0xF0070004) = 1; + debug_msg(("Set PGPIO0 ~ \r\n")); + +#elif (WDT_TEST_CASE == WDT_CASE_INTRESET) + reg = (*(UINT32 *)(WDT_REG_BASE_ADDR+0x80))&0xFF; + + if(reg) + debug_msg("count >0\r\n"); + else + debug_msg("count = 0\r\n"); + + enableWdtClock(); + reg = WDT_RESET_NUM0_EN |WDT_MODE_RESET | WDT_EN_MSK|WDT_KEYCTRL(WDT_KEY_VALUE); + write_reg(WDT_CTRL_REG, reg); + debug_msg("Wait WDT int reset\r\n"); + +#elif (WDT_TEST_CASE == WDT_CASE_EXTRESET) + reg = (*(UINT32 *)(0xfe8a0000+0x80))&0xFF; + if(reg) + debug_msg("count >0\r\n"); + else + debug_msg("count = 0\r\n"); + + //enableWdtPCLK + write_reg (0xFE00005C ,0xFFFFFFFF); + + reg =*(UINT32 *)(0xfe000078); + write_reg (0xFE000078 ,reg&0xFFFF7FFF); + + //reg = 0x33|WDT_KEYCTRL(0x5A96); + reg = 0x5A960033; + write_reg(0xFE8A0000, reg); + debug_msg("Wait WDT ext reset\r\n"); + while(1); +#endif + while(1); + return; +#endif + + + +#ifdef MEM_TEST + debug_msg("memtest after FCS\r\n"); + memtest(); + #ifdef FCS_TEST + { + unsigned int i = 0; + while(1) { + //KPrint("Test loop %d, ", i++); + memtest(); + } + } + #endif +#endif //MEM_TEST + + + +#ifdef HEAVY_LOAD + heavy_load_test(); +#endif + + //check_storage_type(); + + /* Release SPI */ + //reg = read_reg(REG_PMU_BASE + 0x54); + //reg |= (0x1 << 11); + //write_reg(REG_PMU_BASE + 0x54, reg); + + /* Turn on SPI gating clock */ + //reg = read_reg(REG_PMU_BASE + 0x1A0); + //#if (defined(CONFIG_MT) || defined(CONFIG_RA)) + //reg = (reg & 0xCC003FFF) | 0x22AA8000; + //#else + //reg = (reg & 0xCFC03FFF) | 0x202A8000; + //#endif + //write_reg(REG_PMU_BASE + 0x1A0, reg); + + //#ifdef CONFIG_SPI_DMA + //Dma_init((1 << REQ_SPI020RX) | (1 << REQ_SPI020TX)); + //#endif + +#if 1 + + //if (flash_type == FLASH_SD) { + debug_msg("mmc bootstrap\r\n"); + + #if 0 // load rtos bin directly + /* sdhci init */ + //extern int mmc_loader(unsigned int load_addr); + debug_msg_var("loader_addr=",img_addr); + unsigned int image_size = prj_main(img_addr); + if(image_size > 0) { + goto img_boot; + } + else { + debug_msg("no mmc\n"); + } + //} else { + #else // load all-in-one firmware +#if defined(_UBOOT_BIND_ON_) + img_addr = bl_boot_bind_uboot(); +#else + debug_msg("load all-in-one fw\r\n"); + img_addr = bl_mainFlow(); +#endif + debug_msg_var("loader_addr=",img_addr); + if(img_addr > 0) { + goto img_boot; + } + else { + debug_msg("no mmc\n"); + } + #endif + #endif + + /* SPI init */ + //FTSPI020_Init(); //------------->TODO + //spi_chip = 0; + //if (!spi_chip) { + // debug_msg("SPI init fail! \n"); + // goto exit_nsboot; + //} + //} + + //if (flash_type == FLASH_NOR) { + // debug_msg("FLASH_NOR TODO\n"); + /* + image_size = fLib_NOR_Copy_Image(img_addr, LOAD_FDT_ADDR); + if (image_size < 0) { + debug_msg("image_size < 0\n"); + goto exit_nsboot; + } + */ + //} + + //if (flash_type == FLASH_SPI_NAND) { + // debug_msg("FLASH_SPI_NAND TODO\n"); + /* + image_size = fLib_SPI_NAND_Copy_Image(img_addr, LOAD_FDT_ADDR); + if (image_size < 0) { + debug_msg("image_size < 0\n"); + goto exit_nsboot; + } + */ + //} + +img_boot: + +#if 0 +#if (defined(CONFIG_MT) || defined(CONFIG_RA)) + //reset_EP(); + + #if 0 + #ifdef CONFIG_MT + /* Release UART1 */ + reg = read_reg(REG_PMU_BASE + 0x5C); + reg |= (0x1 << 23); + write_reg(REG_PMU_BASE + 0x5C, reg); + + reg = read_reg(REG_PMU_BASE + 0x78); + reg &= ~(0x1 << 10); + write_reg(REG_PMU_BASE + 0x78, reg); + + write_reg(REG_UART1_BASE + 0x8, 0x00000035); + write_reg(REG_UART1_BASE + 0xC, 0x00000083); + write_reg(REG_UART1_BASE + 0x0, 0x00000045); + write_reg(REG_UART1_BASE + 0x4, 0x00000000); + write_reg(REG_UART1_BASE + 0xC, 0x00000003); + write_reg(REG_UART1_BASE + 0x0, 0x00000030); + write_reg(REG_UART1_BASE + 0x0, 0x00000024); + #endif + #endif + + #if 0 + #ifdef CONFIG_RA + /* Release UART2 */ + reg = read_reg(REG_PMU_BASE + 0x5C); + reg |= (0x1 << 24); + write_reg(REG_PMU_BASE + 0x5C, reg); + + reg = read_reg(REG_PMU_BASE + 0x78); + reg &= ~(0x1 << 11); + write_reg(REG_PMU_BASE + 0x78, reg); + + write_reg(REG_UART2_BASE + 0x8, 0x00000035); + write_reg(REG_UART2_BASE + 0xC, 0x00000083); + write_reg(REG_UART2_BASE + 0x0, 0x00000045); + write_reg(REG_UART2_BASE + 0x4, 0x00000000); + write_reg(REG_UART2_BASE + 0xC, 0x00000003); + write_reg(REG_UART2_BASE + 0x0, 0x00000030); + write_reg(REG_UART2_BASE + 0x0, 0x00000024); + #endif + #endif + + /* jump */ + write_reg(0x0, 0xe59ff014); + write_reg(0x1C, LOAD_EP_ADDR); + //write_reg(LOAD_EP_ADDR, 0xEAFFFFFE); /* loop */ + + /* Reset secondary CPU */ + reg = read_reg(INTC_OSPREY_BASE + 0x4); + reg |= (1 << 10) | (1 << 2); + write_reg(INTC_OSPREY_BASE + 0x4, reg); + //KPrint("addr 0x%x, data 0x%x\n", INTC_OSPREY_BASE + 0x4, reg); + + //KPrint("Jump to 0x%x\n", LOAD_ADDR); + + jmpcore1();/* LOAD_ADDR 0x0f000040 */ + //image_entry(); +#endif +#endif + + //reset_EP(); + + /*KPrint("write pattern\n"); + for(i = 0; i < 0x10000000; i += 4){ + write_reg(i, i); + } + KPrint("read compare\n"); + for(i = 0; i < 0x10000000; i += 4){ + if(i != read_reg(i)) { + KPrint("compare fail\n"); + while(1); + } + }*/ + //KPrint("Boot image offset: 0x%x. Booting Image .....\n", image_size); + //write_reg(0xF9000FF8, 0x7e9f05a3); + //write_reg(0xF9000FFC, 0x1fe38ae7); + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); +// __asm__ __volatile__("mcr p15, 0, r0, c7, c1, 0"); //invalidate I-cache inner shareable +// __asm__ __volatile__("mcr p15, 0, r0, c7, c5, 0"); //I+BTB cache invalidate + +#ifdef COMPRESS + KPrint("Uncompress from 0x%x to 0x%x, size %d\n", in_ptr, out_ptr, image_size); + if(decompress(in_ptr, image_size, out_ptr) < 0) + KPrint("Uncompress fail\n"); +#endif + + image_entry(); + +//exit_nsboot: +// return; +} diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/main.h b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/main.h new file mode 100755 index 000000000000..e54a5c09102a --- /dev/null +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/main.h @@ -0,0 +1,36 @@ +/** + @file main.h + @brief Header file for main function + + Copyright Novatek Microelectronics Corp. 2014. All rights reserved. +*/ +#ifndef _MAIN_H +#define _MAIN_H + +#include "constant.h" + +// FW checking method, support checksum & CRC now +#define FW_CHECK_NOCHECK 0 +#define FW_CHECK_CHECKSUM 1 +#define FW_CHECK_CRC 2 +#define DRAM_RANGE_SCAN_EN (DISABLE) +#define _LOADER_COMPRESSED_ (ENABLE) +#define _LOADER_DUTY_CALIBRATION_ (DISABLE) +#define _LOADER_DUTY_CALIBRATION_LOG_ (DISABLE) +#define FW_CHECK_METHOD (FW_CHECK_CHECKSUM) + + + + +#define LDC_HEADER_SIZE 16 +#if (_LOADER_COMPRESSED_ == ENABLE) +// header size for compressed loader (16 bytes) +//#define LDC_HEADER_SIZE 16 + +#include "lz.h" +#endif + +extern UINT32 main(void) __attribute__ ((section (".part1"))); + + +#endif diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c new file mode 100755 index 000000000000..e44c3cd8ea46 --- /dev/null +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c @@ -0,0 +1,49 @@ +/* + * nand_ids.c + * + * nand id table + * + * Copyright (c) 2018 Novatek, ALL Rights Reserve + */ +#include "main.h" +#include "nand.h" +#include "constant.h" +#include "compiler.h" +#include "mmc_api.h" +#include "spi020.h" +#include "fuart.h" +#include "timer.h" +#include "debug.h" +#include "pll.h" + +#define _THUMB2 __attribute__((target("thumb2"))) + + +NAND_FLASH_DEV nvt_nand_ids[] = { + // manufactor ID device id page size(unit:bytes) erase unit(block size, unit:bytes) QE type plane type + SPI_ID_NAND(_SNAND_MXIC_ID, _MXIC_SPI_NAND_1Gb, 2048, 0x20000, SPINAND_QE_FEATURE2_B0H_BIT0_TYPE1, SPINAND_2_PLANE_NONE), + SPI_ID_NAND(_SNAND_TOSHIBA_ID, 0xCD, 4096, 0x40000, SPINAND_QE_NONE, SPINAND_2_PLANE_NONE), + //DS35Q2GAxxx + SPI_ID_NAND(0xE5, 0x72, 2048, 0x20000, SPINAND_QE_NONE, SPINAND_2_PLANE_COLUMN_ADDR_BIT_12_AS_PLANE_SEL), + //MX35LFxGE4AB + SPI_ID_NAND(_SNAND_MXIC_ID, 0x22, 2048, 0x20000, SPINAND_QE_NONE, SPINAND_2_PLANE_COLUMN_ADDR_BIT_12_AS_PLANE_SEL), + +}; + +_THUMB2 BOOL nand_identify(UINT32 uiMfgID, UINT32 uiTypeID, PSPINAND_IDENTIFY pIdentify) +{ + UINT32 ui_nand_ids; + BOOL nand_ids_found = FALSE; + for (ui_nand_ids = 0; ui_nand_ids < (sizeof(nvt_nand_ids) / sizeof(NAND_FLASH_DEV)); ui_nand_ids++) { + if (uiMfgID == nvt_nand_ids[ui_nand_ids].mfr_id && uiTypeID == nvt_nand_ids[ui_nand_ids].dev_id) { + // For SPI Nor flash only + pIdentify->pagesize = nvt_nand_ids[ui_nand_ids].pagesize; + pIdentify->erasesize= nvt_nand_ids[ui_nand_ids].erasesize; + pIdentify->qe_opt = nvt_nand_ids[ui_nand_ids].qe_opt; + pIdentify->plane_opt= nvt_nand_ids[ui_nand_ids].plane_opt; + nand_ids_found = TRUE; + break; + } + } + return nand_ids_found; +} diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c new file mode 100755 index 000000000000..e2b297f2c144 --- /dev/null +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c @@ -0,0 +1,43 @@ +/* + * nand_ids.c + * + * nand id table + * + * Copyright (c) 2018 Novatek, ALL Rights Reserve + */ +#include "main.h" +#include "nor.h" +#include "constant.h" +#include "compiler.h" +#include "mmc_api.h" +#include "spi020.h" +#include "fuart.h" +#include "timer.h" +#include "debug.h" +#include "pll.h" + +#define _THUMB2 __attribute__((target("thumb2"))) + + +NOR_FLASH_DEV nvt_nor_ids[] = { + // manufactor ID device id capacity id, dual read quad type flash size + SPI_ID_NOR(0xEF, 0x40, 0x18, TRUE, SPI_QUAD_TYPE2, (16<<20)), +}; + +_THUMB2 BOOL nor_identify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacityID, PSPI_IDENTIFY pIdentify) +{ + BOOL nor_ids_found = FALSE; + UINT32 ui_nor_ids; + for (ui_nor_ids = 0; ui_nor_ids < (sizeof(nvt_nor_ids) / sizeof(NOR_FLASH_DEV)); ui_nor_ids++) { + if (uiMfgID == nvt_nor_ids[ui_nor_ids].mfr_id && uiTypeID == nvt_nor_ids[ui_nor_ids].dev_id && uiCapacityID == nvt_nor_ids[ui_nor_ids].capacity_id) { + // For SPI Nor flash only + pIdentify->bDualRead = nvt_nor_ids[ui_nor_ids].bDualRead; + pIdentify->uiQuadReadType = nvt_nor_ids[ui_nor_ids].uiQuadReadType; + pIdentify->uiFlashSize = nvt_nor_ids[ui_nor_ids].uiFlashSize; + nor_ids_found = TRUE; + break; + } + } + + return nor_ids_found; +} diff --git a/board/novatek/na51068/loader/LibExt/Makefile b/board/novatek/na51068/loader/LibExt/Makefile new file mode 100755 index 000000000000..c37cab5becbe --- /dev/null +++ b/board/novatek/na51068/loader/LibExt/Makefile @@ -0,0 +1,62 @@ +include ../MakeCommon/MakeOption.txt + +ifeq "$(shell uname)" "Linux" +MAKEFILE_SEARCH := $(sort $(dir $(shell find . -name 'Makefile'))) +else +MAKEFILE_SEARCH := $(sort $(dir $(shell find . -name \'Makefile\'))) +endif +mk_all := $(filter-out ./, $(MAKEFILE_SEARCH)) + +ifeq "$(ISOLATE_DEP)" "ON" +.PHONY: all $(mk_all) clean rebuild debug release dep + +all: + @make dep + @make debug + @make release +else +.PHONY: all $(mk_all) clean rebuild debug release + +all: rm_log $(mk_all) +endif + +$(mk_all): + @$(MAKE) --directory=$@ $(MAKECMDGOALS) + +rm_log: +ifeq "$(CLEAN_LOG)" "ON" + @-rm -f log*.txt +endif + +PRJ_NAME_ALL = $(shell find -name 'Makefile' -not -path "./Makefile" -print | xargs grep "PRJ_NAME" | sed 's/[[:digit:][:alpha:][:punct:]]*:PRJ_NAME[ ]*=[ ]*//g') +LIB_R = $(addprefix "../ARC/Lib/Release/", $(addsuffix ".a", $(PRJ_NAME_ALL))) +LIB_D = $(addprefix "../ARC/Lib/Debug/", $(addsuffix "_D.a", $(PRJ_NAME_ALL))) + +clean: + @-echo Clean LibExt ... \ + && find ./ -type d -name '*_Data' | xargs rm -rf --no-preserve-root $(LIB_D) $(LIB_R) log*.txt lint*.txt + +ifeq "$(ISOLATE_DEP)" "ON" +rebuild: + @make clean + @make dep + @make debug + @make release + +dep: rm_log $(mk_all) +else +rebuild: rm_log $(mk_all) +endif + +debug: rm_log $(mk_all) + +release: rm_log $(mk_all) + +rm_lint_log: + @-rm -f lint*.txt + +lint: rm_lint_log $(mk_all) + +lintclean: + @-echo Clean LibExt lint data ... \ + && find ./ -type d -name 'CheckData' | xargs rm -rf --no-preserve-root lint*.txt \ No newline at end of file diff --git a/board/novatek/na51068/loader/MakeCommon/InputSource.txt b/board/novatek/na51068/loader/MakeCommon/InputSource.txt new file mode 100755 index 000000000000..631265678903 --- /dev/null +++ b/board/novatek/na51068/loader/MakeCommon/InputSource.txt @@ -0,0 +1,177 @@ +#---------------------------------------------------------------------- +# get the source full path, convert upper case extension to lower case +#---------------------------------------------------------------------- +ifeq "$(shell uname)" "Linux" +SRC := $(addprefix $(shell pwd)/, $(SRC:.C=.c)) +ASM := $(addprefix $(shell pwd)/, $(ASM:.s=.S)) +CPP_SRC := $(addprefix $(shell pwd)/, $(CPP_SRC:.CPP=.cpp)) +else +SRC := $(addprefix $(shell cygpath --mixed $(shell pwd))/, $(SRC:.C=.c)) +ASM := $(addprefix $(shell cygpath --mixed $(shell pwd))/, $(ASM:.s=.S)) +CPP_SRC := $(addprefix $(shell cygpath --mixed $(shell pwd))/, $(CPP_SRC:.CPP=.cpp)) +endif + +#---------------------------------------------------------------------- +# set the basic include directories +#---------------------------------------------------------------------- +# Get working directory +MYPWD := $(shell pwd) +ALG_PATH := $(findstring /Alg/, $(MYPWD)) +APP_PATH := $(findstring /App/, $(MYPWD)) +APPEXT_PATH := $(findstring /AppExt/, $(MYPWD)) +LIB_PATH := $(findstring /Lib/, $(MYPWD)) +LIBEXT_PATH := $(findstring /LibExt/, $(MYPWD)) +DRV_PATH := $(findstring /Drv/, $(MYPWD)) +DRVEXT_PATH := $(findstring /DrvExt/, $(MYPWD)) +COM_PATH := $(findstring /Common/, $(MYPWD)) +UTIL_PATH := $(findstring /Common/Common_src/Utility, $(MYPWD)) +PRJ_PATH := $(shell find ./ -maxdepth 1 -name MakeConfig.txt) + +BASE_INC_DIR := $(filter %../../Include, $(INC_DIR)) +APPEXT_INC_DIR := -I$(BASE_INC_DIR)/AppExt +APP_INC_DIR := -I$(BASE_INC_DIR)/App +LIBEXT_INC_DIR := -I$(BASE_INC_DIR)/LibExt +LIB_INC_DIR := -I$(BASE_INC_DIR)/Lib +DRVEXT_INC_DIR := -I$(BASE_INC_DIR)/DrvExt +DRV_INC_DIR := -I$(BASE_INC_DIR)/Drv +LIBC_INC_DIR := -I$(BASE_INC_DIR)/Common/LibC + +#BASE_INC_ALG_DIR := $(BASE_INC_DIR)/../Alg/Include +#BASE_INC_PROTECT_DIR := $(subst Include,IncludeProtected,$(BASE_INC_DIR)) + +#change replace /Include/ to /IncludeProtected/ +define protected +$(subst ../../Include/,../../IncludeProtected/,$1) +endef + + +ifeq "$(USE_ECOS_KERNEL)" "ON" +#eCos include path like ThirdParty/eCos/Include ThirdParty/live555/Include +ECOS_INC_DIR := $(addprefix -I,$(addsuffix /include, $(shell find $(BASE_INC_DIR)/../ThirdParty/ -maxdepth 1 -mindepth 1 -type d))) +endif + +ifeq "$(shell uname)" "Linux" +INC_DIR := $(addprefix -I, $(sort $(dir $(shell find $(INC_DIR) -name '*.h')))) +INC_DIR += $(addprefix -I, $(sort $(dir $(shell find $(BASE_INC_PROTECT_DIR) -name '*.h')))) +INC_DIR += $(addprefix -I, $(sort $(dir $(shell find $(BASE_INC_ALG_DIR) -name '*.h')))) +else +INC_DIR := $(addprefix -I, $(sort $(dir $(shell find $(INC_DIR) -name \'\*\.h\')))) +INC_DIR += $(addprefix -I, $(sort $(dir $(shell find $(BASE_INC_PROTECT_DIR) -name \'\*\.h\')))) +INC_DIR += $(addprefix -I, $(sort $(dir $(shell find $(BASE_INC_ALG_DIR) -name \'\*\.h\')))) +endif + +# For uITRON (MIPS) platform, we use proprietary standard C library. +# We must filter out proprietary header file if we are in others platform (ARM or eCos...) +# Filter out standard C library header file +# ifeq "$(ARCH)" "ARM" +# INC_DIR := $(filter-out $(LIBC_INC_DIR)/%, $(INC_DIR)) +# endif + +ifeq "$(USE_ECOS_KERNEL)" "ON" + INC_DIR := $(filter-out $(LIBC_INC_DIR)/%, $(INC_DIR)) + INC_DIR += $(ECOS_INC_DIR) +endif + +ifeq "$(INCLUDE_RULE)" "ON" + +#---------------------------------------------------------------------- +# Filter out upper layer's include path +#---------------------------------------------------------------------- + + +# /Common can't access /App or /AppExt or /Lib or /LibExt or /Drv or /DrvExt +# except: /Common/Common_src/Utility can access /Drv +ifneq "$(COM_PATH)" "" +ifneq "$(UTIL_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)% $(LIBEXT_INC_DIR)% $(LIB_INC_DIR)% $(DRVEXT_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected, $(APP_INC_DIR)%) $(call protected,$(LIBEXT_INC_DIR)%) $(call protected,$(LIB_INC_DIR)%) $(call protected,$(DRVEXT_INC_DIR)%),$(INC_DIR)) +else +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)% $(LIBEXT_INC_DIR)% $(LIB_INC_DIR)% $(DRVEXT_INC_DIR)% $(DRV_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected, $(APP_INC_DIR)%) $(call protected,$(LIBEXT_INC_DIR)%) $(call protected,$(LIB_INC_DIR)%) $(call protected,$(DRVEXT_INC_DIR)%) $(call protected,$(DRV_INC_DIR)%),$(INC_DIR)) +endif +endif + +# /Drv can't access /App or /AppExt or /Lib or /LibExt +ifneq "$(DRV_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)% $(LIBEXT_INC_DIR)% $(LIB_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected, $(APP_INC_DIR)%) $(call protected,$(LIBEXT_INC_DIR)%) $(call protected,$(LIB_INC_DIR)%),$(INC_DIR)) +endif + +# /DrvExt can't access /App or /AppExt or /Lib or /LibExt +ifneq "$(DRVEXT_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)% $(LIBEXT_INC_DIR)% $(LIB_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected,$(APP_INC_DIR)%) $(call protected,$(LIBEXT_INC_DIR)%) $(call protected,$(LIB_INC_DIR)%), $(INC_DIR)) +endif + +# /Lib can't access /App or /AppExt +ifneq "$(LIB_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected,$(APP_INC_DIR)%), $(INC_DIR)) +endif + +# /LibExt can't access /App or /AppExt +ifneq "$(LIBEXT_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected,$(APP_INC_DIR)%), $(INC_DIR)) +endif + +#---------------------------------------------------------------------- +# Filter out under layer's include path +#---------------------------------------------------------------------- + +# /App can't access /Drv +#ifneq "$(APP_PATH)" "" +#INC_DIR := $(filter-out $(DRV_INC_DIR)%, $(INC_DIR)) +#endif + +# /App can't access /DrvExt or /LibExt +ifneq "$(APP_PATH)" "" +INC_DIR := $(filter-out $(DRVEXT_INC_DIR)% $(LIBEXT_INC_DIR)%, $(INC_DIR)) +endif + +# /AppExt can't access /Drv +#ifneq "$(APPEXT_PATH)" "" +#INC_DIR := $(filter-out $(DRV_INC_DIR)%, $(INC_DIR)) +#endif + +# /Lib can't access /DrvExt +ifneq "$(LIB_PATH)" "" +INC_DIR := $(filter-out $(DRVEXT_INC_DIR)%, $(INC_DIR)) +endif + +# /Prj can't access /Drv or /DrvExt +#ifneq "$(PRJ_PATH)" "" +#INC_DIR := $(filter-out $(DRVEXT_INC_DIR)% $(DRV_INC_DIR)%, $(INC_DIR)) +#endif + +ifneq "$(UI_STYLE)" "" +ifeq ($(filter $(UI_STYLE), $(UI_STYLE_ALL)),) +$(error add your style into $$UI_STYLE_ALL in MakeConfig.txt) +else +PRJ_FILT_OUT := $(filter-out $(UI_STYLE), $(UI_STYLE_ALL)) +endif +PRJ_FILT_OUT_DIR := $(addsuffix %,$(addprefix -I./SrcCode/UIWnd/, $(subst UI_STYLE_,,$(PRJ_FILT_OUT)))) +#INC_DIR := $(shell echo $(INC_DIR)|tr a-z A-Z) +INC_DIR := $(filter-out $(PRJ_FILT_OUT_DIR) , $(INC_DIR)) +endif + +#---------------------------------------------------------------------- +# Filter out external layer's include path +#---------------------------------------------------------------------- + +# /Drv can't access /DrvExt +ifneq "$(DRV_PATH)" "" +INC_DIR := $(filter-out $(DRVEXT_INC_DIR)%, $(INC_DIR)) +endif + +# /Lib can't access /LibExt +ifneq "$(LIB_PATH)" "" +INC_DIR := $(filter-out $(LIBEXT_INC_DIR)%, $(INC_DIR)) +endif + +# /App can't access /AppExt +ifneq "$(APP_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)%, $(INC_DIR)) +endif + +endif \ No newline at end of file diff --git a/board/novatek/na51068/loader/MakeCommon/MakeCommon.txt b/board/novatek/na51068/loader/MakeCommon/MakeCommon.txt new file mode 100755 index 000000000000..13787b96665d --- /dev/null +++ b/board/novatek/na51068/loader/MakeCommon/MakeCommon.txt @@ -0,0 +1,651 @@ +#---------------------------------------------------------------------- +# Get the source full path, include directories +#---------------------------------------------------------------------- +# query SRC, ASM, INC_DIR +include $(MAKE_COMMON_DIR)/InputSource.txt + +#---------------------------------------------------------------------- +# set the basic ASM flags +# PLATFORM_AFLAGS := -march=armv7-a -mcpu=cortex-a9 -mabi=aapcs -msoft-float +# -mfloat-abi=softfp <==> -mfloat-abi=hard +#---------------------------------------------------------------------- +ifeq "$(FPU)" "hard" +PLATFORM_AFLAGS := -mcpu=$(CPU) -mfpu=neon -mfloat-abi=$(FPU) +else +PLATFORM_AFLAGS := -mcpu=$(CPU) -mfloat-abi=$(FPU) +endif + + + +#---------------------------------------------------------------------- +# set the basic C flags +# Reference +# http://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/ +# http://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/Option-Summary.html#Option-Summary +#---------------------------------------------------------------------- +#---------------------------------------------------------------------- +# Overall Options +#---------------------------------------------------------------------- +# -c : Compile the source files, but do not link +# -pipe : Use pipes rather than temporary files for communication between the various stages of compilation +PLATFORM_CFLAGS := -c -pipe + +#---------------------------------------------------------------------- +# Machine Dependent Options +#---------------------------------------------------------------------- +# -march=24kec : Generate code that will run on MIPS 24KEc +# -mtune=24kec : Optimize for MIPS 24KEc +# -mdsp : Use revision 1 of the MIPS DSP ASE +# -EL : Generate little-endian code +# -msoft-float : Do not use floating-point coprocessor instructions +# -marm : Tell compiler do not build c code as thumb2 instruction +#---------------------------------------------------------------------- +ifeq "$(USE_NEON)" "on" +PLATFORM_CFLAGS += -mcpu=$(CPU) -marm -mno-thumb-interwork -mfloat-abi=softfp -mfpu=neon-fp-armv8 -ftree-vectorize +else +ifeq "$(FPU)" "hard" +PLATFORM_CFLAGS += -mcpu=$(CPU) -marm -mno-thumb-interwork -mfloat-abi=$(FPU) -mfpu=neon -ftree-vectorize +else +PLATFORM_CFLAGS += -mcpu=$(CPU) -marm -mno-thumb-interwork -mfloat-abi=$(FPU) +endif +endif +# PLATFORM_CFLAGS += -mtune=$(CPU) -march=armv7-a -marm -mhard-float -mfpu=neon-vfpv4 -mno-thumb-interwork -mno-sched-prolog +# PLATFORM_CFLAGS += -mtune=$(CPU) -march=armv7-a -marm -msoft-float -mno-thumb-interwork -mno-sched-prolog + +#---------------------------------------------------------------------- +# Warning Options +#---------------------------------------------------------------------- +# -Wall : This enables all the warnings about constructions that some users consider questionable, +# and that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. +# NOTE: -Wall turns on the following warning flags: +# -Waddress +# -Warray-bounds (only with -O2) +# -Wc++11-compat +# -Wchar-subscripts +# -Wenum-compare (in C/ObjC; this is on by default in C++) +# -Wimplicit-int (C and Objective-C only) +# -Wimplicit-function-declaration (C and Objective-C only) +# -Wcomment +# -Wformat +# -Wmain (only for C/ObjC and unless -ffreestanding) +# -Wmaybe-uninitialized +# -Wmissing-braces (only for C/ObjC) +# -Wnonnull +# -Wparentheses +# -Wpointer-sign +# -Wreorder +# -Wreturn-type +# -Wsequence-point +# -Wsign-compare (only in C++) +# -Wstrict-aliasing +# -Wstrict-overflow=1 +# -Wswitch +# -Wtrigraphs +# -Wuninitialized +# -Wunknown-pragmas +# -Wunused-function +# -Wunused-label +# -Wunused-value +# -Wunused-variable +# -Wvolatile-register-var +# -Wundef : Warn if an undefined identifier is evaluated in an `#if' directive +# -Wsign-compare : Warn when a comparison between signed and unsigned values could produce an incorrect result when the signed value is converted to unsigned +# -Wno-missing-braces : Trun off "Warn if an aggregate or union initializer is not fully bracketed". For XXX = {0}; statement. +# -Wstrict-prototypes : Warn if a function is declared or defined without specifying the argument types +# -Wimplicit-function-declaration : Warn when a function is used before being declared +# -Wmissing-prototypes : Warn about global funcs without prototypes +# -Wmissing-declarations: Warn about global funcs without previous declarations +# -Werror : Warnning as error +#---------------------------------------------------------------------- +PLATFORM_CFLAGS += -Wall -Wundef -Wsign-compare -Wno-missing-braces -Wstrict-prototypes -Wno-unused-const-variable -Wno-misleading-indentation +ifeq "$(OUTPUT_FILE)" "BIN" +else +ifeq "$(INCLUDE_RULE)" "ON" +# PLATFORM_CFLAGS += -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=missing-declarations + PLATFORM_CFLAGS += -Wimplicit-function-declaration -Wmissing-prototypes -Wmissing-declarations +endif +endif + +ifeq "$(shell uname)" "Linux" +PLATFORM_CFLAGS += -Werror +endif + +#---------------------------------------------------------------------- +# C Language Options +#---------------------------------------------------------------------- +# -fno-builtin : Don't recognize built-in functions that do not begin with `__builtin_' as prefix +# -ffreestanding: Assert that compilation takes place in a freestanding environment +#---------------------------------------------------------------------- +# Code Generation Options +#---------------------------------------------------------------------- +# -fno-common : The compiler should place uninitialized global variables in the data section of the object file, rather than generating them as common blocks +# -fshort-wchar : Override the underlying type for `wchar_t' to be `short unsigned int' instead of the default for the target. +#---------------------------------------------------------------------- +# Optimization Options +#---------------------------------------------------------------------- +# -fno-strict-aliasing : Do not warn about code that breaks strict aliasing rules +# -fno-optimize-sibling-calls : Don't optimize sibling and tail recursive calls +# -fno-omit-frame-pointer : Keep the frame pointer in a register for functions that don't need one +#---------------------------------------------------------------------- +PLATFORM_CFLAGS += -fno-builtin -ffreestanding -fno-common -fshort-wchar -fno-strict-aliasing -fno-optimize-sibling-calls -fno-omit-frame-pointer + +# C Language Options for eCos system +ifeq "$(USE_ECOS_KERNEL)" "ON" + PLATFORM_CFLAGS += -D__ECOS +else + PLATFORM_CFLAGS += -nostdinc -D__UITRON +# For make dep + GCCFLAGS +=-D__UITRON +endif + +#8313 +MFLAGS = -DPLATFORM_8321 +#MFLAGS = -DDDR0_1800_SZ_4Gbx2 -DDDR1_1800_SZ_4Gb -DPLATFORM_8313 +#MFLAGS = -DDDR0_1800_SZ_4Gbx2 -DDDR1_1800_SZ_2Gb -DPLATFORM_8313 +#MFLAGS = -DDDR0_1800_SZ_4Gbx2 -DDDR1_1800_SZ_1Gb -DPLATFORM_8313 + +# Remove -Otime (There is no such option in GCC, GCC default is optimize for time) +# Replace -OSpace (-Os in GCC) +CFLAGS_D := $(filter-out -Otime, $(CFLAGS_D)) +CFLAGS_D := $(CFLAGS_D:-Ospace=-Os) +CFLAGS_R := $(filter-out -Otime, $(CFLAGS_R)) +CFLAGS_R := $(CFLAGS_R:-Ospace=-Os) + +# Slove sub-folder cannot include parent folder header file +INC_DIR += -I$(CURDIR) + +# For Debug target +CFLAGS_D += $(INC_DIR) -g -ggdb -O0 $(PLATFORM_CFLAGS) $(MFLAGS) +ASMFLAGS_D += -g $(INC_DIR) $(PLATFORM_AFLAGS) -D__ASSEMBLY__ $(MFLAGS) + +# For Release target (use -Os instead of -O2, because loader is size dominant) +CFLAGS_R += $(INC_DIR) -Os $(PLATFORM_CFLAGS) $(MFLAGS) +ASMFLAGS_R += $(INC_DIR) $(PLATFORM_AFLAGS) -D__ASSEMBLY__ $(MFLAGS) + +# Generate debug symbol in release target +ifeq "$(RELEASE_SYMBOL)" "ON" + CFLAGS_R += -g -ggdb + ASMFLAGS_R += -L -g +endif + +# Generate debug callback of entry and exit to functions +ifeq "$(INSTRUMENT_FUNCTION)" "ON" + CFLAGS_R += -finstrument-functions -finstrument-functions-exclude-file-list=Common_src/LibC,Common_src/Kernel,Common_src/Debug,Common_src/OS,Include/Common/LibC,Include/Common/Kernel,Include/Common/Debug,Include/Common/OS,Drv_src/Driver,Include/Drv/Driver + CFLAGS_D += -finstrument-functions -finstrument-functions-exclude-file-list=Common_src/LibC,Common_src/Kernel,Common_src/Debug,Common_src/OS,Include/Common/LibC,Include/Common/Kernel,Include/Common/Debug,Include/Common/OS,Drv_src/Driver,Include/Drv/Driver + CFLAGS_R += -D_INSTRUMENT_FUNCTION_=1 + CFLAGS_D += -D_INSTRUMENT_FUNCTION_=1 +else + CFLAGS_R += -D_INSTRUMENT_FUNCTION_=0 + CFLAGS_D += -D_INSTRUMENT_FUNCTION_=0 +endif + +#---------------------------------------------------------------------- +# Generate one ELF section for each function +# Only apply to release target +# Note: -fdata-sections will generate larger code size +#---------------------------------------------------------------------- +ifeq "$(SECTION_BY_FUNC)" "ON" +# CFLAGS_R += -ffunction-sections -fdata-sections + CFLAGS_R += -ffunction-sections +endif + +#---------------------------------------------------------------------- +# Definition for source code check build debug or release +#---------------------------------------------------------------------- +CFLAGS_R += -DNDEBUG +CFLAGS_D += -D_DEBUG + +#---------------------------------------------------------------------- +# FPGA notification for drivers +#---------------------------------------------------------------------- +ifeq "$(EMULATION)" "ON" + ifeq "$(FPGA_EMULATION)" "ON" + CFLAGS_R += -D_EMULATION_=1 -D_FPGA_EMULATION_=1 -D_FPGA_PLL_OSC_=$(FPGA_PLL_OSC) + CFLAGS_D += -D_EMULATION_=1 -D_FPGA_EMULATION_=1 -D_FPGA_PLL_OSC_=$(FPGA_PLL_OSC) + GCCFLAGS += -D_EMULATION_=1 -D_FPGA_EMULATION_=1 -D_FPGA_PLL_OSC_=$(FPGA_PLL_OSC) + else + CFLAGS_R += -D_EMULATION_=1 -D_FPGA_EMULATION_=0 + CFLAGS_D += -D_EMULATION_=1 -D_FPGA_EMULATION_=0 + GCCFLAGS += -D_EMULATION_=1 -D_FPGA_EMULATION_=0 + endif +else + CFLAGS_R += -D_EMULATION_=0 -D_FPGA_EMULATION_=0 + CFLAGS_D += -D_EMULATION_=0 -D_FPGA_EMULATION_=0 + GCCFLAGS += -D_EMULATION_=0 -D_FPGA_EMULATION_=0 +endif + +#---------------------------------------------------------------------- +# PM demo based on customized building way +#---------------------------------------------------------------------- +ifeq "$(PM_DEMO)" "ON" + CFLAGS_R += -D_PM_DEMO_=1 + CFLAGS_D += -D_PM_DEMO_=1 +else + CFLAGS_R += -D_PM_DEMO_=0 + CFLAGS_D += -D_PM_DEMO_=0 +endif + +#---------------------------------------------------------------------- +# GIC usage ON/OFF +#---------------------------------------------------------------------- +ifeq "$(ARM_GIC_400)" "ON" + CFLAGS_R += -D_ARM_GIC_USAGE_=1 + CFLAGS_D += -D_ARM_GIC_USAGE_=1 + ASMFLAGS_R += -D_ARM_GIC_USAGE_=1 + ASMFLAGS_D += -D_ARM_GIC_USAGE_=1 +else + CFLAGS_R += -D_ARM_GIC_USAGE_=0 + CFLAGS_D += -D_ARM_GIC_USAGE_=0 + ASMFLAGS_R += -D_ARM_GIC_USAGE_=0 + ASMFLAGS_D += -D_ARM_GIC_USAGE_=0 +endif + +#---------------------------------------------------------------------- +# Architecture definition +#---------------------------------------------------------------------- +CFLAGS_R += -D_ARCH_ARM_=0 -D_ARCH_MIPS_=1 +CFLAGS_D += -D_ARCH_ARM_=0 -D_ARCH_MIPS_=1 +GCCFLAGS += -D_ARCH_ARM_=0 -D_ARCH_MIPS_=1 + +ifeq "$(ARCH)" "ARM" + CFLAGS_R += -D_ARCH_=_ARCH_ARM_ + CFLAGS_D += -D_ARCH_=_ARCH_ARM_ + GCCFLAGS += -D_ARCH_=_ARCH_ARM_ +else ifeq "$(ARCH)" "MIPS" + CFLAGS_R += -D_ARCH_=_ARCH_MIPS_ + CFLAGS_D += -D_ARCH_=_ARCH_MIPS_ + GCCFLAGS += -D_ARCH_=_ARCH_MIPS_ +endif + +ifeq "$(FPU)" "hard" +ASMFLAGS_D += -D_NEON_ON_=1 +ASMFLAGS_R += -D_NEON_ON_=1 +else +ASMFLAGS_D += -D_NEON_ON_=0 +ASMFLAGS_R += -D_NEON_ON_=0 +endif + +ifeq "$(CPU)" "cortex-a9" +CFLAGS_R += -D_ARM_V8_=0 +CFLAGS_D += -D_ARM_V8_=0 +ASMFLAGS_R += -D_ARM_V8_=0 +ASMFLAGS_D += -D_ARM_V8_=0 +else +CFLAGS_R += -D_ARM_V8_=1 +CFLAGS_D += -D_ARM_V8_=1 +ASMFLAGS_R += -D_ARM_V8_=1 +ASMFLAGS_D += -D_ARM_V8_=1 +endif + + +#---------------------------------------------------------------------- +# Definition from environment +#---------------------------------------------------------------------- +ifeq "$(NMAKE_DEF)" "" +CFLAGS_R += -D_EMULATION_ON_CPU2_=0 -D_EMULATION_MULTI_CPU_=0 +CFLAGS_D += -D_EMULATION_ON_CPU2_=0 -D_EMULATION_MULTI_CPU_=0 +else +CFLAGS_R += $(NMAKE_DEF) +CFLAGS_D += $(NMAKE_DEF) +endif +ifeq "$(NMAKE_DEF_ASM)" "" +ASMFLAGS_R += -D_EMULATION_ON_CPU2_=0 -D_EMULATION_MULTI_CPU_=0 +ASMFLAGS_D += -D_EMULATION_ON_CPU2_=0 -D_EMULATION_MULTI_CPU_=0 +else +ASMFLAGS_R += $(NMAKE_DEF_ASM) +ASMFLAGS_D += $(NMAKE_DEF_ASM) +endif +#---------------------------------------------------------------------- +# Set image base directory according to kernel type +# eCos : /ARC +# uITRON : /ARC_eCos +#---------------------------------------------------------------------- +ifeq "$(USE_ECOS_KERNEL)" "ON" + ifeq "$(OUTPUT_FILE)" "LIB" + # This is for library, project's image base directory is $(PRJ_NAME)_Data + # IMG_BASE_DIR looks like ../../ARC/Common (There is backslash succeeding to /ARC) + IMG_BASE_DIR := $(subst /ARC/,/ARC_eCos/,$(IMG_BASE_DIR)) + endif + ifeq "$(OUTPUT_FILE)" "BIN" + # This is for project, library doesn't have this variable + # ARC_BASE_DIR looks like ../../ARC (There is No backslash succeeding to /ARC) + ARC_BASE_DIR := $(subst /ARC,/ARC_eCos,$(ARC_BASE_DIR)) + endif + KERNEL_STR := eCos +else + KERNEL_STR := uITRON +endif + +#---------------------------------------------------------------------- +# Set branched project name +#---------------------------------------------------------------------- +ifneq "$(_BRANCH_PROJECT_)" "" + CFLAGS_R += -D_PROJECT_CODE_=$(_BRANCH_PROJECT_) + CFLAGS_D += -D_PROJECT_CODE_=$(_BRANCH_PROJECT_) +endif + +#---------------------------------------------------------------------- +# Set the directory for debug/release objects and images here +#---------------------------------------------------------------------- +OBJ_DEBUG = $(PRJ_NAME)_Data/Debug/ObjectCode +OBJ_RELEASE = $(PRJ_NAME)_Data/Release/ObjectCode +IMG_DEBUG = $(IMG_BASE_DIR)/Debug +IMG_RELEASE = $(IMG_BASE_DIR)/Release + + +#---------------------------------------------------------------------- +# Filter the GCC Command Options for debug/release mode +#---------------------------------------------------------------------- +FILTER_GCC_D = $(foreach v, $(CFLAGS_D), $(if $(findstring -D, $(v)), , $(v))) +GCC_OPT_D = $(filter-out $(INC_DIR), $(FILTER_GCC_D)) +FILTER_GCC_R = $(foreach v, $(CFLAGS_R), $(if $(findstring -D, $(v)), , $(v))) +GCC_OPT_R = $(filter-out $(INC_DIR), $(FILTER_GCC_R)) + + +#---------------------------------------------------------------------- +# Set the make outputs +#---------------------------------------------------------------------- +SRC_OBJ_D := $(addprefix $(OBJ_DEBUG)/, $(notdir $(SRC:.c=.o))) +ASM_OBJ_D := $(addprefix $(OBJ_DEBUG)/, $(notdir $(ASM:.S=.o))) +CPP_OBJ_D := $(addprefix $(OBJ_DEBUG)/, $(notdir $(CPP_SRC:.cpp=.o))) +ALL_OBJ_D := $(ASM_OBJ_D) $(SRC_OBJ_D) $(CPP_OBJ_D) +DEPFILE_D := $(subst .o,.d,$(ALL_OBJ_D)) + +SRC_OBJ_R := $(addprefix $(OBJ_RELEASE)/, $(notdir $(SRC:.c=.o))) +ASM_OBJ_R := $(addprefix $(OBJ_RELEASE)/, $(notdir $(ASM:.S=.o))) +CPP_OBJ_R := $(addprefix $(OBJ_RELEASE)/, $(notdir $(CPP_SRC:.cpp=.o))) +ALL_OBJ_R := $(ASM_OBJ_R) $(SRC_OBJ_R) $(CPP_OBJ_R) +DEPFILE_R := $(subst .o,.d,$(ALL_OBJ_R)) + +ifeq "$(ISOLATE_DEP)" "ON" + ALL_DEP := $(DEPFILE_D) $(DEPFILE_R) +endif + +LINT_ROOTDIR = $(PRJ_NAME)_Lint +LINT_DIR = $(PRJ_NAME)_Lint/LintData +LINT_FILE := $(addprefix $(LINT_DIR)/, $(notdir $(SRC:.c=.lob))) + +#---------------------------------------------------------------------- +# For dependency +#---------------------------------------------------------------------- +GCCFLAGS += $(INC_DIR) -c -w + +#---------------------------------------------------------------------- +# For coding rule +#---------------------------------------------------------------------- +PCLINTFLAGS = $(PCLINT_PARAMETER) $(C_DEFINE_EXT) $(INC_DIR) -i$(MAKE_COMMON_DIR)/LintRule std.lnt options.lnt $$(lintopt_file) + +#---------------------------------------------------------------------- +# define host environment is linux if we build on linux server +#---------------------------------------------------------------------- +ifeq ($(OS),Linux) +CFLAGS_R += -D_HOST_ENV_LINUX_ +CFLAGS_D += -D_HOST_ENV_LINUX_ +GCCFLAGS += -D_HOST_ENV_LINUX_ +endif + +#---------------------------------------------------------------------- +# CPP FLAGS derived from CFLAGS_R / CFLAGS_D +#---------------------------------------------------------------------- +CPPFLAGS_R = $(filter-out -Wstrict-prototypes -Wimplicit-function-declaration -Wmissing-prototypes, $(CFLAGS_R)) +CPPFLAGS_D = $(filter-out -Wstrict-prototypes -Wimplicit-function-declaration -Wmissing-prototypes, $(CFLAGS_D)) + +#---------------------------------------------------------------------- +# Set the make targets +#---------------------------------------------------------------------- +build_all: rm_log build_D build_R + +make_debug_begin: + @-echo \ + && echo Checking $(KERNEL_STR) - $(basename $(notdir $(IMAGE_D))) debug target ... \ + && mkdir -p $(IMG_DEBUG) $(OBJ_DEBUG) + +make_release_begin: + @-echo \ + && echo Checking $(KERNEL_STR) - $(basename $(notdir $(IMAGE_R))) release target ... \ + && mkdir -p $(IMG_RELEASE) $(OBJ_RELEASE) + +make_dep_begin: + @-echo Checking $(basename $(notdir $(IMAGE_R))) dependency ... \ + && mkdir -p $(OBJ_DEBUG) $(OBJ_RELEASE) + +make_lint_begin: + @-echo Checking \"$(basename $(notdir $(IMAGE_R)))\" with coding rules ... \ + && mkdir -p $(LINT_DIR) + +make_option_begin: + @-echo [GCC Command Options - Release] + @-echo $(GCC_OPT_R) + @-echo + @-echo [GCC Command Options - Debug ] + @-echo $(GCC_OPT_D) + +#---------------------------------------------------------------------- +# Compile rule functions +#---------------------------------------------------------------------- +BUILD_DATE = 20`date +'%y%m%d'` +ifeq "$(ISOLATE_DEP)" "ON" + + # $(call compile_rule,object,source,cflags) + define compile_rule + $1: $2 + @echo Compiling $(notdir $2)\ + && $(CC) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + + # $(call compile_rule_asm,object,source,asmflags) + define compile_rule_asm + $1: $2 + @echo Compiling $(notdir $2) \ + && $(CC) $(PLATFORM_AFLAGS) -c $3 -o $1 $2 $$(LOG_OPTION) + + endef + + # $(call compile_rule_cpp,object,source,cflags) + define compile_rule_cpp + $1: $2 + @echo Compiling $(notdir $2) \ + && $(CXX) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + +else + + # $(call compile_rule,object,source,cflags) + define compile_rule + $1: $2 + @-$(GCC) -MM -MF $(basename $1).d -MP -MT $1 $(GCCFLAGS) $2 \ + && echo Compiling $(notdir $2) + @$(CC) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + + # $(call compile_rule_asm,object,source,asmflags) + define compile_rule_asm + $1: $2 + @-$(GCC) -MM -MF $(basename $1).d -MP -MT $1 $(GCCFLAGS) $2 \ + && echo Compiling $(notdir $2) + @$(CC) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + + # $(call compile_cpp,object,source,cflags) + define compile_rule_cpp + $1: $2 + @-$(CXX) -MM -MF $(basename $1).d -MP -MT $1 $(GCCFLAGS) $2 \ + && echo Compiling $(notdir $2) + @$(CXX) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + +endif + +# $(call get_obj,obj_dir,source) +get_obj = $(addprefix $1/, $(subst .c,.o,$(notdir $2))) + +# $(call get_obj_asm,obj_dir,source) +get_obj_asm = $(addprefix $1/, $(subst .S,.o,$(notdir $2))) + +# $(call get_obj,obj_dir,source) +get_obj_cpp = $(addprefix $1/, $(subst .cpp,.o,$(notdir $2))) + +# $(call compile_all,obj_dir,cflags) +define compile_all +$(foreach i, $(SRC), \ + $(call compile_rule,$(call get_obj,$1,$i),$i,$2)) +endef + +# $(call compile_all_asm,obj_dir,asmflags) +define compile_all_asm +$(foreach i, $(ASM), \ + $(call compile_rule_asm,$(call get_obj_asm,$1,$i),$i,$2)) +endef + +# $(call compile_all_cpp,obj_dir,cflags) +define compile_all_cpp +$(foreach i, $(CPP_SRC), \ + $(call compile_rule_cpp,$(call get_obj_cpp,$1,$i),$i,$2)) +endef + +#----------------------------------------------------------------- +# Dependency rule functions +#----------------------------------------------------------------- +# $(call depend_rule,depend,source) +define depend_rule +$1: $2 + @echo Depending $(notdir $2) \ + && $(GCC) -MM -MF $1 -MP -MT $(basename $1).o $(GCCFLAGS) $2 \ + && sed -e 's/_Data\/Debug\//_Data\/Release\//1' $1 > $(subst _Data/Debug/,_Data/Release/,$1) + +endef + +define depend_rule_asm +$1: $2 + @echo Depending $(notdir $2) \ + && $(GCC) -MM -MF $(basename $1).d -MP -MT $1 $(GCCFLAGS) $2 \ + && sed -e 's/_Data\/Debug\//_Data\/Release\//1' $1 > $(subst _Data/Debug/,_Data/Release/,$1) \ + && rm -f $(basename $1).o + +endef + +define depend_rule_cpp +$1: $2 + @echo Depending $(notdir $2) \ + && $(CXX) -MM -MF $1 -MP -MT $(basename $1).o $(GCCFLAGS) $2\ + && sed -e 's/_Data\/Debug\//_Data\/Release\//1' $1 > $(subst _Data/Debug/,_Data/Release/,$1) + +endef + +# $(call get_dep,dep_dir,source) +get_dep = $(addprefix $1/, $(subst .c,.d,$(notdir $2))) + +# $(call get_dep_asm,dep_dir,source) +get_dep_asm = $(addprefix $1/, $(subst .S,.d,$(notdir $2))) + +# $(call get_dep_cpp,dep_dir,source) +get_dep_cpp = $(addprefix $1/, $(subst .cpp,.d,$(notdir $2))) + +define depend_all +$(foreach i, $(SRC), \ + $(call depend_rule,$(call get_dep,$1,$i),$i)) +endef + +# $(call dep_all_asm,dep_dir) +define depend_all_asm +$(foreach i, $(ASM), \ + $(call depend_rule_asm,$(call get_dep_asm,$1,$i),$i)) +endef + +define depend_all_cpp +$(foreach i, $(CPP_SRC), \ + $(call depend_rule_cpp,$(call get_dep_cpp,$1,$i),$i)) +endef + +#---------------------------------------------------------------------- +# LINT rule functions +#---------------------------------------------------------------------- +# $(call get_lint,lint_dir,source) +get_lint = $(addprefix $1/, $(subst .c,.lob,$(notdir $2))) + +# $(call lint_rule,output,source) +define lint_rule +$1: $2 + @-echo Review $(notdir $2) \ + && $(LT) $(PCLINTFLAGS) -u -zero -oo[$1] $2 >> $$(lint_file) + +endef + +# && $(LT) $(PCLINTFLAGS) $2 >> $$(lint_file) + +define lint_all +$1: +$(foreach i, $(SRC), \ + $(call lint_rule,$(call get_lint,$1,$i),$i)) + @-echo Review \(Internal Relation\) \ + && $(LT) $(PCLINTFLAGS) $(LINT_DIR)/"*.lob" >> $$(lint_file) + -rm -rf --no-preserve-root $(LINT_ROOTDIR) + +endef + +#---------------------------------------------------------------------- +# Goals +#---------------------------------------------------------------------- +ifeq "$(ISOLATE_DEP)" "ON" + + ifeq "$(MAKECMDGOALS)" "dep" + $(eval $(call depend_all,$(OBJ_RELEASE))) + $(eval $(call depend_all_asm,$(OBJ_RELEASE))) + $(eval $(call depend_all_cpp,$(OBJ_RELEASE))) + $(eval $(call depend_all,$(OBJ_DEBUG))) + $(eval $(call depend_all_asm,$(OBJ_DEBUG))) + $(eval $(call depend_all_cpp,$(OBJ_DEBUG))) + endif + + ifeq "$(MAKECMDGOALS)" "" + .DEFAULT_GOAL := all + endif + +else + + ifeq "$(MAKECMDGOALS)" "" + -include $(DEPFILE_D) + -include $(DEPFILE_R) + $(eval $(call compile_all,$(OBJ_DEBUG),$(CFLAGS_D))) + $(eval $(call compile_all,$(OBJ_RELEASE),$(CFLAGS_R))) + $(eval $(call compile_all_asm,$(OBJ_DEBUG),$(ASMFLAGS_D))) + $(eval $(call compile_all_asm,$(OBJ_RELEASE),$(ASMFLAGS_R))) + $(eval $(call compile_all_cpp,$(OBJ_DEBUG),$(CPPFLAGS_D))) + $(eval $(call compile_all_cpp,$(OBJ_RELEASE),$(CPPFLAGS_R))) + endif + + ifeq "$(MAKECMDGOALS)" "rebuild" + -include $(DEPFILE_D) + -include $(DEPFILE_R) + $(eval $(call compile_all,$(OBJ_DEBUG),$(CFLAGS_D))) + $(eval $(call compile_all,$(OBJ_RELEASE),$(CFLAGS_R))) + $(eval $(call compile_all_asm,$(OBJ_DEBUG),$(ASMFLAGS_D))) + $(eval $(call compile_all_asm,$(OBJ_RELEASE),$(ASMFLAGS_R))) + $(eval $(call compile_all_cpp,$(OBJ_DEBUG),$(CPPFLAGS_D))) + $(eval $(call compile_all_cpp,$(OBJ_RELEASE),$(CPPFLAGS_R))) + endif + +endif + +ifeq ($(MAKECMDGOALS), $(filter $(MAKECMDGOALS),debug build_pipe_D)) + -include $(DEPFILE_D) + $(eval $(call compile_all,$(OBJ_DEBUG),$(CFLAGS_D))) + $(eval $(call compile_all_asm,$(OBJ_DEBUG),$(ASMFLAGS_D))) + $(eval $(call compile_all_cpp,$(OBJ_DEBUG),$(CPPFLAGS_D))) +endif + +ifeq ($(MAKECMDGOALS), $(filter $(MAKECMDGOALS),release build_pipe_R)) + -include $(DEPFILE_R) + $(eval $(call compile_all,$(OBJ_RELEASE),$(CFLAGS_R))) + $(eval $(call compile_all_asm,$(OBJ_RELEASE),$(ASMFLAGS_R))) + $(eval $(call compile_all_cpp,$(OBJ_RELEASE),$(CPPFLAGS_R))) +endif + +ifeq "$(MAKECMDGOALS)" "lint" + $(eval $(call lint_all,$(LINT_DIR))) +endif diff --git a/board/novatek/na51068/loader/MakeCommon/MakeOption.txt b/board/novatek/na51068/loader/MakeCommon/MakeOption.txt new file mode 100755 index 000000000000..38dfdf15975f --- /dev/null +++ b/board/novatek/na51068/loader/MakeCommon/MakeOption.txt @@ -0,0 +1,278 @@ +ifeq "$(OPTION_LOADED)" "" + +#---------------------------------------------------------------------- +# Set option file loaded +#---------------------------------------------------------------------- +export OPTION_LOADED := TRUE + +#---------------------------------------------------------------------- +# Set the target CPU architecture +# +# ARM : ARM CPU +# MIPS : MIPS CPU (24KEc) +#---------------------------------------------------------------------- +export ARCH := ARM +#export ARCH := MIPS + +#---------------------------------------------------------------------- +# Set the toolchain +# +# ARM : ARM ADS, RealView +# GNU : GNU C, ASM and linker +#---------------------------------------------------------------------- +#export TOOLCHAIN := ARM +export TOOLCHAIN := GNU + +#---------------------------------------------------------------------- +# Set the floating point +# +# SW/HW : soft or hard float point unit +#---------------------------------------------------------------------- +#export FPU := hard +export FPU := soft + +#---------------------------------------------------------------------- +# Set the CPU type +# +# cortex-a9 or a53 +#---------------------------------------------------------------------- +export CPU := cortex-a9 +#export CPU := cortex-a53 + + +#---------------------------------------------------------------------- +# Set branched project code +# +# The project code must be 4 characters, please refer to +# http://mynvt.novatek.com.tw/deptsites/IM/Shared%20Documents/VersionControl.doc +# for more detailed information. +# Leaves this variable empty if not branched yet. +#---------------------------------------------------------------------- +export _BRANCH_PROJECT_ := + +#---------------------------------------------------------------------- +# PClint parameters +#---------------------------------------------------------------------- +export PCLINT_PARAMETER := -b -v + +#---------------------------------------------------------------------- +# Set log file option +# +# ON : Save warning/error message to log files (Win32 Default) +# OFF : Just output warning/error message to stdout (Linux Default) +#---------------------------------------------------------------------- +ifeq "$(shell uname)" "Linux" +export LOG_ERR := OFF +else +export LOG_ERR := ON +endif + +#---------------------------------------------------------------------- +# Set clean log file option +# +# ON : Clean log files before make +# OFF : Don't clean log files before make +# (You should execute "make clean" to clean the log files) +#---------------------------------------------------------------------- +export CLEAN_LOG := ON +#export CLEAN_LOG := OFF + +#---------------------------------------------------------------------- +# Keep going when encounter error or not +# +# ON : Make will keep going when encounter error +# OFF : Make will stop when encounter error +#---------------------------------------------------------------------- +#export KEEP_GOING := ON +export KEEP_GOING := OFF + +#---------------------------------------------------------------------- +# Isolate creating dependency files process +# +# ON : You have to run "make dep" to create dependency files +# OFF : dependency file will be created when making the file +#---------------------------------------------------------------------- +export ISOLATE_DEP := ON +#export ISOLATE_DEP := OFF + +#---------------------------------------------------------------------- +# Generate debug symbol in release target +# Release target won't generate debug symbol by default, if you want to +# generate debug symbol in release target, please turn on this option +# +# ON : Generate debug symbol in release target +# OFF : Don't generate debug symbol in release target (default value) +#---------------------------------------------------------------------- +#export RELEASE_SYMBOL := ON +export RELEASE_SYMBOL := OFF + +#---------------------------------------------------------------------- +# Generate debug callback of entry and exit to functions +# Only support on MIPS (This is GCC Extension) +# Reference: http://blog.linux.org.tw/~jserv/archives/001870.html +# +# ON : Generate debug callback +# OFF : Don't generate debug callback (default value) +#---------------------------------------------------------------------- +#export INSTRUMENT_FUNCTION := ON +export INSTRUMENT_FUNCTION := OFF + +#---------------------------------------------------------------------- +# Generate one ELF section for each function +# Compiler will generate one ELF section for one .c file by default. +# If the .c file contains lots of function that are unused, turn on +# this function can reduce code size. +# (Linker will remove unused section by default) +# Valid only in release target +# +# ON : One ELF section for each function +# OFF : One ELF section for each .c file (default value of ADS/GNU C compiler) +#---------------------------------------------------------------------- +export SECTION_BY_FUNC := ON +#export SECTION_BY_FUNC := OFF + +#---------------------------------------------------------------------- +# Copy bin file to storage after bin file is created +# You have to set an environment variable named "NVT_STG_PATH" (without +# quote) to work with this function. +# Example: set "NVT_STG_PATH" to "H:/" (without quote). +# +# ON : Copy bin file to storage after bin file is created +# OFF : Don't copy bin file to storage after bin file is created +#---------------------------------------------------------------------- +export COPY_BIN_2_STG := ON +#export COPY_BIN_2_STG := OFF + +#---------------------------------------------------------------------- +# Select emulation or design-in (Release code) environment +# +# ON : Emulation environment +# OFF : Design-in environment +#---------------------------------------------------------------------- +export EMULATION := ON +#export EMULATION := OFF + +#---------------------------------------------------------------------- +# Select FPGA or Realchip platform for emulation. +# Valid only when EMULATION is ON +# +# ON : FPGA platform +# OFF : Realchip platform +#---------------------------------------------------------------------- +#export FPGA_EMULATION := ON +export FPGA_EMULATION := OFF + +#---------------------------------------------------------------------- +# Set PLL OSC frequency for FPGA EMULATION +# Valid only when FPGA_EMULATION is ON +# +# For example, you should set it to 27000000 if your FPGA is connected +# with a 27 MHz OSC. +#---------------------------------------------------------------------- +export FPGA_PLL_OSC := 24000000 + +#---------------------------------------------------------------------- +# Set INCLUDE RULE +# +# ON : Enable include rule checking of platform +# OFF : Disable include rule checking of platform +#---------------------------------------------------------------------- +export INCLUDE_RULE := ON +#export INCLUDE_RULE := OFF + +#---------------------------------------------------------------------- +# Use eCos kernel or uITRON kernel +# +# ON : Use eCos kernel and light weight uITRON kernel compatible wrapper +# OFF : Use light weight uITRON kernel +#---------------------------------------------------------------------- +#export USE_ECOS_KERNEL := ON +export USE_ECOS_KERNEL := OFF + +#---------------------------------------------------------------------- +# PM demo based on customized building way +# +# ON : compile rule depends on _PM_DEMO_ that is informal way. +# OFF : formal way to build code +#---------------------------------------------------------------------- +#export PM_DEMO := ON +export PM_DEMO := OFF + +#---------------------------------------------------------------------- +# Set the dump encrypt binary tool +# +# ARCH := ARM 'Use ARMv4 as target +# ARCH := MIPS 'Use MIPS24Ke as target +#---------------------------------------------------------------------- +export ENCRYPT_DUMP := ON +#export ENCRYPT_DUMP := OFF + +#---------------------------------------------------------------------- +# Use ARM GIC as interrupt controller +# +# ON : Use GIC +# OFF : Use Lagacy interrupt as interrupt controller +#---------------------------------------------------------------------- +export ARM_GIC_400 := ON +#export ARM_GIC_400 := OFF + +#---------------------------------------------------------------------- +# Set the parameters of GNU toolchain +#---------------------------------------------------------------------- +ifeq "$(TOOLCHAIN)" "GNU" +ifeq "$(shell uname)" "Linux" + CROSS_COMPILE := /opt/ivot/gcc-linaro-6.4.1-2018.05-x86_64_arm-eabi/bin/arm-eabi- + TOOLS_DIR = ../../Tools/Bin + TOOLS_SUFFIX = +else + CROSS_COMPILE := arm-eabi- + TOOLS_DIR = ../../Tools/Bin + TOOLS_SUFFIX = .exe +endif + export CC = $(CROSS_COMPILE)gcc + export AS = $(CROSS_COMPILE)as + export LD = $(CROSS_COMPILE)ld + export AR = $(CROSS_COMPILE)ar + export OBJDUMP = $(CROSS_COMPILE)objdump + export FE = $(CROSS_COMPILE)objcopy + export NM = $(CROSS_COMPILE)nm + export LT = "C:/lint/lint-nt.exe" + export GCC = $(CROSS_COMPILE)gcc + export CXX = $(CROSS_COMPILE)g++ + export BFC = $(TOOLS_DIR)/bfc$(TOOLS_SUFFIX) + export LDNVT = $(TOOLS_DIR)/nvt-ld-op$(TOOLS_SUFFIX) + export EBIN = $(TOOLS_DIR)/encrypt_boot_dump$(TOOLS_SUFFIX) + export CFGRAM = $(TOOLS_DIR)/Configram321$(TOOLS_SUFFIX) + export ARMINC_DIR := +endif + + +#---------------------------------------------------------------------- +# Set make flags +# +# Note: Don't modify this if you didn't add new option +#---------------------------------------------------------------------- +# Slient mode +MAKEFLAGS := s + +# Keep going or not +ifeq "$(KEEP_GOING)" "ON" + MAKEFLAGS := $(MAKEFLAGS)k +endif + +#---------------------------------------------------------------------- +# OS Type and Number of CPUs +#---------------------------------------------------------------------- +NPROCS=1 +export OS:=$(shell uname -s) + +ifeq ($(OS),Linux) + NPROCS:=$(shell grep -c ^processor /proc/cpuinfo) +endif +ifeq ($(findstring CYGWIN_NT,$(OS)),CYGWIN_NT) + NPROCS:=$(NUMBER_OF_PROCESSORS) +endif + +export JOB_FLAGS:= -j$(NPROCS) + +endif diff --git a/board/novatek/na51068/loader/MakeCommon/Makefile b/board/novatek/na51068/loader/MakeCommon/Makefile new file mode 100755 index 000000000000..8661c7b2a70c --- /dev/null +++ b/board/novatek/na51068/loader/MakeCommon/Makefile @@ -0,0 +1,128 @@ +include MakeOption.txt + +ENCBIN = ../Tools/Bin/encrypt_boot_dump$(TOOLS_SUFFIX) +OTP_KEY = $(TOOLS_DIR)/aes.txt +module_Common := $(dir $(wildcard ../Common/Makefile)) +module_Drv := $(dir $(wildcard ../Drv/Makefile)) +module_DrvExt := $(dir $(wildcard ../DrvExt/Makefile)) +module_Lib := $(dir $(wildcard ../Lib/Makefile)) +module_LibExt := $(dir $(wildcard ../LibExt/Makefile)) +module_App := $(dir $(wildcard ../App/Makefile)) +module_AppExt := $(dir $(wildcard ../AppExt/Makefile)) +module_Alg := $(dir $(wildcard ../Alg/Makefile)) + +-include ../Project/ProjectConfig.txt + +ifneq "$(ACTIVE_PROJECT)" "" +module_Prj := ../Project/$(ACTIVE_PROJECT)/ +else +# Find the first folder in ../Project/ that contains "Makefile" +ifeq "$(shell uname)" "Linux" +module_Prj := $(dir $(firstword $(sort $(shell find ../Project -name 'Makefile')))) +else +module_Prj := $(dir $(firstword $(sort $(shell find ../Project -name \'Makefile\')))) +endif +endif +test_if_unix_file_fmt = $(shell cd $(1); ret=`if [ "$(OS)" == "Linux" ]; then tools/recursive_dir -t . --exclude-ext .o .a .bin .axf .7z --exclude-dir .svn .git; else tools/recursive_dir.exe -t . --exclude-ext .o .a .bin .axf .7z --exclude-dir .svn .git; fi`; echo "$$ret";) + +module_all := \ + $(module_Common) \ + $(module_Drv) \ + $(module_DrvExt) \ + $(module_Lib) \ + $(module_LibExt) \ + $(module_App) \ + $(module_AppExt) \ + $(module_Alg) + +ifeq "$(LOG_ERR)" "ON" +define copy_log + @-cp \ + $(module_Common)log*.txt \ + $(module_Drv)log*.txt \ + $(module_DrvExt)log*.txt \ + $(module_Lib)log*.txt \ + $(module_LibExt)log*.txt \ + $(module_App)log*.txt \ + $(module_AppExt)log*.txt \ + $(module_Alg)log*.txt \ + $(module_Prj)log*.txt \ + . +endef +else +define copy_log +endef +endif + +ifeq "$(ISOLATE_DEP)" "ON" +.PHONY: all rm_log $(module_all) $(module_Prj) clean rebuild debug release dep + +all: rm_log + @make dep + @make debug + @make release + $(call copy_log) +else +.PHONY: all rm_log $(module_all) $(module_Prj) clean rebuild debug release + +all: rm_log $(module_all) $(module_Prj) + $(call copy_log) +endif + +$(module_all): +ifeq ($(OS),Linux) + @$(MAKE) --directory=$@ $(MAKECMDGOALS) +else + @$(MAKE) --directory=$@ $(MAKECMDGOALS) $(JOB_FLAGS) +endif + +$(module_Prj):$(module_all) + @$(MAKE) --directory=$@ $(MAKECMDGOALS) + +rm_log: + @-rm -f log*.txt + +clean: rm_log $(module_all) $(module_Prj) + +ifeq "$(ISOLATE_DEP)" "ON" +rebuild: + @make clean + @make dep + @make debug + @make release + $(call copy_log) + +dep: $(module_all) $(module_Prj) +else +rebuild: rm_log $(module_all) $(module_Prj) + $(call copy_log) +endif + +debug: rm_log $(module_Prj) + $(call copy_log) + +release: rm_log $(module_Prj) + $(call copy_log) + +rm_chk_log: + @-rm -f chk*.txt + +chk: rm_chk_log $(module_all) $(module_Prj) + +chkclean: $(module_all) $(module_Prj) + +rm_lint_log: + @-rm -f lint*.txt + +lint: rm_lint_log $(module_all) $(module_Prj) + +lintclean: $(module_all) $(module_Prj) + +chk_unix: + @result="$(call test_if_unix_file_fmt, ../)"; if [ ! -z "$$result" ]; then \ + echo -e "\e[1;31mUNIX file format check failed:\e[0m" >&2; \ + for n in $$result; do \ + echo -e "\t$$n" >&2; \ + done; \ + exit 1; \ + fi \ No newline at end of file diff --git a/board/novatek/na51068/loader/MakeCommon/OutputImg.txt b/board/novatek/na51068/loader/MakeCommon/OutputImg.txt new file mode 100755 index 000000000000..7c49956d17d6 --- /dev/null +++ b/board/novatek/na51068/loader/MakeCommon/OutputImg.txt @@ -0,0 +1,553 @@ +#---------------------------------------------------------------------- +# Local variable to determine create library or binary file +#---------------------------------------------------------------------- +OUTPUT_FILE = BIN + +#---------------------------------------------------------------------- +# include make common and make option files +#---------------------------------------------------------------------- +include $(MAKE_COMMON_DIR)/MakeOption.txt +include $(MAKE_COMMON_DIR)/MakeCommon.txt + +#---------------------------------------------------------------------- +# CHIPCFG parameters +#---------------------------------------------------------------------- +ifeq "$(CHIPCFG)" "" + CHIPCFG := CHIPCFG +endif + +#---------------------------------------------------------------------- +# get force link ThirdParty symbols for both debug and release +#---------------------------------------------------------------------- +ifeq "$(USE_ECOS_KERNEL)" "ON" +rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d)) +LIB_ECOS_RTK_WIFI_DIR = $(ROOT_DIR)/ThirdParty/devs_eCos-rtl +LIB_ECOS_SELECT_RTK_WIFI_DIR = $(ROOT_DIR)/ThirdParty/devs_eCos-rtl$(WIFIMDL)es +LIB_ECOS_BASE_DIR = $(ROOT_DIR)/ThirdParty +LIB_ECOS_TMP = $(call rwildcard,$(LIB_ECOS_BASE_DIR)/,*.a) +LIB_ECOS_WO_RTK_WIFI_LIB = $(filter-out $(LIB_ECOS_RTK_WIFI_DIR)%, $(LIB_ECOS_TMP)) +LIB_ECOS_RTK_WIFI_LIB = $(call rwildcard,$(LIB_ECOS_SELECT_RTK_WIFI_DIR)/,*.a) +LIB_ECOS = $(LIB_ECOS_WO_RTK_WIFI_LIB) $(LIB_ECOS_RTK_WIFI_LIB) +#There are two eCos .o not in archive +ALL_OBJ_R += $(wildcard $(LIB_ECOS_BASE_DIR)/eCos/lib/*.o) +ALL_OBJ_D += $(wildcard $(LIB_ECOS_BASE_DIR)/eCos/lib/*.o) +endif + +#---------------------------------------------------------------------- +# get force link IPL symbols for both debug and release +#---------------------------------------------------------------------- +SYMBOL_IPL := IPL_SetDZoomFCB IPL_SetSleepFCB IPL_SetWakeupFCB IPL_GetCapRawFCB IPL_SetPauseDMAFCB IPL_SetResumeDMAFCB IPL_SetImgInOutFCB IPL_SetVAFCB IPL_GetIMEHalIdxFCB IPL_GetIPLInfoFCB IPL_TrigFCB IPL_SetTrigInfoFCB IPL_Stream2PauseFCB IPL_Pause2StreamFCB DCE_D2D_CB IPE_D2D_CB IFE_D2D_CB IFE2_D2D_CB IME_D2D_CB DRE_D2D_CB RHEIME_D2D_IFECB RHEIME_D2D_DCECB RHEIME_D2D_IPECB RHEIME_D2D_IMECB RHEIME_D2D_RHECB IPL_GetCtrlFlowFCB IQUC_InitCtrlItem + +#---------------------------------------------------------------------- +# include the libraries +#---------------------------------------------------------------------- +# +# get Debug LIBs +# +LIB_ALG_DIR_D = $(ARC_BASE_DIR)/../Alg/ARC/Debug +LIB_APP_DIR_D = $(ARC_BASE_DIR)/App/Debug +LIB_COM_DIR_D = $(ARC_BASE_DIR)/Common/Debug +LIB_DRV_DIR_D = $(ARC_BASE_DIR)/Drv/Debug +LIB_LIB_DIR_D = $(ARC_BASE_DIR)/Lib/Debug + +# get Alg libraries +LIB_ALG_D := $(wildcard $(LIB_ALG_DIR_D)/*.a) + +# get App/AppExt libraries +LIB_APP_D := $(wildcard $(LIB_APP_DIR_D)/*.a) + +# get Common libraries +LIB_COM_D := $(wildcard $(LIB_COM_DIR_D)/*.a) + +# get Drv/DrvExt libraries +LIB_DRV_ALL_D := $(wildcard $(LIB_DRV_DIR_D)/*.a) + +# get LIBs in App (except capture library), AppExt +# and LIB module (except driver and slide-effect libraries) +LIB_LIB_DIR_D = $(ARC_BASE_DIR)/Lib/Debug +LIB_STRGEXT_ALL_D := $(wildcard $(LIB_LIB_DIR_D)/STRGEXT_*.a) +LIB_STRGEXT_D := $(wildcard $(LIB_LIB_DIR_D)/STRGEXT_$(STORAGEEXT)_D.a) +LIB_STRGINT_ALL_D := $(wildcard $(LIB_LIB_DIR_D)/STRGINT_*.a) +LIB_STRGINT_D := $(wildcard $(LIB_LIB_DIR_D)/STRGINT_$(STORAGEINT)_D.a) +LIB_REMAP_ALL_D := $(wildcard $(LIB_LIB_DIR_D)/Remap_*.a) +LIB_REMAP_D := $(wildcard $(LIB_LIB_DIR_D)/Remap_$(RESETFLAG)_D.a) +# get LIBs in App (except capture library), AppExt +# and LIB module (except driver and slide-effect libraries) +LIB_LIB_ALL_D := $(filter-out $(LIB_PARSER_ALL_D) $(LIB_SLIDE_ALL_D), $(wildcard $(LIB_LIB_DIR_D)/*.a)) + +LIB_LIB_D := $(filter-out $(LIB_STRGEXT_ALL_D) $(LIB_STRGINT_ALL_D) $(LIB_REMAP_ALL_D), $(LIB_LIB_ALL_D)) + +# +# get Release LIBs +# +LIB_LIB_DIR_R = $(ARC_BASE_DIR)/Lib/Release +LIB_STRGEXT_ALL_R := $(wildcard $(LIB_LIB_DIR_R)/STRGEXT_*.a) +LIB_STRGEXT_R := $(wildcard $(LIB_LIB_DIR_R)/STRGEXT_$(STORAGEEXT).a) +LIB_STRGINT_ALL_R := $(wildcard $(LIB_LIB_DIR_R)/STRGINT_*.a) +LIB_STRGINT_R := $(wildcard $(LIB_LIB_DIR_R)/STRGINT_$(STORAGEINT).a) +LIB_REMAP_ALL_R := $(wildcard $(LIB_LIB_DIR_R)/Remap_*.a) +LIB_REMAP_R := $(wildcard $(LIB_LIB_DIR_R)/Remap_$(RESETFLAG).a) +# get LIBs in App (except capture library), AppExt +# and LIB module (except driver and slide-effect libraries) +LIB_LIB_ALL_R := $(filter-out $(LIB_PARSER_ALL_R) $(LIB_SLIDE_ALL_R), $(wildcard $(LIB_LIB_DIR_R)/*.a)) + +#LIB_LIB_R := $(filter-out $(LIB_STRGEXT_ALL_R) $(LIB_STRGINT_ALL_R) $(LIB_REMAP_ALL_R), $(LIB_LIB_ALL_R)) +LIB_LIB_R := $(filter-out $(LIB_STRGEXT_ALL_R) $(LIB_REMAP_ALL_R), $(LIB_LIB_ALL_R)) + + +# get total libraries for Debug & Release mode; note we cannot get string of LIB_R from LIB_D, or vice versa, +# because we may build Debug and Release output separately, the library of one mode maybe not exist, and cause +# the link problem. So, while adding/deleting libraries, please be patient to do it for Debug and Release mode both. + +LIB_R := \ + $(LIB_LIB_R) \ + $(LIB_STRGEXT_R) \ + $(LIB_REMAP_R) + +LIB_D := \ + $(LIB_LIB_D) \ + $(LIB_STRGEXT_D) \ + $(LIB_STRGINT_D) \ + $(LIB_REMAP_D) + +# If some libraries only available in Release mode, add these libraries in Debug mode too. +LIB_D += $(filter-out $(subst Debug/,Release/,$(LIB_D:_D.a=.a)),$(LIB_R)) + +# Append eCos library to both Debug and Release mode +# (We don't have debug mode's eCos library) +LIB_R += $(LIB_ECOS) +LIB_D += $(LIB_ECOS) + +#---------------------------------------------------------------------- +# set the make outputs +#---------------------------------------------------------------------- +# for debug target +IMAGE_D = $(IMG_DEBUG)/$(PRJ_NAME)_D.axf +BIN_D = $(IMG_DEBUG)/$(LDR_NAME).bin +MAP_D = $(IMG_DEBUG)/$(PRJ_NAME)_D.txt +MAP2_D = $(IMG_DEBUG)/$(PRJ_NAME)_ldmap_D.txt +SYM_D = $(IMG_DEBUG)/$(PRJ_NAME)_D.sym +DASM_D = $(IMG_DEBUG)/$(PRJ_NAME)_dasm_D.txt +ifeq "$(MODELEXT_BUILT_IN)" "MODELEXT_BUILT_IN_OFF" +MODELEXT_D = $(IMG_DEBUG)/$(BIN_NAME).ext.bin +endif + + +# for release target +IMAGE_R = $(IMG_RELEASE)/$(PRJ_NAME).axf +BIN_R = $(IMG_RELEASE)/$(LDR_NAME).bin +TMP_R = $(IMG_RELEASE)/$(TMP_NAME).bin +TMPCOMPRESSED_R = $(IMG_RELEASE)/$(TMP_NAME)LZ.bin +MAP_R = $(IMG_RELEASE)/$(PRJ_NAME).txt +MAP2_R = $(IMG_RELEASE)/$(PRJ_NAME)_ldmap.txt +SYM_R = $(IMG_RELEASE)/$(PRJ_NAME).sym +DASM_R = $(IMG_RELEASE)/$(PRJ_NAME)_dasm.txt +ifeq "$(MODELEXT_BUILT_IN)" "MODELEXT_BUILT_IN_OFF" +MODELEXT_R = $(IMG_RELEASE)/$(BIN_NAME).ext.bin +endif + +#---------------------------------------------------------------------- +# if enable LDS_MAP +#---------------------------------------------------------------------- +ifeq "$(LDS_MAP)" "ON" +LDMAP_D = -Map $(MAP2_D) +LDMAP_R = -Map $(MAP2_R) +endif + +#---------------------------------------------------------------------- +# set the warning/error log file option +#---------------------------------------------------------------------- +log_file = log_Prj.txt + +# 0: Standard input (stdin), 1: Standard output (stdout), 2: Standard error (stderr) +# 2>>$(log_file) means redirect standard error to $(log_file) +# 2>>/dev/null means redirect standard error to NULL (Don't display error message) +ifeq "$(LOG_ERR)" "ON" +LOG_OPTION = 2>>$(log_file) +endif + +#---------------------------------------------------------------------- +# set robustness checking log file +#---------------------------------------------------------------------- +lint_file = lint_Prj.txt +lintopt_file = options_Prj.lnt +lintsum_file = lintsum_Prj.txt + +#---------------------------------------------------------------------- +# set the make targets +#---------------------------------------------------------------------- +build_D: make_debug_begin prepare_log $(IMAGE_D) $(BIN_D) +build_R: make_release_begin prepare_log $(IMAGE_R) $(BIN_R) +build_pipe_D: $(IMAGE_D) $(BIN_D) +build_pipe_R: $(IMAGE_R) $(BIN_R) + +ifeq "$(ISOLATE_DEP)" "ON" +build_DEP: make_dep_begin $(SRC) $(ASM) $(CPP_SRC) $(ALL_DEP) +endif + +build_LINT: make_lint_begin $(LINT_FILE) + +prepare_log: + @$(LOG_OPTION) + +ifeq "$(ARCH)" "ARM" +#arm-none-eabi-gcc -march=armv7-a -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp -print-file-name=libm.a +ifeq "$(FPU)" "hard" +libgcc_path = $(shell $(CC) -march=armv7-a -mcpu=$(CPU) -mabi=aapcs -mfpu=neon -mfloat-abi=$(FPU) -print-libgcc-file-name) +libgcc_dir_el = $(shell dirname "$(libgcc_path)") +libstdc_path = $(shell $(CC) -msoft-float -print-file-name=libstdc++.a) +libstdc_dir_el = $(shell dirname "$(libstdc_path)") +libm_path = $(shell $(CC) -march=armv7-a -mcpu=$(CPU) -mfpu=neon -mfloat-abi=$(FPU) -print-file-name=libm.a) +libm_dir = $(shell dirname "$(libm_path)") +else +libgcc_path = $(shell $(CC) -march=armv7-a -mcpu=$(CPU) -mabi=aapcs -mfloat-abi=$(FPU) -print-libgcc-file-name) +libgcc_dir_el = $(shell dirname "$(libgcc_path)") +libstdc_path = $(shell $(CC) -msoft-float -print-file-name=libstdc++.a) +libstdc_dir_el = $(shell dirname "$(libstdc_path)") +libm_path = $(shell $(CC) -march=armv7-a -mcpu=$(CPU) -mfloat-abi=$(FPU) -print-file-name=libm.a) +libm_dir = $(shell dirname "$(libm_path)") +endif +endif + +define append_modelext + echo Append $1 into $4. \ + && $(AR) x $3 $1.o \ + && $(FE) --only-section=modelext_header.$1 -O binary -S -R .comment -R .note $1.o $2/$1.header \ + && cat $2/$1.header >> $4 \ + && $(FE) --only-section=modelext_data.$1 -O binary -S -R .comment -R .note $1.o $2/$1.data \ + && cat $2/$1.data >> $4 +endef + + +#Replace string existing in lds file +ifeq "$(SCATTER)" "EmuKit_cpu2.lds" +ifeq "$(PLATFORM_MEM_SIZE)" "SDRAM_SIZE_256" + BOARD_UITRON_ADDR = 0x8000000 +endif +ifeq "$(PLATFORM_MEM_SIZE)" "SDRAM_SIZE_512" + BOARD_UITRON_ADDR = 0x10000000 +endif +ifeq "$(PLATFORM_MEM_SIZE)" "SDRAM_SIZE_1024" + BOARD_UITRON_ADDR = 0x20000000 +endif +endif + +LD_REMAP_LIB = Remap_$(RESETFLAG) +LD_DOREMAP = doremap$(RESETFLAG) +ifeq "$(BL_COMPRESS)" "ENABLE" +LD_CONFIGRAM = configramLZ +else +LD_CONFIGRAM = configramNM +endif +ifeq "$(UBOOT_BIND)" "UBOOT_BIND_ON" +LD_LDS_EXTERN = lzma_inflate +LOADER_FIXED_BIN_SIZE = 0x00028000 +else +LD_LDS_EXTERN = bl_mainFlow +LOADER_FIXED_BIN_SIZE = 0x00010000 +endif + +LD_REPLACE_VAR = sed \ + -e 's/$$LD_REMAP_LIB/$(LD_REMAP_LIB)/g' \ + -e 's/$$LD_DOREMAP/$(LD_DOREMAP)/g' \ + -e 's/$$LD_CONFIGRAM/$(LD_CONFIGRAM)/g' \ + -e 's/$$LD_BASE_ADDR/$(LD_BASE_ADDR)/g' \ + -e 's/$$LD_LDS_EXTERN/$(LD_LDS_EXTERN)/g' \ + -e 's/$$LOADER_FIXED_BIN_SIZE/$(LOADER_FIXED_BIN_SIZE)/g' \ + $(SCATTER) + +#The folder, the working space to fill the full path into lds file +LD_DIR_WORKING_D= $(IMG_BASE_DIR)/Debug/ObjectLds +#Generate the working folder and temp lds file called replace.lds +LD_REPLACE_LDS_D= $(shell mkdir -p $(LD_DIR_WORKING_D)) $(shell $(OBJDUMP) -h $(LIB_D) | grep ".version.info" > tmp_awk1) $(shell $(LD_REPLACE_VAR) > $(LD_DIR_WORKING_D)/replace.lds) +#The real lds file replaced of using by linker +LD_PATH_LDS_D = $(LD_DIR_WORKING_D)/$(basename $(SCATTER))_D.lds +#Here have some steps as following to get a some files explained below, +#Step 1: Generate temp lds file +#Step 2: export the contents of $(LIB_D) into libs.txt +#Step 3: export the contents of $(ALL_OBJ_D) into objs.txt +#Step 4: Give mips-nvt.exe libs.txt, objs.txt and replace.lds to get ld_ext.d, ld_lib.txt, ld_lib_ban.txt and real lds file for linker. +# Where, +# ld_ext.d is a decency file depends on .o used in lds file +# ld_lib_ban is a list of .a files to ban, because linker should use the .a file after extracting .o. +# real lds file is replaced by full path. +LD_DFILE_D = $(LD_REPLACE_LDS_D) $(shell echo $(LIB_D) > $(LD_DIR_WORKING_D)/libs.txt ) $(shell echo $(ALL_OBJ_D) > $(LD_DIR_WORKING_D)/objs.txt ) $(shell $(LDNVT) --lds-dst=$(LD_PATH_LDS_D) --lds-dir=$(LD_DIR_WORKING_D) --lds-src=$(LD_DIR_WORKING_D)/replace.lds --libs-src=$(LD_DIR_WORKING_D)/libs.txt --objs-src=$(LD_DIR_WORKING_D)/objs.txt --objs-dir=$(OBJ_DEBUG)) $(LD_DIR_WORKING_D)/ld_ext.d +#Getting the contents of ld_lib.txt +LD_LIB_D = $(shell cat $(LD_DIR_WORKING_D)/ld_lib.txt 2>>/dev/null) +#Getting the contents of ld_lib_ban.txt +LD_LIB_BAN_D = $(shell cat $(LD_DIR_WORKING_D)/ld_lib_ban.txt 2>>/dev/null) +tmp_awk2 = $(shell awk -F" " '{print $$2}' tmp_awk1 | awk -F"." '{print $$5}') +tmp_awk3 = $(addsuffix _LIBRARY_VERSION_INFO, $(tmp_awk2)) + +ifeq ($(MAKECMDGOALS), $(filter $(MAKECMDGOALS),debug build_pipe_D)) +include $(LD_DFILE_D) +endif + +$(LD_LIB_D): $(MODELEXT_D) + +#$(MODELEXT_D): $(LIB_MODELEXT_D) +# @echo Creating modelext $@ ... \ +# && rm -f $@ \ +# && $(call append_modelext,modelext_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,bin_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,pinmux_cfg,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,intdir_cfg,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,emb_partition_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,gpio_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,dram_partition_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,model_cfg,$(OBJ_DEBUG),$<,$@) \ +# && $(EBIN) $(EBIN_METHOD) $@ 0x18 $(EBIN_MNAME) +# @BIN_SIZE=`ls -l $@ | cut -d ' ' -f 5`; \ +# RESIDUAL=$$(($${BIN_SIZE} % 4)); \ +# if [ "$${RESIDUAL}" -ne "0" ]; then \ +# echo "sizeof($@) is not 4-byte aligned"; \ +# exit 1; \ +# fi + +$(IMAGE_D): $(SRC) $(ASM) $(CPP_SRC) $(ALL_OBJ_D) $(LIB_D) $(LD_LIB_D) $(MODELEXT_D) + $(shell mv *.o $(IMG_BASE_DIR)/Debug/ObjectCode 2>>/dev/null) + @echo '-o $@ $(ALL_OBJ_D)'> ld_d.tmp + @echo '--start-group $(LD_LIB_D) $(filter-out $(LD_LIB_BAN_D),$(LIB_D)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_D) -L "$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -L"$(libm_dir)" -lstdc++ -lgcc "$(libm_path)" $(LDMAP_D)' >> ld_d.tmp +ifeq "$(SCATTER)" "EmuKit_cpu2.lds" + @echo "Linking CA53_core2...$(LD_PATH_LDS_D)" \ + && echo Creating image $@ ... \ + && $(LD) @ld_d.tmp $(LOG_OPTION) \ + && $(OBJDUMP) -x -h -t $@ > $(MAP_D) \ + && $(NM) -n $@ > tmp_sym_d \ + && grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' tmp_sym_d > $(SYM_D) \ + && rm -f tmp_sym_d \ + && rm -f ld_d.tmp \ + && rm -f tmp_awk1 +else + @echo "Linking ..." \ + && echo Creating image $@ ... \ + && $(LD) @ld_d.tmp $(LOG_OPTION) \ + && $(OBJDUMP) -x -h -t $@ > $(MAP_D) \ + && $(NM) -n $@ > tmp_sym_d \ + && grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' tmp_sym_d > $(SYM_D) \ + && rm -f tmp_sym_d \ + && rm -f ld_d.tmp \ + && rm -f tmp_awk1 +endif + + +$(BIN_D): $(IMAGE_D) +ifeq "$(MULTI_REGIONS)" "ON" + @echo Creating executable $@ ... \ + && $(FE) --gap-fill=0xff -O binary $< $@ \ + && mv $(IMG_DEBUG)/SPECIAL_RO $(BIN_D) +else + @echo Creating executable $@ ... \ + && $(FE) --gap-fill=0xff -O binary $< $@ +endif +ifeq "$(LDS_MAP)" "ON" + @echo Generate LDS map file $(MAP2_D): ok +endif +ifeq "$(AXF_DIS)" "ON" + @echo Translate AXF $< to disassembly... \ + && $(OBJDUMP) -D $(IMAGE_D) > $(DASM_D) +endif + +ifeq "$(BL_COMPRESS)" "ENABLE" + @echo Compressing file $(@)\ + && $(BFC) c lz $(BIN_D) tmp 1 $(UNCOMPRESSEDPART_SIZE_OFFSET) \ + && cp -f tmp $(BIN_D) \ + && rm -f tmp \ + && echo Encrypt binary file $@ for $(CHIP)... $(CHIP_VER) $(DMA_CLOCK) $(SDRAM_SIZE) $(LOADER_VERSION) $(CONFIG_RAM_GUI_EN) $(PHY_ANALOG_HV) $(DUTY_CALIBRATION) $(DUTY_CALIBRATION_LOG) $(DUTY_CALIBRATION_TYPE)\ + && $(EBIN) $@ $@ 680 + $(CFGRAM) $@ -ini=../../Tools/ConfigRam/$(DDR_INI_STR) -ini2=../../Tools/ConfigRam/$(DDR_INI_STR) -chip=660 -package=$(CHIP) -ldver=$(LOADER_VERSION) -gui=$(CONFIG_RAM_GUI_EN) -storage=$(STORAGEINT) -inv_rst=$(DRAM1_RST_PARAM) -ddr16bit=$(DRAM1_16BIT_PARAM) -ddr_width_detect=$(DRAM_WIDTH_DET_PARAM) +# $(CFGRAM) $@ ../../Tools/ConfigRam/$(CHIP)_$(CHIP_VER)_$(DMA_CLOCK)_$(SDRAM_SIZE)$(DDR_FILE_STR).ini 650 $(LOADER_VERSION) $(CONFIG_RAM_GUI_EN) $(PHY_ANALOG_HV) $(DUTY_CALIBRATION) $(DUTY_CALIBRATION_LOG) $(DUTY_CALIBRATION_TYPE) $(LV1_CLK) +else + @echo Encrypt binary file $@ for $(CHIP)...\ + && $(EBIN) $@ $@ 680 $(SECURE_BOOT) +endif + +ifeq "$(COPY_BIN_2_STG)" "ON" +ifneq "$(NVT_STG_PATH)" "" + @-echo Copy \""$(BIN_D)\"" to $(NVT_STG_PATH) ... \ + && cp -f -v $(BIN_D) $(NVT_STG_PATH)$(notdir $(BIN_D)) +endif +ifneq "$(NVT_STG_PATH_MIPS2)" "" + @-echo Copy \""$(BIN_D)\"" to $(NVT_STG_PATH_MIPS2)_FWMIPS2.bin ... \ + && cp -f -v $(BIN_D) $(NVT_STG_PATH_MIPS2)_FWMIPS2.bin +endif + +ifneq "$(NVT_STG_PATH_CA532)" "" + @-echo Copy \""$(BIN_D)\"" to $(NVT_STG_PATH_CA532)_FWCA532.bin ... \ + && cp -f -v $(BIN_D) $(NVT_STG_PATH_CA532)_FWCA532.bin +endif +endif + +#Please refer LD_DIR_WORKING_D for getting explanation. Ohters are in the same way. +LD_DIR_WORKING_R= $(IMG_BASE_DIR)/Release/ObjectLds +LD_REPLACE_LDS_R= $(shell mkdir -p $(LD_DIR_WORKING_R)) $(shell $(OBJDUMP) -h $(LIB_R) | grep ".version.info" > tmp_awk1) $(shell $(LD_REPLACE_VAR) > $(LD_DIR_WORKING_R)/replace.lds) +LD_PATH_LDS_R = $(LD_DIR_WORKING_R)/$(basename $(SCATTER))_R.lds +LD_DFILE_R = $(LD_REPLACE_LDS_R) $(shell echo $(LIB_R) > $(LD_DIR_WORKING_R)/libs.txt ) $(shell echo $(ALL_OBJ_R) > $(LD_DIR_WORKING_R)/objs.txt ) $(shell $(LDNVT) --lds-dst=$(LD_PATH_LDS_R) --lds-dir=$(LD_DIR_WORKING_R) --lds-src=$(LD_DIR_WORKING_R)/replace.lds --libs-src=$(LD_DIR_WORKING_R)/libs.txt --objs-src=$(LD_DIR_WORKING_R)/objs.txt --objs-dir=$(OBJ_RELEASE)) $(LD_DIR_WORKING_R)/ld_ext.d +LD_LIB_R = $(shell cat $(LD_DIR_WORKING_R)/ld_lib.txt 2>>/dev/null) +LD_LIB_BAN_R = $(shell cat $(LD_DIR_WORKING_R)/ld_lib_ban.txt 2>>/dev/null) +tmp_awk2 = $(shell awk -F" " '{print $$2}' tmp_awk1 | awk -F"." '{print $$5}') +tmp_awk3 = $(addsuffix _LIBRARY_VERSION_INFO, $(tmp_awk2)) + +ifeq ($(MAKECMDGOALS), $(filter $(MAKECMDGOALS),release build_pipe_R)) +include $(LD_DFILE_R) +endif + +$(LD_LIB_R): $(MODELEXT_R) + +#$(MODELEXT_R): $(LIB_MODELEXT_R) +# @echo Creating modelext $@ \ +# && rm -f $@ \ +# && $(call append_modelext,modelext_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,bin_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,pinmux_cfg,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,intdir_cfg,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,emb_partition_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,gpio_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,dram_partition_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,model_cfg,$(OBJ_RELEASE),$<,$@) \ +# && $(EBIN) $(EBIN_METHOD) $@ 0x18 $(EBIN_MNAME) +# @BIN_SIZE=`ls -l $@ | cut -d ' ' -f 5`; \ +# RESIDUAL=$$(($${BIN_SIZE} % 4)); \ +# if [ "$${RESIDUAL}" -ne "0" ]; then \ +# echo "sizeof($@) is not 4-byte aligned"; \ +# exit 1; \ +# fi + +$(IMAGE_R): $(SRC) $(ASM) $(CPP_SRC) $(ALL_OBJ_R) $(LIB_R) $(LD_LIB_R) $(MODELEXT_R) + $(shell mv *.o $(IMG_BASE_DIR)/Release/ObjectCode 2>>/dev/null) + @echo '-o $@ $(ALL_OBJ_R) '> ld_r.tmp + @echo '--start-group $(LD_LIB_R) $(filter-out $(LD_LIB_BAN_R),$(LIB_R)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_R) -L"$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -lstdc++ -lgcc "$(libm_path)" $(LDMAP_R)' >> ld_r.tmp + +ifeq "$(SCATTER)" "EmuKit_cpu2.lds" + @echo "Linking CA53_core2...$(LD_PATH_LDS_R)" \ + && echo Creating image $@ ... \ + && $(LD) @ld_r.tmp $(LOG_OPTION) \ + && $(OBJDUMP) -x -h -t $@ > $(MAP_R) \ + && $(NM) -n $@ > tmp_sym_r \ + && grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' tmp_sym_r > $(SYM_R) \ + && rm -f tmp_sym_r \ + && rm -f ld_r.tmp \ + && rm -f tmp_awk1 +else + @echo "Linking ..." \ + && echo Creating image $@ ... \ + && $(LD) @ld_r.tmp $(LOG_OPTION) \ + && $(OBJDUMP) -x -h -t -marm $@ > $(MAP_R) \ + && $(NM) -n $@ > tmp_sym_r \ + && grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' tmp_sym_r > $(SYM_R) \ + && rm -f tmp_sym_r \ + && rm -f ld_r.tmp \ + && rm -f tmp_awk1 +endif + +$(BIN_R): $(IMAGE_R) +ifeq "$(MULTI_REGIONS)" "ON" +ifeq "$(BL_COMPRESS)" "ENABLE" + @echo Creating executable $(TMP_R) ...\ + && $(FE) --gap-fill=0xff -O binary $< $(TMP_R) +else + @echo Creating executable $< $@ ... \ + && $(FE) --gap-fill=0xff -O binary $< $@ \ + && mv $(IMG_RELEASE)/SPECIAL_RO $(BIN_R) +endif +else +ifeq "$(BL_COMPRESS)" "ENABLE" + @echo Creating executable $(TMP_R) ...\ + && $(FE) --gap-fill=0xff -O binary $< $(TMP_R) +else + @echo Creating executable $< $@ ... \ + && $(FE) --gap-fill=0xff -O binary $< $@ +endif +endif + +ifeq "$(LDS_MAP)" "ON" + @echo Generate LDS map file $(MAP2_R): ok +endif +ifeq "$(AXF_DIS)" "ON" + @echo Translate AXF $< to disassembly... \ + && $(OBJDUMP) -D $(IMAGE_R) > $(DASM_R) +endif +ifeq "$(BL_COMPRESS)" "ENABLE" + @echo Compressing file $(TMP_R) $(@)\ + && $(BFC) c lz $(TMP_R) $(TMPCOMPRESSED_R) 1 $(UNCOMPRESSEDPART_SIZE_OFFSET) + +ifeq "$(UBOOT_BIND)" "UBOOT_BIND_ON" + cat $(TMPCOMPRESSED_R) $(UBOOT_PATH) > lu.bin && \ + mv lu.bin $(TMPCOMPRESSED_R) +endif + @echo Encrypt binary file $@ for $(CHIP)... $(CHIP_VER) $(DMA_CLOCK) $(SDRAM_SIZE) $(LOADER_VERSION) $(CONFIG_RAM_GUI_EN) $(PHY_ANALOG_HV) $(DUTY_CALIBRATION) $(DUTY_CALIBRATION_LOG) $(DUTY_CALIBRATION_TYPE)\ + && $(EBIN) $(TMPCOMPRESSED_R) $@ $(CHIPID) \ + && $(CFGRAM) $@ -freq=$(DRAM1_CLK) -ini=../../Tools/ConfigRam/$(DDR_INI_STR) -ini2=../../Tools/ConfigRam/$(DDR_INI2_STR) -chip=$(CHIPID) -package=$(CHIP) -ldver=$(LOADER_VERSION) -storage=$(STORAGEINT) -dram_ssc=$(DRAM_SSC_PARAM) -dram_2nd_tlb=$(2ND_INI) -dram_hl_swap=$(DRAM_HL_SWAP_PARAM) -dram_sa_swap=$(DRAM_SA_SWAP_PARAM)\ + && $(EBIN) $@ $@ $(CHIPID) $(SECURE_BOOT) $(ENCRYPT_DATA) $(SECUREBOOT_MSG) $(AES_KEY_FILE_DIR) $(RSA_PUB_KEY_FILE_DIR) $(RSA_PRV_KEY_FILE_DIR) +# $(CFGRAM) $@ -ini=../../Tools/ConfigRam/$(DDR_INI_STR) -ini2=../../Tools/ConfigRam/$(DDR_INI_STR) -chip=660 -package=$(CHIP) -ldver=$(LOADER_VERSION) -gui=$(CONFIG_RAM_GUI_EN) -storage=$(STORAGEINT) +# $(CFGRAM) $@ ../../Tools/ConfigRam/$(CHIP)_$(CHIP_VER)_$(DMA_CLOCK)_$(SDRAM_SIZE)$(DDR_FILE_STR).ini 650 $(LOADER_VERSION) $(CONFIG_RAM_GUI_EN) $(PHY_ANALOG_HV) $(DUTY_CALIBRATION) $(DUTY_CALIBRATION_LOG) $(DUTY_CALIBRATION_TYPE) $(LV1_CLK) +else + @echo Encrypt binary file $@ for $(CHIP) Not support...\ + && $(EBIN) $@ $@ $(CHIPID) $(SECURE_BOOT) +endif + +ifeq "$(COPY_BIN_2_STG)" "ON" +ifneq "$(NVT_STG_PATH)" "" + @-echo Copy \""$(BIN_R)\"" to $(NVT_STG_PATH) ... \ + && cp -f -v $(BIN_R) $(NVT_STG_PATH)$(notdir $(BIN_R)) +endif +ifneq "$(NVT_STG_PATH_MIPS2)" "" + @-echo Copy \""$(BIN_R)\"" to $(NVT_STG_PATH_MIPS2) ... \ + && cp -f -v $(BIN_R) $(NVT_STG_PATH_MIPS2)_FWMIPS2.bin +endif + +ifneq "$(NVT_STG_PATH_CA532)" "" + @-echo Copy \""$(BIN_R)\"" to $(NVT_STG_PATH_CA532)_FWCA532.bin ... \ + && cp -f -v $(BIN_R) $(NVT_STG_PATH_CA532)_FWCA532.bin +endif +endif + +.PHONY: +rm_log: +ifeq "$(CLEAN_LOG)" "ON" + @-rm -f $(log_file) +endif + +clean: + @-echo Clean $(basename $(notdir $(IMAGE_R))) ... \ + && rm -rf --no-preserve-root $(IMG_BASE_DIR) $(log_file) $(lint_file) + +ifeq "$(ISOLATE_DEP)" "ON" +all: rm_log + @make dep + @make debug + @make release + +rebuild: + @make clean + @make dep + @make debug + @make release + +dep: build_DEP +else +rebuild: clean build_D build_R +endif + +debug: rm_log make_debug_begin +ifeq ($(OS),Linux) + $(MAKE) build_pipe_D +else + $(MAKE) build_pipe_D $(JOB_FLAGS) +endif + +release: rm_log make_release_begin +ifeq ($(OS),Linux) + $(MAKE) build_pipe_R +else + $(MAKE) build_pipe_R $(JOB_FLAGS) +endif + +#remove unused remap.a for sdk +remap: + rm -v $(filter-out $(LIB_REMAP_D), $(LIB_REMAP_ALL_D)) $(filter-out $(LIB_REMAP_R), $(LIB_REMAP_ALL_R)) + +codesize: $(IMAGE_R) + @$(OBJDUMP) -t $< > $<.sym && \ + $(LDNVT) -j $<.sym && \ + mv RO_RW.txt ZI.txt $(IMG_RELEASE) \ No newline at end of file diff --git a/board/novatek/na51068/loader/MakeCommon/OutputLib.txt b/board/novatek/na51068/loader/MakeCommon/OutputLib.txt new file mode 100755 index 000000000000..cf436efaa33d --- /dev/null +++ b/board/novatek/na51068/loader/MakeCommon/OutputLib.txt @@ -0,0 +1,155 @@ +#---------------------------------------------------------------------- +# Local variable to determine create library or binary file +#---------------------------------------------------------------------- +OUTPUT_FILE = LIB + +#---------------------------------------------------------------------- +# include make common and make option files +#---------------------------------------------------------------------- +ifeq "$(OPTION_LOADED)" "" + include $(MAKE_COMMON_DIR)/MakeOption.txt + LOCAL_CLEAN_LOG = $(CLEAN_LOG) +else + LOCAL_CLEAN_LOG = OFF +endif + +include $(MAKE_COMMON_DIR)/MakeCommon.txt + +#---------------------------------------------------------------------- +# set the make outputs +#---------------------------------------------------------------------- +IMAGE_D = $(IMG_DEBUG)/$(PRJ_NAME)_D.a +IMAGE_R = $(IMG_RELEASE)/$(PRJ_NAME).a + +#---------------------------------------------------------------------- +# set the warning/error log file option +#---------------------------------------------------------------------- +# $(APP_PATH), $(APPEXT_PATH), $(LIB_PATH), $(LIBEXT_PATH) will be assigned value in MakeCommon.txt +ifneq "$(ALG_PATH)" "" + log_file := $(subst MakeCommon,Alg/log_Alg.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,Alg/lint_Alg.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_Alg.lnt + lintsum_file := $(subst MakeCommon,App/lintsum_Alg.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(APP_PATH)" "" + log_file := $(subst MakeCommon,App/log_App.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,App/lint_App.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_App.lnt + lintsum_file := $(subst MakeCommon,App/lintsum_App.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(APPEXT_PATH)" "" + log_file := $(subst MakeCommon,AppExt/log_AppExt.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,AppExt/lint_AppExt.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_AppExt.lnt + lintsum_file := $(subst MakeCommon,AppExt/lintsum_AppExt.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(LIB_PATH)" "" + log_file := $(subst MakeCommon,Lib/log_Lib.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,Lib/lint_Lib.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_Lib.lnt + lintsum_file := $(subst MakeCommon,Lib/lintsum_Lib.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(LIBEXT_PATH)" "" + log_file := $(subst MakeCommon,LibExt/log_LibExt.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,LibExt/lint_LibExt.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_LibExt.lnt + lintsum_file := $(subst MakeCommon,LibExt/lintsum_LibExt.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(DRV_PATH)" "" + log_file := $(subst MakeCommon,Drv/log_Drv.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,Drv/lint_Drv.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_Drv.lnt + lintsum_file := $(subst MakeCommon,Drv/lintsum_Drv.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(DRVEXT_PATH)" "" + log_file := $(subst MakeCommon,DrvExt/log_DrvExt.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,DrvExt/lint_DrvExt.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_DrvExt.lnt + lintsum_file := $(subst MakeCommon,DrvExt/lintsum_DrvExt.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(COM_PATH)" "" + log_file := $(subst MakeCommon,Common/log_Common.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,Common/lint_Common.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_Common.lnt + lintsum_file := $(subst MakeCommon,Common/lintsum_Common.txt,$(MAKE_COMMON_DIR)) +else + log_file := /dev/null + lint_file := /dev/null + lintopt_file := /dev/null + lintsum_file := /dev/null +endif + +ifeq "$(LOG_ERR)" "ON" + LOG_OPTION = 2>>$(log_file) + LOG_DATE = date >>$(log_file) + LOG_SPACE = echo >>$(log_file) +endif + +#---------------------------------------------------------------------- +# set the make targets +#---------------------------------------------------------------------- +build_D: make_debug_begin $(IMAGE_D) +build_R: make_release_begin $(IMAGE_R) +build_pipe_D: $(IMAGE_D) +build_pipe_R: $(IMAGE_R) + +ifeq "$(ISOLATE_DEP)" "ON" +build_DEP: make_dep_begin $(ALL_DEP) +endif + +build_LINT: make_lint_begin $(LINT_FILE) + +$(IMAGE_D): $(ALL_OBJ_D) + @echo Creating library $(notdir $@) ... \ + && rm -f $(IMAGE_D) \ + && $(AR) -cru $@ $^ + +$(IMAGE_R): $(ALL_OBJ_R) + @echo Creating library $(notdir $@) ... \ + && rm -f $(IMAGE_R) \ + && $(AR) -cru $@ $^ + +.PHONY: +rm_log: +ifeq "$(LOCAL_CLEAN_LOG)" "ON" + @-rm -f $(log_file) +endif + +clean: + @-echo Clean $(basename $(notdir $(IMAGE_R))) ... \ + && rm -rf --no-preserve-root $(PRJ_NAME)_Data $(log_file) $(lint_file) + +ifeq "$(ISOLATE_DEP)" "ON" +all: rm_log + @make dep + @make debug + @make release + +rebuild: + @make clean + @make dep + @make debug + @make release + +dep: build_DEP +else +rebuild: clean build_D build_R +endif + +debug: rm_log make_debug_begin +ifeq ($(OS),Linux) + $(MAKE) build_pipe_D +else + $(MAKE) build_pipe_D $(JOB_FLAGS) +endif + +release: rm_log make_release_begin +ifeq ($(OS),Linux) + $(MAKE) build_pipe_R +else + $(MAKE) build_pipe_R $(JOB_FLAGS) +endif + +rm_lint_log: +ifeq "$(LOCAL_CLEAN_LOG)" "ON" + @-rm -f $(lint_file) +endif + +lint: rm_lint_log build_LINT + +lintclean: + @-echo Clean Lint $(basename $(notdir $(IMAGE_R))) checking data ... \ + && rm -rf --no-preserve-root $(LINT_DIR) $(lint_file) diff --git a/board/novatek/na51068/loader/MakeCommon/dump_tmp b/board/novatek/na51068/loader/MakeCommon/dump_tmp new file mode 100755 index 000000000000..e69de29bb2d1 diff --git a/board/novatek/na51068/loader/Project/Model/LDS_LZ.lds b/board/novatek/na51068/loader/Project/Model/LDS_LZ.lds new file mode 100755 index 000000000000..0c5e94143ce2 --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/LDS_LZ.lds @@ -0,0 +1,186 @@ +/* Linker script for malta + * + * Version: Sourcery G++ Lite 4.3-221 + * Support: https://support.codesourcery.com/GNUToolchain/ + * + * Copyright (c) 2007, 2008, 2009 CodeSourcery, Inc. + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + * */ + +/* Rule: + * 1. to use .o in project layer just type the .o name with file extension. (UiFlow.o) + * 2. to use .o in library layer have to add prefix module name. (DscSystem/SysTask.o) + * */ + +OUTPUT_ARCH(arm) +ENTRY(__start) +SEARCH_DIR(.) + +SECTIONS +{ + _loader_fixed_bin_size = $LOADER_FIXED_BIN_SIZE; + .BOOT_EXEC 0xFE080000|0x00000000: + AT (0) + { + _stext = .; + _load_BOOT_EXEC_start_base = .; + KEEP(Reset/reset.o(.data*)); + Reset/reset.o(.text*); + _load_BOOT_EXEC_end_base = .; + } + .LOADER_CONFIGRAM (0xFE080000|0x00000000) + 0x30: + AT (0x30) + { + _load_LOADER_CONFIGRAM_start_base = .; + KEEP($LD_REMAP_LIB/$LD_CONFIGRAM.o(.data*)); + _load_LOADER_CONFIGRAM_end_base = .; + _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base = .; + KEEP(Reset/configramFreqParam.o(.data*)); + _load_LOADER_CONFIGRAM_FREQ_PARAM_end_base = .; + } + .LOADER_CONFIGRAM2 (0xFE080000|0x00000000) + 0x300: + AT (0x300) + { + config_dram_tbl_start_base = .; + KEEP(Reset/config_dram1_tbl.o(.rodata*)); + config_dram_tbl_end_base = .; + } + .LOADER_CONFIGRAM3 (0xFE080000|0x00000000) + 0x400: + AT (0x400) + { + config_dram_tbl2_start_base = .; + KEEP(Reset/config_dram1_2_tbl.o(.rodata*)); + config_dram_tbl2_end_base = .; + } + LOADER_CORE2_ENTRY_PROGRAM (0xFE080000|0x00000000) + 0x500: + AT (0x500) + { + _load_core2_jump_program_start_base = .; + KEEP(Reset/core2_jump.o(.text)); + _load_core2_jump_program_end_base = .; + _load_core2_entry_program_start_base = .; + KEEP(Reset/core2_entry.o(.text)); + _load_core2_entry_program_end_base = .; + } + + .LOADER_REMAP (0xFE080000|0x00000000) + 0x700: + AT (0x700) + { + _load_LOADER_REMAP_start_base = .; + KEEP($LD_REMAP_LIB/$LD_DOREMAP.o(.text* .data*)); + _load_LOADER_REMAP_end_base = .; + KEEP(Reset/configDDR.o (.text* .rodata* .data* .bss*)); + KEEP(Reset/ddr_basic.o (.text* .rodata* .data*)); + KEEP(Reset/ddr_control.o (.text* .rodata*)); + KEEP(Reset/ddr_globals.o (.data*)); + KEEP(Reset/ddr_io.o (.text* .rodata*)); + KEEP(Reset/clk_tree_k.o (.text* .rodata*)); + KEEP(Reset/zqk.o (.text* .rodata*)); + KEEP(Reset/dutyk.o (.text* .rodata* .data* .bss*)); + KEEP(Reset/issue_cmd.o (.text* .rodata*)); + KEEP(Reset/phy_bist.o (.text* .rodata*)); + KEEP(Reset/psdk.o (.text* .rodata*)); + KEEP(Reset/qsen.o (.text* .rodata* .data* .bss*)); + KEEP(Reset/read_eye.o (.text* .rodata* .data*)); + KEEP(Reset/read_vref.o (.text* .rodata*)); + KEEP(Reset/write_eye.o (.text* .rodata* .data*)); + KEEP(Reset/write_vref.o (.text* .rodata* .data* .bss*)); + KEEP(Reset/write_leveling.o (.text* .rodata*)); + KEEP(Reset/register_673c.o(.text* .rodata* .data* .bss*)); + KEEP(Driver/serial.o(.text* .data* .rodata*)); + KEEP(Driver/timer.o(.text* .rodata*)); + KEEP(Debug/debug.o (.text* .data* .bss*)); + KEEP(Common/global.o (.text* .data* .bss*)); + KEEP(Reset/ddr_basic.o(.bss*)); + KEEP(Reset/ddr_io.o(.bss*)); + KEEP(Reset/write_eye.o(.bss*)); + *libgcc.a:*(.text*); + . = ALIGN(4); /* This is MUST. Ensure section size is word aligned. */ + } + . = ALIGN(4); + .LOADER_EXEC ADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP) : + AT (LOADADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP)) + { + _loader_exec_start_base = .; + KEEP(Ctrl_Flow/main.o(.part1*)); + * (.part1) + KEEP(CA9/cache.o(.text)); + _loader_exec_end_base = .; + } + _loader_exec_cpu_addr = LOADADDR(.LOADER_EXEC) + ADDR(.BOOT_EXEC); + _loader_exec_size = SIZEOF(.LOADER_EXEC); + . = ALIGN(4); + .text $LD_BASE_ADDR: + AT (LOADADDR(.LOADER_EXEC) + SIZEOF(.LOADER_EXEC)) + { + _loader_exec_compres_start = .; + _internal_strg_param_start = .; + *(.text*) + _etext = .; + _loader_exec_compres_end = .; + } + + _loader_exec_compress_load_base = LOADADDR(.text); + _loader_exec_compress_load_cpu_addr = LOADADDR(.text) + ADDR(.BOOT_EXEC); + _loader_data_start_base = .; + _load_general_var_base = .; + _image_general_var_base = .; + _sdata = .; + .data : { *(.data*) } + _image_general_var_limit = .; + _edata = .; + _loader_data_cpu_addr = LOADADDR(.data) + ADDR(.BOOT_EXEC); + _loader_data_size = SIZEOF(.data); + .dummy : { LONG (0x00000000) } + . = ALIGN(4); + .got : { *(.got*) } + . = ALIGN(4); + .rodata : + { + *(.rodata*) + . = ALIGN(8); /* This is MUST. Ensure ro size is 2 word aligned. */ + } + + .bss : { + _image_general_zi_zi_base = .; + _sbss = . ; + *(.bss*) + . = ALIGN(0x4000); + _ttb = .; + . = . + 0x4000; + _image_general_zi_zi_limit = .; + _load_load_reset_base = .; + _image_load_reset_base = .; + _image_load_reset_length = .; + _image_load_reset_zi_base = .; + _image_load_reset_zi_limit = .; + _ebss = . ; + } + . = ALIGN(64); + .loader_heap : + { + _loader_heap_base = .; + . += 0xA0000 + 0x20000 + 0x80000; + } + . = ALIGN(64); + .lzma : + { + _lzma_tmp_start = .; + . += 0x10000; + _lzma_tmp_end = .; + } + . = ALIGN(64); + _stack_start = .; + +} + +EXTERN($LD_LDS_EXTERN) diff --git a/board/novatek/na51068/loader/Project/Model/LDS_NM.lds b/board/novatek/na51068/loader/Project/Model/LDS_NM.lds new file mode 100755 index 000000000000..9616ae518db6 --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/LDS_NM.lds @@ -0,0 +1,144 @@ +/* Linker script for malta + * + * Version: Sourcery G++ Lite 4.3-221 + * Support: https://support.codesourcery.com/GNUToolchain/ + * + * Copyright (c) 2007, 2008, 2009 CodeSourcery, Inc. + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + * */ + +/* Rule: + * 1. to use .o in project layer just type the .o name with file extension. (UiFlow.o) + * 2. to use .o in library layer have to add prefix module name. (DscSystem/SysTask.o) + * */ + +OUTPUT_ARCH(arm) +ENTRY(__start) +SEARCH_DIR(.) + +SECTIONS +{ + .BOOT_EXEC 0xFE080000|0x00000000: + AT (0) + { + _stext = .; + _load_BOOT_EXEC_start_base = .; + KEEP(Reset/reset.o(.data*)); + Reset/reset.o(.text*); + _load_BOOT_EXEC_end_base = .; + } + .LOADER_CONFIGRAM (0xFE080000|0x00000000) + 0x30: + AT (0x30) + { + _load_LOADER_CONFIGRAM_start_base = .; + KEEP($LD_REMAP_LIB/$LD_CONFIGRAM.o(.data*)); + _load_LOADER_CONFIGRAM_end_base = .; + _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base = .; + KEEP(Reset/configramFreqParam.o(.data*)); + _load_LOADER_CONFIGRAM_FREQ_PARAM_end_base = .; + } + .LOADER_CONFIGRAM2 (0xFE080000|0x00000000) + 0x200: + AT (0x200) + { + } + + .LOADER_CORE2_ENTRY_PROGRAM (0xFE080000|0x00000000) + 0x300: + AT (0x300) + { + _load_core2_jump_program_start_base = .; + KEEP(Reset/core2_jump.o(.text)); + _load_core2_jump_program_end_base = .; + _load_core2_entry_program_start_base = .; + KEEP(Reset/core2_entry.o(.text)); + _load_core2_entry_program_end_base = .; + } + .LOADER_REMAP (0xFE080000|0x00000000) + 0x4C0: + AT (0x4C0) + { + _load_LOADER_REMAP_start_base = .; + KEEP($LD_REMAP_LIB/$LD_DOREMAP.o(.text*)); + KEEP($LD_REMAP_LIB/$LD_DOREMAP.o(.data*)); + _load_LOADER_REMAP_end_base = .; + KEEP(Reset/configDDR.o(.text*)); + KEEP(Reset/configDDR.o(.rodata*)); + . = ALIGN(4); /* This is MUST. Ensure section size is word aligned. */ + } + . = ALIGN(4); + .LOADER_EXEC ADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP) : + AT (LOADADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP)) + { + _loader_exec_start_base = .; + KEEP(Ctrl_Flow/main.o(.text*)); + * (.part1) + _loader_exec_end_base = .; + } + _loader_exec_cpu_addr = LOADADDR(.LOADER_EXEC) + ADDR(.BOOT_EXEC); + _loader_exec_size = SIZEOF(.LOADER_EXEC); + + . = ALIGN(4); + .text $LD_BASE_ADDR: + AT (LOADADDR(.LOADER_EXEC) + SIZEOF(.LOADER_EXEC)) + { + _loader_exec_compres_start = .; + _internal_strg_param_start = .; + *(.text*) + _etext = .; + _loader_exec_compres_end = .; + } + + _loader_exec_compress_load_base = LOADADDR(.text); + _loader_exec_compress_load_cpu_addr = LOADADDR(.text) + ADDR(.BOOT_EXEC); + _loader_exec_compress_load_size = SIZEOF(.text); + + _loader_data_start_base = .; + _load_general_var_base = .; + _image_general_var_base = .; + _sdata = .; + .data : { *(.data*) } + _image_general_var_limit = .; + _edata = .; + _loader_data_cpu_addr = LOADADDR(.data) + ADDR(.BOOT_EXEC); + + .dummy : { LONG (0x00000000) } + . = ALIGN(4); + .got : { *(.got*) } + . = ALIGN(4); + .rodata : { *(.rodata*) } + . = ALIGN(4); + + .bss : { + _image_general_zi_zi_base = .; + _sbss = . ; + *(.bss*) + . = ALIGN(0x4000); + _ttb = .; + . = . + 0x4000; + _image_general_zi_zi_limit = .; + _load_load_reset_base = .; + _image_load_reset_base = .; + _image_load_reset_length = .; + _image_load_reset_zi_base = .; + _image_load_reset_zi_limit = .; + _ebss = . ; + } + _loader_data_size = SIZEOF(.data) + _image_general_zi_zi_base - _edata; + . = ALIGN(64); + .loader_heap : + { + _loader_heap_base = .; + . += 0xA0000 + 0x20000 + 0x80000; + } + . = ALIGN(64); + _stack_start = .; +} + +EXTERN(bl_mainFlow) diff --git a/board/novatek/na51068/loader/Project/Model/MakeConfig.txt b/board/novatek/na51068/loader/Project/Model/MakeConfig.txt new file mode 100755 index 000000000000..82af4073af66 --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/MakeConfig.txt @@ -0,0 +1,720 @@ +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +#------------------------------------------------------------------------------ +# Loader version : unsigned long loader version definition +#------------------------------------------------------------------------------ +LOADER_VERSION = 0x01000001 +BL_LOADER_VER_PARAM = \ + -D_LDR_VER_="$(LOADER_VERSION)" + +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +# +# Hardware device selection +# +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +#------------------------------------------------------------------------------ +# Select chip version +#------------------------------------------------------------------------------ +#CHIP_VER = A +#CHIP_VER = B + +#------------------------------------------------------------------------------ +# Select LV1 clock rate +# LV1: 491MHz / 593MHz +#------------------------------------------------------------------------------ +#LV1_CLK = 491 +#LV1_CLK = 593 + +#------------------------------------------------------------------------------ +# Select DMA clock rate +#------------------------------------------------------------------------------ +#DMA_CLOCK = LV0 +#DMA_CLOCK = LV1 + +#ifeq "$(DMA_CLOCK)" "LV1" +#ifeq "$(LV1_CLK)" "491" +#DMA_CLOCK = LV1_4 +#else +#DMA_CLOCK = LV1_5 +#endif +#endif + +ifeq "$(CHIP)" "321" +# external dram +else ifeq "$(CHIP)" "323" +# external dram +else + +endif + +#------------------------------------------------------------------------------ +# Select DRAM Size (unit: Giga bit) +#------------------------------------------------------------------------------ +#SDRAM_SIZE = 1024 +#SDRAM_SIZE = 2048 +#SDRAM_SIZE = 4096 + +#------------------------------------------------------------------------------ +# Select DRAM Type (DDR3L curruently NOT available) +#------------------------------------------------------------------------------ +#DRAM_TYPE = DDR3 +#DRAM_TYPE = DDR3L + +#------------------------------------------------------------------------------ +# Select Phy analog block LV / HV +# (Don't modify this item) +#------------------------------------------------------------------------------ +PHY_ANALOG_HV = HV + +#------------------------------------------------------------------------------ +# CPU Core version configuration +# (Don't modify this item) +#------------------------------------------------------------------------------ +#CA53_ARCH32 +#CA9 +CPU_CORE = CA9 + +#------------------------------------------------------------------------------ +# Select internal storage device +#------------------------------------------------------------------------------ +#STORAGEINT = NandEccRS +#STORAGEINT = NandSpi +#STORAGEINT = SpiFlash + +#------------------------------------------------------------------------------ +# Select external storage device +#------------------------------------------------------------------------------ +#STORAGEEXT = Sdio1 +#STORAGEEXT = Sdio2 +#STORAGEEXT = Usb + +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +# +# Software function selection +# +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#------------------------------------------------------------------------------ +# Dram range scan loader support enable +# (Don't modify this item) +#------------------------------------------------------------------------------ +DRAM_RANGE_SCAN_SUPPORT_EN = ENABLE +#DRAM_RANGE_SCAN_SUPPORT_EN = DISABLE + +#------------------------------------------------------------------------------ +# Select GUI interface display or not +#------------------------------------------------------------------------------ +# [CONFIG_RAM_GUI_EN] +# ENABLE +# DISABLE +CONFIG_RAM_GUI_EN = DISABLE + +#------------------------------------------------------------------------------ +# Set binary file build name +#------------------------------------------------------------------------------ +CHIP_SHORT = $(shell echo $(CHIP)|awk '{print substr($$0,length($$0)-2,3)}') + +ifeq "$(STORAGEEXT)" "Eth" +LDR_NAME = loader +else +LDR_NAME = $(BIN_NAME) +endif +BL_UPDATE_CALNAME = FW96$(CHIP_SHORT)C.BIN +BL_CALIBRATION_FWNAME = CALFW680.BIN +TMP_NAME = LD96$(CHIP)1 + +#------------------------------------------------------------------------------ +# 1st NAND configuration support list +#------------------------------------------------------------------------------ +ifeq "$(LOADER_SUPPORT_NAND_1st)" "DEFAULT_NAND_TYPE" + _LOADER_NAND_SUPPORT_NAND_1st_ = default_1 +else +ifeq "$(LOADER_SUPPORT_NAND_1st)" "" + _LOADER_NAND_SUPPORT_NAND_1st_ = default_1 +else + _LOADER_NAND_SUPPORT_NAND_1st_ = $(LOADER_SUPPORT_NAND_1st) +endif +endif +#------------------------------------------------------------------------------ +# 1st NAND configuration support list +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# 2nd NAND configuration support list +#------------------------------------------------------------------------------ +ifeq "$(LOADER_SUPPORT_NAND_2nd)" "DEFAULT_NAND_TYPE" + _LOADER_NAND_SUPPORT_NAND_2nd_=default_2 +else +ifeq "$(LOADER_SUPPORT_NAND_2nd)" "" + _LOADER_NAND_SUPPORT_NAND_2nd_ = default_2 +else + _LOADER_NAND_SUPPORT_NAND_2nd_ = $(LOADER_SUPPORT_NAND_2nd) +endif +endif +#------------------------------------------------------------------------------ +# 2nd NAND configuration support list +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# 3rd NAND configuration support list +#------------------------------------------------------------------------------ +ifeq "$(LOADER_SUPPORT_NAND_3rd)" "DEFAULT_NAND_TYPE" + _LOADER_NAND_SUPPORT_NAND_3rd_ = default_3 +else +ifeq "$(LOADER_SUPPORT_NAND_3rd)" "" + _LOADER_NAND_SUPPORT_NAND_3rd_ = default_3 +else + _LOADER_NAND_SUPPORT_NAND_3rd_ = $(LOADER_SUPPORT_NAND_3rd) +endif +endif + +#------------------------------------------------------------------------------ +# 3rd NAND configuration support list +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Set bootloader specific strings +#------------------------------------------------------------------------------ +STR_MODEL = $(MODEL_DESC) +STR_DATE = $(shell date +%m/%d/%Y) +STR_TIME = $(shell date +%H:%M:%S) + +BL_START = "Loader NT98$(CHIP) Start ..." +BL_UPDATE_LOADERNAME = $(BIN_NAME).BIN + +BL_WRKEY_FWNAME := WRKEY.BIN +BL_UBOOT_FWNAME := UBOOTBIN.BIN + + +MODEL_DESC = "$(CHIP)$(CHIP_VER)_DRAM1_$(DRAM1_CLK)_$(SDRAM_SIZE)Gb_DRAM2_$(SDRAM2_SIZE)Gb" +MODEL_DESC2 = "$(CHIP)$(CHIP_VER)_DRAM1_$(DRAM1_2ND_CLK)_$(SDRAM_2ND_SIZE)Gb_DRAM2_$(SDRAM2_2ND_SIZE)Gb" + +BL_VERSION = "$(MODEL_DESC) $(STR_DATE) $(STR_TIME)" +BL_VERSION2 = "$(MODEL_DESC2) $(STR_DATE) $(STR_TIME)" + +#------------------------------------------------------------------------------ +# Select bootloader compression +# (Don't modify this item) +#------------------------------------------------------------------------------ +# [BL_COMPRESS] +# ENABLE +# DISABLE +BL_COMPRESS = ENABLE + +#Do not modify this parameter 0x08 if loader compress enabled +# [UNCOMPRESSEDPART_SIZE_OFFSET] +# 0x60 +# 0x08 +UNCOMPRESSEDPART_SIZE_OFFSET = 0x08 + +#------------------------------------------------------------------------------ +# Select compressable f/w (main code) +#------------------------------------------------------------------------------ +# [MAINCODE_COMPRESS] +# ENABLE +# DISABLE +MAINCODE_COMPRESS = DISABLE + +#------------------------------------------------------------------------------ +# Select firmware image checksum validation +#------------------------------------------------------------------------------ +# [CHKFWIMAGE] +# NOCHECK +# CHECKSUM +# CRC +CHKFWIMAGE = CHECKSUM + +#------------------------------------------------------------------------------ +# Select loader flow +# (Don't modify this item) +#------------------------------------------------------------------------------ +# [LOADER_FLOW ] +# NORMAL_LDR_FLOW +# MODULE_TST_FLOW +LOADER_FLOW = NORMAL_LDR_FLOW + +ifeq "$(LOADER_FLOW)" "NORMAL_LDR_FLOW" +BL_LOADER_FLOW = 0 +else +BL_LOADER_FLOW = 1 +endif + +BL_LOADER_FLOW_PARAM = \ +-D_BL_MAIN_SPECIAL_FLOW_=$(BL_LOADER_FLOW) + +#------------------------------------------------------------------------------ +# Select Duty calibration ENABLE / DISABLE +#------------------------------------------------------------------------------ +DUTY_CALIBRATION = DISABLE + +#------------------------------------------------------------------------------ +# Select Duty calibration type +# (Don't modify this item) +#------------------------------------------------------------------------------ +# [DUTY_CALIBRATION_TYPE ] +# AUTO +# MANUAL +DUTY_CALIBRATION_TYPE = AUTO + +ifeq "$(DUTY_CALIBRATION_TYPE)" "AUTO" +BL_DUTY_CALIBRATION_TYPE = 0 +else +BL_DUTY_CALIBRATION_TYPE = 1 +endif + +BL_DUTY_CALIBRATION_TYPE_PARAM = \ +-D_LOADER_DUTY_CALIBRATION_TYPE_=$(BL_DUTY_CALIBRATION_TYPE) + +#------------------------------------------------------------------------------ +# Select Duty calibration LOG ENABLE / DISABLE +#------------------------------------------------------------------------------ +# [DUTY_CALIBRATION_LOG] +# ENABLE +# DISABLE +DUTY_CALIBRATION_LOG = DISABLE + +ifeq "$(LOADER_FLOW)" "MODULE_TST_FLOW" +DUTY_CALIBRATION = DISABLE +endif + +ifeq "$(DUTY_CALIBRATION)" "DISABLE" +DUTY_CALIBRATION_LOG = DISABLE +else +ifeq "$(DUTY_CALIBRATION_TYPE)" "MANUAL" +DUTY_CALIBRATION_LOG = DISABLE +endif +endif + +ifeq "$(DUTY_CALIBRATION)" "ENABLE" +BL_DUTY_CALIBRATION = 1 +else +BL_DUTY_CALIBRATION = 0 +endif + +ifeq "$(DUTY_CALIBRATION_LOG)" "ENABLE" +BL_DUTY_CALIBRATION_LOG = 1 +else +BL_DUTY_CALIBRATION_LOG = 0 +endif + +BL_DUTY_CALIBRATION_PARAM = \ +-D_LOADER_DUTY_CALIBRATION_LOG_=$(BL_DUTY_CALIBRATION_LOG)\ +-D_LOADER_DUTY_CALIBRATION_=$(BL_DUTY_CALIBRATION) + + +#------------------------------------------------------------------------------ +# Bootloader update image file name parameters +#------------------------------------------------------------------------------ +BL_UPDATE_NAME_PARAM = \ + -D_UPDATE_FW_NAME_=\"$(BL_UPDATE_FWNAME)\" \ + -D_UPDATE_LOADER_NAME_=\"$(BL_UPDATE_LOADERNAME)\" \ + -D_RUN_FW_NAME_=\"$(BL_RUN_FWNAME)\" \ + -D_UPDATE_CALFW_NAME_=\"$(BL_UPDATE_CALNAME)\"\ + -D_RUN_CAL_FW_NAME_=\"$(BL_CALIBRATION_FWNAME)\" \ + -D_WR_KEY_FW_NAME_=\"$(BL_WRKEY_FWNAME)\" \ + -D_RECOVERY_FW_NAME_=\"$(BL_RECOVERY_FWNAME)\" + + +#------------------------------------------------------------------------------ +# Bootloader specific strings parameters +#------------------------------------------------------------------------------ +BL_STRINGS_PARAM = \ +-D_LOADER_VERSION_STR_=\"\\\r\\\n$(BL_VERSION)\\\r\\\n\\\r\\\n\" \ +-D_LOADER_VERSION_STR2_=\"\\\r\\\n$(BL_VERSION2)\\\r\\\n\\\r\\\n\" \ +-D_LOADER_START_STR_=\"\\\r\\\n$(BL_START)\\\r\\\n\" + +#------------------------------------------------------------------------------ +# Bootloader compression parameters +#------------------------------------------------------------------------------ +ifeq "$(BL_COMPRESS)" "ENABLE" + BL_COMPRESS_CFG = 1 + ifeq "$(CHIP)" "321" + RESETFLAG = LZ321 + else ifeq "$(CHIP)" "323" + RESETFLAG = LZ323 + else ifeq "$(CHIP)" "621" + RESETFLAG = LZ621 + else ifeq "$(CHIP)" "623" + RESETFLAG = LZ623 + else ifeq "$(CHIP)" "NC321" + RESETFLAG = LZNC321 + else ifeq "$(CHIP)" "NC323" + RESETFLAG = LZNC323 + else + RESETFLAG = LZ + endif +else + $(error BL_COMPRESS need enabled!!!) + BL_COMPRESS_CFG = 0 + ifeq "$(CHIP)" "321" + RESETFLAG = NM321 + else + RESETFLAG = NM + endif +endif + +ifeq "$(MAINCODE_COMPRESS)" "ENABLE" + FWCOMPRESS_PARAM = -D_MAINCODE_COMPRESS_=1 +else + FWCOMPRESS_PARAM = -D_MAINCODE_COMPRESS_=0 +endif + +BL_COMPRESS_PARAM = \ +-D_LOADER_COMPRESSED_=$(BL_COMPRESS_CFG) + +BL_COMPRESS_PARAM_ASM = +#\ +#-PD "_LOADER_COMPRESSED_ SETA $(BL_COMPRESS_CFG)" + +#------------------------------------------------------------------------------ +# Firmware image checksum validation parameters +#------------------------------------------------------------------------------ +ifeq "$(CHKFWIMAGE)" "NOCHECK" + CHKFWIMAGE_CFG = FW_CHECK_NOCHECK +endif + +ifeq "$(CHKFWIMAGE)" "CHECKSUM" + CHKFWIMAGE_CFG = FW_CHECK_CHECKSUM +endif + +ifeq "$(CHKFWIMAGE)" "CRC" + CHKFWIMAGE_CFG = FW_CHECK_CRC +endif + +CHKFWIMAGE_PARAM = \ + -DFW_CHECK_NOCHECK=0 \ + -DFW_CHECK_CHECKSUM=1 \ + -DFW_CHECK_CRC=2 \ + -DFW_CHECK_METHOD=$(CHKFWIMAGE_CFG) + +#------------------------------------------------------------------------------ +# External Storage define +#------------------------------------------------------------------------------ +ifeq "$(STORAGEEXT)" "Sdio1" + STORAGE_EXT_TYPE = STORAGE_EXT_SDIO1 +else ifeq "$(STORAGEEXT)" "Uart" + STORAGE_EXT_TYPE = STORAGE_EXT_UART +else ifeq "$(STORAGEEXT)" "Usb" + STORAGE_EXT_TYPE = STORAGE_EXT_USB +else ifeq "$(STORAGEEXT)" "Eth" + STORAGE_EXT_TYPE = STORAGE_EXT_ETH +else ifeq "$(STORAGEEXT)" "NONE" + STORAGE_EXT_TYPE = STORAGE_EXT_NONE +else + STORAGE_EXT_TYPE = STORAGE_EXT_UNKOWN +endif + +EXTSTRG_PARAM = \ + -DSTORAGE_EXT_UNKOWN=0 \ + -DSTORAGE_EXT_SDIO1=1 \ + -DSTORAGE_EXT_UART=2 \ + -DSTORAGE_EXT_USB=3 \ + -DSTORAGE_EXT_ETH=4 \ + -DSTORAGE_EXT_NONE=5\ + -DSTORAGE_EXT_TYPE=$(STORAGE_EXT_TYPE) + +#------------------------------------------------------------------------------ +# SPI define +#------------------------------------------------------------------------------ +ifeq "$(STORAGEINT)" "SpiFlash" + STORAGE_INT_TYPE = -DSTORAGEINT_SPI=1 +else + STORAGE_INT_TYPE = +endif + +ifeq "$(STORAGEINT)" "SpiFlash" +else ifeq "$(STORAGEINT)" "NandSpi" +else +$(error Neither SpiFlash nor NandSpi was configured @ STORAGEINT) +endif + + +ifeq "$(SPI_SETTING)" "SPI_4BITS" + SPI_PINMUX = SPI_PINMUX_4BITS +endif + +ifeq "$(SPI_SETTING)" "SPI_NORMAL" + SPI_PINMUX = SPI_PINMUX_NORMAL +endif + +SPIPINMUX_PARAM = \ + -DSPI_PINMUX_NORMAL=0 \ + -DSPI_PINMUX_4BITS=1 \ + -DSPI_PINMUX_SETTING=$(SPI_PINMUX) + +#------------------------------------------------------------------------------ +# Dram range scan support enable parameters +#------------------------------------------------------------------------------ +ifeq "$(DRAM_RANGE_SCAN_SUPPORT_EN)" "ENABLE" + DRAM_SCAN_EN = 1 +else + DRAM_SCAN_EN = 0 +endif + +DRAMSCAN_PARAM = -DDRAM_RANGE_SCAN_EN=$(DRAM_SCAN_EN) + +#------------------------------------------------------------------------------ +# Chip ID related parameters +#------------------------------------------------------------------------------ +ifeq "$(CHIP)" "321" +CHIPID = 321 +else +CHIPID = 321 +endif +#------------------------------------------------------------------------------ +# Secure boot parameters +#------------------------------------------------------------------------------ +ifeq "$(SECUREBOOT)" "Secure" +SECUREBOOT_MSG = 0 +ifeq "$(SIGNATUREMETHOD)" "AES128" +#Secure enable + AES signature +SECURE_BOOT = 1 +else +#Secure enable + RSA signature +SECURE_BOOT = 2 +endif +ifeq "$(ENCRYPTDATA)" "AES128" +ENCRYPT_DATA = 1 +else +ENCRYPT_DATA = 0 +endif +else +SECURE_BOOT = 0 +endif + + + +#------------------------------------------------------------------------------ +# DRAM ini file name generation +#------------------------------------------------------------------------------ +#ifeq "$(DRAM_TYPE)" "DDR3L" +# ifeq "$(DMA_CLOCK)" "LV0" +# $(error DDR3L only support DMA_CLOCK = LV1) +# endif +# ifeq "$(LV1_CLK)" "373" +# $(error DDR3L only support LV1_CLK = 400) +# endif +# DDR_FILE_STR = _DDR3L +#else +# DDR_FILE_STR = +#endif + +ifeq "$(DRAM_2ND_TBL_DETECT)" "1" + +ifeq "$(DRAM1_16BIT_MODE)" "Enabled" +DDR_INI_STR = $(CHIP)/51068A_$(DRAM_TYPE)_16_$(SDRAM_SIZE)_$(SDRAM2_SIZE)_$(DRAM1_CLK)_$(DRAM_MUX).ini +else +DDR_INI_STR = $(CHIP)/51068A_$(DRAM_TYPE)_32_$(SDRAM_SIZE)_$(SDRAM2_SIZE)_$(DRAM1_CLK)_$(DRAM_MUX).ini +endif + +ifeq "$(DRAM1_2ND_16BIT_MODE)" "Enabled" +DDR_INI2_STR = $(CHIP)/51068A_$(DRAM_2ND_TYPE)_16_$(SDRAM_2ND_SIZE)_$(SDRAM2_2ND_SIZE)_$(DRAM1_2ND_CLK)_$(DRAM_2ND_MUX).ini +else +DDR_INI2_STR = $(CHIP)/51068A_$(DRAM_2ND_TYPE)_32_$(SDRAM_2ND_SIZE)_$(SDRAM2_2ND_SIZE)_$(DRAM1_2ND_CLK)_$(DRAM_2ND_MUX).ini +endif + +2ND_INI = 1 + +else ifeq "$(DRAM_2ND_TBL_DETECT)" "2" + +ifeq "$(DRAM1_16BIT_MODE)" "Enabled" +DDR_INI_STR = $(CHIP)/51068A_$(DRAM_TYPE)_16_$(SDRAM_SIZE)_$(SDRAM2_SIZE)_$(DRAM1_CLK)_$(DRAM_MUX).ini +else +DDR_INI_STR = $(CHIP)/51068A_$(DRAM_TYPE)_32_$(SDRAM_SIZE)_$(SDRAM2_SIZE)_$(DRAM1_CLK)_$(DRAM_MUX).ini +endif + +ifeq "$(DRAM1_2ND_16BIT_MODE)" "Enabled" +DDR_INI2_STR = $(CHIP)/51068A_$(DRAM_2ND_TYPE)_16_$(SDRAM_2ND_SIZE)_$(SDRAM2_2ND_SIZE)_$(DRAM1_2ND_CLK)_$(DRAM_2ND_MUX).ini +else +DDR_INI2_STR = $(CHIP)/51068A_$(DRAM_2ND_TYPE)_32_$(SDRAM_2ND_SIZE)_$(SDRAM2_2ND_SIZE)_$(DRAM1_2ND_CLK)_$(DRAM_2ND_MUX).ini +endif + +2ND_INI = 2 + +else ifeq "$(DRAM_2ND_TBL_DETECT)" "3" + +ifeq "$(DRAM1_16BIT_MODE)" "Enabled" +DDR_INI_STR = $(CHIP)/51068A_$(DRAM_TYPE)_16_$(SDRAM_SIZE)_$(SDRAM2_SIZE)_$(DRAM1_CLK)_$(DRAM_MUX).ini +else +DDR_INI_STR = $(CHIP)/51068A_$(DRAM_TYPE)_32_$(SDRAM_SIZE)_$(SDRAM2_SIZE)_$(DRAM1_CLK)_$(DRAM_MUX).ini +endif + +ifeq "$(DRAM1_2ND_16BIT_MODE)" "Enabled" +DDR_INI2_STR = $(CHIP)/51068A_$(DRAM_2ND_TYPE)_16_$(SDRAM_2ND_SIZE)_$(SDRAM2_2ND_SIZE)_$(DRAM1_2ND_CLK)_$(DRAM_2ND_MUX).ini +else +DDR_INI2_STR = $(CHIP)/51068A_$(DRAM_2ND_TYPE)_32_$(SDRAM_2ND_SIZE)_$(SDRAM2_2ND_SIZE)_$(DRAM1_2ND_CLK)_$(DRAM_2ND_MUX).ini +endif + +2ND_INI = 3 + +else ifeq "$(DRAM_2ND_TBL_DETECT)" "4" + +ifeq "$(DRAM1_16BIT_MODE)" "Enabled" +DDR_INI_STR = $(CHIP)/51068A_$(DRAM_TYPE)_16_$(SDRAM_SIZE)_$(SDRAM2_SIZE)_$(DRAM1_CLK)_$(DRAM_MUX).ini +else +DDR_INI_STR = $(CHIP)/51068A_$(DRAM_TYPE)_32_$(SDRAM_SIZE)_$(SDRAM2_SIZE)_$(DRAM1_CLK)_$(DRAM_MUX).ini +endif + +ifeq "$(DRAM1_2ND_16BIT_MODE)" "Enabled" +DDR_INI2_STR = $(CHIP)/51068A_$(DRAM_2ND_TYPE)_16_$(SDRAM_2ND_SIZE)_$(SDRAM2_2ND_SIZE)_$(DRAM1_2ND_CLK)_$(DRAM_2ND_MUX).ini +else +DDR_INI2_STR = $(CHIP)/51068A_$(DRAM_2ND_TYPE)_32_$(SDRAM_2ND_SIZE)_$(SDRAM2_2ND_SIZE)_$(DRAM1_2ND_CLK)_$(DRAM_2ND_MUX).ini +endif + +2ND_INI = 4 + +else ifeq "$(DRAM_2ND_TBL_DETECT)" "5" + +ifeq "$(DRAM1_16BIT_MODE)" "Enabled" +DDR_INI_STR = $(CHIP)/51068A_$(DRAM_TYPE)_16_$(SDRAM_SIZE)_$(SDRAM2_SIZE)_$(DRAM1_CLK)_$(DRAM_MUX).ini +else +DDR_INI_STR = $(CHIP)/51068A_$(DRAM_TYPE)_32_$(SDRAM_SIZE)_$(SDRAM2_SIZE)_$(DRAM1_CLK)_$(DRAM_MUX).ini +endif + +ifeq "$(DRAM1_2ND_16BIT_MODE)" "Enabled" +DDR_INI2_STR = $(CHIP)/51068A_$(DRAM_2ND_TYPE)_16_$(SDRAM_2ND_SIZE)_$(SDRAM2_2ND_SIZE)_$(DRAM1_2ND_CLK)_$(DRAM_2ND_MUX).ini +else +DDR_INI2_STR = $(CHIP)/51068A_$(DRAM_2ND_TYPE)_32_$(SDRAM_2ND_SIZE)_$(SDRAM2_2ND_SIZE)_$(DRAM1_2ND_CLK)_$(DRAM_2ND_MUX).ini +endif + +2ND_INI = 5 + +else + +ifeq "$(DRAM1_16BIT_MODE)" "Enabled" +DDR_INI_STR = $(CHIP)/51068A_$(DRAM_TYPE)_16_$(SDRAM_SIZE)_$(SDRAM2_SIZE)_$(DRAM1_CLK)_$(DRAM_MUX).ini +else +DDR_INI_STR = $(CHIP)/51068A_$(DRAM_TYPE)_32_$(SDRAM_SIZE)_$(SDRAM2_SIZE)_$(DRAM1_CLK)_$(DRAM_MUX).ini +endif + +DDR_INI2_STR = "" +2ND_INI = 0 + +endif + +#DDR_INI2_STR = $(CHIP)/51068A_DRAM2_$(DRAM2_CLK)_$(SDRAM2_SIZE).ini + + +ifeq "$(DRAM1_POWEROFF_S3)" "Enabled" +DRAM1_RST_PARAM = 1 +else +DRAM1_RST_PARAM = 0 +endif + +ifeq "$(DRAM_WIDTH_DETECT)" "Enabled" +DRAM_WIDTH_DET_PARAM = 1 +else +DRAM_WIDTH_DET_PARAM = 0 +endif + +ifeq "$(DRAM1_16BIT_MODE)" "Enabled" +DRAM1_16BIT_PARAM = 1 +else +DRAM1_16BIT_PARAM = 0 +endif + +ifeq "$(DRAM_SSC_ENABLE)" "Normal" +DRAM_SSC_PARAM = 0 +else ifeq "$(DRAM_SSC_ENABLE)" "1" +DRAM_SSC_PARAM = 1 +else ifeq "$(DRAM_SSC_ENABLE)" "2" +DRAM_SSC_PARAM = 2 +else ifeq "$(DRAM_SSC_ENABLE)" "3" +DRAM_SSC_PARAM = 3 +else ifeq "$(DRAM_SSC_ENABLE)" "4" +DRAM_SSC_PARAM = 4 +else ifeq "$(DRAM_SSC_ENABLE)" "5" +DRAM_SSC_PARAM = 5 +else +DRAM_SSC_PARAM = 0 +endif + +ifeq "$(DRAM_HL_SWAP)" "Enabled" +DRAM_HL_SWAP_PARAM = 1 +else +DRAM_HL_SWAP_PARAM = 0 +endif + +ifeq "$(DRAM_SA_SWAP)" "Enabled" +DRAM_SA_SWAP_PARAM = 1 +else +DRAM_SA_SWAP_PARAM = 0 +endif + + + +#---------------------------------------------------------------------- +# set the scatter file name here +#---------------------------------------------------------------------- +ifeq "$(BL_COMPRESS)" "ENABLE" +SCATTER = LDS_LZ.lds +else +SCATTER = LDS_NM.lds +endif + +#---------------------------------------------------------------------- +# set loader execution DRAM address +#---------------------------------------------------------------------- +# 255MB +ifeq "$(SDRAM_SIZE)" "1024" +LD_BASE_ADDR = 0 +else ifeq "$(SDRAM_SIZE)" "2048" +LD_BASE_ADDR = 0 +else +LD_BASE_ADDR = 0 +endif +BL_LDADDR_PARAM = \ +-DLD_BASE_ADDR=$(LD_BASE_ADDR) + +#---------------------------------------------------------------------- +# set loader internal storage type +#---------------------------------------------------------------------- +BL_STORAGEINT_PARAM = \ +-D_STORAGEINT_$(STORAGEINT)_ + +#---------------------------------------------------------------------- +# Model parameters +#---------------------------------------------------------------------- +ifeq "$(MODEL)" "EMU_EVB" + MODEL_TYPE = _MODEL_EMU_EVB_ +endif + +ifeq "$(MODEL)" "DEMO1_EVB" + MODEL_TYPE = _MODEL_DEMO1_EVB_ +endif + +ifeq "$(MODEL)" "ARTOSYN_EVB" + MODEL_TYPE = _MODEL_ARTOSYN_EVB_ +endif +MODEL_PARAM = \ + -D_MODEL_EMU_EVB_=0 \ + -D_MODEL_DEMO1_EVB_=1 \ + -D_MODEL_ARTOSYN_EVB_=2 \ + -D_MODEL_DSC_=$(MODEL_TYPE) +#------------------------------------------------------------------------------- +# uboot encrypt binary or not parameters +#------------------------------------------------------------------------------- +ifeq "$(SECUREBOOT_DECRYPT_UBOOT)" "Normal" + UBOOT_DECRYPT_TYPE = _SECURE_DECRYPT_UBOOT_DISABLE_ +else ifeq "$(SECUREBOOT_DECRYPT_UBOOT)" "Secure" + UBOOT_DECRYPT_TYPE = _SECURE_DECRYPT_UBOOT_ENABLE_ +else + UBOOT_DECRYPT_TYPE = _SECURE_DECRYPT_UBOOT_DISABLE_ +endif + +SECURE_DECRYPT_UBOOT_PARAM = \ + -D_SECURE_DECRYPT_UBOOT_DISABLE_=0 \ + -D_SECURE_DECRYPT_UBOOT_ENABLE_=1 \ + -DSECURE_DECRYPT_UBOOT=$(UBOOT_DECRYPT_TYPE) + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +UBOOT_BIND_PARAM = \ + -D_$(UBOOT_BIND)_ \ + -D_SDRAM_SIZE_=$(SDRAM_SIZE) diff --git a/board/novatek/na51068/loader/Project/Model/Makefile b/board/novatek/na51068/loader/Project/Model/Makefile new file mode 100755 index 000000000000..176124fae9ca --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/Makefile @@ -0,0 +1,129 @@ +#---------------------------------------------------------------------- +# set the ROOT directory here +#---------------------------------------------------------------------- +ROOT_DIR = ../.. + +#---------------------------------------------------------------------- +# include make config file +#---------------------------------------------------------------------- +include ModelConfig.txt +include ModelConfig_$(MODEL).txt +include MakeConfig.txt + +#---------------------------------------------------------------------- +# set the project name here +#---------------------------------------------------------------------- +PRJ_NAME = Loader$(CHIP) + +#---------------------------------------------------------------------- +# set loader execution DRAM address +#---------------------------------------------------------------------- +ifeq "$(SDRAM_SIZE)" "1024" +# 1Gb*2 => 256MB => 0x1000_0000 +LD_BASE_ADDR = 0xF000000 +else ifeq "$(SDRAM_SIZE)" "2048" +# 2Gb*2 => 512MB => 0x2000_0000 +LD_BASE_ADDR = 0x1F000000 +else +# 4Gb*2 => 1024MB => 0x4000_0000 +LD_BASE_ADDR = 0x3F000000 +endif + +ifeq "$(LOADER_DRAM_ADDR)" "" +LD_BASE_ADDR = 0x00100000 +else +LD_BASE_ADDR = $(LOADER_DRAM_ADDR) +endif + +#---------------------------------------------------------------------- +# set the include directory here +#---------------------------------------------------------------------- +INC_DIR = . \ + ../../Include + +#---------------------------------------------------------------------- +# add/delete the project assembly files here +#---------------------------------------------------------------------- +#ASM = Src/reset.S \ +#Src/remap.S + + + + +#---------------------------------------------------------------------- +# add/delete the project C source files here +#---------------------------------------------------------------------- +SRC = \ + Src/prj_main.c \ + Src/USB/usb_update.c \ + Src/UART/uart_upgrade.c + + + + +#---------------------------------------------------------------------- +# set the image output directory here +#---------------------------------------------------------------------- +IMG_BASE_DIR = $(PRJ_NAME)_Data + +#---------------------------------------------------------------------- +# set the library directory here +#---------------------------------------------------------------------- +LIB_BASE_DIR = ../../LIB + +#---------------------------------------------------------------------- +# set the library directory here +#---------------------------------------------------------------------- +ARC_BASE_DIR = $(ROOT_DIR)/ARC + +#---------------------------------------------------------------------- +# add additional C and assembly flags here, for example, -O2 +#---------------------------------------------------------------------- +C_DEFINE_EXT = \ + $(MODEL_PARAM) \ + $(BL_UPDATE_NAME_PARAM) \ + $(BL_STRINGS_PARAM) \ + $(BL_COMPRESS_PARAM) \ + $(CHKFWIMAGE_PARAM) \ + $(FWCOMPRESS_PARAM) \ + $(BL_LOADER_VER_PARAM) \ + $(BL_LDADDR_PARAM) \ + $(EXTSTRG_PARAM) \ + $(STORAGE_INT_TYPE)\ + $(SPIPINMUX_PARAM)\ + $(DRAMSCAN_PARAM)\ + $(BL_DUTY_CALIBRATION_PARAM)\ + $(BL_DUTY_CALIBRATION_TYPE_PARAM)\ + $(BL_LOADER_FLOW_PARAM) \ + $(BL_STORAGEINT_PARAM) \ + $(SECURE_DECRYPT_UBOOT_PARAM) \ + $(UBOOT_BIND_PARAM) + +CFLAGS_R = $(C_DEFINE_EXT) +CFLAGS_D = $(C_DEFINE_EXT) + +ASMFLAGS_R = \ + $(BL_COMPRESS_PARAM_ASM) + +ASMFLAGS_D = \ + $(BL_COMPRESS_PARAM_ASM) + +GCCFLAGS = \ + $(MODEL_PARAM) \ + $(BL_UPDATE_NAME_PARAM) \ + $(BL_STRINGS_PARAM) \ + $(BL_COMPRESS_PARAM) \ + $(CHKFWIMAGE_PARAM) \ + $(FWCOMPRESS_PARAM) \ + $(BL_LOADER_VER_PARAM) \ + $(STORAGE_INT_TYPE)\ + $(DRAMSCAN_PARAM)\ + $(BL_DUTY_CALIBRATION_PARAM)\ + $(BL_DUTY_CALIBRATION_TYPE_PARAM)\ + $(BL_LOADER_FLOW_PARAM) + +#---------------------------------------------------------------------- +# include common parts of the makefile +#---------------------------------------------------------------------- +MAKE_COMMON_DIR = ../../MakeCommon +include $(MAKE_COMMON_DIR)/OutputImg.txt diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig.txt new file mode 100755 index 000000000000..03dc4ff4f243 --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig.txt @@ -0,0 +1,18 @@ +#---------------------------------------------------------------------- +# Set model here +#---------------------------------------------------------------------- +# EMU_EVB +# DEMO1_EVB +# 321_DDR3_4Gx1_NAND_SYS +# 321_DDR4_8GX1_NAND_SYS +# 323_DDR3_4GX2_NAND_EVB_SYS +# 323_DDR4_8GX2_NAND_EVB_SYS +# NC321_DDR3_4GX1_NAND_SYS +# NC323_DDR3_4GX2_NAND_EVB_SYS +# WRLD_USB_321_DDR3_4GX1_SYS +# WRLD_USB_321_DDR4_8GX1_NAND_SYS +# WRLD_USB_323_DDR3_4GX2_NAND_EVB +# WRLD_USB_323_DDR4_8GX2_SYS +# WRLD_USB_NC321_DDR3_4GX1_SYS +# WRLD_USB_NC323_DDR3_4GX2_NAND_EVB_SYS +MODEL = EMU_EVB diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_321_DDR3_4Gx1_NAND_SYS.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_321_DDR3_4Gx1_NAND_SYS.txt new file mode 100755 index 000000000000..243f796d6dca --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_321_DDR3_4Gx1_NAND_SYS.txt @@ -0,0 +1,210 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = 321 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1066 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 4096 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 0 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = UBT + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Enabled + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR3 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = Sdio1 + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_321_DDR4_8GX1_NAND_SYS.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_321_DDR4_8GX1_NAND_SYS.txt new file mode 100755 index 000000000000..87b4f5a21cdb --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_321_DDR4_8GX1_NAND_SYS.txt @@ -0,0 +1,210 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = 321 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1200 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 8192 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 0 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = UBT + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Enabled + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR4 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = Sdio1 + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_323_DDR3_4GX2_NAND_EVB_SYS.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_323_DDR3_4GX2_NAND_EVB_SYS.txt new file mode 100755 index 000000000000..45d33bbc4a25 --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_323_DDR3_4GX2_NAND_EVB_SYS.txt @@ -0,0 +1,210 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = 323 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1066 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 4096 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 4096 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = FB + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Normal + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR3 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = Sdio1 + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_323_DDR4_8GX2_NAND_EVB_SYS.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_323_DDR4_8GX2_NAND_EVB_SYS.txt new file mode 100755 index 000000000000..547858eb46ac --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_323_DDR4_8GX2_NAND_EVB_SYS.txt @@ -0,0 +1,210 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = 323 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1200 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 8192 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 8192 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = FB + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Normal + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR4 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = Sdio1 + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_EMU_EVB.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_EMU_EVB.txt new file mode 100755 index 000000000000..8b3deaf7769e --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_EMU_EVB.txt @@ -0,0 +1,210 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = 323 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1200 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 4096 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 4096 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = FB + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Normal + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR4 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = Sdio1 + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_NC321_DDR3_4GX1_NAND_SYS.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_NC321_DDR3_4GX1_NAND_SYS.txt new file mode 100755 index 000000000000..d81ce46c64e2 --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_NC321_DDR3_4GX1_NAND_SYS.txt @@ -0,0 +1,210 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = NC321 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1066 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 4096 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 0 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = UBT + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Enabled + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR3 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = Sdio1 + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_NC323_DDR3_4GX2_NAND_EVB_SYS.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_NC323_DDR3_4GX2_NAND_EVB_SYS.txt new file mode 100755 index 000000000000..e56701408d5d --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_NC323_DDR3_4GX2_NAND_EVB_SYS.txt @@ -0,0 +1,210 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = NC323 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1066 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 4096 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 4096 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = FB + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Normal + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR3 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = Sdio1 + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_321_DDR3_4GX1_SYS.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_321_DDR3_4GX1_SYS.txt new file mode 100755 index 000000000000..453fbf72fcbe --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_321_DDR3_4GX1_SYS.txt @@ -0,0 +1,210 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = 321 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1066 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 4096 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 0 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = UBT + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Enabled + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR3 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = Usb + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_321_DDR4_8GX1_NAND_SYS.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_321_DDR4_8GX1_NAND_SYS.txt new file mode 100755 index 000000000000..afacb7b4989d --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_321_DDR4_8GX1_NAND_SYS.txt @@ -0,0 +1,210 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = 321 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1200 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 8192 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 0 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = UBT + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Enabled + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR4 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = Usb + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_323_DDR3_4GX2_NAND_EVB.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_323_DDR3_4GX2_NAND_EVB.txt new file mode 100755 index 000000000000..c7cce82189b5 --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_323_DDR3_4GX2_NAND_EVB.txt @@ -0,0 +1,210 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = 323 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1066 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 4096 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 4096 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = FB + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Normal + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR3 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = Usb + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_323_DDR4_8GX2_SYS.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_323_DDR4_8GX2_SYS.txt new file mode 100755 index 000000000000..3bc05f982493 --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_323_DDR4_8GX2_SYS.txt @@ -0,0 +1,210 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = 323 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1200 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 8192 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 8192 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = FB + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Normal + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR4 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = Usb + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_NC321_DDR3_4GX1_SYS.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_NC321_DDR3_4GX1_SYS.txt new file mode 100755 index 000000000000..3468ae0ff0dc --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_NC321_DDR3_4GX1_SYS.txt @@ -0,0 +1,210 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = NC321 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1066 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 4096 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 0 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = UBT + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Enabled + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR3 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = Usb + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_NC323_DDR3_4GX2_NAND_EVB_SYS.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_NC323_DDR3_4GX2_NAND_EVB_SYS.txt new file mode 100755 index 000000000000..b2f5ac65924b --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_WRLD_USB_NC323_DDR3_4GX2_NAND_EVB_SYS.txt @@ -0,0 +1,210 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = NC323 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1066 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 4096 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 4096 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = FB + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Normal + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR3 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = Usb + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin diff --git a/board/novatek/na51068/loader/Project/Model/Src/UART/uart_upgrade.c b/board/novatek/na51068/loader/Project/Model/Src/UART/uart_upgrade.c new file mode 100755 index 000000000000..e65a7d7a9d04 --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/Src/UART/uart_upgrade.c @@ -0,0 +1,211 @@ +#include <string.h> +#include "constant.h" +#include "top_ctrl.h" +#include "uart_upgrade.h" +#include "rcw_macro.h" +#include "scsi_op.h" +#include "debug.h" +#include "debug.h" +#include "global.h" + +UART_Verify_CB guiUARTCheck_cb; +UART_Vendor_CB guiUARTVendor_cb; +static int uartrom_exit = 0; +static unsigned int chipid = 0; +static CONSOLE_OBJ *m_console = NULL; +static INT32U nvtuart_opened = 1; + +static INT32U calc_sum(INT32U dat0, INT32U dat1, INT32U dat2, INT32U dat3) +{ + INT32U sum = 0; + + sum = (dat0 & 0xFFFF) + ((dat0 >> 16)) + (dat1 & 0xFFFF) + ((dat1 >> 16)) + + (dat2 & 0xFFFF) + ((dat2 >> 16)) + (dat3 & 0xFFFF) + ((dat3 >> 16)) + 28; + + return sum & 0xFFFF; +} + +static INT32U make_sum(INT32U dat0, INT32U dat1, INT32U dat2, INT32U dat3) +{ + INT32U sum = 0; + + sum = (dat0 & 0xFFFF) + ((dat0 >> 16)) + (dat1 & 0xFFFF) + ((dat1 >> 16)) + + (dat2 & 0xFFFF) + ((dat2 >> 16)) + (dat3 & 0xFFFF) + ((dat3 >> 16)) + 28; + + sum = (~sum + 1) & 0xFFFF; + + return sum; +} + +static int recv_data(char *p, unsigned int len) +{ + while (len) { + *p = m_console->getc(); + p++; + len--; + } + return 0; +} + +static int send_data(char *p, unsigned int len) +{ + while (len) { + m_console->putc(*p); + p++; + len--; + } + return 0; +} + +static void uart_send_csw(INT32U *cdb, int er) +{ + char *p_cdb = (char *)cdb; + p_cdb[IDX_CDB_UART_STATUS_ER] = er; + + unsigned int sum = make_sum(cdb[0], cdb[1], cdb[2], (cdb[3] & 0xFFFF)); + cdb[3] |= sum << 16; + + send_data((char *)cdb, sizeof(INT32U) * 4); +} + + +static int uart_cmd(INT32U *cdb) +{ + unsigned int cmd_id = ((cdb[0] >> 8) & 0xFF); + unsigned int insize = ((cdb[1] >> 16) & 0xFFFF) + ((cdb[2] & 0xFFFF) << 16); + unsigned int tmp1, tmp2; + + switch (cmd_id) { + case SCSIOP_OUT_OPEN_DEVICE: + nvtuart_opened = 1; + uart_send_csw(cdb, 0); + break; + + case SCSIOP_IN_WAIT_DONE: + uartrom_exit = 1; + uart_send_csw(cdb, 0); + break; + + case SCSIOP_IN_IS_NVT: + chipid = uart_read_reg(TOP_CTRL_VERSION_REG); + uart_send_csw(cdb, 0); + send_data((char *)&chipid, sizeof(chipid)); + break; + + case SCSIOP_OUT_ADDR_WRITE: + tmp1 = ((cdb[0] >> 16) & 0xFFFF) + ((cdb[1] & 0xFFFF) << 16); //addr + tmp2 = ((cdb[1] >> 16) & 0xFFFF) + ((cdb[2] & 0xFFFF) << 16); //data + *(INT32U *)tmp1 = tmp2; + __asm__ __volatile__("dsb\n\t"); + uart_send_csw(cdb, 0); + break; + + case SCSIOP_IN_ADDR_READ: + tmp1 = ((cdb[0] >> 16) & 0xFFFF) + ((cdb[1] & 0xFFFF) << 16); //addr + tmp2 = *(INT32U *)tmp1; + __asm__ __volatile__("dsb\n\t"); + uart_send_csw(cdb, 0); + send_data((char *)&tmp1, sizeof(tmp2)); //repeat addr + send_data((char *)&tmp2, sizeof(tmp2)); //reply data + break; + + default: + if (guiUARTCheck_cb != NULL) { + NVT_SCSI_CBW cbw; + unsigned int OutDataBuf = 0; + utl_memset(&cbw, 0, sizeof(cbw)); + cbw.dCBWDataTransferLength = insize; + utl_memcpy(cbw.CBWCB, cdb, 4 * sizeof(unsigned int)); + int er = guiUARTCheck_cb((unsigned int)&cbw, (unsigned int *)&OutDataBuf, (unsigned int *)&insize); + utl_memcpy(cdb, cbw.CBWCB, 4 * sizeof(unsigned int)); + if (er != 0) { + uart_send_csw(cdb, 1); + return -1; + } else { + uart_send_csw(cdb, 0); + } + if ((cmd_id & 0x80)) { + //dir-in + guiUARTVendor_cb((unsigned int)&cbw); + if (insize) { + send_data((char *)OutDataBuf, insize); + } + } else { + //dir-out + if (insize) { + recv_data((char *)OutDataBuf, insize); + } + guiUARTVendor_cb((unsigned int)&cbw); + } + } + break; + + } + return 0; +} + +static void uart_upgrade_routine(void) +{ + static int idx_cdb = 0; + static INT32U cdb[4] = {0}; + + char *p_cdb = (char *)cdb; + + p_cdb[idx_cdb++] = m_console->getc(); + + // loop to cdb fill 16 bytes + if (idx_cdb < 16) { + return ; + } + + idx_cdb = 0; // reset idx + + // Parse SCSI command + if (!(((cdb[0] & 0xFF) == SCSI_OP_SET0) || ((cdb[0] & 0xFF) == SCSI_OP_SET1) || ((cdb[0] & 0xFF) == SCSI_OP_SET2))) { + uart_send_csw(cdb, 1); + debug_err("uart opset ng.\r\n"); + } + + if (calc_sum(cdb[0], cdb[1], cdb[2], cdb[3]) != 0) { + uart_send_csw(cdb, 1); + debug_err("uart cmd sum ng.\r\n"); + return; + } + + uart_cmd(cdb); +} + +void uart_upgrade_procedure() +{ + if(utl_get_chipversion() != CHIPVER_A) { + m_console = get_uart_object(CONSOLE_UART0); + } else { + m_console = get_uart_object(CONSOLE_UART1); + } + + m_console->hook(); + + while (1) { + + if (uartrom_exit > 0) { + break; + } + + uart_upgrade_routine(); + } + + uartrom_exit = 0; + +} + +void loader_installUART_Verify_CB(UART_Verify_CB callback) +{ + guiUARTCheck_cb = callback; +} + +void loader_installUART_Vendor_CB(UART_Vendor_CB callback) +{ + guiUARTVendor_cb = callback; +} + + diff --git a/board/novatek/na51068/loader/Project/Model/Src/UART/uart_upgrade.h b/board/novatek/na51068/loader/Project/Model/Src/UART/uart_upgrade.h new file mode 100755 index 000000000000..e86ca378a441 --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/Src/UART/uart_upgrade.h @@ -0,0 +1,100 @@ +#ifndef __UART_UPGRADE_H + #define __UART_UPGRADE_H + + +/** + Open NVT Device + + The commands except SCSIOP_IN_IS_NVT can be run if open device success. + If not open first, the operation commands got CSW Status 0x1 means command failed. + + @DATA_PHASE: None. + @CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define UARTOP_OUT_OPEN_DEVICE 0x01C0 + + +/** + Send Write Loader + + The Write Address @ CDB[2]~[5]; + For example address 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE + CDB[6]~[16] shall follow checksum rule. Content is dont care. + + @DATA_PHASE: OUT. Size is at CBW[8]~[11] DataTransferLength. + @CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define UARTOP_OUT_WRLOADER 0x02C0 + +/** + Address WRITE WORD (DRAM/REG/SRAM dont care) + + The Write Address @ CDB[2]~[5]; + For example address 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE + The Write DATA @ CDB[6]~[9]. + For example address 0x12345678 shall fill CDB[6]=0x78 CDB[7]=0x56 CDB[8]=0x34 CDB[9]=0x12 + CDB[10]~[15] shall follow checksum rule. Content is dont care. + + @DATA_PHASE: None. + @CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define UARTOP_OUT_ADDR_WRITE 0x03C0 + +/** + Address READ WORD (DRAM/REG/SRAM dont care) + + The READ Address @ CDB[2]~[5]; + For example address 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE + CDB[6]~[15] shall follow checksum rule. Content is dont care. + + @DATA_PHASE: IN 8 bytes return. DATA[0]~[3] is repeat CDB address. Read out DATA is [3] ~[7]. + @CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define UARTOP_IN_ADDR_READ 0x83C0 + + +/** + Ask if NVT Device + + CDB[2]~[15] shall follow checksum rule + + @DATA_PHASE: IN 4 bytes return; The value 0x81200000 woule be return for 98321. <8321 = 0x2081> If checksum fail, the 0x0 would be returned. + @CSW_PHASE status code: 0 is success. 0x1 means checksum failed. + +*/ +#define UARTOP_IN_IS_NVT 0x81C0 // ???O???O???a?? device (?o?????n?? SCSIOP_IN_OPEN_DEVICE) + + +/** + End USB ROM CODE. + + Exit USB ROM code after receiving this command. The checksum must be correct. + + CDB[2]~[15] shall follow checksum rule + + @DATA_PHASE: None. + @CSW_PHASE status code: 0 is success and end usb rom. 0x1 means checksum failed. +*/ +#define UARTOP_IN_WAIT_DONE 0x82C0 + + +typedef int (*UART_Verify_CB)(unsigned int pCmdBuf, unsigned int *pDataBuf, unsigned int *IN_size); ///< Callback for verify the Vendor Command is supported or not +typedef int (*UART_Vendor_CB)(unsigned int pCmdBuf); ///< Callback for Vendor Command processing + + +extern void loader_installUARTCB(UART_Verify_CB callback); +extern void uart_upgrade_procedure(void); + +static __inline unsigned int uart_read_reg(unsigned int reg) +{ + return *((volatile unsigned int *)reg); +} + +static __inline void uart_write_reg(unsigned int reg, unsigned int value) +{ + *((volatile unsigned int *)reg) = value; +} + + + +#endif diff --git a/board/novatek/na51068/loader/Project/Model/Src/USB/usb_update.c b/board/novatek/na51068/loader/Project/Model/Src/USB/usb_update.c new file mode 100755 index 000000000000..05f1f52373b8 --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/Src/USB/usb_update.c @@ -0,0 +1,1240 @@ + +#include "board.h" +#include "fuart.h" +#include "usb_update.h" +#include "debug.h" +#include "timer.h" + +#define IOADDR_USB_REG_BASE (0xF9100000) + + +void fLib_USB_Update_FW(void); + +int usbrom_exit = 0; +volatile DEV *ptusbdev; +#define ptotg ((volatile OTG200 *)IOADDR_USB_REG_BASE) + +#define FUSB200_MAX_EP 8 // 1..10 +#define FUSB200_MAX_FIFO 4 // 0.. 9 + +#define mUsbEPMap(EPn, MAP) (ptusbdev->ep_map[EPn-1] = MAP) +#define mUsbEPMapRd(EPn) (ptusbdev->ep_map[EPn-1]) + +#define mUsbFIFOMap(FIFOn, MAP) (ptusbdev->fifo_map[FIFOn] = MAP) +#define mUsbFIFOMapRd(FIFOn) (ptusbdev->fifo_map[FIFOn]) +#define mUsbFIFOConfigRd(FIFOn) (ptusbdev->fifo_cfg[FIFOn]) + +static USB_st tusb; +static MassStorageState eUsbMassStorageState = MS_STATE_CBW; +CBW tCBW; +CSW tCSW; +SCSISense tSCSIsense; +SCSIDeviceResp tSCSIDeviceResp; + +MSDC_Verify_CB guiU2MsdcCheck_cb; +MSDC_VenDone_CB guiU2MsdcVendorDone_cb; + +int trigger_done_cb = 0; + +static const unsigned char u8RequestSenseData[DATA_LENGTH_REQUEST_SENSE] __attribute__((aligned(4))) = +{ + 0x70, // 0, response code + 0x00, // 1, obsolete + 0x00, // 2, sense key + 0x00, // 3-6, information + + 0x00, + 0x00, + 0x00, + 0x0A, // 7, additional length (n - 7), n = 17 + + 0x00, // 8-11, information + 0x00, + 0x00, + 0x00, + + 0x00, // 12, additional sense code + 0x00, // 13, additional sense code qualifier + 0x00, // 14, field replaceable unit code + 0x00, // 15-17, sense-key specific + + 0x00, + 0x00 +}; + + +static const unsigned char u8ModeSenseData[DATA_LENGTH_MODE_SENSE] __attribute__((aligned(4))) = +{ + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + +#define USB_BUFF_SZ 128 +unsigned int u32Usb_buffer[USB_BUFF_SZ/4]; // may less than USB_BUFF_SZ + +static INT32U nvtdev_opened = 1; +#define mCxType(cmd) ((cmd[0] & (BIT6 | BIT5)) >> 5) +#define mCxRequest(cmd) ((unsigned char)(cmd[0] >> 8)) +#define mCxValue(cmd) ((unsigned short)(cmd[0] >> 16)) // get 3rd byte, 4th byte +#define mCxIndex(cmd) ((unsigned short)(cmd[1])) // get 5th byte, 6th byte +#define mCxLength(cmd) ((unsigned short)(cmd[1] >> 16)) // get 7th byte, 8th byte + + +#define mUsbRmWkupST() (ptusbdev->main_ctl & BIT0) +#define mUsbRmWkupClr() (ptusbdev->main_ctl &= ~BIT0) +#define mUsbRmWkupSet() (ptusbdev->main_ctl |= BIT0) +#define mUsbTsMdWr(item) (ptusbdev->phy_tms = item) +#define mUsbIntF2OUTDis() (ptusbdev->int_mgrp1 |= (BIT5 | BIT4)) +#define mUsbIntF2OUTEn() (ptusbdev->int_mgrp1 &= ~(BIT5 | BIT4)) +#define mUsbIntF0INDis() (ptusbdev->int_mgrp1 |= BIT16) +#define mUsbIntF0INEn() (ptusbdev->int_mgrp1 &= ~BIT16) +// Endpoint & FIFO Configuration +#define mUsbEPMxPtSz(EPn, dir, size) (ptusbdev->ep_xpsz[dir][EPn - 1] = size) +#define mUsbEPStallST(EPn, dir) (((ptusbdev->ep_xpsz[dir][EPn - 1]) & BIT11) >> 11) +#define mUsbEPRsTgSet(EPn, dir) (ptusbdev->ep_xpsz[dir][EPn-1] |= BIT12) +#define mUsbEPRsTgClr(EPn, dir) (ptusbdev->ep_xpsz[dir][EPn-1] &= ~BIT12) +#define mUsbEPStallClr(EPn, dir) (ptusbdev->ep_xpsz[dir][EPn-1] &= ~BIT11) +#define mUsbEPStallSet(EPn, dir) (ptusbdev->ep_xpsz[dir][EPn-1] |= BIT11) + +extern void CPUflushReadCache(UINT32 uiStartAddr, UINT32 uiLength); +extern void CPUflushWriteCache(UINT32 uiStartAddr, UINT32 uiLength); + +INT32S my_SCSICmd(CBW * ptcbw); + +signed int usb_DxFifoRdWr(unsigned char * buf, unsigned int count, unsigned int Rd) +{ + signed int ret = -1; // assume fail + + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: enter usb_DxFifoRdWr\r\n"); + //#endif + + CPUflushWriteCache((UINT32) buf, (UINT32) count); + CPUflushReadCache((UINT32) buf, (UINT32) count); + + //#ifdef __FREERTOS + //if(buf == (unsigned char *)0xFE080000) + // ptusbdev->dma_addr = (INT32U)buf; + //else + // ptusbdev->dma_addr = dma_getPhyAddr(buf); + + //dma_flushWriteCache((UINT32)buf, count); + //dma_flushReadCache((UINT32)buf, count); + //#else + ptusbdev->dma_addr = (INT32U)buf;//dma_getPhyAddr(buf); + + __asm__ __volatile__("dsb\n\t"); + //#endif + + + if (Rd) { + // fifo select + ptusbdev->dma_fifo = BIT2; + // ctrl setting + ptusbdev->dma_ctl = (count << 8) | // dma byte count + (0 << 2) | // not dma io to io + (0 << 1); // fifo 2 memory + + #ifdef USBROM_RTOS_DBG + debug_msg("MSG: count = %d, Read CTRL = %x\r\n", count, ptusbdev->dma_ctl); + #endif + + } else { + // fifo select + ptusbdev->dma_fifo = BIT0; + // ctrl setting + ptusbdev->dma_ctl = (count << 8) | // dma byte count + (0 << 2) | // not dma io to io + (1 << 1); // memory 2 fifo + + #ifdef USBROM_RTOS_DBG + debug_msg("MSG: Write count = %d, Write CTRL = %x\r\n", count, ptusbdev->dma_ctl); + #endif + } + + // dma start + ptusbdev->dma_ctl |= BIT0; + + while (1) { + INT32U temp; + + temp = ptusbdev->int_grp2 & ~ ptusbdev->int_mgrp2; + + if (temp & BIT7) { // dma completion + ret = 0; // ok + break; + } + if (temp & (BIT2 | BIT1)) { // bus condiction + // clear cx fifo + ptusbdev->cx_cf |= BIT3; + break; + } + if (temp & BIT8) { // dma error + // clear cx fifo + ptusbdev->cx_cf |= BIT3; + break; + } + } + + // clear (dma error & dma completion) interrupt + ptusbdev->int_grp2 |= (BIT8 | BIT7); + CPUflushReadCache((UINT32) buf, (UINT32) count); + + //debug_msg("done\r\n"); + + //#ifdef __FREERTOS + //dma_flushReadCache((UINT32)buf, count); + //#endif + + return ret; +} + +void vSCSIHWError(void) +{ + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + if ((tCBW.CB0_cblen_lun_flag&0xFF) == CBW_FLAG_OUT) { + mUsbEPStallSet(OUT_EP, DIRECTION_OUT); + } else { + //debug_msg("S1\r\n"); + mUsbEPStallSet(IN_EP, DIRECTION_IN); + } + + //#ifdef USBROM_RTOS_DBG + //DBG_DUMP("MSG: vSCSIHWError\r\n"); + //#endif + + tSCSIsense.u8Key = KEY_NOT_READY; + tSCSIsense.u8KeyAdd = ADDKEY_MEDIUM_NOT_PRESENT; +} + + +////////////////////////////////////////////////////////////////////////////////// +MassStorageState eScsiIn(void) +{ + + switch (tSCSIDeviceResp.u8MemIndex) { + case CARD_INDEX_SRAM: + // unit: byte + if (usb_DxFifoRdWr((INT8U *)u32Usb_buffer, tSCSIDeviceResp.u16DataResidue, 0) >= 0) { + tCSW.u32DataResidue -= tSCSIDeviceResp.u16DataResidue; + if (tCSW.u32DataResidue) { + // wait for fifo empty + while ((ptusbdev->cx_cf & (BIT8 | BIT9)) != (BIT8 | BIT9)) { + // if (VBUS == 0) + // return MS_STATE_CSW; + } + //debug_msg("S2\r\n"); + //mUsbEPStallSet(IN_EP, DIRECTION_IN); // case MS13Case_5: + } + return MS_STATE_CSW; + } + break; + + case CARD_INDEX_FSM_SS: + if (usb_DxFifoRdWr((INT8U *)tSCSIDeviceResp.u32IOAddr, tSCSIDeviceResp.u16DataResidue, 0) >= 0) { + tCSW.u32DataResidue -= tSCSIDeviceResp.u16DataResidue; + return MS_STATE_CSW; + } else { + mUsbEPStallSet(OUT_EP, DIRECTION_IN); // case MS13Case_11: + } + break; + + + default: + break; + } + vSCSIHWError(); + return MS_STATE_CSW; +} + + +////////////////////////////////////////////////////////////////////////////////// +MassStorageState eScsiOut(void) +{ + switch (tSCSIDeviceResp.u8MemIndex) { + case CARD_INDEX_SRAM: + if (usb_DxFifoRdWr((INT8U *)u32Usb_buffer, tSCSIDeviceResp.u16DataResidue, 1) >= 0) { + tCSW.u32DataResidue -= tSCSIDeviceResp.u16DataResidue; + if (tCSW.u32DataResidue) + mUsbEPStallSet(OUT_EP, DIRECTION_OUT); // case MS13Case_11: + return MS_STATE_CSW; + } + break; + + case CARD_INDEX_FSM_SS: + if (usb_DxFifoRdWr((INT8U *)tSCSIDeviceResp.u32IOAddr, tSCSIDeviceResp.u16DataResidue, 1) >= 0) { + tCSW.u32DataResidue -= tSCSIDeviceResp.u16DataResidue; + return MS_STATE_CSW; + } else { + mUsbEPStallSet(OUT_EP, DIRECTION_OUT); // case MS13Case_11: + } + break; + default: + break; + } + vSCSIHWError(); + return MS_STATE_CSW; +} + +typedef unsigned int size_t; +extern void *utl_memcpy(void *dest, const void *src, size_t count); + +void vSCSICmd_RequestSense(void) +{ + // Device intend to send data + tSCSIDeviceResp.u8Flags = CBW_FLAG_IN; + tSCSIDeviceResp.u8MemIndex = CARD_INDEX_SRAM; + tSCSIDeviceResp.u16DataResidue = sizeof(u8RequestSenseData); + + // copy response to sram + utl_memcpy ((UINT32 *)u32Usb_buffer, (UINT32 *)u8RequestSenseData, (UINT32)sizeof(u8RequestSenseData)); + + *((unsigned int *)u32Usb_buffer + (SENSE_OFFSET_KEY>>2)) += (tSCSIsense.u8Key&0xFF)<<16; + *((unsigned int *)u32Usb_buffer + (SENSE_OFFSET_ADD>>2)) += (tSCSIsense.u8KeyAdd&0xFF); + + // all key disappear + tSCSIsense.u8Key = KEY_NO_SENSE; + tSCSIsense.u8KeyAdd = ADDKEY_NO_ADDITIONAL; +} + +void vSCSICmd_ModeSense(void) +{ + + //switch (tCBW.u8CB[2]) { + switch ((tCBW.CB1_CB15[0]>>8)&0xFF) { + case 0x00: // return mode parameter header and block descriptor + //debug_msg("MODE_SENSE 00\r\n"); + tSCSIDeviceResp.u16DataResidue = 0x0C; + break; + case 0x3F: // all pages + //debug_msg("MODE_SENSE 3F\r\n"); + tSCSIDeviceResp.u16DataResidue = sizeof(u8ModeSenseData); + break; + default: + //debug_msg("MODE_SENSE ERR\r\n"); + tSCSIsense.u8Key = KEY_ILLEGAL_REQUEST; + tSCSIsense.u8KeyAdd = ADDKEY_INVALID_FIELD_IN_CMD; + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + return; + } + // Device intend to send data + tSCSIDeviceResp.u8Flags = CBW_FLAG_IN; + tSCSIDeviceResp.u8MemIndex = CARD_INDEX_SRAM; + + // copy response to sram + utl_memcpy((UINT32 *)u32Usb_buffer, (UINT32 *)u8ModeSenseData, (UINT32)tSCSIDeviceResp.u16DataResidue); +} + + + +void vSCSICmd_Unsupport(void) +{ + // Device intend to transfer no data + tSCSIsense.u8Key = KEY_ILLEGAL_REQUEST; + tSCSIsense.u8KeyAdd = ADDKEY_INVALID_CMD_OP_CODE; + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + + //#ifdef DISPLAY_USB_INFORMATION + //DBG_DUMP("MSG: UnSupported SCSI Command (op code = 0x%x)\r\n", tCBW.u8CB[0]); + //#endif +} + +MassStorageState eMassStorage13case(void) +{ + MassStorage13Case eCase = 0x0; + MassStorageState estate; + INT32U u32DeviceRespDataLength = 0x0; + + switch(tSCSIDeviceResp.u8MemIndex) { + case CARD_INDEX_SRAM: + u32DeviceRespDataLength = tSCSIDeviceResp.u16DataResidue; + tSCSIDeviceResp.u32IOAddr += tSCSIDeviceResp.u16TfSzCurrent; + break; + case CARD_INDEX_FSM_SS: + u32DeviceRespDataLength = tSCSIDeviceResp.u16DataResidue; + break; + default:// SPI + u32DeviceRespDataLength = tSCSIDeviceResp.u16DataResidue * 2112; + break; + } + + // Mass Storage the thirteen case + if (tCBW.u32DataTransferLength == u32DeviceRespDataLength) { + // normal case + if (tCBW.u32DataTransferLength == 0) + eCase = MS13Case_1; // MassStorage case (1) + else { + if ((tCBW.CB0_cblen_lun_flag&0xFF) == tSCSIDeviceResp.u8Flags) { + if ((tCBW.CB0_cblen_lun_flag&0xFF) == CBW_FLAG_IN) + eCase = MS13Case_6; // MassStorage case (6) + else + eCase = MS13Case_12; // MassStorage case (12) + } + } + + //#ifdef DISPLAY_USB_INFORMATION + // vShowSCSI(); + //#endif + + } else { + if (tCBW.u32DataTransferLength == 0) + eCase = MS13Case_2_3; // MassStorage case (2)(3) + else if ((tCBW.CB0_cblen_lun_flag&0xFF) == CBW_FLAG_IN) { + if (u32DeviceRespDataLength == 0) + eCase = MS13Case_4; // MassStorage case (4) + else if (tSCSIDeviceResp.u8Flags == CBW_FLAG_IN) { + if (tCBW.u32DataTransferLength > u32DeviceRespDataLength) + eCase = MS13Case_5; // MassStorage case (5) + else + eCase = MS13Case_7_8; // MassStorage case (7)(8) + } + } + else { //tCBW.u8Flags == CBW_FLAG_OUT + if (u32DeviceRespDataLength == 0) + eCase = MS13Case_9; // MassStorage case (9) + else if (tSCSIDeviceResp.u8Flags == CBW_FLAG_OUT) { + if (tCBW.u32DataTransferLength > u32DeviceRespDataLength) + eCase = MS13Case_11; // MassStorage case (11) + else + eCase = MS13Case_10_13; // MassStorage case (10)(13) + } + } + +//#ifdef DISPLAY_USB_INFORMATION +// { + //vShowUsb(); +// DBG_DUMP("MSG: MS13Case = 0x%x\r\n", eCase); +// DBG_DUMP("MSG: , u32DeviceRespDataLength = 0x%x\r\n", u32DeviceRespDataLength); +// } +//#endif + + } + + // assume the next state is STATE_CSW + estate = MS_STATE_CSW; + switch (eCase) { + case MS13Case_2_3: + //debug_msg("S3\r\n"); + mUsbEPStallSet(IN_EP, DIRECTION_IN); + tCSW.u8Status = CSW_STATUS_PHASE_ERROR; + break; + case MS13Case_4: + //debug_msg("S4\r\n"); + mUsbEPStallSet(IN_EP, DIRECTION_IN); + break; + case MS13Case_5: + case MS13Case_6: + estate = eScsiIn(); + break; + case MS13Case_11: + case MS13Case_12: + estate = eScsiOut(); + break; + case MS13Case_7_8: + //debug_msg("S5\r\n"); + mUsbEPStallSet(IN_EP, DIRECTION_IN); + tCSW.u8Status = CSW_STATUS_PHASE_ERROR; + break; + case MS13Case_9: + mUsbEPStallSet(OUT_EP, DIRECTION_OUT); + break; + case MS13Case_10_13: + mUsbEPStallSet(OUT_EP, DIRECTION_OUT); + tCSW.u8Status = CSW_STATUS_PHASE_ERROR; + //debug_msg("S6\r\n"); + mUsbEPStallSet(IN_EP, DIRECTION_IN); + break; + default: // MS13Case_1; + // do nothing here + break; + } + return estate; +} + + +MassStorageState eSCSI_CmdDecode(void) //trace, different from FUSB100-CardReader +{ + //debug_msg("eSCSI_CmdDecode\r\n"); + // Assume SCSI Response data length will be 0 + tSCSIDeviceResp.u16DataResidue = 0; + if (((tCBW.CB0_cblen_lun_flag >> 8)&0xFF) >= CARD_TYPE_MAX_REPORT) { + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + tSCSIsense.u8Key = KEY_NOT_READY; + tSCSIsense.u8KeyAdd = ADDKEY_LOGICAL_UNIT_NOT_SUPPORT; + } else { + // Parse SCSI command + //switch (tCBW.u8CB[0]) { // Operation Code + switch ((tCBW.CB0_cblen_lun_flag >> 24)&0xFF) { // Operation Code + case SCSI_OP_REQUEST_SENSE: + vSCSICmd_RequestSense(); + //debug_msg("vSCSICmd_RequestSense\r\n"); + break; + case SCSI_OP_MEDIUM_REMOVAL: + //vSCSICmd_MediumRemoval(); + debug_msg("SCSI_OP_MEDIUM_REMOVAL\r\n"); + break; + case SCSI_OP_INQUIRY: + //vSCSICmd_Inquiry(); + debug_msg("SCSI_OP_INQUIRY\r\n"); + break; + case SCSI_OP_MODE_SENSE: + vSCSICmd_ModeSense(); + //debug_msg("SCSI_OP_MODE_SENSE 22\r\n"); + break; + + case SCSI_OP_TEST_UNIT_READY: + case SCSI_OP_READ_CAPACITY: + case SCSI_OP_READ_10: + case SCSI_OP_WRITE_10: + case SCSI_OP_VERIFY: + //debug_msg("SCSI_OP_TEST_UNIT_READY\r\n"); + tSCSIsense.u8Key = KEY_NOT_READY; + tSCSIsense.u8KeyAdd = ADDKEY_MEDIUM_NOT_PRESENT; + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + break; + + default: + if (my_SCSICmd(&tCBW) < 0) { + //#ifdef USBROM_RTOS_DBG + debug_msg("MSG: SCSI cmd: UNSUPPOR\r\n"); + //#endif + vSCSICmd_Unsupport(); + } + break; + } + } + return eMassStorage13case(); +} + + + + + +MassStorageState eUsbProessCBW(void) +{ + usb_DxFifoRdWr((unsigned char *)&tCBW, 31, 1); + + if(tCBW.u32Signature != CBW_SIGNATE) { + return MS_STATE_CBW; + } else { + // pass u32DataTransferLength to u32DataResidue + tCSW.u32DataResidue = tCBW.u32DataTransferLength; + + #ifdef USBROM_RTOS_DBG + //DBG_DUMP("MSG: tCSW.u32DataResidue = %d, dir = %d\r\n", tCBW.u32DataTransferLength, tCBW.u8Flags); + #endif + + // pass Tag from CBW to CSW + tCSW.u32Tag = tCBW.u32Tag; + // Assume Status is CMD_PASS + tCSW.u8Status = CSW_STATUS_CMD_PASS; + + return eSCSI_CmdDecode(); + } +} + +void vUsbUnplug(void) +{ + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: Unplug.. pls check\r\n"); + //#endif + // mUsbUnPlug(); + ptusbdev->phy_tms |= BIT0; +} + +void vUsb_BulkIntOnOff(void) +{ + //#ifdef USBROM_RTOS_DBG + //DBG_DUMP("MSG: st 0x%x", eUsbMassStorageState); + //#endif + + switch(eUsbMassStorageState) + { + case MS_STATE_CBW: + mUsbIntF2OUTEn(); + mUsbIntF0INDis(); + break; + case MS_STATE_CB_DMA_IN: + if (mUsbEPStallST (IN_EP, DIRECTION_IN)) { + // wait for clear feature, and then enable F0 + } + else + mUsbIntF0INEn(); + break; + case MS_STATE_CB_DMA_OUT: + mUsbIntF2OUTEn(); + break; + case MS_STATE_CSW: + mUsbIntF2OUTDis(); + if (mUsbEPStallST (IN_EP, DIRECTION_IN)) { + // wait for clear feature, and then enable F0 + } + else { + mUsbIntF0INEn(); + } + break; + case MS_STATE_BGD: + mUsbIntF2OUTDis(); + mUsbIntF0INDis(); + break; + default: + //#ifdef USBROM_RTOS_DBG + debug_msg("MSG: Error MS_STATE\r\n"); + //#endif + vUsbUnplug(); + break; + } +} + +void vUsb_F0_In(void) +{ + switch(eUsbMassStorageState) + { + case MS_STATE_CSW: + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: EP1 IN CSW\r\n"); + //#endif + + if (trigger_done_cb) { + trigger_done_cb = 0; + + if (guiU2MsdcVendorDone_cb != NULL) { + if (guiU2MsdcVendorDone_cb((unsigned int)&tCBW) != 0) { + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + } + } + } + + usb_DxFifoRdWr((unsigned char *)&tCSW, 13, 0); + + //mUsbFIFODone(FIFO0); + eUsbMassStorageState = MS_STATE_CBW; + if(usbrom_exit == 1) + usbrom_exit = 2; + break; + case MS_STATE_CB_DMA_IN: + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: EP1 CS DMA IN\r\n"); + //#endif + eUsbMassStorageState = eScsiOut(); + break; + default: + //#ifdef USBROM_RTOS_DBG + debug_msg("MSG: Error FIFO0_IN interrupt.\r\n"); + //#endif + + break; + } + vUsb_BulkIntOnOff(); +} + +void vUsb_F2_Out(unsigned int u32FIFOByteCount) +{ + switch(eUsbMassStorageState) { + case MS_STATE_CBW: + + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: EP2 Out CBW\r\n"); + //#endif + + if (u32FIFOByteCount == 31) { + eUsbMassStorageState = eUsbProessCBW(); + } + else{ + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: EP out STAL SET\r\n"); + //#endif + + mUsbEPStallSet(OUT_EP, DIRECTION_OUT); + } + break; + case MS_STATE_CB_DMA_OUT: + + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: EP2 Out CB DMA Out\r\n"); + //#endif + + eUsbMassStorageState = eScsiOut(); + break; + default: + + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: Error FIFO2_OUT interrupt.\r\n"); + //#endif + + break; + } + + vUsb_BulkIntOnOff(); +} + + + + +/////////////////////////////////////////////////////////////////////////////// +// bClear_feature() +// Description: +// 1. Send 2 bytes status to host. +// input: none +// output: TRUE or FALSE (BOOLEAN) +/////////////////////////////////////////////////////////////////////////////// +signed int usb_Clear_feature(void) +{ + unsigned int ep_n; + unsigned int fifo_n; + signed int bdir; + + switch (mCxValue (tusb.u32UsbCmd)) { // FeatureSelector + case 0: // ENDPOINT_HALE + // Clear "Endpoint_Halt", Turn off the "STALL" bit in Endpoint Control Function Register + if(mCxIndex (tusb.u32UsbCmd) == 0x00) + tusb.bUsbEP0HaltSt = FALSE; + else { + ep_n = mCxIndex (tusb.u32UsbCmd) & 0x7F; // which ep will be clear + // over the Max. ep count ? + if (ep_n > FUSB200_MAX_EP) + return -1; + // the direction of this ep + // bdir =0 if OUT + bdir = mCxIndex (tusb.u32UsbCmd) & BIT7;; + // get the relatived FIFO number + if (bdir) + fifo_n = mUsbEPMapRd(ep_n) & 0x0F; + else + fifo_n = mUsbEPMapRd(ep_n) >> 4; + // over the Max. fifo count ? + if (fifo_n >= FUSB200_MAX_FIFO) + return -1; + + // Check the FIFO had been enable ? + if ((mUsbFIFOConfigRd(fifo_n) & BIT5) == 0) + return -1; + // bdir =0 if IN, 1 if OUT + bdir = bdir ? 0: 1; + mUsbEPRsTgSet(ep_n, bdir); // Set Rst_Toggle Bit + mUsbEPRsTgClr(ep_n, bdir); // Clear Rst_Toggle Bit + mUsbEPStallClr(ep_n, bdir); // Clear Stall Bit + vUsb_BulkIntOnOff(); + } + break; + case 1 : // Device Remote Wakeup + // Clear "Device_Remote_Wakeup", Turn off the"RMWKUP" bit in Main Control Register + mUsbRmWkupClr(); + break; + case 2 : // Test Mode + // do not break here + default : + return -1; + } + tusb.eUsbCxAction = ACT_DONE; + return 0; +} + + + +signed int usb_StandardCommand(void) +{ + switch (mCxRequest (tusb.u32UsbCmd)) { // by Standard Request codes + //case 0: // get status + // return (usb_Get_status()); + + case 1: // clear feature + return (usb_Clear_feature()); + + //case 3: // set feature + // return (usb_Set_feature()); + + //case 5: // set address + // if (!tusb.bUsbEP0HaltSt) + // return(usb_Set_address()); + // break; + + //case 6: // get descriptor + // if (!tusb.bUsbEP0HaltSt) + // return(usb_Get_descriptor()); + // break; + + //case 8: // get configuration + // if (!tusb.bUsbEP0HaltSt) + // vGet_configuration(); + // return 0; + + //case 9: // set configuration + // if (!tusb.bUsbEP0HaltSt) + // return(usb_Set_configuration()); + // break; + + //case 10: // get interface + // if (!tusb.bUsbEP0HaltSt) + // return(usb_Get_interface()); + // break; + + // case 11: // set interface + // if (!tusb.bUsbEP0HaltSt) + // return(usb_Set_interface()); + // break; + + case 2: // Reserved for further use + case 4: // Reserved for further use + case 7: // set descriptor, not support + case 12: // synch frame, not support + default: + break; + } + return -1; +} + +/////////////////////////////////////////////////////////////////////////////// +// vUsb_ep0setup() +// Description: +// 1. Read 8-byte setup packet. +// 2. Decode command as Standard, Class, Vendor or NOT support command +// input: none +// output: none +/////////////////////////////////////////////////////////////////////////////// +void vUsb_ep0setup(void) +{ + /* + if(tusb.bUsbChirpFinish == 0) + { + // first ep0 command after usb reset, means we can check usb speed right now. + tusb.bUsbChirpFinish = 1; + + if (ptusbdev->main_ctl & BIT6) { + tusb.bHighSpeed = 1; + //DBG_DUMP("MSG: L%x, high speed mode\r\n", tusb.u8LineCount ++); + } + else { + tusb.bHighSpeed = 0; + //DBG_DUMP("MSG: L%x, full speed mode\r\n", tusb.u8LineCount ++); + } + // Init AP + vUsbMassStorageInit(); + } + */ + + // select dma target fifo no.: + //ptusbdev->dma_fifo = BIT4; + + // Read 8-byte setup packet from FIFO + tusb.u32UsbCmd[0] = ptusbdev->dma_data; + tusb.u32UsbCmd[1] = ptusbdev->dma_data; + + #if 0//def USBROM_RTOS_DBG + DBG_DUMP("MSG: L%x, EP0Cmd: %x %x %x %x %x %x %x %x\r\n", + tusb.u8LineCount ++, (INT8U)(tusb.u32UsbCmd[0] >> 0) + , (INT8U)(tusb.u32UsbCmd[0] >> 8) + , (INT8U)(tusb.u32UsbCmd[0] >> 16) + , (INT8U)(tusb.u32UsbCmd[0] >> 24) + , (INT8U)(tusb.u32UsbCmd[1] >> 0) + , (INT8U)(tusb.u32UsbCmd[1] >> 8) + , (INT8U)(tusb.u32UsbCmd[1] >> 16) + , (INT8U)(tusb.u32UsbCmd[1] >> 24)); + #endif + + // Command Decode + switch (mCxType(tusb.u32UsbCmd)) { + case 0: // standard command + + //#ifdef USBROM_RTOS_DBG + //DBG_DUMP("MSG: Standard command\r\n"); + //#endif + + if (usb_StandardCommand() < 0) + tusb.eUsbCxAction = ACT_STALL; + break; +/* + case 1: // class command + + #ifdef USBROM_RTOS_DBG + DBG_DUMP("MSG: class command\r\n"); + #endif + + if (usb_ClassCommand() < 0) + tusb.eUsbCxAction = ACT_STALL; + break; + + case 2: // vendor command + #ifdef USBROM_RTOS_DBG + DBG_DUMP("MSG: vendor command\r\n"); + #endif +// if (usb_UsbVendorCommand() < 0 + tusb.eUsbCxAction = ACT_STALL; + break; +*/ + default: + // Invalid(bad) command, Return EP0_STALL flag + tusb.eUsbCxAction = ACT_STALL; + break; + } +} + + + + +void vUsbInit(void) +{ + ptusbdev = ((volatile DEV *)(IOADDR_USB_REG_BASE + 0x100)); + + // init variables + tusb.eUsbCxAction = ACT_IDLE; + tusb.bUsbChirpFinish = 0; + + tusb.u16TxRxCounter = 0; + tusb.eUsbCxCommand = CMD_VOID; + tusb.u8UsbConfigValue = 0; + tusb.u8UsbInterfaceValue = 0; + tusb.u8UsbInterfaceAlternateSetting = 0; + tusb.bUsbEP0HaltSt = FALSE; + + // init hardware + //vFUSB200Init(); + tusb.u8LineCount = 1; + + tCSW.u32Signature = CSW_SIGNATE; + eUsbMassStorageState = MS_STATE_CBW; + mUsbIntF2OUTEn (); + mUsbIntF0INDis(); + +} + + + +void vUsbIsr2(void) +{ + INT32U level1; + INT32U level2; + + level1 = ptusbdev->int_grp & ~ ptusbdev->int_mgrp; + + if (0 == level1) + return; + + if (level1 & BIT2) { //Group 2 + + level2 = ptusbdev->int_grp2 & ~ ptusbdev->int_mgrp2; + + if (level2) { + + //debug_msg("MSG: IntSCR2\r\n"); + + if (level2 & BIT0) { + //debug_msg("MSG: BUS RST\r\n"); + } + + if (level2 & BIT1) { + //debug_msg("MSG: BUS SUSPEND\r\n"); + ptusbdev->int_grp2 |= BIT1; + } + + if (level2 & BIT2) { + //debug_msg("MSG: BUS RESUME\r\n"); + ptusbdev->int_grp2 |= BIT2; + } + + if (level2 & BIT5) { + //debug_msg("MSG: TX0B\r\n"); + + ptusbdev->tx0byte |= 0; + ptusbdev->int_grp2 |= BIT5; + } + + if (level2 & BIT6) { + //debug_msg("MSG: RX0B\r\n"); + ptusbdev->rx0byte |= 0; + ptusbdev->int_grp2 |= BIT6; + } + + } + } + + + if (level1 & BIT0) { //Group 0 + level2 = ptusbdev->int_grp0 & ~ ptusbdev->int_mgrp0; + if (level2) { + //debug_msg("MSG: IntSCR0\r\n"); + + if (level2 & BIT0) { + //debug_msg("MSG: USB ep0 Setup\r\n"); + vUsb_ep0setup(); + } + else if (level2 & BIT3) { + //debug_msg("MSG: USB ep0 end\r\n"); + //vUsb_ep0end(); + } + if (level2 & BIT1) { + //debug_msg("MSG: USB ep0 TX\r\n"); + //vUsb_ep0tx(); + } + if (level2 & BIT2) { + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: USB ep0 RX\r\n"); + //#endif + //vUsb_ep0rx(); + } + if (level2 & BIT4) { + + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: USB ep0 fail\r\n"); + //#endif + // stall cx: mUsbEP0StallSet(); + //ptusbdev->cx_cf |= BIT2; + } + if (level2 & BIT5) { + + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: cmd abort\r\n"); + //#endif + ptusbdev->int_grp0 |= BIT5; + } + } + + + if (tusb.eUsbCxAction == ACT_STALL) { + ptusbdev->cx_cf |= BIT2; + + //#ifdef USBROM_RTOS_DBG + //DBG_DUMP("MSG: EP0 STALL\r\n"); + //#endif + } + else if (tusb.eUsbCxAction == ACT_DONE) { + ptusbdev->cx_cf |= BIT0; + + //#ifdef USBROM_RTOS_DBG + //DBG_DUMP("MSG: EP0 DONE\r\n"); + //#endif + } + // Clear Action + tusb.eUsbCxAction = ACT_IDLE; + + + } + + if (level1 & BIT1) { //Group Byte 1 + level2 = ptusbdev->int_grp1 & ~ ptusbdev->int_mgrp1; + + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: IntSCR1\r\n"); + //#endif + + if (level2 & (BIT5 | BIT4)) { // F2 out (full or short) + vUsb_F2_Out(ptusbdev->fifo_bc[2]); + } + + if (level2 & BIT16) // F0 in + vUsb_F0_In(); + } +} + + + +static INT32U calc_sum_v2(INT32U dat0, INT32U dat1, INT32U dat2, INT32U dat3) +{ + INT32U sum=0; + + sum = (dat0&0xFFFF)+((dat0>>16))+(dat1&0xFFFF)+((dat1>>16)) + + (dat2&0xFFFF)+((dat2>>16))+(dat3&0xFFFF)+((dat3>>16)) + 28; + + //DBG_DUMP("SUM = 0x%08X\r\n",sum); + return sum&0xFFFF; +} + +INT32S my_SCSICmd(CBW * ptcbw) +{ + INT32U temp1, temp2; + INT32U CDB[4]; + + CDB[0] = ((ptcbw->CB0_cblen_lun_flag >> 24) & 0xFF) + ((ptcbw->CB1_CB15[0]&0xFFFFFF)<<8); + CDB[1] = ((ptcbw->CB1_CB15[0] >> 24) & 0xFF) + ((ptcbw->CB1_CB15[1]&0xFFFFFF)<<8); + CDB[2] = ((ptcbw->CB1_CB15[1] >> 24) & 0xFF) + ((ptcbw->CB1_CB15[2]&0xFFFFFF)<<8); + CDB[3] = ((ptcbw->CB1_CB15[2] >> 24) & 0xFF) + ((ptcbw->CB1_CB15[3]&0xFFFFFF)<<8); + + // Parse SCSI command + if (!(((CDB[0]&0xFF) == SCSI_OP_SET0)||((CDB[0]&0xFF) == SCSI_OP_SET1)||((CDB[0]&0xFF) == SCSI_OP_SET2))) + return -1; + + // check sum + if(calc_sum_v2(CDB[0],CDB[1],CDB[2],CDB[3])) { + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + u32Usb_buffer[0] = 0; + #ifdef USBROM_RTOS_DBG + DBG_DUMP("CHKSUM FAILED\r\n"); + #endif + return -1; + } + + tCSW.u8Status = CSW_STATUS_CMD_PASS; + + switch (((CDB[0] >> 8) &0xFF)) { + + case SCSIOP_OUT_OPEN_DEVICE: { + nvtdev_opened = 1; + #ifdef USBROM_RTOS_DBG + DBG_DUMP("SCSIOP_OUT_OPEN_DEVICE\r\n"); + #endif + } + break; + + case SCSIOP_IN_WAIT_DONE: { + usbrom_exit = 1; + #ifdef USBROM_RTOS_DBG + DBG_DUMP("SCSIOP_IN_WAIT_DONE\r\n"); + #endif + } + break; + + + case SCSIOP_IN_IS_NVT: { + tSCSIDeviceResp.u8Flags = CBW_FLAG_IN; + tSCSIDeviceResp.u8MemIndex = CARD_INDEX_SRAM; + tSCSIDeviceResp.u16DataResidue = 4; + + tCSW.u8Status = CSW_STATUS_CMD_PASS; + u32Usb_buffer[0] = 0x81200000; + #ifdef USBROM_RTOS_DBG + DBG_DUMP("SCSIOP_IN_IS_NVT\r\n"); + #endif + } + break; + + case SCSIOP_OUT_ADDR_WRITE: { + + if(nvtdev_opened == 0) { + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + } else { + // address + temp1 = ((CDB[0]>>16)&0xFFFF)+((CDB[1]&0xFFFF)<<16);//u8to32(&ptcbw->u8CB[2]); + // data + temp2 = ((CDB[1]>>16)&0xFFFF)+((CDB[2]&0xFFFF)<<16);//u8to32(&ptcbw->u8CB[6]); + + *(INT32U *)temp1 = temp2; + __asm__ __volatile__("dsb\n\t"); + + #ifdef USBROM_RTOS_DBG + DBG_DUMP("SCSIOP_OUT_ADDR_WRITE 0x%08X 0x%08X\r\n", temp1, temp2); + #endif + } + } + break; + + case SCSIOP_IN_ADDR_READ: { + + if(nvtdev_opened == 0) { + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + } else { + // address + temp1 = ((CDB[0]>>16)&0xFFFF)+((CDB[1]&0xFFFF)<<16);//u8to32(&ptcbw->u8CB[2]); + + tSCSIDeviceResp.u8Flags = CBW_FLAG_IN; + tSCSIDeviceResp.u8MemIndex = CARD_INDEX_SRAM; + tSCSIDeviceResp.u16DataResidue = 8; + u32Usb_buffer[0] = temp1; + u32Usb_buffer[1] = *((INT32U *)temp1); + + #ifdef USBROM_RTOS_DBG + DBG_DUMP("SCSIOP_IN_ADDR_READ 0x%08X 0x%08X\r\n", temp1, u32Usb_buffer[1]); + #endif + } + } + break; +#if 0 //only rom code support + case SCSIOP_OUT_WRLOADER: { + + if(nvtdev_opened == 0) { + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + } else { + // address + temp1 = ((CDB[0]>>16)&0xFFFF)+((CDB[1]&0xFFFF)<<16);//u8to32(&ptcbw->u8CB[2]); + + tSCSIDeviceResp.u32IOAddr = temp1; + tSCSIDeviceResp.u8Flags = CBW_FLAG_OUT; + tSCSIDeviceResp.u8MemIndex = CARD_INDEX_FSM_SS; + tSCSIDeviceResp.u16DataResidue = ptcbw->u32DataTransferLength; + + #ifdef USBROM_RTOS_DBG + DBG_DUMP("SCSIOP_OUT_WRLOADER 0x%08X 0x%08X\r\n", temp1, tSCSIDeviceResp.u16DataResidue); + #endif + + } + } + break; +#endif + default: { + if(nvtdev_opened == 0) { + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + } else { + int ret = -1; + unsigned int OutDataBuf=0, insize=0; + + if (guiU2MsdcCheck_cb != NULL) { + ret = guiU2MsdcCheck_cb((unsigned int)ptcbw, (unsigned int *) &OutDataBuf, (unsigned int *)&insize); + } else { + ret = -1; + } + + if(ret == 0) { + + if (ptcbw->CB0_cblen_lun_flag & CBW_FLAG_IN) { + tSCSIDeviceResp.u32IOAddr = OutDataBuf; + tSCSIDeviceResp.u8Flags = CBW_FLAG_IN; + tSCSIDeviceResp.u8MemIndex = CARD_INDEX_FSM_SS; + tSCSIDeviceResp.u16DataResidue = insize; + + } else { + tSCSIDeviceResp.u32IOAddr = OutDataBuf; + tSCSIDeviceResp.u8Flags = CBW_FLAG_OUT; + tSCSIDeviceResp.u8MemIndex = CARD_INDEX_FSM_SS; + tSCSIDeviceResp.u16DataResidue = ptcbw->u32DataTransferLength; + } + + trigger_done_cb = 1; + } else { + return ret; + } + } + } + break; + + } + + return 0; + +} + + + +void fLib_USB_Update_FW(void) +{ + debug_msg("USBFW UPDATE\r\n"); + + vUsbInit(); + + while (1) { + + vUsbIsr2(); + + if(usbrom_exit > 1) { + mdelay(300); //make sure that pc recevie scsi status + vUsbUnplug(); + mdelay(300); //make sure that pc recevie usb plug-out single + break; + } + + } + + usbrom_exit = 0; + +} + + + + + + + + + + + + + diff --git a/board/novatek/na51068/loader/Project/Model/Src/USB/usb_update.h b/board/novatek/na51068/loader/Project/Model/Src/USB/usb_update.h new file mode 100755 index 000000000000..acc7d94669cf --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/Src/USB/usb_update.h @@ -0,0 +1,297 @@ + +#ifndef __USB_UPDATE_H +#define __USB_UPDATE_H +#include "scsi_op.h" + + +typedef int (*MSDC_Verify_CB)(unsigned int pCmdBuf, unsigned int *pDataBuf, unsigned int *IN_size); ///< Callback for verify the Vendor Command is supported or not +typedef int (*MSDC_VenDone_CB)(unsigned int pCmdBuf); ///< Callback for verify the Vendor Command is supported or not + + +// KEY_ILLEGAL_REQUEST: Additional key +#define ADDKEY_INVALID_CMD_OP_CODE 0x20 +#define ADDKEY_INVALID_FIELD_IN_CMD 0x24 + +#define CBW_FLAG_IN 0x80 +#define CBW_FLAG_OUT 0x00 + +// Endpoint or FIFO direction define +#define DIRECTION_IN 0 ///1 +#define DIRECTION_OUT 1 ///0 + +#define EP0 0x00 +#define EP1 0x01 +#define EP2 0x02 +#define EP3 0x03 + +// FIFO number define +#define FIFO0 0x0 +#define FIFO1 0x1 +#define FIFO2 0x2 +#define FIFO3 0x3 +#define FIFO4 0x4 +#define FIFO5 0x5 +#define FIFO6 0x6 +#define FIFO7 0x7 +#define FIFO8 0x8 +#define FIFO9 0x9 + +#define OUT_EP EP2 +#define IN_EP EP1 +#define OUT_FIFO FIFO2 +#define IN_FIFO FIFO0 + +typedef enum { + MS13Case_1 = 0, + MS13Case_2_3, + MS13Case_4, + MS13Case_5, + MS13Case_6, + MS13Case_7_8, + MS13Case_9, + MS13Case_10_13, + MS13Case_11, + MS13Case_12 +} MassStorage13Case; + +#define CBW_SIGNATE 0x43425355 +#define CSW_SIGNATE 0x53425355 +#define CSW_STATUS_CMD_PASS 0x00 +#define CSW_STATUS_CMD_FAIL 0x01 +#define CSW_STATUS_PHASE_ERROR 0x02 + +// Request Sense data format +#define SENSE_OFFSET_KEY 0x02 +#define SENSE_OFFSET_ADD 0x0C +#define SENSE_OFFSET_ADD_QUALIFIER 0x0D + +// KEY_NO_SENSE: Additional key +#define ADDKEY_NO_ADDITIONAL 0x00 + +// all response data length +#define DATA_LENGTH_INQUIRY 36 +#define DATA_LENGTH_REQUEST_SENSE 18 +#define DATA_LENGTH_MODE_SENSE 8 + +// SCSI command operation code +#define SCSI_OP_TEST_UNIT_READY 0x00 +#define SCSI_OP_REQUEST_SENSE 0x03 +#define SCSI_OP_INQUIRY 0x12 +#define SCSI_OP_MODE_SELECT 0x15 +#define SCSI_OP_MODE_SENSE 0x1A +#define SCSI_OP_MEDIUM_REMOVAL 0x1E +#define SCSI_OP_READ_FORMAT_CAPACITY 0x23 // unsupported +#define SCSI_OP_READ_CAPACITY 0x25 +#define SCSI_OP_READ_10 0x28 +#define SCSI_OP_WRITE_10 0x2A +#define SCSI_OP_VERIFY 0x2F + +#define CARD_INDEX_SRAM 7 +#define CARD_INDEX_FSM_SS 3 +#define CARD_TYPE_MAX_REPORT 1 + +// KEY_NOT_READY: Additional key +#define ADDKEY_LOGICAL_UNIT_NOT_READY 0x04 +#define ADDKEY_LOGICAL_UNIT_NOT_SUPPORT 0x25 +#define ADDKEY_MEDIUM_NOT_PRESENT 0x3A + +// Sense key +#define KEY_NO_SENSE 0x00 +#define KEY_RECOVERED_ERROR 0x01 +#define KEY_NOT_READY 0x02 +#define KEY_MEDIUM_ERROR 0x03 +#define KEY_HARDWARE_ERROR 0x04 +#define KEY_ILLEGAL_REQUEST 0x05 +#define KEY_UNIT_ATTENTION 0x06 +#define KEY_DATA_PROTECT 0x07 +#define KEY_BLANK_CHECK 0x08 +#define KEY_VENDOR_SPECIFIC 0x09 +#define KEY_COPY_ABORTED 0x0A +#define KEY_ABORTED_CMD 0x0B +#define KEY_OBSOLETE 0x0C +#define KEY_VOLUMN_OVERFLOW 0x0D +#define KEY_MISCOMPARE 0x0E +#define KEY_RESERVED 0x0F + +typedef struct // SCSI device response +{ + unsigned int u8MemIndex; // current access memory type + unsigned int u8Flags; // In or Out + unsigned int u32IOAddr; // block addr in Card controller + unsigned int u16DataResidue; // residue (block count for card content, or byte count for information) + unsigned int u16TfSzCurrent; // current transfer length (block count for card content, or byte count for information) +} SCSIDeviceResp; + +typedef struct SCSI_Sense_Data +{ + unsigned int u8Key; + unsigned int u8KeyAdd; +} SCSISense; + +typedef enum { + MS_STATE_IDLE = 0, + MS_STATE_CBW = 1, + MS_STATE_CB_DMA_IN = 2, + MS_STATE_CB_DMA_OUT = 3, + MS_STATE_CSW = 4, + MS_STATE_STALL = 5, + MS_STATE_BGD = 6 +} MassStorageState; + + +typedef struct CommandBlockWrapper +{ + unsigned int u32Signature; + unsigned int u32Tag; + unsigned int u32DataTransferLength; + unsigned int CB0_cblen_lun_flag; + unsigned int CB1_CB15[4]; + //unsigned char u8Flags; + //unsigned char u8LUN; + //unsigned char u8CBLength; + //unsigned char u8CB[16]; +} CBW; + +typedef struct CommandStatusWrapper +{ + unsigned int u32Signature; + unsigned int u32Tag; + unsigned int u32DataResidue; + unsigned int u8Status; +} CSW; + +// Host Controller (HC) +typedef struct { + INT32U cap; // 0x00: capability + INT32U ports; // 0x04: Structural Parameter + INT32U capp; // 0x08: capability Parameter + INT32U reserved1; // 0X0c + INT32U cmd; // 0x10: USB command + INT32U status; // 0X14: status + INT32U int_en; // 0X18: interrupt enable + INT32U fm_idx; // 0X1c: frame Index + INT32U reserved2; // 0x20 + INT32U periodic; // 0X24: periodic Frame List Base Address. must 4KB align. + INT32U asynch; // 0X28: Current Asynchronous List Address, must 32B align. + INT32U reserved3; // 0X2c + INT32U port; // 0x30: port status and Control + INT32U reserved4[3]; // 0X34 ~ 0X3c + INT32U misc; // 0x40 + INT32U reserved5[15]; // 0x44 ~ 0x7C +} HC; + +// OTG Controller (OTG) +typedef struct { + INT32U ctl_st; // 0x80: control/status + INT32U int_st; // 0x84: interrupt status + INT32U int_en; // 0x88: interrupt enable + INT32U reserved[13]; // 0x8C ~ 0xBC +} OTG; + +// Global Controller (GL) +typedef struct { + INT32U int_st; // 0xC0: interrupt status + INT32U interrupt; // 0xC4: interrupt mask + INT32U reserved[14]; // 0xC8 ~ 0xFC +} GL; + +// Device Controller (DEV) +typedef struct { + INT32U main_ctl; // 0x100: device main control + INT32U dev_adr; // 0x104: device address + INT32U tst_ep; // 0x108: device test + INT32U frm_no; // 0x10C: device SOF [13: 11] SOF micro frame number, [10: 0] SOF frame number + INT32U sof_tmsk; // 0x110: device SOF mask timer [15: 0] SOF mask timer + INT32U phy_tms; // 0x114: PHY test mode selector + INT32U vnd_ctl; // 0x118: vendor specific IO control + INT32U cx_cs; // 0x11C: CX configuration and status + INT32U cx_cf; // 0x120: CX configuration and FIFO empty status + INT32U idle_cnt; // 0x124: Device idel counter + INT32U cx_dataport; // 0x128: device cx data register + INT32U reserved1[1]; // 0x128 ~ 0x12C + INT32U int_mgrp; // 0x130: mask of interrupt group + INT32U int_mgrp0; // 0x134: mask of interrupt source group 0 + INT32U int_mgrp1; // 0x138: mask of interrupt source group 1 + INT32U int_mgrp2; // 0x13C: mask of interrupt source group 2 + INT32U int_grp; // 0x140: interrupt group + INT32U int_grp0; // 0x144: interrupt group 0 + INT32U int_grp1; // 0x148: interrupt group 1 + INT32U int_grp2; // 0x14C: interrupt group 2 + INT32U rx0byte; // 0x150: receive zero-length data packet + INT32U tx0byte; // 0x154: rtransfer zero-length data packet + INT32U iso_seq_err; // 0x158: iso. sequential error/abort + INT32U reserved2; // 0x15C + INT32U ep_xpsz[2][8]; // 0x160: IN endpoint x MaxPacketSize Reg + // 0x170: IN endpoint x MaxPacketSize Reg + // 0x180: OUT endpoint x MaxPacketSize Reg + // 0x190: OUT endpoint x MaxPacketSize Reg + INT8U ep_map[8]; // 0x1A0: endpoint 1 ~ 8 map Reg + INT8U fifo_map[4]; // 0x1A8: FIFO 0 ~ 3 map Reg + INT8U fifo_cfg[4]; // 0x1AC: FIFO 0 ~ 3 configuration + INT32U fifo_bc[4]; // 0x1B0: FIFO x instruction and byte count + INT32U dma_fifo; // 0x1C0: dma target FIFO number + INT32U reserved3; // 0x1C4 + INT32U dma_ctl; // 0x1C8: DMA controller parameter setting 1 + INT32U dma_addr; // 0x1CC: DMA controller parameter setting 2, address + INT32U dma_data; // 0x1D0: DMA controller parameter setting 3, Cx data +} DEV; + +// OTG Controller +typedef struct { + HC hc; // 0x00 ~ 0x7F + OTG otg; // 0x80 ~ 0xBF + GL gl; // 0xC0 ~ 0xFF + DEV dev; // 0x100 ~ 0x1FF +} OTG200; + + + +typedef enum +{ + ACT_IDLE, + ACT_DONE, + ACT_STALL, + + ACT_DUMMY = 0x80000000 +} Action; + +typedef enum +{ + CMD_VOID, // No command + CMD_GET_DESCRIPTOR, // Get_Descriptor command + CMD_SET_DESCRIPTOR, // Set_Descriptor command + + CommandType_dummy = 0x80000000 +} CommandType; + +typedef struct USB_s +{ + // end pointer 0 information + unsigned int u32UsbCmd[8/4]; + unsigned int bUsbChirpFinish; + Action eUsbCxAction; + unsigned int u16TxRxCounter; + unsigned char * pu8Descriptor; + unsigned int u8UsbConfigValue; + unsigned int u8UsbInterfaceValue; + unsigned int u8UsbInterfaceAlternateSetting; + unsigned int bUsbEP0HaltSt; + unsigned int bHighSpeed; // high speed + CommandType eUsbCxCommand; + // for display + unsigned int u8LineCount; +} USB_st; + + + + + + + +#endif /* __USB_OTG_H */ + + + + + + diff --git a/board/novatek/na51068/loader/Project/Model/Src/prj_main.c b/board/novatek/na51068/loader/Project/Model/Src/prj_main.c new file mode 100755 index 000000000000..3602ea52a1d3 --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/Src/prj_main.c @@ -0,0 +1,190 @@ +/* + Project layer Main control function + + This file is implement by user mode + + @file prj_main.c + + Copyright Novatek Microelectronics Corp. 2015. All rights reserved. +*/ +/* +#include "fat.h" +#include "rtc.h" +#include "timer.h" +#include "StorageDef.h" +#include "global.h" +#include "Clock.h" +#include "string.h" +*/ +#include "board.h" +#include "debug.h" +#include "mmc_api.h" +#include "fuart.h" +#include "prj_main.h" + +extern UINT32 LoaderInternalInfo[]; + +#if (DEBUG_MSG == ENABLE) +//weak function mechanism for debug msg output +extern void config_dma_log(void); +void config_dma_log(void) {} +#endif + +#if (SPECIAL_KEY_UPDATE == 1) +/** + Check special key1(s) is(are) pressed. + + Check special key1(s) is(are) pressed or not. + + @return Key pressed status + - @b TRUE: Special key(s) is(are) pressed + - @b FALSE: Otherwise +*/ +static BOOL prj_isSpecialKeyPressed(void) +{ + // Detect key example, must press shutter2 and playback mode keys + // OUT_0: DGPIO 0 + // OUT_1: DGPIO 14 + // OUT_2: DGPIO 2 + // OUT_3: DGPIO 3 + // OUT_4: DGPIO 4 + // IN_0 : DGPIO 5 + // IN_1 : DGPIO 6 + // IN_2 : DGPIO 7 + // IN_3 : DGPIO 8 + // KEY_IN_0 KEY_IN_1 KEY_IN_2 KEY_IN_3 + // KEY_OUT_0 MENU SET PLAYBACK DISPLAY + // KEY_OUT_1 WIDE LEFT MOVIE + // KEY_OUT_2 TELE DOWN TRASH + // KEY_OUT_3 SHUTTER2 RIGHT CAPTURE + // KEY_OUT_4 SHUTTER1 UP + // Add the necessary code.. + return TRUE; +} +#endif + +#if (CHECK_CARD_EXIST == 1) +// MC16 default is config as input and pull up +static BOOL prj_checkCardExist(void) +{ +#if (STORAGE_EXT_TYPE == STORAGE_EXT_ETH) + return TRUE; // force ethernet probe DHCP server +#else + return (gpio_getPin(DGPIO_CARD_DETECT) == 0 ? TRUE : FALSE); +#endif +} +#endif + +#if (CHECK_RECOVERY_TRIGGER == 1) +static BOOL prj_isRecoveryTriggered(void) +{ + #if 1 + return FALSE; + #else + //just a sample for using P_GPIO_0 high active to trigger recovery flow + return (gpio_getPin(P_GPIO_0) == 1 ? TRUE : FALSE); + #endif +} +#endif + +#if 0 +static BOOL bl_spiIdentify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacityID, PSPI_IDENTIFY pIdentify) +{ + // Sample to support SST25VF032 + if ((uiMfgID == 0xBF) && + (uiCapacityID == 0x4A)) + { + pIdentify->bDualRead = FALSE; + pIdentify->bSupportAAI = TRUE; + pIdentify->bSupportEWSR = TRUE; + pIdentify->uiFlashSize = 4*1024*1024; + return TRUE; + } + + return FALSE; +} + +static void bl_flashLED(void) +{ + // use GPIO to control LED +} +#endif + +// main entry of project layer code +void prj_main(void) +{ + PSTORAGE_OBJ strg_obj = NULL; + PSTORAGE_OBJ strg2_obj = NULL; + loader_setVersion(_LDR_VER_); + + // Print project layer info + + if ((LoaderInternalInfo[6] & 0x100000) == 0x100000) { + debug_msg(_LOADER_VERSION_STR2_); + } else { + debug_msg(_LOADER_VERSION_STR_); + } + + // Setup loader/fw file names + loader_setUpdateFwName(_UPDATE_FW_NAME_); + loader_setUpdateLdrName(_UPDATE_LOADER_NAME_); + loader_setRunFwName(_RUN_FW_NAME_); + // Setup FW_MAC_CODE_SIZE (i.e. FWResvSize in RTOS) + +#if defined(_STORAGEINT_NandSpi_) + strg_obj = nand_get_storage_object(); + loader_setStorageIntType(STORAGEINT_SPI_NAND, strg_obj); + strg2_obj = nor_get_storage_object(); + strg2_obj->flash_setConfig(FLASH_CFG_ID_CS_SELECT, 1); +#elif defined(_STORAGEINT_SpiFlash_) + strg_obj = nor_get_storage_object(); + loader_setStorageIntType(STORAGEINT_SPI_NOR, strg_obj); + strg2_obj = nand_get_storage_object(); + strg2_obj->flash_setConfig(FLASH_CFG_ID_CS_SELECT, 1); +#else + #error "Internal storage not configured !!!"; +#endif + + +#if 0 +#if (SPI_PINMUX_SETTING == SPI_PINMUX_4BITS) + flash_setConfig(FLASH_CFG_ID_SPI_SUPPORT_4BITS, TRUE); +#endif + +#if 0 + // Sample to hook spi flash extending function + flash_installIdentifyCB(bl_spiIdentify); +#endif + +#if 0 + // Sample to hook flash programming LED callback + flash_installAccessCB(bl_flashLED); +#endif + +#if 0 + // Sample to enable eMMC 8 bits boot + // *Note*: MUST ensure your PCB has BS[7] = HIGH + if (INREG32(0xF0010000) & (1<<7)) { + // If bootstrap pin[7] is pulled high + // enable eMMC 8 bit + debug_msg("Enable eMMC 8 bit mode\r\n"); + flash_setConfig(FLASH_CFG_ID_EMMC_SUPPORT_8BITS, TRUE); + } +#endif + +#if (SPECIAL_KEY_UPDATE == ENABLE) + loader_installSpecialKeyCB(prj_isSpecialKeyPressed); +#endif + +#if (CHECK_CARD_EXIST == ENABLE) + loader_installCardDetectCB(prj_checkCardExist); +#endif + +#if (CHECK_RECOVERY_TRIGGER == ENABLE) + loader_setRecoveryPartitionID(2); + loader_setRecoveryFwName(_RECOVERY_FW_NAME_); + loader_installRecoveryTriggerCB(prj_isRecoveryTriggered); +#endif +#endif +} + diff --git a/board/novatek/na51068/loader/Project/Model/Src/prj_main.h b/board/novatek/na51068/loader/Project/Model/Src/prj_main.h new file mode 100755 index 000000000000..63a99b133f55 --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/Src/prj_main.h @@ -0,0 +1,72 @@ +/** + Loader project header file + + Loader project header file + + @file prj_main.h + @note Nothing +*/ + +#ifndef _PRJ_MAIN_H +#define _PRJ_MAIN_H + +#include "constant.h" +#include "loader.h" +//#include "GPIO.h" + +// Define SPECIAL_KEY_UPDATE == ENABLE will require user to press special key +// to update firmware +#ifndef SPECIAL_KEY_UPDATE +#define SPECIAL_KEY_UPDATE 0 +#endif + +#ifndef SPI_PINMUX_NORMAL +#define SPI_PINMUX_NORMAL (0) +#endif + +#ifndef SPI_PINMUX_4BITS +#define SPI_PINMUX_4BITS (1) +#endif + +#ifndef SPI_PINMUX_SETTING +#define SPI_PINMUX_SETTING (SPI_PINMUX_4BITS) +#endif + +// Define MACROs for external storage +// +#ifndef STORAGE_EXT_UNKOWN +#define STORAGE_EXT_UNKOWN (0) +#endif + +#ifndef STORAGE_EXT_SDIO1 +#define STORAGE_EXT_SDIO1 (1) +#endif + +#ifndef STORAGE_EXT_UART +#define STORAGE_EXT_UART (2) +#endif + +#ifndef STORAGE_EXT_USB +#define STORAGE_EXT_USB (3) +#endif + +#ifndef STORAGE_EXT_ETH +#define STORAGE_EXT_ETH (4) +#endif + +#ifndef STORAGE_EXT_TYPE +#define STORAGE_EXT_TYPE (STORAGE_EXT_SDIO1) +#endif + + +// Card detect GPIO offset +#define DGPIO_CARD_DETECT (0)// | GPIO_IS_DGPIO) + +#define CHECK_CARD_EXIST (0) + +//check recovery trigger condition +#define CHECK_RECOVERY_TRIGGER (0) + +#define DEBUG_MSG DISABLE + +#endif diff --git a/board/novatek/na51068/loader/Tools/Bin/Configram321 b/board/novatek/na51068/loader/Tools/Bin/Configram321 new file mode 100755 index 0000000000000000000000000000000000000000..2c0133773d4909be4440ce439251d08a09f614cd GIT binary patch literal 1852840 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%0D4&0RX z{lO8YbdK$+f3@E^o+J))Ij8mp^W-WmF$k6gQIB9lROJ+ip@$dKY9!ag7%8+ly&(%) z0i3mhLE4dEL!KJkxrjW9x5-(jV?_|{^$l510C&fq;&V@6;yh!)i@F3?-RK6{)jHbA zp2Cp^8$ahvf?;T<yk2QE+C@cWlQmMdLew_dhzCayW$S(Vdh!lO9%3LXVJ+Sj+mS7o zS;Js2bBy5GVzc3PU1B8wMRcKTy|vqJ*W)c6rGS+b+AGlOriXehE{4d=Ywp4F?#Bpf zsCCe4ST~M#V_@r20qJ+=K)un)tRYgU9+gmEEezTWQtsR=-X)>*%K5INo>Gr3B5(Gi z<PTs8J;Z?R)>id=aIq%;i3+(?dF^^||H^M}07l?H4N?2yi;rmi1dYrUy1jK+WJH?A zf3P%sJL_3tnoXZ$<?n=kIaWT~j9R^gnNnW(ZjEr|=*VH!=Zddo>&4|S!lV5uJPF#H z+ytb={9AVlf3yWi&oZ{{Tn8^_ctERaqE=T-zzv1@@?E?h+l{;$l)qRD*_a0{mz7U% zJ-+riTzs5fz`$fAgB!2Z-y;64Y#LI`m%aFaZC-Sd@L0-6{4JNi#zFX5VZYM(x3Wp* z2?6srKlg&zFln%LJIr6nk~0Qt%#SP!r#?Xm60D{4ESuj)-Qn>2CSguJ%Q@XbjfKie z6@JEoS^bf@7J2Mr-9lCnn$Pb0T}T@hh6k(?{DLD8Aut7qec4(IglHimjGg)?4pB~% zBAnd7^r2#nHGvwgiXvyvnPZ>;oM@D_D@f4+DC*a8YX=0B^`Zk1B>pfP2G-DRl^#|^ z<fG6OCc<HufRDcwqXc<rrP1r*aPl?IxUydt0KGh`0qr?jHGtL^kWorNvvL7@C><c+ zSrZ@|th>Qqu`)7?%bHMHf8-HZZGmV+JG3zh1v*;-oGAQQQP{fKd-1`MVAS}4Tn$<m zumx;8Ptgx&|MHyi*?;5=dxQB?82k9EEmjnQGk<(&S9ur%V0a0$kOu|e=Y&AYn5Vtj zk$1d8X_=95*m4F8GUicu+l-^1mzgv1i(t<L*mmLt5$x)ekOATacT+#TcmX>L;{|$@ z>Odl?7r6D4nLmgptdsAUF!}-pD(?d^gGXN>MN3#1v&T6Ci~H8nc`NOhL9xUP?*B(( z2HjB@ej)<|&%m`83xYHZzAMDLx%lY}BA2P4!6*g|q`Sk>qCKZK#-KoPR=l8Cf&zBD zU?S*ZN0<!iIeS99U^0J=)siQp)#o^qDO+Q#tlYU1Z+oFdFJjPFOI`~D1Y?D%aB?&7 z1)xjm?TM{Hx9KYxe+U}9L&O<0cn%IZbfVY}8vF*22pT{^iV!mBrNu22glj=Sm=fl} zk5GfK9Wv+*oRo`bhYZ4M)&pn2=9MnILeSvK0^wB`@M<JnH+JZW)WorX-B$$-=*Ln+ z%Oz-lyvMeJ29qUdaGNh^FqT0Bz(RB>J7{qKdn#z~D3M~{W^*_J&=)kA2tRt5$FvId z^HRJ$pQHhq+Kiga;%9|z>v5(KRJy|9^zXcQK`z5Dr|e20C4b1^Eqag=G8h1!5bt7Q zR*K>8+Nd2eIFVoape}4|QC7qN0fS!JtR)x-889$jGM4OoBm9PT#}areg~5U-1hpEC z7KuanI~2<jn85YN3QEzCc$bdA&cq9Gupgi^IXy&y4a*XkL<>g3msN3sCHMvA6f#aA zN1-dGQIW|%n`zL>zILFXf`I~B%Y`gMjb@}k_aX)5o^i5%&q%=wl84tSSnvlGETHM| z1q(d?!yhmBiKCcZ!0Im2avZibJ6<pV79V^Q%N{#aoPxybpdGqe&^lspnJ;2+IXaGS z#&#veBN2m(C;`qJUKHhK*v5_+EJGFPJ5I#lLI*`h6t|;_h~f*#1UAH$1~;WUre>5K zGY~Ul-KYG|w&Dd(`Qio3@f)E6Fhce6Sw}1X7Sbv*KG}&G*^?P$U*54aXd?J@sVEj` zpjK(guh51dbrvcqjFQbz75@~>4inr8<B{bdcd>qqSFS(8!5w$^FkWz}mK=%UQUKq9 zA2#53!6QFl#tZst@mFDoL}|OgA+v?K&zX?RlxR3$2-_=^7Q<{OU!^T`XXM4M;)Co0 zNceKP*ZznBF1UvqUIll1h4qOWFPMvZHg*@_XIt@tM;y>y(0gt4zI4!&cmZ!667)V( z(1>24bTY@&bz=?%L@(Rd72#J2+JLWO2BH8y4O~qn5e;mTUv|vkztC4CX7H4HYvS1# zGq{kZsa4Ftz+2x?=8G9TjOxy;OkxHG)!iR6V6@VW8N7@K5izdGQ89z(0DvQV0Y;}T zo>E(Hz^R&BnG-LF!c?>oFZd<fOs;n@bm9eE`Bw8EX>u^wEAfK)DDKxO6)&iC;sr>` zWxSwEMMDgOy$To<Nx-0sHXpB=k8<@lD{k;&+i`;vXx`ZWzY^AF#|^%M9`8ropr;!* zuo;D6W>mm>0=}8bi)}M*FbnEycM_k)b7LBazf7a&O5A38orIRr>m*%aDb(m-capxj zo#Z!yL;|%?lF@B<Txa|MsUlANU^It9d={@JH-0dg@q<Eb&RLKRt-@%|v<e-G+VO+2 zj2}#t_`wPAQ4v3YS+*YZ=6&*flps`3eCSd`t>A^yfpnezDMjp-G6FGzFb1YV=}B&R zJAfcXD@l0r9G1<V-#(64t_FL7gi%4OE2b49A2FbeBdk<*HY>g}>vR~@94mRUvg3>+ z{8)e}{w{(p(G`CmO{(~S--kk;wXmWBbWabJt9Zgu2I2`#oJhf6!5qhqCtL+n=#M8r zudLoE<?=yhGPQo!Vb<GVZ1#6b)E=vntMHZmEP1XSPf*Ssuzj^vJs(`e6JBlAt{*OE zK+gPC;2RLVr(`mj>Kn8sqLH~mclP`?j6q)9KI<`InynX(mAw!8=IM8~m9-8QcEbJ( z->oxR#S?y?9Z%Sc8Imm`xDJI_v;$Hqo)9As=0c~7>~O+mPB@_!(S(g6W6H;Mm#ir0 zR`G=Sn4ck&`ri^yxa_v9cmizU4)bEfGl*F+;|Z_k#uLi3`Mv5khu>rT@dU@f3pbSY z+6qXmIvhJDBMRuQ*2hpJ>Cs&wan!jiU=`pOoP|-+-`t==7wc&|sDPD2Uyrzy^Pf@f z{09~LS`}0$7#LqkXMTjjb`2?cBuWB5=?J2b)}JB7>^GZ4*S)E~t=NbvkbqMlRy(YK z-3)g8pvamHBVdOW5U+8f4d_Z;tnZ^uTZ63bG|mzeKuiJ=3(gY?+2O1UpvgeCFXIZM ztRH2?6|&}>R?3Yl<ifZYE!lwu2FN||T`XOZ36q&y=>~jpO`QrYz|5WOg%--Ct9jmg zpGP<m-(a48stPSICS)GDuZx5h&HywOT6h=YV`yQF9a{MFQh#V+{vTCnVKLsS&_ZaL z3N5_b*MDT5x?eP6>~!~E@^&=iWri4T+x$4k124X?k&hs8RO|QxIGqU5FQU}PX2lmc z(?EQo>IIVJ#1|5wb^{E*l>h^lgezZwpXbj?sC)s=eqbTJwkoV6$(ngjFT$`CUnRnT zL^3DB@GJauJfv$?grV3UVF3N{ud?$ImXid;JrG2&;|tT!V4x`xs^?#R#eq!fi4T*t zWGPyXj9ac}a5N4>4U*r;pbOIOcH+$7+@M20E%`$@bC}*0Bj~V61szVuY~@1?z5R4} z%1lytpJe#r4Nj7R9dC$+$1~XQIZD+esoSR`*zg@VM-iN+5<ymn<R>uyK>3zSBe>B? zn>`ROl=Vh449pB;2|6^_g5AnVPh4rwU8hkuCj)jr6>Q*qjFtcg4qXvMPwGM&2X6RW zlLBf2Ii+Kd-JDx7+hhe4L|n@DNf4a5JT$E-uL!8xsR}2*rlJlH5IZ~SFgZKwFf9Pr z$m1HlVKDG?yp50oATn0>!VZW)fE7-r0>&eo*$-yL9UPudqKwL+DE^Sc8akg6awrF9 zNI;PcmIyiQ8~|lzmV)Fj^r3s^Pf$>znYD^OHjHb9em6Jl?OYSlp4_a5KZ&LxxI37r zfY`&x(CHALmiRpiXG!iDHmafyBDpwMTC*fq#uAj=Jmrcq>QJ2}If*(9gD33yUn>5v zz!!h`E$3A>`@k|`rOiGtt)Cr$sC5Dme_|QxxsrX4%P}tS0JF|-sx!>4dw?Ashq&$H z)<gDw#2}89ozGhGUKM?K9B+Nm2l`q5xWhC@N3*7?j5{Dm>a1?}#E<~aiRpLZ4jE9- z;jeYv;aXqZVPtmPVFEa>W__3Amk1*R<x;{pUu7zA4W7cFBqUSeTn9xb?r<lnh%mN5 zDqh^-Uc7b;P;pk=A>Mx6;qiPgPvHgpM%=+xsl!3E<4@ASjN5_?5T#kmk%AOWk4NA* zN41j8Xh~2jL2Y{){#U3>HI4zar}lR6VJeJ?f3)smU57W~kFyu|19Q;pPuG$cVmK9$ zbMeCl`7(Iq1Ie&MKP|o--B7ePD~6<Fjn@$*R~UusVQ)qSbD#t;U?^7dG*|PXrUel2 zB;Sk*le1k`rOOx07~Y460VXA=s7fYN0l>zRp*rOS`EiZk?lh4Vez4J$@WUDCCW7XA z1&rZ`AoNZ2M9}<!1EYXwdX6zM6dm}6@WU$Vii96%XOUR54ftz`-{4;fKm3<^YvS1# zei%$Mg+VMkW#MMLb*6&Q#>y8sY6|*~;D^%fsVZe*7R{6jKd2$%A-r(I4=?a5jSQ|K zRN;rG0iX)@GAsO09JHQ>^TqL$`3hgT`3l2eDV+GjS6;qCT6HxCMK#uI$#E!c>o?o% z4gN~};a4c`la~rVz;o(IMBpfLvf6(1;V{WpaCCjjN-yf*>LIcfdZBIM&=%n+q7EZG z+3tWEw;6SyaJ_7W@6y)V@dcYh7(I&v)?IMi?Ds30UzdCZ2OlkNKzr>z0$-ld1XAtd zhN#2!;H}{HW3P{JpTCFTUZ<al@}ZCP%k3kN0tLxeDCD4|hIYmqqOdS_zQT1J2l4r9 z26YKJoC$HzAY3OSI(OKk%4A2FJc<ItdwIY*3BIenj)f)*tb1j4SWg1w`7q&%JV#QU z7<a(_3_I@N=xA2l;VRe)#oyfWt>X?uSQhtpt=EzZ@zYgV=#giUt*<z_!T96G8`eS? z+47k+kOtH@t?6Qw;*G+i&3FTvur{Gh!0~uZH!5IVBP^)Ed+hyJ@rM7JhIqpZHXdHQ zVKi)DZoJ`Glyd0@uMnS6d{XY-tamA6(KGNzzEh%3yy10x6@Hv&#~YLq5Zg5(i7IN8 zs^^1?c*9Gr+V#U-B)EI_Hu($4-6I_E#f7wf$o5Hh&iwZV^?I_!xR9+co@U<xWmA4n zYqM${F6;!}i_m*ptZ;U`fs{QVb81=-nH>Dx2{_<|ia3xfD&lZ6enpLqx+E`L8^F;G z8>!e>D=W4>^~D<;=kh|(t>O(sFllQe-tde}bC8KZ>&xVXBL4lh2@KX`1{_|nr%-T9 z8FBcKE7Cw#A`UNbZtv`GX~pkLf9&x4`(GDtfYsUnIITLGKi;s}i8mYzi9^WO2CVM* z1t+0c`kOD_@Gx<L%_tVdz+A_fTb$02Lop}j{j6csq;D#8G733rDr#tb1i@v$*$Kpm zIbsU_ZgRegGEhz0h%(GY*Ka4vFa>RjiczIbgVHJBhy$PxdSQmkpup14$pLGI6J|gq z(&(RgT5(L=+XnI*wAEG=ql-0G(Fv+@8)j~hYvCfe`;5(5CwO57UDz$2x*RpU{0_S5 z8_ZXZRbhs5h|PR*iwZLg2Q&m1Nb4qujd6wvcAR0-)BZTa@JCdf;bOd1afTQ0i*RFr zOS`JhOZe}PFMRl0(sLlb(8zvtAij_jUuatNzbd})i#|~11MvmAp{?Qzhy0Ws{Xl#{ zWtkj^FF5m_1M!981MvlSKg5Cf!j=Q^1?xb30n<%0GV%X*eBqiOIP=~Awef|IF<bk$ z#TSgRZNwK6T$bLy_`;WC9ey8(FEBXmW-<I<iZ6_xMK^teIjM^;zHt6uzcIeh<zat( z;qP~-_`;5docO}!_)fUp09V!x8`a75>ip{3g}LWfW5*1RI&jXn=2e>#12H;z=TqZw zYHxj%2gQyp%6Tr%dG3|-T$=M-?mhd?i>x%>;&~6BEyCI%u-M#-{b?FADiEVW8lYOs zNH1JXqdoE>9;}4b_YT;b9XmpP=1G`xA&*_qs?6%L9c8N!&c#7R)yB?h<L^k_&=QYe znMUF+@qJhho()hn4DvsWAAnYbcU(`xX{pu57uCi-eLyrcx$X#Jg7!<B`*>g2I1b<a zBLM30FFR;Su0Kh^>hzHNtBioo6$m>Q9W+!M7S00dC0E%+JHJ$UdF2(AV{nqSibs3i z2u{~>;@Ue<ALvyYO<Hmc;<wQOlR}ek7;RmF-*)`6Y)vFpiH+2iSO=UeHM!ygbc>h< zE8F|-Y{VkWs`AxZqNf8xiyw`jV9sLv!8Z2FFpj%Wd9&EJniqP$H|j=>E^0US*mUjc z`rVziIW1Ve8JzC+qPDoPDm}e+wZSdm8EoR7sQv5%d<&ZRJy!cEkI-HC>MO6j5>0gp z?fl4iYsr?5Xe@@C9-J(>JJA3%4I42B7gh=u5uOjo)rjw-wg_b|%9O1au{;mb0ytm7 zAz;c>se@F&8oZKq1P3zZSCuNQgn*@ttQTS9><*n<wvU(M6%bS+RF9JJf;?*k8g$n~ zQyob+x)9b5h`u!jH9UQV{L9uW-LN(wni={3*!%XtsEX_V1cHP|y-^WU#TqqA@YPVQ zO)9ntByv|b8pQ||v9vx)wJJ5cf)6yfyPE5|8o#2YRV!axThz9uJ`k%wc$lD8#TOtx zh!5aiq7Yv|QOxi2IWzaMo8_h0e!t(J`6GMpotZN;=bSm`%$YMY$=t@%iw_7}FR&PV zoyIJ@k_J+^UO>bD4u_=&*Oa7vk;L<PGroh^PK7j*&C~wDF2)~)Qje4MIYtnJ^m2{0 z2!o`I0j#)YJW@O{%w;Q95{NHCXbpmk24g)Mt53xQh%(qy<}iTg2=Nni)mZK5DF#^O zsTbr;Fb2z2cK}!x#<|<I_L=bdnsZqct%A&wz#T-ZfSF6p13$K2MAl-n&$E@*GB_A< zentdK7)4d7k>{o!n+8vC0?SEeC)_oaR&+pQd~7qu*zeg8T>aP=OQBtn3oB#0_Xvy@ zgasY=a=6cD+zeRa9|UHtFcPu{Iku=Q5FMe$4?yIhj_3@I`41w0CE(}-`nJ?>`ScUV zx(ZpXAElO$uyeeu-AG)C-Z_^F=7nChh-<AatRI-{ftA9@%u1`x2}x=LabYGA$woeD z>pBg-<Nn1RugSU+-R3HRYE2UEuqQ3+51}LFg6GX4t_-w%78IF)VkK2p^|Y{6-OO{) z!j@c58%~~wYN{Koy4eAu@`O1QC^D^@nWmP9RXELnSF<Lo!FYg?%1eBQ&2$flJDmr_ zz0-+B(i&@N<cipo#;(XI9FxDO<U(ltTIo}D1I9yg-0T1`4rXIEnSF3Xc$BBI9iu~4 zn&4Q-IFZd?lL{kIkQ?FoB3AY6=x>vCvz-_#;llM|tXWCDi7gP;GPvPP@94q9(A{y| zDeHT{NisT3t@(a|HQ#F7i&s4pi}_^>5Ss;h$g(f4J<f?uncWrrt=|T0)Z)5W_3UKz zY;@6DAV9btZN{eXWdCoW^w8IbJ{`7r-*B|K##&!vt%jBeS#MY`cMM8fCoC;r9vMIp z6)wN1Fj90<GH+e7wEV5;N?^SC1nUSKJhv#<O^>!Ck`Z?&&Zx0IF=L<QhLh1|v#q)r z-On+u8vt2WV|^O3-h$i;oih$=io@QppB?yFmmq@8F|BdaL%g-&<<L1*cQL~v`+j5y zmA8eBk?6p}+)(*jlimqiU$7c8R^6P7ixH;_GN^}qG>iqRMbI7>Z4OC@+qwASr(cLS zK@;(ZW86^~_?d~oyASaQ`BdEus-%udu<<};$Nma0v30p4lDPOFRKB#*3g4D<*^!}h z&bkeN`@ex!BnJ(B9O&(e^u@U)aw@+yzx>(g)3~D;Enhn6<xuR4T+qh2{xgWdu=Q~b zFT?4`H4>8`Q~@Bezu&|^f|Be4o8MMFn{Y$t>=sU5)J%kjk^>f5)j%1<PhGPe+nZ?O zi7oY2fTMH^SvpyV{<nacFsNo4@hJKY{3FcBh%X~Wc;E3lJV0+4@eVv#<7Pv~)|9_* zB;KJ6R2M=fqcf~hXE{F*P0>+Y1zLbtcU>9Lg%a*^1Mx)#EQpv#^cmHQ!GB%ON1_!P z_{juWjO)0sLSa2V36B67n=(zYgORu#xiR==$_;<VolsaG6|i%O2cx<ZW5J3}69J9k z5uI6vZIjWN2%1MRhapWaALBFl91^^4wuq+a4B%w8b0)y}@{#o#3EUqoRdPJy`b1QE zX%eR^&TOnh8Qc^AEmt?gnM6Y1ygw^CTP-4@m9wQo*WU>$YEn7(s$hUPy9@qs*WIgU zI~H>NgWVtw&nFI&JsayF02!N%Dw;9+oh>LXrK+3NY9i&EGsFGL^+hm}GZ4k?-Cu$M z{Y;m`&1aeP*c~KQGHD8EjX=4?p1{!XWdHj+%7;E3JRRdnv@=->K5!*QJLS!MBfeJg zCd))F1m{FfEq~TXyn?STv)2FIWz;I`V{&H=j*O2zq{<nIo8$qEwh~p4%3pNxRI8jw zgS2Cx^P5~iM(kR)q7b!2e<v|Me^Es`?gKJFVBkV43sAEb>>*+w1no$uogcUcooAKS zH8<9f-bkK_GtV#zj9E3a#SY2>h<xS(a+Ux;l4rWAY$l;u0u5Kj;*d>%B)}x#ovwI6 z@qu#&@UMmsDf>9yT>C0r|1BLAf`sJt@K3o~Fr2Kz;%!YM>Y8EIp~@QYLv>Tws+*og z1wv;&>8ilW5LF=dqgNMJC2P=)y6I4ZPo=3r_ncG?_LCq1XeAo)fp`+VR4Sjg;M1wl zC<qMWBmyTpymxXck4NJ`Ypme^15l91(;NljVT{D4H0MN)j7@nGpI%40Jb`6ka+d%O z%2z%?HjnhLE`QC47ot=(^gcBqkKP#CGIT@7UV0u7YsIY|Ex1Q_dHpe=)PUA-`C*r> z4W;^DZ=QqmXNGM)p?pwpBYrPxp}ee24!av!EhP2FiLrez{ij*}mJ!DyGi!|;5M=8; zP?h3NOlB%YDvA7rWJO*hF$67?t{CylP#%^N`=KmvN#wi<4ASh%1S9qU@I~eEBy-AW zfe4}ngAuwB+yna-eUYm=ytoxqF6TZOu|G;_T33yg)_mt-6afGG>4aXD%qOZ9{-lO# zqxv;S(RQLQ!HvQocoWQ)G@Av2t{sysv^Hq7#HmQqPmxt)r4Agv2E%El82xwyXFIP6 z`}@sV?lpG+>PCx=#1f3>D(e}if#e`L2cU+^7#Jvln@qhxO2l%wR?P(h1Q<(3pOo%^ z0ku`r3@Ia_lyO%|yha%4ee{kXT5iHujTV7`1`r?6hlMq{9~kim$WpI|t&1Q4&TD`< zF&$itn1>qc4V+dy8C0&ZUR4H81>~_la;vm_VPx+RxG#KMbY|qhlaf`RLI}dbc@y}Z zeu8z(Y#gl%3rA&$t_)kB)mUo*8KVSUhf-~*N@}BZ%5)>%hC$zr1)uEBf*7K2a)_d> z)2pnS2AHRw(fTVIt*bi27AEr_)L8F>uV%u?B_E!2PTrp}99r#Lzx7$yNmkXW92#KZ z@^_=FYOIgYn(2@M4KTcBsu&yR2WSse7<9;OL;;B1fa<0<Ld1wh3n%3}C<Ef7D>c)h zfMz-egBF@cfJ*WRTM0gaK&=COyh7GEKk&2pti&wS!6(8^$07%M;e3c+t@GY<Ot2WH zlS4N+)1l9Rf@YeF(cNpxkBS_GPBc3QAUnSGh<?a#NVqtk-*MC<YdpsQhd1(r^~~XQ zh30WJ@TV;{Ml8S%FkXryvrC9UYb6^Uw#GH9hEGQ~m5dzM>|9Dn!UpJ&wT4(hPPdE1 zL^wHarqk2UM$Mu|%1noGzq+*Qxm!~890f<AAcTpMrp|+#p{LJ(M(Jr2NxtnNei@$s zsV2H=&&?utzKabvi#g0NanC0kS;OF+;KAGdWk$lAbvPU_|HF(JDkRKl@gv1Kk{9!F z`)6lu0g5?GvImZ!3%8oPL5HCXfH{~2o5?1+9O!YX!1HwdY~p!_enu=)(@gz52G2C< znSVT<Sv#L6;JHOVPc)OYWB3uFgt%V`*L^iGC0RScz4{B!6ZtGPCu=A3S!zx;sjLl+ zEP<~x<adRM3%#TXn86S8ChomCp&x_hMT$!q%2dS3`xrZg33#^2yY(Wb?wG+BVd9Qi z_ApE~;C@Ry9lZo^Wdwl39$KtZ3M0Re3HxoV+ncaokUnAO{E!p&4xXw&ECfzfz?@ym zPF+Oe1*Yv<AGq`O-@;H}1^3Ft{SSKLp4Swdua6M(O{8Rdv_Z_zCZI2Eo<5s<Vo$>W z*YIVY&N+I=+hPYpm;srbn|C~HuWaj|6J)<Ch}&)P9~C$Gk4J)L<3I9cCjZq+Uh?1D zKk@kQ_6o&+9^aKnF2#4H`k8!Jrk_FBCLSb0RwCb-`k8#EYEXQqT6Q`Pcu6*m*LlEt zO%vqV<-R6*3VjA_nyg<H4>mRESIveboX3C3rX~7Scre+tT))alNH(?WSF!=>wejN* zvT4OF>T@T5z|sOb*|bT&3g~2$8nV;Wfjr43VwIWORoMdlO3<jGkgv&xBK=iCmO&y= z(*{ZZ?1N+i0}5pV1-=P*xVAb-E=V6F1(Bc2AZcQYyg_o_HU<g1ls-tL?9@f<O<<64 zzku><{a%lc`(=F0-2V7TI9H)F*~iD|9ULF?7IhmRTrc2Fw`x71rQ3SJ_R`bNr}q~g zau#|E5B6)ksu*rzyXYEuC`>;>zwcyzU2lKy<GdW;=k&UvEto~TqK;LEyD50dH}0z~ z1W~{~aFVJf2Wy&#nxM+$Ea<1~7xO;rf(LPb)4CA*8?pP(J|Lx9f(8_jDhtoYJY<bs z+Y6sl6L5v$diyUEm}M<)UE@(zM=`}3QP?q$2h?I2X51uxSZ^nAT%wjgSU(A@rv%PB zPfkHQpGQ~hAB^q=o`z%i9o`Xatz_NmhS4TC40-uLL0~R~0CxHVck8Mxq~Ol?7%SR` z4d;TxLi>{ibU{`CEb32Nui0&(F9Kn&r$(d1CLk`Kh-*{#9h=rZdY!^OuOFv!<GxI} z2f;3(5#H8P_|%m-;UsX!?QT|2`)5<c6B9WYf#qDJ$;ZxQyZ==@9~{V9Z~v^P;JYSl zodbLye^9-DQn`2Sv0R93+?ef%@@mBvTt^A?fPk9;IGh@vOIr2+1xc*%*k<2^6rs<} z?tC<yItRAG8aprfne0rJ3zXY#K(-j~Z4l_1mcNE`nBX7p1mn5o&E&C;js6GUXa6Y| zxK{oSxjz{fCkwXh->(K>+=M#|+@3nV^isda8fobrADGP6@&3Y!TEDsNuR@bC6IB;L z_r{B4(k<Wkp5nr;^=P?w)P(TkR>os#;1-L}m4Y;!4j#P8A{J3FA4r4Q<Xw+}kw`fa z7<mDhYIwC+9^itp-a1(N`1rE?p4XC{-^ss2TlBf|!oH!lr=(@BSPP}FJYe;<PrE|5 zuB~MPv5`8yVd8e^b-tCAUIA8Wa_Kd#F+i`;cnM?z)z}D;Og-%jm<Um_XFY${+do{# zTZ=`ybX}@G4aO(ep7Q$Fy>qz08#2)C-=&wcFy^IR|7KjWo&H_dxWoN><oZDWCgEkP z{kwsQ=->BrXU_b<>)!$T(@1>M{S$s@YnzEX0PF$?7&Ez-Sw6hLOrDs3*&$|f*nAVd z<3VQIg7Nb}v$ocv8CSw2v%h~0mc<h-k=_u6mruv~@glf5C=WF}-YH<WT(u2&O=<8} z;T$R#-Vnlzq{HJC%l5==!D~r_cUu77Yrg@!;&gbt0?{to7Q9Vq@TvpwEW&#wn%3XN zgtvqPdu#Y>ZVBS=(<y#`%Ly-@4sQwJHEavs^fY+)2H-ij1Ku&|@MaTU>9*i4PJ>q$ zfcIO%doPmK-)6#V=ZM}~e@oNg^$NfX5#F?Pc*1{80<Rx7uS5TqpIUHPiJ1)Lg9%?G z6YkfI37et&z%-DGV;8#mA;^Cf+l80TgyXjkPxz&iBRsjS_N6mT!Pemkzs%S!ymY2% zxpJ%h6@IDRF1&Q6nYeX$!Y?`7g_q7WMO%j_{L)NIbDQ`}XPPBfbnh?clQ7+t*%V6s zR;D;p-#6jI<4m$ae*aS3#9!<Sh2~jlT8|Vr>*>sF`Mt4thWug{$wH0D9HtilAH~nX zMfswDMHnwGLl!LjUwjg;^#nwm`e+~cJ-)2xL8@nO-i*h*Vl#ys!vO^shcChp|Ckr2 zamR~!LOfr}IIEZT@EnF?@HK{6K7R0a6Z0Thn#bfMARw77>xzs*TL~6M^={$gh83$j z9SZ5I#eL{(B1~27y+Kx~1J_*>wvkx72S86<L_{ewOoC;UKLCde$PycU@yaI<e-Dou zB|}>(%NF4PGE8z<t8Ro5i{b-DUxLe4xafWkN}%yQX*I2^N&O=C<P@%uuS_0`i?D|s zq8$Bh*Q=99$+9EIbpZgfiLz|I1u!bH#1r2iU)<cW8>QQMHJDleDT#m5J`Q5(J$!Jn zq-JtP;#9QC#L*<uvuh8PH?Fj?n#4hP)$0Qw6|v1fwj#$dnC2OE9*EePyL-ra4EcZ@ z=684{hs4XE<HM7YBN2gv)wc1&ssVVh1|0e2uu~%E#q7#qWjGC;XFH_6AA=EY%xW=l z-Mh)_-aY?{M~rWI^{vMvu%fFp67LEEaQG`QV*e0sIK7h<{uU4bxbMN1<O?OxmX1WA zKfKdkH_PF%9B#b~W5HShxU-_5Yhpnc{a)Z&-2I#*PBF;h8;e`;76!f8F<x%IM1J8} zkYAjSYM(_fDH_@g6w%2rTYho=4swvt3UiVl-m>$XYA`X(bsUt^^gtU**#@{G#G3&a zsus^tqAK$oCGApoQ@gIvR<GjCK-o_9+No1Fsn<>VH3y>s73J_NGUuz;eEnLWUJLXq zS0G#m2{ISSt9F#ci%a+lgmHk@0(%7)z&nCNiuk%is0*iVl-%}^Hx&vSbiIx8>!FaZ zK(LF#Dv*J7RwL{%@i!3EBTpDN+*B4gzr(ix{YhuEi_(bAEDVGw-6)tQeHDryDOR|h zChg)}xPpx&4((~nR3m3-OwN?wxRd|@zM_%rJq*=Su#O0>r;S8EHW8jGq@+$fH+8Lq zG`(b)^BJ9l1`lu?I<Z}S4t@@&{-RhQwfB8fa3dw;Z|c&G2pq%ZiHyFgtoyRe`XDx; zl37dHOpvrpemzX{HGpXcAwe*^Gx68sf_*LkU+fI>Mla1?FVPL;>3Ut{RRLX!!Y@Jg zVWgx}INzC#Zyvs~w6FgK2xi%t_C5BhYG0AYONqvdZXaI*#I4fQtw!Kyf)~>`V<AFa zxe^%9;*$fK^>~JvFIZnr=<brhG|h8*RlsFEy)fX7XC+pq2`|E1*`m2m#&g;rgdhJ) z4Z=UZrcltVQ7~JhfNcl<`5Isid=dVJHpEuS3<4E8``}v^d?>Vf_;9&U<D*R1tj3`B zR(tp`b!sPnU7xj!kESs?Rm->W`c=!f3Hnvbw~6{y%eTq;Rm-;qdEJ%rEwo&rwn<ks zUDvP#zd$5k1E{TnqF3Axz5P4}tg|1m8ITX2zTm=;i%hjPw49Lj+K@t{S{t&}cUc?K z2yD>IxJi=q8d1D>*D=&6S75RNv~#BXda{PEfnEm~Y6X^@ockeqw7)Yb4`)u^rSkA@ z93Vh>sD_hXPQbgS4E1rKjZOs@!zgbs#<ks0^kqeHv95ZCrh}_bbk$m)2ti>tI8SZ# z@BuT(KEEEOc(R|hU~Z0}b!FG71-ObXF`^gjN^Lzlx1dZ@x<2{oBo}|1cZELrDKFpv zhT3%}Z29%@$JZeKa?qe``efM7>XY6}ve!$V2Pf%zh3lz|mBB!J;c6UAfeed@G*Q2~ z&V_RD2()&0J$KyBw(F7?RJ#;WU|$JwJR^axz=zi^HPC6{uf_^eTDvOqoR{zo>jhYl zEy0BrcKxqCk{5AAxg=+dN4CZva6#XlQ-TjYuNq$~jh?0#DZR#zNpE~r@=h(L5JfY% zTl4!nd*K`B30d&E)B1TI-LwMTv_kpyn#R`vUaPb)spe$uMvSu{W@C0Pjl?KEYx%<Q zG!RF=U_9X#i&nwx_+fpqGXtufMqr8Eb_%8(!%+n58}ecGC7JpA;GRI_?|9zTd+Bnb z^vlYL&(|xeOw?VUth=t|1Yd(g>@JK*)vqjgKVWC=qPzc@y>dOybmcBTS0(?VSpqjV z4nRX3Tcmgc!~ljHC!@~(IPOH_UEc4)u_x+1Fi(@Iva_m_5iJ|-6LD_7a1pLnP1a@@ z^SKxF$=0c$<-X!s)rs*MgA+6cbtm{5U>*tBp#@GIES7e`1-o~B|E_nB#Y7Mh5j!-s zvCq%~ie0DjYm{G4F!D7(HQ^~U^@vQ&?fY?k7-jiOK#jJ9v9yp_$X7LwAzwd&SH+8G zUbLkPn?4}u=N>85aOX*7d26ItrT@@RKRlRjBqkCD_(Zx{c!3!9Vet0^3Y`khcZs9! zQbZYL*cV0eT=|SbZ-c;gyNY4t4Nvw~W%lu0;?<c|$f_Fb0|YjXK2s4eE=cU^@*$Nv z_kmID)BmK_Yt(+QFX%7x_Pb!81R~+F>qUi$mV}e%^3W*+_}Hm34rI)}fd&M_b7PCO zqQ<g$h0sJQ_sNx~lkO#UJ??S$7x}TYPoEfrU=UGJhB;pmB4Oa1#V(e}l~~QkZqmqD zF6Q@RI9~+YiTW1@_o&1cL8^D^eJa+9fQw4`1sD~lk4CQ_>&LCw(I+|{QR}c32!lj0 z_faY)xi|KgbliMC{97AXE7twDbVYAgv1=WV`txD;dL*;sX*~|B!J!h*a)%o~6|#01 ze>DhP+baI(RPpe4bjSZU_^Yv6h5zLKX>QJ;V^(t`xTQZ?2Gqy&pR1dNJjZng#z<B2 zkK#sx80B;?;EzRQ*3gzPCI&O{-Tv($!~rD>+7K$5lQZ`a{6pwKwK4a-%C6IJ$MXkZ z%nI^s5zoykL5wSMR9WX1S0RwbWEt%9!tKQG=Z6@mu6AXmkQ6=;`#})L)>&IQdK3e} z%FI5mQihZ=K;ghu_CyC!*~0j>DvqenbHezE7A(($@s0Q_z>`px6dtf_AL+vYX@s}* z3-CUVfIIM2!tAq|)r^4`*WDGwJ%oTcq1$+<Fy=nRPVla(Ff!$!msQU9JijJGRP{x? z^%wf%r89bc$F=@=fdjn$cr{>l=Z37G1j@fB=hrdxOM<!++#FOXCt-Hn8yr76-qq}Q zoN#%bnL07OBWb_z-`(O}Bp%G=hb>$;ewkN{#okA+lX*Jw5Xff)MsJ9FQrH9si0=T7 z209I@jJa^yN<u}2IdxM}Q8mA<02}3Fp9W;KW-b#vg>7I}#e;YqcOhA<0DD)-WkvYV z-#&X^3|H(6O6Igx1D<9d#{UBp1seILpel*NJnUpp7~hNH*u=pLp5il5fPjx-6=iN% z7P2UABGYPa;^w~t7gkxDY7XoKcFs68)TgBmd%(ih+hJ>|J$MZj4@7371*-`N95mu& zMQ~1JG-G~u$9*qY3~1oDnw%bpK&i6Ul2yzAt1Lz;fQ$*S3hYfb?HDwz45>NJc#pm! zq~zk!YmuN>;3UNQL1u~^tQ=Jdre1Ms9h!(C(6xl^>qt_b`mxjX<pItz61>et`+g8G z%^3JNcayU5igAoYCEh#cqFr8`wAnF7@uNP*U$zX|x7|(krQ-*yU4Fs+^`VrtgdLRw z<B4Gk6Zoc|EZ)QySOj$Sh9Np~zz5)|L7J!T6jmDgI`dCp{(PiU3(DbkBsI8WJhfQ9 zX$`|h#23gt6Yb*)Azh9uF6Q<zut0trz+;2SvGgkmQzmdGGBmIe#~JuJO)>6&`e~jT z?U&1F59@L`N;P8-bAf5uvJ>z|X`HuuV<e{HBwDQ2u!HIJ<o;y$e(eiTq28Ixj5t8D z3fE*~n?xjqZ6-rss!SfkkY2t1au~-&vUg>2K=It1BCd2H1+!!x9caW~0W1u_;t)<y z4wtt_hMU%}z_iwuN-lRT>?qK7yh?vJvJV44Jy@bK0V~>GWqlUHnixcC8TIZ&!N*F> z$%ei}`8QZFa)n3~wV^}y)8TIOcu%xIa=(q-+$OUkt(iuAC}(!s1~6iK0ms~Zff#m# z#(eMu7^^FKOB3SS3G5c+l}fOCxG35blvghH&V+9u6MGI11QxyvK?CHO<#}KP!Oxw@ zt&tij&eK?}#yuEDd<Ys|J@o0JPY*lAhz}AxV#%)&alcSP?T{@PYp$3w5}zT1wIU=0 zW1CIyfb;Odw4iVR8D!MQ)H4%#jV7+AJH5Cz3^8NY^jVH$&%<aCm{qn7Bd`6ty|oMj zbBgv;94ZrxT4NTP0ppOI8V3795dshuVQm$J*jaJ7Z0`fEs;oa2a|=0U9n<l{KWfCl z^>5a?u1AU+@SR4CdEi3)6ony>`6+Z@3)^dgm(fNjO}p-$fJA%BdfABILGp61GIwl{ z74{VR#K&rc<>SD2Q});kRu0CUdKSV?F+QMSdBGlf!MZq@uqF3gNbm*x*2r%@Hi5$e z@~GTYhi495TvshqS0E^f#Zx138DGIBiIef5Ic78-*&@9^=Lx)eBkkJT)mu&@xJhX@ zZc8uX-tw!FB<p`*L%9cdE&3<>%#1`n=6ec!0uy9BIv2V8<umd}ety}5knAnn8Pb_Q zQLM@z*}c5fr&dpgBGp>xOci%?9EbsGI2uYZ^kr!6u4I7qmN0MySsP4^7mA9m+6o*u zP!##DWUWWDI0{wP(#))-%xWa$9&m3=-i$Ktn3MrYN;uqa>G^9puJSpqsvvjD^x*oj zs;d$j4U3j)a6zGibuqxItf!s(fn=qZs<17Aj7o+jr-EVcWIyreoCq9IEQvI#br2iq z$LkugT;iE~&yBbNGyqSRsr;I5>+w<3P3=_bJ(rxQG4&L1;mOmAayxPeKKL0*5n>j| zP+D%|GIRh0$v3h4-g+{4+8gkCtanP3AtqWY%|6S5yRJ^Br3q6x+y|VFm&#K^){@H8 zWdK^R4g3KpqYpY7xyq>1u=@{A(x-tn#QVE!Twmd9>vkh?Gg2LHloffWN5Q3d=O}Pj z(J#QeTmI4(Jh{f*EZ48&;u}iB=?#RsdIH}uTA)EVm*QvvEnA(Nuv<my^XSBKUDApM z644zO^$|^r$$;rJDHeh~;FojyAcdE<>T=*KeF?{J;FtE+!`$}OIu{7J6?d4<$MU9` zg^lQeI(+C*c@4Jlo2>RLCo?sv`)G&MjS5@OqL0{2LwkbuM+JWoaw5h7d>!OcZl+-~ z!&+d`*1&27ZZ2gBQ%b;w2$;Zev1br+@`M5L-qywdI2Nd|FR0_$OpDB9j17QpDLgSX zsNGB+E<-(DfN!xWCf1^>f5if&5JP?Cn%PTaeYzQi8m1H>mQSt5<CT}qwD6btC02!R z6t2u1!Ja6XSnBNXiv|HnDRmaKd?A?S$i+W^Y3Hw*LJR{Kw}>FvNc&hRRy`53c)1Pi zB5q=sz`T|7ILJ&3_uf}e;AEzZUvZr9#q<bqk1h=@`9<SQzBKV8UdHpKLBC8ilSm%k zFsvlcxc+W@9B$0YLtnn%bs=2*Zjc4y+qq>9d)v13G~)Y->UmO|agYl?hSjC{2~!Ue zPBd0KjWJk^4fwzSl=uRkimxs_#ajq()z<3D*oNH7RCR7_Q%~dO76_Z_I6Ul+;X#_l zt)Z%U*ZmAVh8?Z<96YPXL!cc7j1AomF7LA;N?EQ$RcS5RA6AgxlDp9%1=YkyAq$Rw zA%4+%K^u^Sn^kbK2iiRxxsi>~@%C{4G|-WOKG^1b)d$|mBFh8>N4k=E6<E#YvH7^J z<OLXq77ZuNq3nN_G3E<zoKeZViG`b4xO?Wi(=*>GV*pmMvf+)yB?TxpbrDBenpI4> zK%O@eN6N)1Q+T;@4{$v$DUK9hQf+-w8T%yHIa@|JoCg~!zTG2Q$1{$~ax0DBv{pk& zPFql!zcg9_KN0RVx*y2EQx8`R7NevwD_;B{+C3~UvhT2-xa%3;aAD0QIbb9vyK+cj z8gdt#C1C>twZnivS04EYe}+vBa@9j%Gau>oc&jO2ZNy)KppyN>KX99mArJN+bO;wG zD~)N3DvjG(9o!0sHV8x^2`jz_75f$bM93Im<C!YCQ8B=2-=Z1&o(zq|DoEr2ehyqs zW{w-kf-YYS?A{1Y#17dCm$MY6upYpATfo15y?@WFcdbg+_5Kcc2p@NDahZ|88C0lM zac-`0eLE;9)kO{^r!7G{8_G%}-=;h&s+@f!-etG{(3gg8upg#~LD|{(niDBE=0d=r z@I^Vs+>hzREitMw_3pAy+Lyy23NO=?g0QvO-tSx<)f@$Hs-YoeB7MrojW-fc5eq0g znRD$TyYn!<`r|Y)SJDF*U5XEAgY@hP3K}EvEIv6C(PP(-`JNwAW}xdzC&ve1AZz8I z<L!>tz&&aX1;C&<h#u@iS_K^I$&3-t0jw%$AdYM^Ijr~}z#~3vupfL8VTv$-;~SXL zwqRl|l*-|pb+CV&G*f1n$vt_!l$koYpe7Y5&V?ZD@eczDu-I_olp+LfC1Us?!Znb9 z6G)8fd2a%z8-s9|%J9biMQ+Y8T0*eHTdRt40o=o1<Z!?JTPP-FHV4&_z#ecVmvEJ_ z7z`Cst^rVlzY1a5xoFlyH2x<U9UgEa@ghFJ|7(3A7MMH!s>-9q7%z*e`kq^Skr6*n z8eLt41%~)yRE1=C2$v|v1MeiB!y`AM^OF`|N-YXTh%z#ql4XkpT?#EN_$p|59aJ0M zI7raZjE~$&{)iM(2yxc3ot}M2f3+L67~AOc$FCp`JpQOE!~HSpl1;zE@%e!6tF0(% zbVCVWAe;ixWy1(ZOKWg;g-kQdq@fnf<Hs-}DnKG|h705$)IHfq#Cw1}`<{gx&=8^1 zYNU8{nk(ZW{+*yYg0M)0@WJnYm9<$<!sCEKoV)dZgfS$8#jV1Kcd3ei7qU8zSwVer zfvXQs%L>+wDLUpBtL>+EXCD<C%bY>^pWJ%>3qvWRo@J;S9rEhQVLc7PUxZ)c-!DS= zztr$aZ6_DG2tQdp9s}>DVW0%2@)Ka-T$GE`);_=>*ZLppf3OA>J)KS7ci2}A0K~u9 z?1i%u%pd3<(kUVM=d6@c4Sc3u=6>fG_ynb-pD`-O+p3B$an@l)x(Q4X%!*-ypo9>% z{<~NfLY{@8;Sv%K)M#Mjz7H!x%P^iW<?(1`S(_0rMmb(3R%TrHZ9KZ&6PPPlP*F}M zW$$1pjwr9X7j&#+V1!5by^+ynJoJjB2FpkzofP<0@CRK~>s%sl(tkMmJOEdK=XDbY z1&2`?&a62CRXGRXpQpbSAAmrEa*Wu+s7x2->4RSHeu!iveirzkru-9}TOt>H1jZuU z9PAwB432gw9e!NiJ+M+x&Trn^f&RIIPbk3A@lQcTU`*Ng;F5xk#1T)I%aGFido5kA zYIRvcojJT{7j)yJawKs59w*(AiO1WOSk;eX!LHSaFO?>V8O7PEGOpr(LoYqMl_q+w z(@&xrXn%RwZg<Bi_8Mwo0JM>6Bzq!>_IC^o@|>GXxPo`$xZQI_`xDS-s)<*liF~SH zq)!pQD#2B0ErRtfsA5kBe;4ryg*raL>)+3?aIX7znCc%a#`tUK0s2Ra@p(Kt`)Pc6 z{kaFVXUGEs)YN@)4nwVCce(OoikshvKZt7Fe0%7)8V~MxH{Xcl>0tUer{3iYTvTa6 z0P%=!2xfkPbPvndcF0?r%xK3a(9><lp#q;w2R;~{9B_{j{{h-lzC>4HB>u#%>xzUn z6JURZF!r4r@Zj1jfl3Fsm8vNE0=@?Ls><qgdf^-8%!t@k_i|eCcgP(lAyF6&U;$99 zx)hC>L1mOUB+vkv&XXS{4#E~}RWZN3_k#5B<s>fOYIO>Lc;<KeYoT*`sD=Z0FOj+x zoLaZH&T+2X2r{BG(w85>ekr+oJq9i63&>UKs>kqE<Z2>Ajy{JLJH_ar!lQD>di4{N zx<9aGhrTqo6u7bHVVi>3XS)$GAR7&=<w!B&^F@GgPF=phG)69g#rx|%sNoH;2TWGX zLK0Ka(}pKyu8hfTy?Xl_N>fB2w80sVPih<;8|FBwt0>1YtBR=Aa0+ASa9&+zuQ?nc z6f#kE4%2ZJ<Lw@*OfAc_2qRP@`ok;pFv>V@Q#VP!=FMP-e$NS=^^|`vcG(}f3$D5V ziTo|(Z`fMbT3y7~V)+bjN(?)m+p38ZelAm=;j3w@uF&61{adSl$LQbj{B5hAz@OH{ zbpF_8KlT>$K5?|YV<y#+w+DteH9g#UZk;qb&b+9?*P9NQ6jW;H_Wj2)*OKqmajbIP zg@_A(-g2D@JUa)A;^&OYXVIgfz%`3L1)vy+jrh^_egi^*92~ai@`dnyPR2MmPo#}E zF02L4p{`t!{O}E-Px6S(Z|>u7@CXs<tVZw@ro^y(o!9Y*wmB~|o=O#Xkp%+7S+V^x z>Z%}8`Uw|F75h-9cPnv}r+}P`g-;~!6v9aj7q*V<AzWU>9uF2=Vtnd(1;8yQ!tvJ% zljd{bKY_3a7^U5m;}l8|Set!{i49_|gD>AMEypVlETb0-a;+IKgq7q5s^KN%#g+Dn z4{<-N<SJsWC4pRv>_N!YF^6Xld^8egKtEvji}h!Adlc(J@qQ@on_o>_&;Gai10VS8 zbKty<8xlEKE9^5X|AYR(arva`PWuB7m16%9e_+os-}nPD;<c@cq4Mwb2R>Q66aK)P z(=&hL5B$a-xWoRyKTyPACNZ0uWE=j#<90*7fIqNb?GF0`+Xu3!KkNHn=MTJl&Nu$R zZ~TG(zxx9p-;5(ezea!HPc(d*qu=-gzwrk$0_A^$KXB-Ap1<sWsz2~zG?6}t?f3)t z*)N+v@YElA{rkor$mNr7{DB$%pZ~N!@WDM{U~;{7hx~y*`}B)1>km9sw*73?AGmCv zEdIccWUEWv*8G8gK$&j-z?(Rs3;F}c{73wOTi`<J?hoAK```Ej|9ATXe|$`uKd|VK zZTSPgH$eFVfB5@t`2+hSm+}X`bF}yaKf74@14pnf_ya$?E6pF6ejmfKQQX-AxAjcU zLgA|9Iiv25gmH_pNSPWpqdNXH&zeWLP*H1jGveJwA$qQEh7oT<nNgK>A)I)QK$UBk zVQ~g=e>i9z$&JbC#-E(+2TXIb-ht1XeLAsE!CpgGC-1RI@#t|Jrn&*8rsI~I0{g0C zbyE4tNH6=Sz4$hcXZovF@tA*WbM%OeQ~iC1r{A6)*udso2w$&lUj&rMwK)q5u+PsF z&@b=FgF-jjuiv>%{P4aC-~ecv3?vi)MMb7HrO~uf69GDGB_`tsN2td`sX5}QwG!OK z0%R2em3ew|2XAn)Z(03$7fx4?n^s~1vY08J#i%eZc(tl$gw>rhz_^)|3L@8_;f<qe zET{4etlbmO`!03y+yp#N$BFbmIa}QeG}A}7!Zq&0!RhDGv2N#8&tKak8&cOs&&xon zUjNCc{s9MQy$bDD>nP#mqwFsu7rr1mKR=i;G;^ebxH>14+#TNg6H^0zgu`&02y)tI z{wfPKs?jDEuel>g4Xj(L{h`l`3)}jqoDI)ip;O-{$HLFdgB&?IYUisJ;R+E>#;&p$ z->1V@ZArrNN`N40!52h%@-QI7n$OGyA=k%`0Jd;y*y2#~0J-F$v>zhRV8s<yKA8_# zm9aG^V$V=TWH0>BuY8ixOS22`uZp)+$cht#%ud5%3L^L>;BhpfDkS=K76R0`)6+;C zkJP}PQ6q*>UaY;K-N^yUC&b7HqZ$_*wYv92^g$VcUpWVe<f<zUCqo!n6{5N0&!P_O zk4nbc(Gp`;eG$J-t13Pv@~x`!2j1hy#64L0u841l^sOqtFl@x9;}uUP&UM3+-||fo zOXRLwPG#UF;%XQXE7jswCV$CjA8ED(NIZmMHHi(t<OEy?ftR5l#D*1jMUM*MP9g4n zHDU>`ll^rk|J4;Xs(7bSMHxcUZ$T-x9m^=;+@T+!O5!z#>+y)E<)dtixE_7g*-jxA zCA*uMA=eea^5+;`*orX_g(CT(b0C=TW~Q(^87N@VWWqyCa07ptT4AQt8($_GiADrt zz@K*tc15w{_`62!<Usz0&^frshKG<DRSS5K8P+AujgVv9b}%c(kZIYvbh44K@C-0v z5MUAdhsM^R(OAGFL<TVy_BF20!;&yK<GaR9_alx8R4t6Pl#+xu{SNPl+g%ba$LgvP zQ$fL4)+8KUpa}NDvJ$B0((5#|n)KrCOKfEg5^EChrq}mgK`xJ2>+nKS8Sw~Motsw> zQHcFLsN&>Y*(dj$upUq(5vz#1`&DtSnW`<A&A2<Wd>Mnv6z*^rmvQ}fP|*pE#|)+w zGck;vT7ZYc?uWPLm7t~dg=X@~0=x1!dNPgpeW)F&U@BCZcqzJPMZ=cd2=*u<un{ZE z6MXcIQ;#+HdO8Xz+MtRtM!W}VRC^Oh9Mb|c41XPPKMdvcI;keah0LCcbt1D%50b9L zm^A{icJ2TforeK(90$nWGC)q}=3m59Raxuop7&|r<Yr`IkYWjg5>vICW19@)lm&`f z*S?9G!^VT$lZ!5vnbXZ7NZNdI3McLT*Mb=MJ2(II;u?SKEkpsImS?ltt&Y9vM4Z}L z^C>cV<je=hC~}SgXZYllC|%y)0l7*X8}UEl1$ZjprlaY2R#s;lu)<b&2n5nj#vqa} zI>x$!FXP#%30VTAFY8AY<3&}gZLxvvgI_?7B2bz#JS|Wf;})DA+tkOn?ps)Q#mn8X zO}&ikuH)!PRnOzg^$esC^y16Y#<lCQhU@G9bYzP#&W>@$`lvf=5ID@O8VX|tWDF_B zk+mAMML#Eqd^?qmz-<#DR_MlS8nZA)+yV$dt$}C<B0&q>v4{skl_l+y5u+)zWkdpD zUmS$}9Kt6E`zka940%dUvVXBJ&_w(M1otTbqy%@hJUu`@Hsa0rkNxCE{JZKa6`x4| z_nDmdJ9va*5yG}Q(N$qgL)gP6oO_ASepQuEQsTNDGU9)cH&?d&jXeNAQpcu?7RoQp zi;Q{pc=0*%BCpQ+8JN}TU+hVD=S(clpWhVwG#72^O9hY*Ep`G#qH5ez_?(YMwpQeS zirf2GG0Eb#RH<T#3L1wp9z9TTWV%$y%@R@s`<1CG`&D7n=LBls$U(#s)Qpk%Ge{(M z4w?qMhjW~T5@UmsZl7<Y5J;AY+K$gbH>)7eCUiWB=md--U$=cE7_gwgkI}mA3s<-C zzR`FDY~ySJeWgAMJbz^3z>xS@j&(3wMI(~7Ctx21KFE5!(S`&=2yb3M+KQlc{-h!- zxI57rfbDa&f)3ah*jb6|Ub;v{BmN9f;2iDZ!Be!(L-+*xP(*<-*Gj`HI12A`e(lF0 z`F)_W$dP-EB;Lrw-yuQ#;h1WLKj*(d{<OHXe!+aQb(nZ|UY7tSp=5>H<746cedk>H zToIsC4~{1#4WCC83Je7Z^a<DrfB+QglJOV<uj82!g0bhioR{#d<GB=KfJ$ZHaC9C= zYTY7jY#@Fm21Vslij|pKfMDk?w8WP`$mijk@z{kxx5M2EZk!I7xFS6s_qBKE--qsV z4ihTq`dt3|K2hfK-#L&I!hg<QXg=|WR*z=`9UQJN@n7!y!RlT2{BFD{v(YI8^<0D; zfzQH^)z&I!BGAUWebDSN=EmisUPDF|t|iTN{v{+QzCEqrj6~0sHG4kd!PMC$&S7{& zyXMt`L+u}N{$?$NpkWhn@_g;%SK{!4M^sQt+X!J@vu#8nlUqj=A<Kvo$%@T}5@a=^ zR9@Rgl&Q}>k)uL?GWpvowpNb)F2V~#Znz9bmubCazXc?~ig$j*SW7jZaq$JI;CzbS zdk9qNBDgO{ACx*+MY)p#^Vokl1ZF#A2Bq{*eZKI{XTiXCdIae#F+o2SHmw2>6~ojZ zRFn5^eDGqs%Lnr%R|C6eX}L594asp1W!zmRhoMDeva#&UKWJ0p?;2P@&c6T#<)M|r zs`v)RYI+Em!;DT}jurPCx!?lU;eK%bBGFU`ZIgYH?BrSaLeUeJq0eh-$h%@ii3CM; zC(BuOy36f5lK*FHg`kM|UBa$-Z)@GREW?zi8#@=X27UjAu2d-NL0~wbh$o`L`4nhL zBikh?uMl(^o)}wo`$2Tns1qOZ?a6!f6f3~F69Hjr<e-&CViv}P^9Tf^4%ey>ObFjf zMAyU~<o=cRWT+5^Xf+cm-Y4MQ9yN}Bnl}4zeC)UrlNeW%)E}Xyf!$_Eyelv<9*A<z z1Rb?J33jC8Sss3&=34cKCi9^NCAz?yVRhn|Z7`%05v~;eLV2ixLd?A@8o9-q7F{8( zI-GS(amPH_64CJ&J+jAwT_m0?WPN?}@gs10<~Q^4Z|38ijeRp8|F_P^|9<%Y=J|O2 zZ@-z3kKfvSeD!BQ&NuUM7z^Lb$G@46<JRSG=Htqru`A}||62ZkYd#)&*`0^|pPP^W zt>?dOK0fNjEc5Y`v0A;0=Hq(}{JQ7kmDr)L{4(Fn$N$6g@!c>3_vhm_j^cwGYQoOW z$J;-G6@>Y>eU+Mz7ZEDnm*d@DSfl3SckKDUYCdkJdVP5EvGALz`&-Re8&0Adxe1>S zI|ZMukv6<;)Bl8BjdZ73y`AKc+?>F9gYcJ_Jty19e?P%+xiHmheRqhNV5$H{{Jg1N zzgD?7(Orf5^L70iUS`35DCoOOasO<up(u}YRzLIlkh;e0!}+RB88Ga&5(F9Gnp|i1 z53x-btGzxz9E983OpalPUaLWeaz8V9=Vhwbegu`evJn15<&3o8N(^9TM4>&=1^ZYh z!HRzbC2s*7-9FXF)HQA&TUkXn9NU8lD0OA$Smz=@@*78gE#N79saE*(ddBbT>;S!9 zADm9FRIgK2`AmG@kiGmJ8Rb2C_f`3cn^P3TV2g<IU^7k!7)|dNeSD}AKD~C!+6H?c z6c&1&y?z_?x;%|uPw=f9z5FJDUM+`eu)PJWORu4R`!eZuK7lHF`H*_slL$!YHD_H0 zy{t`v%Z5Qe-0zDUo55u#fCs=^xEC4xR%@HdlW|<nYSZe!kH^PJjH}$0_T@Mc193y} zu^}0}n5+PIUeyy1j3w%A|3syuVLc@+Syy6O1Mpm3%KTg)#ct3#)CW)eUS{$%R91tr z+<z~Zm+gU*5jG?KZ3fDOQ%4?o(y=*pX6lkcGA?77xM}(Qe0$4*x$wVNmzZs`_RS&N z8WSwF#{R`OB=BHb{;|Dnv3&i8#{%~ez}jMkUbe&0OmAG-H@t=Jrh1J%5hw7=#m~~| zSPMD@n*EBY7<a9ZNGV)kjSi)1v4q@GA=#`^xK7%;h?(JJdW`B#*97r&aV{XQu@9V- zhu_0pBp`Fgi%qx}TPOk?C(j@rL7fwTN65A02^1>||H(6e`qO*!Bk+nmk{?J#el1FI zWheafj5rc9^R!Vnvm!T6!pTDI<eQ4xOwB^<U#aA+5nFYBd*mK`nRh=f?-M7P!>L2c zLu76=cD+3iCmDqh>as(0MoV{y%m<TzF1GDIydh+cn8)U@tGH$oy>+R49TT@nW#Q`V z^mPtW^sS7Nz6ZNCD*AFabI4liUZd^~LvIX{B%$OPAnNG+aB{p2|8^+%^Kf#44VJ0N z{S=$|?R><jxr<O_q{+)@l_r*h=R<AsL-r40`#V2X8nY7Z{B2ZGW_*8}>DUQw<ClL- z<2MfTP}>PgEV|@R){)m_yl;){ZV<%6rpmf7$SJpoTc6?JMvh$$+^X+TMD?m0d8|8N zd8%V@6szG28A2lXqnJeFiP-sDA+kS^kuyIeP9h*HcNGpJu-}5XFjEh+o2bq{Whr@E zFl73OGA)rM8cmHNPBe}J?PwJFqM0Iu^(C!4wkHD+j;&<?J1j;FWWZBAstYaJzdkcw zkQYf<pW+~H>vJN`q&YAF!eBSC3UarQRdYY);@}?OGc)z*64DKzE`5~@{jhpnX`jPa z-Ph!;WCYW?P5s39W6Zj>U4Dc)8gJuEV@!RzmAs%)(0ChP8e_sTkm5p%5Y}AsLsoUZ zjCTaJs*C5TU!?swcwQ5J8|^<;h~u^Yp;yw{{|CPA^7gaY$!atm9f5~lwO=(}>7QMo zFUxUC$F}t4w^jPK#?tl#=<10X`m&}vyS{vG-){P{P3cPzwKeuR{_g^nIkKIk>ovJ5 ztI8b0)V3D8ZO2un7&n38a{K;Dq^`T9yUGljrxlQ3|6%=koVJ#>qCW?1+gRE${kaCQ zSK7W0=+DpyPk%0jag(V(w?+3ar$TF$r8ISTHWhlbGL*JK^?(Y^r1zipQ}q7gqV6g* zo!+}bpUy^YL4Dfz+BWrRQmIp@*LI8^s?+!Io2gFu?JKKOoTs}Lefr5jrB5q4<bsN{ zJDGQ_N=-td1XSu-%Y8B3O{FSKS*}JEl=zyxQN)jy3_Gn+$udEWTK{dOQJ=jqs8NBx z9oDDwrDvW#x)xSdK%dt0bsPF9De6@BShT6-YE$-Gb4lZEd})mFe`vefv<mFC<N7o= zz5NSl?D+P;!vWhTn?3Ml+P@8L>c+EtoHqT0d`?rah+m7nAKYjHmCT!Ia8;HUZ5!Pk zEW%J9M5)IX6)v=2`yoyZcj14D^1lt1AKH@EKpYm8{yv*E2R?1@{cGs2Q~uTZdtb18 zX8$tZx7WYSbkL?@F}-tbxRi_@x{-^W!VUD2#KGb;E?RP)&Pd<%X<9nV%Pci@jR(Vi z1$o5f((z`{qk;3`1YWoNe{}Odk&!>~k~%=DZj^D;&1{ghC1h;~S+5R#UB!7$DG^V_ zkWD=A7lC5QiV3*$Xogjt6U8Mh%e|?Mj<2)c$9AvKkT*i*i^9e!?P2SkaPGVIs>?Tb zg>%m<36;Nj^)ofOt9fZ!1N#s4a4f9zE(C>lMVhfiEH@Nu%|*6r5*_~ydwJ;V9l!H6 zn#6OW1twb1z!nr_;+q{;!1gecqY8{!J<QmGT+<p=Fm|Ej9UEX)`s;%I=keN@SLpuB zJ`<Yrr6EMXm6+w5q6ez^lVG6f2Gl=(EUpL<`?&IKI215`hinR49dds0kPfqaxoMod z9Gi@y2bj5Un)Bc70f$kj{DTlqr!TpBVJP>lj=w6r;jSa#&EEfzevo@e?07+auS_0` zDXi+zttQTJ2YT`V!MOS77<e5GxZvS(Jow|C^C7{{M7D1m_}QEINfJGI3O(WvadG7F zXAnQDfFF-PRD3j5IF7HuvFn}DqZNN34teV4f)r}MG|&|6lR@dR?p#RF1^I0b!Kv7S zukes}gZK*NzM=5-R!uqPs?h?4t~*`7E%CL{{@~z#;K*n}#}e=R`mUGAOSkbL$x!Ny zyh>{~K)5;quYz;3LKW-PJZHpziEnVfd8nu>=$OZo=}u){oF^U_9}A@a@V9*mU}_(d znXHGC34W6y(*K_D6|(!C7%5SB5q(a*ILIkJN7q=NKud>)ydNAdtL#TF<9IozAXL8Y z>eiavRULoy`nOW`4`T()kgChAY^=sf&+D$f8)G(bzl*g}F->E}Fz9Fl%W!X_<}c{a zaO(Ur`oTUHe;$VatKyQF?=YwYJ;HU2Q#ZAsn&^RWuh65i6mD;t;$VI?{=xf7o*@Io zQrD6WTqw7Y)9%CJ!p9eT)H$@tA;@B_Wf-IOIfM@Jkv1GLeuRGuQQ;C+h#EG@xaw-x z<0Pv-B+nP2OgqaILlG*Cn4u^S6#b~+@G_$ObHhjH$qvrwZcOTGx9>VS{l*Ol?ri#( z^_8H$BFdnzQs0r?>XZJL0`_>qhPGFJO0WOPk%i{rBMTzCeXQh75;tL;RtA=vi2RYY zUGMn3MR^1sgi91&!{q2fvwTVYKF~rChxmq<?-{dl#wz%Ncb|33f~-423k9VQ$Pljl zjbLQ19E-Mj=Z7oid>%sr!(von$8^oNiWz6Q-&HF{;No9$qF0*oeKhXF8C_UE&=cLG z3j#cn(N4%7uQAcRlrj)G20X~`PU{1`uc3Z7;AWxLH?`>RX6hTMAleT`jLYwt_(uD> z##i_~67-jk%&#9<Q8uv)axzs5wjT|}RM7=6=r4E)H^)!i+~mTKtf??&ZRmPO+V7VS zmh|h-Qa-JHR%@_@f?sH|(WR)O^|C!H8oy`8Mwa9T;gO#vpgl9lf8F#)cX;UU_&|TP zz2mP}mcijphZ@%~+x4&bRq@^_@3f2BMsAX4v5!h|iJfa7B}e85$Pavt46*~?3)9li z*<j{QDgaY!`^uU`UonQjDTVk5`7*L7Eq`)kNyd9=+PlCj3BoHetw}|IS*qcIUq=?! z@9qvPe5HO7x_YW0oln#GCxcIWnXwTCxsZzr4m;zcw+Wp~Z?9`#LaGLAOe|$AF|CnH z@Vgwp%kkTe-*)`k_=Ugpgiic+;&&5%H#x7ot5)tHFVxDH7@HK;I}XI2x3-&1SN@l> zQD*9FH1PcbtlD7e;%%JQ^O=$GHoixfK9WHyv_Pa5$d){#5byYf*s~zQWMKyjJs>0A zi|`I|oPghv_#It>_fov$cO-sCmqJ<L6_4xekKSS9-l9(02kjJHx6<w}k8A8Wn=U%R zbag@>=mfPoXJ2=uOfg7T=mRr#dU5Z}PS_6>Foq#*W(HDnLS~}0%a3aPE~~yhl@0Xt zZ8L|Tt8dSzvfMF!`-JG#mG--1)AjAgZ?pT`(6=qDFn{Ot?Gl#xO8W1Jozk}jv}wOe zeRB@atk2W8wS=8r-%=-)FNyRshb*CGuf{#)b{Qt)Q#X%iNv)5A(pKwV3ZKtJryb;* z+cZ&2MH}K0)cT>x?s`}(=nAdh#F#%gs~%>Or-z%Ao?S|#uj3ZTyRMfyrupI{pkH@) z+XD3}a*_R^ypnodc_sC3Td!hlrq3gEE4BRc^l383uZQ}SpudbhB`rqhTb=a-$}jyq zYM8OLn7@oJpgH8pUFy>Y7k=bDF$T0gV0%O#L!W-0toWQ|0|M6c^s!fdhxDn{dD#F9 z%9N9-(U8#YcvtYKPn+EKq`}MN7v#^>r{W*@D*ALWj$`rLv-A3N{%TBHMW<F^-t^V= zse(tHD)1n<x1vvhOKAH5UAMxY+t;Ugo<8+E(;x<i-x&4o`eVMLK8?Sz3-swFP|6uH z`+tr;z2|i{PV{LTG?&(=Ps-yO`xrKTtNQfVL$|L_FYUWEeY)uoU!Tt7GP6uq?^)FY zCgy?(cf*_3)|$^B1k}V9K>EVGT+kV*z<$-&djw+1$bWwMpR4klRQdMI@}-kd{)-h` zFMp6KpR-Qtw?D|Jzv(J7$DX^5^6$JS?ax`S$`eem{iQdc{MFscbKbsXUV)2*y9fm9 z9oUU{&y$RTTxnXZ_Akx`D%%#c0|Zbrfi+-8J`}*X`i{q?s+j$^QNhIl;wJ<C@jm?F zKKw}vep6E5H)!}TzUINdOv68Ud+^_U*K7YfPk8PBfr7t8!Jn?-|JsK?P{Ut$+IHGM z#fN{b4}ar0!B4@B(*9-*e-9u2ELF_DX?yVZ_u(Jp!+%V{uT}6DYxsX(?&0SQ4gaX_ z@J(w~<>?abF!g=LF2q|*>rs<FE9<se`ALnz4^FC*bE&Kp_qaz6HijhV<S~ZSG#Eqb znv5aiW*9@xYc_^l)M5;YE-{8ofopb6z=%zhAv+FC8gVWLZmOAg`<cDI!~dyN5t7VU zJ3Mvov?cf=gKo$oGgV#CmMF%DQZiubtYX8o5+%%?N>oUpcRPg#6Qy{we>$mWj_|7e zDK6PY0%Csb&5v^p6J~m=ee+pDhX9`FY_gUy??OHvg-e>que+V<uJ32?=UoC<@ju{7 z-L3X$1-D7zzg^>hsK8bHuZr1!tKAO&9Ph&)?!*6uf?tsm{@JAAzqpi*75JBF_$O}< z{+sPABkg}@w%7i_3VwrvU(l(>@2`FM12z10r);PFQ+)W>`taA_5^Tta76rdV!{5V) zKT8#}Z|Vjgp0;+iet}q#7R=EQn;Z<g?d@zv5QT4n(jH<wvRjNr5R#_@b=wF80=u`f z2&Ke6P#NjQF&USewGR7s<OZ$BI&Utb+6~l)`78|EF<ym;7Zwm+aB%8MUFV2=`xF<< z?Es_g*S405XMk_UJ^OVBf=iu!x6(gV%<Z2l;rH*o&%FLIW0w8}>ab@axAbqz!mamD zDh&2dAO!n&i3?^Hz_|9g#DkC|GVxzZ<p22*8jKAX(~O5TQ<vnkeJae<{@q5jMU$^B z*3L}$gZgiciCd>N=I{f#*biUBqxg52z_3upgZeAoc=W<h5u|2Xd)dWkLLdNQIwPh5 zQMdz?x_2|HTw`wur!zce;DPuSKpN0HVBB*)wA$xI@|W-j-J?K2?#eE7KW&QKw7qo7 zAB1Fz$6Q#g0*HLFH!*?NuG;Zt`BRaDIIZtF#!l83sagEWvEyRT=Q@`>;Nh9y$BtX* z*B5}p!)*i@Z_<i<OPc80^YF(?+mn-u0Mp(NFeL{jMsW1DMfbC3QaY#>#7-*8-7sQM zZshy+wJ-I^u~RxJX`=hD#X?A}9F!X!WWR@mj@xKQtY8+%-2XZWyC`Z{$izRUwCI${ zNO9Z411EXNr1GnCm$xifV+^u}e{HBN>J>Q}7p6W97J^DZQ<qxLnDbW`nSDOuW*n|- z4^uw*Qs4xucA8H~qsNKXf8^rd<Ft4Xl|vL4SudLN*A{g=Vz1l}dpx{u|D8fBqua;Z z$rsUs+q)-42iu+aDou+m?vhI&*~!;M^sTgSJrUhMnT136$CUXx<#MEW^F3jQ?W3T` z#5oM?>j3F12o@cty6dj<sLo11rI#hVk1M)Z97I07^X$X#!vUdxx8K`0*!5W}yLY|J zZd!uY-=UKf)5J~z#YckT2iPAW!8uPzvd~_|Tp;>gA@q6-%Z<W6_WD_!5<?2c)7REt zjFhbXJ#MD-_mgi2``h|fw*Jm|0quT3Cw1#@k6?d4WiIshuO|9Cf#uG@KcT-)xfLnm zCke_+2C?;aCO_!UuLJTD^2)yGqin)*=!RV?D>wa3%Sz~Q3QAa2A}cxd8I^Be{;86c zFOJO1Y1*EA6na9@+7Ex2t>qc*{_+Ce9oLYb62%+DDlGzdr!eAs*4hvd5U=(z=tLk| z=U#BV8*P*pR;5CBB?8Tj)|F^(s2I^s5F091R|{OOe*Pj~OL0Vxud)Bp>2+N97GF`k z9Yy))>bD*4J2hHR!R;l><UJ9z46pQApGd#hY*zjpxI1gV+K~Y<Qv7L@p6KvnKt_Az zuTd1QC{3E3%BEu5U8OnkW7GwvTwLwTYw#-~9+Z`oJ&gJpX`vVPbvRq-hfNI%G&oz> z)RzgPMvQ>;LeD>Sl((2DD$3j1qC>ooN^jfEe@<&#17EihlJ;fVrrD;OyvMj|?G5b0 zJ0_a$Lue}!)wC8TPc7p4bmfVcaCJCTTI?D4wc5ra9O05b`1&7bjpo~5$T3NH;xO$w z(U#SYPMn$9*4i^y>4%{CBL2>i$XsCd9B$)Q`J%`VWI_bNB|eeAVTzB-#j&LKgjgi$ zmc(AVGsLsF&;;HTz!MuC28GH%Q)SUTY-)wtAN2{O#1|Z&vG+?&92J_b@Jrwn2bba0 zGu{kYkQ2GkS6VotGIEufd`wz{WfX%<KY1fWZK5T*AM(x3Bhr+x?l-B(4(oaev4F}6 zD=Z~m?3=4MOFe!;1<{uYhgO1y(_#2XlkWul@qa^)+-Lt~FJF%wZ(q$Rd4|bwkUi#U zQ3Y&53Z0^!NDSxXY@s~|1v*yS$0CPasS9(rSni70iA8xEh7Zb%_O+)Y!8s0%w|7^N z?CV(UL5<H!D}c`;%=b}IngvyeY56o9L)9>>I45$TAXBWvo`OZLd>uEkwEp{5ji476 zbJ@;SJhcj_LhRtt{XG){D{za71XUjYg4PJZ`lPFtXJAGb32@)M$hH4D18DlIo!Ap- zQUM*jo0TZIwh}1tjIAn8rZX`2J^MS0ftMjV$-_%7@RA$-w%vdP3CSTQ>+#ZYxBY$_ zO02;@e)}oEC4J&S|9bJNiUYA%4@_9H6{P(X=Yk2+zK^Cc5)HvAvJ>n{jXE0W2)v0P z7AnJxe&ue+4j}SQfas3Men4ai5m`BIq5aD}d=}czK8~~I3`87n@6B!%>7)!}dx$*= z2_3hv#}~<*d%b-Ks|AwxuYf(Wyj9QvK6_q0*(b2TGV+fxD>%V9zsc37(4gdzJ9|?* zAOI~=({N=Okh&$ZzcIId1iLnsgp@_awz1=!m>jZ(94qbV)Dsv&ILsKo6%0mMGNB?T z@(dEYmKbw8J6h~KoW9Qbhi-7n0mtJf=QzOeDJJp7U~r{i1N(Jyw=~Ro8}M@?`&TvI z+s>M#DLS4IPX9Plak}ka*@K$I2a)p1hACw@@U&GFdTvJ>>qqdEZNtdIu9dX5u8^}N zk%~~H=j}7ry75jX;$?UQ;)$G%^!ar#c0jK)?6VODhnwTTj2x(g<sYv=o6O`D0MZuw zB0sWs?2EpS!&jCQ={NN0*cUj0b^iRfdm`i}_Rgbyp251c*B_QgNC7LrK2IyMPk#FR zv|D;`af<wp`#!lp4q;m^PR%exaFJ;pQ;ac@COEJ>N&Jk#Id+i5ML0rsp0t}GJlLap z1b%A}V)nd=BQ5id)Dk2n>k6m7(~O7M<|1rj8W5Qh9`d0kRml3M5$6HMIPi8(JMuts ztnc`a;H|0=!iB;o*)tS-A3qg1?R6#cVm6#6r!IXJBF9>%1<sOg18?k|RN816tdZO| zv4xiRk6ew)aF%`neuUz?p+~$qybR*)7+1U*i6>ZJY>}x(X64zHKV4`h=TJ(9EzB-~ zAT=dV!UVg3;6vrDkw4?!0}KbwombuwtlO=yBPDi!RyY74giIZ=SLEA1pxa$QPz6ZB z8Jz=g80`<C0%B7@2JwdSc*XphA)jdE8gXp*B4!_LM|*+Ubsd9HZ&f3v!9l#%0<UY3 z19;slDF3&I*PdvSa{yX^p(=Vl!Ept(%Q<?X5$AB@f=yw=WDGK%13vjDRgFSskVB6- zlGWJ_I?x;M<RV3+#8`ZHUco;Zmzc|AM|78c(s~Zg-j(x;qyk@>+#@5DbN<4vC6!iN z$1U~&{rl(G_pc5L5TZ|CTGjvnkOz;l-8=@kuCn23H1&XLW7cJ8s^Bfy)LPql6s=*H zXzMyQ0>-0Xy`crfMpoY1F|ShIJ07zSL;b#9`xU3X8RERcK4Ct@`KdZ7IT5V%R_tWV zq)&ieJHnoc1gB2a<U;!nyl@bX!l{%Lt|$Ev5`8z6hq#AC|GY(>><F@TEW`Rd;!DKC zQPCJF?r)~>&(5bZU?d6oFqqz(>D?nyu;oN_7X1rK`A2mm%G|!`;SUu%1g~+c@GkBK zPnn+-^q|mTh$%IJ{`DuhONFMjz%C~^5%vfkMW2MOv^mA<Td)0Cqo!jldbvD)%L@PI zH2AOK^j5#**5H4POR4=_+lK$$H24T*50u;*{9CibSMqxU<u|0YE5b_<{sc=nO?cDl z`#qGY7%=DiA`u#qu2g75BfbF-t{#n68FOWRXeJ+}V4z0)2Yz#EtPf4g0S|&C#<T@p zwT1DQvRFLt+|DaH*4X#+jMPli(MVheNWho2dPKIWaXv?lM;w=Y3$j!;T!S$=q}rG} z@+VbROQUX)FF-`BJ6y67IYbdr(xF7e>>}2YtcAg`nFfcvN1oIJwX5qT^suGlFZQP1 z5EHR?NCoBM9Bx1L&+fx?uzmL&4AV22Q7s?6!1G-(2HTER)_WI9VGK@YwwQ*HVVw1~ zS0KT87lOpDMLrs7i&^YJB}bjZkrJ?XgpVuiWL59NSo?{wO%<>WHswbOOk>^#rwcMc z^NaD=2B(uEf_$Hr|69zT4<o@@f^=(x^E7@u{@gkKIUBc^?|S|z%E~|YOjG=Gf!vs$ zG4=Rb`NsykQ^o8k|IF?M{u$98<e$Vd+4$$DPk=G@Wk$t6H+L%jx&9c%Kl4xu{8Pqk zBQ%6={PQ~`DE=uxKJrf^i*1E}$QOm8LzVpt`u8D+x%M#WPvN0$YCQ{w{8)tn-c5d- zjf?7q{=W>$k4KgKzzqfg`2j8ZUgX!^WXNtJLaME|MTBg0MMyzb7P$Mr$O7x_U!dA7 zA|%#bgfxYdUrK(Q6_g+L>Yb#2PtyObH2PzrnyKao+dqX(Z|}>Dr2l&R=5?C>-_!I* zDbk<WMra7#>5l|wHE3uTAfM2m#WejH>g^0hs+J2oH@>g_;OiLQC0U8Pph=DI8&GE! z;(m?#As_pWc4mAp&jo$Yc_T>QdpU8=FyjW>*E|No{g4^e_<rzxMc+S{D*CQODbRNe zvz?<MbffP-kf6qQDe{rNGg)ja<9p}m`+Ll?cfI^B%}U>QZqoW6b^d$lTk`JC(RWi< zKj`ZfLHa(mC>wq6eiVc|lNq)ChZ{ij|4~~1qZIW&v&A%oZuDJ&1g-y(kMv#4Vq2px zq%#aVe|BCPPMup^@R6}c71#R$>!NUz(%gCi_pK>6X_}1oZM@Bpny!s^c{lm2ZM=_+ z0>Do<^UAW4`Li1pnHQp7k~z(pY9y{#GFlv}mE&ZWUIRV_=3TCx$GI2nyc4!%=bi4$ z>5X>9+obbu+tJe-Jv*=93()zF<v}{XxgZ;zAA1-Cyp$Ogo!8ik&MS{lblzv7(7B1( z?$8jr(fK1JICNUu6OfN|ZpRnU+1s5&d)L_yIs8ve9~)=3IK6%OP2w|TORMQ{>bzzy zse#h;QwA77t_+;J2E?DzoD;cN^s|YH<ZI#Nebmn(>jg3Kd%`Qw@Hj9B=h77*|I~IS zCdGs9nfP5%%(ef8?L`4Azasw9n4e^^^Ecn17+?YF#@5Nj=`Ix60-QQ;`B?fkY2|Z< z27f^~`FB0<HsZfU3)I|us7wFK#_QQG^rEu$dNvjwAaR3-tYzZjb?q0<#>-Z2iw_?0 zCg#fC|0CwV;DcM22KnGsPMf>Q^9TP90$;$4iVs$DDi3>q*<p$g3{1N*-W!?iRt+J; zE8W*#iv;I&^1*oIBOffs7jL|0(0}LT`SYv34tZ{79q4;vBQyof3e@@UmFHvLBz<?> z9xvGp`ab+hkiMVJ%|_oB9t7cTU`9pXuJ;suH<l>+es`YGcP6tvtRZw8=Y5e$$@2!} zBYig^t4H5%^SShuY50bFJCop>aP75j@ljX2gmKWOqQ?AHW5h@KE6}Ym-q?k@zfy?Q zhww1SVh-2)^=XcQ5UFclrP~wq9~=yk+TQyA|ETz=2Vru${uQ`_c1e8HSisDPk7|6f zJF|V?{`p_QMHlI$3@#dEFG7NfkNO9*K*(HrC>(o7vQP>Bk*{Xxlrczg<==laK5E_u z?3VYI>~7(7G((0SZ(sNq^x(4YNr;bHg0J1;qn?mS?Mk~I_kh_)vG5T5WB31Cr~Cvd z-uzYKOa7hlQ5V9jMSRqvPlH{*{U6=CUS>~x0Ik1LCv}S#dI<?$eAH9S1)@(WMz70Q z?r8jDuOHAU=O6|C+OMs@MO%rFx-upGedUv2fB(dpX9lUu?1uZ%?xarY*57xK;Pv-a znYymDQwO8JCd-Y$Klb+tol=h!Stkj~OBEkw-pXOD{23YXQ8mwH6P80a>}py06g(3m zD-j~au-J?csWX-+S^2kvg0hnK-uC3B(3kO2v43XkN%wyE@j3|Ip`pjW9g2zNPJQmj zkX6(mmb1l6<)KG`Fr8Py6>ca@w|J?fIBDJEnB=rBw2eMw{;9*5=qjiD?H(_6!?Rw; zY32GV&j;b^yB+TPHbbU{ydYg$j<!+1ZN`KqYuDP5!R;D5qmP(Mi<qJwR(v55Q)CTx z!i|{v(etPZj-T6$M1;W(-hRB)@1%KNywq4W&ySZ12U?pgUTWu$nR270lt0?#4;5w4 zC9g49W_IJHzF>d+BQfVC)7sX|*KNd0?R?ub*97KEt~~rw@ltnVCCar2BwlLWE{>PF z8Z-P|6EF42^=xXz*Ag!^=4FW9t;9=RrRycv?$UUvg8>-vQdh0>^~&+~$($)?=#_)) zl0S-SU=!SUsk;4@g`PqI%)oX-4toz>*qed5@lu?Bt9Yrm{-Bi187%hY;-!vY`xx$^ z;}EK>cAPOHXJA}*T9tK>yJZ*QPh78DZ?BM5nT+*|D7N<cp;M3p0yP*Y)$=;wXCC5f zdskVj5#7-7H@o(OAg&I2C>yRmzsJMX&sZ^RiXnp(u6~9Bz|{)muvc*^%8rPOz>CxG zYY#&vry5=s`ymC%K8(eHE3I#_Rv_o)ieCbIIKHNMsk{Va2e7vT@lxgQ`)JwE?x%Z( z?GfJQgyZd1|BX&}HfQbh5PKxbsCcR4Ws2^{OMS2}?30-&4ATU-`@MRy2eLrccqxf| z<=z6}5FIVm75NV6DDh9cRo7aHy=k~txC=)(wK-Q{ebnyNs@E?O|Mbh?`kXU1BmU|1 zI*ISYG9PQ<>L((f-h<l7iR@Kn-P?`_PDc<+2K8P6BFlOR14a?)*IRrcXhW-L<=l({ z_SH`Xol&a%|AqLbWo~@a7FauoZ;CL!iD9wX0-QG5fA#~MXceeq$e{OfJLH4~>@zIK z(fU=z1xAVrKY3E&)VG`Q5c^jVBA*5saeBSNLpC)$A%uZ(XvANK->oY7Ks!=84)zsT zm4%HMEePNpj$7hw3XS6#?-Z#ulef~y0JE6M;fTl_UV16wP<!AidDB`3d4MCv(6BSv zD3n6BsKl>vOOUma!AA?GQu{KBjbddz4me@t6Gt%)$0@)MER&7)uq=^JxHj}$v=$P| zBp)fiox5*FMgE4Z&5V~~XfO99Nn04bwjP*?+^s_{D$-lvR@-sC*!A<+y=-u#PlDl< zh=Hn?T}YocxSdgCKo_qn9)uVu?gNco$rz|Z@x&OYf|?<pYs4Gzr%;EB^+U+d-SBP1 zd5#=$Zp67Np9SyFZUyf^bjKXmen>vi2{;^QrGas#j9}dUN=mfKF{JQhN*|nk=@Yza z4SZF-7kKM+KK**2%g!9}1XlsD4<D@IjpJ>>{~i$H&dz^if6VzL*#R2`Vl{{@s>ZIZ zgY19a3Bh>%d}@k?_Kz{sCQ}Ti83fI-es4&>`<dfWx3nk>C!jF;p^WnoM3y}j87U^` z5Y#6q(D85}{s_ZOhadgY4?oiT!DR{(i0@fBI4!<M<;P&Pw-Mj-^3~uFOe$2a9rF*Q z%jjc)*9v3q28w7%h&&0K0va&T^K5J%1ZyCy(T{;*&@T3q*&%E^vmaU257SlHXWCJZ zO%U32MvzRrm8@ZH#PuKc(db*qYBgtrviv&$A%Dj8*hraka_Wdj@dFC1x1%>~?m|pj z$ZCs><r$I2+$gA5f$IsL%+q{k#JRQ-X4L#sxu>Ll_1(`QSDL)cv4wd|$S4#!Lq=?E zxV*#a8GQ+1jA82w&U#)!5E5f&Zu~un2sG+hfIIfRH47A{Kndrr(Sv;K6xb=x*;Vs| zg|M}TP);Beo)xf`3>f{f9lfsyT)26~;hy8|%2>F#D7SJ$RWUg50Q<z>fxlk8iv`*` zmXLR5BQx1=;$C3C!<l@nE>3$Tocnfw{cc2xa}w}q_drILzCxG&9!ldpXRM#${7t$E ztS|Irp=c}7QO$02)OlhWNn}wlI_hEI+tsy~RH>=pmkf?N<SOM%pOY;(Dr$lP5?8NR z%w+s~dVEZ9{L56k(rQ7AwNBTOt`5)hwD*4(;$`L>(8ddGTKi|<DZ|DdY%iJ)G+)Dv z$`xMBhJgm}@1cyx;+YuFtL?j(ZKj6M&3NoWf^!J#jUpe3@d3UBm%N&s3&Hok`lEeI z7R?^t^kb2J4M2Mi<5)`Z+C9G?-&BC~Zt*QULw`5AX;;!edvMbsS7`cY3vSw#^naW5 ze<F?k_hzO4?W8|5YWlNbq`#r*|0hL%W}B%Ybf-TOH2slJ=#MYkq(A98M#xOd1ozi( za6)+X<hP1WQZ}!<M+oCLYjjel8=VB>$PM^Ld@r41kflca2|VcWE73{ynPYgTf|Gte znIv3qZ_XB+6s<`c!al<X?C~8O$7gdq)vW{_+aC|o@gUBMyN%<|r-49^F(c`?-ad=1 z109QZS9ClJr7(_PWwv(ChO<oqe}GI*5$pXc@{x{*uoxzRITBy=3n5qo(3!I{^0gM> zP7-~xE5}#%;G(B4Q{!tKBdjumPj}(?n)4>;V$KfI<p$21yV2#`TY>Ncm{E<dMT~j^ zU2g2J=&}f<K$qj0&D0ROjjy|rpvKqU$Va-QSS%1y&`rMX41JmruC&YPlRY@-kf@e_ zjF9>o>9hYElz+2=^jSM28+{ht0>od#j9UKb(5?6TYWatmKlLB8&D0RO(WeUuTK*v) z>GJ`;Y@0smf!k%<iSGFp1Gr=pWSWfgqkA6nWn842eB0^Zo~!E>nFi_@uC(BuXb3W{ zOwADCYf$q0OUk$C3eYL%(IB0M-<^$4gPK5qWsi7tx=M#&RrOJHx(cO0r%!K2wj2$i z8=XcY!QnAO_H)QbI#sh6<y)qGBJnt*eR=1`<4DjfqH$VWn-WHJFdAn$qV2~s6l+RL zPUIqA%6ic_&r3AU9Fptt_b5ptk*cH)#+k*bae6S$hdUOG^W3i$!OoLttmyJ!Fi!Mj zGj(3O4#XMf&F3F?=dI%ccBQf?D_gH)({ih=>)P?_h2Siecze5LIf!=B!$G2@XvcRG ze!sX0)HsM4)!=H=@l-eWRzzz<DG;rK*-p|BJTI==-PzZ^2MJ0k6(S#r*2H1~;m7%x zGnUqaH(l8|`=8NM+!MPi^;7m>nnNaP`6oeBna<%|X#X#x{QG;5L~HNJMxsSG0{7Q2 zqn3Yc8127aTK-{jPx;4eGc|;6<Eje@TK*v)N%R4}1WD9QKY`~08y4X&usTia2kGZs z#_ZsJ$Bg`#KlH4y1M&w)hIN|BkZqQKcxjK17n-T#XD15Kn5E)nuohroZhXk|x0tix z0OQ|}&0K7~>unxB5ha&ONiK|9FW7yM+p|aY`~%1H;{;dJ7`Y(OdhIWr4c}RgS^m+a zzGhGC$t+)L{HBGci8kOf=GL2YBYWZ&fM_p%L;T-9asrbvYqv)94Ewb*(k~pCk^V() zWM72M>+;6j1*Y|p)#@Cl@-^<0)*#%6@R5KtSS8TmJdgn|Gd;PT^vw2TmOm-8{6-i( zUDudXiR5dp`BthT7tg>%gHh84^0c+&oOTtDa@G1ny~8KUgS-}Eekd!`!LPdoddT@> z;1&4m#t#FzIhKU5fEuLBJD>Hw#jjkR^H;z9YCh|~d;En@Rg|He?{@m>c#loCbBt*` zn7=~Ob34=dpQ5mQX?>oF1hDgKe+D~)H^In9H3x;AF5e9wET5_>=t2cKIQg&BO#T4J zNSMj90rs^?W#*7)&GMJQ%PY9Adw`kyyczo}7m=R45~Iz&VgQ|SIK@iZ4?eAI#Aw31 znfiYIOf)5R{OD^rz`%&Fp-sPgFxV#SKTZzclxVrUciV7@P5?oZ=BC8c_)wuf;B*#i zAfU_mpgOhNz$#M3`8dA{?~nQKS?HbK-;Dc?Tz{N6;|jy*dE)6B99kYdG=%Z1&x|rg zEPyFfnC|RW{OISp?2VIBgLVrIS%RS1qr&C$L#bh4rL&6jCoP=A5g!HuhCFBHu8llw zTF>HevyQ`oZ$aW}xVG#I_T1c+Xo>ttPHGCJuE{lrYzE#Z?ad+u@ax;1$bofOIQ?)g z6WXJj7i?Bj*xD2x(&^LyBbuM!wmjK(2FM4!K8*W@u|%)-N-hLY995uBRwXFYnlIZ& z6#oM+Z3|Hr4kBKD`CYh(!4(VY58~O>)-w7-N!i@>_GxS#`?!{ye2wZAXd>hzmYM<t zkp1~-FvH33!jb{Z`I9QlA&X7xIiCAQ*~t^-U+y?ik3(xMLK^MrJp@Su!HH&SL|3E; zO2kZj5K3LOe@^suuSPj2LG_=F&^=JgUN}M_p#ROJ!q2%|!_Oa3V>kR9i`=e!FkCK4 zUT&*pwA@Wv_IDUfyhWj+EV4&#q>pJWkr=A?arTL4fPmd}`N+A!x!7}~!pXtte@*gN z#df%S?WIPCtWWU9A~<IwgDZ`>#|(l4mHzl;1;Q8+P*GO)#4V`WH&#Q}>og04bt`$G z`XAY9{{g#O|4;DxPX=(7!M(4?r(Q?{v$%u>PoIfiM(WI%jk7{B$h()T_cTGj3xc9+ zk^M0;(6=@AXNKzATbabw`rxb5cOl?+>z_|w>EAxSeNP%`l**oq<afi#i%6jQW6?=? zl0h?^TYwva4%Ymq=_P&of7HDTd{oudK0HGb2sbAPNKlm622BJtQ4mImW*~txI8j<e zP}I_@h<HPpAt)ljB#`5DG*<C$OYhpM)z*r4lK=^*$XyXD0dJgfM4~8HA>Z??ea@LP zlL=tk_y4}1zn^5zZSS?$ZLhWV+IyiRSwB%@3LOQ#EdH!&k3MOs;J?JCj~4d$pwX@R zG+<Hh{+Xv2pF6lmuuJSmQ)^3xrS}LOkE8@Q9)!L&Uv$hb`Wh$8v@gFP^GMCTsSSbi z6dxwg^weV%O?y~k+*gTl=!0Y;%UZ*KB)^|@KP-KLA189KJcr6zw)}QSJ*GN}a1d7G zn&M%D-NCPDmSG-N7+q>E;)Kr^LjBCp!Z*Q^*sOU!f&$wJqbk_hsO?6j6*@`FkD0a( z7K?0K=YX<xaDb9zyv0?6@Q<T?H16F}4kr>b!!Bz^<_f>FyU-a&*NbgWxv}chXzb`J zdes5~CL^Zp#kX_z9&*WI&fc85oB!;bx>LgES$Ge|Ll^;>-)od#8wWO!zdYbw1#tbI zG0`}NLIaN$WY|Z3cb(?m69CBPCV?Co^2~3<+KAppc(DPUru-m)tVXkrw<AMp_>zpK z2Oh=iQF4A0mAl7y4lQf?a)0>pT%a5*y;&wB&=SW-Nj<7Jx*R=4WiEmcD1Al!Avt~D zLcwF^yF!S1J&~lZ_UrGObTtME4B#VlzufFTblTw&Wf=lsP}c>KI|jhy*lqL_P=m|u zhYB0ZW(ziM|FwmUv_DaYBYzml(i+)WvD=jn^63o$?^3|Bp1#5<fqW@&2g|)3Zsu8< zs2>CVdN+VI(oCbKGqEO>u!8kqcf6p08LEKU@q`7;tUucGE1f-iwnTeL{s77=)EoWd z`U=-bWB3h?Ww95L$^coTX{+#WrZ(8u^flmLggQ~I!C&Tc_?V3)L$h5lVw39q*!KE( z&D&Id3A1b>^ZIJuU9*O1kzVHr{YGxqBICU{RltQjidp?2wy1+Oe<`o#f86SUeB`g! zh)NX7iOlJ1TzfkiZc=7bG2TFeD6RNMf0yMlp8b8Iz(Ma+w}yI}NYEl0oS+o|T<kji zyYb9_K4473fN7#L=@_qsPAIOKmhGSay$tjeBo(b-_K#`5=&LcseFq*l`eqV}`q)Nk z4;9q~7{A^x*VkCmFWVJcF8l%2pdTpQUD#^OU_W{q$ZQix>~XAQ^AN?iICmOcdsQz9 zeq}x#ihCw~qK{plSWmLD=wbIch;|)ERoU9&sV712>}{PF2l_%CSJ$D6#=Kbc4ZITX zT=a4hJ+;art!;brwnZxi2A66Nt;M1OAJ{)d{Zkx#f+QKU>3&Id2F?d7GXNp{hW<9W z2>(g1nDCF=TfJ`HJ92W0aSZOo>Ii3e+}_C8R$bd0+h#nxoVfvtKSkfCf&d>>ue%e) zt(KFF!gc`3yAvx(5tKwkQQ^eu2iFlQM?ORZP97K%-v&2Yo>fyZ1BotVAH?e8@Mouh z|1kysg)oF-_a?)?X;~b8wLeYrsZ@%CzABK95`U;*2)7X@r-jdVgh5Mkaq0-tBas=j zk&%dSIifr31NjFu?|0>0!(-qWdhXc=5aFNZ_Cda%c#-M3MhH0{2#|tZ1K{vrw!iYA z+m8d6c;%^n2wyN@;>(7C!P_AXHiY0Uawm}1?5XYrm#j?hmg|rBsN+4=*b|It3jiS` znl48?d8z|=324l-bSKVtx**c)Oz74j*_!)3&Apmp7V0X&8TJ!<7=jew=~l*78OY-x zL`({aRao>5=&J+BdJuhBj8|v@@eRLT&$m5Q<H;hA*z*MkpzjM71ibr#1KGLXy^5V` zk->e&Mn;_JsrnTGhxq;?9VsE<Zn>shtMOXHt2$ZO9eSe4CtkH*zs~SArsun&o$w?s zL*U=+Lqov7XISz#nnbvF4JgkOt<>N~1N}0vDAQDgA4czmT<VwXjja_q0!mDj*K{IO z(fjeD@oYm^$64tjuZV9rSTjr5d|nT5D8Oo6T5HMuc%0x2wX?2pxA6$P4aAVmSDf01 z{&cugxEK)6?il?o8sPV~ax(jqE@mGmk%PH-2W>HUq2%uf@6)e7?E8>kxYpt;A18s0 z*~gfU_ObG5PfbT&9-S7+R^s`2`giL6P71KDRN<cqy3^!Ew@PbL@Ns<91Sb5<{~|nQ zjI$W&TL?DAhb--<hUYH%w5JMv!H85~C3x$=r)7U4Dy13Hvlh9ob+!Om+!jcw-(ihM z)&mfj>gO0(x8!dy)#WY9LY-%0{u7{=ogb?Kq}5vf9?kncOpf<8@4Mx&!J7+L8jrx< zPyr^fQup61mQ2Cj(#Qxj5+A;tPsljO!NQd)U5k_%*dNgj<ELx}32!DJDO4v$E67jK zN_tBu)8a#+FL+VfL13y8o{Q0`-KNC8jK`4q_1l^oaR3HWJla4ipQYuv`vG7?;G<Mu zZoG_CD~LS~Zw=3NA(2X=ZT;au$t*q71*Ku}Pdv_1QgdeFUEsCX127@3f6R#xiGS)} zBSh5zTY*W)dV_g5lFeV^@f5>4@G_%Td~2Lx3?cJMP%qpGkLx8d93<(Y>1zwuMURum z^cilrNvQGS{rH1Hf~<c@0Du@EJqUqxpfK4VHB>>9cZEAr(ZrHZ@P7cD7(jf|46%=1 z696Ecu`|3bdJn%BuK4sufn$^jM?hZ*Q2Hl;qUL+hci>R@_$T<d78f!;85Z-4;>;xP z(|Y&ot0s&OVCvDAVvaNA*XY1ZS&%K;A0Cm5fS8aiN9KdCj0vs#glcx$oMkWI;Js2; z4Pv~Glsc#U0$oU=UlV5`;EVRT-z)Q`XCX6KHSeKYJ8O~jKAN|2R&TVG1xeBLuO}m0 zoc0&^Smx4spK|RZe=j~RAMLN)>kdvUgWrAvTqR|pKYIvZhKGxZZq6eS6mOirS4_tX zRLcnk3*a9IKa{3Uv|HJ9Fy2b+4b_fJk!U*hth#Pe^)~~k4LPzgy^|~Udoa(k`@pcT zJnTd|$8YQrva(<B?>Pa4X9LJ+Ljcmd0ycDgz}ryXmGd!p`5nF*8FD*XLW5hbS8NDk zf&4j-w6==;N~+~9a-Ok_u!=abvee`&*hUT7u=p+c{RdLK@61n%UXZ{u*uRGK!fz2( zN5qzd8_H;`-}{bd;Sd@Zwl{&$C#d3C*pqj?&^ZTh&D7jqYu>luKY*Z8?h5cRK1+!U zViGjx-Rin|A7Owrob=D3+zOGlSpo~>mfb)_xC}=r;0pFaUt~s(jih%3)@J2EpWb@5 z(Cs>~04iq-(_p4C_XWtKVsZyksSvqeZT#x{eXX%gth8SFy*oIF2OnRAM`I&{-7rK> z4&;9<3rQz4=JC97HQ)XVsqT*bUj12z3b(jgB&-m-N1BD6S#1o%yU{tKLSP&rLPqF+ zjGGE_xFipOmRH>i=6K>kA@4-|#;w-tvf$%>4APc9M0At@cLRqe&`%2=8^GbKqAyki zymbgY)CIgN$uDm)(tWw&myW8zXVD-W7jlNu7(39PQv<~JS0R4B9szKp@&Fi!MjwLs zCVlFyBP$6{_*fqP8vWL!7xb5?-N=kq2y1yab6$!r`&I@vy;25t3gMvo#6<HJt0Y|m zIMnzo|3*2cSPv|k_ATtSP{+zKS?*Z0MgFiDvC`+{U!I$d=>{v9?^8L3XJ#5hB(Jb1 zV+(X5L9#4TFO=hXaa48<ORV?Q<{uQP&r{;DLVO8eeI}fZ)kf8R3|qYcG~)H(CiA>h zu_W{rjU~Oa#n4HxD8wEiJSiQ4;pHvC3$-vb4o;Y*GSfUGTeQlZ=n)d}m6qRN3?iEV zxCnL=n5Y<JIzMsCJ#;Z(hSd&zq4eHgV_V|>&9GgxZ%;uEocNbxvDh^4H8wANcfDW+ z92k32<ZJBS$Stk<t$Sl17%fY%k%;sghsE7-#;s|)u>MFY?KYUyN<1N;(PTV%M+euW z=&^HAyUmO*InN_Tyd5DzoG<JHNdn=U4ZnLwVED}~vr1GgbK?WBBz*yBOD%1lp~1BY z4Kwv;n!{KQovkQihWs(3fZx=3|4CoH0y6`+`3qyyUdW>9@0+e)K%Yjvo9BwX>SS-^ zM{vG~-!k(fz7sWuWh1VZa9MD(XW`>)9dQhpyWY2<hCkrsH(JJ2jxlWsc*|R6Y6wAb zn^uO5DFpP<r1@Np3$BwjF6=vqdjX-d5^C2w#`S!x!5-IU!<A}WGdQjSSL`*+0&h$e zY1(uRrJ4cElkRs8j`X!Q{wNuN9Na)biK}JgtB0>O0{L69=;c}XH;mcu-VhjmZ3|r5 zS-<dm58m2M7}kwRb@{B@Fz<4i>NrTdlYIHsG>_C5=QxuISWJ3>4U7SMKr(nzCOsdD zy<m>prr#8fGY8{T^Qk}ops1i`<56yh2oLwW4@U1GS4N7KVEo2a_fdnmqFoc|n>@e0 zu)FPixCz8_>Jz9w1ohPXS(W1bCmrucAH#){pBVkLbrSY;OiaS}cQ(GU?V&>O{VnnB z(>Kl<X`*+@fkgD4OY1igwL=q8YwJTLA4_6!`-^7v7e>GDfbdtR*0#a#5+HEa)j;5n zYB3P8pI^39LU5EdZ0Pa<ROP*uKFDvOr`izRh0Idm+w;acEx$3Ep(yduJxZ?|8}Bvs zIi~WbND&La<VT<WT^vQUcc&PBC`7k5d|FGna{umxR|$pHY&=b80Yit8UQ#m%21Wvd z^&l2h^deFIHIe_49Ji^WO-Dk>Lt_7Z0^wg+{ZD8AT&}nKA0++v#2z&E-yv21_M#+k zPHzh|1)Ed<SpCP}fWAh_`iThn&F*dK_kJ?fnfwoY<pcdTzBvEwpg!-|QrW>B+aS~5 zyK#mySuL?*1l$s)8I0S@upWHr)2yxv+s4uCGD&Jal{i@8I^z$BPsG-OA1aHCFWLVw zTI8avmP)rf_A2#CW$|7&jsbc7`NV*Sbv{Q<+aMV1vQEJ>OrY2p0Q2Ga2nkzx-}h8M zMZAT(Y7s8ty&ozPSObYA7d+L!=Udz!qUHm_+XwJ|%Pm`~vDho11K=(YxJR=qD^}S9 zp~@%a6EzuL$?Qp*kFj4_dN<saLo<Q!RF#8yWuE-W-pH-3`Yn57uPHmFvS>|=czKsN ziG%H_D#aJEyN%yJ$DpAr8cWg-@%0fJE>tudF~_!{pV9T3eXahcMq<YgD+YTmBPi3( zFetY)&M*S*uZ(*!Xhhpg#fXJ`SZX3QQ$fAN-CAJ5P<P->3b4!ix#0$cRN`nICP=`$ zC)h<rK_@YJ5|diXmNc_I#D)pu5ycThE8DLkv<U<T!}%pj3*!MYG6R!(quXeKfsT0i zMpZim!rTl9O<<RiUJMM{`^g9)x0E5ME7EHG{BMcy?X=)~Nzx~G8sh*T70E^uvSg5q zW=<6fBNwOakA5kG$i{ciI{Pxk#p+Kp``h{v$~t-v1&2e$!z@70yAVFe2Nj!*WuK#~ z_?krUR9Fk4v#do4A0~WRl(5!!#45$oMlIcAUk$>tvGt0t5ER0C9Hz()Ei}CADQ>WP zd@0r|{sR6I`6m}~L4wBGbkrB4GS<^3T{ao^8^}5tiz;!DJyq2dp?s`y5b&-^fS*Lb zy%yk_1-PZZ<M94V!P_MHYxa0xJDc#2+^OKl%-#<C;u6<j>RDJrA*%pbYCK^i3BgGA zHo&XvRF3L~Fz;#GzlFgKj1LYL&~wbZiWI$fIV~Xi!2RxaPRA;LN@HRQozwHcA-&A< z1{b4{-Z}}*19kb0@E2j@ea$3D_aUUWl%JuYoDTSdT{ofMe?X1}sY&Y)CyP)m1uVG= zmaziMTFj9EC!!-N{P5H9^#hogI70++DfslLJb1vEEaOq>WNBB(Xfo~5T!_!(x}JJS z=xyQ$!MXhRY`_t&2jC4hy5N5T?C)u*DP91G^XE$kf1YfiYX>mz>>wpSy%cZb$o%x` zCy9daU*o55zC0R!3N8RY4PB7PPfqy&mVg!&?-LPm4qw>^2xw5Pa6M;Of=<cfyeg4m ziEvD1EJJ@gkpGF5t?-I%Ipx2Fnng&S^DG=J5f20cB;rvIdd)f)u`4K8<yITIY_(X< z$_?CKpsF<@eD0|}k)JyE7|6OB=CC)%M!Izz8|j5G$J+7$*caBi1nlUfOS72MjB%fV z6m&>9!y%4wCW5Vudw8lIgrqU{5eAbOkHlaa&Nt=HAL-Rkb2l&rxEI<DKpyh9p!L{d zWrwpiN`Eba>L>VAA{hZaYCH(xP{9nS^c*!V&LGdm$bA@E3GT+17(G=Ua6SEi9XL!r z+5s1F{enE;XbXicQgqFoAm-iG{5|AS{Kl;>Cs`qpvp{5{=qc!Jq{t<85JY(6E29>T zQ^n<NO0(A=wQ%P^*oS;U^gwx%>z^QgvL=v^z{v{4PwLAc{#^s^dcR&5{gS*N8S>#= z>HQ}3PL&{IUkmwu2EaKP$eb@Xl7HYvAmia%M#S-naqbtE=kWpN?8!0@?nD<d+eNF; zkH91G+Gt2Fp*H~^L-YfO3e;EPwzE5nU%A(s(;#&3E<|sozqg{47Z?Y~6xpujZ}t!D zmkVaXN?aX6(Q1;7c28<h)&m9(_2;jMeuK#q_Mddl>yI7R(T%uJ`rm%u;CRmW|1Q@A zY!`9S)CekLiu{smmcipd7Y+4r5C<ceEZzxSkM$s^TfG?qio@>#Jxm=l&|&chn!|kS znD3N4Un8%lkmok<qwQhwm*MZwE@k$y;_u|^_`Deip8`g>KvI31jX(UWl{rttJinWN zV9Yf)g+l4L`b8iz;6#}PhCEl&1EIU^#?z}aR8g2xSFli`k7hrSA-kxI!Jd~&Q>X?N z8S<TZYqYvW-;8e=Q;{C0zLVs7bn_x^qwj4H<l^AHD6PZE(-nJy`2G$p?U0s$D#YpA zuJ{|DeMs<MzNI%JYZEoSt1KSHI??|NtltY`MXNVX(h65-*VSF4ce(*9I(qtg$)cOT ze?|v<^nT(rh(o|Cdb(Wlh^{G(DlL2?jyKdKaA<t$$#7N7g}vMzQ*ds@xvo$;Y@2Ef z@K_G88tDqgj6Xt{BN^8|m*vQZk7V5T^bp{wQ*`aY4yd;o$+!;JimaWC*KrRxoE#lI zmfHj%&rNmX-e!GiRrY$v0R*WW3#9U)@jf|`Umfy0lQZ~z^zG}NU(jA#>}YT9mCmQ8 z{S|NT**5Kgf3SuEaKW;$pw}A%D|jRp^6e_q?9y?Rb20kBG31fxpDsf;mVGrF{mXbG z^K#U<#%wh<%rgg`6z>4MDc}Etdf)h$m@yc78bAg7<nPGMS%{4)l%9!GN;1hxjW{DE zbg~xd-Y_rA<$LKE+>+JlzZM<>?j$Bhe-|%2CogojUbx%w0^>AD((xV)W*EQHn5ekj zcywKwlO!)@JXLrOG148RePinolAid86y1mWqRCcV)4_$w3gTBZ7xxV9T8ur?`!>7` zPQP3J6s?CQGj8ezX^Ui(^A=Pc;-gmnyI()3L}UJ!HGni>TAvL?&ir5=OA%(v+c}-# znDGKwYM5fzc&dxQ^M2%Lz<KZfJZ7ReLa1C3SS`?CpbtaKuEvtwVwX{c&H7s8^4zQd zCSXVc)Y~YmTA>AGuxoB3*tx74C0;VoE&`w)O}_yZ!xr8o6aGQBr}|U;LQt&}T!S3- z=?%Hr3}|w*t^7An8wj@n8P{&lf);)k8B+h(EY~Y&QPj$>ynq1HF(BZ3k(n@nFU}qI z64JBa#e9wQ{j6YynmBQq4-T^_m~~=V1n<imSaVcQi;)KASulVdKvxy9QJ4VZw8#Vu z=VJT_V`$^DV2F6Cc1qU)-qi3kkUIrGG8>Wg1&4-5Y2(%;P0!MriiO9FUw;ou!tNP| zqdL&UPO!=Kqp|*rTUp2i$E{}Enq=N8@WX!%c(>zLDQ_uJ_aQD1=v-xb2-v90@^jX} zkY_s*U2vqLOPjxplvfj<U2lgTFC77l?YAcpVVsFbCJrt~=1-hI-ed$n<}?K&vFWVn zjbc84Pj`84F3$4gm*h@~G7+zqGD0q|I^$4lbe+6afnHsrU=b|Fv(`1yk2&osK1ZPZ zX%aYgKiGTAMbL$}&7pP@d(biB@ue6sOsdJN(_F^r#nhBVZ;Zq1)9<ifw{f=A$i?f3 z5nH%r2tm->4fg~3j@X(QPW8DXS2}<JrLelQgncv{d)}qNBygvYpNBD=K={_o@bL~Q zs>&sDVIN0&qm-~nPchD>$Nmt+k4+((W(g7Vdmt_vzM!~_1A9PdP)$$RxckrMP{1sO zLTsLMx{{`xWNCsG>X4=z9MY8SSy;>Fu)5%>?uZAbG!<CVl-E|8uoOgTG6akvGqJhH zmZp+(lr#Z?lH5E?nzXjkQ~-IQG!>_mrg0)oW7q-kymN?>rYV**L0;n0)I;7<LL|~O zqpdVeb4t^=eM*|9#HH!PQA(O};?mT`yj2{RradF~w_;e`C_+BH6!K|LqDq<+bsYj# z2g*U9$O;Jp1+MIV9}<xh^rKNe5W+A5!T|dM@|LaStq@1QQ{E8OqLPEW6~yH&y;;c{ zR_gFjR-Hv&Y<Zgz{R$1*^45!8JQtTYwA;-Vw|a=172k`?o8fvwq-b^-q$u|`TZ$aG z+Tv5_bKvT2-hv#ie;dJ|NYS7GK5i<Pk7FAsQu3}XQjg2)uow9{o(gSjX}l9pDUCI; z%2e`3@1gR`*%Y>t@VO3YE6JTEqIMqReEKJ<6rY-@q-G=ZiLbI%giI7Igp4{E=O|T; z7v}DMpxh~AWX5&*WXA4u|HucNM5xO6;AMHhl9;B>&vA0;aFa`MQ|bHyaw&vXseKg0 zaI)x-kFe^kZ-Wn_T8BPE>zr$g{fM`S)-856{|*@q(*|y;<~g^>lmZ9JoKiGr4;SoK zLf{}-cCjr4)-01Dw~)tTPcpmC$4iRuOZB-~$+O8coB2aGz_gg1!1ZFUbbn-)lkbVS zd3j(;t`@~jP@8|pMbGAZVP6+Smyw@K^!>7=h{CYZn{dOJ{3w`|88?KKTAVZDXaWl+ zyl`b2qQlGV=khQg52-W@t%q>dEse0z=!&N?EbEwz3RYCQf7f|PuhhSct%<`*dzePk z!8Z#?g~WOruqj|R&Ak-Z=ET0#xT}ymrI#D0A?mB?*!sgrbW?gR_yhMDkH~=-0>!jX z@kp7nX~tz!&_rZT4!3Ds8N~0VhT8t4@u#uwEqT${bRj!o4BYC^n6LukL>F?o(FK_W zu}>`jko8_8SYz=v1iK-9A=(ea;yA4Qw&dsE7bQKHK;gV>xQRbs%0VObIgSyohrmM( z&&!&ATPqGx<o|f{p-u8;9`kps=Qlc@m#27M?sz^i#q+Bj&xfXX9&|kKlkhxC;By(< z-cJEP?0ua5vl3K=JNKo=R}=I~F+*H8<j&wpg0nG4=Yo2!=^zkHTo`>Nxr4{GzK~lX zH;q>I`!asJXpvHb52J~xo%}ZJ&H#yC00b6joi}5D+yK1{jO?s28)D{9F(rx4cNN=l zeF#0{`*1{VY=iOhhq}6mPZ<wjp6<es^N`B6l7ES4p#Jd>Wst+*HB|6>^L<jK{=F3A zm*@Igj2o|L;Y&cwbBu@9T5nqYk^Z;TTX$^-(m`J*{l_Rww@d$1Q#^Olzf+3mPWo?G zBS~oAN&lvV=NA3H-k1XZ|0@0O{hy`(qEz&E(B5UyJ}#gZ{Yd|{8&ZrvCH>3SSZ`YS zY>Zf?Se4_s1D%mg<f#sm*O<!x308gJzV*v3FOg$FY1`^+Lf69FOwX;sV%P+*SvpEd zmu5DmLyy6n;hI;vEJK9GLjq(;&f;G?VAAtgT1UP3Av&V7rE;*EjOa$1MiX4IKhyt4 zFzq+7k70@YZWJt$qMI>g<UJ5yZxCruETFVl3IDPR3V$FRLSB(wMvGOHv`95v3al7S zhnat44q{7nl&o<$fn~a@NuKfAaFf6EMbkv|tEcdf6gR{VxYAAGYI$<<`tTw)rxd}` zYOJ}G)&+<8bnJ1i3ucHvlu$N_7QMdNQ|+c<kz6^6u{2K=>YKU(kq`zDS`17)iKS7v z)q6BIvZzWcjA58J@u-5g{o;O4s6hrpaHc;}2H_~J)x4{b$y1FiB$VscLzqG*AS_y% z6~vnJ+zL%EL)fR3{*0@!lgnS(h>zx0aDg<#cxNbWiPF00c^DJ$@BG{!xf5iXTM?^| zGbB^bdP(Zp04$x=A`><|p@u-Q&&KpVU<iCrYwJIw>jt5&yc64OT>dMuQFkEi*qCx7 z$2Fl2vn`ty+==Hprr!3~urO&C%kt~3NX-1UOkZ9qiy1g@trP%Gs0G3Mnaf~TtSH1z z^D7qXWxuott%VD4#3lTY@maFFZNg#=r`=-m-TFPr_+_T&#j;=e!8_wQFJ#;e8<eVa zLM>GDyJb3J=~#s*t>c@J!UN=za2YN!5nvkVjc2t0;$gJd3O$UAFfPJnD<Bo!lvH?< z=x$tcAB~_1b&Sw(<op&{pnHt6x`bd7^7%RbOC*+s)f+8*Cr%M4-AYnAx!fR^m(~Gn z9ZM&T#)Gc{$jZ4}U6U>gjsok{p|cgrQG|_=2F5ZzVbC~Sy4B=bl(`1Xh7B`Uud!r! zP0M88l?Z)CiiRUW+j#bRq1e_q#ZZlns9f|Wy!eXRu8Hsh?|0_-T5o}Zh)X13C7w&` z%CHn*j>QD~H?WS60QR6C2zJ#C0DI5$cEH~92Ebl<FLFMt`8tu`m<S9j(&V=(KY-tg zh2KaJARHVQ>9xREa}|aM&C20tjDlG?9lM^&ep#x2P3|Mdf!oMtCdYx>c2MX4r`%@T z(+;;azn;i#u>1c#e&a!lLbyw>3<iYH$a5Hp44*k3D>!K2;PR_oF3RmzoG~Ek@`#Mr zFdY;ea$P$V?1v#3oiIStUP^$!J^mx-DRD{Uzc*Q`gkp2VVJreEf7mb%AVt`?2~!B@ z+*W=jyoO;EM<746W*s^YN0R-w=C|ipll}h3=C|*llalnD%;%WjP|q(uzlj>PW;jf5 zV1_4!HGIE71DxhCn@r*hmocLl(@Su=bD}FvHPOMWP!pZZZsugy)QNgh&2yg?nDg8@ zZRfez=ZW(hvUZSK-5aW0@5E`XDg7Zfgf)-YV&k#fx&TTw=Mmc2M@CIp=Cr=kK;d6b z6$;nIHRN`sA!okAIgOIP_F=B~R2EHX9KuGiriDp#4D6EPZ0Sb*9_IKhfkpG3N$UQ* z>|m}$&bi|@lUqZ6Og;Si-E=Ln9P;g%$`1^W$;3WCJl7{?hCae-f9tr+*ha^ABN>-I zq~KYz{BZElWyZh-&SJ;!aq4$F@Dw4nTHv|*XyL*BUx6c%aq@%qx)?0G?BIyR@eYUU zUHmFM>d2fd%lAHGJmUz>#(VIBrQ0265Dn0433xy(TJZ2X<98WPS>s=Jxbgpc^f=w3 z$JGJ|@*R#$kDo76^e8?oJpUd&p194V$A;67nm>LEc)+gDF9mwU5Ha}`G_iO#n3qT! zoP^VCJpXgEuW8bk@`n?~|A9$|wGMs+{n-)da*N=>l#kT(FQ`wV|4&T%54Y%#eAgq< z|Cak@d}|w$#%IeT`c5@IH`Y#t$!esNqaNQhc0@f;;N<U|V828ho*-?1|LOM<?@7Sh zX9{of!iRVvjz0K{MVV&%oePhm{a+3}bolnK#|w$=KUuHfzbyg&tl*$T_y<Bhhb?o4 z#wJJ4I~VKIZRxSm<bzd=M-*vh`)eO?!k@DJX-VyG@g7C{MxBDc?~&V|{YE1EcOFgq zHD>$uXB-iJEvfyJj;8%Qv;CDvZa*^#KW_{>3jC~i)8x<7j|hKu68u*lP5aYQwx5%7 zK0CPWd!@*8^N&(rf&b0+J15{Lb^DRQh)Qt2T$Xo~?ME_v_lmyw?HfRoQy)6@MRuYr z^pQT+Ah?_$$5DqI{{s(|eNb2{?fa73ck0`e?H6BunD&2+hio7D@2{Kue_tYf2PeXO zHbdJ9^fl(4W2)5$QS>5(9IrCvczIl5pugE>fAa?(vA;xqGCWp)r~HuqGR^+BMV$R* z2UCnM*?#y6SvNweMMF}}8>z?l@N1^LoaXE=D^-7q@@|}oUZlIxr~CkX=9&HNJ92-C z`qy}Ku-V^x1Aah%FTJY9cj=M)OVl^UMOJ@Pe@K6t+21WkreB-+A4x!h(2ZvwJ^ePl zqQ>|0dyYuI#QDa!8NEn%3v!PdpP2W5$$nt}OTYiV{h!iac<oM#d6J#!v=<)33vuxj z``3hL&CA5Ye;J-Z$kRG3JYDfZB0MYaR`@ACEIdcHe^cV;>6?!LPZ%#G!n0Oa@I3d@ z;qdcs!qe@hBft~8F%h21qCCRkIB!Y3KODH!)~-T%vres3GULNh^>geTzFi2>6gXmY z$OPeX8IH;LtaV&g%_vPu{2;?;94vi=<MCh3C_mRnn?~h{-`6xs{2~Ob8Y>xK#-Tpx zxvk@nRf5zae`K!Pm~-;}*20x?h7NMZks#b?Z0gOW04xDVO0z~ark{bt(wT^NU!RR+ z5`?6^_=3&gZM54uE-&8L8EqR2r)Vq>jWKTpjeVJ;8k3OP&em}STnGeYcjUT_t$0Sz zu(qo}TW%CttyL}uXe9#>KG3fp7SOLk+8DFBp1>zu^2m!Xd2km}fwg?T)R;4e!8WdM zFGp;8srqaxKZ8qj(_hkDv2C&DI7Q<5NRsnRilofZ7mDakis+*PCYCJPSXALyO~N!* zYFKt~Cr~8XzYRr3BYpfZ6!|m0NTLX`%p4`JB6s3A$|ldkHDG~2WYFv64OT0;)9ecC z7z)Ep#+>sRMlgxrRC4C`>fJe@*-VpW!_4j+G-IL~k1pbW{mUZPxc%N`o`vK%fBmN& zm>tlw?WnS>u1L(Ll2gpCW`dsAoAg|DQX6^}f}X=Hdg25rqx0GD^O7n006zppAAb^o zyM?#mRQ8Y0!qMpOJ7X)<dm@2Zae60TGaq3WYj3tocZdPyFFYzoBBtn+p?YpNXKJ5h zVK$pFeb1*1J`uMW%bM|1SP<U{>wbJ<o1t>M7>2skXq=sbX`kl@7~;!+MwB=qKF;+B z6KJRUC^eTMkPQPd$4GJ9bX(8~aeL9>X9EnYMlwzz^x?U6mudPaq{OvId`INDpNyiE z3l-*)BSN|6DuvNn&SA{0gWM&2w7s7i$<9BuiFcdlJ7RrQ#*|tgqQ02u!;=xK#0*J# z)QtL(eNk))pgw96SkV$gO9q)a(lkn9c#WfO#@@<OSAslV3g|2iiO;DaU(8bSC@H!r zROE3S5ZYmH`d0}mvTNJcrlo4lp(9tEkk}e@q@}%I$D<_Jj!)H^DN@w9w<onWEZ*A9 zZCiWCV~!N-#@0YJ$R{e=F)#LXvoS$BnBj68>ErZKQx30*zYZy;W?mpULK^(n@ro5b z{e#lPv5(@iNqPN0zz=?an1u5`9dmeo=*Ur}=7$4)+q5<*Rcj7@cnP04TXXQkGi_Vz zlBzWaKTJ<*&A|^pYunmu-4DwTCz_4@JN&S1W(t0ICtLBuhTpZr4`%&G$s42AORcAs zhR{brD_a^uAC+fcI5fl*r6H8L*fgq`)1T51<M^|&@?rejR!Iy7oJmY^AI@f@wr@{K ze2q#JPBOxdN<C{&hKb;uwO8On_QhFS6jGD1e5jhWRbP&2y8zSnFlB1ZH~YhA@RgWa z3H_BtZo;&^+_SJR`t#R+hG`r1%-Z&KX?uMYqc2VM)jMfyV5)?^kh-8Ol0N~P&ar)o zau!Kri=JbSjVj17v~lQelF}M~!dEsip@v{Hn`DL>nwF%7+87WkPE!U%f+8BvCNaBC zUJL_b^er$Tev8*)?;DTu&zjh~D!yXbhyUCB_d@SB{MVz);rZ_teDZJcpJw*u;J;G3 zUN)~gh~(fux7pth;=g~P8b%U7d@#73z8w6wh($CU3iqh_?}oPhU1#;zKL4F!c4w)* zAI5)LUJCwO-&675hfje28gBysos8GOf5-Drod2+&%KZ&&Bb;{l4wPT9Yyv|6%KFlf z6FH2@C)^AKGqfZ(%g{fd@kZkWjulU7gYCrpT&&Wm9WdSTS~ugT005p8wo?Rh;qq9y zGM!<QsvJtA08qt0v~q=y7r=KKKLX(JXMZ?+(M?AM-``Om<M8m+-k1u$+oi6?PUEh} z1wPIn`g`gaLbYWppug+G&eqB=rwJ~#@B_I|LQ9npD+!35WFuBKZv}V)8WEg_0kE2w zU;m(l5SHlsN?7<;sa?1VrIxF(ldb}GLdi}ky4#?JB;X+d=ws{}Bz6m6Z$G#mErR{< zEJta)7jXJU9QTrk{ad+Jk~=AGdt=w%vT06VY3>aQCFVXHGZ*{XwvAoPTh#xLG4XkM zY^yVW!<=)0H{{<O1hSX~0ff!a^ncEV2M7!TQAsIZ71M#jYVLcpxlxh}vatnxzVWFK zbB={GdF#?E+u*I5jm!2P<fe4i!msnXbq#8cst3r<L-qnw6OgOr*KzPc>62z&%eUfd z&Rt9_(u28r9l-Q%zs#?X&Ve0!4J&>iGtLr$3}d|9DP7@2W@2`rQE)wxsoF#Wq9V)* zZCdJ#J1o-N<54EhH^sKaEn2LnF#?nmzmxL%F#hRy&x?q51aP!I`0Dc9oJ!;B5xqSN zSz|pA={*vgDm^dO`L9a9E8t$!x>fpP5uNM+{>hpQTn=jmX^SxqM3tQP^V+$e-Ol}j zcJAk(S4Tec;o<#a^#3(@lk<I`Y1f0vkjP#N^KnA<)d7>w1Ns#!N((<^1}k!0k$PAc z2=@sNBSVh!P53ENOnt3Cg^FF4qlK>^S1IxER5yWCZS!(Wi9)TNQYs%;W9f5hLnw~3 zlGdOK7NbRMW-5Ky2f<;>e*Jw2MhST`o*G-Kw`wPE7VQx(eK^p0KloIgGsM(P<9gKd zz(Bx=r4L7c4slX;jXykEDJe)2l~h9FD@6+$su)@cqO|W_=HHIai7hlvniiJ`+okKw z9$-oJcqq+P`#+CQ#<-4*&nDm#|B1bvj8Y#C`4mC{wM6Mk9xZrel!|I2O0&B;P<ka$ zigmq2d{RXTPQe{*RF!|Y3bNF%YHbz$6q|1>pPB-(s;)+}@zNruE~)&6#QezJ(9hrd z^^K)6pD`h>0LjMC%_{K~na3+|x*AiQA0XB$XXm&)RW!*ZCwCmeS63_!=%qE5#+HQV z#m1PmoZt`v2KdO3tR0U`+|_|_X^rfFW0@gDV16bzgGu3=#7#uK!Kk&&!!`Dyf(9S~ z$1xArAq%L-k*Hz09vbe%9%L6rD6ch?17qdVD`QQ@Kdu2rB1I)5k<_)Mn9~9%gx(n0 zlIieQ=!Pk~k3QfGDmn3kiA&*UH&BGJ2!2u_=QnZWJd=nVVxR=M%s>*BYDOVpon}^~ z*Mk&K!vjhZPsq(*&BW4@Fy6$-j|xreI=6?WQ`?}an0R6@tqvT$W!!tU;3&rj9Nm9@ z3LM>pK8T}P_X9_=K7nFP^^D_cOl$UC%%GcJqMy)24VkNvZqd}3vv`inm^lDOE40mV zS{R$XuQ9ksALnQx8Clvv6_eVF?f^G+g)@nZ*>ZuR=Detpi*4%3V!8NKJ$YCzPEC{7 zo|KE*)x~piQJpSND&(RzLoVum!hY7PiznscbJg@qa<QbNytYOz4yub4a^Xb+BEZ=s z7rMIGDi`xJ<;iorsJ^I+%k^d+2yYxi?-ZL9o1ol``d`Dpsx0#U8om!)(Hu{e7mc_0 zDo1DHJhzO~x+6_MPm4AKo$(p)&04n82v^9jFKbfU(y@@A`NbSpA<kce`H1H({>bK! zsXqOVTn+U?a&r_2vf~_2368v0AV2i<Tz(^qJ^WG3yS_%XkJe>eLf1=Q8t?BpB<5k& zBujQ&TG@G1&H+hr{@)X7K-r!u)*iA46upso4^&uJ<skGAzQOR21MOW1eRWwP57_bO zH#rRBJ^Dw^{+YM{oMAr1xfzv3-#t$MQBQ*&0w35t_L-qj_;`Fjtzb8LlRZzpnZx#H zCATjN&vGV5n$efR*vg{&R3D>Y8_vYg$UJsOf4WI^bhf=uUbTBta=Vg{V76P&*eB?p z*e){r<Lw^0LACoKb}}gWQut^TAIU)vCRRA`@!4Y*J|1`Cqq(zc?w4rJw8vF@vy$6m zB7>v7MXB3+(`;`<ygh|qUmU+Ph~MMTegePl{XO_~w+MyJwBXfX?#VXmlC+9(c}wxD z$)<{D+wd#j)6kvp^*HOtB>v!WbW`L9MB!$f-y%+&1A)b_nGCHq5nC+Xy;N9w(W5p? zhn)z0@OmIL1xvpeCQC>2lKF00oIeCFhu|e8;3fMHz{|=+yx15~*dS;?RY0NYzl@g~ z#cgxo<;m1|S>zYI%zebh%R;D3TOK~2o*FM-MFcNd$^0@Uju#Hd_#7^ettUHQdysO{ z!|V%s@+N0r(>p1qUczHYYZd=F+8c*=jR(<Q0-ndcJV)t6A~%bSk%VPl3T}yRUL^6H z$%)0*r^0tsm|Tx_83X9WIThAoWU{tVnCA}`EDlA&IHe6*rNB9|%yzI?15*v$^%hR2 zG{<`j@TW$;6j)HdLYOy{bU)1UhE8CZ=Hig<B}kA~+VgEEa~G1iF#%n<*J|<}yUEhz zCYc%JX!2^i$-A6Q?#@t6c14p4w(nVb&<Pt;nj8(CU^g_%+0aL3Lk&14Qw^7e2Gp+` zfR{HHlM25<;|XLR2Jt$qaFNovr0EYKJ3mTPH@q{2%~0=5lOJG>hxx<kl04#q29q@s zRnIqN!W_pVOWtIT3!Kbx{j}5~_MsB7XNcj&?C(*yPYFnv^nU;e8RFA9^vuJlk#NO$ zK|*h&iVG5g7uz~!-L<I^@RwSVj;C$TD71y+cKg@M_OItHzKQ)6Sc3IkhV#N_nJ(u& zsJ}t`_Q4vg9&OdabF%RcUzqSOnz+rzGfWEDs6I5N$lKeEX?WZ5Zoc`h8;4}Yo^m|M zG9MUFrm@=C%Z^9ieW==>dnPKh--_8Z`ZNA>8ULApf8e=Xb`GragE*AI@!1>ZXAe%o zXT$k&9$&^`y!tZZw{$DH-j9+QaIuW~g$ZEZWqvz-EWT|8R$@)`pOWkS>E)S@0|wxP zCDr4`VFn4$ldtvi#OI6~m17Iea}*Ao|0;(e$N_iC55Vk-gHY{Lr21ohsQhO*ZyASt zS2nrr`{(oiNUeT*2YB9@(Lcg@Q{TJS;pLeq@7FL38TTEvH`x#VtC08R+V5e1ul|1Q zuSTp;u-kbMu=^&k8#ldGdr9Xt+<>wejDN+?YdAkTN$#2c^mzNYU#;>`ng$am6L50W z-*9Uvj(|b|`FtKe(PXTCn0sk2M%o9C4cEs5E8u17BC~Q_iOZ$u#XggGn>q(dosTA; zVB4oYJ}dSYC%`x#ZVnhAehVJ-UI%#)&r7}zUxZD4EjabF9M$K+W&=BBfeGHDm7|V` zot}Ucn*b=&+NcdI&*Vv*{8HXuZQOB|vwOx5$7EWSg2ps}-r+uSL?CLclpiAxBk6Zx zUzq2iI%d3K>_E@4z*HzhuA>J=bwRMgg`=7}rF<SsetyWUuK}8|6JF{==-=p#(WwvZ zGwo>>mbb%;>@WWtt$sh42;KH%w;kCn@L1_+H~xj3H<|MN@jvkWAOFDjca4nWApxE} zFM;By0*Zg_nzpTEcu!f=uBB%F!+6jq3!#emDo-XBBd}w92x_hdBIQ}g6U8a2D2<Vc zeQh|b%=>vT9j6axX()Yt0jgzS^RRw>rmrdeY2i>TQ)I>?-63#n{NQd=j#&^e<O+=r zcl5z{iq$E91`0_|TpW~Z^ng{U4&d|S(CQ4M$398}qD0j@0y=iTjmip!V@piG1qzI1 z0(SViVAKDPqc}#O)z~_|tBdQYgkLSl$hoH9$ym4`gNW-yfaw@D&V)hfBEP;NkZ<_& zzeOo9HQf9!1H*^PYK%E-h#PRy902IXv;zQC6*~lYK^*FT5DWTed#b5hz?g0vl@~mx z48e^;9$%|PMm*)IdK=H=7*-t57RZGYjE2qx^m3?p0PQGzpo|Z2fTC3>LgHS|(mpr{ z_iv~r^;D=Ne4L&|)ZiTEZn?%cC`o}pTrO9q0U9d6G4Tq1f1D0igAORW!sE%!1LPpe zO|ou>2A(fw@59*!YpW=I1*FO=pr=L<e~FiPgcwv3iU$4|XjX9g!kuu$<%LB1bw73P zua*F}oJN69AnT~ArlSb`H#pH%4jB*r2>3XO@)d}rzl`6{2M4lz@Yw<lk6bB*g4l%k z7u4T;VXjJ5h*|i^7tYfA#I^tk6JE|2<`Ix~tyoM+Kj=9|axsiX$~o5?34K%6_&{VT z@XFH=J2HypT^2kGP~j4>R~|YR9t9MYf|5T*`d20)HFIc*aVU)n-g+e+{~+37j5@!I zEA}?#w~MkgMsIbG7CsJVH3m=D^geR13wChgFP=ckFi|y)R&8QQ1OHj=S$P7|F0(F8 zJ^Sf-B&LFhvxfx{zvTpisuQBelFt)*8g(|D^B2f>z<8ew&gybjy*?f(VbOGS3oC?# z$3xRM2B!qL=or2L#~d~Vhhyh1!jpKF$rBTRow6+AY<PgIX+eZAnSw}FTr~0I{6^Ey z=3d-YGS6X-wD#+c%EHdX#QnNY8L=V`oKylt;j_US4s~9P+e!9Gn`>enH80a^P5dNZ zUx??h4fY}`dpAgxFkP_yBR!XI`JHJ$Bwr`P_e1+nZf{JIeU^01*@6G{$8cd!nD$nX zTa;m#)xJb+?-(QGLFNig>;mTCc;B4~%0h+l#BpNo<}A^fns>Q1MSK$+qKusb<*>`X zx%FH=gWUhbO}Y0}A>fDDFHWUle2|9EDZ8M{^nup2;pkt^yQI~+>pQLzEfXGx(u$0e zwy09pA?`0Hwr)iU3Ti+RNwS<d3t^-#gtwv2V(%dpm$vUehl}ouHA0<C%!<wiLQMKV zq_AwgNS>#O)$L>`;EQu$A3+m`%cHx-WZr7mqoh2d{?u~V&y>2Q99`bAtUvWD{HxYa zEp>&#C*WH6y>ecri^n@#av{9=94<|L*XA1hf|{Nt6F*0jZQ98&*$79S@p`_~{Gxq> z88G?%Ve$7PZQoDk&*W>9UrTDgC!VE!!f0NDe|)I7r-@0i_hoVyK!eJF&iff4L5<4m z-9#kRqIcD-AMre)CZCvutlNY16428)1>USsRtsm9=(&$-`n1fZl1Hgqsobm+iNMdC z_o-tij7QZR=rYBcRFVKHd^37nfu&LDaUv$u4YRVX&e*dQBY7E~BUEUKKIlnAY|zh> zRzG&>9$UpoeQo2<a)jKG^<~Td0e$)EFmgV1C3R*SeTjMxZ~$Qadm*Zj$pgU?Az?WF zIUltT*P`<4TB9$C!P!Ch6@-NUhU=#EzmptR4f$RBJP?*4`MsnJ?2uDAy@EcRzjk3R zNvi&;)gS6$)CuBcDH=sAaAdPN|9mHt9O(zp@|SCoZZ&@0@YnC{fO3q%0W>c31F#`z zxEpg6^(cIkac(i%kbY6vGP4QGE5a{m-LU7wF_{V$Q~->ghmW1&4tqe=ztQwnzzocp zmqmF(eQNHtT0W{Htnw^;k*(6sfyw+8s?TTn^WVccMt*lA%E#ga8azd{Xz)08!FYGy zdIPJM<*y0m!j=y9N3F)+@)%bfCy%O%BmNe=2KJIMU?{2775W0_f5JyR$eND74d%l< zD?z1zKiy4D*A;OxVt!;(`tux_W$954OY}3DbAw<qP$e5Ja2^s)9>iC%zv4dqr`YeH zEasgENB6zlxc>VZRlhTR`WjSrVidrM4$x1K;BC3J&n$RrPS@SspM**g_?CuAemz=X zJ!EGKIHWU56x#L~U#3dZzea7;dz0Rl{w8KZlv{vYv;M7d9d)b4e?EPM#j#yfCC;(( zn6+<b>=71xrJt=1pXE4h;U)iC{0KPOl)n|GJb*|MY*MkIOr~@+0NeN?OgBlzZ!@CH z`4v3;NKtIJ05R4CLY1*RC5~?}@4%trazX^65q#$a&;j2H3{M1s6-B8TDKb|a7CPXM z{!rXU7wza?!$F%xALl`$Sbx^Dup04IsJ%es0vsmV2o^?#2GO1uMskOu(gYcJJQ(<6 z&t2Cd5Q#Ik0+A8ViDmzV&$9@rV9WjbTF;^e-^m*_Z~e?0ORIJSktep#?S}_*L1e^2 zPt_&(FrdH1IvlVPVM7=r1}pypGXgHB*3xV8NYRgKo+li3`*<2f8Wl0vd@<P^qMb+j zC;By!^q0_U`Q2#1Q<cVkkcxcQe!Q<rh{W&<{uhiE<WjL}I#QTyC|*3fiwoeIz8G$^ zn0j__!PMGB__s(SPWbP@m-LS;_}Oda1>o=tBZI2(HZnv;{B3L`Js<HYPvxDsfy3N9 z3;)O`ka{?G&wHvq!j<@jtwukzCp7`B`Jet+voQcwFr(jsv+W@m-<*Xvx8auPH_CJL zO}VN-YYK4~lBfDy0293i|Hyj^8GlS@=_R)GkbEn8Av#pvmUgs!)C7Ucde9Gc^H&~{ zO0&B|zOww53s9j2qdSvL22T~d|5UYWT*4MhaUt}Jt)tK1DT=-LtpX>`KE^<xwG}Nm z!w<$6;%CPG2%$NvFO-rm2kRT~wpangpTEYBnH$AU5XjTQ$DsCjq}zSe98eqC6oSZ* z<M0u_y?qx14kb{P0rVOgi3=3y>C`u@w-tY=@S~nXKv3}pC8vy68I=%U$oX99tKYQ! zUWt~fo&X4pWmVMFm~Js2X?hg2<XOVICtnf$1wXEBM}L$`uhbuZ{YLahmu#iPl>Yd< zKfV=slKZ>3-TuCTQ^)Zq>&wmJ?6Iq2)zxqM*!uEL_Tx}@#iIWM;gK*Oy1@S{?*x6W z>c6vr)~^NDE7^cefpZhuknx6n_`Y)rwRxcp%L}Tho+d16*gH>31c&-f{B@A)eaST0 zV2rOM!pmU8yj|W0M>ne!Whx6f#5o#+qYq|z<v3xMGIpbHhNXNz+Qz)7;zqJp6Dc>a zR1n-(^=bCsg#vd}QW7Frt>rgk-yIC1_u114q%TU>pf|V|=t*g(=v>uXK=sz#V)Zsa zdgJ_tscj%iO472C$Rl!JHCi_LNJIJtCBEK+>ZN_v7%fz7xl~*COIr<ObA_CBCz8Gi z?V$z_5zX19{bn~~#SjR2s<$9yL~^rp*sRS0iS46o4%?<B)_(i9tM>h>{eSHw3LIdc z@SnDSylOuRLlZ1`M{@hG_G=&h!y~4ic5Y-yt!ntk$qoO44Lj=zvwjk?J57GUNvlRv zg{-t_18Hi5CH2iR(UZchpfJjx3578uI2h>AWH_MUAer8xBgEL=4>&Rv9FKkFae-Yw zJ%Q{Bc|`FeQ>3AwX}FtaP?~&5sk{zf;QJLlfgq(6|12LX{qE$yqoU_uXkbT%+{Wf2 zMcvrAlb#o#?f-~h#;W%Fs`j7Wk<@<d_{8=xBEP;8HNAn}6@h%#6c2bt*ZIA;*P%Qc zg~w`?&DvQ0W7tg))2KmrEi&YH$I1xCq6gR{z-cX-Rz}-7>@_lE5#Nw9eIYy&eJk=7 z{)y6GYXS*1xK5!Mqr>@S`U-!3i{HD(?-{)Yl}XA^_3L%g^^L0Q5vuFeU$X19nA6ew zv3Bn-;Wm2jgO`+O@9E3lg<ca7mPE`!%r^ibngeHZ(%h-@M+Wtvm4@@uya&rqr{8uA z11@kKYC`8AdJI?XdPG&9#OunQr4<El0eXn@B5ZIRQu;3Kjei<IMK~??t`R<so=943 znHe8ZM^HzZtg8G!Ig&bhwRs)De2s`Y{2O@MP+#={HD7mwe{&xgMOGy-xPQnPi&n)j zR8e6phUmdK<GiEr{Sq4HfBm(AaKBJ5FeADb<^x!72AjaQMs_w~sp6=_UdD-gdsw}Q z&r0TEI(S(%!8R^n1fU!z+;TdmyFd8~LPdiJO`eD*jg@@>MSJaid&g0=H$k<>;Tg9% z+l$-c@$ul)eRjUs#D$^Z1FQd3@9#aR#&5l!?RXzvD#9wz2;L9Mi?sZ=txA75cKHMb zU8Lk^3y5(yj``&g%}vHrd7!Z6Ptj6SS0K^{9+8l|FMw#8&Met|Jx3Ft4;=f~Qk=KX z6(x;aiXb5a$oei+B@0AmA@Z_3cyXEc+W-zm^;9*1Z~^^PM!hAt4hCl^J3Ilb1ZLK; zB7oJ<#KjFybs>y=(9yZT0sq1KZSd?scxsjzc*mZZJx0^1!ozHkapnNx%V<BKUy~L4 zon>b;?nYxXcm?yBtC`OnZvypkqzM8-z~Bxxm8$SOna&mEY0|>4<~PW0M7>w_4R8nl z<wjQ&F_2cMAUY^qmUq57KwfPpd~X&UtYA-m{qy*DdyE~YbV&g7qxdyS_v|!Q;o8Dw zlqErpSBE((Aj7^+j^`y^C$A4zuM8j#66%9IUrH5}9J$Ris=?GFxNfTB6VHOhfH#3Z zu*IZ*N%)KlBZDhp&~v{?X24sIsK@=~Q(gx(K^bt_+gkoARuXZ45js1jS@f}w6aRSj zK9qtBUg(d^OQ#c&zh5R*@A~rI_#}w<;8(`z+aRUYSl4R`HJadnQ?e6WMx`&Tb^Cz6 zPa7!49ZZ_N9b#*&ekHztPBfh(QtLxlErh*EW`>?IJ^?uPPB?ae2_yO*Fm2oCO-qRm zY9ke?cx&dVTKG&Hx~}D;>MF|U-BFGDfoO&@mj8u}rn*k^lx|j9N&;b)KA?RHo8Q?c z)na{lnU=o-TllzW3ld=7k?_oVEi$M!HYhHz02Ld_7~+1kT=3XitK5-}Q`xo1sMcU# zq+($OGW3Dnvss8-O&4abmha6tlUn~c$JYOVE)hRV(M=ot@Q_w(KDh{);leOHZToD^ z4b=ts$24HQMI7i@Up3Eo0+Hg@a5t>Bev$6|Itcfn4so;A&}SfFTpytkv$^2a)>=0z z*h6mDBXlvdfcVi@1;RsP$C&f^Qg^`nN$^x(c<`@b*;8mT0Wwq5KXF7EFxCn%sB5y> zx*2>}>g-&>$@QRf?D??`KK?N)1wKaG_=vs@<?a}dNpE2u5E@WHKdlT-(kcy{+b?qB z#Rj%Bh2r}9SWk;@O^SlgmiofMC!mD5ufiCF?%7InB8BbwPHrdD*#XZH>AgObVtjFW zN4ruq;`AboOq7zb1L2#Y628DTaL|#q^g9%lNctk;K6s|KXR}}5&BZ#+y*$>9{8vf( z#e%1DjKbV|3=JS)jG?2UpEVxKo@qm`v{d7X(@R9!<X`VwGcmDr8a}u-*gbZN;&1QZ z+7O(>2JBXUEA)*yQU}9A4LDgy{E4>m4T6;*_?U{|r>cIOG}eNO#yu>tJ|0ZKoQ=3b zF~u7G0}Y}7gx;UbJS@GP_yOOZO!-ErT#0zBJL21QSj%h00)xKBJ9vI@rxiz5I9&={ z2=BwFK`shCDDOw$^^Iy#B76?kqK!4TQj>*F((+@p7LogcFoK=?asZrz+!tgdsWbwc z_eB03?R&SBU!~>m(!$q4p{|DtlD^QR>Mk_ssM@#W55aMUN5h3ip@0`eL`ncq9>#{P zu&GcCQnIUPSM@xG6AbNFYrNhqo`v@Tcmm}28s#?<I0aZBAK}(jzy`|yM&lR><sT)8 zpnDi8D;@+UE0}_T@PcvoEixaxZh?uKtQlhd<r7p^<)xQ$Lw8JNm~~MHRgGW;UlPmk zCwOG~!-$_y(OM(HH2E4@$39@q3nnH;*N}jyb}=HCm5+~+zK@QA!n(G;GIc!c1!ehy zh_?Vw*j7w$+zSoDI_aB@5z;>>ivE|I{bSwuupDEV3!LY;w;0>5;7TnvrpypbHQ3J; zLfp+l(k1B@LW;Y!wwjCQU|&FXje~-yM(te+K-L2hq5MGp(!;ZE7MI%?FXE|7B?v;1 zx%7994L1`OiJS&s0qO9bf@bCxfhOOE=I^My%J|SwhxTcEO?-lMwi=`_6+kUc;{ZCc zaya~Q7zeYV&NfqCh*Wo@@oqD?!{M>Pp!F^<A1HH=tgRLyj_qf<qMs*R!O<Lq8_sDK zjP)=eH%hwTKGym5<tiC0eLeYSr_t>S=WaX|e+fjcwby$QuoJd3*Vr|LD&bjJnL&{m zZsRn<7@nC~svBxW35zMsMz2qK7ybcq)Oh_s3$CdfZDYrR=6j^3&043Rx$|--G`4*R zUc@e6upk7Mi{14HI$Z6{I%BR~<$*M*!gC>AGRj1_6LMv$KMdhp9!ak<Kbg%C&*vH^ z1cvDm&u<DJqi4oe#V1rQ4SjAjZs2HA72|pBcsc}l0)CDyGM*Xa^af-;1-ytbOa~S^ z8D~I`qED0*v+YmXcmM0-`<y$6Q;zRneG|sFYGCsC7(I~$1jH@4wA2wJjr4+CG#Xec zFh^_85l3BLi3Um_9|vNrC$$xIHw%Hwgup;Ij9ZX*V*BKs5+|<>fDdVRpzvE3{)N62 zgimk)L249yknKRheGsT&n;}r^GvNHaaatleFb^CCAFh=65NU&$LEm0N*^=})t|p>- zj)loa7<t&zM_Ce|yV)q&0dSQpq0qLHYf93f)k=~EUz&!rUcf`z*!*`V+G&UXj!^IF z|2aLzuWgSW{ys_ccybfyF$x}~aYlX{ddQp!AA)od{)FL(=x}6kEl~`YQLucEvCBdY ztcc4FQP&q$pj}MSD?w>nUQPNcUPow-<>MR5e}woPR%L6=7@bYL1;*o!X46!&`Dj)} zL2qWuHfyT+Nb%26x6i7oLQ#PI#z6sl<@;9qo)qny`~c2+5F>|9+Rx}0b&~Xt%pw&I zZEC=h86JRrs(0f(Y%FFJ5E*Mm@pa%anX*u!MzE+iW8dlXs-YaDIoe|)l7;``{oS3= zpY>e9a+CGU#y7P00aQi8ytlu+5I%L5mX8G@tP7w>PDfZG``AB82;@h4y}_v_AB{|c zY+S~vdmr%fG!YUhdj35j=l(P&(%Fhvwnv~#u?Lc_o9c{p*kv8Ls91|UR7dmCnhMQH zuxSjp)Vi9+^y44yb7~rsBR`wQ<jG&KUDKEX^>YP&4&zVDu4Sx_jhb7J@i`bOWHc?T z!)=DdH2vNc{4>944gN$g;L+Dk{1$0H$7Y_;ap8<<FAQ-ZkFT;WUGIH4e$&p9%rDeD z$+!SF@WeqI8Lt>7oPQ3;{xN-{@yaGrcYIzzpOUFh%W5j_g>C@_j%U+VVpzO;*b6G3 z2TH7Xyml4R%S4Y<9_Vyusqz{^H=+hg<qCK8n11@098dMth)Y!=RZ;e#H<c>1z|PVl zrSVf?<30G^APxfhABlq!{hxJ&rT&w2s&;=Qy`OC}n)ob<%tYDS#>N*eap^FN%C17d zawoR2q#I|&+}t2fW64wX1e)<j%Ai6UOuAP_@f}h&(0tQK_6brpU~1df8u}!>s1Dai zu)K%gMaBX@uM-}wf7H9R`fcepzoMRNdLK`ZbbN`gy=y~XA&ED5DbJ$0SmoZGwgqs| z4ng*%B!DZvYbq7Ch_*nWK{uR9M5LAW!wEx3cBhm_iu%L5F{a<`<X<+jMLtpSHxsg$ zj@NVe`tXF;IsekI&%@Li><?-onNa#iDhlHFB{(U9f#DN4vwlh3LWG)(C8&sP{3z;n z#Xc3+Tj#lz>wb!ZuwI8587CIt_Faq<F4)C9bkQ0t)|!?BQLfkklRje1vIb8tc$hd6 zw7+rt3h*1ED|$2crR)fO6duzH9&B};KCxGD%Vci-%VQH_rq#mZr#z15ZdOc^kQS&g z27)R1^Y}OXDoF!XQOu+7dJ~Ea<DdTm(wi#zg#T%gS1C-BqaUHnbOQX81mhvq-sI?( zro_i8zv%#SEQ_Ic5PlsEMU60$8D$TT&eq3dhew0c`{BG6@H?L5A@f`YfH(8B@S6f1 zfa=9#X5pq&qaH`_M5BfmDCjQ%^lNa=iT<Em>jHXsK^>rOl7BPtORwZLmA5${ZGNMS z>xyXA7L|vt>3?MdP4XtcDO?xpLc269_qFgn(tf0*w~HBgVA=pZ+1oO;`THx_coXBu z_~YZp5JYH#*_olbn6Bgo{G>%LgzQt#(|`#tWP@$YbLRTl3HiVp6Mc~>9KIx5(?@58 z$7Jghv%{D4(?@5Ap(rNy3ty6>kM0N6p-%)7FUiAsHuwfAXks2xhKnUk4%8}id8%oi zVDj};{}Mk6>*6F0gu8WsH`gH(f?3kB*wdq=Q*l7==7!VfMiL45r>Fv-gx=R8e<SL& z$glYa=TjoO2Z=DczDI)!ifyM+AjPXcC#MaNpWBTm@K=P{b}Bs8EPh4xB;o@=VW%S7 z>kLg7%mj3ya9H$v_`y27tjoNjFW_%8(CNZ=etn-`|0Y=UQZepZ_UbMl6if#nGz{{! z2|YgwMa%TNh<3kzAOFODYwIHf#IaWDN69>Wf9#(|_nbrn352biu^#dy($oa4MTr{I zV)TmcYps}*?ZS#@cus*5q8T56OIiHm&yae1{;FGJeUD5{`}++B5Ytqb{g1?gFgGUa z3%oOK1Kv@R9DN3o7bhP0ROE4@C65;_OO{7@UT!@<BlUAzo{wq!94mHoGV;GM?wdkN zGwax%UX?!#b%tqe{+D?W1qWkS<!0js&z!^2T^4<6($g>&w^roBvk-DWaqL{v@|Hi0 z#_?Z&^x__l_|gJi!&6;`i>Y8reA}a%Pvjy87k=xa02h~97vSCM>#U1$xVX)_n1T!4 zx|o5BN7O}CZUvYD*H2m3wd(q1>w2-eUTIxFr>;M+uItow)Vii<puK(8^;UJ=8S^Hf zugYyv*L|&PA_4E`<GQihi+|m(@RpfBJLyV^`{b!d9kj5*s4YsN$=dv7M7o;f;pbqT zP@ylB$8*-QYD#iF6?f!%+@S_+_l?}o#>@1rW~Mt%^NZoAr197ph4(mUurDPU_g5Mn zPJ}4Pd5ApAdj6MLc%DGrOxyr<^-t(WrJyVF-n~4qO`E^hl`{(G()7d!Ktp=2r$?#R zB5kSPqHF1;@(V;Qy-t1=<JWESi{#`HadI&Q7mrvMB<EA=!X_sxZsX0WT$7wDt?R}3 zf%iYKu1#`At?N4Ve4lk~lC!gdyDE39dfwN%Hp!Wf>&DVy3AB6sa-m&1?hE0FtT^Fv zKse%4SrCdYcJ3Ik|GZIk0!vVGJ|&99-G!gwSyadAv`KV|sS{MaV{AWZ9F<MIig^S{ z2GL!p^ME6el!9Sxcrm#2o<<kb13qgkVo9}j^KfI<p?R5a+w_4oL(IbCKHb+Uop7%U zlzc6_pdxo@1kQK*cTfmO=RIJYN5x}mF!+madt5Jr$-!k`Dd5v~{Rtay`?;#>g2%%k zoBAnUVA4EZu%Cpw36@NK8i-tl197$+4}7wZYuj>0r7;l~GHT!D(E~RCC`1PVU&Vf! zJv$A}Pha1%|F99{qD(paAI`0(ssY`VcwX#KT2<$%d4qjp@dQUx0Tb9mRqLzRyVJ8^ zH}2!tx1NRf%NzUBqyf(YHtKnCEPM(i4zKi8ZmaWE?5haPz{@S6jEa5t&bo%*g}UIU zn0Dn8(An4y^1D=j%UAg^zSv(8IuEyhnpUc>_f>v^I|nL4g9t?Zwr=%Xk9DuW@0Io2 zI=WYkj8tV+G!Ok=yK05z{kj|{?l+_ZQm$fD02V@7FOARo5<i<g3x|^gNQxGKgYTyR zcB!v^Ye!$CDzjoWURCY>4efRy2JmSI`E=IfDL$=1A6rA6EB5`yv*0##lyYpI>MQXG zopi$pO5F7rLg$L+ug$JJ3yTH9281X3EJeO(mf8|#j;FBB!CaW{lCNJ%$Dkdrz*4H* znvM+NzIByb4_4N7bUdRxB|mp&AE@U!3E#JU?r8r|vcs6vKAyMj-_d@`=Z^LP|6%)2 z`P|Wdisz6<?Y+1?aqz7~gMs$Wlkdl$uL5o2(>?9trn=`g#h<saNAUcm58}@wDZXFq z=zngC{#}mtQ}v(eXg^i|S(^{jzt}^2=q}PwJL%QL;TJ1=%6@+6mBT;Za)jq^9O3z| zkMR7?BRs$I2+z-J^PG#J%wk8z+*{1mo7Ky+q{me6aiMN-)jLQuMAJP~CrV!iu&!w7 z%K-Ktt&Ilf_&iHoKD~abuf9IB@?$8=l6udQx{^qZ3u#8a`TJUtA2{ojNUbZkwRQe} zxf&^Zo{*yroi!W>=#HbXQ{JeWf@9I5)&UAsnyg-j7FT+ftc={}XyF*qYPO!M-`eFB zP9>2lw<~w?_pv{i`a*P-L*`BRvF$#;em=<Va+Tv4$bIfvxq8dg`Z~hzDQS^$<B+QY zt+G=G3$8StNP)NJf8Lr_Z*-YD|0`GS)YFUe@JTQSFT>V?`mKYS>@-y`P^eR%m%#o& z+f(ZsGmrEh<YkhB-y=hv(JRZof1etX{Cd+%$^3}#r#R%H?C{^8k?Q+t4teQ*`0u}3 zlH7mgp?QcFhx>q`yc08n2#=1$>QblTnzIBUOM!E2z%DOt!*}^w#K$-FmU^ROrBPf1 zuewv^=jT^8R$zf1Px=(sD5R3+E|Yf2?R1#6&CyP`N+XBu^f94OZErolvaX`0L+m%? zx57HMl;tYN!8jrbN)FOyJ>qER*h(WSxt(s6b~|x}i1o}wdFoJZp5NhFlCc{*v8L*7 z&x;vf;a82%l&;E7X%7CZ+}6Rb?-l=ZU1+R7?D7vU&J13PzsO_N8)yC~HbLS~{xBkd zBh&rfV#LK<!C_(k<{P&T3Fxa09==so7y3XUoq8H;;8VahxcL`#Q^g}Ne@c5VQFvhA zj1TCT<5N`a(z%+)1T{H{f+ukxCRZH32=R#RJib}uo+g-qCArzgQ1YiNkM-nnGI;fJ zsc5B+4EF0iLmgo!7EE4hJd>5=U$@`Cw1X~rTt|2!y2TEu@I^T^MG=D$0B{%u*QSjn z)aTN%4gk2=*k1pqx9K10f6#B>J--ff@+~dDL0h|@p^_@@ag-RtuGo!sya0=*o~i|S zB0I|$;P5M#XGw7fr?M-bUjKO)pCCB$LIJgt-V*SxDaTNojd!qW0Bd)OKaAr^{K(!; z#{k)@Uw2E#^}!LIB?Xats7p;%8jdWWA}kV3+Fft)2|>~1tY@Sbr~O@6r}oLpE0dSj zBE<>DFb;rrxNho*eUNjCh8VC=Ynq^!B+Vg85jYx?RYYy6H$d-Vw4PCGc8|&K5IUdy zpokz2qw#7S_Y<HIFJ=QE!sT)XzhVGnvQ#e9B=g&)K4<8e9QuY}LyjN{{Z&AY{ln0Y z0gqVoj|G2<B4#)QO);m%s;^M6>Dz8+|C1aHdYk}Bj#e;&Zw1CYxMU`bcI~Pz?B0%W z6z^_SavOx-5T80LKX(T)WA1mCpF;J-c?@&uw~+cn*wh56m%+$vqT~)wK2CnZ?__;p z9kN&629a`*ISB8j8xGzTIZL1!j*bx#<k++lrp=S}FBchSDGN{4VlZQwceAHToD_!8 zvDcD&eLV}R@d%Ubu_gLvk-N!S`WnSto&~?cqY~`0lrz}TZdqh(2MjNErsxR?-kHtJ z8i^))_+cj`wlV9c-i^0js5g}9Z%wUl$b_3((op7odn%U`(@{KZHm1lCxuF*d>tY## zmogm$z(FuLzdcR>=E&!mu3oWA7(4c!aYr{NHKx|??wB6xDoM1;KJjBeNo0tQZB@p} zdqlLl`zmt|fhOuX9!}@OboFq#uQJo^P`|an{4U0~xYh~IPKN}ftN1n}vID^td)>1x z^M}*?-ciuJ`$L0b=aFuDgXY~_{u6(=rxqET?$^8O9sJ>unf`%Ti^msve(wdD!Cnvt zcxTw6^}g{B?8K<tdkFc#mCG_s>7<^<m6BN#UOuI6HuG=5A7%P7Sgqs_XK^$LDI)_; zElsAOq9*@SI8b%VDFi(%EsafOSxi>uw`HzSSByk#DNiZ3IyyCHh{ZEx)oH1*s|y1X z<kuenPma>uso~*7thDvN1J6|sc<MpL4a83%{4;Qr<Gdx}h~Y;B%1PdCO5t%TfjtEQ z>Sp{EtD$Ac6f7u<{G_!+|EN^|kn{!Rx&;^vYc}>_8#{K{-rrCr5fXpp7w)Qt&=%r2 zi(Bh~PU?|v1M)yNC(7zNtMj2C7iyc|stM!E5KcwOC+yrwJPs=kDAp=0Kub9}-H<y2 zP_Q1+Y*Eqz^><L5qL^uJQ$GXVtP;<tO@u0&yJ5(Mzwmp%DAoTJDu`14MV@`$rMC|8 z!?}lHI`WWwmhj1$_#}9l8ofmF5A3q|mgDv7oyzp%lyLSUo(i$^X`^57gU}HkxS^sF zuyG<7XqXC5%85|$@74KhcsaJ-_;sdJx=nppraS04@$hIuz@#lnHz6I<L=GZA4DXEE zL=vB2lGvgz!%(1aUyM*l+W_Qv?yoZm{LzsK+}tS<eAxYo`W!2XiTns9zI#j#B7!t* zKw4N)rV-<*UJDup^i5n^0sXKkpv=2IbWL<KZpY^%rOq31&j%AQ!R)w(W{1SrY_mfH zwJ&72Yyx-~0j{dK`0yeeEQEgSPBsT`_l3`jJSY~2a@QV7wm4L9*t>M*--Y%RTPkr7 zn;KlPJ}1}E*&w*m;%eT5GBP%)&a3-F0jWv;O?!UFobY$!p^nro6@aZR{u1dg_{;u( zkH6mFk^eRPJ*+x!AAb`wZ2UQm6xbvkW*q~|;|6S~n(B22yA<M(L(?94F=G<$4)b*g zeF4uuP1!5D$1yi5eSz~F%JkLLUpS?KX|~LF90tY)^-G|VlzyTaskADrj${oC!!g}c z%|L6w8)fOCtf1eTp945aX@uIvY)tt=RE?)<30`Ha;BC)cui>W{qU9%IOTWLeDP5S3 zH6U>|L^Sj!7^qnMooFB*$u9fSgM*N>FrYOJ?`GD2(PirC@Y?5pQJjYmg=fh+pFZY$ zpFVMK>?MT<HEu2~m+5B&^z*pNOl>|`Y4bp`{u1}Ycu=M;Fu%YN9RS8Q`B!czCVz^0 zMqP74k3C}iEv>D-Xcxbj%a0nrIY)(G9J5Lj<o^fwJqMF=oX$s$--|l5#joTSzX!F< zCHNeiHPc3+AS6sXiW_y{?>?Cxx?TkvWD4;|CbfD-89XNBG@rf$%31M^s*YtmvmJm| ze~42^Xd%>Tl`+}|AJgs)<hLa1$54)?8+kmUDTity-Qf8Pu^QtZcj5qw?fq<!J03Ch z4h8}CbXYjhh(1KDX<^ISjYrnT{5Zj9)>WnY_QD;nVx0+o?B}uL$&VsSNCW?f=U`zo zO9yObnK?4RQ_A)j&7UKF=Up}v$-x(kV(%qVz|n**0r1YPk0!rM>ySUc_oL8C-+T<i z<x(D_z8&-K))Hg~*Pz+h(+Y0@ggs5b6dj!iu`wQVIfu;ituUj%D;x8gOAG6;l@>`l zyD4w^SbFAjcs}dlv%^tpC=uE<8{GePxaTjXc#iW}_&wa!W+l(kKKBp$^*z*gz&7<A z68j~^yK-B432ZM&8kYrqm7l_azap~?Ii~^duHY~Hh#=r(w&10*CbiSJ|1(qAcuEz$ zg)ck{nad^w@FV2l5BDkeAp^=&#gqiS-fC?sqN=6UpCYIV&jRGx<<~t^^$ww5g8+0D z%$;DUBu#o^4GT&y&9k6V8lmE=kD5v^TAYW5LjBmH#3S`C%2`2sBRfO^No(y?y-Vy1 z(9c*3J2H9-ZYer}0n!WW)RG|jos0!8XUF2VC_lw{yBMp>Au!t&a{kC<(SwQ4#h(XV zIf*3jF%4iSyi_hdYzSq4Bzg7YL<=9CS3md=kFVu=D&iq#|03^nnqY7zY6SuVm7oBE zOI5iIM{;hjT#49XVqjsFD5|3a;rWAIP)~~e`_!z{E()lJ1SkS0a3u7~;0(dp))5ft z4Z=}M<`AVZ&iw%(odl5Lwk7eS_W#KdByH%U^bEppR5aP4i?L#?MJ{U%=F6N8?Fc?H z_2QzBO`l1WqeCw`y#t~*D|AYHibXt9nxaXMRPXJ^8SvVvi!x*P8@GNBSliJL+#h#1 z`6pi|KX=N1NBcRXoGE%6%vJ0Ip(|xOvo|exjigt2OEW`f#)=>$%3tTUnvcsbMcO$+ zTVtVy%Un9l(=-j?0_?BwmSqN^sKk?+zfE~k@7QvI@fsH(E)aXnZf|lS58{aLf0!&n zX5NB-@n4FEalEkMk0u_rf4`GQ+V7uyYBR3HAt=tm!ENGk%6>Y!{%`*``xpBO{X@aG z>HoMNpgH#MbB-Sq0+L$4%t_E)W@xSesq<72!)&K6I469Tx!w>$h|jNYiyd#ygIKpm ztS)#yTrcyD5(e_0{+y0RXe;vaa!uRRITgd{3g}%!XNo0(2>|wGw_KROA6Wb---)@| zh}#XyQ-9SMf<Y*I9upgez(B+@6;who#+&V+qhJ3d)yT#nbS>c|JMQ=?Z1t)-S=9^W z#|mx!^@Tg&tOc%1l$G${wPxdX>~yNC3ywz60ZSH}Lmw5c1KhMJ%0#s#x{#$VeNE`( zxUGRPR$yjxNq{Q0vQ~PG)f-pub?9?WCO9RajSgqT+A*n6cZ)hDo5rKVA?yy>&YHaq z##c1w4lfsk4G|3sE=IBUVyXwtURGxRo5qSggiYxOiI+Lz89!?Sq#2)bgndj;O2wzT z#*P%9y42FOKQum-12|P+Dw!Xk8zl&xbJYB>!8lrem=19N`}}b6Zp9B^1vsYjva#P{ z?HwRyB{!4V(R{4e$$po4S<`Q8#X1K6$D7xN<;^_kWBd7yj^|@iJTG@VKQ+bks~yif zrFb56Jl~ESbh5napYUTpobkN6n+QMnsT8?DVkS#j&v}UqRZKGqA;UoU>fG5#4bP?U zaQ_D?3c<E2$sIhd^@ZFDxoNB>T+Ei^&MT}iUz|G(lkG6=<hK#n323l(u^_&zK<m62 z(X#=V+UOm_EU>)eet23eA$wc?KfEC~$M@lg+}H-A{#)2PCOxtM^K=)6oF|nL@t26k zAiqb32wE9t%afuXsdAq#j}phP+QT;NdC==?kv?v4XH0|fhw3&ji@r1a7k;?C%_|Oi zJNcng0zI%e2zogAVY`AXfnS{b(3Il2lOO(^;<=L_7A8Em`JpBS{Qp&c@cfVR!}H&y z;s^4C$qQK)FT@4b;veCMg(=409zP7OYV)%21MIrbtTST#I<`xrVkjKFGB^crELBZS z*teltxP`EeYH;pO9R&olVmIXss~V&@a8@s^FuG4??7g&tBk+Swum!OewqOnN_1-Df zzb?}aEsPh6jq%edg;YLz>656o_`tCumU?NO(f5}CHCzTG8KMS3>y1~?J&KL$&8=W@ zTu9~7(2BU^;W)}`q<*CoTDW4Vaq-t((9Z;{>NIkvdj`M7;aYo)3v!%WhHL-J<A35j z!rspKJ#W0*J_35i5wMr+{+}XXd`mkB7~9{802%)!P@hbx)v$9e8x-DZQaIhDaH#<; z8Y!)#YH0*UjX%vIH_hFOGHAgfpm_!8j5o^OWbokS62ZY%9&?fbl%xExz6ph54Uo%R zTs{NjYMIPpqsVggy@U107v4fK&hUh-a#9B9#qVTe_+uww+t7lYusP%W`rn23gPVkB zj~d?lkhW{2w+C<RM8NyrS1I8wF2iAv;X9qivV~d;>%P`oM1u>O`=f|VyJ-ID|Ht0D zz(-YF@#7na5EQ+!Rg6!9Moq*=sHlm6&6*9|#f?S*MG;Ml4}7ES0*Xj*6UlYE8e6r| z+LpFzv1-NEVthfuYe5uIsv=g2Pi9#j@dXi-{eQnR_ujpCvw6_k-@pHdpO573ow;Y` zoH=vOnKNh3l<ysxH@u2&SFY-W%tP7jf$X+z9CW1j-uD0AuKNG;8}^Ruhq3?Bm7VlI zcm(=?`PL5ohiJLA-)RVA43DTP#JNW@I``q>=ZcldgP7*CJWXdl>*Rm)dAxd_ofj;C zPa&D)S+pE%CI*iouWwZsl}(6$dY?K!g<WzSMngFcFNLsW);C#|lXyEtRP<xz@$5%* zpC@wIFS9>@Kimy}7(&_R{|%v=QKVp#$6b1hzy3o8c8d$=sQ~Zz4YFCRgI(<|H`{#$ z`aHVNeYl`e;xF6n4F6&W&Sj40sxI;W9#^h`4#2;m=lCC|@V~fExA?byl7|0tCjP&- z@R!YYjen7B2jef>{bBLnimS#H{`d9}|L8vFo8!@Z><`b66V)Aa6XIig-XA0TG-%=x zL)aagAD#09yjkexO{5CkC<bjak9UcCh`U<fx%luslMml?@PBllYj}5LctlG<T6<Wf zSaULCdvn^%_Gau&d*Kn|*%0P|asSX1ezWs~N4Rl1T#n;YXYK|rj9Yii<IfZxvO)wE zQs}@Q8_|A@f`8wydH{dRGzK1Y0e>|rxZyXN@E>x)&kdgF?*CxOi}vR+UwE{Ir}BDF zh@boj;!~v@cj5E4IWDi$-XBq7!oT^K&i-eFUnAV`*Zigj@Yf%$=<`JP@K>hw|Hhuc zpJBrP=)P|IzaXvu2lNDfo(ccW?)yKZ$xWZXKHLNPG!0Vp8Pq-e;<y|Bx!uE$?(=Py zoNwo|8Rz_V&bK@_FCkGaWP0w_EcZN!JLbVxTe85&oXG9@s{chU`sZiVmz8JiR`T*W z+@R569%R;+jVAmd4bJh+3_m)RDjt0w+f(?E3(28U{;?S+eQf&x@-HKO^5b35r#A`} zebx_D^zpj-pBo(NrunIuzwYrBH#M5t<t`&5AH8nQ<K-!Vf$^AZw)gEGC%y7AwU@46 z&wbi#@S9(Ac+&N1=Jwi;Quw_GI@<ID%`)JZZqI!9l-XY0UbI(lw$~DMwwIBfZh0jJ zq7}&<r`PWVJ@d@=;@!9BmS5tT2hH|Y%-xIj<{zo(d0_YLx#gMosny<vd(&Qt+1?l3 zx965`;*AGP{64>HFYsG=gu-vtFS;E+w>}e>TkTEjd3&&bzhgVF|75%WzWtZcUij{- z406nAFT9Tmsp(03{QU1#f0_>`9Xjhz_v?|2{kgOkFW&9Kz8HoI?*8=Kt@=~kWq-O~ zA7t#$YhQFjpC?hl-Jexvf94(bU!c!$PdD^A92K1XLD~-24iG{PAaxPMEpWwa^#!+k zLPu~*B?rz8<u1XI06N*teH!rH`a^+7@F+y%%hh95d)-^JU*mQ*^1GdlIH+bhURCYL z6JzM@iH}6%hpGJ%cxAe1-_w)!$9LZTJ%?bkwL|-Pj`pQ@-Qgp|A@+F?^6SvADf9ye zA~!huSFuuhithK0y%t+>i10Dpg;mKAT==mHruFuS=R<H^(3uFAq5dLYkv6(fHv@kn z74`a{b&+xROaEWLrPx%DR5S<A^75>Law%<sODW=T|LGC=C9?RLR~ovVfut|LoEeDD z`c)u$Ln9nb^8sKUl1?+<@cK&`Xo|!?J4NMCOvy+^qjP-wv;9P^vZFDcIe8t&^IwP< z64hlG&9_W@+cBOi{{>fEbi~Ckz=81^&gRg^1&|J8u$ub&ez*->7C0LZzC*yHj`}v4 zcuo0ZxZCkVkH@>X;rxGSJZ2R0dLlU<TXUq7%OZ*7_w@0YF`$$2Sa1-yJHvRCyf4RN z)$<sS;RuDwI3CCBn?4?FT#d)ZBkb|8eCI0X2hL7ph)09GkYOCjs@(c=_*jvZ0y!nB zu-YxpCG*#p`<Xl@R?dKVoG30=vftRYB3zFb2(qd0B&+gect{{JS@@%~vP5_`4*X-2 z7S~g)z}NK3R`n&Z5JOVFBKu@;^weB`Yz2EAFs{RP>I@Mm-Ko{R$~FLzO&Z&hRfTT2 zgVW*0L_5MkEV!rOyP1UmSZo7ix(S68hHO)^s#w<5(NUcp-EapxDlhF(9bGQ|YytGH z@SViDcU=i?#wfEP&Xo`mxNi$pt!@q9rH9;=(Quz}5XN7ty%QCjGFH2H0EG(VtR^1+ z5rVlu9o%OX9-*^-aGJZWOba0E-p0BoqOP28sGle6pYE<d(S|*m^?4DqvX`xSAHNN+ zu4;%_zZ0w6<q1P9SPwqrl*f>n0!K19vcPW?f9h-UpIL~p3vN=_R38TRdq43J<=S5I zpW);`qdZ_Sf|W+r;z67QFxhZLSVzEQRtNs;jf*|f_-}1?icb{(S&Ro&NzAmm{Q=8r z)5&~Ogf34igJuK$(L0c>JEqN@hsuHIiLYQ_!6Vy6!|kfcFD;gjiIYwyJhFVucglCH zi0nDllI6*zQ%x@2uGK9?Sw}7nMBFXkh?bXYbBVIv@)^!)Z5M}iZ1s6Ct!&k6wTelB zD3_@w3!^!D!&t@1!n}e!jfKgNO$T<uzv~#4BYE<34Lr6CKUu$?_0#!xkj;-9N|6-` zJZbaqcv(M<e|Z*G!Tt;DpKsN-`Lzf9+xGUp9&ygS^vb!InDj?3X)y7J+3?C2rPT-^ zkJ-nn?HdmPCnGb8>vM7nvUN+uL#*%*r#%LbdUbB<1y{h%-;~2&;gaD_<ggw^oV+Q0 zBjx#01*4<fqLOD{J~-NBVVskjgGe;TwA3S2LN})7^D2~(45mtrEkb6bXj;ng5gNzG zZSSpB=p2P4<B4VI_TKz|W|RX#M5j`C-8?|9vc!G8doy10Kf>>ZfXTVQZxC*DHu2+# z^%%dL&hfkK3|K%N@LRdA1Ac7K!ta`c6@Jh50)Bfb&+5wusYy+JT3>#&{iDoMu15Lz z%*quN<UY@e@|!Yi*g-QoNVsjdkyVKsrD3njgSa8TQrRl?g}GnSsgR>+6RW0o5MvKI z;GSV>ScmL7Bn_a_u#{aA;Eav{E7AeFr4#e_IK^;@M9Kzud`Ey^?@3`Ud#D5DDjVgu zZRv`EK<>{=?SZH=%B#}_;lacwU6-r<1I(ZK{iQto7$Ds`cfKtT-`N-P@F7zk&QSF` z>VNEYnlkQj)_>8gud{x-{M=^Oy^VD@;-{_uW&Jey34v_F9?kk(z_|5$_wqBX{$T(i ze!JE^RUj)v11U-GPxkU8KFcI2k??_1;+!8rQofy7k`j#){{PT?dK1@Tq*)BV`!2;* zv>5)a`E;uZ*I^cnbim#F`Bc~u;5WNd9hCt0YCgR?wZn{mG#%i7Z$6F3{x|I7uIAHS zu#N5cRH*8AHJ>hIeQQ3oV;{SV`E&y7I_J|$S-;cyv<r)aA8bBVzTU}v@_pCMeA<1$ z4>6yN@&a2D<}oF*wfJ-Br)s62l!Gl+UIw`bi;4!g+<RXUZp4esD(a4#J4~r_zD;pz zCq_8!YNzzKR)B6(*fheQ>g6`V_cNPx%(nSQ6Q0uuhdEpf{ZQgCFSNR!na#=rLH0V) zZGl%tZ_Glxv^Mu-H0y^2PP@Mm_kB=sIGQ{yQ<G(AQg=0ZZd#KmJ(pT;*iFJrwVOP) zW0Ok;Wxx`F;8VxDntYO@XN@v6A)JTidLNo_a=IoQ#}2wRq3vgyhkbI)TdvpLda%sa zRcnx&JU#?J@sX`RC#&!7?C{-e`@4l$z{IEEC+*de&g!3L>$tmE|2X_){T$X0j&%1) zo?wuQ=n~eQ3)pG;?KXVwSP#d4;{Kg@Awzw!_0Ei|3(Isoc|T=3PHXSw5iO{jcuTy< zKdZ%<RqmN@E<uB)C4L0H#GRUZYj6IS=ks50=rEsWe)Hd*&%?|n9g}PQQ5iV>2b|9< zukSFQuguis4>+I4b!_s>BQs$6-<;2Du@B$PeBJ}Iy~BKNRNr+qpFb~h%;(9S)lbdm zg{*JQ=MvWMd_LdJx<Ax>K5}-K^ZByAYCb>yHRkgdcgXp?nSWM`@bWI_a{yn;`7F=# zAh8HH)_5=<3;uk1UkAE&apZx<?MN{z_JiGx^J&tNN*4f}v^-&#uSaj=4i6W1%scNq zrx(JNGFBE3$39OR_P;&B<8VS(?(>XpuUj=69?#ElY@oj=!1@U)vVY<^bAMoTd-Ud{ zaZ7vRJu!cojT)Mj8%u09n1heS)IN$Nzxt{d;|bLHl)b=j@S#5xez{%Y=li~M{8ldQ z0>5AFqwxFtmkK|eH})FusPo2e@VxPNytP)wqL&0PnDD%eMVf_ZpkRQHlvM+4Y)>Cv z@sm7Wb;VOvaUUt~Grsj1U&^zG()pgr{qtciiRI(ypLQqCY1uvzjtZ~9jV<NK=%pJ& zIC25+o*XXxs^TvkL^t;UwYu3f18gplxn87xgZ^BJ{a;V;LZ|+m{WmV+4iS5>Do8vo z_p8Dq=E-_)KN4c#w~6(vb&ttMwtpG!V8(0Mzn>6QOZLUt<7EmVv*$#lbfeOrhll~$ zAie{SAj0vt2@l@FCKdT#^pfAJPZRIh{^lQKe17hQxwV($^H=yP6*|$=evWff8OEpj zKOUb##0zvXK6ezrzh#Y&N7l<QKI2)d2jjD#*)=}0=kD=2w^yd|DZyKgPtA5~eE6vv zAL$RxPdNcH{_etmI)-`DaRd^n$ar)!KP;{oez3}g7Kk2v`ePc>J2(3$W#1XdTAOS| z{2=ziagT6b0RQApV0!aptK{GG_l2Fj&+FuUaVPKd(W)Jyj`Po5_V>d_|JVAPzMl>~ z#l3VaOe(Mp8<%%QAfnDl1dNF*D~7xuh+LVEJ$4*~X%0jV36`L4PL+4;1=#EMCNIc^ zh{?y%3Z8^fpJ{bFDS6U2z_F{?Ov!~E@MeO5TWBnzMDqv-yYS6`mB*7fUQ9^B^c(MB z!~9x#3dP=_ui(|Mw+ej_@?liW5A^%e+SaMP6)F#sZCg8M&h?8-4R~`qQs3RHcFIDF zvB5l#O^8F0P8g`pBarw{QJ4IJ`yG`x9t*zYTA6=iyEtz@PH~(Big<<Js6Y;YeYSiE zsg65t;#bNKJ&~K+ebJFfROW3@+$S!3#nd#|U3VzbetI;tSQI7OvDLd#__y?O<Wo%B zPyatS9-Op4_;?VgW{t;XJ9{!7PYk3`?a6qY0&r>L@vnb%H6CkTN*@pQFQ~@j=I_;b zys+6h9*)=sFd_4eApMBU_NRkkilOGsBrL|bl}LEc%iOt1u7_vj1My9g`N3?FsvLx> zH2aLoM*>C#81D;th%JI;%qDRN)VwcJ`3Nr+<!sOvuJ(=%L@MS<zJrahU7pIs4n3If zaxWJ6;Cj;*L`EdXbPEO3rW)iS0yL5#b*?j%53dC*%8M^ctW^4%`u`h_%E``IGW##` zpq%XJxcOoyE|&wcm?7ilC+<~x-NEN?h-oi^uF(;Fe~k!++a5q=?x3afJdWOp)4o$Q z9v7!|1^d8#-tE6c-?>oJF4~gVq^%?|>C5N`7j4NGp|jnzg_Y+z)Mx4yMPCv&lyA}2 z)(D{Q<gYu@_i-0}pU2f}Hhm)*=sVyAN#8#|0Qw$we>#0l9wvRC-lgdK%_f_^u@?9~ zFe0D9kR8k2I=|eFgzdN_=M98!$5!Oeo9Pi>-HMeEWb6Pv0xR-Ln3wYWB96q#{@@Pf zyfK{0`_V%*XLqZd*N?+1h97P6$49E9P*(d?mE_AG$0Ol5sujy0x2Yc`@<&~^ED;hw z!#?sy?s;ryo%*r<T>ki6ffn+|^SFTm(DG%q@70ey`J)u6tWi=Ze;DdVvHUS7N0zh_ zK;3!!dOV8@F*C(I*J9<5o49a=&Qg(e0%F0#BVPCt!v!~5zE)cb;BDUU$eb)l`VBuv zShmqyx{gyCe{lohj07B5w$>$hvF4o3Gd)9+ejM<Y5jA|sLq!j=I^JHOBg~{AUv+^; zBUsArAXWe;y5)nBUBDkQ@P-d%eCu6NTR_=@^L)I)&{&#kuj<p8=<}ppB4Zu55c81m z00@aM6he7g?LGL|MrhERj5FVYRox_r1*UxhdN|j;s#IRq>EZzhi(0nqk+<xL3)9<Y zpg3p-{g0C#;SnJ=320jF{on(;#W#MYNcad+;F$4<lDhF5!J$eXEzU<HV#nk({A8fE zdFbpR_(IXffvS!2T(k?+$UJsK9}+c;)v0L63HNvDaAm-`3D>LOzR)K7Zoz#C{juSm zzE;6~A9=J)xExk7G94}hy&d$pQo#g09&ys+-pduZUjUp*4@KV{SEu36z-kA)gEPas z$%HpN1y9k}o1*U&_V+=+ckyfcpTMs><fI_GNu~v_1`7u9r(|6YtzulhQv7PNsp46@ zb@MCh>1a;!b(Qrno(~9ADX5kYm<l&}#6IZ=w|{0b^jj{LejOJkVC)axZnJd6NzgTG zK+p^<-DfyiI$oI0cau~6A?b3*RcUm|dlYn8<)({G5k(Es1*8fnQvJYm*?MIfBUFE$ zkuKvFOS*i&)uzi_h)kPrkLrXjdlX%A)A^-3MHeC@u0l6#Ie9Av4r6ei*%svFjn1|X zo2Z!j`ETi8SN!LISB1J_0N}a!uj+-FN*<E9lKaxA%%76BmcUHoIg=C1$WyE<`HljU zp;I35*cEAXY{bQG9R%j=g;HQXzs06vu@keh*E4fh;pvjQUfqTL2!-#>pr3kT+BWsX zD*)8&&P(qMk1;rA_Ze(oO3&3!=KknXMcB*QEs*!vAeT={!;dFF93VeUSRn6of_!{} z0=XYRs=nQx4v0q{9Dsgf11fg{ikg6yAR(AS_cioQJzWpFES|?v7zp65VK2e->T+^% zDB-;z!zn%4lVRsaRs4t#Qrz&Nnr|p~Cd&t~Mk61@-9JwwUD-cO)^LlSzhNlB_788i znd2NMbNp#_X6ASjk(>}cPm{v)*xq4i&qajs{{uv*`&k+h=4U3tk*g#T9*CPn2#&R7 z%)Xrv;Diy908iPRF~pu6x7klG*iX+|e3N(*RDv~A38(W8*}aY8fHCwm?Gyt(z;1af zZg$K=9aeZ7A=+F^Z+#BVdE~q1hobcY<(Crw!j)sGx=)yOTX4}@0@sY#KpM<~`4Faw z23*LODhioJuRNROiQfWk8o!+XT*80G;U6r1Hrx&4d{#YIN;br^%+D@d^KCNDkluJ9 zD;pcpLovuis?_YJ*WJxt=C>y_<6G>*Boi^2m&<wM6#QMtuWy`@%11~4S6J}4hqBl3 z+nrwt<qRB*W;dWt8R&v5T-)@BA8yz$Zo!2*z(l{47jVBrMT*otxIuibvB$Dc?0srY z&sxF824k1L^d0%7tpA312sE(mMOKNF2_4B+OV{GQ>m`ofsP<L9alQ1*>A0%%Z1(I< zy>tbxos;*<@ZJXAtNT`HANf1J-^2a5?-1!@^aTQt3u)!MA4)6VlVz+8=HYU_Q17o0 z4{3a9tcXwB+HTr!yhP4ktPx((mwL-CToM4VKW4M$eKGN0IpC(gXy~;5q`j<v>R#6G z-C6yeO<=Lva1Zd$?ERx<S#%Y6JT+Qn48x22h_Kj7@rU{i@d|%iU(g5liSxd1Sxdcj zUXe!ss)Jz4-|FV40lLwyM@C~H54u}VBQN<)mh-(@SN`zu$Zsk96#u1uTVdTAUiqL` zWO-Yv9KXXegh#ud7xA#aI9rvyz*SCsOW&Egk1W7^$+-jb1<a3`GVw0(zKfqa!_U|7 z9f0zH>Pndt{9?ddKmAO-XsKSh4ijYqGIN4$ai5L6LSyJ0T)1p(z-_Oh->>^&dLr2_ z`xoiMi>~+!TSTSoNOVN~c+Ov3KJ*@Xw7SmOBaGi6k+a+Dns4nJJG&iR0R;O*bZiac zMVWem;Wq{Vcnyouzuh7xg%)p?Wq!}y;`!9?4E*5c52M}n+Y$eVlVpL&Dafc)8L1FR zGa73l%laWEKoYHd3H-i!j%>P$UsxP#X2oe6&xu}I=kXV<^+iq(l(zVzw?6>1FD=NK zzWfy$eKJS!YQ5-nzwx!6wK-Irc$)GOG(@`3nD~om$0gmtkura&KRP>GFWM!ie(AdD z2cv#4*Jtby{o`<`@G_2AXc;?XHr}CMJi1jBXU}mlKs>eH(j(ZIJ6FVU6hZoxkq->n zOF>1XE&hth3IC361dNZ>#jXUa8!hp7Anp~u*f@?YCAv}?gItkHFv_b_k;`)}a|=gr zuLIJriYowyV_vjb;!xMDYZV*NVMy@x$cAXkW0gPF1@ouKECZM=(?{z?EB(f6eq`FF ztR9JhSf@u%{B`2Q6icJ4I10sc2-j|s^gCD&Z_VcY=h5<H5GO^JRwAYGdv?p-OTF|U zVSb=1CMN8W{obU{6`j%NS7@dKePD2#^x@o5{D4cp1@C#z*R$G9U6VMV0e6)pOM~}i z!^aDPh1-*%tw^zN&(H?2pZR_83OL9xI6E*zy7Bs$K;(GfUx{RWIH$Dv7A;XA<w1C9 z7E*EtkM~A~K7vC;v_{0|l1GA{NLmv!qz^ae&jb^?L>RA~jVt-0_#@aU{s7(q|B*KS z@%LdlIq)&Zmuuk2De!rMB+bD~n6_*j>;hcdCTD{^yon#1{j^5#6pWxZ68tTg3b<_& z{Y~69x<}OJr;Ow3=#Rz!osRF{Kg)n$YJB5|b1J09i(_Px6yr2TkDP+tC=Srn3J#^Q z4h#&r`~YQF@DzRL1`H^EH|SZ*6a6J0n&U?tB{T07h3Epv6za+NS@?81UY~rL0iV=( zrSWU&uBpYthTa$4KXIIz@1;ZU3mwiYZuQb#p)XBL9SjRDcCt`IhxzOncCVhbzQceY zui9~raUr@)HaXB@g2TWBdfnDgN`RQt75XsKJa&waMW0T`d+8?`=#v`nH2PpZALW?O z`(wUhC#@<Ogw?vX6iRVBtwQQ?B?Oj&C1{35Ak;9iE*E;_M!2#!=%pV(puNr1d;P?M zk14ruBB&@~+DgcFZ`(?{!8x#%aO)n@szY+xyeHeS;KQmN525+tbflf`rx$%?DecHL z?&d-#_pBA$UXKo6fE4<ozwBd>N|3#P*$Tz}OcnL}X;)68ey4KZHp{8pDNoY-r_F5u zKI|iU<}Ve~uSs<_P_#Ty`Z}oN*G9!t6bcRQX_rCw(b4{MbhFRnKav`u#p-kPw3kBC zAlZ2yI~<2XMxW0_pA|Z-d>uXQK~|FJ3`|1@@X6m$ND3_}l6Q(4w1X?8{fGyk(Zu1U zvclMEW_t5Atvw%M$=bF&qkNG%`fDfv2+)agkgp@rj5quU`%%W3_zo>dzC!cM&E`WV zbWJ$RXrMkkCwlv1kUu-bF|w<{<#wT>&9ZYPZEg!%wCR02*I-N>!34TC`(5rBPUbpa zioUGly5+b)(bBHDoA-i4KT3WJAap55{CXqF7C-<_POurHh#IOlr>ov<nQHYWG?TsI zyyN22o+5ykw!T2t=N2(AWq;r|wn%?Z<GKcn>4}ZX#oSBcXDxs7H~-kbv38MLaed8s zZkD6jnD6;KSvA!><$H9LGa+q*&Qk&WPaC6`zB~OEy%f6~yQkr#Q1<CK)TwJ{uLlW! ziw!t_ny-)Wp#5p3nAuZ@9-GvNU`rF<!8X!cL@zzdw$IJas8-7G@$gp&L=3B<CuMw2 ztV|+8yL`lrGvFGy^H$7NOI}k()g_Tg+gxZxC&SdIu_kQONYMkG^%`Ff*&$8^4r(>9 zTu1HDaXzCu&p+pTx%s!$8>^7b;c5r^xPB`sgF8KF@8XIN+G}@y*q%(Rf#r$F+TBBT z3`vS91c|g<jscYRJ<L*G5C5t-uVV%2#Yj=SAwJXV&X<An&+o!H6dXY2li3L|;CCEs z-D`yLhxo2*HZIDYoro_&l@u^Z$F%W=$E~m<yxAYc!}t{At>6J#BChzc%ls6QmAcE1 z(ew`c?~bD~^JCz+WQP0{Gk%lGk0Aw>GXn+YlFZP7K)AZM?kLgKabOIA3f0?=;LT_S z*517tN9M@daSiwZ%O7i=K<Q!2f0rEXx2=_0tW0nQ#Q2XVu}IPn`LEvY*#F-!p0BSs z7n6Y-_*ggEad{t!riWAg=lTpA#7gY`6WAE92Z}!9k|5)47|NNH^)}rgktuDkzXC;{ z=%wFG-%sMJ-II-#SO8bT!j|4HuOA2)yTsMlZ>X%>>c<^Y2xQF(-4ckF<@w=xz>@c{ zbD{^G=+AncybdAx1U93GHiRZe1{jB6{XqQ97)Pxx53nnZKK>~DOQq|zIue6abjCdf zPzRJOvBayqmIZQ)7x19P%BVLlG&qv$HO|jV)KGqKeTab&f12A5F#~<1Fih0h`T+}Y zmE%ArftN|@RsE@|zIiJWZcLP4#)~AILO#^J?>Cx*#evd~f`c6>j*bqWPYktM-t&pp z#hCz98R=u$<qBsD$J!%IcwUnS{KjPAjb+a#2S_iW^<8*G+dA^W$<DY=?OwX&WmE}q z{3*skb@Ly1E$2^)FWywY`<PTW`o@2SN+Qze%xOx0kdrlY<*?5_5WPc3lS><{c|V3J z7j_SUOI<vK6$>Jq%_>gmL;6ShM#|uyn9(Qx2LRyrwsw*HjdISU83VwYyTvTj0WA7L zl)UVwer0#{$?@MS6LNrbl*~B5T&VL1yN>Hbnf4`YifZ29tIN3olhf?je(cw0AQk#0 zD@L>DJLa)fP4)j3RS$uRrcc&>Fvqd;{@f`)#WlI6&(vV-kkv1nU-7-PhcQugAt|Rv zuSw33os{QxT%Ekig^%nD99>5$ipy{McR&pKt?zXjE}9h8Q}-ZYHy8rK4Xwdo(u;ON z>%t^?S1(;N9X9*MA*;kgu(p-QN*c8rDx{^8TP<N60T`(fSN-`4Lo#HQyjembGk74q zB`te;iE{}GK~p9#N&K^1{tgNz__yiOg;CUxRzwZwili%elEfK|9wS}&QVDW5cB>Ga z<B5%w9Bhu@QE~(!Hz*iWK5#-=t!Kfpz%_@a5B5S5EuD_H@1f6-nicT#KS79)Y=^R^ z6l<LGSk_3*EE4a)khI3lTxOvipK-kVEy(=oH83NF-RvX~=bsmj4dV-J&w_{Imx4>3 z^g}tWC4*qzEw5-&wFK8&atPG-E9G!ug!V<w{vmJ0k%bAxTyc!>$-$Y6mWd+<d8WI4 zQh?)wPN+MeBtZuv63!f=)skT{4-xQ0{{rBZ032uL7Qx810rX^__%HdP>_k(!?8G5v zCj!PQ^y4cW7o)tu_zpfpjxQJ@J`o?K&}aGJGrWLJv^c!+;jRkG9`hSGzYs85c-1;b z?Q5bczQp*a58J#TSPu$fo2Z=wC#-AOFy+V}7-Kk4-6ggJQ~pyw2F!Ltqb=C;KlPV3 z<4zu-&0P!T)Jyl=f|$hYUt=R=8XRoPaxrr-#uJ9@h@XS80bY?&5R$V$C2!*nY4{ug zVEWm9CW5}c5^MQGu-H<HX+sTq8W|?#Jnen>`sTDtLkOaQkm=X8dq_XP`x4Bt1cS&| z6U?6+U=lCb@`d{_iNB=2kByQ}<bW|soE^)a%c+)V1S1(&gLh}&=;U2VFR;&Uu}KcK z^e+b@ef-RULcG@Ens<1@TevsW-w!1T2WR{xS@#Qo{DW7r#VLSn^5({l@Z~&*K}#;> zsQT7f(+zhAZ=W!cASVN)r9aZ^AC#efiKBjeFn*-aZ%{tOmC}d!jk#DmgC1bL^mT3S z<+MgpLl1XrX|pzW1mBi^iK8WQ)bG(tmrNU|#)cV;EYn5J&2ykVIsPL#{)m-^FLoVx zS09Wyrv|)q2dt~ei3M`RnKi~A4Ib$^H#)SAqv6lmic9U`Fc;GX2THfya+VzI*%)lC z?rxN`-GI?*HEPLAS<6qBz-`%J39KjX=;ukisTX~q8wtH-H@3`nXTjrE_kQSNf6@AL zqQTQVaLJzpOA9=C0>69|Uy5`1*~8qnsPH6yY5rXk@$h$iHkg|n6`zI&)Ru{Lwu?jX zO?(nw$;pRfQa%_jz3@_^m;h6c`0NVs*TC!HT8N(Z9-i@P&QI~j*bG?_!+XmvqOgD* z7%RuH3^U_L0c=)D`Li-m+6-4nbD(t9be!Yi_En1<U%;$WFi(;&UnMIkF?2mZr-mQ$ zg#P`n!PW5ZuhVg__`0>yQJ~KGkgC$ZPp7Tqf3(ldviLGNtn3doHSF2wlq4qq^!}#a zi(i2|deM!|+}eqbc>FAr=b^w}O#;KuuCvzT*7`{;gd4Da602YbhWdm@<z^+~ZSv2@ z_WYGjRO;)W>RInn+(xG6h*%pMqp7nz5Us}6>0816+z<^N7Aem&uvk&6&d@O?pMXcu zsi`<~u}NHiJEV;&2ZZ1U=DL(t6KcnN56G1%>42{wFFD_MFs=|ia2=WAon6DGw*}9Y zyAwEQbqMHz<$9YQ-j3xGwE8x^Xo(n3u0U7S={PCYPBa%&j&wLUTfoaP;qOp#^U1`A z7C#{Vc_r=S<6ZzHu2<zbxtHa{BAXrl1slLqV!m8AInK$|L=lzC@v6e+c9pnA?k|Hg zVB;RkZb1n^p~OVV1zDc)@jv2UOW%BLp$)46Zc4Z)>$V2HQWqkfTGrOUu*q%HaNigY z0E+j(s{Y8(0@{-_6R~oEx1k|4RIZ6q>%!2fY?1QZ+Fb#Cl|BBC#BvK?W3yO!8#O}j z1jo%>Mg*{ofV`H=2wc5utAhrqZydjse~cIK!O|O`M=pU=@n729zd&+u<p;JeT@9K2 z9yO;Q2*C!DX<V{C43ti3o2tX*MQ6l55+_*FP?w{lL;t7{+pQ2gH65`tC%`dc?VzZ6 zBlj$4Kbu%$<F!Gw-AcS5Rvh}w#%~JoTR;hzcoq|>e7KxQ6NgboyoZedOrm*E1k(E_ zr!NMQoPP^P7*pByBLyPWB2e@(9D&;0W`Of&{VOo6x($d<y9KENZaGlm5<RE^7q4q~ z)uM))`{F=MacKg|K{Rp2KGHZ3mbQ*z9Il4Z@&uW3LYW==TPUtE@mAwIH}Mzqw~cQ# z@tud(J&9*9&Z-aoqUGXlEc)0Df7bH&&1BQ)h|@s@@$prVWDRkg<#Px$xgLNhv-M~8 zYaR9HN-0Z;scBa`>i=_f$NG(q`tgXny)^poz<sT>aNkbRADY}Af_JpJ^=Q<e^)-iJ z+Sw+h|7<P`TwHaU&p5?N<`Hf(yXg5mlSb7LA8Dm;6BR^*to2G4bp9(ynJ5J*e|=?2 z-++5w0E+xi!y<^nefrT9?FTD)QPjqj@sfCWo7C%i(TaFG>H}02RSs<yU4m2eg?0V} zKsn_%{DW%M^}RIXqZeoC!^XEwSIf~mu;`+tBYq{<HCTXv`+P<Lbf)c43hkSc$0q;4 zgDGO!jii7q>)75Qoa=J!IUem@!uA+fV7GUSY>zYiY_@l&9>qG<G(54)klYP<Y(*g$ zm%!#jlMg$ar2HC{t4A+_3vtH5mMi!OsoKnO06j_>XlmJS(0A=iD9`(}g?nWs{wdYn znv?)D)s6d7HtC`3gQ-N<5_}6MSWOM-=$GT{gkRilkAAfwZ;9uyT1dPJ`x^dF+5Q1~ z^t{}*a8_30CF+fES$kIESy4IH={>=`H2dScf(P-|^ceQhOZx^-HakUN=$IFWHlz!z z^j)p)39@HoKY19a^xe=1+1G%~@Mm3x1*h1bSPLiU*k#aDp6f+_v$?uaz!EP~e}_jj zw~%fl+0=_<SLnh6ks288DI5jnWpg>=fX$R0REEE_=0{{dqGonNtDR0hr+@MM_UJ81 z<L36n%c|Y*h-wLc4QZ0<wpLq#FA{f)Q}3b^(i2al$%E8>3=IVeqPH<AI*gyVF4m6o z7Ar^{zkv%bH~OO^m0OiOKSczxwuyTYg9z`PloA`of#gu7Vy_}K=!(R-MVoe^{pC<w zdPm$>M|D4p`#ms0nEz5H#Oo_^;smr^)I8Tq`Ufx}so&pLmJL&~u~#nZ1{~*?ZeLgr zz1TfHydq0%hvn`wK3;_N00hrQu|3tpW$1dx9`1)8!bvRM2I7lacmK9q{hKUQ|62dv zOWIpj$I^QwHc~Yxij2+J9v8M~Z>gwrwPj8htG)J3s=X;_4@+5dOKnVWj9#<{G~oi< z_-4osf6I5hXfj^>IqaM8cZhRZ5x~wyFn|b>-~lS;feVd8Z-FOv&K_yol}!kwECJ~c zR2wK0Ch}A7r6{#7Z&&g%(%Wl{%u6h`=Bqb0Qf`z~8pmOu<Ycu^;#j}R`A9C~1_-4u z4#bpzLovC=UxNG1v43RaGYMNbz(=e79mlI^PdZ{XpIL~(j-HYiJcgk$=bC#qp>aT^ z&0;QFezCt5d5H~Hf6Wad;x|R&*XG90BGXRs<rFNe{%CCkRT@`vBj_ZB;Qdf1hg}BE z^Z^_sDPbt(4+H*S|MMLFE_kAwrXNbQX<>o_z#i%3EbMjTTbNGYT_jDXqkkeDcGq3* zglO&`y~`<zrF=Sv`DyyV`vI4QxwL1j&bwIK*Gz|U9$Nqg!$p13;Z11xKB_^IJ#A-% zH@wQ7Nkl)Lb`v{epyMNcIYjp7{mb?w#piP%W~JPLX6z#uRHaL%?+--91c{D{mm32V z@a1@XiB%aaz~A9xCwa=0e2$zIh@7X^h_+863vQ}cL9e+sy?%`aE4sabW}e~}^zV%e zWfR{NYcRp+w;JYZ!rE_h@mpgG!d~%P?kE2z`R&ddyXLpQOaQ;#Fu_ewMNiDH=+FmK z6YP)_i<y&4t)Y40BTv|7oA>@<Ye(*-(a!OgzNXEcO3#V0TJAZiph??I*Na}&vo;`H zP@C&zEi4|5@9AGTs2;(a(|#&X;9^UP;ecXCf@6kj%5ImNN5jqbgjQF?Z*lRX60)hd zE@gMW2(QXxnEY779CQ~#A&L>2H+?K@IQkg4^r2IcyRWhxYS2eMMN5%c%5#C0&ohCn zo%E2X{U3T^YE9pV7<2=?9@l_0lym;*L9lxc0zbTS%a6?l^r8<dqbC+89>P3kDw2VS z21Ifh(_<Gf;(`Z6lp6@jEngu^P1VQ37v~V=cAD}UXtlfe0o<FXA(=&dD}G3C%%_}* z(Gd@h!HB+eiS)7Djc2?%@?`Qg7f+Kg(&ENDpn~8<g^A#V%giy`#77^I$Q#AQPdm<6 zBQhm`)AaFdG(kKAkpuk<9yV46ir|P@34ctBzjWpF{^vyd--#VG8SjR9wXbUbw<n<+ z5E(!keb|V;Ij1k|9kr49HuW)<F^J%R?pe(*#F>k&l?j%An<0!jPG~`j<ap5X$E5j} z@!Ht}3<5;|ST1N{BE3tevznAYs{QXwd*BT$Uf^w(?Z3DP?b8@RT+AlDXoG+75lnTE zgDyySw(+6jISKGHXl7+c$;SLe2u9e|%MZV=EM9?P)t>51dimq&<t?rF&;g*XYxq~C zf1lR=NV}Yfenncx*eCcvw!nY%K28<Wfjt%zVCgGdN#O}1AWTA_1XA-LxhVuw&2-dQ z`p?qGE_ty@+C@?!TjfrDy)spd{SDgDjOI4!)8Y3h+<ja&2-a~8Co;TE{C%|Zccg55 z%HGcyUw}mlQG)fTk^w}@E)DGiRPvUJ2{WA*Kh_7C?$7A>eYN%d;c4Hi{{8p*`{Zr^ zS%0rf`##pZU=vQ6<M<ZN6~re-ozWs(cf^|WcnO+We$p?}%N4%5b38CUe*1T<xe;fd zt?!RSaxT~W9D;$jy;*1v`U5+fMPLSHAL`no1N4?=*c~gf^sJR|!-uvw_mG{>roAaI zakB6^DZRhI*MZN74COo<F4-0^Y8KOf0h!r1cml64VF2?!BK8xULyXKURKH$Oze?1v zC;5vvihX<{nr6IJs{{Yn`O=9m%E#j<two=wGn6+u%A*;|TOIh^&`o(|hH`m{m^HrL zl<%LRocv?a3xpDfMi^lQ3V4phgW?}&c^sFM$?{fQi-B^Em$Uqd!De~0D(84P%MGi1 z9?DrDMp6H<#e49^N!~K@FZs{;{X;X&5vo@3IX=$vA`5<*D(Cn(%lld7`BwWES?wQ? zseO)*^ZQjNSoj|<@lP**!YXf8<s2X9_l8wIFLU`dR(TD|)rTF|<GA@9jvE^Ektw-i z;Tj%`bFQyL{U9FI=A$T?mWn^>3A{paRhRHYXz$>ahyh)~YurnCx>)ggSNQ6C2`^Vn z>k?jjaPROf6vuT5Z~k7wD-rL!))l_v_Y$5i?&=a=&R)XH6{mLzuW9Pu((m)tUEw=< zFX5Gl2fKuq=YR)!!<-dznna;5q+A`<CJKg|lYaGaP7x*bL#Fy)50mx9Bd9J#+usl2 z#b}gg8R0Ke^(Vxy>lys}P58qt_+u1&+K1fl!(pK2^;A5OoAOQNByyoFaotI9f9{6C zF5E5_4VH>fszog0d3m)SotY<2Cv@1#?D@p_`eWI3rOydo{93LjA+JBgRTXY|?QDM~ zaw(vFMBYl{L^MG8xZ6LA?c=^{vHVPDgICK2YpA(pdw;gtyRk!iKyxiGNj3G~EYx&% zi1cQ;qKfLq#TK-DUbF%I?XaI_-S0+--?QBHJ?bd^$BQhm|NA8Ux;=`=J>W0y1r*K` zFmVubU?T1bSCz%aRPt=~YUU79Ub66(GU-yiVcxY)7bh=X6ZhhZ7~9{9BXmf&wqQke zfk#Y3L1pA>!P}z(#_mg)hYkNXU0j*<9rmRX-jscY1!MEGTr$jRLhQA8j?cX-ny~8_ z+6UWh!4vTmyoOIf5IIZ7`7A<0s;VaJeDHXdfsNO?X0H(o{tZy(Bc9R2C{k`CBU2{! zmuD@oe*6rPUn^n750wr8pV1z=BrWHYcQHmMnOJD?n|Cptwame2+LO4(O)xvH18ne# z)R3crdE#o6C+-(zH_>5>*0Ew{Z&XGvoK$0-a;5Xd;NM}jY+H14KW?{*I24`>*bFv> z%ZjnHvUYNrCj^18EQgybwtbA>W!j=|<V;DnHaN%AZ@fDOK__ZKT!nmO7=twqcZ<9{ zFDCQ!fwXX@Bh<4ZhKuwJ@E2k;DjLPpOZFg{0bDB;^8!V?$NMAGgr4<2#&csJ3md(m z1>(9NGu^@RfDvj^>-$+vxQGueVbzW3mR%g7L(a!EL)=`U9vz=Wm+y+>r3ocY#>cYe zE*S~36M)2KWDr5~^6O3FU%0<60Ny~KMB_6!T11Cp#e(3~k{Q4VOz9bbce64&Ju5J5 zN@`yWJJIw$?}yM=*5SU`itJpO0@U0aBb#WoqcPt0t}1qsSNL$BN_;5ZN_^1UJoYv+ zYo22eL&xKwCOJv%CLr`71c!(#dziHz4K<33uvAX05ydx1?}<M$9F71tKQxL{Q3qrd zha-a!g9<(wlI0O=jwUT);vM`T-R?OK=?~)41LNvW@JaAgqu7o`c48ii#lcub(8<j8 zP~8sQJXN7R(2PgvGF~w%-(!rTlx7MXye*`(!{1`_Z;AQ0O#Y>Ki;dFFcUAJQ(HFpD zqsH^cRmP}6u~F50Truh<PwG5K_w6$^(SNV~abwT}QzN+u!BAyI0H)kA<+s?1n`k)2 zFu~|A#CS{?NEY2L!Vk-Q!7g|Rf}EZUqGpEmhYqkb6V@3LRt>4;f`_B3>Ua!bcI?~v z9pEj-J&o+!ria)!36IeXk+NLKi(-8g<wcr5!I{leu6Jd9$fou(XMNj0l3rgaqD<=n zy5aKyXG$g7Eq1RD9)uWiuMZH$64JOtF!wE!YZD&|?OLaA!u0RU!RxResNDXAXs@|L zd$50d*52>0*~|7QhjY(O$FD>zL=L_l;CIU2wpW7osyno&i;+ERZ}H>~_$mG<1KcWm zyq*59^zqK@&mxcM>>FX=yiG^{)}=h<3jdg!Dxp4nnQRruqG!tAnbBWH_*H;EuT%Kd zUBh2~wF%!fznp?FHD}vtrkW;V<&7QY|KaBRf3PR>-w7+L11!yib%uo1llkw2_v{Vn zeOru+8Rh(cAjAA`wa3@#|Licn_WW;i*8dOY|AG$unkyb$)T8;KUDbhKyOuYc|DN;G z=OgBS&)WO_m3!G9=YLg)_Avi(&cn^=8Rgq4d)pr8|GW<EVgC25y~S5_z%MobJ$}$l z>W6=S{^t_Lzcv5SvmVU<s!ri|H~%M@@U1{?r9~|L>M(+RJikXP<*iN?`TCnM%}hUc zbi|nlX`UC58x4lpHYGNCfAu)h86DxNZ4MrWJ+pl5S-pVFqO4$-;50hpYG5&D%e4pc z`BV8}GYXcx4<T;Gr#w@^cyN)!bt(cv`C_BE1g-P!(RiD9Q6zp&BT||sZ6P)N#eFmx z<*TRV-HqGD+ju46TJgW~6vD~>CjJy;Dg1xj9sVc&r})!Bn!+EgOZ@Sc`2Q@0KkiMV z_!A8&{N>$_z#p$H{1J>|Ns*r8?-aZx%>HTaV_^J$)E)kV|5N<wfVJ^|5vemJ{&-9L zt8M&SZ!z(|H--N}>ebtLW#MllAK8oXcj3?Eohkee><<4E{!{#mT=-vQ;*Yn)|MC?6 zxEf53|2--E<$@C9k5>|Zx&E-tX>Jvms@~o&>?<>}!)E3M09fZ)zhS0W>nHnr$JS5k zd*p{^`fi%t$yR)y`VA1>uYb5*1itKc{k1}d!eXLh*@fj6cg!F+I=64k)eSQTTh`4@ z)mTotRyVV7iz7++Sk$DK3!c5c$pGt^4zPxpur3BH+rN_rFMWOE?A@C<J>%}(#sgLF z`pVv=t#8)a`V01ry?@xbebef!Z|^Ur*S981x`t5e4X$t6I_P8Uf56Gm6a7E2gFf!M zJ=!;ARUPe{kv(f~@uhp&9_^ck4(-AJ|6GsoJFjDVd#QgjFxra~!4~E&aCF4W{kxGq ze>^sm^vUl+`%1oY>fibTC4Z=Whof~$-$(Hd(&vT=w)FWW*%edg+PiJ(bBd<;^&-47 z*W-Jse>35KsSE%8y2HQVKga(V2mWYX;*WR4|B@8`mznq*Df|yG@y9C@f4BT~Y-Ok9 zr|Uj#$j@Z8o^puF-&JY9$EW?SPW^VbH$JtrOSMON4}smR1a|6EDNm*Rmt`d>eIS3A zrTy0BZ<l;?t}h|drK3&xan`3gBKko`Gud)^J{fGk*&w4!Cdd0LDjrzhi}!B>Bg=nf z$>YvpKMnntg8dAlCET#1ChULAb?C=c-V34O)X5B-{BiUc4O<CWOmq<RhFAHpZUI^C zXOyB%u!uZky<D90kW9@pP&cm2hYy!17NQ&J@pa^>m8goaS9pYXiUM5Dfh!hdlvYeU zjuH|m@rr5JzP+EK$@h1W*<xb(5x^`mGhZ+L9#P3MsN$9b;V}K}{$$GK;@~6U|6C#U zIeinjW6i)}rZV`rN9H&JMi5^ieHT?23YHgkR$i>iOFEQyh#yh#%2a*5Lw&Qo@v^+C zS~o7l5wWVt_{(li!CzcdQ8fd9A+j1Mn(&Cjb2W@30kmRA@0I_K_%$@hQlQY#s6GMI zhI#6d<@41eU^gsKj|AVO9tpl#KBj?(eWCi>uu>Ki{#x}7;jdSZgx{(j316s3!f#WL zfZx!r9*gnlVaTO%VF?~{)MFVQbJe4cN9O%Ng(`F_Up|g>#AiwRHWbSD><=?|qcZyg zzdaw>pEC8x{xCr}-m*W~S>Pl4GhRKiKQLtYmi?Km9@(EM>XH4Kp&r?v8u{qxkCZpo zB*84QrlvJX)MRSn^zVU<hdMe4#ky7UFScY%4?F%=n?;k&zf;V=Gt}R?HT;YJ^q4Xg z)nkKvC*L-v9_OVV=cgVQq#m16kIkvam8r+IsmJxH$JW%NNIkZt9@|ro9uSlNp}%AV z^O1~TK9Uj4$NbbI$KHI)!8ac{_~v6->XCzQzUAPXj~smSu{!n0!8hM>@XbdKzWG>V zKEe{`6AbV&wZCGo4;YH$USIgMMPm!VkyuqM!tFqKmTz+S2%hDV!Kr~HJbEG&-{hpW zmQDRde(SD$hyA@HG%Kb5I_lfJR2QVa%}@JXnD)Ck?RQD)x4VBe-Sod>xl7-r5RqH? zroOpV>ag-$(X1Y1X06nQ&0qFWs^YC0EJJu+dq^{OLI0_gC?XA<n=F`Ad2(=#U_p)| zxwECq(LhSG-TX_b*^Y!}L(-z#5$me_ujSm7Rj!<?8mQOWP*IOg#y<6S5!gXZrj8`V z#2S_u<v6cm>b38)RcDVyXD$1~H9ije8ByifzXdAdUEIEdjbV8<gc_F0Rq>KKZ;;{q zlpg6L??6Jg;e%2E@Xi>m`>W_MD+5^AU#{_YriW%c;u5*LjvUb8B~YjC^x9=I9-A>3 z*pPn5v|B_Wx4KmvL?8m%$#Lv0vY^wsua9FhNENk=LFC)TQ~hXfGE`e+-6!c?iEA7{ z?-5HpDa+S(t4W93Glym}c`KCVqtgG`8|(yJ1;Bx5HSCT};;FA`cOX44=ok|xqePAm za%k1cX&;DALb?Rl|9LR1EC=1y_~C$Vj^&&WxP!Z0TzrRP{fqP8aRK}-c>G=Rn=H^; z!MDek)Dpj&3czMWNOZ*7<N;lK8W-keLcG7}RjeTbR{uXmc#hrwKjVk2WcIwT=}7wh zEN3i&<VU%Ff#XPyrr5)ZcK?dI>)(K$_s{3-U*EL;U2QsglDBv0UnlY+b?;AK;m_e5 zle5&ZuN%(d+wI~>7t99R+=ir}oYhm3!2wfE|7PiIHK%_k^0kZgeV6kwyE5~9q?JCT z*_>fA&<e*7WzQ_NfOChicKeD8`kH9Nb4MRgbVSYf-SE>@12XcHgVh@>e!3ryR-2zL zl7UFvHJ7suT*XdE$=O?6D_yc1#g9CS;AhUX*NaJcL*jOEJYHGrWgEYa$mx-jA)_t) zZt0Vb-@Na-!SAkvdyL<6T%=j^eLB6Wa*dV&zq_T&b))!+iOeOp+4v1KUyZ^m6F<oh zu~-R0Peks%0E^rfrDwxH7@afiSUoblg^QUZcz4@6nvC-9HssVgtv}W^NU_p)!cuYT zu{epdtT$x{<Sk;iaF|9NLwQ&7g%25?F<rx3u=+rrIz94>0*V41H<KZ{u8DSAAo7&F zX^i>pAjJC@2<G$EBmD~krE#sc0Ok!OvbJbxrLo)a6%_c5Hxfrlc`*Fg;JAv~9a`<- ztW)}d-`J?tegTkJRcrp}<yqz0!rK0&D8wDgwauY7RP0R|cbuo3@5SwGXQQmFc1Q39 zqpiIDIazi1v7sjcORJ?R3P9%p$|6-1FkVGvt@fWNDXZC25!@I5o~PAq!*4W)v`8NW zLtcE+3wG5WJgCNT_N=y9Thyl2?nXtP`^u@PM}{CIhc<AVXkYI|=r{<sEr6)yLf+Rr zl>R%cSaGc^F8Skyw7G!IW6@<i*aBKE2UW*=>(^bP)oGwsB`;!IrdQPCFsZ=tqFs{t z&6}6eWJRGqtfCk_IztPuVejjU^>9UDR(u82f$bknBTr~{?OVYgm)GAf>7p(AGTv7P zBH{9`iXq83lZ2|cBCodS3wE|JfYD=SpiQ{N6rC=_AzKV%{9&nc%4E0`s=_+3Mj&*3 z?OR%H9OYiKnfSkC<r;Jnqh`Wn11`8rB;1LzJG2ujP!}hfc(>wY<XsO$jwtYI_pgX= z;@K!$-%5DoFcTKWM0S(BW_&3VRHQ0ny>7)KdSAvRe(-Mdlr=LuVI8I}^dZaU%jAqc zj143m?P$f-;`fZ93cp;?fKPEeuZ80Z{s)iqrUmsr+xs#Y(9<MvO`%WowN^;VdS3)y zN$*RqzxLW|iEGi1=-F$B_tWNvP`5mqz0em8p1sy*w0gB?Rt!_O^lA5U8R5%n#qSzG z)b8P8gLQU(;x+#1ZQ0V>OfLovF|0gK3$H{uj33yA<+yv`ZGSkHg&JBdmqg+3lUnUF zcz}Vb)h4mOSTSVlkY+C^8=UDY5nAmBC=3i!NNC|VWL12;5LM;J%r9wdXDpykTeuYy z=>8&3LkxD^DZtGi!Kr+k3ADOTP`#`sd4g7ZAD+tVUzWA;`MYtC9Ajml;3{17-izKN z$`S-yh!slwdRd_c-+>P-?CwOlwy-cQfo!V$Z)W*;e4HBcA@396y57LTLN0g&{WjKc zX?1hZj6a<06`JV{Z-ZYRXAgZwvHl{P2dt!i3|PR}%E`#&IC{U$shJ3S9B1+Z1tnyb zVjr2CE3dp4Pr%1yrQGCNGDwLLBeN9yIE8#T>xHW;P#E7JXNHe>))vgeH{qP@M6L8I z^_Fm9eM``U1<<&eS}yXERaFwK1Zv6{mH~2Z+#`Wn^o2wU6u`gqMyhv&3@OCx47@lk z$ezeP$=(rKu~ruXkS356*Vo1Wg(+w17c2|9?iYc|ZV;HnQi{J~*<Gy`>8_H-^7u3f zQR3YLc*gS1A=dE@J|Avye}$LSEard>c|Sf8FCA}C9v>}V5u<oE9xZOr?mQm9;v4ag zrSJTPOylE^zCc|@orfgn>lnDqi>+y}1tP(MDFIyVFoWXJwU>hv#$r0sLExgW0(=cd z;}ONU9`zL<u@p`VL$J42$<g<oe{J?;?RbypS`2@%pd=6t6jX^zc#?4uKP4^>1%Xq< z`k=3jH&L}f@3-1(yo*EUxRxjg?UV0|j=CcH{QYRSF6q_uHm?yn2nt=RT@66tUCH2u z42s{^8~!dCoZt-~(96N!$Zt4kU7#Nh@q@?gm{W9Ct80=NxYFO6`XPKkcH(#RZ^HLE ztSWEnS(v+LCLV^|&Z`*mDPm}IZ)v0u*FhjD#K{<Xq<;a<Qu<0-wYr(WPF{s&u1g_m zSu>WrfHi{y5OB@vaUbeA=JP7xq1B#=m&8S@V<0UXWsBOK$ML-sz==CW{@MGg!1h?I zcm(Vr4^8sU?4cPlOx3c7j)nPS*+bVH0ek4VU64MohfMpbmG;#FTAZE1Yi)JfS8w-9 z!8?@ju5iQS-MFH<D|opdIpNhg;H^3w@D4KJS^AA!E7P4owYm7S1RfN!u(*?iLsUlu z%vWY@JZg2jF+)JlTpkEV$nn^MVl12GA*>+}ag&ZGvzhF{z%hz9c=1JKOdc~3tw1&2 zO7@!@_8_609-f)!3GNT;B)b6Dh76yjJ=k1djxWIwbc3sHN3HGyM{9`Q9$RpfYOPQ# zMV2SF24|{ltyug_wN{*JZG|`qt(icry+y5#-Zh27?GStbI*<|PktrqOMiVHckpx;M z`YWJiCQyc&i}esvCeU2;lpDcX-F_xeZU)zv!(5P<FtC*yzgpe<oGG9i%8|DW_F#Rv zU);#7d!R9rjASwK^f{w374!%?bzy;Mc?|aj$C@Xrk{j)k!^EFiLUq9#CUJQpjIirU zR)p)(M3!~@0GWnx{6MSwyKI+qvfi|qZ!mgh9jVL#ufz@y(&}DiEvPiLrZUaSGMNVe z<`3e8aBY2je@JUJ-#LZX#*YEdIDg|_Z}T^EbVJGDyCmu{Lzk*YHY&8?4YuDiDbPUi zyVp5+9i6W&M+?$VB+KtG%WYI@Pji)DhVuB)cqN9OwJ$9iim+mvM7YqWbR+J)A}p1F z=p+*$T%(Y6D(jG0<0w^QKW7cJ>wp2zoDUNx{+jAE#Cl9Tf{Dm{GjJ|#66ftiLh-sC z{IOG<Eq~x35=bdd!w*sYm9)Cd?!|9KztLrBAbx7TOc;!=f1a}&8(TMB-wS_Z;tc#w zG{*<xgTx~Bi3Nn>&;5q-GSQgWoDdFql|%XB;pOR_$*b`$`Eu+YaEG}byyg(fzi(Xf zFPHEZ?Ct_ynG4?A->2XmN_bbe;qhv3QQZ~1c`kT$4tT2uQ2v?ldM5vd7Kkv&WQ#ve zbH=l3bx*-iG^g>P`tm`JY0mgns2iB|X8F<e<wu+4T>CKIQLD=~%MtTvl#e%yDP0-1 zs@1)2g6Fh=)6pSa*C9JPrvkQ=q-e?$H}i^+H0e45DF%BYT^Y2h)s1qr238(haIhs^ zuQXfBx20=u)tW=P#>5*qXk?;5>B`7dt!{%YT{*J>bbta{B63ZjmdGv>f88iiu%s&# z#0qg+3aAx+s?}X-0wugdAgXoROOPix^2I5)5XqdSKs38sCB`bqu!13KrSPWYJ}L#9 z;p4e-NWPWwup$>p6^wHDv8CXyB0jQM3PK3(NLe-fBLzlzwRj%6^xz_yq9pSb>_+4# zklFi*{pYzP^GrzQsU?uk`ik<KI*4ZO9=W7j-C5=vTb|X)`vv5%Tf+KdQ+zvx^=bSr zU0BzkBE$pb@&&M7opL#~j#uT`V0N<{HYVjXjd%#KH}LVFlu%ad1-HCD*_PMJ9I*64 zi`|}LWb6Gf`@L%STP&EJ{dzU^n@Qos?{G6<oX!qZGS@5e{atwPqFgPV8kSx-L|kQ- z+jOjLa+QxH+{f@r98to6l9>4VI|$&7TR|{&e9zPswhH(WmBawu$Sx55B=GD4st8*F z$nt|_d3*&sr^+#hm4cAvxM30Bud>R~>?|~EtA}Fvu`1zygGNY-W8@E0R}7FpVAt~O zCiTTWco7fahx~^+;ZJ}>oiO35UQ~3@8cr3ELGQtZhVRYfd+63r%x=l61OXwj+6`uZ z)K+ic39?|fgNBKBJG{<9-9+4eO@m*NHNFWSNcEriLt-V?v8KITLit|vO&9uNy-U77 z27PJipLj0h`_S!5|NQ&%o#&OhlJ8~R$akJ+=|aBqSW;K={i|rYe7|o)NBKVS=RK3} zJe1Uxe6KTGOUd_RRBJBzzWrw|`OcF^UCH-i6KG1luX(Sde1A9v)H+_&t$csy7wPgn zs351w_p?&4Dc`H*kaQ~F=gHy>^8H;VG|VX9PkQ+Om+w#sKa_l5)RI}gKaTfZ$@ja= z^3LS@RfH?$`|zJA`F;=$?Bu4N$oC=%ymR^9&rzO9zQ=KWtd#$d@4wyQkndFqhkP%W zKTP?4y8Pjg@5kbWTfQ#^B+B=h)&Hh^zrgI)|1I)8pYna)_Acam>&H(2#d7F3OTPEp z5AuC%+_k<aB)qDw;H`AQ3pwDuurJ_cyWx2V&(jsWdYAq=)&cJt!g~(UMzlXH{i8CN zM<1exkkJTpwn$eQ&aKn1@<m=QXhVs^^HN*D&8H#FK5UKAAulfY6l}zs+*gQ;piaFt zca#9qQf!@|6poXTmsQkmt@jliq17$M8(;nH1xK#%6&$6O=qf88jJYFTtU)ONF-6|C zv5aom9N8Da6WP%@$vu1a?0j?3%42KrUodX8R2ZMP#B-mh!6%xpMURf|WgsWM@69sL z3O&4`cc5r<MeV2hqzycC1v6RZ45uZBK*G|c(i`m4D%!YjDfGy55+k@2hN^4_^<Rd5 zrq5YMI=Gw)>>s*+eZi5$;V9sMG`(j4Wzv%?<rxQZ`vB*Ab*wVJWgdd2WAO?0)?iF5 z;v;G$-;8geL3hr{&X{u*j}nWu(;t_QTiH8Z-?qE>r2^)J#eYT)#`m9}yZEn-@YZhW z0$w4qqNMguzrlW?1+SFwYTfVz;nj2nFW1$-#~kqDeF1N%8=l<XEtc?btrBt<>ZRxB zPJ?3h=U@@@CO3Hx@36^RrGO&pAeDdGw9lk}v^7C|yMpI-l6pFaC;g)h-NJJ_Nf*#O zhtE1g|D=DktXp_)Cuw!(@T5PaZF6_{x}74qox_v<ka^w0b2~+vw{(iHw3n;8h37V! zr*sZa%4biv@Z3T=zjJs}J}=<i=3VlOTS%{k((7b=rF^dL7M@#3*K`g~%7ff);kkuE zap&-)JZR<}>0RRM77DGKJH=PZgDKs@a|?xr4Dh_zz19}}1eb~#?c*wjyoD=+;#t`A zG<F7f^Wt*crFh4Q(VLQGHQ&#gevH59i$Lj{+FkJOVasy~wgz7xtt}e*BUKR}&HiU) zX-n|X0MvpJqkMkUU;0I8S7lL4AZul1*2;6E1wYcm38cx{oeYlg)#pJ`;bsv8BQlEO z9&TItqUR=u-~hzJRsL{G7Rra`l-1v!gHKv;^ZBaK*6=nw1BA9{2eT&nv)Tv^4xiIJ zp{M=f%~^i#SB(SkvjH3n>+uAB$3!<^E1oAKd_r-+CqP_>b!zBI8I>me2nf}P^JWxl zU(;Bh2y@@n5OJ=XEq??9Un-5|+)il&wHWGv4Lw8@QUPNd;nISV;DkzJ3ociJqO2@h z25DS5>9xwN7J;=&lH3y0i?$=9sjuiGeG(+|TcICEvx{(FXDZ+a?aHGJF|q$O?f3>& z6Ynd(NnjEn5H#TeXnz1L60WaPn`3~(i^#BB*~X6IJGuF|gxxG;hx7GG!z!cwv5C1| zEP<~^Pk}Py%To4@ywhxHpa>g{$a%}8`FW91dB-lm5Qp3IgI9&yb1RKEwA#Dz0$~QB z)8N{W`Gd@a@^VX|0a(I@zWqobxC=on+w86L_|cQwd7rJe2+%jML$_Ytj$1vG!Iu-S zrckQn?maIkWvs&=35{Qjj^4gM&6AX!5g&%HIev3uG|9LvE7~?BlQlC+5Naf2R<zpR zqXZ0D;qjJ?yefDp{=Fi2A^yEatK){EKm2W$c26;lF>PUGmbc`dXYoNW7r*Yh4^Jg4 zwL0G7C_(7q<-IDSx9;)dZ+!(LgDR5s70LJ)lBYcN6&{o#T4Xucd3lz((NBBlRRq}r zUD?B<(CGj-IggSo=L4F&AC&P@InpL#q0=rp3Ej}@Rx3OzJtZx{2c_Yt)xC*#iw5H# z*h&(@j}|IC5RBEoprl2sWh!Wi;_tHy%#R-6N5$4hFkHpI{(-MbD$qzF5UCknfY0$> zt34Dy&96Sh<DwbXSLp1Y`4LHGHN~(7v+`nA9`C4po3nC!K8uN!H1Q-YxSwOJj9-Bg z{9*3O6g$ZLRc{~@Iye%sBoH7nce9`N=%om+nzWxd6MSt9R<mnqLq%<~-*_{q`;B)0 zi;TYEe{!C;`LQwS-}$lLvbnb&?f*+XYn5KK2J;h`1cqcIBGp@;6T%*Qd!UHdO)LMT zu`=8`I^13sJaf)Ro-#;Lqa9qMABr8%);4&rdmUu?J8@~`wrsW$Zq<+@2|J;^y!D>Y z=ZUBBP0HVii|Sgo^;Y%zq8?iJWo5JGr-|@Y|Bvs#I`zdB5=9X<;<*r;jtkh~t~Xur zc~B}s#;IY$i8*_$I8Vyy#Z$l=;<&e=d5xv9vK;(^+1;#?I+f?DpXGV-ud!`Kc|J<Z z3)N4=&oQl3IT@U<OVsP$u$E)xW&ClKfi0d`xh@N0<yGciva2UnUd=yn?0dxHxQPK7 zy1=BHkrYlmk4<CQ;Z$GgV{U+rE@r+fC$R|QhYXh4h@^uF?3XVUt$c+geq$BGH5ETm z-Xi)@#aA-TxLQ(Dh|k$lkM{9_+^=U8&~P8tgTv~_7M$r=So#WPAmk+b9rO@;u$Q5K zTvFCz+USuRWSHf`vMV^FYn!n*<%Jf&9>_!ia6vzQKo>xf@u`eYxq4PYFHLB7J&C;| zib{Xv+~OTRZx%#ABVIv2CJw~>(H7?J@SV@MOZb*iXQfL+aa>?8L(XpC%a}_279EOI zJxu@RE2!qSPBm2`ejt7T+co}4V++Rn(di;YsISHDsV1dv-CF@o|H>b}y&w-g|DD`b z<EPl}$wMml(<_ivV+Vpygt)Dm3E1Su+3kc4Eyte-C&9ill!dS0Xgrn4i`!;s5`ef0 z*I4ig@aW@5)KuZQ(ZFdQgw~WnmWao3k&3J-!HK!DdJr`S2k}j82_%#%7boKS3et2u z)-Crw1FXGJk_1?7#O7>TfB{5UtWH?DdhgrBj%B?VCtIe~UFV<>L|2(45lMy4P9~Wq zn`Fut^Kr8l2%+ctc{mL_hrs|YAnT`LFo2?V{}SF_{p;o-?+;o6-Z-xY+BSRoagZZN zdi;~J?+RqK@hGX{HwGG^f43Lp3oob-{fvBv;oaFG+ysa|W=+G&Umhq5(z-!4ou(8o zm-*Xd(kzI6MJ~g>IxLE5L*y<x0%O6NdeM9AV?HzmG2^H5wr1X^VSa{BYHlw$)1yy% zAK8^q0~=5bmZf_^0xn&uJ>V-iQ;*&u%w&cLg_Y1G>tJ8hOmTQ1w>2&omp^UWZ@#;) zFF4b09VP{|8Mb4Bjz(;`Y}V@D;x^ixWt>(i%R%KifF*<}8viMjhl)ocHNbfcT_pfT z3~f=dIP=;)$@p@-mi4?lMjhHqtHpVFFd?>c{b;&S(RU8$8-GMrEb{>I^E^DOHB75* z;<T3a27}*J<z=95{3cns2E}ImS}<NxewA3G^a^<m)Jn}?9rKNRAg6E@pK`U@ZTO6) zNBm@LxXFI9U&VSB+Kb<%Ht9_Hqb&*+V4EA$N>pEiteSN@W=xfHQob9_YdFR8V8Hk> z{H#It)_6w@Mcw#fNiEr5SsMpzv9%})9dqKIE$Bhwp_INOWB3eYe_SKhl0dBz1|%yq zAINhhL+kSNoig+0GpHbqLxh#=6hqjH-vXQ({GUGwAMnTcT9h0?AF#YN0y8JYCGvWu z%S9<FatI-OI+PvBGKl1T&S9j*(!{&z`bsXuW7s>{D}6O>O`5(^Nf7^!>8p3>TTJPz zzSu0!ps!jtLSL<33uc7!T8AHL`l`5<MH_|i|M2>1>>C`%uJzS|z0p^{ft*OwS2*8} z{-^7!zwvFlzM9CF-Ri4>Skh(CSC3=9y7kpPUFfS<FQ&f2e8Y*&u?0tSVnSC@(()yB zy$m5P69>Zd&7hxHt(r;-Vjbo38|Xao@r6pzW>8Xd$2*kNUw~>)l@#`xZL)Nuq<TXQ zcTiG)>(#ZA8kDZ2z=F1Z`U4=Q^b_v#=~_Si2wSJ7qS+h$Gz_#cKl{P;)8fY|eWiT- zf%MaPQd;`R!JX-+hbKWy_C!B@1p4+^KNWzw{{{VYRtEhP0gkr5fKssaQ#1OIQ9m6* zObYp#t)K2^e>>4n^^WOq&ljERr(#U^F7=bf?P!=V41d`v?t|Kk|IyY@OCGiKQ{%y1 z>ZgZLu`~TNi)9eOSNcr-<jlW}eA-R$_icft7;5lG7eJCj-py)cJeD!8-l(h%7<DsX zs``w|8mt%&lKV6$T8RrBPkogKQ@4xNtI$Gt3oM6<d3yBH0xZBj!DX}`id)`5h3J*d z$q*bk`?q~~fQRlKqoNt6x6F*aX-M;nWoS|~Ubib5ZvW|Jm)|i8zB+vpvQal5CD+46 z%NQ4``NNyqDvdp2AV4Z`e@KBdHUMD2*n<E{tYZRzb;-qn=&a}UN$a`M1Vdm`!1z{# zD>+Xqn<HM_5;~(l!!75XuU;{CGVZrJ3O0ne{<hu8npw3tNwTP-rqcLGk3>lUq%Q_* zjH^f0#^4xn*O&5Dv%}I1RY<ad2*$YiVmWW!c4lD4T6G=(%ny~MrC~PbxA+98C7x^m zB9f8>()>rZqP|P~LEQIalMO1+ZpspYX}U)|fT|pgN_pG&MiDw&jdvmdqY^cmYvEB{ z)PjKjO5@GYzVQ%RlXhMFCEPFV@Q<Y1FLL9g?^`{$Um7@~3zw(aFDi-H4`ILPDvlZZ zpKp>n_L_RqI~i@1;aE<K<5zmX*fDVm*Va6Ml3G*$LN2#A3ZIuYN|`I)yx-V?_4Kox z7JlQkO5=4TEC;LWm?L2ISxX&@Xr?On85NI+mti?qK-J+q*A^@Vm*~-|(L9%-!FTC1 z*89UBwJ8S>vX^TQEDg8kV7qG2QaFTX_k-11`@UcEedCYbTIe;_`;7Oz;Z``=$ITBI zl?!~v#3ph5R`|OL(W5}5azOwLRkXsWSmujNY|<y~@MnGDt+_29&bQA{qZX&H%CTYr zY_0wmc<|2o#FK-o*stSCBNy`ncSzqptD+Y7mcr`C7oG~^yU^j>O6AV&8oJcDbGzQ! zxozbkxi%MH`|3Z|>X3uV(}At6^})gm&VjY$$F>4mL|?u2xM7X$m#&)?)}v=1r7a3Q z!YLTQY@-tlKJaJ-CjRx5C0lZ;{Nc|q`-SjsNhZhZlO`^!G~$=Ud2K8F2mlQcKicn) z+>)y|`Xd+Q;dl&|zn-H&E|6{90vo1}@aSZl(TfdW6q~BN=lgM|BpMgJ<H=<0`w=u8 zscgC!1f37+F1SpqLn_mxcjr<MOc^*U@PqWMeE|>QS&e1EN^eWzfN*m!AlS<r{v^vA z9n(vnL?__bAB~pip3hB;3(f`J@i4wJ*I{@y+N6sjN*v1*dO<HZ*ZulDycQ2=X1-9S z>4;w>wRjCj49j1>!l4KrC8&N5x!C&0&q$TK(|4rv_fBM<c-s$uG7cvBBIo1Adi$<J za<q5HlC01OD<73;g>J$T4dYF3{p-jm51F{qUL?!)@m(GHfEV6HXT|){g`7q{V>M>U zQ$7q!{kSG^FODjKOBYr)`9N!5q~fX2PxVRT%K{O-#2-PToYD=m&#GPJH}6ah&GjQ2 zu*sT9#hTg!E%6&9D=2=$r-cAfoLH>rjEn8SA8lxHK6$Oa@+nRw$mk|p!CXNF^C@;` zHi^^E<KeS$^Q{&Gm{*)==;Bk}IUg?o3f}Op{NTm4s{p2{a?)3!GtsAdOhuU+il-N< zs{N%a@BwCLWmD)TS=^M~YoHt&E6La%NA9|my+Xhfn?j!|s2x88R1_cTpY(oxCGHkb z<oG=CnB|{&0Yl(PJSMK#U!Bi)>U(*qr6tdB6`^?sTM08tFXEKO0wRIitt;duC0oiU z%%Gj-OM!;rZ}J&}63u7CA=D_fNL+Zg-NFr`jB-pYK-io^c1={W%aU6&^F5)PDYI4p z1ApWqQ$T6IK*kLZj&xhjnF`~Z&=GPqYI4FR$q9CNiJ*`Ib2_d+@YTb4b4W+#wB^S+ zkRMZ}{1^l076}3YQpp@5raUrbM<7}yWe4O2^eCl^SdFDJC54n77h`nhUxp&JA>`e; zT#1d7XhMW%H9>-KcR~t|sos{YDZ%j>1jjf_aQxUIIL1i9!O#_{uiXOkTf2jq1ZM6g zr@*Adf_NE|CSDL3pA@I>hoBe<U&@zQN`4@}247+Ol4lr;--o2YS<j#06lv?R|5%(% z?w<p>Xn6C)ukejL><qz2$6R)S&$tp=a9OV2PwumsellBL@lZo^layBudDgYO+IxL` z;?DoBK7QnL7f=6xNgqE8&j0V}<EbD0FYDuda=O*Wh2ZbDm-bE{f1R>7dn%vL!4bh9 zNItLq#Kp`1?~u=fH~!Dc=P6+E)CB5EK0mlmXYx5^|M7%X^&-h{e@@Bo?&K*JHZaN{ z)o19&D{`e9o%N?Q8$gfFq45Tzsm5p21);#c)DEm@lnFH}>cuLoAS-c}9XAKZn);xk zwrCxUDaN>Hx`3$-a|_`>6%Aq|mL*>4pu^%wIt%7}o=vq3m%*Gpe9~%Pf<6(aFP6*a z2AGcXX>fe0<yJIe4e%m&`mv^$3lemAGWsGeo<R4(iAKev+Pz4x36pqMy%_oe)X}7I zkD@a7!J?y&!fo6-Y!$ueHMz9lszTm<d_$v{el6mMCRIKPJ>H0P4}N1+Xu7v%HWyL| zh=no2<qD{T(5GL#CR?bevDZwsxY}!3YSr|PwQ8~r5^L4uu$JYjN$%jK-O1E|#4w9a zmPjHXmp&N0scaMnSAZaOF!L)LeUZurbhKWptzo^Q^_5ZIJ`774rDNCM?Djkq$&>HV zDlEH}7!OPVr5tV*Nqq5!ybHOqAz~JPg0-EbsiZdv51L!#7GGSvD+wY?mtV@iCdpL$ z9*v9ex4rH-URzk6HM~^2H%5zP;nZHy3)j}{LZ*`E@q73w+C9(k{XiT+YKD>3&vNr< z3wsCXJo1AR!ea3J?^PZiV1;0t=*7v(=(w!P=s8)&#7AGk0C>Fhy<yg$=LdH^3R^MH zADNzuzLSBgycfWPZWMPSdZ+h9lw$B;mNi~>xjt!iCA@8=ZyJ^0i`80mDEguds(+BH zO#sreb1X$4?YI<O_<@?ak5(F+FNtrJ(@m{E#LSoJ_PSv{h6+PxvaZFqaM4KC6_1U# zdG?+FKDUO64BcUv3IUSfA`htIPulG9k^U_c=J|lh@%awRG<$q1jrWkwVl5CA=V$Hf zX{cam9hQ(^W9gO2-(kyx$yguPVE%P34C)~aZfAeZ+1&!yL{H>Eqj>kDlpLt)N)DX- zlEl1GI{jwNR}Mr-gb#-_QyQGk31GZJ-WFpnB1KOF0WQ8wyBFzoDF+(FiHH{Ju^hPR zst$5swmG3L1wfY^SSMSksQ=I9z$9*xq{#t0Kaoow$Z2YcgkIh>kswQhcXT2Ven*MG zC^cp0TMQ>fe#+gd<ihhWD6&T$P{mR%kjfkf<3n>8FamJ6zCUhP@?uc^vN+CQB^wmE zYTv}OTOKfu%P9{i2PhBz%=bN!2e>iL48H5JJeXBu34;*ATb#ncd$ISD4&vY>bj1`0 zlCLAP-~q-euWMQGm-muMh?a?z1>W&-A%%fQOl`8|0NK~1nPgeh|Gi!Oeyqi_-U*jz z_nhMp1R3S^K)^I*H5380rUe;F4$E?5I|gJlfMPtxUlQL9L7?V;D=-u1f8Wp3;C&$g zMvx*P3&pPc7}Z_?6NBO6MCl?iD&dtQ;Hd16Q2__|MCV;+@`}btMZRukxO(MTx`=Sx z83|RQp?LrV8IoOh6ep^+mabS3KzNEK!&536{CHi7fTK@xzf0nR8ia&Y)FX+J%ejPi z3wWWXR#(7{QTJSt(>!$GcU)lSdAvqT@Z}+I;b>{%RLVE$B9Uwi-;A%mvJuJCkZA_g zQ_Sr}2;=~qc0u^jxV#`P!O32SAPry1n$Yrc<DkDX_R=a1ee4f^k3-rOjljmE-Q@*C zHuxv?QCD!{*u+xt;0QX(mw}(pnUuXqz6$eI>9T+}s+9?~Doekg{t3Fg07ope+6Sc& zK~T=HQOIB=_zTWI-N2i0MPpX1qKT6Z=r;yRTeUEU(f;;&*SE{?3(2ogI*+%HA`JF~ zFa#zJtl}H&gD~<(Hu9XRh*2HVT(U%~<*Wq~1dC(1iDRv}=#p3vp4Y8e<&o^aR+fHN zZe%|`O$Szw%ML`c5iS8D)+IsA;fUfo17IT+O~||xT9#@I2Rzs-Z%GWD3N7%5mw^DE zO>ZJ0wYkk~8ck?*eHCI2;<pEU$KK#Z%|=oSek6>@Qm_hB!;}msDe<`cmcfY;N{%6& z-x0&Pdp1@3E?KfPbR4<|o{D9O3jnIJbbIhfT=&@kcB)~mS$GL9TZLiJ>h8mQ(<60c zZQM?26vyYvxm&~GmGrj>f3>U$zYquQ68uoK#VxYQ7lF9P+y>>oD#MYOfJm$B!=Z~+ z&}rzA;}}=6u7)pUy{h=ZfS}4Ecmm%zzAq+G%<mI(P*5-V*aW{&{?O`9Rkh|3sI)EO z$Kj2*;@f^5_A|Pg-%`+bKfgbCn)92Hmuh}TvzK>1w`;7q-FJUdU8@}cO(ze1<DmGb z<Rk32lA^x?4dES22Cu<OMdU%4=#t2_C!o+D{tjGnH=Zg>Ptj^0#)B1iZ;1<syDud! zKIy1h?eDA!f!vqwnG>2T$HAPUxTwcuY^|1Y<UEakHwDaFiCom<DF_OPK<UR*hxnsI z-wl+WJnjEt?``0tsIK?%T@ql!ixVwsd=I#45UWYmnn2K9l8{;5XcUkjqF5EFT1DLz zT2P|9tC_B=siI=*3--m*YFlfS;v0mw1m6+g5N$!UGDB2QDz8HR&vWj~?(8O@sO_)) z{>w+RGk5OGx#ym9?z!ild+xeWs`9Szg@>J<Joufe^87)OF`?K;-rD5B4<TE%aoB0e z%C)+2^3|`@RjkqChY5?@%~6ZY@Xwokvn7Hp48$9}6+^7(pKZ6_nAyN{v-(v;(;Sb( z>WLCGWc?XMrGHNUDT5@}T&oxvZ2XAea|Yu&l;L0qt!oL2p?2`+7u~ePG(2NWBE9M= zuJmb%AK^80;a<k`gGLqUL+YR{EVXw~wW@`N*BXiM%8p4ssV5CcP#`=snveGW0`cT< z+5p7mZNZE-Q;WX@W<xvyil!r#Jg>o7z)^Q&u2YhH)ZM}Ig^~Tp^5G%aoIUi^Wd3#$ z;crHl*BX@%QRp~dqiZmHT6~IP=SI+?IjGkc9jB)9|B*$;&Q=jXz--2LA^H9&^87C+ zDc$H)Bi|yD>MA~pt_eO1BzmlYQg6?uQJ7^!2Fw{XQ=tfaJPSE&4t4qIx%mAjEN%0< z)d)nnzQGAH{Y}Y>2y#Q<T9@P3y!P_~+kUJ3fp>Bnw=VS{m+f+*1M6}417jN$`ZE1c z5n~XuJmU6+;qd3)_KExHT?h>&d9UAtPK9yY)Q4Yl<6`bGuLU~H6~DtEV?x2MVI?wq zAXsq=L9<jok`9UXB@c{B>fG`$(vQKmuX%vOE}khD3CDOmi$^1#C*rxqPM-wt+y-Wt zf`{?CF~i@;FLD{h42cel=SfVLmgQ248Gg>qs6=J8FQu5_pT$%|9igRfY-RnZOL3Vr z+-?CC0-Eq_OF6xG06d`P{zikjU>k4_^f=g}6EOT`k)p$_U5w|-L`(E^77ZGdhY?r_ z;I2???(dUXCNI{z8}Z2AVWaF|<vxM@#o{pxUHXQ_91@o=X>+W1e)|*VLmS=WS*HRC z%9t99op^#6&ms(ro{ak&_-j=9q2j=F)5mtxxJ3qzv26fY7=w+lgOB^`B`>|F`!C{% zQk<JTW^+Vq3K3|K+owtU{t7ji5{3rjz`-n+(rPeyjRD7pgUQgM&S0t*)L<&eM*1<B z_B|Fdp7uo+&XC%dSvaF=UufYBY%}jQ;5gf3tEku>ROiBv8FH8yt*nrtp5YhraxVUu zA!C5ACcZjk%PL!#+qnp2hF_|7E(4k2U#7m2513i1b}j{(;a{!37TRA~HL6l$VqXk0 zLr!sH7mviZg&BnScqFC}(Hr|XB<MIxE5g&afbixacTNOHoX6_Fk)(&{ji{j#ycjgz zNIVz46mKA3xbhiiATBs&+9fE=Q*h%mQ5!GLj@lT;?iQmqw(H4fgit`Cl{V!daHF8_ zhQ;iSi#&1Oig6q7&CEC8K^4F8`%narZf~aW=H$-!jkn?jh=ZUOVK}2DSiV?G{Ft*4 zbuN1z0MR)y8}|t!v?uR7&(zOYGTd)J1*s}vV+EdMijaVfgP5)YHvY`Kas${Vy>yoP zDGyPHa%&0M=k0I!XbKeraL%Lh`-r~<zv0xc{mW!9=}gIE6OY^P7<x&+#or>o3^<3v zb6E%j%ecAZFZ4uW<fZq}<Nk@rf;HKk`4lCn5i-OSe=WLLEixyRalNoaPsOF?wz&TT z)Wv_y>SOvxc8fY+_?2HEY~p@dF5sn<g3HJ4>j&~g<<(-}N4`q07C#oh0F=c*6^Y~U zdul2?6i3S@dof;K9FUxmr-EU(FzPb(jmB+9Xo=t80UvRs0Xcdz2WE2SI0281+iCzQ zo9DlXzj50ck;7u^f{okCC)eqz6ARzo3&ob}7v|rktFr?Ew%BdBHfP$<ZftXiYI93` zc@%5K?;yH(04MiV{OzCb1=ke-OT904i@=_r8PvMe^<Jwt2Hn<E(2ELoJ%X-dnF0GT zKyr%J8Jn$DqH$obzY|6)A*YpJBO4Y1EyJ4Pf&gQom4{lJ)7Xl3=i<SqCo$Nv9(_gz zGs7jwDb$iw)S)Hb1>lhABrO-qr1ed-KMd_ll=0|9s>6q(!KS!i7tKEeK;?c8KyBWM z#ku823g>6cf(YzNHwHSitqOL$%J~Xn7pZn21P}TlNJT|gvm(bIK#EGJY$>@c-Xg`c z_=CvRenT@oY}iK#cii<dsjwsB*YQ7QM8^3_-r`@4VF;tILT#8oHsD=HpSQ>_j-r_N zz>YxqCeqRolXz!N6r|Lo^kaU=E^9EsOEW3QZZ0~Daom!o3=&#JUlLj`EwKd(4s+e; z0ZMk@MfjR2ja`*n*@xu{v_uQCwj(S>R{u)BM*p6Ksg(U|W)C<G$#1%Ue0BGa%fsyc ztpMZ*#8;}#Y1vdg%v-D_T6+^2ANc@HG5^1`+ogwH+KV_JPn;8T#JR%p<9<335a--$ zr<kudqrXxxO|oH{V#CCoD9Bg9B>7{D5jFZ=;iDQv^G-a4;YyF^G(?uJ?PEQJG-o}L z1y!F*aVGOCL$!(yi)gphhN?UpD!yhxr6f}gMUy`Vs+j486~w~A(Vi!Av9%{~)!K07 zj-ZXLnYnO1V`B@8_**de)=MB+hmW)2*fadhe^B8kVB<&6#t&b!@S~((4UaJA1CH!b z^I039ppp-!?1b4mLtl{li}3|?RmA@<-K*oodHxeXP+{uVxf~4+W+)btoWs`U+I9u! zEU+#qel~v55Qmoe00&d>wuPmrkZ=Yvi+612GCzTRhz?Mz%sPnf9^$K-$T-r2ZKxL_ zcjMG@SnMFRZ!O>=v}yuGcw_+k^lSImo7LBgDBu&@wgR~9QP}@d^bTynj&Mxb)hV4B zNih&qUi162I(JaEG2&9*?jUkzhNHyAt3%k{ZkjOPd_dLTY$I@{{H81CYo_K>>nL=| zp|8}wEC0L~bdhKL=aJi?G^DQHMhE8Qbr@yzJ2)DU?5T|YoCgxoq@&9EIB<Bkhm)^( zbB5Ep3mRyb@}N@ne0*o*b|s}=xxedHZN9Txb)*yqPe^8yme>#NXHk1kD-TJuTcq|~ z^k^=AaA19_`B?ZH;OC9c6{M@}0TX3DgCD-S@pCP_iZb|d&7YL!dpb5_?6zC%wwKCp zdTjXWZhISsGBdyAaDq*lUvYenyHEAHSg2u!zr>~rdwlqcmeb>-#3BrKiE9Bv*7(%s zTR$LN*s<TY-=Df1pM6gI2IF%gyj)1H^){ppHl#NF^3{!_H-Xa3__#P%B*j;r&$N5H zZq>$*-KvA1YFp;j;HIO*NI+nn22tnmHFT^1bu28HpwD4p$R5~+4dFZ6u)(?=!-mvs z8#W3h-M(>ihQCN&Z39Q#UyN6DQwe-nHq@xqQ%XT9=F0qRaZimRU~c3Qb>OhY#_-Z? z4D;26VGO>rsJIkElT8an*4aq2@z2UB&DdX_RCwnW*VNP}IC>92thYgY)CO^GHi&%f z8pO7ZxgZu=e?gkqL37}HIQg~VdlU|FMBywOzS-IE@wIFCjsh&!ShUOYM`=2-Eou&_ z*hV!+^KPDHiwi|CwrS1L5pC<*48Kh_bM4GF*|f;(w?Q_~ys!Ga%<l7w>^}3g>pmZk zBQ(}x>dMLv;GWT)TP;W%Us04@G}9(uyQ7W}wOQ2`q7JKqBZPdRSUn8yB`~f@xIwGs zsZ%dX-6;29EZ6h}Mr}XKKn?(@{5!A;+bpXv#FIN4AE>LC8<k{ZVE$x%MydB+TChv? znM(YlcPp41ZQM24xU*sAD{$w)Y<-_HFxi_1@{qG!j#hH5^u~scj$ut|Rc&?1*`%Co zhcnwB-PvX#TiJ4~DWPI?ylO0LpOf|WiUd``H?tRPHP%HC?q=bt0u>^L$s4ak@?}|b z5$)tI`*ZsKlMw8~#%u5(Mj#~2SBNBZk$=1xB+dK&$UZ?TV)*6glLccL91G|~HHnky zl;B8GL5X=hV``_3Vhm|S%LnXXut1jEMlqPaaI1+HzZ*mV>lfl!L{6artalJM5Jjqk zu|9tHy(O{5B|Ofe?k;f$19IJAOyEL8h8JCPELN!H?SEGGt&hdN^`~6>7VbfcKF~f> z?Njt%AH?#7Yg3Fi>l)#2#$Bd8iv}=4g+LB?%Gk5UF<o{O+8_KH_^iYJ+%ECS#eEu| z@8dMh|4;FmWk`>G1VhTbY7YUYsBwLt+}Z;>dcJK9g>j^;1yqKRJ|lSpn_NjplR6Yu zYVr)$IZJ*Yk#&(dw;9*>VE+<^2t<z}`4-XOU##qL+8kXXbB6uZI9$YXh-z7bsFuS~ z)8%LdtPo<vPG$W~Rr|x?{@avgzCL*N2(GnCLj`Y8T7iDo)%D+D?uP}NVu^aO$cGAE z5|&7`fCq#nXt$$5_!9C%fn4Jg;r7H+PD9{?Q2#ejU$|f!o4~Cvc3@5|aU=y(Y;i-D zSxd=7#^tPG4~C-$wH}MsS<<b;H(KnM>>_z5q0(y#m3_EKyLqZ2eXK-sY{VDigGE+o zhH;n}$7U4}D5g)-z=<qQlM1OK9rPsjHiD(Ft}*)OlSiOQNCB+cSr)}c`imqEC~6Dx z9y%l%3pgf4)>X2$ho49;zrKbKh@WKhD?R9x{rNdOW%%`Jri=aA`X1mlKYH73f`+{u z_Gi*tjk9r+LvMw<rnf$XyOah%46}3t3f?Y>uIkoYqARAAu!OxV)#CXW!Ys=B1&1X~ zdC1vEf6}1^lAzxI`B49*dMfM>pUEp6Eg`&ey#Uh>u4=*gk5EC2d7lYn&;US6;{}9T zocFMi(xMqkJ5@Hq+%#3q<5H%U7~Yw(ls=G4SJaM3KcF3MPGaw@B3h`$UINJ2Rfs-_ zJqe{ph`g?WHx2Kb1KpKc5fn|&-!?tr&IL{%Krkq)8e4WJU?53U#j-U=%!vuKTqx^I zP}VjVWzm<FL!t)9rYxaPkk@jOSE;cejs0TlX5_cm0oY}O8f=q$WMI%}wO+^94176T zCU#^ux=qNu@fhh%F0Oi*Pm1!^;nBSMEl^&X-mpt($A5xu-U3u`7ZARd)BIP2)DbYA ztX9&3HsSygq7xVBa$IeM8TtM!F~~Sk?_$%CJDtc6T^F7?5QOGY?KJ$LFIxPIeA3y7 zV%{)-{}9(-1#uE|BZ^ZT7VK*OBrWlnWRyFJ;w=bEbrk#xKn%RQGjU>1#LcSqAL&We z@Rq}y48R{Kzf9NS*C9)w{NY9<MEc_4COl|~d+@i~*bv*`4Hhr9BMK%f{qrtHy7~No zofxbRbJ#j)X%K9MAOSOq7n-W>Lk@mC5j`lcy3$yp#c@}Tr@ZP4(SNi!gTn&~1U}|< zi<3c0@B%>mr8%FQSD|7x0IcDC%T@h;s`~g&l-42CCqZDC;E~9Mh~smlCwd~f87<}R z-y|rMp93Ps+$u(elDqv77d^0a>^jpEIZE;)qn^A5vTrK(bU!n{_$&7@qP<DG<!v4y z6(*AFOnnHiQ$kuj>A68m^nqhOE&mK_q&A4Lif3A<a7K!cBorXKYW}qU&JJ|n+MjIH zjDQ>dBddKI)CGUcAnxksMa)&UiKFI~K+8706E!P<8f@$x2P#E8I*jkA?u4@HY7&Z! zvj}$S9-m5Z$7nB%cSv0-sYV_bs-Xke;zZcK&!6grewrSbiDb8v`&#-SnGq`esY#`b z>}M`7-pO5si~L6g>BNVk_2O*wp;Y8}zmS3GVS`QK26PZKjW20uxjC4{#j6gBL;%)+ z3L@WSloIG|+@0ZtQBF-iP<fFJ>O!ELl!P48e{(xrUq=)hOQ?nOETD8QaX6l;eG&hW zTH;m=Tn+WY0zAmfPP#DnLLY!tu##L`iS=rAFXT^?l$JP;`9WBFWeUB07|F;Pm>2NI zK|2aOcBJ(=KoU9GnTbYXEe5eHb;mvfC%sOh)#5csXA8ZBbhY^NLema+U5@J6#}7Vq zk^lZ{6?ZWj7C*j)cWusTWG|or9+!KA!6JP~ReK9S0bBzbDJZYPh>rjo%d7OrnzBvh zn4-yRcebV?-ydXp(G-i6p@@q=lphgBH$8;3P?aMSQ4)|bpMq@!HEeS(r=;OgYb%I9 z%^9@)@=%1|;E<?!q-_E3k>}p*nebxbW*8=mNkXIZiirY9kuwfJk&|GV&)DPGT@$!) zcNhDrpfYqB?o4=qRK$SV{DFRVN53Ptq0egnRhx6!)g+(9b7%$O)V26*!8m#-giMFI z<&xr1o_yaW4ex^{b7?pr$cP-s;ZPzhI1kx8R-IU^ss+dlX(QM<t5Bqk%NHZi$!yVQ zZvTfOZc%?|zW`;FBENaoAwZ5grH}f+|DVFjjqhEL7w@XcjMqhY6A%?}(Pj&)O_~2) zK2f)0P<0G?0IdN$khqmVl9FGpe2fvpeD%yH*Z+#$C+(-XhNP1IP7$B|y*oj3+M$uj zV{JhZ)lNoK9f33@s&JoTN7<%8xs^q}!wy!Q^3?k-PWc!w+zRG?I|l=_foYWdz6kbi zJ(=&v{ff!@EiftGN`*!Oe^9n-iQn-R624SVBF3u(NQ9JgW(zHGKhSM$kevnKAF3HH z{k4ASj4$W#D|G|)gRFh#sPmlG@MgV+QfV0@5_UE#n}$E6Z{G*bkW)0I>M`4hj(I&0 z)fU(SxDfOyVDh&W$hw61V{_*Eai~SdtGVRm0&tLoTmw%bm<jt7k$`JgnoE(5CWc3M zcyr=$yo`7Suh+r9oIz{oCWvS?P*D!HS8C&yB6795NQfbAY(A}N#HsYAaPmimm~-Gc zflwKA#i&920l44dlztQR$>y-}DVz{zj=-t!;Ha>%#(WI64a7@<<)Yyno%S<XkI|K< zZdR!OVjbZncr+_i@H&1_{Nkpd@vb?o33C#H+|c0|hm-Jo-CQiHq#}u>V?G7r5+?MS zSfL<fng^k)Bj@naKNu;nXLm_3R_Ado%k;w;bOs*XKvKA1jUB)+ir!zx;0w0LPO_$1 zODslhIll4a$LLHwIUGJZuwk5q`LMYCcIwd~q?NrBsu*50Iptpa;C9vWMfT;YS8?Ey zPfX#DF>0n+dM@8b&2;;l5@%^%i|mb~aMp3ipO(+)8GIVK4~G60;|qJKB@V(9KqvwL zxOKHJ-sD)9+_!Dce$gfl)omweV*ySSw3rWLB|zf10~d{gPqX72e9QE4<#%>NAGgyS zx5xBx?oD4tAM5V;Z>5jIbN)T_(e(Uo=p#8s(Z@Agg+7!$@@2IIXBhU(s)#n>aPrq` zbp$upW%B-va`Q7_3g+TwJQY%`i{Q?fyA}$i<X9{hPEf^V3FU`4ZDWa2^DmHw;ffu> zwtT-L{%zQzp~!>MFO}BY>s3aP<($3^+BoLCiFkYqIuJzyJ?VJII`3Y;18KbXIR0Bc zXmc*6f7UIBD@Ur;aa_tC#D~VMN2vSSd2o_G0i09EE3cFIEM$O8^5P7I7GH$sa1I8C zO_pq`KGj<s?PuLWCPg_r`*nDg_~RApqh|ZnYQ6(lTKs6N&s?B2pl1SFKD)>Ur9;m_ z%g6jQF^0ns@saY$<pUFc3o~g(#dwCWIiBt)1c?Bx69p0LSfM2v&*VN7RYM^GFu?Uh zEkW(TwlAsvaSVJ|y&)fQ<%R2+gR3<)MAk)UFW9)X2DaJ8t!HS7e=6K`18(fH&q^CV z>IQeULCOKnr22kZKEdV~KFe_xI1j%Zt4j2{w7MzmKM((pYqAXsMMMDY-4g*&1Hz@~ z1xr|ev2LJ@dFwQC%n5$R%qW4ooqrslMHOur9A!P!;+Fz4Wx06{HAmn;35=lrC{|9_ zdbqmF%uZrE?7ui<w2;iEh5DPA*6LyQZQ$l$xHps~Od>Q;jOS9goIp32E8YYY%7_DM zfSRDi2cq*Z;%M=E(HKeb00iT;DRB&v%9llZ>Pg(q>_a@_%URpyxV6YYKW&QPf+XLc zq}yS<h-w0w<J$8CHB}1&0XxR-Ln5@(D%9C;;XFnAyB6yPJODc-Wi8fis4%^+>S)2k z1Wy>75v4%z#I&<j{0fqiLzM{wWziv}SZeVz@zFZoU0=30;_K)v6|_g7M8d~T_{~^g z&A_YhZw5Z{w}MZuCm(|xL_wQ}V`+T>olx079e6)Oex+1Tv~YIG(OXIL473e=O+>gT zTvZM};eyr)Tvm)Z7SD*91#yBvX2n#<k7Ebx%_~+yGsBjS9pkJpCu^ZV_5m7p@WB&r z4nPZ-p38z*I$Jy!>5K;{JPPW&7SuP{V_heht7e6cUO(Qd6y(H7!bs19DHz*T;`gW} zjzJ@2qnq&!TULV4pz*3TNy<<!IUP#D=}-#pLDkSq&{jiwCxv{{02RfWmT6b{A8RoL za3lT)SatZ8);}`cI|<)m4m5yQi-+QrJgYXI$B}63Xlb7PFxuF~^YQ<AXnGu(wZz;H zC%4G-;8COriwdKjk1fA&a=2r7*5ad456g=HaG9JX_c&vLFuGMHtu-qAxcx%4#Mv0_ zvgM?>yRoipii_xhQ>TG9rMG45)bN(p5+9>3S(Ly|U|kFKUiB-jlWB=Jk;wJSc(!MG z1amk^JMW*)KIXxa<cwE(UGx}gPM6b@Ri&F6I{;m=7C)F@$WazT0yun-1J~znxT>&n z=mb|cG@Gtp=9L#wMlq(<9VOUb;Ig3%(bRa$$EuEHM12F$@uYx^@d_I|tk)&43;uem zl64FB<+Ib*1A82nB34HOlI=*lOva^1YPAv|3f^X)w$2_!ZMK8ha}M>v!kKv54YoA_ zAeVhC(0_!S>NMbTJk8_GVAbL?rvS?X7|mA}xHktxemMIBqef($)2WzniIQ~uwI263 zN|Jp*0=mW|Y8_Lkb&My4)-$h<6DnTZii&fb$Mj!|Zls>^-!B#6xG;5;2kr-pL7K!` zE&@BBgTrhvm`EMPk=}f%_b{OPIgSw*i_9RbK*h)cF9*~V!R<O~^GnuR=E*+rNt;-F z)#6K*rOvq<`&Vg5Mdsef9KtkpG5qt(J_Z0|cr@c&REzp?#fZ!iNGV|oK9A*Y_~ZPV zvVYNua!z!U*d46y6i|E#kXy@#HCC4AYd8M`WuPqOBX8e^hxbDK`1~7m?@|V}M_u>& z8(F8a4C8*>*Ol!`jt*j-anKuFu5*1mr$tYmg}V%fdBFmUAx*dp`RFxBT+nGK){&?7 zZ4u0!-|TwZ2ikOxyvtCv95<4x&Qw)J4q!FEK{aU*R^SD`=`Yq8p9Eu@5E!i18{3kn z-Nqo(Vn0>N6gtRrZK{(u9RzZN2(b5#UvT6#Pj|3?L7_*i2RXkqfGMzf*@SeNVy?tH z`FWCjy#%ul#(oMi_Q0d6kpwmy`SsWo6BhRi&{`O4dMw@@{DBJLCyyAa?9aZc3qB45 zl5q^`7F8V8G_o4FT(Eh${#XU&*AjojOv#M1azD(nKX4W9vR`+D8rt~?mBP0oW!SyZ zHATq|q*_8p8W=y~KL@eog0auN);(Z-M?OJNZVDXGEjo%Jl1mV~@$S|dAPuKie67&{ zmap)y?FID+Pu=VhPmDo%ZBE<|W4xy_KXPDYo|YJkG%(9K9_X<Atl~KHYKc<VcNnG~ z6l)_76sxx%MLMeVMvf-}f4zJ=W<O|!!^-oIjutcNhF6g!rfk{7fPDlB;USm%^{bzg zA6$3{*~IXaat@QYACI_@to#W2lmxXIOM<YbTE7?R*$7~{uSC+-5)3||dW@?es{5Oq zg8l?Vp$lU%;E$tx9Y~~HbvbM7+e<R`Pr!c+f&Bom;pppe(L?#xx=ev?Q^#h!65^7p zm&p(I!P&Zt#Be&C_H?`PGlV{E?j`|7PT`#q=i>7i;j~%k3B@|v!u^uwTa+w7Fv7wh z$~8Pn%r_wSuubC7W4@Gx?nzE%MpFMo^EPWoHdR~S6--rQPJSn&Nd!<zX>QmND_^0- z--eWT7)@B{EC8HgFl<()m8`IoEyd9ylE1N0X?B%<wWD$Dj?H3gALHCEJV<sV8KXV9 z4=!5kW`2RA@<IcOt)(??k7Zi;jBkz_7nf#aD(VIxu|HUTuD?HsU`cha%l%`t_^**0 zQFhP_2Yf%|VU7V>BBIbg24jB}9=SKcBqAz6RGU`=5~tJLoP<?JZI3x}WDzD^kt1T- z!Nt(v0&9-2Lcj&@fta>{O_4tk@FEph*^g0N4#lW>62#0qQf|!y5XR;Hb2(plVJH1e zDnxOme=4-dSsp1zn$@jZ45Q884$C?6{<4=TY-R6qJRniBB3fe0k2pkjMyzrY@>-W; zc1LA#V2=2(nep&UJ*V3B1i<<;P+rxkC7STu{+J_Y(t6h8q<zeDlUSd!FEfBwr+mbp zj)PZ?%!hy0&zRs=O&*e(GC8V^jn)H5!#o$PxSZR7I$*bYNs<FUh^uV5GTE<h-=Q|t z;v{IS+YzwaVajB{)Nv?-!vwSI!m>@~RXCYror9cUCP=wNe{`?$8JVH;wD@<_+Z+Ij zqx+{r{joeqqBL0gl9FxZ<v2jjxCi#_L8~}(mzejwxZQSvvb-q95_j1pbe7=BC6=hi z7ggdCl&~m+dEXTX^#?5G01kQK)oywWZCe@`A-!%qm;G2}wttR3+j$$y;VE&44drrt z2+n1|u_rN}P|D#6g8ZkU*G_&IyM?vJvq<W3{{zUU8~L_P-CIj2@CGsNvnmNwr#ycf z?#|PJ>Uae5HvD3O0)tv{JaRi=8h+=oF$^hs+ac<bH6E$vkN;|$!yG*;6C1p*)1n!X zhHMe)iXNWHaTar+gM+a_3OiN%tN&L0G!8d7J(Z)M{^{r6vVM9$&X0X%{q!ni{<rI= zFV6ZB{q*VQvh~xc&+k@04I}$k)lW;MDr|Lj)=#^mnzX1Z7ZCod_0#B5QL!C;;D7q5 zBNxA_ewq&i=IE#IwdUxjg>C=2`e`*_%jl;^+MwI|>1e$EEA`Wpc0#g1ameVWC(igP z`sw<=|3B7GZ~g4c^wV=8H2*X7)8$`qqE`Cgf3bf00@UblLqCmW>iMtLPtSM{L&_b6 zucV*8`tjG)PfLI*%C=qTr&||v(oZ)nR3&zypSGdI*VRu?qfXwHe)>Ip=t4hz7`=A# z?_NK>pwg{-cCDWd&C2uj^wYN=`3m~!>q7|4?)1~gm;?Ih&);$Dr`h}eZ!*N09%@@m z-z~UJFjS%2IRsmO@B@Jp^>xLe)JQG>a1TTZfd%7S4V@Jn6@uR`yecQG>*yE*H;!4z zFk5Fx3ANFOcu>ij+2Q^h&(jMQnavZhQ&0a6_$APBUas!J)2HT<5q`0~HY(OegK)#3 zyN0v-#o);+qbKHgYfw+iz;Gk{3oPZ0R82egCiBt3SU)~t8V_e}e}^m9MwDwrGrki; zQ&w{8TdnW1@$)(SXI|l19Qe;5EFM;O2;C?*KGh(aYu$`+^5UXUY94pO(R<$c<Q#%v zpht7n`B;}E>t^VNxU$%qbQmGnU~nh`a>ernUM~ut^bM)6Gd{%;9%HLqP`=XagKJih z-a^E}^o+YU1kGvx8omFbaPmrXj9%~>3|Z$z&(~w?5htmG1F9u{Nx<AUJMg9l1L10T z;wJ~2&ic7C3?)2nXZv}96dHM91a9E!Fi+XUdAVmYz$>B(0A`~(Z7tcUrV#_!V#f!D zOZcg&e#e@@Lh8imiVMQ{d03*sPi4NDSAj<A@n*jLJ7>IF#MQ~ZgOp=7-+Z@RjoD(H zl;ikkkJqLVVn!FIr&nA~Pfa;=opySvo5gVpBjj6G{!R~UU}q516GU7m_ue$&y7x`W z-)Z5igyc2)7aI~2G287a%saxw?P(?+o8a~oHhwb&{iD~@O&2oQDNsSLC&%Nd2CT5v zoH~iOvcqZMH4G69)G_!wT?!ZFS>}Rgw<BV&SXRqhquo0>K1qPXG#6!jpTfD!)TAYD z*!B27!J}4b7pSAKu7;Q0ChNyYg<V9Lc2uJ|@+4*&)!6<^hi)XSurjY;ABaBp(Kh8J z35O<HsXW$+?7niGJQ|PY`rkSuE&f{Bj!U0?UybxiID=;FrJ4PoFanI<@X<_m1aeTZ zApK9^rhmQdvM+8Z648a*KMgc~lrr-Q7Q#!pi(!=|4NQCV3^MIh$hsxL*xFNJwhm}< zdf4O17krkU)LQ%qn)Xt#7l%_9(Xavs&kt$IFvCw%{ebUq9io=_2pe3&dp<)4z)@Ei zi{L?0j3}Zrs{Locf4AmJE%6-~IN@NCfP0pwyheu?G!mrLf~TNWv)VRu6CUka;|Bs1 zR)ayI_hW1auH43M&VGO^;tO3U?h;5+#|R*1C}ot1OG{jjje*dG+|6ri!2opVn_;7g z(7OW8;M$x7he_HwT}#}aPx_;=st%ImUTGEWz_=1?DMbfQmn#u_Y4a9oH`6ZMxE;}n z`vNbphn}wNjxn=ToLM&Ga~KA-BJIXFGK951U5+*((--QSmxn9XX}2#7d4cU#Z?NDk zTFmGW<KAlDg#ClGjTSq00y{DL2Ox$8>V+{DiFx;Jbh4}kmedC9$oL5m9Q20Z7dD{N zVUSZQt{$7tjhP5Qs{y+uxCs?(MA*#u!+7FeK)K!qbg1W2byNVzI2~B#*HZ4%WF#4r z#?x{I4~;^5`-RwaZNEIm<Qo=~VzUm0H6j5+AJP)gz@2ra8r=!a@#jD%<KXAL5m1$n z1AVNMhpV-C87M~lomWW8BxbxyOWX)tkt(nQBl|E5eamp6Hxg}vdA1PEIY`D1y!6)b zY4|SRlxws?a+Z7lDj?A|J=cR`CJMTfs7{a_xsYTDB-eSZi=`)+hr48wqvmGF`5KTJ z%ay&O;6wQ{u!kl<I&>}D3QEp^bklnSlN30BqyhU1=;bt$G|A#FGyv3q-{OC<>$i9k zi1FC|=>>Lr0Xx;c)!3IrD&BqA>shSO74*TM=VIcPyMth1kM%M#*>=#>2no-BQ-5?Y zHR6HBZQZq-bYzaT2OGC{pIjI-Pa-KM`U(O9K(rz^(jG8Nnv36pZ_ZX0cIw4UI&wXy z8t!~tCmS#$6XZlKUX4D2KAmc!dy_^Zz3rMtp(dL_PsJmyrqkjpWk41ADn0?RD)N<W zeuYOBgxR_c=4i27X0Uo-7FL15CCDRK4g3}7QWjbHct<61V1|U0_G7_lDVpJKL>v1^ z#uOTPA8$e<vfr;IMgyT1Bk^K9!1Qn%xC}WspU2G67EC30R`rvdJl1|lQE=P6Jsd#7 zHScN&C<r8quM#~K_cszEyaeEuhYcE=b?E&+n5-jlMCWbPlel@7yb4UOGS{t<H9B0I z01tw}r|P%GwrJWJ3vG$T6Q6r7v3P#8ONq7piOv%15Db|uu_EU|TE$1Bzk>3Ykejmx zdxN0S7*7g=#Ibmw)QWFrGeC2IbYyB+%YbSv9+9@`71K9lmNiCFs+rkg^<F5dcICi5 z?MB+ppWbKLm*b8>9S;O}<TMiZ{}EPsq`%G%Q3&rI%yU!ijP=Z@He{|qlCp;@4#G8? z>RnGMez5%?pe<UL!P1{YPZkf2+H^_!vU+Z_-*F03-@F1;a0UhiXT&I{!$yhq1IZ8o zd|>~(ALo2qR}5l(Je{850{W&Y31f{*!{zJ?X$hVVWWS|5-0C~snusJtf9d@r?9X-X z_U)=Gz_ZY;?VHnpM(EH#T{oP)j(stLdeYhJcm>6%GT8YMF;~D>w11$y5ei<uuF!il z3W!8uDQh6!2xlEwLCSD;w!Y&^1)F3(Y$G^4OJMVhYj;Bq6ihcK<IELV<9r;yF;Bf8 zk+E|Hv~|a34oJY06Vjj=__6)hT8_{?QJ-}hjs<{jaIa3z{>Z;df4lUj-$Z}A<<IG< zDWkvDVmEBh^*1l7vh}y`XKMYQ{^m>*<kXKJ?JN!dr@#HD>u;C*G0i0Le~JF~CK~wf z(%)wMBU^u)G4(%Be{1~1|3&@n=(qo^`rD94I!mlw>u-IL`>X43XFyN>uhQSH|J%Pr ze|ziq|LOYMDF1)5{`OZK%clPJz#`~xKb^5B`Wp{^$qfj~>RnQUyK7xmGMI_VTEaNI zg0nfRW2>KtE%gPBU=dgOg>r7jJP7)pD>4cWg29qTZ{z+i(3iIu%Pw4o3$wXV=NW@- zft7TVKohpDACVbii%XP!WRdyu9oY`x)bFWZ^6tjQ<3zuF7=Z(KqhHbnLru4Zzc6*x z(>~~g^q_qZRzY_(k78zCDw(mS%<4Iu7tOwnT_~4Du#LHmgGI79#R7uH!GOy+c-(L8 zd9zYW%z|Y>7AxzJn5$f#VjBl{VvR=QAY(9yaqweV??G|;^+Rdp@@+hd(XLX9e-0ZH zm33uH0bahEeNZBdTtK_o^0`<k;{Nu}F=pj%i{QyxqA_1QOe?v#84BB3W5y=fp=^RD zyKI7Mu&5QAU;)qpo8ZaXtsO{mY=X3BRad}4R=aTuGSp~)+F>l*yu7+%8?1r8k^Z4U zZySvRjuF9a4qOFmmTPg{K#&EO_X8EO9Cn!l7qVM42O<bX{1CzdbKnX1MK4a4>JcwQ zY=KdLB(^|CxmUKphw#KTW=X~rSe!Nmo@|=}i#wYF>uFwq|KJWnniEFkL1hOdW$wZb zsDeB+B7<$T%h<ou_CWgEi#?F`p7L>Sd*D(@aqNMY0)$TXz?+b$Xv8+PrA;-p(qqR+ zz?sdq2P!OQ*#lnz7HxZ=6YfKc+x9?2b#?54m0l|<<{jD}ASpWW#s0s}Q1Dm~S<Z6v zluq`*p{P!+C*AhI@d_MJE+UF#*#mDv1GYZ-3%mY3vj>g>-vM8{wg(;oh#Y%hIWp(k z1NRmL1V9XM_a)^y#=s;#@D@P^wh>F<sqbWKlBZs!G|BIwcVY=d1vzFwhERt|q!K)N zhI#~h#-Eds6xvk`0;gr$4#+?w3V&o}uXQ&}8S33-AIicej8Z&pBwSYhE72oy0o|_S zQ@q7)(J&?Uzm0ek4z%rmm%yH4RpC$C{x=ml9Q)t9+4jFmkM(`G{g2%|2*BC)KM_Wp zVq_MY#3wl9xy*lzc_rpQ-VvlJ^B?T2w)wC9Wm|px0lvD;f3|S?3z=|FgcI*w>{2*+ zf7w|$9fUEmg;V4rTK+C~EPt;(=++!7F@j?GJ01^W`TJaE0-T{0%iq3lyERAf8SOzQ z!wxjmBHw1@M`nB(w@KOmz%A{u&i20}INpvOEZhE9nX&(2DoffK13;B+|GOSZZu{TI zTkLmEzmt^lFZddi$0V&(up^0Gt=@WpLv$GBgxHm>Lmj(cwXsFaey89hO3fA#$<;== z9N@F_V^VxzR$6alM0ZthhU(`5DBJFLV;Y`}-H)E}?5}h~@Mm3$B!@53cF}d6yZbxz zBF#^g9@~!Bh(>bah8%Jrl9G<yZw-oJj4JK?=MyMQ-k@mE{4jaLC|VzYH<aBkhyo%! zSjq|zcNphNW!|gwAoXO6wn10wP|kDqCk>y(^2Z}!xn{pB&Bg=xd6hX44&3I5pLS9k zPw`mK!0eYHCg>Md68c^y#kT+PF87uS(a#w2^xvnS{pi|nqMzM%pFIx^cIjuQ-v4#< zvwT!#8~-XYwSHs$Y;H$~$8%3`^NtA+bCq4|XM;K7L%t3DYyxFqrFP?FPCbx;PqFoZ z3xnEUU%}Ph4^T}TvKuvR#jez}&G&YegipKGwEfT^)wJ*8m-L>crd<J<DQep9@SxPR z2b`&{?70bsY|rkImbO{6H1~mfE%A#kwX|m0r~N;spAG&p{cQ5j(|i&Cm*{67qJjTV z{p@xsGH(6s_pfH_XTQJXOZBr0PzUt0!QjcW)g#z5qo0ATAVZBp&T5W^R)u_=zsSm7 z>wZi*&OGF(=Dolh>G_+g!)u(EXjGqh&%aea8=Rw`v76cY*$~;3-Iad!I<$se>u0Ae z*@b@Q2q*5(ehuL?Xjf|5IWs#8r+zLqZCsX`b_{Z7419EO5;g4@Jcye1NtT*+#VZ*# zO^v6crwy@2lL#<>I^&zIpZ#=?^s~Vk{R~st*VNA*e6F*8wme5aJ3`bf=xbf*XA`KP zO_dDP??9LxcYVwH*;QXrKYJ94Pg*}4yc_-Ox<c}hqo0{52AyhfXZ;K`pV80YSZwQO zItp;Uq9!)js>K_}cd*jW1}punEIV}wS=|1#A3p6yKU<CSc+}69{t5coUmCxGepU?q zY<$&M(a&asyJ!+y&0pBhpf^6_zZEYo7rQAmp^c}D-9)aw%9-Dk{8;O|OlWZl{|zfz z+vQzoX$y0#XlFsb(ONKxR<!XhE1HE9hhpy<t|jUU2p;WWI5?VXMXR-~XyxEuTG5K} zD^|3lL|s6s^H7zorQMOKHQpwMt&9~7^!+7vG;|x6oI1{S&FDPNccK<Z{aTMM0v_x= zT}2+k*T&F=FTpkA4>ST1d&Rm|y^ujRuw2(Se~MF?d=$$mLKm(Dyd<RIZ~{q0eSn6M zLB$!*HoTR(3~xWow+(O2c!1%pRJ-*iJUNE9pWrzRy$;TJ`$O-6YYQS&a5-E8kGz5K zdZ7U>q>OJt6*ir54&3&)$<&RUBh!ehfv%~U=TIP#tN!sW``eX3gDi0wsp|=X1jX(} z{K_$BIyMnqwh8Vt47%uc<;b9PyJPXhnX%sGj%P>ijlZLO@yZ<o+z?p#n0FHUGet|> zML=<|oIZDH6EoCGfCNuG(sq^wuA1}#_Zk{6Y<a7UWSIp{+Wr;;SYm%8KE?j_XN(e* z7%e_gQXKnRH^9)z{&qYPbM0>`n#5X?eR>jjmT$@*PhmOB{&or)vh8o<K`v9o*3uhb zz}7-+uaYIcEGUP2tqSz2xl4|^yO|t?X)OLZY6M+gT<kcII)sgm(T!A5_5f*DyhS0r zYL(0Aa4mih^=K?n<X=zp4^aS6L1{W|I@j05g+lbCbi9e<Y6ibxnBm}^@vKSwyATu` zLQkwas(HRNWEptq&MOMU1MF|Efv4BAwgPbjr((B%7pSFFyZL$G>+3K9<1KW_1P1_{ zxlAw~7)vw3M6^gHV!NZTt-Z~yM3e!2qC}M7L6nH^qcm%55L?ec_|^fp5+}6TZU1EG zH>D9yRQ68~EgF=LH=zMrzg`NkX=Jdz2Xg4_4_S>=P;0I~WE8kVo3{P)^bCJE{*YKC zr|q8&$ee5c{HfUV0_cX~cTk3MhTMxtNU5P!CQt;FgCliSt4qyJ_Vb&=5b1_aaKq3` zV8y8@#}tY%AXK$ULpZUBPUCp{3c#ZTF~taCIG_e~l?Mo?Q8!8{GHj7z%@#oIC@$7c zN59FiWUnkNV;E0B3Bhvlt)h2dg)&e!;;5X%=J-cW0<kL|rhnu~GWJgBKZd~)p0(|x zwHP?-aQsQzN8b^!0^%Qeq5!4p2mcNCSm!};Q2LDuH)5S8BUH`y9etAb!=|aj4hY8a zNZYmGYAE)vNrc-vAH)Z{4Zb&x^bgPIlbCdWfy&9c<C#$zrfzlGvnix%3ugGHi~Pe~ zZoRd+W_+>FL7kvbQ6|A-=R@UOin2NQvwi^tx$S~CQHi3Rkk>McVX&6|fMOV|4@2*K zPcpE7Ape_hN$Z`*2=17k8S*~@c-t=csJOKW-qLt^o?MjOU4}?j_;%rMU1zlHogNn% zCtHtXBMdZf8~ROJS0RPF^+0OUQ9XyFq&^R0z<<+0qt<9t54Cc*UCB=fsWKLV0LI}> zjRb7-_7g8<Dtm`T<bFbU*}^{%(v-3zfp6NJbN$2RonC{e1Se0V%B(T7_D0oa&9&4v zReqJ3BW!ySa{Qd2#Ck*`B(Q5{DI!5rUoHAg=6sd)3+&fs#68wK+|MnCKDwb!^wFui z-_PZo{jKYxC;i}?=%ZtdF7(lU5O{m8kG|ZL)<^R)wf;{Z{kr<-t-xpQRQx}E^gmu7 z?RnGxVSV%`kNunVQ6tfr33jiKjz)=$QR~a}(R-fRV|{c}{J%~g{maui`sib4{-^7s z%{V)XBM|@7M?Kcp)JN|}tg(NAKDzma{{nsV>g|kI_aCZ{K5^OC&_`!&Lyw@3HvN3p z`e^2SF^-QnxQv%D@FAf0reF~wz(>^WHsxZuqumpy$sSQ=tmM67Y>G~%p(Vg&Lx385 z{V4N$P;6<tD5kn!!lwY%ASL(}lU4mWV-P_OaU6e+^<`6D<KfuzJXdZNv;#6AGZw0d zvY{pN@}UIBy1ZY|G0VcuBB0LrnPWzy;n<Xb2k`?WG#leuBB9iy%~*)VK#gGri<cqh z92SUFmP*Bp<b$06OVaX=2#`PvAy%#N+f-r+9)E${IBzJ6j!0o$1+F-Y7VzMDf=3o% zCX=*MJ1xw#mexFMd*PB2Pg{+O@_hhM<E*2cb?P~4eJzawIpt_LnsluP9RQy}J}%;D zYK)&K&>)cKy;vVGie)(h*jAntC~re&5xt+^5k@=lBm6pHn7*gYSkN3ame%;TAih05 zNasWJIm|Y9Ht<`<+*!^6m7|u^(U|l+sNJ<B{#-O#ZEUl#8Rv1+vKD4btiq$kQ)O6B ztH!lC{l3Rz;0v_)RHw2vPGzt^@{z~;Ud98ER@Rd4zft3{c$(6&FVq-I2m$UFT%g^x z&?=Qyuzp35?#$AkVOG`Bzoe#osg~e<eAX%W<KAx?hF+>n<<_71P1e^$+6rcG#UI)O zaE`5*PCTWpd0q@7DA8k%o<@C5i}MUBuVb--c(BVq7wIDaYViZmKr?z{m$D8<Ca(Vw zW4doOmZ^Pk(2tR&`@#T;Hwo9s?+iq(;s3p0h;TA8*rLkD2;qHMY%jbcqn6kg7$xHs z12j)it%`Xkkz+sj3RP)|>i`@pDP<)Y24E;ia79T+P&i3TT#f|mcEL@f$}0T<sOS!% zBz%3OTkt7CzI3H?0TKdUqde^(GTbB-pcN7OanVjk{5c>i(%Z%!@gH05^|n}BQ3Sc# zKQ;d}p+H!`@*+v$Tdk)N0c1;KgRG~Y-XP=VoWFxq^O-&SGu%o5cMmM~Ez)BPA=26+ z-OWjNVqa-2E{Suk&*2ST)-pmjw(G_lLE}XfFRVjEp*veB1${=X4~F7NuT3R?;5036 zQlEy~ktQF9`V-i~s4CR%Tv*+I4PKf?z~`<WTSX&^)phM7N}~CCa^gfiH8p6wt*7n? zf<ACprEytlYgIWaT)U+;Rskl*<w#W(#O=VXdRvUA-udr_1r>N&VC8MpAJ&bx@P+UE z$4o57M^rL!dn(Cl?5wfHg|zuEvhDk5F!5Y)Bsw%|gsV5~@8`JL!S0s%#$o@lJ(Aua zSOsUc>x%%UvEF>>4#do`>Aki%pv~Eo%zqSJ4tVs6H+5s#HN}qn0Mqo)lV=p`5PQRt zeQszvy+g0q5H&Y0N|!JB3gt_7S-!2MaVg284VO-nL~55>D~iDuj(t>p7Ya*FPv<co zM;`QOto4E~iypZz@mx-QP1*JFd#Cy?a_XC!U7uu3P7j!e;}RL8N+0XG%bNH~f6v2r zTqGGV+QwRI@4`f;;!`6YII~0#OV*OxaWX$S8F|db$kJA&lgGyb@g7|1jl$+1vXe0$ zXxlo<NY^Lt`)A&9-!>{_&3$nv_9p<s9v5CYYiu?@YRdB{egrQg4&~+*SshUDgK4ug z8DCjTVtJ%DHYB!rLHV58l2Zf5Li3Y%SQ~;V6YgjqrkcI}hK?grhp~)%4Pn189nvD& z0|KOQ>>~51A3z&Z_z--3<@T=cqP?HL`=#yu^@8m7IDQ*}*)GOUooCUF9Ta>zdVO5T z_#E+p%HC<;hvOSGs_z4JF2W^0??%3d=nDb!cc=*nkA9#h-iaR8RwIMR{ffoF_zJaQ zh#`%OghAB(`@S%0u=(r$nh~IB`Wb;*9r~GkcY3^cML#2vr3?BQnw=c*WYfn^e9oqi z7jN1<ec1T1krRZJ7yNty{PY!h0o3Rfe~a{E{KY^pIqg1=ITNiALGNdGTI3DNS()Bb zzc?eH8yh6(4`vywG6e{ab+9*~88=KB2t&SIWgr+*V7+-q68K8AT)!VC(C!_^2*L2! zagN-!aYG1@n5l7B^rz-U`aLYW0P|vid{(yH+_9oF!5^@4mjpNf?SbHBUj#vl!3q83 zex7InKa?#W+p*d_@O<}~r7wqPyc?b$bpem@_BVp(r{}rhf&85LTU$P=DcdX<wH4bD zQzx1&A;?@?UZ<wovN&(7RdP^9Ub8>uUm+btI3Jtm7S2L1Z7owC&aVH5*V*-tSM`hh zcGtfYAr2gh$gcn8Zn^c#_e=IijcqNyj~u-tk7LqEhUD$xA>(DJEkWb+5uCv>m8UM7 zXda&_Q*ErNHa@{Tsb-`+^X^(TZFUUb0zEd`+i?n5G@-fLxDeNd{ACuZ<^=oQL(p<E zMt_3V7;lus&+qvI9i_znEw+D^>S$C!YE)t3t13!YYtPm#BT*S<>n+L5dNcz+_|Ogi zHE<5H`waLcI$Rq5(SVy3o${sd|LEXv5q^&if4K{OYwQ7A-TEUY{)tvk;MX3X+;{Rn z1_(1h!~ogfroXn@WeSb8+}#IyYggO9rv1A?eo4b^wOiyFx`lb~SfOEGJ4nO0ERYrx zR6X)KNed-^cId`N(TlG<1~xv>6$=Y<)IelcL4MT)l2!PtW0V7IDqU@k^ilO~w5J<W z>SG0VF}otWbb8h>MXcHL3FtSRnp_S74yUdt2X<`e3iagK5IE@ogVlb_;#lJOLIylD zMni6%jV=zyFBa0qXl94|&~W_L;&(KZ@3V{Xj^A4RjxNSKj1a@|TZ`Y(C3r8zJAP~N zJGwM%ti>ySHkng2M5|-Ozs=@-SRKG&3OBNwx69*Nv)BH>c(Nvdi^PDbQTV?qkQ{*& zyx>{qPAes4zLJ!EMT9~F4~`3-x5)fxj9WU%dNkk?=gq?JZ^35{<I=Pz{Qj#<nNIxv z+bYE`8h&@r@AsYbE%HnAk5L&g=WF^3{QiDvy3d{X{Sx>dvZ6EayL<Tm_Wf@W{$*1X z{QAuq_^lU?@67M}1Fvp=cfEJP?=l~JU4DOLwD5b=*W&kAjuU>D!runJOMU<S{NB_% z&F_EMC(ZA_l*hH^f#3Ni{QkwL-Sa!xy!c~B{Pwi&>*H~$i_p82JW%?_JkGddt$Vg@ zrt!m;pQD3khj4c@j<MGnxW6=H;3Bl`knTm{3anxJ_~E67QpwBu>4+q?V0C^tH7(Bv zt@RA0H-{imXLpNKaK*D=n-3NjT55ffzM<F`J0b&c!JeM%R~Sm3683&phZ>T7{B$6t z7Y$ZvdDD-QwM1-vA(ZCmV`6-Qz)Mg4!Sn5Pb#GLf^TA%PPxtA`t9*LJ=Ez}<ryQ+r zTr`*5xw*qwI2T@n9$amm7zzZm|5jexXJwRM;K#9FOXtz;DRh>26vg!9z5coUHDDZ7 z#+#8moKD|U^stb3qm^XMFB8jJHdXa2jP$^aVpR2GfOpI$w8$nW`n34%u&MABGsq-> z`w6aLL`vgzo}(j}fYzJ)0A#F8<G;7_p<6g|S!a9#|B)IxJ=gNja4&pLq307ckFJFl zhH%{(Oy~6ks#KbT*GhG=zF*jQGqhk$zP|bIr>7XX4N(Iu9?rDaJ3vePI9QqWiqCK_ z4<8bnqCQ$BZ$PHl*1YQEX@%OYaTtkW?|CD=&^6qRB7SWN+;7SQ;farHjOVrZgLtel zUI-fNxNbMA%U19<v0HzFe#Ca*c18pd&~AMZnG7?wx*Iyxpc}_ar;HK4M2m4*p_Ui` z|HWWz4WdaF;VC(_Ppl&!Cp6G_DE6^eMV5=xcp5gW<Td?Zuny=8-pi+Pu%4K}Zv%gE zy+EHryvQwY_#Mwgbp0Y@8!jykE!g6ljlP7EC&!-mo}SF_S?AqQ2jlfVbro#^?e?}n zIb7jXl(^a5q8goqeLHbqE|IWi2khj1Fe*K9*J&y5JLT#g*E5DW!g%edFX#2>$<zAu z4*M@R*2UIrk8SH_oYu#9<-A~n7Jm;YfLk4PB-{Z?ti-RSfs+KP9$>-F2c<g5zYU9B zXI`jDJZIzhRtsIibxF7V3}1uDtKG`0Cxe?7cq5t+z@|VUhH3y3t6{A-p074uif!=9 zpnQt5)y6W6gLNZ{Q-6@%7@H!GB#59$nAu5%pvq~tE2`{+FIm)^&}l<$M)5${7(}fd zkFXfDXicQ+u-B9!4jGFO0HfkuKjUkrsvEu3?a}#(8TVosuWJzEkPXBZPjQrfa6Z>Z zpdjtmwSYRXX-Rhf7^M(9G2#_%cki~Jr|r7c{r|?Ix4p)Gw4rV)p@kSn5*H!ErEJLD z9Q!a2j_yE(b%*o^pK86<&FOm3sfL0opGCVh;UW1Z5Fz$>&~9V^cqVcPyHgH(e9fle zg}91n7;;+Ns1f<ZbPLm_GmgCH3f}yPYP?Q?t_<VWVsY3D2#ysN2Lo8$yHKxy6hPcf zyd^$%7twBOMj3^5?*_dBGD(Ynfo#>riW+038g#3NkWhe>V5j_(eM?&uRC!V(hHgqw zw`+<%g#xh+J>*`%-=flB?7beS!1`^vKBp0o5}h;C`io+j8_|kv15`s!hIQk!Y6H7- zVW1Pk56MZS2`|+Ls_`D?y}%2rxr1jtNxw>DEY^oWZYDOs1JSxuFj&nUmxzBj25Gn_ zP#p2sa_6HKLMzb?g{)s?@T}^O?F9G!0fTOXGBO(kPD0ffQ9WoZ2x8~|q1=8539Gy7 zZ0fNX3IK8r@CD?nQPsy9<ZgGQzaAou<E|UuA-RB3tO5sqjv;5I;FJ8T-S#4S_pBs5 z#lP1103mmrXA=V_p$2KtdX~eUCTY+&=LOL7Z;(EhuR*CwYPC`*YyK6-KJ4*v=DU#b z235<K)MVdj<Ce1?mN}4W=BW_KaCTn^Cv(t2vZl}MLQFONw8W=)<v5kVCsIu~uW`aT zJ#|7MXQWbnGrZZ)#V8|tar&OhWSvJJ!aINxFS9)7l2X=-d9t9!7mBU-hT&(9`SO=Y ztuwv=ar8^?0fiQPkPoR|j!uHBF$8=#EqU&dg`l!ZSQ~ZY?@&QvAL7>N6a3NcoVgw; zTaHNYk^K?Jof-<r9ATf6l*0WA!`^kLC8r$;Lgcg#l7vhLQItx5<Gl5oQ$V0FS`d35 zto;gFBcR}l>-W-Qm3~jOXKeKj^ba#YO(BI};vg0xbxhE%Bod68LT&FF;LXQU#k0F< z@tLSb5C=hxT74*y*2hSwI%H#|to{saGe6DTxtrH0k0?BPY-?czM_INMMvm5#KSnnw z$2V*7KY~l43`P1i!4dq)TSSD<=?7izPJC#q@sUc}XHcG<maIni(Sv|B0B|(V#uPlo z?m~&0NEpo1x(I0^|Egs4tvp)}pkL_qoeQlh7HX?O#oVrz7OdltW)42ht-<Q>Kfby9 zwJVSJK)i#W^<?)Ssu!h?;`+-GlaJXDyJD6%dN`u0BhdMI#T>KlFeh~^6DwL#Z*Y#S zzm7#*&g++&pMS9#;Gw<|ZMBUAfpl$5ZpO-drrE$-4~?o>W(RWNVK$Bx4H{HcHR|+Q zysg$#-ESiBMwO|jsv6xp8u0fY3F9}`<)2fLZZ;3mpa}$g-mtMor%7y;nPkya!}vB2 z=oQVbGJhB01rn>w{>W?IizYMDc0%(AbLC#_bvbL{zBz2@XVmLYdER*anP-0g=efG~ zc^$h9*A_dccT(rqv$7dKQI)=k(q=9D0Y~6@PB%86U!qrh3LQL>*WCW1o*F%=eY4W@ z05)%9D8~JcS;{KHQn7}%e80lhd*CJ?AMx9#kUhZze?4FaNHG{sVrzQDw)NmH2b^4t zJf*8cVlx=k!OB>{4UXcmi_GC6jJb>lCx2|*%hWG+;I@`#*LtNdgi8iJkgHki6}CUt zvOadNSFlhCQg+qxUg3|xujl*1LqNW~AzqK*hiieqNA_+Ua&+V%V(uw}<R8_-#>JQg zf8=Yc5jB8|iLw@ZcOnBq$S!{p%MU<#YWzMkDwUAwe364y8ylk!wm;mgSB&vR|I+?T zhaS;FpIuZf_<)@X1O;;smMsX#pS+d~8!0UNnCx0?_Eo^{A2tq$5v-61c$Re4R^{XL zV8HZ+z1R%6&CY&}805lOjIqj4#fHd%!N&5Vjh7(jL&g`8;xP8u9&Hj#^mA5O*a@In zN%SlX?~c65>-1!v+%$qH`m3<xjcrO=?3jzU8IxaA-KUoCMdnrfiuI@Glg#>a=oUA* z=Z+@{Y^-&_N3QXl&om6A&s>fUVkb>%Yil)0Bv{(S78dF_>D{)ld7ADq874W?dCH?q z`P=RC>roKp36#5h=}%Gq*xi&rOO+3(@+JInmv3bGPoQOFw{MMYclWp%_z1Z0!La7; z0@?IkB={&`4GumzDRX}ZC@Be5EQ=h5Jw;&P6EZ9BxsNf}n>Z)f_$MLR>)&HYL$A=k z3Kq;T*L>hx^QoIS>Re39G*?I+tSCC0HOYcFYdfepqaXYepa2Lm7#j#<Vj52-o2XZ8 zj7$j`FKKgnhm4(#TaS*Efm*m8E@In-Y!yBu`DQ>`rY}c6TNmYz%cY`7MP0>~NF<cJ z9?NJ;*#mR~RfnN=pb?yJkbWwoXYhPif9nz-gyGX;jPgxE-2ByLEm*lZD+|oPDCRJA z@H{Lbnqh|688vO5Z(r4{_<LjIM8K`Ze<E^UU<V|SfPg*UY)TMg06Cu^18(3F?q0}i zjOx?=i>&b^|AmYl9JV)L77vNbhtFgzaKuyJ8vr?6rsQD=@#@3Id%Cd>s)`y^OyEwY zj@9rZNbBaL@3NMxgih}wFWXc%<|%pkr0Jq35i}49isvC}4lQdTnd~n-cYmBc1^x(v z$bsDU*)b9$HX4?ITA{Fg9O<X0hQ7Z1c#nDI^uMxrVsD5jOynlg^wiW1)Pp3fSvYyx zhEr1~Xz-Ajd_Dc*bf{lY_~>7ySG;`nz833La)o{tORoXVzN#nB^o3IaWL+LL;eQdi zER;m`P%8VtO7u$PauA3wY@D_MGxipKGN$<2kGA#OaGv^<?0ycRK~9Bt=GBd%HB3Yo zP}$JE*@Z{0XBVQQ)fg<odU&`moVS;51byvIkY6G1t6{^}p1$v#XO0(yQ{BIK^?2vZ zS0nlWAf89+he*YD3s;?Xn4iLPLd26PQRmwhHq8>zr1QruS|-8Q&}4w{jBC-pSHZQ& zgWK@Bz(3py*<fmDJz6u{uTx{7aSURM3ZEho=*hlg2}*2xp{@;Esi#K3mazr{1LQw1 z-^+kl;GeO+6#kQ?NV#Srpx2W@YRS=$u!nDt_J_;R(hYV?+`l8bWOE-x(}?%1rdK0( z7fnYEm<?Og`4^yq&0!3XKJYC))}dYN*RgU48^a-PU_?BbV&5o(YE@`OfljBKQ5rV9 z?WQ9y%igih#n-g_1QF?}zUKjg_F3kYJ)IGV62vbVfxQ`tGws}U$CVg?>o>TCJNZ#h z4lQ8!pt&6^EHw3=eAL{1!z;%V4T2cp#N+q_jnGpMG%_8UNHY$YQ<WWp!(ZShW=GM$ z6!}dxH}Vw@So**%sV2UZwK(ot%hLO`tjENp!U39Vo(u}fmKW5g0SdMa8}*8|Yy0SV z-7nyKMcdVVtXF2{W3*Yd$2uGm3UIOy^Cuy}{OmS?j!NWUJ@pfe&a2Q7+qhH!l*1;< zuYk8TwqQ~kGLak^7*t)u6@;iO`nY+|r&;o-`*SY~JObMi^?bF@I$mHye5|Y~7U!=| zJg*d2)&k6@4gv`C36D9UPl3k_qF#Q#!1;b?`ulKx@6Yc_KELj;QArm{FlcZC1jQCd z8Fp*J?6ji@hrC<x*pK`bf;3A0WDBqwy@EoVtAUr!3K^f`x~unO^^M(V%-S#siWL`u zTN4l*%OU~HqJ_p*7*k?fdqhsa%+iO3kp3^nKI{?O*&{L__Fnhc*8E5joOt_z`=%VH zd*9G2+9UP$xKVA-Qn@QJ08j~RMGlDCu`{wV1Qk7Gtia?7Ah0tDI|pax*lHMbdPJYb z(ia;1vi8T#`-Zv~XP^gLpM++eg(;~2+MJ%)J3CH~4V^p%w2o;ZGEAMGeU?if+^vKV zw;QxS4~h<#$)>%Bn!iNzz!IUKS|a!XuWjBZpERE0iN4b~-Rp^-+*<4Ps**37-2qpy zVu`UJGOuDuwC|H1uNTTMYVREl)|9nS3jcjRB^jb)Jhy*=r#+@5Z3<LP*=j5@7tSKx zE`0Q;5Pn*hZKTj$WghbxY;P4ywD^UP8sMSFL{?|$7lhWS=jd{LGP)cYaC1-iFaXwp zT)z9zseIL`;p~*mpXh|A{XJKG*%=Sfjh#=T<>_*8+3o=gTY2b(xmRWOa0E#BUBUCu zYYERef-VOrtV^<hs<DA;1ezeXvc3)6B^*=tqpirpezf-Vwm)qCWQZFkGU9{@6NEUV z-WVo=?vJ8N=swp6U-ms&yTzr^sQqfuUouPJJebFQdg_`-WhLAfvsQF4PV_>tThv^g ztXd(sGu{fO>b=zi+iIX~=x-S#R>US^MP2b}1nhX)GUSIV!j@(%Mh|eW9|@m%62Qe0 zoI<?Bwe-##UC$OLACw$jl2|^aI=0RmIV!fTBO?3#=qUVK9I+j1L*B(c>ygX3w~KK~ z!bO0In6;Qb!%oM162*)Phf!z|bIlajJ}w1M@MX5an1YEA9l5iGrCkUTcxiOyM4A0b z@NNC#0rv_T^051)K{@L)E@hPOl6Bv@oc2Y3e2e%nR?SoEvmgK6Ew5AE13C4{3dyN2 zw?FRs##$${Dpz-jr&@RSpl@Zr+v;W~|4Xi`Hl+K(Qm%lE(f(xZ1s1I$)o#9|aJ2o; zVnbW5A<rE86gu0nL0eG2C9!-u_Rb>yp5~^jc678q&2dcDZ%LinVdz`h-!mJ_3)Fh; z5`~|!))jy2)StGNi5a-8p~&g(aMpTntaWTx<(pmQcVMJ<Q~r~8yJ&x|tNgROFaO7` z%CB~nzi#*Cujo{MH{<2|bob-6H`Xb;8?VBvcR60eCv`Pm%f6pGUi04R0$-&WxV~(> zuJ5XRgRA_PjMvFsm2Y&F|B~_AxiS}irO2eP=!YQ7Vv5===4~<fXFy0`NpHK%{ozAe zJlC5`a9&5`h482NBf1GU;}0m`?<T#&P?si*obQv>_YC3Xd>^g8X9z3vJs18AkpTWz zuxpeJ|HuDO@OSSD{>(sT>UYDR8K|7^HvE}^$b2V!8{tGIbBy44&|%Ou%n0ssgN+}8 z6!V>T1&t<xPba@*O=|kU7xcU{VAFdZ`+@^MW68mtO3Hj;obPMx0deTAlKS|dld83O z3#fcAx6YWqJxdyJejWHKvV^e8NwS%jC-+iWAIBBY*k!}2@Y47DVsUulb3UatLqVEd zxC5%bvKKk<qLGDiB**TfXjJCk=jHYizQ|#=G^i)K6Xwb=Sr9f})(5u2aX{B<-wanQ zos6|YtMxrXkUH^9wwoII!5TmTpAb-K*mw>=94<g0&0SxY6<IA(kxy0hi`<G<YCBv= zQTjb?RdoF0-NUd<Nvi|jH!q1$!qfqRwfdmz(Dq85E$)N`i=e}pF!>-3sOZT%$AVGd zBp|A^brFFuwxL6fJ*7k60UYSYxmm44AHX0FI;lpR*J3@0`(~T7`WG6wv};`TP+dGi zRXz8;99(VQivy<gHaEU@S>GHG3P63Mhk!aUx4z%*X?+t^eF;@xQEq*s_q4wKRDCC^ z`j)QF>2J?WeGYx*@Snb5XE(F??+_1J4CDC2Qx?)d3PK&Y1a_jPkYU2vqZ|3~2;sx+ zVca{sU|ToyG^s?nw(4Hf;p4DT>uaNl-R5vpd`zLQ3_1x%9)-sUgZ1u*ZtCOslOOd3 zTe~?tiCiweyxaoJ!k5ce3160VPxECVtiw)!gT}H>>?obS3=QUV+NDsDpTL{KqG|qQ zKS_5)KxaN(3G)GH<#+i)E0u)G&8JiQxI0LC&eXsAif>RA*Q<)(|9eiw16Z-W9^VDO z-aKhDyk!-yf^F4~Ew*yel@4?Td@CYncYON=Zb(#oyEIQaI2Le#Z-3pJEQRqDeq~2w zIQ!xnsw{mgtH0nk<|HNU8lOL9i>VXGsOCQUTTZtJq2Wvm+4%fQ^&hS3-`Y*Ob4zah zFW`vfH>&@65?JcQdsO|$<ko-LH?99tRey!5|HXH6@Y6e|eqrTP!Or`btGQDO@$5Qs zxnnG>awfD;_k1SqituWeEi(MlLIa}yM_X-CH#|eE=h`yN-y8#{%+%A%B;zOMCaR)P zldkBzgy;zfV6RwYUVRMK!9u^`)I%&tXGz%nKbL@*Vk0-Ne~$!Ai;MXyRi&KMF^}}& zBt12UPUoRE)fRW3EAVR7ZCGFCzT5T~XHN)f-}FL{7EjRHOJAZ#R1fCUEMcDVFtofm zP%1_g!tOKQi?pU;x>=G*ZW<QCvbeBuN(cepwy<n!=r#9fz|j;~wBVZ67T~57s;DY# z4HVnIp=0D*YUtI6f(VT%CHCt?zP1HQ^X(G&1bdg%62Qi;3|`tarSuQGWXH@eYg0d# zSz7~WyRBuscN#!}1)y1*(+3`<BMO_s-A=`#)(htce{>zPOmwm+z08&G3OnC{(RJ1d z&`gz`0{H1hob~=aH`d#5*553@98`d<G6V}vq?|6LhK_K->fl5-CKg$1u~?eljEv@y zSl7YU<Xbn@(-z<=nrH#($*&+(3bqAGB#oPzK%4!&Tz(B4heBe2FB6P<y|uAPrB@YN z`=Ft4Y9hQ2)|=aL|Aw<g+h$&O83`8#2A-JF3$5|gys_2$n@?!rz|J8|9KaWRTCiBC z5{S$nuVS7>=BLbqb@T5U<nU`oKeYFIS{{AcwSb!ryT<e)te>&=rl(6}U$(PjO{Se* z$_^rJ39YXhJI*?om{Esq_m;=?W<{6nnKu&jbh&(9Gos3EeTk3jO)tu&_q$<TRbVQ9 zsB!p#y&&!9acqy9jj^?vAs-0_nBgEh4UVV7!U(L&{Hg9&-UWJW8>WV8Sh1&VSoj#J zX&82jy5D>d>3o=?^R{7%wvAyW_|(Wx#xQPJIvah8zSwN4`~IxgKqYgJMRii8-3n55 zo3dNcpinpTe{Ei$9!B^^7?*6?{v?aGo8|j0H?AgdD$9Y<c6Db-HeDYNuRWWt$Nvxr zwCVb07F4iJy;Ji@(}d5sw8+{ABQU=nm^9DEx)bzV|KvBJXNQ{ctD{v<Ya=iI22h~r zdKX0xe9=wO4^KqXGG@aHt&44PezQG8X1V12`*%ski_8HZ@pqNEaumopts+ssa_D*1 zf-j}#@2<`?)FnNKi5W$gL3vzn{*Vpk&PTo+dOqQWbh&}@xZW&7xjnIewPfrDUE9Cj zB<8AjZT}j-OMA+u^SZL9G#-&_Pr2gxTzdqllW@VUMG!592|2dD#q?gYql40a5gcAH zFu<C5C_oIw7GryFJ>n;njs%Y$^oF}iIp50h0&mfMJ~h(6SJvcBza_|m8pNBxabp}G zS6*1$A!OfCVv4EX(BV02nkRY?Q|O(PudMXAZH-$cVyA~q|Izb1<KrdT12yx*alprd zTzlXoe*t)>XGd{{yfA(+#k94S{`G7X*^}Np2dORgeq4r{LoRl2u{Y=LuZus>KV|jW z#VK(5<QIs8IByBV;x;@Ghlsapx^b|7a<!fu1tG8<*jyI9B&f~F_cwKuH0=K9MvbpE zzZ>AqA_%y2<ivBpP70iT)|*whKS}Ki!6IRdf<#y;icOn&0D8b`+kZ>@1d#qf`x>YX z%a`}{m_OS2MTgmNIJXSc{6T#M;U%aWVbFO*vD5a2>3ffnk|q_-hkl2)-ZyWCuP2U@ z<GIz`jy(<YuJsfNbV3S&YD!iRfG9o#r1j<)?CaqRKFnXm5AGxOhA9^!IvY&pvjZ?> zid}DKW)y$wOt*X(VQe%@&>EaE7^z@fu07lFhXHw~t^`s@n?=|h=oyOr*yo9s>c*f@ zlKw9tcrEDO&&)xPY(O$Ra9|{I99U>9Quv{p42~fFQyfkH^vUK9x|yJ9<4yBt*r$M) zrn`wR^4q#(1>^F-U1yTdy!OvtoP5{`WbjboY^)T42&ydO@BuC{fCAzgJkSy8L*?^| z3&Cfpe)$TA=H1wimGH+(fBmxYnereH!MVm~?X1lBjQuOdXA?lpj8BsYp7i)U33RIQ zISl6i-H*>9{nO*~nXMiih#4ruV56YNJ7W;W2*B^}MKuZyF1b*%lo1+2Fi%bC4irX1 zIFb-bo`AhZ7zR@PZUQ)$dd%X_cXVJUHd(h6GNF&i1dNiFxQEI^>f#k+o#7IrfEq7j z)GXbI&NlPW<0PLsQfuL{g=TQ{CY&5MTZ?0_3>8d)^TN1hbMUOK9U-i!Q#CE{hiw6g zd+NBy8#dkw8>41}F=vI6-LNC8&kQF=%?@EN7U8rvgi|$-hEsKOLFlvK;nak@Gs8w* zV<<KJFg><<gFbLEy{h5IfoJHe<m-@kr*2#~8wQUXQDyMVkg+v*HrnZ^2ic5+Y^s^t z%FXJjg>?{9W-0DLK=rf31^{d|FThBGoX`t%KYR&STsIp4%{)KY5cx5(2(Wes%tJ0f zk5eZk^3fZCI@Je8hnglmb@rik$pg`*_?HZPJ#1{_{R3J@v@sO>U_&TXeZm)Y@OMJ5 z>VqAOWix6n21gN3E4)w5pW?E+hI6co!8edEGH~n~M$a0GG;`ab?)^ue&P|=}ZS8Ty zro}!)vrnDgt#!C}(5A)tk)EyI!}Zt#uhDkH+I)=24ITU&sSD0M_Gm`4(o<J;!yOym z=r9~E0^nZk>n*t9Jx_pHp&fc6!|Wob#kP76Xo;;Zj<wV_^=R$p$?z|#F<y>*w`o5H zaIx!&&TZ{6fw=&GreuvOsT-dj!6x+7nO?*zv#Sj@d8OKBJ!WAI^9eRCUxrEYQ_OA< z`C9uFM_$yFFNp4spfmYchqid}(5IIasn~G!2lxiptsplI;n*|hgp(pi*3jv!{jd!G z1j;u=d!e|Lihhb$ddr>O(YW=x$-Y4O_q6*L_FpE>DvI8*xefsg@9;;|I!ZVwxsRSa z)imol$;PtQ<39>R8Z<ybci@%$uo)R|Vn-D6vd!$ZG~Z(^T(IrX^!6sgt`sb@?dP<& zAg}Q}jCag#z3^7Pi~WHgaBx<AKQHp_NqtWr>2ueo;sv}(r#%{>l9SQs4!vS>QENA^ zb`!V-3+Ns=L8m9j6}5kF0{jIzmtx+555;)hTT>YFF3~F%P5+_T<c#$yXjKGKWgL8w zqlNlFc;asNP6vY`YF%i^NPp=ygPOX9V%7c<FUnw*J+3GeTY>>!am`>+;c-F$HD3Ei ztlZn5(dKMmlhWSA7=nhp5X3gY*sx*RlZk^j+CkZTJu*dBIW@OG;n<D2=ELH+BT_)H ztbrIibgTV|3~9)ELE&SQs3C6vA6VOAj;p9u`1l0)NYb@~keqGJAbONtI)vl!p&@6N zYO&jqXmo?)RDQ@n8nrvB??XluX|elRUcMoYRUx4nDNEHMRYliSCK(hZQiUKdKnkK= z!7>-ymVf<kcxF^An495KNvx;(B~TAs@fPb|)LgM-`iXin4>Dc#F#0Uev)VyV8ovFE zR!Fywvxr44!Sf5u7HqBYcrtk*4^>6=)_KS=0Wy<#vkLH{@PqTQIX0LQ+XgcR!cc55 z8^ADJb9Tc4Me}LQCN3LH9@3hI^*4W=Np2c8fJkVZ(jPXMcpe;#0uAh+vUl`9mR04m zs!1rrm+pAc4aE3A-%jX(1d8o5?01i3fYdaH+9~@=j#l%#e8+G=a1=NGWB?kB!GQ`3 z)9Y{6AZxM6a}EGt4X7+PvIbVL6x%QjIL179tUcwyHgXrMVCGcclTc0iqyQ`sV*bI+ z31MSmKuhp`2|Huq61KNlE~n6SyD474;4v4Rlc^f&j8o#>n^3i(D_aw=P>3#}+ER1O zOof)ck$`@cn7T^9bLsqkNHkAEf;JCx;M77~k+4H<fw<!k#sK&vXw;rNe;;PrCta#! z{&$$*l~Sd8ax6=|&XVRhlrpNutA&H39#GCJ1Yxj%ht|LV7|3M3f0O`CT;kPP>El@~ z@sUQWf%>M*KYXV7K&1r~9Y|UlNh+<X&>@qymL*tiutX9TjdS^63>%My*d)gU2KZd| zuZwI$L2uZ}(!OHi9WDKs2C_MMOlAm9%?!bqga+mZ+SG_){4fCZW??3G{0yqQsQ}g> zaJnJ|j(rAIiMzLf>v`MEcN*}XwosK=-&ONG?-`(fdZD?H8K_Jx5mz}a@iTN76#8zQ zq?JvcVnqYSMLn5VWZsl6tHm#+&tV3VBJ<U!6(sOVhnfTnpFmh>hFC}{nNn_rQA+K{ zelou&sbKq^q#Z%8F|5J5Qrsj104UwZLUXdz4D}NI#PFeBFz08ZRkb|gF1EN4kRi>k zaz*AT4n*p7qQGQ6WtR&ZQ*?{xvqbJFKgySvqRzI3TYmLT>@Zn&#r}>p2EX+}SvFa< z1;+EWHE<=k4i=gL@WbTzja`Xf+md)DiNSG)OplGSF7h;-V`Ai-gKH#Kzs#asl=I9T zD|;C!JZ}wUxWin47xSa%*~}vIA~pl-&B4`PA-QxbD7E74Gzih3wcpv^4lvq3RQidt zHlX>zwh8WDJ|8rrOZl9iN&d?6c^RSxX36LIc7h|H|75>=L0F1A?z2<&LJD>86yL$X zo#gZ1Z`d>WJZ%&xMYt$SKHrUMG9$Jd`8;X<F6DE7SJf{0T*<0k^0@$A68Ze(?Fucu zkRbATwn`BB+!u-F-AKrl&l?#Q$Cl5%nd$0usgn79m~erV%9hX1qST(q=bIY|^naav zzJEk!bY1fK$?09n=Si8|o#pe>b10^G97oCLA<Vox`8*(9Tef_zMB`~0ASlgj89DO# z!?V(Gcb3m(HYB<7`FAYTm3;P*3dS~nxqN=>3D%G!pU<+Z-Hm*HK+28eDPSzv)tq4- zm;tAgd_Hy&8fsfu^y~k3^7-l4)50;bhw?e_9E-Z;^RY-t%jf=hF~dtJmlv6f*$m|K zw39o_=kg2)o#Zp+vSWV_Jma#zW1$h7g8d{cEwS~8IibLObSdG1UdiCw@<Cj53(UJS zAL>1k!{D&5!vOj0Q<~>VsLzl(ts5WG?q1lq607{^Pzlw|eJbozqTYSY2B$ctp~Cd~ zh!c0mS=dnJwk)@*u3Cum0z4;KV&`vv!Zsa_#uu6nrw?_TrevN@_s`_+Nv5*uzp#h| znXQn=^=1&I)Anup?#=!Ze9VGhbeH(JIrG7Vk3T&574e}v#dnX73l`Y;D6;dX@llH} z#K)DDUl|`KJeJ1CKzYRe2TG^U8@lFi-DTLr$$FSX)E=L=JM=>Cc?Y=uK=b48RTIr1 z$OYPo1GlKjlymYiNHd1{&138|(Yvb(ll6XvTX{%UU83+1!EFIQx93<+7G9f^s$wp@ zI7_d!-#M>y9xpQAuv46sSFyRsPT|Vy|6}jX<D;mu{^4#Cppm8Gf(Av68YNLw;+jCv zbkc!p=s;u<To5&ixTACvP=Uto25Q>I_|tJ8WyX12M#p8;h+9YkB!C;>j52QEf>zNY zAj&G__x;{m)m5DZbjJ62-#^}bl&-3~pL@1@?z!hOPoDk~znHQ;UYZB<M{Jf{e7SD} z>x6MPo1$567n=+eT3MU*7j})gai~930T8m5xV`@Byt*gUB`Dfz30FIQMt1cwA8OC> zYeQAN3U9n+G4_eA*Eg@C6NXx8v2U|zrQXFXnuns}^*pOV5hsX*ndo_+EIJ^7RXfga z4$wagaAJS(YeNdf5>0>O4^qJbFu6jT57qc7d_o>50EKdac0cpf73T^iU@DheJM<qB zH4mA*+K{W{0_~PmsR43<cDX3!Q~>trZ;4oYo3*mZ`UMXY-oTjDj!!D8jGAtW_hGK( zaH^*(Sbodd7l<H0EfTSvE`Hn02v%o_&Ubx45SF4dcx^5%!~}`S#<vplo7nUe&su4v zSygJGZ>rni0?x%8FrSOL$<D=`)N{G-D-r{D-e9lij2@PqLLf#zdy2n*KYfagY`N~j z8cx*^6e2KOAQKlwFhDD@SJ?kV=WD7d)LS8?wdxWmi)Bi--b<ENq9H7w0*UEvbrGuP z-?1z$mbSwZ#cvZT{-S0KhiNcy?$if8kA@Qn0K%O%i2mI|%r@yS@9QciC7?|yF$SPo z)BXrF66>-m1_89zWtSV3t=DBhv-N)`;=`OSG#e1E)VVJj#?M?dPRTMIKuTP{t<!T^ zv(@PwtJ8Abw|lSE@#&SuKSZ~HU%##XlbrSES@k#RkEQCKGQiMKcg^C30I6R42Kv+7 zSa?9aBbPHE4$-&uHvz9H5y|HMeCrh<-Y;i*bID}>G=(4Jk60Xrc0)C|qAT`p%mupO zLCyMU?^0r=yPYtG7V=5wli)!_B9Fcd2!Rm(TnO&a7vV*X!_I0g6Q9Bd?)1&RAJ*lS zZz0ueCiyT|k;~t)TUl!*u?H67CZonp#5d?IJ=i1YElbY^`oRCMo%Q0cmN#2q8la4@ z<jpF0VM+S7<;`2>x8Edh=CKeew&YE<`EJXbtIaRgN-{?uZGPcOQpy`IzqBiF?wR_Z z$eaA3K(bcy=8r4e%A3_gNMDw`*@m~)@@5=LwJUG#H;YPnvxskO&>?SfWl>w+R56n& zZ@A>thecEJhAU3Wn{)9Ad4#+X3(k|6r<J_9vzsk%#DdeEDm6eZIJZPtDqY?LPztC? zdGn=MyZ<(M)AiQ>P~P-i@&9dkbI0=ZDQ+!qKJ$sWZ7pwhO!-yv<}q3NKan@@JcWiW z*6oltWjigl-A3Msb>=o)e|!LWGlf;Rl{ZEiKmS+q=5S}HTgjV0?65lipUa!tCmld> z$eYtrb*IalA+I2RbL05`SLMxCR~va#$JObtkvC&;>Mtd4c)xs_yg3&iC~p+l7W9j2 zk(wrN#yeU$ki2<Rte4m6V@?P9(BHhden6w;AGH_3RIs|Ge-yTJZ<niIDJ{F{|G>Fm zYz`v*c2%r?Z!eL{;)m>n@vh(zfp}FV{IxTd^~A#WJAL^2t}b{yoR4CKu3!$JF@VL6 z(66+L!DHtTC{s~NZwLsv-{s+H7wm%>w_|mReE?Q9z$}q`8IqF=tchafx=x>W8V3_* zd3(LfaAEd(cg$abA#%Oz7mu6u3s9;C<A3m1jvp8Nv_F13!8!h==J?ljG=8ht0mhHj zs5O4Gggt(-QpNaBJ@ELSu*WYRF@BWl$X^wrTCQcE<D5YB3;*reGto|4|Lw{4=l1-! zU%nnZ^w;@s|6>cebjpAGX}<nP{@dptu+9H1|Lx&-P}U3o?dj)X4%+%}-+P@6pQe%= zkN{S)>Hgc3UJ(54f5U%!(4U>&u5S+}+O+lG-XK)sbVb_o-+uii5DHY=f(HJs(~Xm1 zg|X;6MV}zN%5NO@w)XwE2fs?9lkK$Y?|LaABkB4A@wi!^(QbRK{9SzuQ{{@pBkW%& z*AYFGTl7FKMS2ka+c)1PHCleK{I@SLzoq+czc874L`VMH&6|kl?fP%mGpS?$?QyJ^ zwweER|Lv(WQh2>^5MbHXfBVgAI`rSZ|2dTS-}2wS_Aw_$CkLWw8btuLl>heObvBx{ z_TS$4yhP_KnFr{6WS-Ng=)~s-Up^o{-}n!^p?2~4E<#4)^BnQGS$_s*leYBJ3ZH|2 zN|n1-JZ{!+K{<iX2lA)Pu5IP-`am`DTKc<oUjUus$)!$z%0gksNcmG<+r*~n@A?7N zu>JbGzPAHwZ8^NZFf)Ys%9EV%q`zw+S~LA!Z-gb+=@BIEgRz{s5jHZ-6bs*Lc)lWf zHaym*>#oq5JQRl+%PxmAHo8Su>y%q%=ng0cIhNfGE)!D!5dN>&s>RlSrv3u9Pp}o0 z3I0w0S6bOE|JT1(#0vt5n+`BxzkMz}6}Q9Tm0H>}fEd&j3{$@h3G@+1a90tG^R$t; zfA$tACi>Ft9=YEC75>Qcr?v8T-4U|q=Xw~B^)BeB?eF^Fvz&(1{Hy>t<@}sZeQCe* zb1J%J&QB+ETj1mqo%7@LcSYbv#1nc4E^uvqT^-YK7EYN{eRJPLG;=t&!re)UO(JJa zcW$L#>esfz!BjsLFo(~loPaEv^@Uq&@Hx7(>NkhlxUxzw)*5)RJ_uD3Go(A5S!?LT z>Q`RC5!{)J0HFuz$O`vRIH`u!MCGxjk0|1w2jJb0VCBPfe`Ld!aR?TUdMh*oifxZS zz)cjESK+!!w^c?7)I(UCi-UE-bM-0A2@FScfw~k46-9gDlUj4pWlD4_%#dR9aV#{? z@_Gmp>>HnhVcEW`HU9nhuBwSkh3~2w`Fac7ZO{D0kE<3j5Yu-xgmAQDU%+Gw&(&2^ z_MtnOx$s_%qFuf6CroY|f5n3y|84${&mYMDadX$-<o^g0qD|qc{T7^(moZee57Fhx zIK}{&M{^efV3I^}LGROeVGL;S^32>cPB5NfsJhVXRH%P)Cj}KYJm{WWD7@GGIG(_O z0@x|x#}fE4i!3?*qR*ANyiXzk@(Bz&D_4oc@y0Eg2!4S9+{;+!&;Pd{C#nO8sYiEt z{hG5Z#1z#l(T|YXuQizYxT7nBOR@ki+u0Gw->P4k#5$S2f6?X49q*f~W|YIrdC%0* zJj5^peE}A`-T-~LlzG>KX^8b23|V<JkY`|6Sle?a7}R&>S;AeM@tAv&pdw2rTdYk4 zss|2kuF&YxRPLHOTyCn;B*ras>?VuR7kcC8>fdkR>U}1+mBbP>e`la*%hVa77s)#( z)l_JkjsBu97QftsKoCoTUeX@!FY22+?G)A^-{WV>CL&8R^%~ZVF)|M*ntiEWCw4?Q zimW%VZG?_=At;PnQKK9$?xziCKk8?m2^e$tMC29O;D(w3E|(ae87N8yv=BPoH+Skm zV&3lL2`=>PT_XOttz@=gRG+f1nwN>dSD*L=Up9$f%)>bavOSkOA1}nO9AXNhX*up{ z;;x@WumSpvFsL0|6=-N;*#N&b!DS*CaSL}5Dsvx3ZLu{0Kt_ozU^60&ctqmW*Ct+l z8lW#PZX?i7IK#xLrT_w}A$0yml)-HU{`^k`3nxMWFvyMLye$FTr3#GHPyN<Hst=hx zJ^_<C7D%;CO=R9Vbrcb+0=;n{*0o|Xk&So-w+sDm2zCanfMmn90cn`U9sskPn^iRx zMc-Bc@&d0$GswS3nY)PjP&&t-xXg`>229V_YW#2lC7@BOfYY&zE;zNjgu<P;$(yq^ z4V{sAQ=xrp9EP`mwhiCkM6&!&%u4pL8HSK^?j>qs7Nj)lrkEGOufI_9KhgKW_yEQZ z4_}1M`X|u`)>3p#pc?xl@Mwa|xEKwH{c?fm#t+1r<2HN5emFTM&_lmx78%Jh-9Y3; zC@x&$%)%$`|L$>{F-jSCC3Uus_zV5eDu01l{u#UcdHfVv>fu=&s31PrFC6DdDzs)C zQ+k))-Vm|GH)5$4T8Q&ci-3-nE>p1_mqTmi_4;Nk#PKkHSR(Un1{(wyTh#V!1|(ym zd=c{1z^+hH^pi681>}WWg%W*|g)|_e;8EK^Q%}RWTz}wn6Biqm=*yg3ZAl=18_riO z1o+{SunV&S84X+<`=b80uO$jX<h`gwd4D&%A?`!w{o0sN^^^%ud)=S=^P5HMGce7f z^(lCOU|q;7yS;EhXRv+bKrbMyIk0+V-dN<3d|~E%y@hLQr$*t!`KsGmX%iMcePs+6 z_%wD=h4ztghgpxPJTajj>RYlG{Y^6n8tlxKF9I6TxAfm|{MKLn!huL2K%AY4S1j~p z+_=bh%8h`L+aQD1fB4?%%+G#`{T%HB83smNX|NZb{Q}FV6Gpx-WMBZm1vi(z&)b&! zrSTa=3)Zj2b&9x`r5}#f9}eD*gLF+oa?!&+UZUe7pw2qV3$p<n*OiElTrkrB>>lh~ zw;*P5Uq6nM1d28)2}EO~Te}ivCXj1(0Iu!aUss~tz<))!<24XZf&AU_9LH)^8MzXH z{N2ie925cd^kpnrxMoxI1whNte@_+oA^4IKU4bS7kQ-nkz}5yOMt<N=WGa65`+oPk zfudF1qXXbQN~9;MWZ&3bbnmV!07cQg6=wGk2oX=XAVFDh4<5W!Z0a&mVX~iPDn#hX z5}AYdtcx6KWF`*3Ws8iMEWie*F5R2ESLf*Q8Q4}Kvjb}@HqTh;^5P&+Vqu!p1U-te z?i1=fCH>#~L(v9YEvShh8^;P{3Zr$G7yCP$2|uQi2Mw~-NV&)D2e^t>O}$c{r+|5< zXq6IKjqK($;T{R&BJ#KzYfvg%G0Gi$Z!7~2E3p!^Wt@P2EPiMnG%$LmmFKYwTw#GG zP&dFgtFr(MYptW4B|XM)&aox(ex~tn{8}S2<zz(>HonJ#nct5ze`2T`b#U60yC1;^ zv4#=+O3uYg=#10{()!O~@uC&Bucao&-Di8`+ssH)C*ulKrN3c#(8upoL^Fg^5c267 z7u=k*jLCYWBFDYGystZ$r(gLv?#RNa9Y7CYHC{*A<jN#Gn3m|xVu`*^pPh}h&_LwV z%dI-%Q!w#AL`I;RA${GU<Ml_7BGBn?sKDDqUIkoHqN~tP<7@n*?|O_2{U!P>X07?C zH8s9pvp<WFj7qdSplp#g=^9~raNzU{LHYXqxNDKFLJPpK>4O@~J-0lH+m&v@D<J5b ze--6#i5`eQmqFUbeIQx>qVjBI?p3H3NTbwYms*Vv_rTQ{^xZ$zKegyRWx-P@BB*Et zt1nuwME}JpkB`l+h*xAW_7DR<tqSBX_ZQU%l#%s*ocvN2T#nqJ@BRU;F~Cq&xO0T` z4S5P5JgMm>@`?W>e8^HzcOwZPhoqhz$Y06Tu~Obx;cf`H8!C!cR%jK-GaOiiooU4Q zeGk0Lt=vr_PvHx;HpJg-wdh~C6bku7&oix_BT9%17fHy!a5>#Wrotg^tB3{wdPy(8 z1i8zj!2EAefQRkaynx;yKreC`E5kW8Kh89n^n*KDzzwMANN%9SRFNr7&9P;=3LCuD z-(|ro&{hzN2XB|kkW6M>ygDcHekc8e5VvpFCjTtk(GSJBp5%Qs>=Pg(p+a%%=Lf(E zAE(_)_;6N@vw@s~zSzJMjz-Z`@?L&C%<O+%sy~2>03GcM-lC<rHVO}{%~8ClL5Xfc z-Nt&+KnXDmOrOWZM7wW;07Sd?ccTX1Qm=xqM7N_fQHdyJl%kmw{@EFgKO>X=*#?iC z5S}(LZe@>5LO)Mm_&4@1L(LekM}~ty%RuKR=(jzBlVF^}<5;4YB|wbdFfVL5j~)gR zABQaZm1b!{;a{XEyr=%U$hy|ZW&8b+mF53xmcJC`?b*b6W1OEVSR=(VqU1w1L!lO8 z88mxr8(I80E=`0iM%;D4O^K4ea1vSPvOLEDW?VPm{vi;bmIXE&P)2M~=QORtT<iND zf}q4G?tciT5FQ?H)*perot2T?{Z3I{1W`WsZZrUL_a|nxKnv8cfE(05S4kksuOyR? zkY0fsUX|Ka-tE3hcMiPkiTUx{vw3a}3nw)nr)tPrcd7YX5pN9Qd^Oc!WdY?6mIa6N zs3`=}v^=GDgd4S}?wsJE$s;9xDYXa5PrMSlk@>2>N3=22rNlTSRmgPJ{hnHcLo8FX zl!#a*u$Q%6l)D&dQ6MGunxtqJV}&e<SL*&|U+*l`;R+p{!XHy)PuBxdTz_^8#r35^ zT=x~?8b=LNi(IF;mi=u<{w~Ad$t@v(C)xtIQJFgzO$z}GZfiUt2tvwx*zPFo>vJ(% zCM2bx??r3`#%es;XG}s7`|V1{8>u98E7u$F-`y((9?ouZ?2vnDV>c9Moq;&}as;Xh zXn0D#McrQt#tHhAr%XbGVDwTldWC2_UmyA)F#XoAVBN8#V_#HC*|<!`w$RUhoQMZ2 z)>p~DlN|nts)&dc2ZNkEEPkk2xf&l2*e5N54E5EoWnKuYSP<Rf5X2lA<M5`x_W<iz zqL-WX?agwM7xZb;mwA6D%!MSdpM?mdwbG&d3e6Wl&ul|+pO&Pw-vPiOao$ys%5#}g z>&59*!P`4QGR8p+fVn@RLfhS{BpNWo0{!-)D70N%m{9?3cPzBsqmUhIkw8Ayj-vtX zcLMnzsttP(8}AcU8S#l&(=8x<Ln3DK{5Y34SQb+lX8YxRB3b&4#|zDu0??yGThLq} zf0Zx>P(Wsj5O>@eL5z`RCAJRfxNqWZ{NS|cTEF|}fExiSVWbXaRiIud#JL<Jx*zYt z0o-*y=1~mb9diImbS$2zy)A$Ph|6o<XeHG!oc04F5vOh~`HGx=%IjGd;taNx+tiFD zEJ<qLQ8QjWounpi4K>Z=!a$4FD%Yq^QWG^wdSmeGmB|-V^ov_PdBh%O@UPzMDrduj zx#7lODvDNnVfXPTCg3<O`lZZWNnj*y&Gh0RF5rOC28UrB=B&PjRBKkX&yC}ObV5F* zMvAkr_?Bwl@qH`gR*l35?Q_6E=)JQ%77!}v$+Zh*sR0YStc4p~hohfn|DHw`_763% zf6Co2<AcF_FuCrKfPcAd`<2ES$O3)doDtRPiGf%)^!1o^47Dz+Hz}R?8q}^o`Gv<N zx@%mBN-Pd=o_^C4q(IueE(ZsI=0$#;3$b~OUUnaOMl!i3xhn}BX^H+1<Ryt;hc%Xd zB2x7MW@+4Wf;s;(;)l%jLMc8`pNkZ9Nm)Sn`h`cNyueS1u0d}NL?LW}KbfTUi_D4- zM#U+6E%(99^KEVX6%VWrZ!g}jKHR=4JVOw?sRUd2F7#jC-y*1n`kv5#H{gq<|MH^X z{N)westV}82%VUw1K)rWQvdZaz6+><R1ZCvOJ)3H>cOF7OuDyJVH)YcS&&tbP_QSI zYf?XNb=8&(Ph>s>mDpc|>u`bDLM28_8LGr_T(Zc(1?IY|l|Fk0GKrBuZIL5+mBrfA zhdZH?Hu`WaatmeZCjg+WK0Jn%Me0F{`_YHb6PbRMK70!`)Ase@sljx8cu8?veYh5# z^d~L=D}aVRR<MG{A#k$%VDM8zFac3DJ`yNuYjAAvUZ>^-{W!vpmVRun4{*<=040|n zLO;$TZMD^pKPP>!!at;M$~%XC{3j4XYyJ2(d`o4k6!$eaUY|up`bVFbTJVi%GI_U6 z(0_WIU1+TWSJ#*-@Oj8?T*PjIpuc2Z5cEUcK+t25MW1MvhAySLKZy(jJ(q%>d+N0! z>sq6LjprjP%m3Lde-X;3_!Y=@n+$Lfz`a3?UV;{?uZJoDr>%^p443n|LCAA!zZ-T9 z1bU=(9CEK;SE3PgEU3h9X5tyTvq$&R&j`{JYoqJ47U#PV>`5!j)(2ihqa8m3=@y^H z&q&u#aD2{Qe6sbqhvRe3;sWdQ&*SY%@)qY=pTBT?9<X?T^|{&cxp47G*5?-;pGy|^ zvpzrM_^iU2+U($+j?b0w`8Pjb@Ay0(mwcF?$2dM;zPOw9d9dU2<i!VBpHFgpp0c>R z^;vOzo(`X1v+kYaQiG3$K{AVbS}9*RQsy(oWu+{2q|`9QZKeFpkwOo8go!ZQsd1z% zWJ-pWGR=|lG*dFIluI2cFEXXGl~U?Rp+#_U7b_*tky6i;BdwHPj+Et0Im$};=|UR@ zT!$>~Yo&bRNLkC2qpg&BN6LDp9Al+C=}4hgx%gNs<t|6c7N+D_DYrUOb~5ESD`mVR zg>icpA8)0c=ScA|<pe7w*O3Ap+O;^>N;$}plFgJ8t&}ZL1x-qd(Kd^CW#-I%<VeY5 zieja_<w&7EjWbbZnZGzv3Yl`Sl``LvQo@u&tdyG^DKwkl9F$qx7)MGaQx3CI20BuJ z->${It&|)`3T;t~54TdfI8r7v<p?X~dx$U#22+@lZKbRcDVM-n2wt<e4?k<M>Byol zVu}_C;~9!=cG{ke{^s3WDV1UQ3`1k0=ezW4PxL<bak^otCHV5T@N}<)6tBeYaqs>z z1qVKRJ}Fajkb=$T-fx!DH%lFllzU~$0HhS+)8+UyPkw?&LGQ=JqdFO1XNbod(k>GI zk4%_?gzIDi2^0x)WWsbLTr3kvg-Dnp-sXqJTh9?Pjnsy;OJy3VALRzhG*T7PE|6&p zW!gzHjnsoQuS_E~que1fjZ~s)^XuiuZZZoA5m^qBZ|mh-7x_lwLE2v7hd-YLgSVgL zn~O7%=($O})ew=;?4h!pN2Yx$(}+q)+at?m$+TvfMr1<T*D@_zroAH5h)zg*N2cY- zv_H!<A{5eImT7r1O_OOvDWp9j(+0@2TVxt>3270TRw&ahl4%0BwD~3cC{fJR?-tkK zlYT#LaD@Ncq75CM%ZA%)4q!z0*F5pteoS5@mzdd9^S9Fc9dG_#ZvIX-f2Wwg)8%hC z%wPPe&Efg-iH|k*<Ae6&Li_P)`|(BlagqI4Z$B=#A6MCrYwgGN_M>h;Zm}PC+K(;( zkbmeTal?EhDwvO)dGnDIZ9Z~d%|}k7`N&x_A30a%qiR1^+K=Py$II=<$@b$E`*FJc z7&adfFqu!_Em_6~xXKSI7}lBX>R(+GQvd2A7hz5n4EcFn9bWjh`jzcazg|hHUyZai zN<FJAd+`MDKYj5?GD~_dktJRsSYm0G{&d>s%jD;5{hqYXSIN&g`fX{SFO{G3^s2Pa zRr2!yJ&^YKV)?mHKRfO7CGvBLeoWfuiSo0mcTM{|NPe!=x4=AO52sju9<Tp9?ek#y z`EtE6?elr^^JM+mw9n_u&r|gK(mt2S&(rmpX`j8~^POQ#t6r6sa+XXXLFxXql(S_D z=}SL7E#(}ULUPl4r=^@LQx-C1Pla>Pg))W2sDGK3QY2GIn|gCv%0QVyQq}*SmNG)7 z)HCJYw3LxDg@mlnNK2`dDWq$CVp_@tGKFNWm#3wSk}2z%a!OjtXqiGLpdXx;GDfD5 zC+Ir@P8f`pDP$4)=V>Vy$`lvqPG6FiGESy=nDR_o%6OSVexl!<mU59yA$!q7X(^>L zC5I`Oq@|R}lsu+*(^7mgg}g}bmzGj4Q^=b1o@psVWJ(EBwhec}V5m${ney+n6ji2> zkLiokQv5Q7Y)${4w3J~o<#MLP(^7`Zl*vrFB`qZ&Q^*7LacL<PGKDNrA8e&)cZTr} z*(k0*D{<*%bJO&$osB~8I<+CCcm2pOT1xL4BvYt&eIrwHOug%#8c~LN*S9josdt?s z%2iVDTDU}Hq~3M5_*z4}gMLPZYq+eRD%M+~7E7tRSR~A!&#b95k~7}wWKNPW-s<Js zLiyGx-=3ClOXVBM6FHmY8%Yvx%jH|Wd^<$8w_LvE$~Tf5ay~C}lEm<~NWQI?Z)@Zm z2?l9v<r|3vZ(qna7pEZ6b7wu_AoVV7K4}6UyUT`12Y5SLz7hBFcCLKOk#B#Ol@Z60 z_JVvPUgPa0`9@sE+spE;M83T$--ww=driI(8}atKe7jt}y(!;_bx3<#z7f;#wphLq zyYSW^-@<$oxFz+ilkO1umh093U*7^?n!`j9{^5}*&p$j8RrrTT;tBuo=mIRwN1}%L zNW3r~i4^8zj{Qh<FuxKP%ts=E`B-8<s`ewX!OTEZFdr|sABhC!S7Lzq$mus9!{(z? z-})k@Z$Wp;PTOO`&9Q0m*x~2tjK`jB#WRfz&gmrLu?q(P+|M{PD^@>S#AENOU+7B3 zV;`E8sBF>3W#N9t^-WOYta~AwuoKvf|7GxbBYK#;??>o!A}W28M{mJL_zXDpJ(QPM z(6uV>Yp?v`w&kV0PBhTYz|GF#gaX6&Vo8et7=Jj1rzNl%Wdj0<@{XBa9FaV}v27ap z^=7^M&uRC2ay<IH7FZnjbAR78GQGq5`-aN&4)5>lC({pfe_z{)Hi4No-iMFwc)Z6f zON}?f9Pd%Eq}%3ac|WW<-VX2kGsoNEeShY7+q>^ijh~~&FVu~zj>BFx?9l)#?+(Ch z!BX3GNsTe+ko5bNfZse$-nBK7>u2<7GtSPO*CjY_L-**YARr@oa9Vw0KCeL=5-;Ju z(heHoYBR^R2CeV;Jzun9?QcW|uibYBVp*r(bNa5l=d{<}Us{s&9H;Z1(+8K>{S#i- zUDKe@#o=;m-q*Y37puSKda2DpA=U#cbyf?EI9Lq<_16*3`Y*?V=>hw*oFh7tdpf`- z$LS%2M#kx(C4k3ZPdnp*D<|)1IPVvXr?K^TmNx>cP$L?}=JO2Q;y<v6uhZY$iVj2u zzq}VfQWMo#!6PCoc^&NGxD9rltX1EGT0e|murpEGqIq{FH#qRo>B$1q{@Y}Rm@`kZ zmt1eEktH}CMVE+mdgZ>_7F?PAJx;@9>t%Ss;Su~lKHIz-NSr9b#XP*|ex0gq)Q?3T z_|65fUj*0bNa{uz`0eQ*&c#+k9d54VR>L`<2)6J8M2g)x!om1-Z>?kdrp9<D{hfW) zKNj@eyzmzlAgI*q<REZs@ndP31wACv@8?xpy<7KJB+l-CI?Zu=(LfIFbU^RYC<JH6 z^i{iCTHeSaz<By>vpxW=@fYq9_}wVL(X2m=Jr$1aM~;!3{5GG2i;O%{27jgc6z5nW zfU#Nsa<dEjrDMjz#|W1-oc-u&2kK8rtNtwfr50Pf-|5Rm55)Znyx-OCS_^if*tK!{ z?V8{2+G%FjhM;Q}egOWw&zaMUc{Q%bvpt29zQp_>CY{j>J+c$Ud~p7_hi#Sbo?hND z{!<S${ug(p&&R?&az1cbnPbqnpG^$<ko^vN47O%W$z=djIjtA`kTxGZ4%nZZR{hCB ze>fk7q6cC=ZWNCesxUY&=cAe}c8Dsk<6djCYa`6A)ox0gk0V&CIUk>*P8;N{=400G z*7IS*yMO-!!Ta)^>F^$a+64ZKVOWEDSOnf(r+*dO-=MyEJ2j}+nGx{*^7}M+KYGf6 z`m<_BdVdz~GVx#ZK;pl6w7S*;f+4(z?zd}xyKBdoT^oX~Iq{#hTKJFW4&mJkJ+c#t z|2DkeI{853%W5^g`kfNqd1-?>*&NhAqWgn)@U0ZQHD(07Z%L-XyZ-_E6NZ+Y#{bYC z;`eyb0|D=Zc(mYsHwc38K4QOJ`}dovuKf^^UHb@5f)03}%UVr%??Ih5NL%6eV>>#A zcOd^j@UH(keSDRujeuGthG7lr4Nw6Gbtn7UA<<^qgSyBZlpBL`@b|a!4%D9kt@=~H zUBX)zJrM9dI<0HRnqB+u&i!@m+BZ`0u46`waFUS*?`GCx!aI)V4&i+odSoZ2<M(I% z4m7?gKc&Na{m&BK<Hay6cq96qfcL2V4(h(wQ-jJk2XzmYt`2wy4%nad+tT|}iT)73 zr;8p4c)u+kt**TQf*>lqHV3~QqQb64sje+xM!<XfcWLmxhP9gTJ_^q^NL%4|-A}FI zE%c#&j`DAEDVsWC<{bY?2bzz{*5gNO?Co+fOl#0@04q7@TlYKYOncCNbI@)K+R>l4 zPCQV5>VHh1kNRyU{)--n`8YMLYsZ>h`#8M6`MCDA)O<Y8jKu$M)8^x2)??v6o*nQM z>z$8<!Uz54H1x<$Y=!^12O6KN)%e!`XyU&Zh6V3opc2BnbiaeTuQoNPKIWkAfm53U z-hl)5XUf)ecvqr70{=x1B>sy>t7|U+Vc4~&X5+VG{C_powOPza{Qo8m-q)~J3;*$K zgS0jNZ|xY~H=J-Fc)z$MeSA|;8+)URVOWFu1hc|H9kSm+<=TTXX30Svhe0{u{n_yc z>Q7Fq{;c03;q4Lq5%8`^>)QEd*Q(iKhw#>3Nx^%B*|oV}r@?y%>oMW|ES@`r_XzaJ zP89k(><d4p!k8FG-{-Uj!2c_qKK9|NiuCf(e{ehixqdEK!!yl$^y@~TGiI%c!H-_m z)Ac$WH=*(3m<3Hv8H|lx-`9nkp^ik<>^o;7Ll>DLl@jvsTpsT=2_&lEg87~P3M{%j zVJ+@5uBLfcxV~3T$3;FlaIl|(-#qw@PR4%g08!Xfv4`JFTgGO6^j9>fxF*fn=gL%~ z^behOCSEdo1n<D1H@q?>CpeowB}x=?FTTKYd>0-I>P@@gq{u!L-_GK>%<5L6bIh!r zLI}-(`<oJjE1v7=GJbpxXG3d{A6cGcmdL(Nq1VhD$1=w%<S^gQ;(NXQ{`U!r%XpDB zpbbyZ&z~MRwMa%K+xX>KlvuzVrhl|(`8|G}j<1$|$IRWp@0Z*4FXDTp{jTx7#D4!9 z-v`+5^Z1@)zaNCflaYmYT!n@HVBPrgvuqR|t{<fi0E`_ywOCD*W~hnFU_tnW4#W9t z)dsy2qHWC0OnL<VAy5Fr56~u~-;6qNv>*QBs`h#48{Chy#l9Lz+N)CSZTs7Q-`)$T z;{ff^zT(wzkhkDd7!$nOPZZFTie7s%6USJ3Bvol&+0!F<+9Y4>uM-}{=U@_N@UiFq z%IEcX^8xqfVO(&pESuyjl37B_Nv;L;^7N^^zX!LI#b49S5@SUP-lT?nsa!tVc9wb; z(LQ2+bevD5C9votp0@W)1zD^LByIxO!5HdsfaPZ#EDz-Cgg!!Gc;R}VnM?R1Ol`rZ zm^VLeM;ji0We2;A`OyCf&>;M6w@GE)AFbx7cu3nH+1DfVuSs5nUBJCsodSb$5!-lE zusiM#%j8X8>>t<|tll&qr>-ZmIflIN(L5txv~sE!y<$WLZLd#x?T2J{_%j0^5U^m{ zp>(8=AL?Tq9h_Fn0=M{vW2aeC)NI-5wGWfu*$r6nyf8^P`}CXY5B;k8OO)E}@#t$j z=8kDAA-)6DQ%|($4Tn3s@G3s|US|%8N9Qr4PxJnw7HtWAy=_TNWZ&%SE@50;9XcDV zQ~MXLIGde?7)ZJBy5<3~rTWUp5Km<Zd0rO2MfSAd{8RZ74qD(z)pn)UcWxiY9rQCk z$42W_moaQ0)}zkzH#p#inGa}7yZ|%NgJBKc80>a=!!xr%W0<PotU%GvQ^(Lpe#feS zdy6E`J2KqKqr`mTgraY7AJdAMIlrt00ZW1>s#P;xk(SxhzSR4oxA3y|D!!%ZnL;=< zPp{zNXpZ;*T6Us@1uwP^2&T1uLxvknEegm<TwL_0_S!(al+c&Shs7y1tvT3LzvVM{ zm~YW9p5T;Gq+dc|FX)#@K?p1=b|bRJ(quO9e!lN$Il4J}!e~y3^0p^v3qILqXkAlz zwyWUNRDY0k?IW0==$|;VV#ss$xImDh4T#(DCMi?E&8Hc{sQBTx+LnfIJq<fO{>WaB zQnqDMsrJf^Bq-&z?fOkv?hVtTn@DxMgb#UogaF8;ICk`%1eb9TdW%lDMX(Hew2@E6 zXm7aGIoe4zkj6iXvwyqQy3_Lq9+ZPWhL{*LI*_;$Sh+NeLoKVC%GbIa=FoB-n_`JO z=b`hHl$%do`#;zp#<iY!KJha?^Quq8A;SC7e8+F^Z$zH2x2TERA#$f)j$0`4x##CH zx$_46D*2}<`Bhm;{v|m|{^$Wp{_qkdzpPTp|N9h(F(v=%u#!KaM#&$$P|2@&QOQR@ zi}N;Zr><7o<U8RSm%ecBFD=wA{BOSZuKbfDQ4>e^q8Dc5`x0@tXRDF$p3e$w`D9mU zt7}wkxgS?r`geS-Hf+oYBr^X`g}XkG-@vo=wVAlCc{Q%S4E;O6tBl`Ki?&st?9WHI zlu!JO2CqN={q`0f7@n!a=vyp~BjQTM#MN7HHS2^Wi!h89?EC3L6iIwd+2e6nAUbz0 zh9j=%O`7MA=Vu6OJgo9cZ8>$I+Yl^8iNpZ<;uAw(Dz#(X;oVb}=xlrl@4hXlgm<5) z+}Ehou2J3pN;cGlXLbsO-iRL@*?qb)?^R^dR;d}@tVp9rJ6MfFRl*^bb!tBB**wu$ z2g_-!e%8tAgJ=~8mhnw>FOe;W=EB<_?3BcL2}FbBsv>sRX8l!IAVnk9L(&?+`N^#4 znjj9ze9K1MP2ky*?-y+ef+z8k_$BW7qgzD2kb!19iIdwZ?!tv_AN>0QPZC;?{brN{ ziYfX+%>UP)=t<rx;fZ%242Sl+wp-ic*Z{))h@kEdTPpJq6QyXhC)BwpL%FX(TYd?O z_^7z4gJ$7kR&k{$-ir=L<Q8XnTzj(3)_>o|VQO2NfIpz}J#v47_V0ZaPHH2+6}$zQ zSm;1PL<K^#3>U<0hn7m{r;y3w0w5>@!@i*ohm*aLC5Q{L4)=~fjatPiBFB!C9^xh} z4&g1)wWp~jngy^KE6M~}2DROR7#MbkQ}Pu^m$*KQx8SzjzSGwhAw)Y*DW0N49|Q`) z>`%e7!T|9_b}GF24%$I=F<#uEn;-!W%biarLST=hhh?57UuPCx8@fQ?kVGJB-%tCN z>iRnU_7icBH){m?@#<1|S!<gEVs}L!$rkxFeoAtoiAPX6{+RqszwapwIx%?fg}BuF z!8?C}Y?JuV`o41D$2}jNfnIbqz62iC;C&9>Ic@l+zlU$=#U+L>Amt;{4>t3^Waf7} z^8d-of0&tH%s+M-WG(w}&x8$aA^#JduibEl13wd;uW-K4*~frSh;mrn8y-mCE(F`E z%6wRLuWDH@@Kb+N)ZIug0M^&~UFx3@<T!{xdD9lr^!!Qe9U%O*j^!aDz%51e9G|&= zCD2c9Z(RZ5l)@u{M5puG43hww8|#ns1CE<<d;Aov2z}a(;3ik&+z%IR<u3isOJv<Z zx_)Sp3QEgA?HbuEDqXLC0s~+2-`0Go@u8mhx!_DdGBrLbujQ*&@QYsv$~eb33$tg@ z6L1%o*i%|t&J?Dr!Uu#Egd?cJT-{B$P?A9iJrVE}^Yt3@?Z+SC0h!*RKSH%k@6aD% zoJ>EEKLYzNojJ_@i=*FZ{r?m1vI9h4Mfk2Z{qNAf!0dmA{sm_L+w(85_AA83XjU52 zqGt>)d+sK}&M*uf_-Y{kYn+T$RA~IwK86<KIcX@op=-bvGIQtSY&*UQ!Y=nTW%4ix zluCPt6w$EY@h5fHFsc+$(jcNX>s7~rFT@ehPOSE@UgCLcq%`YA8^{&Lx{^<EJ&6cr zk0-wZEBJ8~SV3aeFD?4?CmieB1TO9}BPulw<q5T}4(^Wi1k(}SoWZn!X<C!&ZZvj4 zELwbu>29b@;2-$fe*R`Vzre4jP9RUC-%gDhKSDH7)EMl6xU0rzLnWWF<V~u5gk2Z{ ze%}~8Rn?9_U(hSA_}Hg$_`i$VJj6o)H4Vwa_1-Ci?>6P;Az8}7L$i_}3jCnFL2x&6 zQEqLMcGUR!YEe`0YV78tfscd5(C{!1qY*y{aAZUlgc1@FaK~l^&s4QRIFAaLmC5E9 z5QobuT|^`U{LHeBLgd|AbMjrm??k<8f=4i>MDRHMuCF;+Xp3>~z`xj7Q|1w9e^Bxf z%%4(QmNg&XmpPK_9qU!87_~t`VKBLxyvm$b`fYT@I>rp5^@Xl}0HR?uoppd07F;*v zb}f(M9<Eh*RT-Csfpq?wK~FbcOONBE*tJ(851~$ke_&s*>h&*1GXKH?u82l6OU62R z1K((l$QET)%~11Ks|Z7r->eqxLNtvJWN<84;1CRBx$0gC;QO(Z0-Q(Vc>7W8IYQgi zx@Nzq)`3y*55aDJ4)qnMQK7cufa&d?a;$9G6#v4>Fv0-^dpYtmxJ$h|=%a#$qsAnu zzC!<0Vl60P3tVw=u8l8_qp?NHf;gYMJ%qb}Tg9rWK5b`9@_)p*^-DejyMENxzZh`l zeMfyF2uKshHtjm<cXFsjP1DXcVQDmgI#T61j=LS5Ky_y9H7UQvX?9*-u5uoXn4m1^ zW%hUD5`0U&$~id+FqBitiAjd_(Bn`K%s?3f^r2UQ-?utd+gm?wEal=7{UN486S)A< zvGgAJs2^eGZxc%9CXscmp`i=<mt$o4i_G!|qkP)=ccIv~kH4Y);qT79CjP<;!->D^ zIk6q%?=z^AXQEr7uc<cyf5!*}6Y&+W^alP4m!luld@Qhc;t0HmPEoW4INU_lPFcYA z5#e?Yc%oYL0plN-NQ@B8MB=!6_Hz!L1P&i7nqav$IBd+oBuO-0j3@rhR)Oe5<BAl1 z2z+)bl1dDF@xK<IXS9#cUC*)cxqEj!9|)fj?27mt7iJnUZj38<ugxu{_LGn{{wfd@ zb~51gyjFM}#1K=6D)Bkg4n7Y{!{_85^+k_5k@pW*w1>P`jgrXs8B>A0_q_w;9f^<n z#b$mH;%;4JBo2WO6^FoI5?R+8j}m!v&GL_$<;S4B;LpwVx?{a_bgKnT+Ik0mDzGye zyGo$+ru4bA@=Lfs!ibk`G>P!wIj6vVR*5lwWK-uLUfjB}5HpQ193oyW0?$z6fbU{v zc+knXDl3yHgVmYXNI-~BjQW_zP@s8P_CfG~OblNCU{BW@15lrE5EFWCg-ie2@=lCj zn#stZu{FVSSZ?kzY9bXZ^e78)140zi?_h4Ug=L0MZ>db_0aRxzQ7XCIq^IV3v(>?@ z;ApD?HSW<1QHMTt8}Hx%8GNUEe#&qq|IxbKbu4$Pvz&|N2BDnAxdM7(A}1eIhpRuK z4Tv6ZdH@BxrwW3DH8*oO5X>0bvrFYO4wC~TW_HiO`Bqetd{Xz~M}LmbxRq>){ufq_ z0v97bqs`C9juzHqX_XKfg5q1tY>|zy25?chEZE)F2x{~sw{rlkWXq}~mXjOZSg?-6 z;s{;VKe!An4rGh(S@;pzH?sQbK%(cP7=%~bGQ28tPQbmKiyg`Tp<D*beet1rzClC# z&m82hs`r9H1QI<;uu{lDAk*c|C7Bo*)*nOjv;jEc0o_E+ve*A8-<d&Z-o%y+^~3l` zIL7`6Ex_#!?;I6W@b5_6_YEU~kZ=6xi;t`fp2TPv-bh16T@GqjwUOCAZDeJ^3S(G{ zbIEV!>Qr}ZdahjL67&PRQS@%4*@m9Pshcrac=^$i4V5f1Xk>LCu<<Hi3>t#Yv6rBq zIGG&#H1ri=D=mBIp!n{=-Qg*HkL*1%uyd%JH<Bp=O2QI|2-2H%IGq4fF3C#1F2@xq zcQM|iC%I0%r}Rzs?*X%afkgkqsW6&>TA-xOqp31k>1^-bY<y~pP^)m&3EcuVi+kzs zuSOyz_;Cx2!D?Q(kw#d9Z+`Bffuc>m`A_hO0QT_)vmhqnYF7~PrW&azBtH=2a}F1B zew!Gz-F{-^HwE>PU1wtVY7s&1a$$x1p&nW9mO0h9qSPH6-hETBJW;x;xLfsQ<uLSM zDhukxxD%OSRa5vOaaO5PcR@>H$SNOlV&1z=`$}+&{2$9>D-fno!aL!``lTy!x)Z}z zg?DwU?unSC-q$e<EI20BNUXB^2TUcR7OGXNFebS4!`r&YC^bIL6G$Ak(%W1rkX0L+ z<!$cdMIAbW&Z-akwNgynswFk$1#9?g^UwG=M3dUB)OISK7(BW7Ch)7o>}<U^N}>Mg zdH(pQ?C`*ep<`+3^=qT-^9YR?viKmzEo_fs{V_B<TsS5)PU>bbdJN6hxju~5PcQRE z%1Yec`0zaMpyB;zo~2f;Rv!eU5PW`=KaOqF#9=?01Mq6Y^Ke6kr@0eMI-rhK09F`J zV!ej$r|=Vf7ahI|LI#|C0fo0eJ`BpntscNg&3_*|B6nO3wb;A8Gz<Grqq2kD!UJ=a z=wFaCva_2verujLKC1t$!Rq3PLjxmAy@82pQBmkLrFMoVvN^XT+%l;8IR7HI0IbX7 zSDx58_2BS~ZX+b!nf*c|hZU?r^(s4S_fM_*h`TSb6>6dwgB-;{?oJKz*1X_K^93vw zf2uajgNs3uwJH7tu$#SP-$hUFH7)=^C4Z+;%h{ecKCCj*aCm+L_C2*>l}h3o&VN-C zJCQi7#2+us@oKl`;dvEIPjesb>1x$JU|yQl8(lF@M@ihr?8mxD#AVs0#&1@`g{7f0 z$mf6^0d5c>qRMo@9?NCmZQXDb#AiJw{PdRi<7L2x(jXQrYyH~ws#w#3>KyPv)#1X? zN=&R%5|to^aoOSNZdb5eW#DYQDRm|8MCGdR?$fK!R9|n&Kx^0;P?aZEPd%YvMe#%> z2FD*)(a1t&?neY6!VyM>mVg;$E?)xr!A4>^Nct<pBK~82=%~oI?%?5|mu#i>kjTce z@NTzQ$N7{Yjjsn;Jkfj6`DeHam#c|?%qKI!QRl`&wdlvGcOVvF;quUyKzvwUd}Lm{ zx_?D%MX*;vebM{M-J)gOCtS{`UT+f$@lsEGRF->OB{R&*SF0K%s+Ul(AnxH7Q?O_w z^O{}RETNTnc)k#Q3lA(+qP6%&rW3|5H~b}kQCAhLA)7c;&VQoEnnYm!s-l(EpL3SN zxZ@0a+!Bnqo)1KQw6-##lCw<vFrh9E@9I<ivMjVBxnfcc`Xm-i7QPkKYb%o<p!3<l zRpUH?JPp41r~$|rNc0t*hg4kKw)3jThu#ZY23R~+XnXX<^c#k(J}N%CaM0-Dnb;8+ zK0vMdk!v_DbE`JG@RB9ibY4=^8XqPGy9y?c^9>jaX<TB(M6C14o~8l4v_@XHGUH>D zFGuRJkvto+x2y0M1-m&CbTexa8CXF*S=dJw3rjvBpef+0)E<!-_G)-nziB5T*KS|v zNTqh1J5j0?yOsNaHS5B=M`FLD+bX5D9x|;)UF3!q%A!&#$XRjpA9u^;Mb1AxbV6jG zYxW_@W6k;Frz~9P3J}cBiu?eM&=N|b8zB;x$H|Z9<pAplwZnuhrNo1{Z@2<}`oYO3 zKzGgac$y9WxfmOK=Mq@Rg11BIRTHNc-P6+rYK33Jw#cC2)xDh}-@)&vLJ)kXFXha_ z2LSz%iom-jKM_6vj{YQM{;OpE;JQfR>7h?d3mPc7wR}pcA-4XZf)dpDby=7QZ1s0R z3{Sn9YS&>7)x*)h+dXQ=AOwm;98|q-HLW=r0rz?}1NME;h`Wlr`Ig2qsV252v<SAB z5Jc|IPH&TkPU|7$yn7Sd*$KN3oOJZDdxSO#Vy5lr`Yc9p=K2u!vO)S<9f>m3fn|oW z?&EDPqc-9a3|G(}!WnA2Lzo&#YcQf)v^F5JZ*s6OvTs_jy8ucQ<q-5OaWS@<alh^k zuFXn8pc6yurEDz4ejdIid$Pa&#BJF+f@G#Ly=i5VgkaGp;fr&o!*hCJs|O108-36S zXicmppzRf6OES#_z^xysYiGr=#?v;&4+0TnCg!y4+qZAW>f@H57{*`F&>9+ytY^Yu zERcK+YGPO?(68cKUE;#R{F4lXa1B<gaiM9!Ri?KqInps-|Ea#_|8@Er7Dsuu{gz7s zY(mkMV~Ors;4%FR_7N;%;fK7AYcfFjoGD&>%yTualEMLqGtXV31n#s5Bu+iyAubDk zvgy|wziEuOc?bj3!8qp$?+PeU9uE!g8lyyS77y4BrN32p*QC%zkW^EY=sbMqMa?(o z2+C!w&FI&ew2nk}7AVo>NRI40Ly4X*9?n!^emwZ&Lx>GZ^e5zG=|6V`q7BH9>*B-( z5P02`d0XL%#>Agaw5y(v0<yFpaYRwTtKBrFU<Kk{)}4lqF?(nF^>Ou-p+p(1S51t^ zb@W5BeT9h7n+?Pdz#;?5M*G<i_+cP;V9KHw&~_r$D%u6C^CYZ=QBUB%Qd@});aipH zhoH6a?kP$vgPZ}}7tOLR{S%breGrXx!_3Z1hYKKJBJMX}=R8<5;~jS{u;WV1iyAEa zMm%wYLF%k`=70KUS^j<SKQFi?ZAH<QPy>_&o6rkZ!eZy3807_G9$p9)q7!PKhGg_D zgB>fV_r@=T=6PZNneVApE1`Kp3MJ0+`{N^W0*T_S-sYizE2~4U=B^k8Iyuy1JdTEJ z{HTDY{W?GnC~x-0O99kFB6=sUdq^ds*roghm1rjNl*dOM=4Ghk=spxs7VKqbBfC49 zlNQ;Xp~TKdr@6rqW$$4gIP_k)AF}@R>P|-2sH0C(qVM6c_$DRR83mNuQg?B6&{KSc z68jnbteYr$wnN{5BQpRU_f7TuLs?rRr(a-nxe|RBErfRgbI(U*;a%4%vDZ)<$b5qm z`#YXQQS1@xJxMEKw;0j+v>kPWP`~~({7U6kNkiR0es};M#HH*Fbwzxihj&b{2$g8c zKXxAN(T-kxqY|BfUo1s1;6DGy9<Wb4EO*<JXvcKOL}!psS7ChcVQZ!wLgP^01_|6M zGzZ$(Zu%VaQ#Z5qN1=Vde~Wsm#7r0JF}ul`#%KNW&9bLckXPWh6O*?bEHYsvdg%BR z4B?^?F7yY7klfHaQO*5kHTkGU%28In5O}XO&iM)xHG2*;mX_H{6c?~@VP(h$ONgE9 zpNf$S>bVqV6brUiCks(KhMi0R|EXSfM;&OrU`5^8X8VVm?LWiASz;UmOWjJ0M+Gf5 z6RW`sTLakHk`cx`{oAmL#2StJWcEoy(7&LZrSM`XSYz`5!C#E0f3WG3#Am#P14HIK z>z|?^C(9Ti>L(nY2JaQ&nlXV&v=o3aR37O<({<%?1Y+z103+jcc9Z!|L>51&9h=8M z%qk`NI<kfbPEumqWEtUEsP8#4g`wEEPYizdZX2H*^!Rs_LF!BGr3Q~dN*4zn+T~)1 z{3B*Kn1k|?h%oy~6#Kh)U(KmX;bP6E6d9b0WIc>`lEI+_PpvDV{wci6J*|60zZJ^m zyaK>M%slBVrZ`4noQ)(4GWwC?2u@@2o>XS6jx3_g%r!j7Oi&iA5Yu|0q<np}?6}|n zL#<~Yni|N`6b%i6u$5RYN*J#J_R>CL;v;$`CgmMSC5r=yV8fizC%;FVTBETWlZD9v z|ENZJ^rDm1ZI+c2bTLocm@LFt1W>R7dJ3@u-lD<xv!TWq6&Q(r%3KdP(#@eGP%pUL z|FAUb6=U0m7jP>q;CBU;*dO>NSXLNMkO24^Jhycx^iQBvnN&|(EnE98DJSMOfY!uY zes=W|a!F7OU<?xh(v#1F>TLc``yOn2#ZU|AzfcUVfWM~xA+``b#Z!Zm!Kp=j`tS_* zl+aCTf*!6=8D~%`trxV_kU`CCWOjUX-k{O_l|(1bi$gA9t%PM_|E<mC<O43alOxtP zr4n|iJ;tB#!1+>Yz3yU&<1wg{40b6vJI$xx9D!fX@-ij*H1e9N2v?>;75OXjM|MIL ziL*wrOou8$*}~F?V<sdY5$twj9eJxkZ$hyUhhEaa-XiCvM_cV+Z%|YN;;3dKv~;nH zD|9tmUqqP)dmuSJ9Qd&e;DJs497q{+9vE-lS<v{jAJbgM6Cfu1Vj~`YTZ6B+=olh6 z5I-Iw*j-i$%cM=YQN}m+#jk?|-U|u*4c?RmFsMTU?}Y?@M?PhQ7F5K(32LbFp}5I7 z(yRF=04jV7D0?dbAIjbf0Uvzy<));s4_}1zB~Y$`!h&BqF+B&FLkA{+#uC04S;F^I z@c`oKioz0;<$3CL`X9mK0ebi)36aZ6&oGF`U*W41y2s-k8a>}Bbdx!j`~p8;r_wHy zC1z9PAPPyqu9Mu{_*!piDZUvpf}NN_Qd`D0BMm^*k=aHL2vhO{`9c4hf{7I`(<dLr zF)d9^H<w5O?Mrk<2*l+5m?!-S(3sW;zLX~aV!hBv!6tFTfb1_uHeXaN`YG^iG{9l$ zfAMmu?oC2D<?b)=FD2kdtOYveMj-)><3)im#%NB}l;AbRHwLSCb6H~WYnpRnF$Pn+ z2%V|_04ylS&V95uDio+LH4DPK@w*g!MX%llL?+efd%(ex@1*eAI}k_^y5FRrkdUWr z7Vu9-h_6Dv%J~SRHFE~Ve4vpDb|V0y%NQ@f?&D+;?kG1rTc3|6ZH?ME3wcDR$$bIK zcfh}a#7eXt4{%erCFWBENVqr`yhzHcb^5zd28oY}!B5P0g2mFfq7R`AQs=jqDg@={ ze`v2<tQ7qx*oK3XJCWlZ)Cc4sCR1l)mdW3yAWJ!ERB>)0A1fEY8b|q9Mfq5UNoDTq zU~fT>4L{z6bm7O&Vo9+y`9GpQ$R6hC#}Yyk68y$uf&;HsAwd)GZiTSx2Y|BR=@eR$ zPIIltWqKbz3IVCaZbuye@njS*`JrPzUlc<V6lu+8VgtLf)Hn!Tk%I9Qwq*%MG$wj6 z1ib*d8GYGBbmW{v0ES!50Y3z(!#bKUy~Wo;xreOFN1s5YP|uIWQ^6*Di@wBu0!{4k z0aw0<@@sMhN;{(~TEMBFl)c<3sG#(XL(KSV)U-7-HbJSZW0kOz^VN(C&-kltNLB!! zBf6iH^GES%o!*nP4vLK4hYu1*PdAh9{02QC7|UJ38Q2+u@n>?DS@T@vDGmfnXT4ZF zJ`|u`&KJKPPXB<;=<Mb)vHI5Uq3B0BpLYG2@WArWS<J@_$%H)~LT}M=80a)WkMxH3 zLP$wtl6<EDz`4C2x)5y8JPZQc9q6nP`gfHIs{vfUQ1>cpp3xR`Vo%EUKoevL?uSdW zZJoG|gEb!f8hXoA-r`01G?a`!alvcA<?4ea`47z&7vPegwy~Gte1vmO+O=Q6c{#j$ zv=W^N2BIv;2h78}$12hFXgs|8V#p7C7l^-IY`09NN-SkgxUgJ_eauM`cB;|n8`tkJ zVO$544e!26i5`RpLQSBbK>OhJ)E3HvS4DOX^}Yo-wgfK{a|1x?muw^p7C=>^Gf}fQ z@=HswC|;H~s0><657s94rm(An>4OfF+SSp@u&FZ)n>s_#b7;>#?MfKrHj0}j*oBc; zDxu@J`zM93`kup>b(tj(c!-1R6zTj91w)C!dl;inGga8-!@Ebw{Q)r(aH7vL-L|kT zH3jQCU?{GdmDfs&J5ZrV>gTc_z&tP&|645?o~#`7SE)T2^IJm4uGx4k3FC}Vl<U(( z#VTA>BF(|!T_?ScM3++5kf?YZ#&%^cuTY3WW}S>*6v8xmFkN_pqV&A{1|^c~Eqnvj z(E^00icnt|NNDda1=3S{xDLOKXg?H1Km5&91zq4x8^I>*@e+*7#e!ex99*l!M7$P+ z%~=yKD;!i-JaZ++1~dF}!OHrt)XEBzsq;c$TEXDJg6(>hVA6Ia5j4Zfj}ns7Rx0r6 z!S!O=jLVq?tWF?d89EW4npd!9(A56QU5KBJS!|G2N))+T7NOXTlvQSkZXSo?27H{P z-hoUmRKbfmW1BHj&IiGV1r_#Tlqgpa;a%my%f!{4yi-h$PD#*jQf@SC!3YCd@m7ow zvuBhbfff@CBeH%SRQDL%Ib1sLokS&~Z=v($yt56|9{S7MT%a0#P*U;*(b{abAefP0 zSo%}o#A0nUsYb3e2&g;Pu^VZfj&U<qd(U`{0#EMiq#&{l>=Km+kCE+2P3k4+8$eQH z0?L_uNuVXVcd~H{YN^5gBBb@^a8F$91anpoL2}wuZt$&awX=5{clLl>kTe8@Y@a<< zf$m}{C-@=f55t1~xc*C$x>sAO%*QcYG5ZyiW>PjryFs)FMgd8I&tMixbTb}|RrtrE zS2#2rNg*fDLRQ-cm_?CMf;z!A3RVcl@e^w{8HYIvaEnCe&KMfTwX)d@GIzO}fk;Fp zucz6Yh4mU%B`65MRcPnoYB@B;08zcjy5TN<1Dq|fT7vXYVyi_r$kp+ctloGLCG|I} zam%hvKW+R$ahw$V#$i*YlMoh*OCag7f6`B>?UnGZDjufHBVWeu;aAgf)Tp)|ZuNHx zw|Y5m+^2;%@j87E7e9m`7G^s*6p#SEhYN=&vAglE|4rfeaO9LQ`WL>$3)Og!+{Cyq zVM?rq%oZLfQ1W;xl|qXS&pmRn#VpVDT4eCBsGNjOGElW1KY|Q|nBzIP6bprots5Fl z3B^|an|hMCj_w#Y00*UzwgmJR=o(Vym!d65X^t=cnTa8px$wgPwuT3~u<Ml=hAs@p zOL@>M<)A@#HR#JgTjJZ)Y<&Qjf~+r(eMe>Iu`&$Oo*zIZxWwE}e6!7VB8O-6mBbQ7 z9UPclKi4#}{#>*EFFuv^C!e<P)tP?_5LD(r$;|(}ncoPZjnw*OXHWJPEl(6*!^jLo z7=m$O_j?u%3B8bjFQ6<k@*(bsKBRbnGLL@Wz?jdf(=kS_yX<~XPW9tNvmYl}{UF~n z*L`+=#)FdmKEcet{S!G(gNv9p`8}!p$D8?^to#Wpzf!jv#Q0d=87{bQL^fWbR;^JR zzUmB5O}KI>i49o6V~3m26T95SCBSQl{>+`$Mlt<4Dm~3EEazSEQ7{cm&32EjG;T)Q zt;d`9h3sughk>L_vH@VkrKDo`K*I!loY~nvR%h3vF6Np3Iez2UgRC-h!#K;W#F~&2 zA3Yvs#h4p%Q;-&~&5?+tByM8K)_c<hD|j$1QAtfsncJ7;Xze2#Vk>|7H(SH3UyH&Z zaueT>lDFMVp|RKGvvSr46rZllU5y%8ft%UL32^c``aQ-KDa^*DnJ8migg2AlCuRYU zZWmYsSBL0lC>+rTsM@~bZqs@inE;E4hY0yMLeQAiRJUmx{n~PHSbzRb!D8nVc7nyi zO93u!LRJh*^j~S2n9A~S-LU}hOpp0Z)jojPiGMz=9P0ZJHytj{W2Q*6=oyF71OaHS zI!-ph6Isho0M9UvC8f_f>8pmNOjh_kcrk0b!}`{sMAwRM8|zLns~liexdRE|S)Blm zl_o4V2pm{OFZ}4ASxlIs(9`?);#jlwwR=imNH+QJkJ&VOx)6CSYusTFlxkHYg}m?u z6vzypke-+1pW(7_8YVe`&+rKJK#lPje@5+A4QrrQv|Gb25K#v;WEvA4HPm!e!?=!X z=w=-4s9{7$HH_`JhJ%bxu>iG3(W9dpw)N|96x|FiVNpXty|8S?@s<t=7&E~e2+s2$ zElprFV?H<|st55Og=im@R*i2z)%*w++Fmt450}xM)tKuORg6dY&Y1)N8|%t~H8u&T zTK`<2e1DV#x_1Jx6?aqaZ=8e+!Qh*hxIJ6nNrZ{_hv<bp1=eMVM~GvH;>dKY0i(yU zpUk&P<SWaD!w%eXvaBT-U#G&SgheK4m4_JDW1(xoTb$x<5AROs7~TgP`KcOaUX~7N z6U@s_>TtF^MpBFc`Zj*0+!!V%Vx3<1PmT_x5kmu#&sg>VXhbl~xD@NW?HdlqtVShr z6lh7Tr}QH~A+)gkM?K+zV8#fRlBPXhE4R0d$AGvsSkOGtie&vv2j}Jbf%8eQpC~#e z&V?Eq0B>KsirR;znOq3trsOO>tqQBF1#A*GsVcQyjbc`xC<pIa=ZoK-=ZjA*gz=$- zq8YVR>YreDOX@BD;Q8<sf&BrwH008*FF|#cLdgiC#^%fu(H-%pz%gMNt7HNF0aRh+ zQ|4QWSx;oQgpFHtW-1i3-C_;VV;>x$g#Il?5oyXWhd~+1!On+~kmG<nG>$~?^{zM4 z)(~dP!s!9nC)`o69>piiB?U`4y1;sr80~=N1)l~Iy=NYIhO4d&uLWzQe9^Y%uhy0~ z=*PO3uioiig;gQ=oxdWHxzZo^_zJrP51%zgYbyFN^byovSmrGcK40NQ?$9^!ae0Hr z^`H5T6X%3;o8>jFjRT7;Kznp<bC!oWBKZu~8}Obra3lc86-6%5`A**Ou4!;-p~1zc z)QxwCuJb0!;A^YQ8;G2Gw~qw5cq7RHU@yQ5C2=`nEvbf{mS<VoN6N=;G$h*~WJ>V} zM7M=R8xK81%@WtyoA5;2RZ46P)E;km&osGqj*lAyH^Q5#KHOKY4IQt44DX8g)bWB= za6<8@x-;2x%+!L_Sl?YgJ~dF>&v}-aG!;q7ui;M#CmmsUYqO{@DNC5hN|gJWU^KX| zp~UlkXiD*E0vsFg9$gU}lALJEQ%SFM`(XRM(1^f$*xUvRqLVhaXgw>0O;1)hu=up# zImM%bnZ+YRUBb7y%Y#tPK>yNdB=jteX3jN22uH6)0B)Wy1fPQr{u!8EmMiozmm`sZ z{X*~KFs&zYTi<S>rFh66U5T54$RAwESM>2P;ac-6<AJo$<OL70v7-YxlMaAjX~Tt9 zd7teXHXgl^Z})m5O~>%7wxhhyCZKUIZ)5{LE;||@`)tB<WLaPRJZJ=5CT&GSmcBFu zj`zE6h3iJP66N|HZx<?2-fN4e;n;u1lhn$EqaCzzk(ZjybR~-57A|aCNWZ_>5SEGz zt?X7jQi<Kd7vMrbYk{wbuu-D3J#+)+KkRSz5P)y+YU99gmZ4#6Uc<o$E6+uEp$<|v zf?v_G<RK}2QPi&eK$9Zs)hj+QClG!+b3`3j@g<0+I|u{4;$t!3Sa0AmZeI1cLziPz zLxRUA$IJ0Yb{?ffKSs&O&ORaBHJh2+m(_rB5!WGjW<@+V*NZ8P>^w5`Po`q~&Xrtm z<CEwQqTGNiuR|L(3{$ccT*!=aV>$wr2&i=NY1@&n6#3G|b1*y;0;t!>LyAdP#nqu# zSa%nWatGB%VMPc&ZbAuLD1^{Rb`}sa<iZB_(iH+~#^+)of_Bm8V^}xYEBFVG6Y$)d z$pVK3hrl6nAhG!jTEc~P87$>H4(;<jcs8k1D67~CqfE(Xb^m;i)uFvj$u)94BK;zg zub6m+LX3~p#@|y+@{rI-a$WRAI4@rm0<V*HF!WBCa&&HLp&Rgw)z_jeDPhX#w+Iyz z)`(Pm2zl;a*ol2WIJ&jLOpkiN7^EYwGMD~D36=K6>hrLP7kv__$ua&w)kBWCTci-K zXM2&6x-hm^is4fHIbV6S7QuVuxDx8ya7s|-Mo|MdwfpmTtn^S5-bFV+4~NdgO^CDE z3e1t*-lCNozDL2((-;8Owd1n&mw>x)yRDI`46c9ARuX3mHQI8vD)wWMg;inyU6#59 zJrK&1G+99D8jAiY2^R~sHc=vukx^vhlb*4P@H978Ik?yf0>X&TB(^w>Qt(3Zs}fIq zcqMFPU*FghQQfoD_<+QigS!eJD{XY8y<r^tCs2$)e1<eAH&(gv$4|BII2$uw637@v zBIugahtW^9D0dm1OxNjWekdt*7V;8c66iJHw%BT|WK$;Gj555W=m-7<Doi;+C0+o@ zQWW=QVPl&jp)7b-u}_KpggGGOsg`!GeiCuKubgaI59X@wEiLQiyhiqAhu%rn*N9od z`gtA7Mf8H=Ol96pgj3?|QnQ@s2Gp~vOj%x9;}fOASYfHnf8^9x?c_o#wgORWW<#68 z>8SqA)<kmY$onwNcg!WZzXn3kDzI!U?PT16g>4;X)|LEAU1$D0BDA^WebUsK@V-Um z&T8;5(V)=Ng+w>E68it>Y>;+gyTPt_^J!O$7LBfG&HI*U?m6#UKwww$uim#%sVn)Y z_bt)>eS*%@@%aYql!~>jiPII(dqGgRLRpEv!UQO?at|x^oXjVczR}tGKi(DSf0>Q` zGY7(-L#!a%Lwqc!Q+QvFeg(7%9_6k~VKOMe9Cv{#OgAYxpLiLB7vMA26PrNJMt`Pp zemf!USav40Q&5Uk3#Phy6c$)FPm<^nX@ujmm}VTW#Q``8ZenUT?9_uURpAk4!t6T} zR_jbyeQd(;1L70fdjV>wSPw}4#A|!OpRh{>8}J+qCcJx0@D4cE>V07*H91lbZ{!<y zu*>$cEO!uRzy(vHj?+lJq~6oWNDrHo*k4fGA{Wx{jUHG!6P4dYc4to83MX$ISwlFx z<UtZHR6F7W_41VjerPMKp;^fW$OX`R;)26K;G$QM$e)T{4TYNn>o<49s3Oa~AAAAA zb8@G+6BjNH?=Dd0JtA`U^j=K}u2HKFy9dXJTD~&vEgR#VB0F=Gd2b+BWM^L`Vu*)K zQ{Knn^bTn=GVY1&I;&chyH0gsVxS9QAwK*{js2*^5-jso7u<%6h+Rh}kE@Z{`=~hb zAhLvRLNd+|#!GNquRgS15(^>`js_Z7V4~gLF{0oGdo(5B6lKL{R>Re@cZnECeabRT z{EzGm1kb#+TSOlLui9z(HFC}NB+*{7K#~x!gd)Rup(!QL33s~b#kPZc;UI~n-w~nm zpb+5~M59-%0MQ>Vs(>@gC&^a}w!<@*6$TGMCk0C4!%YxPXh?q^*e^9&6=jn1F#o7; zE%qnmS8NEm4Dv6#JubAbS<dYT93VHySEbDvrZT()5~HvKL?bk8LGR#$FEJi*JK?)? zP!#rZx}Sx2<tnjP!6EPw5)J!vh3E=xZ6*9g;=RaKmy4z)bK*iWkQmoVNlZfmR!rcE zSd8HKiACl;cA2{s*zjz2m!PC}3r<~t`smoW0&UfukB=PNrOQwSC3d3{Jq6X3$39i= zo`4ZT@i`B91W{ss<-9BanM+8(y~}0r(3`1W)lD-iyhKQ0B}!KrS%}6&SqOfZIM#(i zw!X(cOvgTt%z(XCm(hzEob#z;!$zhHtIQ9mIW2uT(pAg@#IgPvPy`zJ{E5g!8mEVQ zY!qK8JIsxx2T%a^vd*R<7cNrRL`NQsvu?6Ej(gu16-5uncR7xGz;k3butVZ9u0aCM zM`Fu+oj%FTY;dUJ%NX;^$Eh!)QpK^O2HjM)C&r)Jcj(O&x+tZ_7imDSnRVLmO8qNv zGTA)#OI(JIiqYRl!$D?xV=5i)OfF-&OlSR1r&6#{;4+>^N~(UQ&rhYp4Fo|{Tc=M> zrDN|1`0q@Y2Stxg)dwU#3uinU+$G_Cxxt<#2ovD(75!VS+I7b_5`FLJp}KDe^DrKu zy~RY|e8f09OK4}@qfhkM8bDmMK-I^A4ESR>ciyxa*jB^d*%<<SCBWg8hAN)r`dxZN zd?>pJ{Z)DlFTuOM8p^2zpr6Bd3iCn!&P7r{iB*9Gl8Fg@9txFGtGdIxK!u+mb9mRq zN^~_I^h>2zi4qlTx3C}l7f>(&OsgwKI);xk8#je|`%zWhV0<A{$5#~x9dHN^`|I?x z#438GKcTvl-2|wjEy0_(JEhbX;kajcXruOlFTYs|awVa$79q$hgxOqxX;`Ai3X8}` z=LIKY=k}^JKn1Wx31ES+ImMv{k^{vHx0QqadFoBb5eyMAaG)dzv}I@YXUKe0c|-q{ zDyCc^U_F$4PU<a|yiz;i;M%T>Lmws=Q4U}|9v{}1n}Oefj=`m|7B|QWfg+d>Yh8i! z5`DpCTE!2U^F4ij9F~b_u8t3|2as`<fN}Zai+KR8oZIs2@c<bgKLfD^an4?ucRDga z(|&qlPnY&1#LNS#duPjfHBph}lbfH<k9G+UcClWeYaiDrCt%{Jrb8!HuEb_<yih;s z5fO3;H=I$<gt|orVm<sI@|pEa8^t-lkwvsBoOMT4f%pLW@P7aBcJiN?e-J92^QH@3 zY{3XZr<*6r)wnpX)c(P8wOO2TLVol@9xNCAmcsR3R@Ri6aY<8zr_3+G4r~^{ouw}a zp8XDOrMEIcwlaYZeE?Hv8bJh`i#v1!pTdRbg{pq{M)PH(`40IImne{OgTj%OfgJ8q zVv2n-U`hPtLI5SUU71h!7Di*(3Q+*jro?t2!ICG<5$pV7@~^~W$NPQI4>JQ*Hv*_P z!f1JS9^EpqpEHB&6*(P#_on1Xsej3N{14&;*yqla=rOF?5i8&sk}CvN@*Vmao5*GW zmAu=RW}1CaqTbUnKv9ZQ7CObmsr~jv=zsJau(0Sf3F^}@*sRD**AOL|1v@E}F0<9C zXw~52F%X{#<3=P8Km>mBhkx*RP&FUo<z9{xdATKlcsvIw1@(v|1y@TiLfmPvYpn`s z!s~-2U{Hf9G%OoLa>QaOTR(@3U`2ekM>w^-%xR4@=6DfNJfPKw-VA7>HG77P&0zGt z_#<bbCF&`$cQ8e2f@{2Wdf75L+tDM@XB-k$q8pK0jX%qN$uTjA8UVl#fU|xN8`MO) zL4RjS(5HS4?qPyDkO*}F3WUZOujUhlz`uSCtQVmH1`0@z58*HR!Hf@q)o?Cq>S*3A zX0;V=)dnt5Yxy0>%mjc?(k%>_B{5(Ymos{ljoppLh-rcNvs_CD;xCI?*TkD+@`)0` zL%i{>SP^vh;wJ7cO7u0@py7OEV$a#AF8n6hR51=)0eB`v<)CqPLVP;#(akn!TZ{%| zzl+&#&isl(t1WooJWZ64#A>zmFY)O=XzM)L(0Kt(z#$;vU|b8uAs`6?0$Ikx2f|AE z<^w~<F{2P%Pap^nN!<2bq@@#lbFkT4^pO(fFAfxODfKU-9%!OU81pEaFE<BbPSt|= zh38OSvoDt}w7^kGeDR3HTwiV>Jok`b!g>Xqn0;_E9l)?2(SFCXQq%<zX_mxMeyCdL zKFb?_!?Q0QArX<cV=F$M73u-E!^rN=O7sQt7TKrB?i2jl79~3C1oV9@)~O*pM0Uej zfSkhA`$e|{-~<QkGdY@Yq9&VV%Sx;p$RJQP8SEuba9RajGbfLnmj1r~4ZUqj(OWI; zlI_wP&fw0!I7RRkiBR|C2%+Endj8Hp)qu1M0QJo;KD2^#E>Iu3VIM$Kv|Fy!&U6KB z{*HEcU*v4p^Lw^CE4!n1sWe0i3vq}|XnA7+dl(ALBW^JqcW>vU7_ZzhaqT@775_h@ z))c46TBtQ1eJi%EpkSSd=@9{|Nb9FAB8HTkEK+DcE1B)T?^3$<V<{qr*en(>8>qw< zi=ERF0C12J`-gY|0B!Yhq+hC+h<Pb`8HhtRCC*+vt|xdY(YyqQg{I?oG7m%Jw@`np zM(B&tkFg<$tfjz-H!=m$uhUCjgCl+fe%--qAXCj5*aI8&?>^id3HuzIfd|3Pg*VIX z^b$(7J`=4QlZhqPekrILxZEB6mK_8MdGvEwT5{pvt}nHrr=L^wREh<1`}8DOS;3|V zS7Zy|F84ctNRB5RFY+Xy^2p5eO3qojteMa+6+3FbntoG;g<;UW2Ag_67zntm3mh0{ z#5`E<a2ybF=FEQyu4{b%6F7O|)MJ5CX43$8ujD9uJ`ODCO#P${oNd1K{!tynSui@T zef}#Av}At&jFS1!QbRDZ#hCt@TTht=!2qjq@^jDun5T?VS5VK8AzM}4PNIGFYePsd zfP~iIf=}Ql8G-z-a9)Mm%W}E`+J+H{{>LYWWBvcD;nhl?v*Ud!(F<91NAhLP80TCa z`FryDefyIyxoPbxzh}D-@2}mrMmxuQ=<nI?w;jqg(8Tz(b`SsW+qL=5o%?Hd2LdtM zwAkmrZ`Y>7VKB3{&+jnahtk^Z{ol81kM~=c%sXuN+_ZKN{_oqh$2+9scFlFU&=bGg zoTB9aUQcw=@d8%d5gpI2bk6f3zvs9Ib|}{{&qt=UoArCP`#cQp9nSO1Bc0>@9q`MZ z=i~R+?)ho${;v3S|DpRC@6-{_@n-*?aGndpdWUfClh$s}-?QDvc-W)e^~a>h%tKrV z<#8l3K$n4Ued+E3#5gX6-Z2?m$J9A)l<Rb^ZB&F1fk0NV%lqq0PL>%&E{&Qp54E&R zw4DV-=N=M!;?$!s{6ONyF28x)t>m%OuGYjY<#y><3>I-*x|;*Mi^c)7KPUvt2gmB4 zvv)7XI_<R5rp!~Ibo^kd30Q*QaCLe#P>0brkU0C2ik`0IrMCUDeY3CkZR&dI^<Zlv z(fJq@=gneRtefk}?xynVFTyFo3BV)tjq`v7<$1wB2Q-6fTyiP-1j^cS=%C*W&;96w zU+{!{yLc2xoal148_ezXTi5My4zt(K{jq-j)+ZH1xYs+|?Vp>zex4X`j<@gcIo`Xl zCD_q;PxTLXw);Eia}K$S4Z057y&$dKqkqrwmhNx76NWj*`#b1Wwj9WE&Tnh`$fIfP z{;u|s`feS;8DXV`IXU+QaFAF%Y;YbB8@ScON7LrzqGdVe#YVR2Y<~_Pv96CGBYczU zLtk(uO4E22jBwzqrw;eyY^3hSm%hTDH6|Aex;MF5VX`1v!F)w`AbG(EamYs)Xu(Sq zltgS|r`=iX8(BO>YZaGR8cVm6f0%ZD-~9e(;zqd?J^cX3Ba@GVf1E~o5>YAB_8Vrv z%;#8kUWZpB#4UEn3A4)=^4k^oR<3PO<8fMv;U4=qY{xlDY!`(cWeV8rK`{1}z_Wm2 z2G?<j>kDz8E)F*s$BQbZg;|<5#ZCfEpNyARNw9+rvTi>ER0VTO2-fk~EC55sb}Za5 z8J`J9K=nTG%TeYn#uo&S^GY9;Lru8R3>(?l2XW7;M<R|T;$D_uiy=dqHw>M^bt0IC zAGtTd<77&{@30blgR_ekM6}vOu(ylfDphF$#=#IWZrIB>)lWE}<b&B2HrUF5_9lA_ zOKi-GZF98b4i<V7Lt4Cv3-|qB_TB|Ns_JU^pGh(hFmM7A2~{-Kpu~bE3Q8oA3?zC6 zCrCw<R(+*Ld9k%hWd^8<44xU_^f*ebR(r9fYOAenwXce(s0m;KUIA|?Di@2K<H)5V zAzbtSt$of+CWuxm@Ao|a@A>k;oU`}Y*R|JPd+oK>UR!TkACPM5lh*`5joQ3{df7^j ze}_;^xR4DQTT1MCl!X*AYI~psa%sTdi^##TMF;I^WHRD`gG9z6kW~_8^K-&u`<~-z z>xHG|h^c#ah<19X1;?J$*qKc=EGu`NlRf>r9aecxZ$w>RNbin0sN%yYm;HP07uB1E z<QouTIX7WTq!dG_$$}VyDTj)oUSe{E^P<uc%K7H9M|bQGEolNb^6ig~6Qom;7Z+UL zK=GFrJavrxL(<V-D4zq&S~@B-H_agZ=x|j{CsAJCNVTpEjW_&v9InzSdZt_MOlLXv zL}BYHA-=DT${;Vwy!<*jd;N9!lTLhQ)sae%=gIeVp{Hp+v(x$|c*NxSS1?O18nBOr zLV4qO80JyOI=Up&j)V0KK~7254(Bk1mY9ta#QCc@KFAOaJIShcxDYFCG2rNK9ch|X zMjg(O&T&N&SJFAoFL4E(+qZ?&15VpIMejr<3E7SGhZ!%CcUFUe;^PfUCqJHM7r+~5 z<!SK}EwjQtNGZDUj1<61{%2L3(pV{tnsbke$k5oIO6tQr*_<J&4$MT7uACDYXV(?k zGEO9%waFTM+S}cR{AY4bugR{sGx9@Zob|~;eNyLT^ABHYBaq&(W$Uv_!S}Qt4Zr1S zT<>(R!8ayJnVH-3gHCM5Hdbh7&-<O?)=Jz*#2HG3$*~<ZaO^{(HOzH$T|G`#a_q-R zW;`rPPEshsnHv4I^?F~hFNvJ&_L#ZGp5$+7n~m49){ddl${JdU>L_c-`?MT-$d5Yh za18l%=^;NX_gVa(9QUK%L(>Iq&es;!`;y=NeQZy^>0`bzTBYR;s^n0^o3WdU+DoEc zgT@v=A!Sl_?^;D#WUuXdmi}&9uYFkb0%uF{S#zdC|C@y?-4HH2eN;m-x}KdP`2Ejl zP(`C_>z%Rm$<XCT-*sma>(YYZS?f}sJ*T6(uTL+&P;QW>7w($WX`ZBYT0N-PDfZgs zZ7y~r7jp7C$8D0h?eBD=1gj+Oz0PsZO5F0!aetP$$2-T}C2<SfIPt^%le4nm5wNH6 zIZZacHvRk@JktC7FM&sTt=x|w*vaqQR!8DKThpoUZ%W+y&T&l=_j2dBze(Jp&T+qz zxCbOIqt-o2z|rgyT5o7{Za>4Q@v$1FhCPWa;Y#)HdfrN0N&ax95>jc2i={AbmDWv5 zW|DKReC$~0j$P8jS7+J>>GSH%P4=;a@u1G;2ax3@Z&6O+S0BI9bqc@PT+;M$+9~{! zP;z_@{wTHDkJ0G46C-52pIcwHDKc5eo`2KVrth8jy8pB5+=*|?Xx4Se3B*kCWt0z2 z0bfuFpXwPHX^G!J8s*^iFL;hgUOCtos{Ca7B<G)Ri4MLdjiuj=Rw5?I^<)GB6l&1s z7*v2;F;0E{m<!Kst~bcN`Ho<0|K-tJV>A7iN9S<!_V{QFt~$43MSbOG(~oziw9}^N zmWX?hrVV*q`Xjq)e-j_^56d^qppR0Q7EOC6Ir90cfHwDZcr=yc%+$*m0&y;Ra-q`j z1gJed%vb`A%h;D69)0bf-lX_L)8*vgpP%Uoqz|9{(HUP{pNq?mZOfDyuzqM}zao50 zK=vvzxK_sbE9<GhP@bAae-7eXI`O5~J$Gm(<tJtT8IzLMzgLLQ1h>0~L;v2vpKyO3 zhaJCgJbRp>#xw65?fbIngBG9kCG};bTuq`RhdWh_#t?FN(yxAq44qOb!BUbwPavly zhNG=X%l6#iKD3#5b8d-Z)kO&4$cgNO3mWsE6m*YF_~hU@L$WY18c2=)TA25RmT-3? z40A{5;2o+M&ttT|aHZ$gmE}O$(zj-g#$tcZRR!@dy)yP-`*;j5<mf_6y{iyZ+9k1f zAttNkq(Fhlvy;`;r*%%zc#L>Lj88<$>hc<xRoQ!vS81O){g7#u`|)J;jm*pJy4;cy zi?-6M|0VfPMo==)-YjZ?|BM^_oB?fG{Nvmw2bekC;Bj4s)Zy)sxw=^_ND&0eKHIb7 zO*cSJicRCJ>o?a2cCzJ_#c-W6=-bWkx^-gD`*$S~KRlAJv^}r$;A;xiuP*Pw{W#H_ z!-eDj5QwT(<zO6_6BD)8<YSaC@LMLr-|^N(n<Gv%dF!er!iwh;+f1~wBM8V*3y!?Y z+kq-AF-U!{VT0tub6fll5WK2FOB6|Ta_9};f@G)72D{x3AF+({XNQeHkV7XTzDu7w zaqX_ZE0gRnVP$5IQb4=0MRp!g^f4oo*@U9V*)DzyI+?Jiky(uB@UkXssH>&c62BGI z(pO(JJp*2})Pvn_4tAzXamk@WP64(|4v{U`e@m(@J+H|retX+5Rf-ZxfkauQut*^X zNSuGr6OJ+<mJ)>kH#RWV#(|vZjF2_G&^Vg|7xyrWP(Fx8AngA*b)lSmfOdhLqA>6> zD%AwXB1CsENxQB#53R&a0kje$IcZN2)x-_!32jGXk*Dj{wEPw#g=Gkv;k*gf+4i4l z5!#ABuok7aUB5*C6*NXr+x@gb)kg6lQA?nKD25`F;qt>WxYR1d78HV>taD*oV*gPT zaOgT%#G^kKV#DlLiVEilj<GAvg}YkHHiV3r!+Qy6ln|v3<9N*B?Pip8wUkosS-v-V ziM7OH@tp9@DRgJFOA8h}{fu)wi(A$)6`eXOR;LQ&=)IDrZ;6D3r;nbacz#5f)yA;V zT*GBe5u#@=x<egI1mwqL?rT%(MY*jF)gm`kk|%)bF=G2)Og)Uwj$GH@$uxhTbLX{| zH35jwn6W%K1aNb?KAbBDP9PLa{sd@#w@`2TC{OplmFlINZ*$0|P#-=L%l<scR{2)+ z<J#fYrMzp&KO#sDHLMCsoz^n~Xs|P{)^uy&Zg(?>?D?s)tj8wvark4`sBG7Y{JG&( zrA34D&$T8JZK@==)uEF=;XemeU(~G;a`Rl1?p-&TbRjV3=Zun^rMQg#ScP?Fi?Ihi ztN66&IM=lapX+k2t6w_tRA!V_=qR5xt`tz<@-Ct`rtRiIS(CEW1XlmxEO^J3_ZMV# zey5@k+&!jCS2;Zv*F`lnoC7Tr*|BhwZu+2k{8agX@o6QV0c+)3rGqPg%C{o#tNT*q zyoYlpbN+t~+nmqZC|#{D(TcCaCuUiuaPq4Y;Y?$&!%g8x-e$pp4ZW-khyfL!J>m-Y z5aS@3iyc&BqKtBK=-UF>9FN@nb{>#j>!mZ!V)43Vwa~q4ZZ82~E^~pzEyw;gxmoLQ z05Whn#U_h_C-v}+ZpizK@={B=3l{Y3D7RM1ZEul;Lwg>TRpEE!!$<PraL?*%T;g<% zGw*++^r%~U)H&JhRPcU!n_e_7noFm8$%hVTf67PWCiLK*N*V9M=(U^_ry7$Ze=ob| z&lm)?d%oDQwhN?2rtN65jIErVOewA)l&Nw4ZM;He`pab<aaki=GX{^&K&~=$#-%Ym z=TqZPsqqWS9xP>xnwhmmer{4^TF8cT+ipH_S((lh$Er$^5;=aaR5$irvP$CHS?yyu z2*klNbp0yh_o;4?pqFA@od!Yr<k0AeY~sva_N|w@s3~5}p{8kJl^lcJAVREqIR@B4 z3|=9w<LrbcDgHtVyY5)7BV?H~hQVY#x<lnDG|no+Xxw%dsPHs4ZqS37jEZxSG(tR$ z-5^ZaYfB|`0dAeo))Gr3aJW&i<Cp<g?MzhFb@1a(nAT)1H}5Qy=8S}OEQ@sSh|l8f zTSVd)rkD;;<Vn;s9F;umZBO%0g38W5IV+bDGma23BA1i9hp}g41ln=n<OIGk&ee=F zsH$d$Jt9u~GP(WI<WJ}Y0ws?%(dOiCkuK~Oi#Tm=>nFI=*n`7|Exfpt(tPEc(aNlI z3So1n^F9TuD|W~12Q40vk#YGuXS^U@a_G*U&?+dMbi$rxkm#&VaK9A`RA;s*IdRbC z%-QL3=^gfh;!kWp{=`0i4}<9Bt&#APuj6Xu=95|y<xBzofycF3SEog5@h`@;iJpHg z<@KUZsYym_u3F^Knz9(L*G(0)Z)~J3E(4a3@5Ybv{Hed%rALd;yc!=)X6#&?v}kiT z!ea$5MsIoV@!VOdE{)*uy|njDobM<XXbpL;Zy)TOkR+TrKqLw3hIMvXU*Ep-3+3oq ze2(ltzhI|@Ul=2OL94inbN&pLcgPQugD00}+J)U|x36tS_l0s}?pcIxx$Q!3ijK5H z-;<%Y$-$qV@V{37&0nSdn>yA1^~dF){%70I9}ud1NV#gJ|FfSLq?P#^9n?Hmo*>EH z#l$ILSNq+CQifsF@bG7GFliarp%*!Eo9ODf|98qihRyXiEnf*ST-tYNW=v7c5fB#U zj~tTK5^~B{|Id5micLB(ekZ$Z$jPaT(sqSvg1Uny&H8G#-JcUHo#>W(V&}QHbbjpl ze1>LVq~4<hSru`JPK~>V1&0{^&()G<TV;jEx@Sj8T5HEd&b1pmjt{54xgIxLzI>wa z`-jA9(H+u?4mx*O?XD-up5u^oE;FB!gC9FCQ$Jw%`sXFSWImrF48kG%ovxq$*LBnn zo&Wmu^h@ac?}QfoyZ*m(Y<B;@zMb%w^`FW3<^4~ib#n0eGz0kO9M1JbTs8fh`jdk< z_RsGB*T=sv>;J#6A1+TRIC3*dbsQT-PyH&gHz9b+fs{BVQL1CaL}}jF;}TP?fZ#Am z8PnpzgNT$XCmo-kx^>cgN6tHE-N%BvN#S)u=6-P){Kj~5Ck)R^k+D{&FtH*U!ZEFD zZQRq-)3Fi3thPcn3s!f->1XWjJ^g4ABfP$G*OIOkd2EpTu}H^0>Zv8vO6QsqFR!<r z7%0eYz8h*u$ea9CtT4B7&$E3uIYQQ5vT$bPn{vG*ak6j*n-gjsRTNb2g>Jt~iVil{ z`3CY$5#SIG%tJ;(t*X=@Mez@j2ig*wH@Bjj;YUN3`s$(`mx%K5%j-!O>rv~FsTyi- z4K~*Xd}Z{=YeN}LQ=@ImB|4YXo2tj^F7@Dl;f*RLT}DTImo(UGg}KVuus^nYpqBVl zTB}HbmN@A@Y*WPw)uw^8$%A(WJRLxHAtC;n4}!!hTJY5%A&@Uq;E;WD$W#EO>Y~o$ zp@4rUBv$#^ao6L6`XAd<qQwK5)hBvwdaS*M95m$Vp^ye-=?LXkPY=Fo!!7H)bD^-s za$h+OR3qk&S9-9VJB0Qf^tD7cS9%FboNFl{+kcnwiJs-T3$d){wrh?ItNDs`dpR&= zcM~-6koP)1W_zTrop0SGu}ql;YZUIbq8H+M44))htka@Lu-)G>P06m$7FT}8fwC5S zcT!r|`eTVID<O}_dB%a0Ba@J=vs>pYUZHg+%}93fVbe`$9jzzUMt>puoMBm>q?D}B zSf*#Wk<u+Z=`TU7pvpL)wy&y;)Dq8*Qof@!Q{Q{CK6`bf?(@E1fVkstGJ_>e2U<y! zjzfYOY;DH9kxHPuGfj)nr`0ZQ3&4c~Q}a4|T9e(K)w(x{GrW-+JDF;yxKkaEPNT5m zo=|8FH`>pM_Hq79=^gtY>ymtHxP4bt!4-d{?|NM^{*?ijBc6y^*h58}Kk@u}f0ZUF z+!9YVJ$jMTUDg%q*Ur1C2;V5r%ES&=I$HdD8H{!{Wq(N9P%iagLhXzDQ2Us#SMOcq z`Qm!B>>sez=ITz@*H#Od7f#;9rCiA#Q}1Q_p7A??ukd<vzh{<veg1!DtE3>{+A8gj zTzy`$;8bN=mBNkRzaM1}q#>-h!(zp)yR@Ws-ZcWyzX?DiMK0<9$x|Z_r#tmZm^)OD z1cDcQjcNeE#pIFN4pC9Ka<>*=oZ*O6efOp7TV{XSJ>NG;(F5IF?)uk%bNo0&1V{%$ z=Br9Tz@#s8>6}_85orqMyG!7fiWMEQp+7S5I<5Lz;wahMeg%ad))5)f+o9D<JI#}$ zHqc#^Ti#mop=!auH?GOdx3v4Lw94{x%tVY5J;Ap<cx$E~siezi;6-oP$<bN#wPJ<G z<H+Ub>HTe5e_1V4<V(8Sobdywy3~2Y3|gqAJ;5|@?;!aj2xaVvyv^a@RBy0ke43yC zvMSTN@{W1_5At?mAFGb^j;o>_i5%_17*Pn*?N4b;S+3}0_FykkqT*~@n5h0$^cy%) z$@C2|oG>(^W^{L=CCW=W>)XgIp?I1BbRGnaRXdEcDk4WXa}eu!>n|5WAk$I~{YT<~ zbTZxmC*z=QOC%~%E?1l-P6xtn`mY18&UW=3aue>U%i3dg*vTq<$;h%?f1Tp=xm=s` z0s~A#nO%72cX#lv7)}+WR*|o}y#^PB`|dD15eepx<skK8=DwBp{|vr8HA<!nW2bBP zH)+O6ps2I!<19QC_f&<kvnECI@EzKj-@slF5fSoCDFM$)jFryi9V3Qw+hA$52d4uI z#l4_%R9I_0I1B`7nJd3k(r)e)f6EMN)dl!)BT~C<8^2Z8;JK9IxYRzegm4<X|2bgI ztpZndF{h{h9%v6`g_S#n(90wT*Ay~~%ypPj=GoT>eRTo;jqKG1x#yIWgB{mJT?WT~ zoGq91y2okLCp72)Vw!(X3OnY1f;{eVQ&+e(ZxHie)fuk*S9<=lP@EEZFg^XnRd=m` zRdpT|yFuxG_P83V{vF+S+nZ*H{(Y-HN1)S_z1F;6#vD3btXiJM?M<3r6^^bu3@Q-S zdTDD19g-1uNzp*o;tA*l>=Cj@PItUMd0nnOQ>}A~bak>{R(yS$2AW@V&R3RcmA7`@ zkkjicx7E&jOmPI?@^*<p{!BTa;-2w+&0T-eaL-XybK8wG8)Qt+$MIaWoxX#VO)uBo zex}d<L|m#u#z*MpT{a_>#pc&7uV@U$+VPXzTVz$q>KQ$-l#>a`AzjacuVQVyF?t3& z8}w~<Y1Q!QC*zJ@td)Ged}jTUso#=s-MC&NUQKjWNQ)0m%UfmpTT|QG9!g#q@Fj=% z%)}s>I`_ar%k`M-WC?N{lL>TJn;?(eN1OKoiar|C=K_-DlfZo97|CU<-`<ia=1r=G zHTT{~_$D@)#FVFFS`x!LUgh3iH;0~%EPEr2d2Uy|Y#FMQP}A02V=rTokQ+WnC;RM_ z)HJA&pcZc;pxtr=AT;)J>^O&)U~J|Qm)9p}9uYR5mG)`zE7eW{ZPHz9=!N;jKl!!K z9o5=ysaKddiAN!M`wt~$@(Fc0=<14AV{Z<6(HiZp=86?Y^C;W;Z+Lg>2`M#Xz91@7 zKc$5H&0$kT0_rYe1o>O01afBfXx3%R*%KWzV4$=!@vs`ktJYi+yfk>3=uhOznHpN$ zetC2??e>2^q%JQ@NDa|OuO%?uIZ6=X0bJ_+!SA>uNR1CW%on(Jnv(IirCLEFs!q`o znlyr&kCJ2M$Pf3*02}dq-zvaT7vIf2l3du0>*l{=drpa-sVxlp)tBjmw1wZr=Y23I zIU2{>-KO_(>59?l=gI{)Zkpubik-*`SZ$g+{4RwCW>UdCIfYu_RkJV2NXn4uW!rK5 zob2$TuQI#-r#t!B7P}TRh(q#^pQ{IW(&>Up3hquH#cI{~Vzd0;e}-NH*>%i*XAq;P z=3(+#89}=Ma|WQpwnw#Tp}MO3ziEUrga0pH*k4YhuyFE^>ed!3Av2IF*;|e!o}zut zi3#!+N<LmHW;~(f;!?58A;lCg1-LnxS7K&lVm{Pc>SB_;rEZ=)2+BrOp7(gq1>W-^ z@A;_rTqIB1M_=`Z@qe}I7Av{Vb21M($4CK<l0bW83I0sAF{{LeNOsj`-D17$4eWfz zH0kC>{T^=1SRg%VTF>XkLU%TCA<v`sPIVgj3F#oHubOVYN72pkp#lY8`&|MPYkaJt z5ee3vjm{Y!Tr1Xsquo&fFNM5Stc8}`wbWRe<2+8##p9U;+*to}S#;b<1nTw>r^Sj; z$PoVdH&kjaaTbtfexh+?OWsbGSP6v?G*ZJEpTTGOCOwtEF=o|Hp?f3Eyq!W#yyD%v zR8L9MSMIBNg{F3lw{rv~cIbb#g%^R;V{*jAqu+Fm`-z*t=Uyr}?bFzv%OhKy9n>t> z5v>vgx^aKkPWMME#jI#$UxJA(&!W^EmKA|aJJ$mxS|RHp^UX-5Y=wp(8;Nvj$)z;8 zDF`nHD4$O+Q1pNsKD5Ml1ec6u<>`eJf*`8;pI;+z+NgW?#$^~Wc@Y4JjUGqaK$Hhz z@Ws08H3Fin*15bAOOtUpm~@>rXz@GwRG;`~WR}QD&OaN9HN4I@^#|^fiV$?OeHxK` z<miC?;P_m&H*2-{`82r&0)b9lOtPe1i7jC(Qd$`OAC+Jbu_5unP}7nNoavu)G>;B= zOUV-`uHKCLQV&m>&$Nr~NZkjM5|?7#YCa-sOD_2&|JqLDrCU{{c3-zW(cd_W`DojF zyFyyi`P<=xxD)Is*;Cl}V!DC)zF(v48jbY_mM#*gFYRcLN_BDL0Wd@z!|&TV5~jk+ z!M4+?0UMU(yZeBO#?+^R&)gR<He|jSx!BxoY|vu63$(e%FkIne;I?jZZOn>LL*Bfw zzcGC;Q`iE%MzW!4jP#W(Q)0UdF?#tl<lkNsZ~tj-y#*+8#CX7Ke{y73*3GssoAhK& zzI;=3Hmp4_1?8lk@c21%WnD!hK8&Eha0(L;oV*h>Hp~jWzQJhfTHkGXU3~3~jj6e{ z+LJ1ua|8WmylPc@@|+*3U=8ko<#V2Mi5J$rax?Au((;YnBec0CWDOc0)@bpgcnh^~ z^#PC9H_!;D8?Oq)%P!#N9T$G>k)g)sDFCu05}bA%&zeY?fHiU~zva=Px;01Wp4)GL z6zM{IVYENn5xGBNju1mWdhoL52(etMD!E)$Qj7R4GynC<U3$xG5nIZiW_$-j*v>rH zoA6vOlU)y4iAK`s7T5mpXtGCyauY(C^~xoh@pE}e)-8v(T+<aU+-wE@LB#|IpPDEc z%(_K#KT}sddAZ+gGB$8aLrvtk*zOqi6J(C<ZjAhZ`=ICk1*!#>%ni$B3C8*nY(+xa zBk@vIh#&tX@lt6(sPe$H<GeP7tUFa)=SE$Bhn_r$aqv-IRWEJf%IVjtMZjDaY^m)d zWYU-VyTISA4@ro&a81Qp;EC)>TR5GW{;9EX7FrXqNALDJ_lV5+C$0Kz=>(cWiF1D} zgWB|AUcLXrV9O|Bdx62x&P7B^xpcxA&3gqm1gfyHlyb*W?n+}l<*rxdHpf@b*c39K zSV?ZlQA`dOpJAPUTRMeOVPnH)J^ZFDRdo;5n(J!K%O1CvF>h<F%O2OQ`b7v)xmJ%a zwp@*(n=M$DEe~6D4}~o<S@rj%LFg<J+M(u;w(wj(ea$%(q@ACW%#+h-PpWjehfH^M zM><O-3mh`pNR`aR&x+OA@R&+#w`aj)iGp(l*Q8|dS;6h#bS>%eSggiFH})_hCe_Fw zhmv`HbaNQ@Z_1zuSepQr*PpL29=dUW(uS+juv%6qgG&VdoEa44!tX1Wvx6+k`q?W- z3|yV^uTzdkn+`wxT(GIji8_G|wp4-bXJC`^Fy9x0GCa)JTQMOVPnD_fEn)Mc9r_;y zw<K2JEH^EAa1L2+v`Q>Inb}O@u&GKQZOCkNPA2(RfMdvfyi}Al+!5N!{QQ!6^myq& z(gj=Mr8PYHr&=YP7=z})@2kv5x4whRxsh_XZz&spzhFMQ?GT8ZOCB}fLgsHvMGBBE zRA4N4e(3(R2wl+q>zuCX{9k3>$aqfgot^^Vzi=kHS^W9=ba1;f^~s$`s=Z&OzK-@E zdVZ?a@L~qp_=v@D3@>4GC8ST^wMOsO;#3pyRpI$n#-Hk@_cAutL<+L1X@(*_u82e$ z@*Y|URtdH^55OFDtdCz|eE&^73c0<qbt(I>!IQ3J(>u9jK0Vkjz0313eid9^n%;c{ zdiy!NaqUMH-uxT<{BKoLtz0*fJueQ%hYq^#mUr;?L(=o7C|fPsyViZ4q;K6NU99=a z^`__lm({QE^=|0C!q?k)$wH(SXC@IlmfGDz{w#hfT=udUpmUAw`t8of^z7-tr{+Le z>@;6~bKnH`(cgXabsxRl#}V!$;6B=CsSLZ_#}4<g#eHmc9~<1qTKDm$`*_WLtdK{B z9~4;{e3`m#djI%wPn9ba*#&<$Y={0ZmKef%$RDo@<jEhpeZ}U9ZN_Izku=lAo-O%= zaF@b%>B*aN+U;aDA-NwE=b*D8HzXByv_5%rUYh9$HJp<dDr*TPuj?jzs~zR7TrEDU z+f{%qz$u}ZpoBp<E>0E><IXk&RQ)K2YtgysD<J&iFu4m7t~<kyg}SYR3!bs5-n>=u zh!rbHo$BV!GYn$%<OEo)8(}T>9Gqu^%-!C`=9)+ky=4i^Ry!OX<q0LDa=#QQ44xLh zlxBS~-=^qg$Xr}HnZ&{7c&Xft&7QbU8eVmS7QdINs3V~p=xV1TrTM876&>K#@v5q^ zk+Iyfn0VC7Je4Ocu2ZTkk&WFA2oVgwt}V<Jd=1WXD@ehgW<?2im_nNsBeh6Jk5sH; zxU{&|e7n}Xu(Xf;drS~&@wC@RInB_M<B$=;C%$c;qmDA6>}FFQX2V@9gEf}&98uUw zzZWSQU@RM!-gE~q2d8S-BXh^g9xCMaov^t9=}Fjp4L^ll^XxxR8zUK4Y-<%V#Wf71 zvA$~+b`f%QvNmTU5mmX*6p~#_d`KYd-w}*0F1?<wf&_~d9JTnld~yjfAo;@eUiW{% zMu>W1B-hRNb#n($V9su><&N$9rHe^q2`H3QuiNdhm>B4QV;}}63#gGDI$O^*L5oYd zr6)qUlaVfY_S=$|zRQKzX)&Z{&mKmufhmVvaX)Mk^=4lICh!5ZyHC~<CkxkS6@v7b zYc%GE%sWeG2zYxFuke830#CW3>Q042&Xejx4SR@poIgNl()8*X4kL3rH!&`L)8qW; zE$ZG@B}&s4&fr8Gru;9mnzEl|0?OQt4bwFxLe`&dX~fBePYdXkV>vrgN=c-dPn2%W zUm%a<qY}zq9z$?Yvf^UpPCWW8H9jIvNx#U-3CvgNWp7CW;cW2I(G)U=lv3V2LLsJ- zq{13+pd``VBr3T~F;(znH*!@7@0yrDJSt6>j4_^MESE+}VVS(~Qc2=wkCzH9$||9R z5@JM2395rheVCLW6e+8O<z7%et;u{+Z7Aoo&=kqOfOr~EBWdhRnz!^am8^zjlO@@s zZZaJ(c%R1dX@-1ibU%&l_%u<XSGv&?RPtL(*So=qdO-SuH%_Urjn{M+^LcUGPR;RB zd6&@<z!j2AirmgqXpkZ!6^+h0U;@YzC)y|S8D>a7K}YlbinY$W3Qbry(|WK&%&$<l zCgDG&OqrSfkpCU16WhfX{LV>=A+7N}lTYDJm0K0-ztCNChx2D5P`31ZrdU4rCsdUe z`P6<Z$eO9}KCRn9LOA=AVGvmnNN{+o9Ek$xh6|F>Z3R4fwC|Ni;FB4rQ8oq~J45DM z%4>D#dFdB_H8S7SJeulHj>N3%^{TDf+&;8eTiA#|As+UxZ(r}x$FMcdZ*GH{c<Y4G zK0>=)MmBk!UvGeDT)3}1RQdk&N94vm86=!^=?zFDYd<OHvOj5QHZACor<glZEzG-c zgI9jQz1OccU0)!j?%76O<t4~X86tPmo=k^bzct=?g|+9r_#9^fv>1w(3G0M01Q?o} z$tk1b^oEwOb>T7&<DUqv*5+Knk`vo=0@`Esawp4(dMUw;H81uBHH^W0RbJRc-pp*4 zQ*)S_snw#u{s~8!WVI+@p+E?xNT*sYim^_hDj}sy5rDE@aE%bzohKEciUBRPmyz+% zIfIJ~8EngzbEx&QPIyH5P8<FUh`*b)I<FS-+=sF{<FOafSz-mW)oAafH@vOg9;Dy( ziRT)rhM@{sc?TkeEE{Lb<n={eKfA$LRbf6xIwZxOC*)tkV1tiEs)e;*seS3{R+Fcr zx_Yb6fk?khbz0&@D(&F!yn25pd92=Ur3(}-k4x*|2NYxM!9`Bhw-}p||7=G76Y91n z-Z*2E^g90``n(h*Gd`Xo!i?MNvm3FRK680nF`c6!N2z{magilDz4;Ni8y}BV`J}^{ z#;>OF<P$u~$`>M-p$~40w`S(Cu|G$<Z6zH@*0(3eA4t~i2aI~d3cX=9`V#A=m&?P} zrEl;9=7r5m37QwaQLdXeEh~2xQ;M;lYpCZ-{_*X}x&tb+${8k=MJkd?`Y`ElCB2|` zvW}Jdyd26$u$UYtw5n{SH0&i+jWbr#dGkY+FX9slS8YcXD{XPUqZ0XK`u5_pOkc*o zOvN((62F@Ob#==2nMcn$k5gy-4Ru>0^iXXNUIxC#Mz*s{dC^-Mfu&dA>+4D9Jm8f_ z<sQC&o`3PmGq*X@NbS<a+T;bQ%R8JaB(8(LXwQ%G>&Z)VbDhihFkkvnK|iE_$@6mc zh8J`LsQMxo>Du#`_;vqF&QP~d7ylHzeA4lm2e_pBTP|4(#`gAse!v!f;tr)Y_dRkU zbX<F0L*B2#{^e<TJ%ix<Q*CS9@?v|sM5c<aH1RMQWPb#DG_{QgRV)dWEph%xQV%L@ z^aUW_k>PaV<i!k-F<B_R8kZxy;VnY3=g5jyg+qv#JekR1if2aY=IhQ_3RSN=oH|}Z zySSuqhjSLMbrox6+sXJIitdEEEtPSr_ah$N;dED7)oVLD=g{#u6WHN=#;ezhU+KGc zhs-6;2Kid1zP{yt#io>A?)q2AT<t8CDD9C|lKDwV*-fSVtGtSTf*sBu<dw_odHtn& z{a9Wt^}0u1WAa*|(njUAQeK1FolAiKYUhfqsC(V0^RuFU??zQ+Mg7i=D$9!cts8Yz zR@7Z?R4!3fFoK`(q&@}UZS1t`v?ta3hw|>ieGRX=x!l>uGd=%g{SKM!vY}K<xNwB{ z0qH9K(erUtURpxv+(LOPm$wpmtC6>IdBdChb?4T|+eCRAD{oWeZK75dFO5MkB``$- z^WDH)iIngHFD&sAe$)#~yo4LQu*6Gvr59H5x^{D;M6M@N*PdQ~Hr33P6cV|er-avg zVPUc~<7B8YdlRML#^)2EVC&o#lGH@<gUxf-@dgVGa~x_pcbEjM7%MD(x!KfSE0i3U z@QHhfQHf+bqg#uFQTFgv^b8jtv`#90fa^`zf1qN8{c0=dfp#7VLy0c_NwJeUYe#{v z-h5;}HCC(*EtZ=3tI^H8Quqq4>kCXjlau8zKy$+W?U{Lu?{IXc_g;4zn=U(6b!@&i zcQ5&1@{W`B1QUt8b+Xxl%PZ84y}hGP=+>ol&YIiE=h!pCU9xK{plABiLiPBYr5}%a zMkRnp5>&|Mk=%Y-Grg^xOFvxw%Axy>Ws>ecz?CBQTbu)_Pdq3!Yw;_nDcww;BaZy& zr|y;e)yk7|&h-BG*PiB6U7sUI8tj@gvHBBx+=eBw#d&R1=8Mkqs%6l)OCT<q*VHYl zzB&P1rctl(!NLB3w!|bORJe2k@DVGSSalT@3Fu^yqIb8(OU0s(A%ba&<il1gq>@oB zmbeMdedKc20kw!rkHd)vTx?}^D~Zma^&5UHt?vSD9LaZdvQAl6{ep?Q6_ah7(FOx? zEZ;H}t2MGDI#N#-{YI6NLn-^{f{<0o8P1(Qkev1Ao6hahmX7tuT<I(!VS4_j0Tp>X z)vWlvr=|D&#q@4zTu}EUdvFm#QPGIt3D4shM*a<Wf0-Fbp!6gj(b;(G7W*`!l&1*e z9!b1NiscWu8I3&cau`%`R4FXJZd4Z*a~VOTFOaz#1{Kq<N3S`}XYVauNTNu$m<swL z*T$;<PCWg6pE6nvHG{)A^vREOZ8qFl%s^nIDK0A5T8S8hf0&`TY6NyAv})8a3Cr}A zKYJ&ON!Yw!wR83|>5Gf`OPd3gQd@K2boVjXeVpVzj&~nNyN@FGp}CK4?jzTI?EjG} zWtaQ-m-|S$k4^4lo%?u49*!`+_I3E1R<o{S{KOJtr&tb)_J0Je#_~g!S`17?wrbo| zl;0&X8jP8Bu?HJr^ZG1}o`^C2brc<|^5;i~gKdn0>aHP&+cWaT*y7wZ0+9%ez{=Fx z`J9-RRPrar0;IIxIbCi3-1+ZHBKJwNc7O%*XiCW3l&VeRm*9bnfOrBaF}H@yHOOX+ zS99e2*z?5u+E*HFT{&{omLCmbE5U^q%C(5tJGrkFTkNjNYWNq8(g@3vNvJn{JVLhI zmB_kkv^!sD+LS{DcPKv}kS=M4H-PrZ(%cOGr}wKEtVo;pdu<NmLn~~}LT<JxH9_V< zy}7$yoEkXK;rGj@S{iJBivvYdvwQSyH;oXTj&!O==F-R*=~Jx|;%&BTnRDK2CDzD^ zMiK;!wm|d*V{bt6N0S{@;&CXe%1GcDh%_hlRJY7E*)$pb*(b%VbJQdVnXo%}VUqJX zvFFrGz$}jd*Ig!yre1xTFZJ#D80bWLvdIyGaf6JDd721gamU(Ai*F+_8w<a}07j@O zWDQ|{Vs#+VJ{28(7V8tt16$;@*<DRF@z)~H>6M>Go<iPNkYnu5pBiax;;4CdGI2cP zKCYE&ZOW;ccUI(XbA|R~r00Q2W~BRpl<CsPkTF9%)P0ZPj#a-o8PpG1F&SYku~u5s z8dH5!CfBk~$2w+s$gCOWh;fFZTh`gCALd!+YwT#wZeufZR-2x@0q+f)+w`(Mevxf8 zIS63edYLQGU22J5<VBX=I$Ko{?GrM7I?Ts)0LHT7%zOyOo>DbNHmd0P=>~<Ynqk~V z6I-OdMhjxq#nSj_ne0}-Gh2EP%8jk$q4HU0n=8z-tVqv&bbg;Bs%`t{(DwQ0re~e$ z@gaIct8V4(iXIJFU-sWJRZq*8i@$wY_B^r0XS(xq?GD!_<UA>*1HZAqmbx?Tm-5Ry z%8zK70s^|(XV+4w!uP03>Wx)Z<VVqu7rF(1daB45C{N~praZ!p(kZqG#(KZm<#XT7 zCl5});Gq1AI)!mfq8r=T+<jyh4xnJB@e#6w!L%$JxO6^tNv)GQ_wUh8`K`GkY0I>4 z{J4t7klE%fPdl03GnhOfL2*pWlD}2VAx_I=sWLyvUX$L|O_%8m^OQc=^FMOeC#k?# zTv|>+Y;S%|h^#ndI}Sb~wmT<sA{J_ImJrQYFJUS*)Al{RBLl24`LW&pdAAll&Zp>` zy46K}GfC_w+|xU{R>(=QFkxn0p}d#yKFLf-CnY$+4gQZ8R0w6(Vey8{(9M+(VURvz zS_gIZ0wU=KCN%;Wc2gbrk!>4<Md3vDZsRV{lhMMlA#)$ris9tn#5`F~-aA${db2;7 zjNk_PlyB#-Yk;dxNEWRuA)h5U#SKpMf-yHZ#S6}NgE23-zzxp#f{(gEk*`Qmjc)K! zFSybTHhRJJZg8a+-0lX~dqE#hTD9E^7P>(nU6GPY+@KiaO0e7wigmRFYusQt!PE$k z&w<io>sSZ9WZiOCEm^XZO>$=4>Jk|%G=8|ZW=#Y_-s|{(vZaT*FTxsn4R^<^=guEH zY(=++t(k2rvgWhWIi%i!7`p4Jv}Yn+6Xdj#(mNJ-X*V_(9@Ilf-wVM9S8Z3;Bw41A zC4}^^m^2f~BylkpLQ}lpd^Z^Lf(zW>d@uN@8(iQ88{OceUT~!wZ1jTb-QY?uxZMq| z_kup2hhZq}KcEtZH_#Gd<pey$mbM4G+^}o1tXt1YjbXFd?#mOiY-FGTc;>q02s?Z5 zGJfTuppOeh=E}>S{wI4rV8J@>0_>utSf)d(Obb{ov38mLiOqVZ=E0uNT<}UNILxs5 zqhcn_N;O1N*(fL6*R3)H+et&rdOk`}&`}`c1!Y(X`dEhKtDqynLN8eE24#VhuQhJ4 z+zXC%gEd}oq8k+ZW=TB74NmleF*i8H3(i-;x|pO~;J(k7_eb6L1@hkLzCUWe#FkY! zw4)9M%N0vKo+ipzF)qrm+Im*%m2sJc%;#&5i%_jEqE~8YJbLAhj0gJc0s0<#OX-4( z9b0wd#zF>s9iUxFr{v53|A!^2*|&g)GB5?UKG5&8Phd-&!kSsxHh(1hW6#dr9S#od z*xQ*r42N!B_%)`<m#iNQgt>QY8uZ32xrDXAn<m~gk|~s#9h>dv(AZ`V&HrViV*d`* zlQAi?A3xEx2evH{x*c*6P>}ToY$${I`S~+K@_t>q)_MNu+-N9kn5LTt+;s~L8XUon zL(o6QY$5~;dtpWT5DP;37`?Gf8%9|%8Nvy)Z3ER#aQSzodfFUpf13sKM7A=K6TKdd zQ|JE`HtO$t8=loHiIG>HfuoS!jFiW2CasWn`4!z7ov&Ap$rssyZ+cF@#vO1lS@b~m zZ?(xtH@_#bWcyQB*{qvYrL{<2^0lNzJ~nsAnNwBd3|VK^v0+BxVd8qVsx+J&@>0k; zBiPQdk)K`>vigRsF11{GYaVrOGBVg-TZz~+WOlvz+)zVvUGiFPaa^BUJ6uWXs&Xl8 z=GjO%a`Rbg@o8RFDmyn-7D}{&pWeZ3pH#jrb$ez#7w$i6!#1DBIM+fR)9bzTC!D;Y z(A`Jx91rmK=^VYKU-)1|im_B}ee_i+Bjuk_8Z?_-xSQ|PncF!L=t7%s_C`j@*xMfE z0!;vsoY0<Fdvmqkur@jNK*;<cRQ6WL*y^7jvI^GG=)$0E#AS4Jv%WB7_E{$fsIkkT zpkGl?xN=AIjf2{*@CN-eOXH!=2mI`Vg8z3u050s%=K~)2wo4BXIwUX0a7uhKA}m~I zKXybb+LL<Rk6oDSkL|`@$^nC8GrQdoIg;}=3VpKpMcFvSZfN)Yv|svd#wV#B9qXmY zfjFWbo6+u@v4h=*7XKN=WqoHSq&_mmFY7M$@#(O(aC~=>-sQ*kTo64zRqNteY)@EA zL_k>AaOX&se$NGw0kJ(}qZ`GVi$kgvtxD2tI;cYJcZKI!c%+oF7Vq+257PKf<8qwY zY68S)m@jr#{-SoC?ruDWNJ2|=Rn;xYaazH|gVrBob5~F>C(?J?P@cJq^2i(gmJkV- ze_jMp$=)xMC@-ol66*%FACmJH|5C!U-p9-SHhog#q-jMYEsvh0TjvyJ!CTUI;Y(qZ z(NO0z&JklgbxtO-MHRH7go4ubXPi5YudDc{E312*RE5~xmrQE1bF0JxV0)w|<hT}o zb|zg7nagx;WYxuH=_84}2Yx!JJvkHmmvP`l7;&!o(WItrxiy$Wsq@WBl&@DFqeQHV zOakV@G@V(RwO@AiJG(q;nRcx?40DC^OC|-8hXm1HX^AIf*=AoMaPkG!Y2l#NR}2QP zlP^j16<ky<qzJPfjLhV%I5m6{^yFM5HWzcYs8QldU@l4r%4*|aKBQN!(r$T6O0>Gx zCvWPS$5YO29Zi{`hI8{+mo~MID#?pf)+aB=sBme0WvbqMFLH92iLn|eRJB9!w1sV2 z`~gZ~4<MI3g=9HW#2!wuPJHT47laWr2A!i?`Jv>+`Dnrb<z~BHI8ZT&1FoEH-Au!l z*u#hn!V_~!mW-0@Pv9);wr4}A&ACl#gN&BwiIrOXY*oCnmq_=@I9cMb8RLH7G}y7I z6L|^EkQP+5N?Tu165506UqmF3$iO=bG>J{pIm+#1ss_F#3tpg2t`B2u9ChPkzw>?C zKu2-9qj0H$PAIrIK{an;lA%LBiwUO^9Sb@Z>lksO8OqnoTI{O<M@6ebOgqw3;ovs= zpFkfoJ7sLQp%y#OT<J-}s60J+BRQ9<oTqv@wS{)12N_BBS1+GnE$3K>c~Q7dtW8+f z`*gxrZ(aQS`kq<ZhgnAn3Zm9gC<xZ=$8e~wf}=_3pus@tp(t}fOXpSIfj^jY4^36> z6@q4q7XKEx$x_um53^n--+GyRm=tcdeY909U7xHgF_%o5y|Jz9q}hAeaK;~zqL{4M z9o1I0Me<_xB^;Mi1IsO}W~*f00dE$&sZ;|>??!4R<_AEd1Bs>|d59qsoEivDab}VW zzKi{OWu0#t!-6gkw`QpH<R)ikNu7_W5e_xf$rRZfN?w+ymo3#RU)K`H2*%E%UIu=% z!`W>3Y2oLzg%_4;lLmBcYucFGZRI4hu0$PI%0NkKE*8Yf!d4|W6);jtd+L2v&gbOg zrr?Xv3+Pu6m;_^O(2KidNIKIC>qtb)QAHhOcw|h#TR|E6Ft)XhY5v1-@;s(FH+Ugj ze<gAWrlxiZII3yR(5ys_4d~se4DG7`(r?=)d&^8+_2xF!PAgZ8DDtda_|D%PqF>O3 z=x~Oe-Cw>hvI>KnQelIaiz7WfIT~r84t`#`vM{S4Eipy_@ec);3^@VNxBwW3i!NnX zb&S269kGxPv8_5La)vZ<5;*?vhCTrS;R*t3kn-^Z<;Y&1+zJ~h%AP_gv|G(#`l-qX z`$^?OM2K6bmRv_mR4PX(pn?mn-R{wY<JEQ#n(q7{iypvlx-<dnaYlAB2ge}Vl>899 zg3!Hs>#E|1@<O64))F%rXO^P65=K<2pY&%D$ehHgt5@!wb}pU{hU=?7uD5P_qcCKh zpI?uM6ut7*>&qNvwnsm4p3qlcWs_oAb_&hN6%2w|seJqTwSq6kvdIV0Qg@s$FKJ30 zA!lzB-B{Wm%F(UsinaI)k{f0lT|~4bH6ok8fvCv`|5Cnb@qds|d_IUB52F9}=m&Z- zaQoQPu)3@(X+swnQqokQ6k;xFbAJLL(PY$>gsjVo0ZC#DuzLux@6k#Qdb%n!tcC<u zDaAa76k2ZdP>B`;>TPyHc5dL?`jFY;=_p+O1g#oVy`#NhKda=c+AX5I)sr*8%hx;E z3ro-A@2QViTL_bWO=)?^d_|C?SSFjUW?JgoX}xtW$@I$Q9K$3N{zJKa?|seqHG$E| zLEq6=ZDA-rDU{VWl$-@wf&L>b5c<ecD+?F%aCwA{O{BEE)_hH^=e2BiO6*l&n=-eq zWp02o%?c|?V{c~LD}hd{>}nM$4de^Nf4Mg2as{B2b2ZO&d(EwOzAP<_4VxWq?2x|h zTI%zyXMLUoq6KGPRnpEtDM(zvSA`dPa?txC1eGHQ12s9m-6((<tHn>10yr$iNA<OP z$JYsw{PdR~1PLYNkHMu?u7sN+SZjjR7*1YEL1{aH7liwgG2I}|6!QYkxZ6Tc$96D1 zko5>xc}!r+v{Rgvo`-G6&7eWF-=yF!!8H)?13*o5U)dXLb=$=RWCAD5wfI%44FXmx zDEoEk3znb{N_29(@LWyUid4T^FV?e{mU4#TLgB=?h(+)KN21`33zy-S%6WK*Z`kB& zv&&?jBm=*ce3d{~?Dj+Ey40XFzgl0md33V2+VytSQsc^%lYy(q5UOPLR9CuKQ{nOY z0t2N2oq;C+%15!bG(UBF8cu437a{F7dmg<MydTK=D$8ia7ElW8g3}a45>{a=STh@$ zhmJ9fVE7)UXRWzi@t7dEv0jr?_xW^gpdk5J)y*t)KOx<IUGP0r*{t32G(}|a{VxRS zlePW5wM3BFx~a4zw8}nTC{fsaK~UX3g@I6r%g2E%7BGiLt0>TxLZ|*gH&gDpVu1hM zFhI=o+_?ih6Mm1;5Mv;etU$dSo5<3V)X|y!00Z?JM1t#Y*l2|+8zaYJS@Hq`N$bLv z!srG*@8ol{Kef(X$6dSvm=mPSpo2g_)+%?-MR`FgkPDJjuF(>|P}B|M-);6|2xTPo z1o1B>dEqlatXE_f5RG0P!;G*sQGF}nCeD!g3D6G#T_}}e?G@e(9G%QtkGscwE$$cO zA#VxZ4DI|>Us<<8a!h2)d1l_`kg-kqF{=jXjN`iqN2K$G3P;XM_8Bw_&fz9_G*yIJ zYa_>ptt;6#{H%li2|+1Nz10CP)nVyun8{Hn7oF*TdaHV-dL=_;@5GIZ>K4xG*hVA4 zs4EV_rum(6W~uNUF4hP!hEmxB;2|7ccvI@5_X=b&oav>Wa^VioRbsx|wDE`mLTkFM z3<?Kjszt-?11%bDUb+FWd=Kh{`=HVTx<%DAUpZ%i@CzC^qd^OMVQ;l1tVM6=c>?$b z`^&4{!rb*E&7Y~odxAB3AOb#ywJ)mn?i_UH`29#3HRAx@ZyKQ<!UCoFH1>S3fLyC< zu;q*Akd8enQ?7yqxUphOP{{|qb4|0`$8L&Tsl{Ige~k8=uvUvKLb5gvlkAZZ)-a>p zA4RvNGe~FE`&Wf4U%URjur*;|z5k_f<+^%p<cIusLfXi6**T-lE}fEDKTD94Mo$}2 z58Gn}x`s~kMM~VwEj~n!3Rz<YhRvbdb)kCaam?o&f=Io_LiQ#Xhs_#Bk{EDW%;=G_ z7KZ(=$K<Z6!3qe=CMYpt7Rx&yly^>7%a03BC1RP7l_EpW&M(o2_vo>!0@8Tyz{qsn z?BOGTzWi4-Cu{~TkVkTMjG6@BT7sgRmFF7uG(&And(I#%kAA2p`wx*mv;_V@59N<x zX&E_CB}|WwZuaj=BIhEZD;ay0aAm+b_cR|D<68Y~Ug`yICy}HcT5EO3V$kYYZ=D18 zvf}yz+ELGSQn!2$PAS~2NsITSaRNlVPP@}NZ0^8!W>%gxsaMo^u<AF69LIb!ocvK< zFt)E<wn=ZvzNS*`E1N|S0pa{uqFOP?;Yc3GonAmT(jMs^yD@jTYk8tpNV$R&n#&3W zH5B|SNq4n|^_9UC^2BXB!g#WlK{xGjLce6;tHVrBHn4C*d3r;QVo{pKAk2!E$o5T7 z{udjAs`luy(jsOc9%nb(S1J=B;fbIGj$iV-o4gxk(wohx)gFCi^~`rZC6clbeyWY2 zoM~2tsY7F&k=ShaQRPYb0=j<yf`@XYYg*zsut#qw=d>D^b!l^dDbV3ov<eoV((R#! z0&E`NLGUr{Y8?j`r{nhNY<-mzZpd36@~;V1uAEk_SH3p&=x{PmV>KGxFr?8fY1(mN zR5Q$>P4*0iExo=iqPBKtf*OKXB}MY5ehO>z3i}O}F0XI6rZg|)e_!^Cq2x>ju{&u$ zORf@p$z~;@!POqHp9PR6Gr3X8l}eNsG(;l^Mk-qE5)6~-8!*}wnjiAN8}_f14eHdq zu=!(V+W2C19H_o>N4<3s%>1?RP6m(*Su!n$j;@ngI%;6O`CkK_9}(})bEA6L_6nI7 zU8E<vc@YcH7zY04V!h=Y#eql8Lnd1Ni*qFV4*Q6IJ<)Cz{Y^qvV4;fa{|FB}KT&wJ zdrKfm2)y=PLaxhrch+owg38?aOs3f?)6g5#<D7w3U?Oku;(6#i=C=gK5R&Z39cpP8 z4vdZvsZ=E3i1t(@iP`!``QAmoM*~U|!9u^<5vP(Kolu{;cgP<R`R#qaoZ{^}@>rrw z<mwfxF989aPi0=u$Ifx!wl9Xq9u^-L9)<$v4twu5fyccPvI2ink^O(qqXQl@38mpt z&%3jnELrgQiOMwehw35l7|UA+JkBQ60T0!`i#z()(Vr!`o%?ediRe$FT`b47_=oh_ zmF~U6Tc~9jzx02<IAP)hQuSlC7;~ON%jm{B-kIy{GKNnsjutsBBu&%Z;Xf*lTra23 zSV>?Fqg!>W|AQ+1+Q=2KvcKUyo4*=<YUD;eISO)eiKLI5jX)6xM>iHn|EX8*=f@fc z1H~=iZZif+GalSZGh9PDhC8NOYBUZ^y)OQm+;n-8ZWih6kFjLypvM(!(-}Q_;uddT zc|@)+^=sgP!X_CwFp5Sd1e26|r!0Bw!T7=!Jl~dcS8RZp87<Dy6qJ?TmEWfA^U-7> zjIjc@QNCEt-YhUqR&R#8!GJ1kqL9igC%m}aJTFR6mZ8H$pfLtTpKtCe#mqAa3BO&! zGK_aAraw)oQw$a}RcN_OSm9Jf;<-I*x%37)4YpTC0yce%jB@{f@h&6S&-p!-rQz%j zlNJ{}U3mEL>(N1Rs%V|v;L?BOagnL%(q>6%dp?oUM&*m3*lpD))hI3TtQ7m?C?!`% zR40o<eezn_z$zKv2SUe>u>~~9G37w8L=4|VgoQK+dn;#<;IN_t;pE^TwZYH#m#5m4 z#3-MdA#Tz_-3**0?Rgrmkyh$fpim`jjGV4pN9vV@Q}a`0^Lbw1gOjG<V-5J&7~LwY z4U|ha`$g_^zO7~!bO)>W)FyS5UgWau!at;4P9>jV4IFXe@3sq2aNJYyBUwEqNcE}I z6YY-p_H)0>vCDbVPUzHxkhwBsu24LWcAr@kVH0OAG5cT1v+3h}v&ZEU5%?~@#zxKT zYc6T}I8WY=lDC4{8@E$X&@42U5E(Rk86z}yrr?HAT}+-XHy^(U^2AY73J)ADW%chT zzdicOZ&4Ay*3iA|l6Ezd3{JU(yrlN8loGobd$<Kte7_mhD@atJ-6nL0%i$#vhO74p zYqN!rv2>R5|7U#IXs$8)Z;*YL8CcCjQi(7|2!?CBw}3bBd47$sJn;NXz}nJz`XY&! z;)MeNUBKv|x^MeA(GLZm-YUP(NY$xom;a%re`)vO^xy0nIodjRUof|3pRpk)(#2@R z(y=jUa)r|FlE@(TYI2)t$Y?|i-jWy8?*H`qC1h(6(D)+jy{x29y=uivWmRH}niuIi zyGJoS!2I23G|r+#y3~FiJ;SV**h`i+*?mA_qfs-v2D!VWi!+BoR*)==oMIKNBQ3XA ztf*-X+|O%?+2a)+k%HMT3QJ`cJx^%%M{<ZbT03ApC05Iimbjf#tfHUrb=MMs2zMGt zOyG86%%<4Og|S!4XK%!^(WlilnSmKZJC~4Rc8{xhjZsGG(QJBz^bnib3&+=+%UBy; zL5>Rst|XZ&l4zk4d1uoEZ&x7Z#@(#mo>xUPP?rk|FW<Kl4ysl(=$9%UQAB9&S!ms? zzG1W)?jt{f**02`GR$i8MR(e{Pjn?*{qQ(o7%k@nnm|%5B9n|6XAIL4rzsK2*b?2p zM0>IZuCgdbTA=LbVSl!S>{fMu3b!Zxy(>1+LItI*JO{~ByKna1bFaEKY6b?8NK1S> z$LE{9``XA=*SNmoXYaZC+N*FS`!V&%D#>oI-JS`bqfGd$qAuiWZT3gH&+c(5ue6R^ zSz;0_kzkDFQB+7ck*KL?Hv>!A37ADY`6YUgS+tEe?0(;)o%WND(O44d6|0{=f~MJj zk_d>fF0o^Y<<>vx+6QE^P4DAa`8a`(;$nc0|B#Q@@X@Fq&nt_fNC#R1g9*?#N%Bix zwfGQ1ddt!^{u*DZFY@vMVe51)(VN)zagh9_$d|h4v-dufSL3^Wz5OjbUP1gC{>k`Q zzVgN^bu&--b~LId`RORvPe^(2Ih)~gA_2Q{vk>sWX(~fazDi$C{o(|@K;S6ii&_N6 zx>Yn&wn?&cV3%KD&w8~hsaTNRRGaN%No7>Gf9MwM1My|&$B~z!+U$(&Z{h%?)t>UO zfbpi%iFOw@yRu&Xi)ycg`Va64vS8=?P&%Sb+Dycw0vPDXMAb}{%qrT<#w*h*wHUUq zG+XSkz5Kq}dxO!)WR4&-&)(e-tgqGXY^;gnJVmtNv-ezeZRBb#@v7P)giEXBBp3?w zNa-MH)<AWBV-Xd`wEL>%G3_{^-Gt1*%T#Ihe^GvWESKM+W`3=}8h#(DiS%v_JjR=! zb1^Ub&A<}gk+lpgVu%N6@d0#3DZ-trsM=n%i2;xa<MVBA&*xlXe0AhR91F;5!+v(f zvjuc{sHPs(r}KDP43_O5RH1L=KTCHF=fTaDS|Ei*eRYr&b}7f{tfJA>+uB?hskZ_e zuX6IBFj6Cr{K&WDkrz1)cIe^7)L;he^Pw%jphafW><v(yn%TSMH>zQZa|DQaC!D#s zQ=7dp#>mdzBfnbW3Nl!MNBK4&ALvxe564M~Z4Jmap+t+z9d|C@j|F+74_G#mq>NZ9 zKat8)v+WaJa(SKoRA3eTfu<ntO>87&27W=Py4|1a({8U-nW~Q>lU-Am17O0XLuA~_ zv&L;MV%;wow?4GU?B82{dlbrVQBQtlY`R2(R-hk&)@6AzZ24y32trm-K$5LwEh_Z2 z23~|4=OmK~=g>5puv*ZaUn7iSc*|K$1{rOqvZM{t=H5yBjkZ&!PBPk#n;tUSj-7g` z(e|y##YWpP(U8&O&*aWa&EpvMoMRYlr<WS>>Id;cVqY;Z2cO6j$*9eJjb0l)ZX|VY zXQ{lmofv5{+6F~>8f^n2-C6@D@u^T~*@e7R`0}W9MC9D*XBur)T4DgD&K}U6FYO{` zJBpyuc5$TV^lGDRbfoKantNvS8P-2il;`C6QcDcGPR>=%O|j6VmI0k1*u8upfhUt= zA2;^+r>#o;%xJr8x@NRpI`svk?fa2NXPPSa^2kEx8s5_UBqz^+0rS04*=F0rqY%8d z_DGc%p@drY05{eZIi<faOMLbb=`XJkVlkG|mNHu!spCpxShwhtp!}kz3&b;(RFUJe zCtok96dfYsl8tWpo2IC!;~Ajh0lw{^sjq}}s+T^Sk?$%P8<$2;n*Uj9e^%j|a;QuN zKS);~3$fjm3V=`aEXwb&IJaYNC8Y;d(nnPy`ZO(myn;-v&v$S=!gx~8?x(ztsCs_? z6R9W1tw*5YcBc5>*Yi4KrT8Z5>DU}0f9fQkgb5Dpg^LJV)qPrJx#;l%q+1s48M-x8 z_zM(>u5<IUPkBY$u=4tzsY^tjCW6MwCDYC~hINg8irl)eJ{Q}Z2_<1`G7R~ZN|s$N zx{&;kv9D&@2(%bw?G>wW=d15}AGbfHNXS0IV@PP%XZTrL#=b07Nx4WoWgk>XXIb-L z3*`kF=;&mmY=qwOf((1`xf=Ou?s#s5JYhpeCl{aY>n3rL(qenUOj(V2gJ#_WPM<BQ z{OmFQr62DohW!)<<Gf_;01PNMVV|HxVeBAw?G*7ddn=JEwFKhil|Nm3#MaBUh0I54 zWJU9%bgRCSZ}#n*V3b6!1{oVg#Pd0{TTc$@r<><c${CA(C%MgOg<1fZ_F;SnEMjKQ zD}|ZM$V2FCz4>4{C3DJnAdgVXT%89^WEWCx3}qC|!Jn~ya`d-Y8UTLfBhXnPOKMBt z3=-5xJuQK?#7H(?7kIDaDUm$MKyOu0;C{(v1>W1hK;sc?1dh}i^?(b!K(oXea-DG6 z>NCCn4x6^}2II&<+zyQ5ehxG*eb1}lhF}zDJ>^9mRY$N;hFzn0oenh};8fQqC?i@U z{qgzg?&m}gi$O}Ty$|B&rKny$h^8p&<<SUqlS7Lr$kspH*)FA!U-I@7f3fTmKc7$b z=2=b7K94k>p0A-yuH9(jF-|YDIUA+gBY1w4jv=P3pY0dEPtQ{b&@s{c)Gg5Y(b$44 z(SmAsnmFjWFe&_HnWCxhGQX%Yv9Le^0?qmOae~u098mBB5Ce_&F7V&@Ol2ISy&WNJ z03|NPsk@j$B#5-uR+0u$EAyTLA75YL8)FS=lS39Iz(o{uf(IkDg?Yp3lUL^Dg#4dy zk6NT3+U`(gYor$`nK$-%8+US=5pM@C1daBB=<i9R#bt2}TPMI(?E5Zmf7o`Hs$}q* z;1AKC{Lqc=K{PDLTci@%FN$K;ZAl_^e-2Y>v)ez~>a&-FTuK9D|5(cTq9z|J3VJ49 zF#=nzrZ?Y~cK>2Sr*=Om?M{eC9%=1c+gbUgK`jc1TKojs#4^=~9jqLX2J9eF;S=K0 zXmCFssUy7gNbb7o1m9gG2fi1s6Zn?4jnWnlIXmp%YTr-&qVR9_RfBN$odgAdZq)GT zlg;>Ba_t{ulpsa?18h;vab%@TuYbwQuo+lqm%1&E%oLy@6Q|4$j1{@kC@O&dRcxW* z7eB5VK9NVNyE|W$Upr$zc!8XF$SGl~G$pOvzrIr|w-Pk=XBzpUH1fMNh7E(WL^!83 zMRmm8E*Rhx0MYFElC?fGY-8tG3}6*UE_*Ryz=gdNrObXjkDo8NDbD3F<Tz5W!l=%D z7v3M$rIIN=KLjHA?z>L_$o^B`mx=vjG!(nWSXC)xHuj_IWQe0-vJH`JSY0KnEy?pI z@<=M(x>Z$}@lTHl3b#nGm4_3Mrggy3vzMoY*8gD~=xB)=7hcph(%y)=RHl5lm>g)0 zLllF?KJeu)((q*9^;c;hK1vsmD{NKac>o>U@6?_(BFYd^lq6k8Wwqu;`*CT5U?B5= z^V~Da+aq0DYQ$m)u)3u<S4-|>;HU3VvbETbQL-a;i9&C5Yq48Z<+jKXb~6`Xc;n2e zcWHwB0heRm5x9tacIxTC<+gW#r8LF9lN=PP(mHR-V4Ax^&xS``KI+2njjanU=51_n zY~2O+d8Z&2b{mTBg=;w;2|#W#`m5()#u?Xbb_2E#q|@Sq_%4P&Wgl}&5+TvavV0hO zy2A^}n;2LOFWU4EjLG8<NyPA?MJn))8`!G?11ZF%mqzu3HPQztZS^Ck(T5k;Jdw44 zNN<Ym=A9k=SDYOa_{tWa-0I@Afwx)h9Znp54YSgh%MbEScI;vpt%AA)$I8zH`I#&~ zQ{-oc3~o$ie!O&^_ngnuzWRODa~aBFE%7+83@V`)re1Z)NnnAvhjej8*8lp3eZnxf zC^0%2-p}1{8|?=KYKg|tW_;fQlB0QHZgfJ6(H1VxAV)t7Gr222jtm)X-MTkMT8~J= zFuW=hw$Q%kJ((AZ6~Tl+<`_Ii;b=3wue{FuDBY}tSm~f3d%g>0Q0{4zYtIy$GVu?J zX^7lAi?EVU)0thVZfZQ__9iY!fR2Ef>t2HBB})~DH`=J$?u#5d+Isx61=6TwAjsFz z=8zquts&c)<&m8Bw?<o$oxby|n+9O5asW+mGO+kOCR=5TSQKLqV(;GpVFo(+=b4cK z0PR3QG>KT}L>dsTY>x<|^fNC<z+OpWIGk>LGy?b4z`MBmm$%Y5KdT&k`Sn|AoL`^{ z7kv38Z_YY4T=+j=0@7ZAKshDXS8k2;13&C>-|_I?oljc)K14x!(w&+jXuiNT0mHf* z|1o@H!e?abc`51ti?9t=o((+d`^xmRX6B}1REU54NbfMyH(+;F9eG?u)7xQ8+EC>_ zmSFYO`Bb_&;M>F+foDe0P3POx=kY-zXb6M7CC{Bjp{xX9b2m(my>w(QOK#*ih(O;r z(*U{lQ~+YW`2<4fc4r-y6!Q^DUHwRb?<vU)O%+ki)uSY5wAncZ00EYMqYHdvDzDjx zz0$MHB?hHO<n&O(2P`!I#nepYD|!SEX6)?}*~Nr>pRs}}g@#vsK<7@T`NrOY==)Nq zSbw?m8mr3fWeUWj&05M%{D87k_k}Be4D#3dX-(x-(Aj;o;b{@QX4b<Q{^w*4E5Bs+ zmUld=vydoOD?K^c?@T67njeDlV9?0n3?GDNc+rf%75F0O4=+mc)Dpj!gijX52~4US zk5hx&Bw}Gvl!#&DyP$uO+66sQbG0XX3{&aqVPV8gxVk#Q-Ksv>qtyMB7kxlm*rT6h zukRAQ=V@k;&k_G^<bL<BQj6q1N^(Qnea<O-QsuBB3I$3P8hd(hX(kESAo)29g56w~ z$c}Jj<ON^!LuV^P7JN=7Y;Z9I!{<CgN_z0BDtkO-zf6j!*~$1Eaf^p8^CccY9yBO? z9W>D5w%~2Dx?wP=aP#XZ8{Q_uzVdGNJjR|QqLV!eeI`XlhC!X{dEtnNnB6>Cq-QE> zkcfpvl|&314{;wS6{|LVPsaGk9tR$F`x|`*knA8ZtiF5nk*A@6KIaUQP+LJH#Ba~Y zkNNGz{niwrYPUEpb9zxRMeC>c=qHbEs}Sx%o2apus<BW@h~F=^)fBf`SQD%0B`VP? zMTg(aC#z^F;YtCD`2BiX{Cqfqz@+?pCgpEc%0H!3CJEBbUlRr+3be#cl2v51&Mjn} zG{5tC;@8x1u7-Ev$|r}d3f+v(%VKuquCuTiy(btu8@LM&!WqAGj&R1i>>c<_lI2oN zyoi40ayR-tFZw2#0VIpO4T39UcWg1Vxi8QXrtCSi?<s*KsxL|Pr{QWQX^B4)7s4lC zWcswDsP+^sej{TtDt6N;`%l&4xAP8dc<xkENw#fNCTn)$ce3_cGw)$@8!|^|iDOmm z2jDw@tMNtJdAdq++48KbzkUTG9(04pe5o}0n_%o_|0$8975-;xo9)&X`K6*4o&?5S zr11iAzsJ8Mt55q23sIy^)hmiPv+f>`>3UYsCRsG&&x~`!Qf*;X4rKNQ3He*>k%!7* zsT|cGk;Xp$PzioW0tngAIst$59_RanRr`{G<B8*_AXQ9%K~eHG&R)K{?X*9<O88XO zIyRSD{8J{hz;x-Gz*H{wGa9k@z&?HbcDbhtGL6si&D-tYsPFZUV)pqEr)L+0ll6_^ zWZfbtw|)M#BJIPjV+r=ij1^Vi`Vb9kQ0{=Z8RSuJ30Y8Uu432L2SIb-X1@Lq{$YF^ zseu4vaHZ_d$Ily+9MpDEd-Nf0Tx-Wkf%(J?C=JA2wj#SHQL?eDT&?rXwbuAJT0llO zXl%qD+M*vp>!N%ymc5<#dTWv>*R}W^1Teu`q*SM`D69>9K>ec|@)n8tca7qBe?~!E zgKRH;127nk$Ftk$8@2`v76`haki|+18Jo7psX+u4VXNrCGGU&#Vx|^)s%s6{>Emu- zcb(9l+mjsq1~%$>H;An%PDx_BPoLhi-h3(aI=g^(j1B&7%j1o~q>fqGR+<&G@)nE5 z<-Bva$*ILJ4T!IfJ{d&dHmk3(8#jjM_?x?&swFNI&L}yB9onhvu$sFdm-8AePHGPt zH)*VZ12e7f(pX%ORJ4Yk&a^ed591H^McO-x_MX?dy>EwJ2mD;2q}rPtLv!Wq)hH|P zR+No64X*)U;(YQ*n!AWQsAd(@+EB8_AEbp^;$E4Pga{A;xNLXb#q){w+*l4A^|>>? zdfwRfC}y8+052|J1n8gt4y5f1S156L;&Ff=LmV=yN+DAH1t!+ahfp_baaX@uw0nt& zKZbr(!i|(~t`@3=MNnas?TT#neb(4=W6yqVuCP-qSmxMr=M7nvT)T^qHNswW1%<+p zGLg0TGt#JJ^d4wS4RlqJA2Hq!ThV*C2yUK8?(i!7#-9p&&i$}CUOCVeV9-oLXB<D7 z{>AnX-G^yuaI`W$gqL8lCWrA2a#0^xU^Y3eLb%iLQ0YbeuF^loOY)o?0Wel`fQsbP ziR;)eNLQVHvVyz)p=p&gE#1<3>r6#9a%ibsk#Yr@#Te*e>QwlvC?T$xSlW2ap|RKT z>g?x7eHYSvfSV1kB0}EVdH<fISgTUVU^LpBZP?ZS7M^du>n7tZFwwb!2+rr-Tq3ps z!|RiiN|1Y`j`ik^9M_Llgp6gFc2|`K<t|~8m2jL7-fn~Wfi3e{KBe9uTLwP$4O>Fy z%_Zksk*#7a!urH`2!c3rno7<Co~;PF-LP_Jdu+ymQxRyiM~=+o7hgZIS?#ArTlKOw zAYorplFMw#D|P;;)=v@Sr3sl3svr6xXYGnSL9QTAF2xc)^t*yKo#|9!g2Jp?5g|C& zvNY?-bN$U-Pjx;N_;b%>u({56s&gVC`;Oa0JJ{pK2N<p7Q0IPmRBz+)w5)D+!|}pX z`iyJK{n3%e&BZy9!O+hw?2_?W4BOtO51)cY1TzoBN>d7>t?45NX(M`bmvbDfp@$dg z^Y&Tt4|)n;(^Z>u3m`PwbFH3>`W6OCB1f8S!9^uqyOj(r>Xlo9eHFI1l}+3*o(%k* zrLWeyHZR<;Ys~OL+pj-wbTaR6!ha$-pL({rcXYC9OASGFAYiAheW1ix(b0e@TY#zL z>wEIFIj;P;#s1SrB<!@}N{)lhAjT+Il(yL3A|9St$We+CiQ+lXdzQ<y)|@;nl7vSK zS7P7(+VtPyeT>tv%-X=UfVX0G5URWv@y>b@pVu&i>*Si-Kl0$jO|#M{ZSGZSPO%vr z@~Khv%K%QViPrrNTiBH~a`rh?`6hBXQd!}<Fn@iSs-`}qIA)jbp+s8Z9H&YFAB3Bn z_CJo6749<aKBt}e=&mEio}6iSINP$q+O%7oby?xT+MH|2t~ll_eBRSrn{$!G3$ehy zZ%;s*bB=`XmoWBEClfbbn_DAsgZWYQ8Jlyp#B5Sn;T}Hek~5G`;Nx&%SCT{X?o;^K zoyXHkitzfe3Lmri%b>Ya%=4a;)euqIasbqFuE@_Al5>SlLLEjN#BbUUU#tlGyiugX z;e$w&%x0zc;k0BJNyE1;aua+DQg11VsHf1Xp#kwe#Cn*bTTe_Rw_NSfUWdyqzPRU8 zudKDo?S@IRVQ7QuvH!&x258Z4Z@ok*^f|vp+Mv>Fas?)ZNTa!BR?0(qz?}F%5*Yh) zS++{OX;Ew1Pi3Zsh-+(`P;4edSIyM;#e)UDI)puW^$oAonu%j5DQqSMsAGm#Ew447 zE#XzWWe%yCG|$SU;e^MupE70k*ATEbzN;on*ixCSyCi+Br3%s#0Xk<qt6HkXXFwU# z>xGWHAz0o#WdWfj(2UZUPM6k!DlYyp-_923!N{HQ;lcAQ^#?CqM)P>0mJq=ZUZ4aj zV7Kme$F6i63Sc8Y<*ULQjFfLXj%MlRy%Mf9|0c~3n;&viEY+L&9x8i*BXM#G>}?K> zfXnAJwG7ExhMPrp7AJQwhfYXt`|gc2&r<JviXPdSG^qYa){^gc^(mH@@+DkISVZmS zE*MIw-+t>wVRnn&z86lp;S~@@V&P4@!|xWBasvP#U*w~3zL@Rh5$}e}_HpJ!*uc%( zLs%i3OW+y9Uh95Np~2)u{ubY<<Gwepxh4<Fs0Z+#B5fCuqR|(0YF)y9y`HXOfz%5o zue@~$UI?cIFdb0+7lpA*9Q)T73ckxx;dyd&j49yF2fJ{bnh9nBE0c4Cv>f~T1Suv$ z|E7E){WHf7i<AcusX>)q#aD)QOE)Pu+5dsx3H7Trw}RM^zaXs)HB>zo_OEN_j$6iB zCJD=lIjYckKrsk4%xjMxzMvvxjp|l|+{~(a&8WH?vN(=X!hQ&ChAh4v`5$V()2n^z z9nQ~G*0`!5WT7;j5-{HiSvQrl0N+%BNyiLMWHq~f5_jumuliTv7eM()R2P+`@z)PM z6ibVAxWJ=_;t@QX9(M8Q;gQ4(J<Rdwp<D<nVNIKJ2EbI;&Po`%dZL77jg~O<R7?n* z*S#?GRBXqcr4n}i&Dfi+0QESez<F8JHn-C?GD2j<$l6)MPsjXpCxoRYgonr=>y@=; zxqUgbkUfP<f&@Iyj5PniW(NX2mKuUqL4hLBawkC0DhGN&tF~~TS=(!$^EiEC?@?Qb zSIgR72h_0H!{#W?;wOrw7<$(KN7<EtM^QBGEF=&S+=!rfVU(!gfuMp!i6)TfE+mQw zf+r}*hvI>{fq0;SY>;tX!~?|x#q+}(4-l0jAdsMfc%$52%osrw<@|*IeXF~7W_CB| z&%=|g?yl~tuC6|&yQ=$18OaOrqek-m4)vVJT?GG~TnysqXWRsg^=t#+Oni$(j>O44 z{1szo+1cyR9j$ejIeRgmn|U&JEBtQm$hKEq)ieXS>Oa%t2jjj09^>XF??+(1P)9D- zT;7E>A9ITL^o1J|p;%k{KfRk`H10C(aQd5UD?hIO+C=+mYu)}!)b7M&^rf;`S0101 zl*R6X&aEq7T{`3imL9gQ!1P`GGx#jy7};Epkpt3<k%{l4c^%o7Sp1&`3KUASZH0mP z!RnzPggvS+!4hU6oH>xeHxz@IUzmza!&Igs3%)P3-@`#zD6o?2f#9rWMGF?}$Av>t zU@4YM<(o>Xmloqn(&$d~pdz@?6vam6&{ns)j`|b*oYB@FA*-(Q=i%*tRBgtMxplCx z#d-dAe6}wPl*W(fi{0(1R2+=M%+))dSqP7hv1Re@2h`&si$c6yv7#)nv5XctH-n*~ z*yv2In#)mmNq(?=eQ5v`*A-jwFOfZj*V^%efo{G0Ot$f3JBujm(wKxW%rPy5_uKJP z9Fu(Ij}^(f9p7gtHyrQYB$oB`VOXi2m30z+!VpI_R(P22=WanRT1o7zZ=w4!_YfE4 zp!+n5{1GeuCNmcKCc8ME*{Ot{L_9mjt>aicg{*+JC1e$4mwz(90<rd6U&wrkJ&s`X zMMQ*ggSTDKN;aC{sfClBO2onx;F3dOGPDW?1$_X(l#pkoXiJ>QSJi?pHiiGd4I=mq zIRh=YnoglSU?^Uj6KNgBMni338?c_C55Hi_&&}c*qhoY^f~mUbnb?+@?=Wk(6G7+X zmP_3#*B%1j1vel%q0jGOWZ7FJf1T~b#|OWde=y^JKKu(>j8zdPv}(3RSqB^p?XmxR z87f957e(HXJDAXhwe}^z#%$TNXJz;98Ie(Pj*KYWQ^>3+$F4=N)cS*8>6m>(9lpa# z<V@Y#;dpTdd_!e7s1)WanEQU-0?P2%vY(cGxa;X>(s_U(qXsisHeyTRx;j|UHrgw( zKyW_A(8c+x!wP2*>V*~3Slq9T>Eqs~n`fvcqm?xtQJrh-N6QjZpmH^Dz4#E=q^V`0 zy<e$VRFwxg$Dh=fwzCf3;lQ@da-gNI|G0@X^m4QOTN0^_72@QzRUtcBD4sb9+edi_ z<J!^Yp99VXd@p)rC|J4>!8S#WFK(rS;rvCn=Abw>#vdrrxecvFHeR?8Bb3$Ub<i)i zj(r<H4o?E?xs@{Xj>k-kMRZVp3OeEE{jTU4_C(mty5H{XpVp2AJ94;(j?0*vk2(-y z>bJQCZbvioNATUfysZcajK=~Yc+V*)28)zyP$c}QhGdQl1y<lr{>1ndngUbiCDeQr z!F6A4%@pLvDjZ!QXV|3t+qo~dWmAicQIEsOVOOC!SFWuIxp?&$v($Wz{DVF5H3$#) zgl8Z;%@dx6@IX%(=T|j!Ytr=VD-j;)h8@0oZ1}A3#P|2aS9;<LJn<7e@iYN6<xKL# zw*bsfdi(irxMnV-JluNXiG}Hulq<fZ{d0cbe1Rz|gb~1+dpT4c6;bmD?k%h9ytHa> zVK7?P1gSe-DqIg9s_#UA%iQR#03hniW?*-UuJ7No<>+Ft3cy$?Z2nQ4Og=_<Yw#wx z_f@S2H@GK~BP?RX&!i?+O}dEX&{<u>_*{fCP&2}K21BmwBwPqMSI6TijB0*dF@7-M zLJi|BjB2(B;;SkZxxqTf?>wZkeV95;f+dxNXDE0Q;Ti=`BfLVvGnBdZd>cXg(B<yH z{1uMI<ibT(;Xnadjo^WWIgDl{0Ou0UQE(^1tOVi<39}M_`w(U&01qb2N&p^7m^BC< zSXl}346+6YvOWlwR05u+;Yom58OBcoT%+L`fLR%QPhnggzaC&1_a(<dg`xNZve6g| z4a8<kC~RFkoKesSn3dr#=9&sbj&vT%%*dG3c~xvO+Y5X4SH0euHonn25RY;1mXmQN z0(^`co439ge6;3>jA#vRNMI_|qWV-E070Z#Cm>rWmeu%;&TI^=3R!uKwMuFbMFA4= zXhb1M88Uc`3Q~*=wo^e$l0oJNGKI<Du_{P;GI*Q{QltzXuY!~+gY8w2Qf07%1Vt~h zPF67WBCE54sTWyY6pT}Zg7YR}EUc{_46admg2OdvpR$g1uZi@9$x5WGG(M9lyaf_J z?s4(&+!c5@kB7dnYssQ8Tlaq;aV8A&{f&12V^#7sNS1Lx&S2$0;kA)0)OxK#{Zy)- z3F>E(`kA7BrmLSB>Swn4sZl?5>SqOh>_g_r+AtXX9qkDsutKm$FfMVff?Hpc&Q*FM z9jAkr-_JuEoVR3M4G7<yC!dL5%tVclSV+){(;@_ClE<h}A5hfkN2?gQK6X}%#wrwY z(;KN6Tjl?8qLfzXrvIQ~crh)?U#vpi-1J2%hHs7_{Y4e(<fiKw-n)$S2`at4n|_aq zsZ;6Ks!*;@N5yJX!i6fK4H8i4izGC43et2nd#Lo;3Oi4Qa$GV8shAneVNK3f#T>v$ zCB{GFQt|03Jwv7c#z=n3S5HHHV*MrdLDZn0?@OD)PB$2(!8F!OxSOOb|2Mpo#?}5= zbJ-BV=w&KEsRyHXsQ^VBj6S0RlxHxyNChZ7yr8E7lvFU<3>_Y&Q7pJ8Km|k;(LO4` znqvA;0jXW|5fxxn;C3FHOaQwXtO<EP>OJ)}v<zsN;A+rOp_1Cb$oKUF=Sdt)OCL(! zB#N?kX4J}T!->i1iv8<JMccnFuAa#eEfkYBDt`)}L4UtxEH>t}z%l(dZ_h;A$*s@W ztH&M?r9;yk3ns5GtY>Dcn&K;ty~d(&abIG6f%SKB{Ek2*FC3e*x)L0qYn;~}Z3Uy7 zW_D}TtPF3c!sl&o3;5q+)eeuhHAU9CTVWq6WkL?aQ6|2$aMLhJ#hb6R|5^`#E9A`8 z!6>&RH8M%z-qe*K^8N8b1c$*Wy8H#bZV$)jaS}siSqHnU)}6~1AfA>Ac;z)-NhH|S zpkYy6Rt?AB*zPKhy&x4Fl&GI#5;jIVs_udj9j@`(YaegpHl$eQZWtr|Jra3woyi_> z)JHg466tk;_3EBV5a21p?su`;hSdm-GhyJu2?wW!CBf(Zcgu5P=($Cgw3|6}NljEq z<+FNQQ7NguM%S+-et~I)@Q`oo52rM5JrM6~tQPi~;uFZ)2-(3@INmeBeK|Dus5eb> zFWVo@ZNEtaoo({U5TwuHO3aow+K<c<MXX+q<+<36z<vh;pCY4i(SBcttT~HWVf!l} zqJ8i_2r@50P2+<D&Pe2fa#NZpmZKb%yN53G9+t`ZQ?_mEUxW%3v!N!lp@7d(kN7P$ z{!rqhLugMVb@3VT3l%;`LE?WuQ}J9x{A}W*Q8S#L=tTTZj7^pSGB%T=BJtnS_-%=w zLwpi(4ocv6Qsr}$B>p&!zZ>5N@8=R9-7mxW0a&X1_6nb)Ch_}f{FTJ7BtFfHWOrZT z=PG;-ro=x+<If~MS1NMnf>V_!pMwkJ!{L<pf4rmW`=H=MptHps=b{9Dj>6~gO8kWy z|0cmlU1y7>O1lJpw!-IdOZ*2lJ|EnB9~+z*v&B4RE0TqO=`GwWdGizWt*U}UvCu(R znz#*I#tW|B4+?hA8!-DBgNXO(PYRa;)?ek<BM81YRr`zn9vh0ivxa(wPPBg>yY-UD zfp|_^#uNKJFoZouY%}mRvfVApKjs=yMkOrvih>6=VR#F&>xCbp&P^;&8OS997gh`; z7N`sqGKGsO1`<nD1_m>Q3n~T@i&O;0vrU=E^%TRCRJf#)foVE0iGdk9FpYs49hkwu z3Iv?_U|El^VjqWZdNjb+7o71BoqZ~tcwlcB&-(T`dM|{nJ@j0_u*%yK<Z7jO);xZk zR6%am-#9p4aSTKkEVg+c&n9h8sf9*+%GjJWl^|Q1zYzoToo{nszCH^^b<NAa3&-bj zK(yN~bcf5Q5P|0X{8cn>X?!}<#nAWOrfA_8UYohM^Q!u`lgg}D*H$8lLtPHaL~$JL zB4>FC!*?Op3%Aa-T3faA@6k=*{%rN?#5R|l`9GJxhiqlm^HNedUa%}!M5<WJS70$( zGMr0vNbTI=!oYrHAP)@S{>Lra5hU@w4SBuvEWg-lBiHxG*B|dm#xZHZ{wz?kf7Aro ze|lB;&%%DOD3!=3vL+)jh!%g3vjB)@9rB)$$UBjFUqW6UZ^A11vMZcdmU43_aUXi9 zcENP$1<t~;$~_8Q10S5Q#JGx67#k{Bj7zc$vREQKMDt;nTDxExGsH)?K}2UH&Ul5a z!l7}2`qH)X5qY>o5}Tjrz|Pg!*Ci6T+($yTPPjRdFkB_%=!6|FvwRjs^+t~NI^q6A z4yra1y6J?o6AAprM?#@aC`lw#s)UeEh$LuCPzil>!jMG5B$Y5wCmfR~YKlr2ED5pE z!@=lEMCss21nb;j1%fL~5PLwi3lX507eXauerf&KYtV<<+UbmscZo3+>rohrPf(wQ zJ@8rBH-zh%zGaGh5{AYu<d@;lQ2rSqD{Cp^t=1pmCz5T>;X}1cG*bt-92^Mpnzu%J zUq)`rw3fr+9XHQXA91u^iaS24enkVqk+?njPKcJ>^jRpl;U&@1&fAnD-8nBq)2dhD z;QQUtv}fN+<XG#Rd0;4>^&H}G;QQmM7Wly}1tstwvo=?ri7}w0jy}lE`-rc7pNsIy znElWMxEE9{%EhETfi@R3-^Q+5m$7XQ5bsC(>KG7W1wXtE&!%m#8Vtp<&Hy18OE<?B zT~SpXt|)r%7~~Yw(!i4KE010Ro9gCxb;_O<QoD6neMe4!>kT~f;e(B}L#EZ(wqD2h zeb13^Wnude7pyen2_Nq32qO#5TXXDdm%wFl(PFR^@3Jh0t+tjRG9U8KuwOs3X+}M- zzuNm<3#{l@I(sl=qPMvlKI$&gW$fyI@falDr7w!WMD*PEEwKHLJLrGS7PC>@r-O|h z%PzKX*2Tk1ZiQZn;@q<I{*r1}<3A-@<l<m?uGFpJbfp0er-!JBMyI*0hyNoBL$Qhw z_9q60;*W@4iXuYip;MyZq4=XpCmG{v8SO!^mQzk`GS<NgC#&+DjPlkTqx_exaQ?0; z$oMamOrALSTL#2$8(~oU^1m~&A$#)719@bF-LK~%ek}j%57q0=;DiSe6N(+qy^iR3 z!tq;i)cBiy@2gyol&^&mUnwqnjP%w=Y_~{!1WxN+Hr`9?M?3{_@)|()KuN(hfa(oK zn#6<A?e^eBn0>4f*pS~`m31mO!E|5n{)^xiw{lAFEjXFHwg<0HTSTBfq#Exs9>qp* z!P9T{^C%mOg+t*t7qBnD!*}u(0dIr%h2;vcj3<9L+Y#VtMwh-K6}S=gF0)4S`Bp4i zFhbrLj+aXfrwhVuhtyxk`B>HZVTrq|dDvQmn_j8d<uGkMs>~Xb;hZC^MOg@|Z4ciq zY=o@EkuxYFrx_5KaDhs|5eS~Wh@IRm2iwr2biJ%o;CgTzW4N;6a-Fs%G=0p+yWkFA zYoNYzeBn2nx<*O0{6Ux)ZFgd<Bp;Au_6z=Y-;e=Wu6_YSOzg<HLFt_3hdCS@AlKl8 zdznkO_g#c_%^!c+)7~R;BHbakND!N1tkD=rjI<|w^DZrYIQ7tl1ILXy_MKQ^;K`$$ zs;mn^k`4Ur^U}c5E8+#EWa>OH<*x(V8LmMr1&ur(R1%GR9X92pk#Ua1`-hRB8yVxq z4HKYm6Mzne!q%19_UfI6sYodfAQm6MBc*fYdZ(fE`jrNM_a#>Gwu9?0Otkm&62<mj z9gZD=yP&1L+m>0U=gB?Hu#>};n(N??@c07OaJ&5=euqs$+c<}K^r6f;4(AT%gRHX? zO*pB@`iz$+@>Z~$TVelEnYjOq9Qymn+9Of$ZTJk4lhm39Z)M7|=C0g~$Q7aZDBP(y zCKojy(=Bqgy>q%W5WJn?wTLq{M}-dw$&v4v9DAjTXo6ezPV7l9N!WH_wycEk&`4vt z)z9&acd=33U|W(npD^}k=*#i(%`^Dk2;NE&`{7t)96PJ~(t{KKL|Ht5#!Uh^2VX8F zkI2Tw<bv}xmP5gbh4>4cVDvv2>;-QPmr1cP7!7{5A4GNeiTQAiTx)}`P+WJrIJ^D> z8Ien4BXHm<#YN5vPUN|z6m`8R>N&*VNKuM9FQuq5DQX_=4Fv@bo#NqMT@&k>iQ71E zWdQCjq8&)pjst?#7o$|%6cVgn3_$4P^=4TD)_FYq*dH+x{)i&*NGbM3SEI6gx3710 z{bvdJUY4x|)tO~Yj443{qqwD03E^cC)*Zrm96FLLgv)Vl?i{l}!9CUgB14Q<z2j~k zsXolC)f8Wz?NlNW{h4_DP$`P_&jf#RRWWgQ1<LQnHOAS-J_Y=r%yg7>pen2UNY)j% zpa&mb;53CK)w+t4#JgZwZd&r#y=jquiO)UUZ%|zWVJ?ApmY|hq$p$*E?fE#{Sq6+@ zlR!&EeZ3ZSlvZ!(Gd~L3g&Z_Q5K&;qdS_w`t=fr}xq|3B(K3Z#5>%x4V01Xeg<*#J z)0Z4972z##E<l3fTl051QZepAY(k#nleF||lqYtneW^3CF;Y}h7NsgPd5M?^CicIK zimCSw7DFXjV5C9{yNTONRGS;H_AoUar%6TML#engOmX`>b|bK_Oe7eg?`Rgh=W!(C z8{*S(Sk5HQ35hTAhyY*JZt?=>W}q7VV!P}CU6dq3k?QpU0yvrrsb!SkC+i&0t)IpF z>QvJNtA{~EGBX+drpoYTJcl=d8-44%lp`@T;cqYiy}|_r&I$p|eD|}{0{ESmhVy?7 zKC;01N*HC}p#@G|B7hP;NCX~S;Jls)Ji5Sn1_8VPQrcmI^9aCjy!lB^8~{j{H=B<w zi42?bIbN)!X$8ig&m83;mq@<GmyGsDZuCjql(5X{30ScQ(RD?@v_UR*Jp65Nlxl;~ zV?AwvJJj=kq6D}hqypf7b0Pr#HzWcO0FBiZ8U#?A2!J+koJLAON_!0fPyL>M4>rhH z(b(V=HAH^}Mcyau!KqBb!C1M#xdu46u;N!L$0kPfLxeki8<jpC=HJ*Nr@Cr=y9$yB z4=JvOy@tJaJ)R%Q-^0G^oI`P`&_hd{&Ti<DB~Cjx^ym_&wHtbHiPIDzuCO}nk)!qA z@zc+Cwn_!|nns*In+v2ZY(!W{d@Z7aft*R6=1X4UaEA;fqITPzmjG+7&?TQ>9Yt@^ zAEnFo!{#^oxAaF{!3ThZ4%MjA)0n0Cf1#tGo{RA|&L*b`q++5TQc+t`kcoOkMXmQl zJ*uLXd7>UvQSURV1B-XwAQ%wvd4RNu(rP^S-Gmx%17-;Ct&j6#JmJB>=*Qv)0|P?X zOqlgF>`hjLi<qp$!21<;pw@a?o4nY`L!#H89`?XHLe@`aS~u4L7Q>*%iu1~uqyzJi zHD*%CnmG_DCA>nk|8&@&aOWX7aREjhxoCw;wTCg(gmL4+V9Yr1aJNdP!QX?!VeE?O z{QUdhG%Vq)b!Z~1q|zP+_sSxCGUE0ztF{EUx((mHtvG(}9&3m78SK5cZ^7N}WhiHG z5j>u(k_koDGP;6%QPkn<4qJ=q0%v_)#EX1a!N|9IRY|OSWidSQ>xzRVJ4)zkk_C2( z;5ty8KW5sfo?#T#se~7!z<L)5OJhype}rKrSeIW?Ir@4SS%qVndBNp;s%0`aLr}>I z{NR?B`cp*DQ2dD{({MI30WZ8|hH<G<D3qT)sxv<2a75tC19ununy0xYgVha7DUL~c zF#0q|7U$nErDwdjbw<y4q)SHdyd_1rVY(}@ls=OmtT;3Cz>{+mqN@tJXTpXpvj3L7 zEk^&<IitK;{V{u6+yE$Y7(RQ40)W9oCCA8-m*5k7>>|R6`HJ5PUUNFS`Bc|o2RX^= z*o^lvR1yL&J!{N_Amqn2RdHT7TBo)ti=C9$E8c1c#MdJ;)-o8)!Q2_F3w~tPgaeE5 zh*)eg6$sg<bGbpY37q0kb2uqS8*%2QWsmXP`JD(=1=bXN4@6po<8$)JxqaqiGoj9< zc@=V#@)5`t#@5A17y^Y$t!pOWZsE$X^$GN93e27s+GW;X^@q6QUASsf8w{C>JbDEt zjkV#bUjt?M23#>!7RtDE9L2<LsHCS27ziaX@ZJ=DB9$PiA{(l7kkmu?4n|9wkY~JT z6MY+u;Us5=)a@+<unh|9OVBHs?yOTyP|S7OG#oSGbB<EQWK(~NYUc~$-H*fAJU#r` zZ#`p?zcWLP%ct0<2!j=uQCuIQh_d+TKw18uuz$r28^ecatTEQXooI9jAI3Q-<8*Hs z)L$uQ<CF3|GaEyCnf1S0zA-LK;73PQIzPx7BEueW5SyiBl8p4c&t^yH#FB)P_rdi^ zrdFzX(X`daf*mxiY(U1~c4*}|k4kZcuwSGmPzd#(a@~RNC+7`GQ|pCT*5iM`%mNi$ zg9?UXSyc$KI{2cQk`b(~=L}rywfPCf!~ldiY7Hs<(X=7jZ^9!`pz^x`9ZblhO20j# zRSCw+(4cBO>Im;5s_0yH@?i8@>ZC`ps8xI{CEl;r#>QR!0h6FR&?l_1P7y`Kg}KzH zP0**G?aC*VJ~{NxO6c$HASyi<z4NWx@Hx73E{IU+Kh$ogPiIQat>0D6YqP2VLCZ3n z?IPI57$`$l)&q#OyF<@#ebUW<`48Zg8mua4hi_*!FfdLH4E+Gfz|b3j85joiPYev< z+Qq2(US}gFN4YAjs$lhAO0D^p;G10zW;y%Uw*$DpDX5XBptZ1l*CR|R{p;fWYtV!% zabY*^6e_jGpiA8_qlAtD{ih*uHg52G8;Nil#O`^2d|daRfp(k?cmi+jf<6}Ea1{Fy zF956P+E2I8I~Z>y58=~xrPi^d5N$ukZ6az6_dvq&(mYIHSrHZ+?}M+|njGxqmN6(L zx9&x-YG>2Y#h3}opPnye)@B`#XoB_$FX`f55Mj4I0SWKfLO81}VD+p4bh`d&tass4 zHa*n1{|wv}o4tb{{ctv$h7lDD^YRJy^07@bxH5q%b;e|e=SqXsy}71<80sq%IvNvo zLyr;V<559zVdGHz2<(Ak1dZNJErbW%3~co9rW1~y*vSIzG0;YieUO*k5`GvE17^@* zbgHEGpMYaRj<2Qh612mZNmv8Mix0E0=$XH`1y)*}_<9YSo1MoF>;NER*EyV+DbYb3 z+u~gg<IXa+M>kHvB+dBqBt8V|%PxIeFb&QmWs~f?nI0c`l++)L!s0a40n72_yh#@Z zsOz_s(y|nfJeN$e4}0t{tk`%~jL`+FKE8ca6QIB3!wZA6J`V-H4$jJfYbuugTaeO0 zTi}F)^O}^#FK2N-Y@xxG+_V`hILo3-FKmmxi)G%U9!Oajn9u`T|MLRTnsQtYvnLQ7 ze**-A?d4JnTP!IAKT8m-0l}kPf{+0WXjvT+l;(&Pd^CY7^@mX7nUSH^SW&}Mnd3PD za;5-9`S!vygw#p<(c8rlr1~|PIxx0rAHQ%_ab88hnSeE!?t6p(m*{(sZ%XvN`vFQP z9uL5D;;Ui8s{0;kVs_&D$xnd<&Sa$+E)n{%6j>tlGKCa*3Moq}1oN?T64>Dq?Z6jB z{hT{F1VbCbkFvGldCp6-pn$)>APR^isuQ-7;ciK_J(PIl$jX}aYv&B-B(A%w3Vxr2 zs^Q*lgv{8e2OoRD0~jK&;U(lTjuBapBAZO;u`!kSxZ_KZ@te`hab|cc?wNtHMJ#Is zaXQrTJ?g6UJE}G`1-Su?3w#u^TK5N3RnT%brAaZAA*{sE6OhRAOd{)*(z$&+vh10| zdEDua?g0f2Mr%0ERuyz6|DMU@*-6+j$3EZ7uQh^2Gt5Vv=WuL`t&Sy)PKjJe{g5ji zFv~EalSHh8C}U%$6*ayyuW+7x#~z`q;3H+IIwaNuFVTGMyn`WQNsquO$kRwB6X>1u z81h2fopx-F+5P$!oqthjxSvLAhO9fBmPoR9!RtuG4<%z?cQ!Et+e3GL=Qc!`^_|xr zkc<D7sH_$5Cu79S;rK~j|8uc1xey6h5_8WMt_OXHT`T9|$c;8W2dg67b`5jqF&J3@ z;To%3ImRg4CfpTFys-86P^^!tS6S63p@d*`BvIl89UKhu#rMyIvK18k0=OGsnRDqN zk5Q9s!9jW&3*qt)>Ngu^I*7Guv8u8w;5Qqx#0V8hm}Lq^v6$Z{vPfuDy!9-+RDrSV zJVrl$I^<PV(03x57r8p2n8-oM(}Rg~nI|TZ7zlY&a7L`flpUQj@<VvNVxvslM^+-t z4dEl5X<$&T=Wt#k%&PN}2~x9L+whe9(uZV~u$FhyS9ZhI0J3h1TrBrN7qkO2;u(M; zUq%b%y%$$AM!d^}n>qY0gwg#%Y?)zK8;)o8@vk((L#BI!6L7{y0ga@9RJoxcA{f;9 z*<oU@m<KnM+7M0;5ex?w*}dCBSn+~~8?oFavOk9@#WirP?uAN{?_S_rcG1z@#plxQ zhL~`?xM@2~&Ix--4EzFfRFK8Kz4O7p_Rc>=+KSIj53^vwUJ<aHNqO6AGdkXIQ-=L3 zkT3`zl_*E%M!uvLL^<71p>WlYTZX}`VpfyxX9lBRqNW&}t5@T9UQZN0tO#52sL02G zgqiNoiCW-A2wcK?7*e2_sEsFOU??`3b7siAbN?+j4;RD6N7|t_6315?=>w07Cj&c% zIgW_)w;-DHBS&verDfJGY^nsSPm_s2+RVO}>x-&_KVlp{+JKL1aj&&K^ggBExTV}4 zNLY1^Se#v9sFfY7W*>yg^$S(aWj_l<dX>iJvg0Lvzv05U1Iex5Yt;1bMDFJB^<k0t z+AW`jl317ecP5E%zv)w0u$g|9+^6!6@bxL@ZS3x-eMISwrLmI_yC1zk_ewW6`={!a z-ye<=V0-6wOx($YQk>!VgH97g%V1EzoeIt&Sc&QVOxO<BH^sWE`<ao0n5O4lssZL* zC)VOLOv{*W`O3~7jBENfn2q*nlb}#&o9d4ctG{lrzQp?*@vH$iQrV^7Ijf{1_@=x& z7qSROp8z_}yJ2vg0|}K{FJ#Ei%xwIWS)Y`~UZXN3&P8znLI4+zZB&^>50swZsM)BB z{V1M%P%ACDNeHc4r!*xzWDyD^p|V)Ng}Kl{cHL5IGC!s4KL4fW%<TjiizbOnd`2@e z*7|@yA@f*<)d!z~lPe@^pWITbqJ0S0WW*-RFz!{X>d&EC!RpSUt_6dzgu-b3DryY1 z{2ceI+siCb%NKFYuDt-Tb3YQ<&hTVrX{E7>_9ZwY7!HljWp>f%N163Om30KOjwkFT z46+Wd#^zxB@%8u!`V+QM(siD}dI09*rNNRd&Sb#4-FcZ89YAqqFJ}Ehh-M~x0X{!- z!m+v77|gJ5{t1J^S=BYv8aRnp@xD2_`382^ADPf6Sa!b`hbGW|EPq|Fsu)Q8{>P=i zd&|EMTYDXOhbD2p1t)U0v~HEsm^8mL9*mX6uFKI}z`B&eHjLOm`Wbl!>Z=)P1^W43 z`qlhq@zK8(G46f^RDeCxUd>D~aXOcy>`xE|Z*536erJ<2LxFYn$R}k1hRP?jL)-GP z2voTn4!hZD?5CI;j$_tlS*?9&mrL>DP8|-w>TJ9H!+n44Rg);1cFlM+tu8cd9g$ZC zLl4{njH}>^V5^cH%bJXjz%qP_<T4E9lhHa1xRb1{nm`Gl#Zr^o@4-4r^$E;E-G3lw zU6y@MgpCHLYX_Nwmy;~Mi#57T!yf?C?&>K6CM5fn=C=z*kAQl3$~fkEtn(EeCx9gT z_g+miaR0A)uQp*L!pkkHeubry$NUEGWuw{$kiOVNRFi7WcxW*e!hIkbIdA3SH(u}z z(yq%W>W5L{Isp6|wrs9^_a4b<05>1uo>3NsiBw8EgQeYq(&S{xg2KXAG`o7+T{nlT z?#juCoWKhdVQi&cT=8)fto}m!=%P^4`J%axWm!0WWo~_|NqF7@_pr=|85_1`&f;kP zHr~;#UV1k^mp9w|8bEaYw~78B=k(j{Y9!Q;<M%9P_KL%$FVYMt8w*uTY*)shFX%Ef zH)!^_UgqN%Uj`KH)8Ytf7x6j*k2l=s@`iiNZP1cZ1aXZd_Iz3Nns)pO#*I_3z~C`B zBr`T@gq(}pobAi1m5}T2^$EE<(yj{>^((gUSYRFuula`OTK<$mR`^q#S7_gVL_*#V zu~Z}PT3kkKH$uUXcjPE_+tgjS&z`dG$VVmdq;ode+x$!;EKfILk$*dSA<dCG+20|~ z8G)eeM;Li8^~w7KkG$Uy*I6ZRaXwBb@78E@=MHx4%U~+ycK3vSiUAW;vemIPKEXnK zAe+wG?a|UGUWVhvG@<;~9Z|tZF=rcm<(#xx1j_xI0}!wGYZ?=UJHoqgbFlf&>DUwf zOzjBcBgsZeENd<P7RN5j#<xxh*5X;q5iZY%*3|aoNQiN~r`W?#w+_c5wZ@))kT`S} zVbHC<4=i904|#wt{MfKMx3VU%lp<_T-3@^MstTg`?o?l6|6!thlwJWyxa9rDhRfMK zTrOj()}AXe^6}k-I#52ozM<9+q4>k{28VGzz3)Kfnz{rx2+E=?nztU@U^d3e8(aM2 z3lOVaP}j@qSM1(-v(Sd4IVkZ45-4x9F)vrxXkUK_T>fK+6ph`rwq@qz;N%)WlQUbc zg(r|5$>xf5017OUrkP&{O2rr@v+c!?n4y~QZNs;@4hn`Bc8jf%*}AL{u5G}Olvjd> zR@;Ql{lFYkbKsqg%P3w#jSG0yN${SdNdreTMX?K76@fr|1aQd!`egtM(0+NiK4L&l z5h4a6qG~7JS;WI3!SUaq1f;Y<<gn@*5`t-Mzr4Z0XbZ}Q`%JY&QI!MLJlqq9<$tga zO^OSPgVCR)g!7IliQSYNtSbsGBYP#*CK~d|2Q91H-ac1t(Q)$%2>4POiG1j?Ijntq zu9#0ku~jzq5-!i{R2KLf*UK&D_izc<XDyEUdw<LhLpg+e5dxRp>W7&1Vb56ck(oVX z{f-1vJZUHm>>%6x*sA&^P}v=OAl20fU~8vx7hZGbj&9|yaIiWIEA+~WKnCr=XeIqw zFRRtzVGNt4`D<Y~ge<z+<xjdaP<s6|83(8cc#c7>Y4EN?raIy(vVNsjT-+L$C}cg1 zi<F(e)Os>lCrvf_b~aP+qeLTt=g+;3<O$<cWk9RoN4W3;GR$U<fuq>4ZHVK9WPmz7 zk3;hDxg>Wi$&D9sg&Am1>dau)P8v2+faiq{z{Vi%;|)gpL;j(d%IzFQ-{+0??_56U z&K=A8W)({7rk3JZCl{fxLKenSLk8$W0Au*3yExh+Wu!@|AP@<fogFND#@&s1KOW7S z!YuLD1#h;%R0-2N&Zy(L3V=j|(Lcdh7=5+|SmF3Pd0g3XX6g4B$CVyr>NzaF-1!TK zPW&2;Jfu4m`lgKCP!k-y{lvwPzJlK_%s~f+vQ0b(vctD-xWnS|@6lp>HXFDb?WZx2 zHPo4d(E<pA`+r^VOQ|n-0=Hshy@A_+ogBpy<iv#ONDw25&YwfW`Ub0?!SbWBq7k%C zjzMNsG%l>%I}~@^*WmYBo;DZn$A?dELezqy{TzVhOfA{34q!!zwMd25BQ!9wUkSM= zLz%%@eKIR|bqhvcfx1@i>a2E|D|g|wr9aVoNIvUS+(s+po1iDO0faJ!LjI@zhZe-N zWGRepLio!5ymoav>Q)lPHgW5$GKM!w_(z1_>B{go2qW;z&i&DbSx<b6JCdR`urFTW z%tZ>;4`yKa1O;Qjkb!|?g7XVRB$sFN$>#QasjHKHH<l7u*Yi;!DACG0IUl$OeHV`5 z=?pFpmoEi38=I?}?wsmvA`ogHtdq{q@ud*qlNc_GpVSni3|2z8a+?Fl@R0RtUL{mY z-i<~%unpjo=~&KUFS~g)QaCK-LX$fYE=Iy&4q;e1^TZK<LKvk=x$@;ug;U4k@i?W& zd)S><;c1p`G6_UshXF-{UF>d*YP3qj(1?w1?DDlQs=6D8hSkSI&3WiowHt-Kvw9jb z1gkk;hGOawsZir+9%Hd1+$j(WpwES?7UP9D)Fx9sW{?k}<rcW@RE+8kE`_Apvs%L` z+mWG|swlsB*{Al^f046|y>$wdmew4?co#5Ug40nC&(Ts${_s`H1mE>XoADPn`Yn?0 z<SV$C={goWKvlKb;Q%Zxn#$kvVE=@E-4e<9_AM(khoI<kEezYYfC1Iq{h=z{?8<On zVn@{^b7kDcS+b$X$A0WZm0pT$bWJr_Cv+bN66n^|kEfDg{7xu{vleP+uRa_1Pq3eK z4OZ{MMt5Ze`^gqSx}P)~%6_tr5z<e(_GLf#6k*j*)?gwDR?n9(`^kN$F-!{&1Qu?S zesb&AZa<lf6d?#KtYr<E=Z26>1tWyarx&uA;Rq`-qlC;r36spRLMDVT0+%T=%{^o~ zA|>8EBeY;6j*jol3)vS<lmU{}$8v+_WmFx0XyC}IAFrDqn%4(<-wkpXy&oBdw&zmI zD{x3ms|M3~LV*RLKpi{7U=|k&2eAK$Rgp6XSvmXicGn)U%=xNMu9tK2YMx-iyb!`A z0rp|h<1%XxsOFGrc)?GZFg7Y}e7!0dqXcxks-g`fV<R04bslNlfWeL_1AD}dm=XNg zT2&hOA$B5+U$FYv1nVi-CZdP&fUL~=O*F!48n$lAW_FPO0NK%vy5Wd+J6$jNZb@!% z{N-Rz=*eKgM|SSSY6)c8#6oSbn^fHn8qCT)fc&f+-U3nv0DQd{Ta}sh`}eNuUY8Mh z8G-ELSSS-4-FwUH#YR#Vk@d3$?SK+%slu#GU<Tn(0py>Y@1U=`o}Y6K#(JU}tg5M| zsbVxw2!EI<BU_o(ABOU{i*-#s%zXI~UbPql-|4)9scI>{Tetu5dMQt8>O$LB@D&;C z1=x3uLGQ5^;%#QwtjEeS@hyF<oU8)xJL|qYuI9sm)%L}}i|L@Cli9~g@jU2>=Rtii z=-}dF=Lzsm(x`klXQ7Pu2*fhv_ECP(=HpYa%-YDFKa#onu;*8pp(<ESlMtGc48;A+ zZHpj=;bPk{IM!-hq*3rAwoJ%sH6Bt6<S!V#77idRAcW;Qo{bD!PI3PA7!Bb^Fn$~u zSGsN4rJ~2s-%=<mmeh9!vh6Hb_Y|>(VPLd`t(?Qp$lUGQi{k_KSX-<;%FgHyS{1E; zQPB>owmulo%rB0&Ixv5EQSiKl)&fW}o>^5K%Yorj`42^0$zqHS#QU`lz~F%!cPO`$ z9Ct3`@H-qlWpIC_P=v&le2CCsLJ$Re5}?7(2psp|gVNWo&;d3r9;HXqS}?%<=f-{J z4u9hYKMpQM10RnL!^88WCcYKeDNX!<qnu5_v&=91>T%HrIC+4*_6gpVK9*X2vgM*3 z`?m*_M!SWj=rnIg6H-Zqlvx9^odFoJIatWt!25sE59c|L7~neOt=!eMyh6s;)A91p zpJqTm3XmSqKf)-9m+ToKBW-;lN7_AG%}6_9Aj6v_%#rp=39m&Mfqn>J;nN2{vhXQh z;VeQ5to7&Or*c<muzCerSr{k@R!?VSMUx`jcrH-Wi-Oe;3zXe2SbZ-bEaCRU5^h4j zyh8aB2}Uz9cvj*(5UaU+xvT?tS}+<$oe5%^x=0FWhWdpC+8^wm14!5Jm#<jAj*O7{ z?JxCfi?EtW@MVY$2S}LpyGz1*{*d}b5J3G#;>XnQN2FBlIyYEdf$>NxhU$FE$ciSY z&SHU@qB<V{LUpqJ)u9Q$uFen*qB;(Qq^lE^0`^07ZWpK-xEl#bSLbl4&LBoeb-JHJ z_AfwKRcFq{44)%mR_6@~pMo#~FCc*GJcA!ooz_UHtZ0U1@%{o)dI3O&+~t(smfsDz z^LnxP^$06+n~NA;Az_l6dLqL$2qW;tW|{7z%iZbzMWj?#><4mB3dGty2uPDF_>$zt zGD2#1<=HImW`q^FwX!O|O2Q=fnS?Jy7=c;@P`eNDV`_H>Qa}z`a<V`q*A9>-xBLr| zYsm;9_gewUH9}aCyGe@wV++G1ceRASM;L*Did;VrxjLkP9LksnNE2CkDT%zs2qBUw zOP8q#D<ZFmLdGRbBA1>(CdMF)z@$wg!lGra2!|l0a#tA|9r|Mw@O(yAG#MDIE*7XM ziZ~OH=HaK$$wLQ52oFu9qK6`^co^T0H20G*dALo&JAV@%ZbATZ9f2Ps*L6sN)<CXb z2}G^=7?2@%3CX?B2qAZ1h{eB*up&2Gl=g86liYtgF#TSH5t#a`RQdc*+$xVm3djLx z7$8lgQi$|tgb;c4JQh-dup)Ai5a}Xe5@{qvjzt)OZi<NWu}frsq+m}(4Lj9;<4g+6 zVD#gy0yV*Rt0NFayAF_M<KE9$*X4{5HeNZ4Y|KMgv2o%>48Ja6ve8z;Pa%vzD+D0g z9Q+v3Mv>xffQDjSamg?+w+_X3_16(TGKSrZ#Cc5r(2%b~d_Uc1qPzo|;n^9Ldne;P zPD&ge!(0f@E^gsg!*eJyH2;+AZyIvd_1AQK|5gk{IDZ(2Rei|n28)QRuD|vw;0?3- zG`By!3~sNm%&V<#kEIPTQE__OV^bl<%MUvt)>>G(ymC4=*IMNTt8+1SV{4+A`vBk1 zn*>zu2TXWdic$V*^LX0=VoR;v_S3g=hF*eQq?K4L1ZTxrAnK8WRob@VUV&V^E(d?~ z;H>>6gxK=mqBW7ry0?oAfcqU1dIsuS3q9=j;46fc!TAmjLtzJlCjoj4J2oRXy0m-) zw}Y&|B1gksaWS7LD9cEcxQUyTud#0An>*xJ6m84Q%Lzuifhleb4ety7tLBOfg4I{Z zvUE%xwqUy}cjcIfCs=(77v}zB=Silz_S?5W?l>uY&MTQ4-xA4`e_MZ_KIg-;2&M5G zQG-!|ZN;|)@cn_a5Bh6y&tnj!r2NuQhY~ziP!8L!$VtIjJGK?y4sjjg`~aC#V}i4k z1cTL|Aw~-YC&U{=v8*;rc}m)4KmO!HDXMt`N3e>=v(%8A$tjL@u&orbCUXH~U&*ML zz<7|suESv!5n?TFSjnPV@Li&CJo6xwMf}ph3OQG+&OrbK-#`Z3KoA^HFRWhi(_7BZ zfTEOIQ`H?OlX*1?Nb%y8(AYgHEuPK1!5+A<@zc_HW)s|~3k#bJa>M;4?qfv<kycD$ z##(&)4cLka3V3B<IR0YMr7=Y)zfK?ZT3IuRYh@h_#&DY_&g<k765cnVGFov`l8?T4 zckIf}B{#j}-4C^U-%L?V74BklrM7VOj0ryINgb@lrGZaNt<UYYK*rIj6ds!^(y-`Z zC<=o!*TpEh;IUfra`HI*IAbV+SeH?N;d|Z`Tw?pz#sW`nX0hjC+3ws8obJuaFPxo$ zt~AVQ;&dRZ@S!+wULnjm&|AsXQ1*pb!6H1)Wsg=zR#+9Wcq{7-M54|_LnuJPjR8aV zoHfLVXLb!O_&H0rCO+G6@G3O0k-<wka2mi5>(UO(<#E-SA`EN!*5F;z7Q=$qFU36- zO`vtScI3+ixT#`GD1Uo-y)zD(*`p4|ROY;k<*I#oN8ak;j&D4ll*0mgaCfdz?w#=M z#GC71a(hh7aBo_YIMx{oP!3Ek17HqJ2JrY)AL~>Vv_T36E*=));oQR!;>#)38%01Z zcH^a#&YuTou_N^#HmUoWq4<Spl~2o$knw=VefS6p&g!ujCKtc67mj5{Sf1B6Q+615 z0TZU07;%0N;TCQ5v3fkVHhM_3Mm~DWU&B)-)oYQb^XF9sllUf-Sm3<^y6Vj589-8n zDF93r7Pa?Ofp=@H@Ez`;qwcJq8nU`{XPypw>>s%k!amV~gI28Ibi~U8F^5XH%N$4# z7nI~g&I-pb&%<T^>w@EXc|ch_?<mYR)mNez>$mV{zm{Ro82b=qfxp7B@(jD*jbbVf z`;3kCABAK6vz;?gAf~W>rJOOc<}8Bph^4UAVg})Zk?c07I?uB{Ro4=H3HMk~Z^Ywf zT$P;%`!85U;gA$xsNMK=igQ$ah1$Q}z{fkWb7L(ovG%|pmIEukR&(vIkiz>^@R`*u z6yOtQRqGoeV|&aLu{n8_5VQTJ;8X}sX<$?5Rd~Y&D4i6_1fom?3e5;uOljb6IDu5H z&jwC+g)@mb*J)BLmwWd1C6cN8iP-5W4gAI@koMl8_mprH{2@j(x#a=lJ2&jx0UM4M zk&bd{{3h<vw_yP|0@@Da-Y+7pxz&TJEXg>tenVnEpG9Q%ir;x`Mvo<U@Awq^<Lm!| zjncMY^)Hxrkl3E48w|hCFg6spH-o*c419lg$No(9)iOW5BRq%W1NeT8{Rj$?FJ~CX za6+dza1R_<#`Fszx($Z+MtHE<ns)-!j9}Xbqmxi#1@5ESUKSe#WB+aC-(iz>8brcG z9w>2dLp_&k)s5ZIzkf!?XFHDV{}s;W>Z}FFo_1PB#)6%V#%?$b-&_G~8!Xt7DG5Os zl`q(tU9}+?SWxuEPkai6nui+<uqoXh^Dmmc6jjD1H9SN%Nq>ZC28T`i6YwS%sc|<a z@L~DJ(%>7&6poK+Zx6p+ngvx0M!QQH*ys*f?ctjVL+jtTq_FRk{J8H&@-N1`h^^?^ z7$P#%{c7ktMb^2v{NP;Kn!|fssAo8KUK@DFx52dt%86zkB1_da`VVBV5Cb{N2Y)B| z$_IbN&|k5t_&b1;jiL^<)V=L1I^){xy_|vYS&v7gaw`s(gT5l`lalI<*xd(5MesAi zZE1VU;i;sW6{pw_Vm<pFFQQ7=^pziny`XN@t18+SS*ziWz8GupqU~Q6SN{-<K7wL! z0~+5-{td@en{$y7i-JX=l>0E~pZ_!lX0yLdF00nV1GlkqJa_N;dMA(FWJyM$-TpfE zCKzs4WAf1J6SB&#wj`sYoo&)D@uyenbo*MJ|734^gjN)M&v%er3j`+viP(BK<)c3p zj>VQeUBhU%f!(t9XuD52JwXs??{(4;&#`b`4uAy<j3=%O?0qM1ItbHxLP7qYggHew zjyNIvEbik~E$S4`UxVGL&256?ua_BcogEgoFK-+u&94tW2)Be)IR1_<EU$KY0mJYK z0pg~obK6MwgUf;QA?o4wH?me59}}>?O>p);%uh0sn6ftOh-CJjl)W;r2i|f^t-qbt zLOWxAdlX_{IokAuNY}8{QS{q6nhcos6}5!(p7xpMp^O*@(%$S~=m91LMA=`#=->Gm z8L`g5-95N*Yb#|KJMx`@TnlEN5#migaCO)vlQ$kP>AY0>EAENkmf0KgS6$?QDjSwS zwE=i@7X^F%&S^D_d*jz&K)H?a_KZ<_I9(7Kg$!6;UWw8>e_nr-E3clh)5p@gp>V>@ zXcm_6<){;2YygMB9@~n01~SXnU}?OiYICQmJ^PJbLzLnPu##Lr%+X&j35bydFC&Vg z0_+5}nf4iqaCx)KI@jQy5ZwKcQJZn?tv6ws4>fiooY4&ae2keHb`zB$@+lD%DoU<@ z9`?9czl3qW5mqmFO5H49+J|Z}Qh*xG2{4Y-@-KcQ6td0^&T2Y+zVd(UK1e-a+r48j zdOwgt){godxBi8ddkW!;F>53&uLcGRqd3cc30R0mKKf4r>KL+CmVX_}UlX|yZbytL zlIw$lQCu2Lgu=*WVO$0byGuT<T#k+UA9sgkW^f~LQP`sP#nyV?vZD~}{3a7M3bsST z*l#b-!Vt(qm072;=<*jrxM*=nW6Ufi8I^YgG9nKbReh3OKM^7<Ms>i|2f!N?RPJ$A zHH`$fNpRM!Say9_xNXV&@<ZwmH}Y2Bf2T1z(u7qh-^9N~@``TJ9JU7bIb}(5hoahz zB@sUu#hE!6{=2?~D?e-^Zz~DR58;{b@~yCd<boqR(ifuvtJQ`}sY9XW>}J^zP}mAY zu98y_u6cn0YfH6Kv7a5v*-@%4cSl89qn?d}v&sX`W9Wk=*8iLbWTf~8p#AWjjqpuY zj&CN2%BfHYuxD~^0Emoxo%;abJ{{WJ@^q9MMD<Zui8STiA?I=wj`reMj`uA7g9bvs zTBjPwIgJG9k2R)^{VwGJk7xUJ1!UVV5WtYx0$8Eg2soK;iX11`h2Xjon!ifXN2#KN zQSLMmeJvL_xLJhglMMRfkgA|_d?zRQM132m4oyx~JM$#7jolGpLOC|iY6xZ9hXLX@ zz&K=p2Us>2N%M+gnR#+wNn69q{)U$V0L1T0UO=c93DF2y^eJ)w80#$;2*$3F+iRXr z6nO`5g<qOq@&=Nz&MknnKE`fp!;1l;KSTVchBbgC$Lj*%(2Oz8TlgdL9RL8V3!UQ= zblMr#xjzp&uocp*KZ*s3t}2cmkvWlvJyt03q)GBT3V_uef;^%pUU~A!7FV^v_7n{Q z%DnFd4ahBbDP^81g#!$ioJXP*W`LAY$C*M}GRZ|WkuaO@Vj})|8^}#Yx}LXG``rk7 zs{Mv)DBHf2-2)6RWR7nTkamD8aU1&_L4w|ORY11Q8D0DYRe5bCp8C*AL)msSK+e}f z8RLVLLn{mbIre4+WZORha85+4x%R7np?6gMiZjwHp`NQEXNO`Psis|vtpCl=MfL5g zM#^*&$*axa;9G1B#s|efEDYeWi?Pi&uw}?qAoa&g5;5)tJ|)wS+acd!-(NK3JuD?V zZwkjQ--Ph0NIkEuX;i+vG&Uqj5o(Mg++!4BtyYAIC=2+a^Uo!epuNHW4Qz@MyaIqS zz7qJ(Xr-)C#9@Cbb{CeOdn3oezChakcHELAOb-_TTK5P5Zo3_g%s>Zo9`x&A_9f`2 z2>^85S|sRyV6DI>XME^q!IMJJGX((p001ogL!i@6`UA;^j~21z<xW*mtch^e6!Mb1 zI|M-9JTAtO=N{y7j$pMWm0^9)ZwgjOWqSa77?SN00g&x=0L<1$lR}NQMPde@AGm_Q z0Xiho<C2j0xg<l+0gQ{Obe=gt)45gv(3uB-`E1PY#1}d)U#2>jnCiT)t20~UD-rN< zOvM|!SK~-)YSN7?cM|ZNzo72IPf|M$KTxxCu>fEv3V@QnM2b&p$G5Qdms;N;0MM5M zAo>XkUE0wyTCzVTN<sh9Fn>H^h`zgAwc}R&Is?I+8gHPb>J#TkL}^Wp^h(rcB(<}K zS@gX(sq#JXAWia60l;Ah0Oc?N`BLQzdpO17Z33`H0Ej<O<5Rv7*s&-*2^iH}Ds=;X zTT#vJc6;EHzg+Tn1x60ei|Fyb_ZQ*d(#D>+g9FWZm=0?q$Hwp&I0n;q+k%f>m}s96 z0OigGz)$)W5nAY+$8|vhyXC<edmBueY2Fb%2r<Nd7T6T<<M>VKh6fpCTCIi}_|J<n z?X^cJbT%KpX285^!bmA)e<*bcvfpbL1I?Ksb*tpKz)w>zU$1gBU@ayI0KQ%WK)#wG zXL6mT3lO`EeSx*O9{{me-|E)+9xb6x6gaVeV=ah%F=B}QI<U#zi}-a~f;;qY(Q~{C zCEY@eS(fxv6u`G%*=4K00N_l+AC2#hZ_gb98eI20AOMIx4uC|8KqN)5=Nql)E&$N4 z6Rp^5w^Zm#uq6q>D(_68kZlH>%VfaWYp=Tn)i?~O?)ouV&RIulSvau07g;nxjI=*8 zC(C(Dw#NQa0C0EkehNFHu&G<PL>wP=TGlwzQnGF*0CHRdfaUifbGHCf&%gfmKSkJq z*bXv$bppVA&C>Aoqv5O0@YPK7wHmK%p%#j-Pw*|Q`8tHd4s~ERHld~71&Cq!FC&NZ zEHKmZrPx8f?fA--e62KJw<t=!z9=&XsjN1d)>dm;v6rt!Xd=zmZ{S<_`a%H6t2G!T zUoFYk<G>WYQuJ&d8<KkVssPA169Dz>TdX5e^lUPlgXmQP0R2q>M1NVKYdyoZtQmvx zEu^wsYnBC%%CcauJsMe@!+^^9Flk<(Itiga*^pdS{tZC%KOJB9%X9#~#s~oPR{#*b zrI)X-pf`rE3k_fA7`|@Me670)e7y`*SN}sX_}1YG$Wvm?U`HQ}9!mE36!ccI2dDpN z9%95L9v?dPRFuG-4_IRLLCd=N9^fF)d?N%vz6Agh`L6NggYLoXY$|n6(L9EHGVlK| z@CnV65tGQ<!Q^$WMIIUFUxa}}a$n3k44J80&Y=XrK@-GKQ|uc(I?v}1v~I<*6(~7w z763UW0$`3=$l;s{Orh2-4Yf;z2&fepYL^0F-rK#@#=F!m#O|n2>mmTC^##BjAyQLM zSlr%5K1xHhkhjGO1Hy)l7lNVK?O5wFB#F<#$U$})O(MP>6N%$}iO!p*CO0BJS#Il$ z+&&Zle681Vn}ORU5@Utsj$!v2x!q{w7SnRO3pt!Yz{G98Qj=_ZH*6BpYRvsc)2<Z& zbRYL>+G!}t<Wm~+m8&s7aB`-`%oPB6Hv>p$%y!(8DR~`wU#1<m-aA^i##8}N!utT& z8t)@>vWz~GX%zHcH}mPodOp2RVXN_U3c9@LR^$Y<bfhJ;Ffx#34g;2RJ5pV_{6IT~ zbUkT42U6DUF#*8YM*tFaJKWR_J&<yVJgs|C*Ooe8jsVD41R#;`hY?05Be+mE`!T4g zZ=G?gSuG7PtEGruEj^0@lI3!!k;~ug_3U$pX}Lrcwvx*YI4DRfm-B(;T!2(pE+5md zBAr}%Q#~n{V+8=Mi$zai_s5Z`v8i9OT)K0?#C!(}fPCl4%1P(@_&Tp#a9^rl9<7gJ z#gKcak;lP^VVgdPjLGu&M#KQ@4~#rk$|zWC4^`Mo9>>C1FReVz2A0zlsjfUe*wlbL zM#}&VS{Is;dK`d6dvC=-j*+8JPb>~Ul*bSOAdiP-9Mbamz~pnNCoUhSHN?jV4uCAL zL;#dGN=8Cm-Uw5kZWmmHg=<8#&Tgfcn0J`~$h$}6rSqO*@;WaekITz{e{Db}j~ZTX zHoQFR<z?M)zf3S!xV+q9<kH{BWxQ7|&zZc=Oyo)QpOpE%O)jd$g+vnpP^BOMPS{tW zgp_qhZ?o>mH|vfbdfjoVLRagKE*QAY{C>Jw5+7rh#C`OVc<+CpKFxsY&hIJw{ld|f z{H+uK{A~b0{uUs23V&Cd^+zAG{<uW1KOR)*ioatqMH>E&lkYcBXe9tB^Z-B#gUH`5 zAAfG6e$G2f(slfsO~dpy4RfcrVVa>(laGoXjIRAFp<rY92|xuKAOLuI4M3ukEFWe% zKd#WmL{W&6%*55BA$~rjBv|HD0Z=AC)e~jjZput3{492NwbZ%M@DnopJmux*Y?Id+ zhdh3M-f|j{&v~X39c?;MUvDS+<(g#qOyqE^__>Tt#JbQyMwVVN0ExQ1Zt^;pB9EV+ zV;bV8yW!_x!w)%3lzFKsGa;X$&<M>>so_VIh|AAAz5KK_d7VzkBa5>q?9?UAK+X^x zw7Uy{QZA9HqSjtB)U%|y2~&+;3XU^Nnqg*1Q>B+QuONq00!*QHavEx{a;zb>Ndi#E zWYDR#Z}L(LnL!`=VyL}ksC}xb6_8q6U<$SQ8&m6cA3vK(ZKMF876-ryDd45n!%Vrj zG@9LpIZ6dUj%%g=)Y_j80kt;36lxcyp|;Xcn`5YbtEoMNyqNyfgmy)JLXz(oYEulg znVQ;Fq;?uGh1w6e13r2Byv1z3Tr2=My;X0%9P6d_CKrNgb0^zS`&CvV$g!WMwiR|0 z&OPRXp*#(>d4}4vhT42h?Oo(e)a^NU;k%v+O-U{i0Ms^!X4l%Z(r|7ACj9B!*iAt# zWhC9rX_^DC>@4uZ?+?UqSPUUE(A7x#3g$L5k{-s|F^g1_Sq?-Dv$Q6?N|^?IpA2!_ z8N$KPd@}UHN7~XzeynrV9(>$A$VS|Q@~##D<^5M$^HY9O$j3#t{lQfnE*Ml}@$KI4 zijKbGog*>o<Fmy3&C=Y55sLX4$Y&2B1AOD17uZG5m#*Sv;LLq7@EWcnaqH(?g!WBh zAm+nJW<dHX8MxChupotj_Xh7n0w?*3cdkxlpqURNnSs~1s3!ws1b_q<%Ie-Lfo}U^ z;1#+SCtBF)EFTrVCa`=M$qaOAqZ!B$01T7>kQ)yZI`HnGeMsO0U-3?%@2jSTPQ=%0 zg;uCtcxg)Ol6<fPqvvw8Q1ed{b|lU}>$&{lcz>YuD7^seD2!lv@3cf7cW!>sEz^*B z$c@rup23%=CNsd0=_~-qT<s-Od!?Qtog3t9)hq$damzGhPI99(ne~_lHJOK{5~vOC zUsAPs8bD&^8=N5Xs?42+%*qW32^lhr-6&1w8hkHmGCvtI^9`9TUNSpj(JTUYI?Fev zA#<}^rXh2s8>Pv#cjw~wIr^||_<bO4vlu|4HV-Dq{OJ=~Gq+4bX8Za?1vQy(T{7oz z<R%&Un4}8yl5a?@0w*TOynsBe3OwhQX~;}+qcoY}uFy_5WDXDjWJowsn?;u!p`Gp% zT6echL#BfprO6zQaZtBS2ScW@Aw$9mGFK$XY%~j)@7BqTm}7q?fSyqwcUKE5DSpm6 za|8hA-%2~w+Ch}&j5Mo-2TVZ|yam1KE(E?JODyO;0Z`D_!dtDq<T6f{W+4zV1)bw9 z=n^b_^sIZfS-%`()-UJi^~)F*bP6z&M&-ZODh)96l5Z<(Wl~}<EGlr_*<aKVHF5o9 zCa#%g;@XumaWw*Icj9v16>aeij3bli_?WmTDN!>apX!Q<3hp&==ne@0@x^7+$vbq9 zxzxwRMu;>?67_5LA&KQliJFN)=wMnB*HYqSB3}S7flGg&UtT75T;gNmXz89lNeoM( z<C8=<DN!@=7B&Dh6YIIdL?&hk04DyDttKxMxB8ig$o7Gci4CjwA&EsviJA$H&zcE# z0%77M0l>s&=@wolHV^bk;*?ZLT%JV7Cy8^C5;YUgu)8ar=wl?2Yb0?^iX^V}GchD} z(e%x#eMsW{q(sfct1c5?@IaQ$@tgpVgbl#26F&~{N#e#-Ci*7P@kydfQle&JwA&mt zJmw}7lLP=0UjgtlG04wEerj_p`)(hSn30sInaIM2x^51cOUOi!BOKS4{bYpm>cn>! z`y^2-Q?XAmLrHXek~lFb(KH9wG)gDt8J(DDbmEH?o#^jp;zr-<rtVuM1kWOBrYA}k z<k|MKCd%m~Gp?ED?=|u65^S_5O6MMGqMX^XWHY%-O}v{s-xH;CA7`SR?`1t?avxyg z-Q2t33Z|ET6*{+VqMR>%v{#sTH}_mml+OLKiE<|5GYhEtpy5Fi@8-VS6Qy%sZ=#&< z<x9on?q}lN+(n)!ox7una+*p9GPw^n@ow(Mo+zDr%QspS&fTK<CihAc@8(|YiPE{> zGEokff<V>ve%!>nx$p5r>D&<$<*f73zTCvSxx=0)ox7`va!&K*ZfoM*-1~c?bnYEr zn|dD#&gJX>Cqx0ru~#b~+x`N8^B1&9(ifZbIVSyWrWcs>7fkw-CjB9%Z}4$fi72Cb z`eWn<Pn72FQWNE5i$?f{f&!hGcHNSjoG2yg^SQ>pMCX0!C%&>bz@dWdr7e3=a-z5F z|N0W0WvPRCwGRVJ5UIarZFq8`x9r}&M2C*}Nh_ERK8&QYn<poF%l_?4Z;hQhQ~6%z z!$>N7MslLJ?1y}b&gRszZ}wp%mEA8n(OdQzzC>q2s-Cp=VI-Bk;|p)Kk?1XZl`qk0 zCA$YcJ$cWEkyQ4R$%)>w@Af4+!)3hmm3@T|BdP4d<V0`T?R<$2-;+jm?^aO2hmlnF zkDu>DCbhmqr+X^jFZeK$%ASy%=;eEaFVT58^)n&t!$>Ooq~t_z*+E~T^K@$2n?6gb zwzprdNKW*Y{kAXBc{#Q02YeVwd`FTKy=4#ZB|5xT0NK55*~N#ERCb%>L~q%<S9oje zT<)9k*Xl&iO6Oxwl$4Wg&o)s`#JAF!X5!u1C+>;Txo<a74)2Kos-8EmHt}xm3p`Oe zcXt!zl>7E<@=Uy&`#?{W&b{YTRrze^GWjMpw0}17ZtgEUQ95^xiE@Hlyqr%r@ow(P zo+zDroQZNe_&C4L#Jjl%c%pRfViV;AeVm_U;@#YbdZKjhCML@HTsBKgy*Dq{@^Evn z@<i#}btcMr={Ik^XP9_5_f$`m&V8?mayrT<y`g=JiFb1k@<i#}r6$Tb%eT5b-Nd`O zkM>0A+y|H_=YE+ZZiBAz;$UT&0~Zwg*JZ2`<J8Pgx0KjzGBJD67N<o66@O_@rJ_0N zhziEAW05FptO^BW+cyDl4wR8Pm9xI7Wu@cn#I$HBoMon>ITuT7rcz${$-k1xn`zNf zDBqik=KS0M<ttNh)7ANmv}h@mb5hZqN{l(OqTTwjZjE0QkZo@O;QW9sHjqrwlSN4U z7kV-^Em{g^qf*hF@uJ_UlzXM(rjtp#v}h@m|MyW!J)HY-(3q~yD^hXOQGO{cS_<WH zsc6nY4b=JKRNQowPf3fGLODAX%~|(r`Z}*(nj)WclxL<zOQAe570tP6Q+mo*r{bog zd{$bt6w0kq(VV@YEV{qFPV4?=1;GCYfRiC>fm98wL*l>C{b$mmrEqq8Dw=cNFX?4+ zekyJ{nH--MEroJMDw@+$*7vD({<8L8)%mrwXepG(r=mH()~B!YrKz~->U>&Sv=qwC zQ_-A20~)w~$-k=eduh>9C_k8r=6ttNS*^JCP~vZ9ZKpS8ar{4fmCsob9?J+ue~0Tv zc*ttF`G%^xe+Mt<)7QWr89wMA<8Rg8fc1Ce@LpASp1K23vn8rgq*<uyOaxy-aDFcS z*mLr+yGWb=M-VEpe#E^+R(rf6`V$QC;j&hd8Sd~^sKaNy@fa$ug(&TekN>knR=)KO z97)gK0iV_U9ijMbaA@1OBh+Ch-umjWyz2WMRlBl-<6z*J0l4$hBCD=yLH7Bv=1uZH zJKt*F^p?%e1xOP+S1}jZ2=i%rmJFbO<u66xNL?17ZWj*6u3tkBxQL_t4a+}H^?fW6 zHx_K9HWvUJsW8BR<-tb#2^44CJf|gG-ns}y;QtTR6sz{>0Ej;V_{QbBIE}yCUp!2q zjf2?qij4!TFlgh@897s|C@!VV717%X0LDfEAbKN(PAdx6+oZR#m1|{e<^H2><-RDS zYs+@~WBk&23HjiA-D@wcFO);ldQ+$AN}RCN2f#d!O5Tn3{rGjJ?D5;%{XhKQG->*! z!FR?(It#GWav2I2aUO#hl0JeYOA*k1ooEW>*VPS}iROUwx{^}du>Pa4zR_NN4)Qk# zuFkKtw#gYvYpXk8r&{!gx2z`lR92!zMO1$OzA%qp*dnw|5nhJ@Ag?1qE7dRTP~$4K z!KhYOah2L`7ixUf6nvS-G{sa?pKDBgcoz?8G-rM2%&O}Hg#mjW4OmS>JF@qY08p46 z0H`pZot;L%_!^j?A0z<KhXEk^vkF~V>1-3`l=str4Rd@1Km_oiFt^vf30dTp1$X>O z^{cy@hc;xej{u-}HvrbHlTb|dTg;~k1Mvd_0RLhD#Lv+9N`423LMT;!!PM#oQ>%qi ztL^qD1?&bJ?M3)?{@mTL9FOODBgwWF0A%@W1_fgwYf3*|NXH|h#{>ZSS^z}9RG}+5 z<_nWbj?h7sCBrDjMKb2#Jpf^HyL}Xy91SL2dBRM~XTN?BhZCN0Z>P04Ez(=bA#JVw zefLy*?Pn-LVpj_Q>{<Xcrh7+WEAuv9W2cY4d7G)^_|SMToq!nT7>69J-|hHyz7|Oq zry1`~rP&PylPds7b^ySPMaY;U$4|`wHrEVb^?CqnsnC@id0V})8rx_@Kf{Q=F?^>; zVcl6^?LnY6EWd|o6-<d#2mtmb17Q80MdoCKy%kM0_B#Rqdm8{^M-;Y_-+j9h@_U-Y zHp{OP067)|V2&PS?rLDB_1Bn3>pA9oRsiIi4}kfarQvI+@fr&mud#ap5PS8R9@D;Q z=*7BS-=!%H%YQ-ul)px7YT*Bd9L^{iVbGq*`li@HzVU{y=QLlpC`vy6w?eiEso;ek z0H87q0QoBR@)d{nXuib%i#cvJ@|vmT)slP-X;9C~=&wLMJ4*nNDh5C;_!di)6g`{8 zY7_l=0f3GhM+N<5g|76hWT&fV@KsP*aJ~%yS;p)BIvQCT@_(Z`385+hkn27GqW|gm zy3g=+yWwlP=BuTbug;Kz(f_N>c-+T~$9L)RcwIN})dZ-n{=*2_=l?dHT+te7oB&|& zZ2$@TovA26A1V3$-*S22%zV2zlF*8&kDNSfE2e8a`Oqg|q`s7Gtc>8EBcIGWMgZh} z9YBI+2b0(Pew=()J^cZ{tNiZH7Z}^;(~RwNA8q@*0Rt?sRhQhoBcWoib3mtxJtzRk zzX5<s`37=0p8?aAm(V>v4c&Dd&REKa0-%)j09eYkUb^M(P&(Dn9c$=5rRknQy1jup z4E{LS$$Izw)Ox-^15VPj1OUAk#genu-r3bt&l}t>K8WiR=IAK^atsDQ4r`Ia=?ToF zUGH;1x4{#-W0Di`MUrs9%km{UoIs=|o8C*U$tKfcpP3fhtXu39Z%wjyC0cBXk=&g| za*t`r{oMsMS&L5Ekbl=PxmpO~p288R9bzbig~*z$Ojj9^l^Bs-twr{*!dA*O=1<L9 zvftZ{WM>dkv1=;Zo7r~#Y$a1{d-{9OTO2^y3+@vDoXwSyRQI5ED9ZFa_Mn8{+c3`f z%vUG?^4%;mzRp*Fy3Qy5Oey|di;O&`3xM2<wLIQJ#$<WSW-q4-Jt+XNX-Y@wMHRM^ zN9*kk$m2?2Ior2+<+1AB2IO(6k;myq9@lu~ageE(cB4qhV=nD)D33=40FQNIh@<7P z>NKxB+;+LBAwK3&D_PzY0Z`sjQBPf7%#@dK=lGkoS0md6#`ms+@x8m$>w9;B$?Ggd zp0xA+G~<646#&$q(f)TWkvX}2em3j5kIZ^*qh8Pbc&cYm*n$?2`88Qz=K;(4+}A#5 z&1#^1WWuLh2AlSIz}r5zqNud`Dt-~ncMJOzXNu>fPic9cW%4EY-@QGv0X`OTyk&V$ z3V`yK$-ry$zq6kYSS`Bk(}-%!ysOQu)k5@H=Y7NEbuK|3S67a2h?ia*i&<Wt0N|y+ z49dE^L8iQfu3XEOP`Yxjhy!_t8o5mN%B7vj>vTb$hW+o3XFujbrnLZIp)CNeFE(^a zv+lv&?g|~ZE2>2d9;y-aw-mZs_e}l6U0-~K1;0?>6``{3`5gc$+>I>GEkJeW%arfY zom^Ltzl{Qbzbyb{{gaNro4M>G`XB*-J{$niTYCB9?ek{+Q)@o3X9|EUKLB8sb*F&8 ztAXnB=Qe8Jw;NEfO4Bfxnudva8|GdV>Q!{yO3dj%HR^r*=%zvp69Bx-0gzbQoNw|v zyS8!wC`3tSqFDG=1N=xQXPGrdX@8eau9a+8$7Fs^LW^jA{=pw`p2_R%z`2c|pHmy+ zXO*x4er6he$YG+6*O@XCN`JO1pX;bXtV^)~kk8`)5_vnCyiPOZ@$>WSn+?e4E#Bb4 zGVc=rWzLl=GqilZJ2_cC2SfH+KL6kk_>{@(d=Ht{X7C?3HJwk*R)2GFl{_jp?2dOn z$^*8VHD}<EPJi_@?2dN?aya9GDa)y+W~5SU*d1^ENgirPv(n0mtYLS&*O9~7j;ac^ zPHCt$?2dPfms)R^TEp&mg``HlgxbP4QtQ^RJ6@)jS`I$(b=?|v$NT(5Q2QBQAwsQR z8fp!@<2{1BiFRwmFPVRG#~Vs&E3t$XYCpf8TDOMX@!ET-eeWcwHSCVJ?F3Mp4NP&z zs{pl>58j5|@!msbpsRsDf^$1Fur}<DH=gvua>VB|o7wZ4>Z8WQ&+iTQZ`|=tLdmXI z1HMnZUl~vPigzYr%u4!#8RNr9_67Sl?s%_s*arh`eZ@P)(1aug{`cy>B=B$C@lMzm z15<s)r}GEA!-tV9fq&zU_fq?PNZ<%x@y;>$^h%Pzu2=RYfq&zU*M46NJmD)|`vaOe z^e&y~v9B88MrrS*bvO*w!~Z|H<2`-6o;sXY<N(!>Im9i~I7wx?QJTy{Sa)bL|KN_- zEkTBkFYbz9#>+~Qp4v=xqcoXf&LV2@@el5JpB-mvlY=}inXp@?sZCcmN|WKUHJZ#n zxZ_=yAak^j%=a&))aFw+N|SlO71}?z<26o@xxy#3JKQo&ZHBv1n#`FPIdpCQ!5#0( zV~x<7$Y^6!pp{#uAro+;G?`0Xq5Xq9UY7)!<9tGUZF-8(9(SWOnda_#?;qUpmgkw; ztVC^OYU+*R0OZ&`1kh`f7?*5nj%(N*uM(v>R{>KBYGex9`CrE9f}V930u8(4oxy@C z%tGKj$q$ZZcnkUnN86gChTZWtw?jeGfSEKV4MRx{Zfu2<619iR&(x8B?~ZpXNV^l4 zGhMXBH#u&2aUV=9N=npBbp0#A#J_RJ+kA|Vi5+O0BuQMJM8{_+e@;@OW}*)}rIN(I zamTyX&qPb<o<2!@^TIwP@qSXGX5z%n2`2uHJKm2+`y{bxQ;H<|CeiUpqDxYuX5va$ z692{>Z;+pf+*C;{dww61n30sInP|lB{_oxKzRUGVVo|DMhLY&`BynO=qGqCn%f!EN z$LsHB;?q<nK74K;l6WyGQ8O{zZH|BAj<@0{pCnF5ZH}{(==daYbW);bV%#r@=J+@6 zc)k5h6eD+17k%&9eMsWTq(sfcWAzCp{*61{lD0lcT!!54dLUnu@GLuy^F+ylJlj6V zL^;_q-kOPV_cMxnPj1^2rE`B}qMQytcxlfy@nA<>1+wjzJyAOMqbAC^=zDMOyG^{C z`+855&V7lAa!P!(i%h(myQ3#c=RVv-Ia7Y}(r#?x-P~KIxuVdy*O(}$$Isr}i%q<n z`z=qD&i%BBN^-}$$Hcq2Bc3Ro`zjNa<c=3M@ow&}o+zEWory|v$J^h;ySaBfol@_g zOjMFP-ZB&K=6>H3rD^}yL?yZ7-EZRE+;@7Sbna_Sl#_7ByBJZj=qXb`wp|Rs83t{V zwM<u&ezHl=WBThGbo#+2y@g57WV+uS@As!%F=$<0>xt6beQctfT|W}vH&MQ>6V3Ou zZ#;S+IZ;X!)B0>X;!AW+lz!qXyRQ!egoQ_)y-RYUx9m2)#B}a>+or0jr{(+G<V0`T zb9{;E-0>dwVI=WACOOet_F!LPI(NLYeHck)ADx`&Ej!bfn9d#V`zQAylf}u2-m<6r z5}gBOy!Ex^cppX*-`6H5ddn{LB|5ETO!Jj}f)699>=wz1-m<qm;jOWAw2ZdCvX}cX zlFEKFIni78!@fkvlF`&x_ANe)q_X=bCwj~7=1X*LOXd4uA4XEyJ0JH}8;RbsSNjsv zx#PX>!$>N7YI35t>`Gr^I(NJ)eHck)7bPcp%g*y9rgO(@<ikiR`=`hDA(J{^Vmf!c z7kwB>Wn0OKUcRsQB|2rk8UF&E=vk|D_e4oK*>(pL<t$#uT9}p2fhOLaefCUI)ntJ> zcfE;9a>x6^#Jjm`JW)FLYbGkm9dELUcXN;PMCsf&nW!Xpya6WO&0Xw?(z!dEs3dp1 zLruJ!yNM@C=id6L7DbXf-YOIC=C1QZ>D)6-RFXU1R1@#!zSk3_bB{JrPCH+V4Knd= z?ov;b&Yf?flHBo*Ht}xm13XbW_wGkbz0X_k)s`PjyqkN4Cram@Yoe0e@m?_TZte#? zQ9AeCCaOVqyekCbAKme~rbPo4zdK$q70q?W`(v_RV>t@Qw$}r28p%o|)gk0VB>oF0 zm?zVsrEpfBiq@bzUN{vuokPemY0*+B?|wL?9u2zVeVU4!j`H-hXepG(rlPs-ctepW zE8fc#kZtz`;Cw0lBegZUq?VPAvjftirEs?Kp;VbP<c{}2DsDQ;52r;-p?pIsT7&L* zMX9*yC?A#<Ers&d2UF|ZkUL&&DsDQ;)6$})P`)h{twDFZvQ*r3l#fe`mO^>&1F3ax z$Q|#CRNQowUrmdaLb*B>&2`5cjzrP@K?=yWF9y({J6?WjS?M@ynHDXDv-(M?GHJ*i zZ+<FnI?7YhqNPy2ITfuzcf68R+;o)NrbSDky#4;vIydBw_i-w2I?B(dMN6SPCKatg zcf1Qzann&gAuU=8<;JOK+8wVLubg)@_Nny8gGU?O@$kfL@T>hZ`d>7+4pt?2H@h25 z<A;V~na8$g*ox-0M+E$m;!oz$H7gV^&g(M_&pr0(yp)em=hhbI!MHFZ1HXKk9q%I^ zk%u>f<#_<S@r);U!$UqP3eGET0gI|_k)C*AHV2PUH-m8$@4JOj_QcIFU=I!9J*e?6 z&wjZ-UU+PEa9~B%j;^Cy<Bi@GU+kX|ni8CMdei)`gVEcG8_zmR&@!|63iHB9VQ5Gl zB1Zu;IIDZMJkZ)<N9C>-A!|=)3M%tq@SeM90TnMe<};Kwq}8LLz^=XDC+yk4RIA42 zr;@jf;KWfd22vcGN`dq8qxjxf{+`H?aMk8U;o$rO;NF+*R_w>B8obHcb@Xaf;z(h+ zvU`(2`7+QvA3;2>n%A@hk2KEV2~c}H$cb0F|Df<72*|myGYh|_eLjGsGfK~be_RA; z+wCX!<4);2(iTHQr=2d1W33EUk7BLHE@Gp3UgDb+iZu?!F4_``NAfzw?%2T<Qzy1a zH@gw~PHDWi9gbhTt7s0|YwvtW6wiznWe4Xs3db+W?h$XEYb~kT*>!Xq$h7b0l-JT> z!Fie4!}9SIbP@PP{F@TLw>UTtPl(5hPln^>Escg1TUVoueogm;(N^RBkG*$+kE*)* z{%0V81i=#(Y`oQ2qY@RHSkOeEW;C&9aDw&`l&T;WrBtm_oB_04f-?i0jt8i>($==v ztF7AFr-}hl69OclVz|gvxhU!!hD$(%07BmH+WX8U5Pa<AdH>J<`Mi8IbI#fKz1LoQ z?X`bv?U%^7s_3YH#Zhz05#u6Cv4?q$X>v!G**}l>*W{0BTo)&Y7sz#jr*nKyt5=(H z<`4~QP;PQQ3e?xE`>-P&7C&{*J_NMhg#o+!DAU>?jpF|EwedsE`&t8ixf#=MEtG3V z^SK$^f*7+3<9FnU?IfQ9vF?Sct~c1hlB3+AerAi`uJBUXB}Vv<40^!oURcF7>*3FH zjcDZ&@GI8Ql8w%T&^4sO3}P^+KtRdC1Vl;`8PD!|EY$=6n;355R^9p>>egM4Hp9DC zXA&WSTw*VjB~MNdiebFup61vU#@y4n=RP9WC{`cJ4dzrIDhQpe?p<5rb;F)fVFke* z65$i$^+VN%CIsw(Uglz+F^%JBI;}?#-}uJdL;ex{<_ElMTR$;l*9y7$t@Up-GvrP; zDr3e@Qzj8JWL8W0kVT7c!G0kLAwSc)IR`2^>TIEgB`Zr>)t$ugl0_utN>@T8fe{%d z!x=j%gP2Uq%yIrqDn)~_j&BfyDA#X!U7D;T3Q0mZE?t(JaFpWsyY-4V*OB>tMV89O zP|D`=<Qf8XS}9k`*HL_`ppGgpRq@w_pp&I=Z*+W;&bFB}pX)T;+%(BK@&?dK8l0RZ z&byyW<<oQM4e+^{;V-N3Yg^ixNzUI?7@RRZ$fk9r)9Y{sewGPT_Kv2b97n9kTsul5 z`W(@qI>i8-L%b-ulP}ULC(ajhK2IK*y5{+V3VT*h^7c0(T*rXD@v>Y^NwlQr{LaJ@ zGV91_2CS2vKOJgq)sc@Thg|GARUD5SCrX@l^H;n-yeud2E93Q>y>c0Ccz3ZqrpX-9 z%1y$#<IXkh-fx7r7yG#*+8nXcwEK;LH=aTa2_C!Etrype&j(4X%IxHpc?xA-bu-u3 zeV-;l${jQ{Qsa#WkE;!B%+6>d_GK!sY&WmPq|j~LMu>_y9~h>Ja~{9a56`rlYgXdf zV;W9Toid7o#j0$w+@fx6H=B;mFd3M(LqtxU6EB%|k8N+M6{?GAcYE;dlRV+wdFF_< z!b49n?e3pZfXDRiH;Y#3xoQ^ebw<!R8B@!-iT5gNxu%b;?N*_iT)AFghL>~@itZ^S z(1AM7XQ_aOuXLViX|IA^6OB}}%kgQ2d=xE7+Pfufc-cvbwek3$I;GYteNi`e$@;C; zTqj$aAwaO$Aw9@7j6ap~?LG}OoC}%bTeic=?LM{Yb+OzLyIj6tA^$`8OYlB!=FT<d zmgh!lgTu{+h3n{6vh9*MS@FYq_+dwaDvh~K`zyZfEeIvJ7`<QaxZbkp<)}fIJRcLE ztYx>eke<c*f`}1b+}Y2nU|QV&8{Y@FqpV`)<I+2e)n(iMhAeO(B$8#CwN?v4p?nOp zOZ5_4&;8N_=F8RGiFNTU&vp{|Xdd-5_`lVd`<2Mb;6-NLmMpoC-SjpgqD=XKESrNL znswXr&GQ<~k|q@`wEk1BNiX+sU3~7?&YqM!f*h7lxBILX-+ZCFk;VhracIYHZO!Of z>=}tvQfm}N3aeGDv9+fCl6nqU%Su|saK<B{v)tb~?(d84Z>{^=<o<4Pf1BkudmgK^ z$7(dPS$}JUqK#~8NrknrX1jVe`+HbS#`X1CwYruiD+AVY#b9;8Ow>nJ73s#VN@S_9 zYD4EDuSnzMet5>UmM%N6&Q~K{cbC;6@lt%|A3J4;s(Rg>vO})-ZPRwiqokHk-7m<a zK4w{u*RL+|1S`}s74CmuRf)$F?AmPnt<SIc9y%#;K97$}lrvezf6N2DTusXO{lDoX zLX<q4R*&(7#IhgeZ#esV{Pjj_LnWs5aY^kwRgQH4#-4q%gplA<^Etg*hPxIP#IweA zCha#REsh{ARTubfA(pZw_$KkgEm?TSRS(%lM4F)5w=Z!d-0RRc$+98)bAIGs$Y(ZW zf8xG``#&9!_MFt*+U*^_g}NlZ*4k|`PpUNwcu2OU>6uh()b;N1zp~h6cGFKK)pe?y zN@~OXuT>eVjtWW6x})w%W_@Qy)|Kh3>8KkB31?UE*PEm|`shNc-jIDIU)8E_-^?E6 zz^Bit@daT&ubOZ=P}45Yo=^X*t2sL)eb<46j`&}AV=`e4*}M9ec!Y7q4}QOsM@4MN z-oQ7cHBVfY=~(tVygI)nNkeumj~Hru_QkU2$=9d&D)USBJEqm7+0<&-)QTN}qAh+T z%kU1<j2Wf{1Hy%bFw6qK@z=Nf;m^GRyWh#iv?392!bgx><tAo-tP?k_`(wij0^A2q z{H#KM>^gO3nZtv!w#ze~gyHQpo?LidlRrlLmC3Q6)W#zTwM@$exd*8xAsvnAlRQQ6 zUGfgUt{k8sT>jXVT;Hu2QBG?U-c4pyk=h^YEV89P+(5@(+hT@ydP7Z2g2I5c3x-GK zSI2jLBto(@B{sG|IC{QWwB0oRiufB|WTrO?&LSd8|F~(xJG}9wd<t~D6b4x@cgpt{ zhFq%ZgCNcw=fe6_b)?KmOO$lJS!xlVsZ#bUBpHcAOJu(k-G;>#Guye9Kk5Ca8S7eD zBaAITua{O?AN#Ex0qcla)F=Xd&l)w+^h+^rI{emVJy}$K2D8SD!NO(#Xj;3dl;1wP zbE;y-jBd#o)-FG7GQEraWt$(ID=~VS_D!7wc30&It~gM%436B<^sY0*3%zF964Sme zuiSXN!C%&3JYHL#(}1CnWEMV@Z%qAIo~&lGF5WS`1p|+dWe8*63_#<4>uR%TAw0ih zWywY{B=Ih(va>pyD|W-4&lUci)yW^O_xg-evdFDAFHp95oMT#R%<#uYO*>1i{eJI4 zzqihmZEk0}%OC6Dx4eGamt&UI8&mf|%l_Ck0OX}V)P^m(!=>+l^--0zFJK*}g96C% zrMQG));rtyqwQC+gg)50di~zT&MuXV{fr-9G@6<gD{7M7GNO|t=>q<w)}t!xpx@f- zoI$NLKeo0jYB&)84O7thSV^$t7qC8v&yp|8)E7n8Eo9Ul{Y*L&gg=F6LCRUywVx|W zUgMMyeU?wxi=f34B-IMN>J;fJQI1R(aU+o2FSnn6dsF3Ir-`by*Y41Kr!n0Qx1GN? z%MOn_=!}<=XQk<PuxWjyd>Wxa@mp&VdzQmVMw!;cS*8`5p0Q3<HX<8@4;2{G#>><< z{>mn7pMT2dt-=nb{YWNsc+pqQhUj?u7JA}!TXUdj8~fBk!whd}Hm%B9f4H?EU`?E3 zHdH<<j4xn?UJO{3HOAD(CDT~dbfoXMB{du7VkW~C{<2M`HMH6Y|Cn;BgbCZ%cSfod zY7Z2x2!G%eAMtg&JDTBx-!i7oB$nC?%8lCOH_LCG9Pl0_Cs<?EY_n+Xr^ckp*=EPV z)5&)B_4e6Ui)>?@UOC%u9hOi26$zpc)$ZO@QajSPZ>gd?lp@TmJfrBE=8?wgx<J{w zF$q!xtQLRx!=o^(`s?lP8%%E_^8p)4T42V8R+~0}GOI(t+hUfzIrd>*ndjH!xbOGy z4x_y$&wam@_X6JY-S+{!_vF36eZPwLV%~eY?-%o4%6qZ<jyN!&ocB`qy$jFf?tZ^x zsMd@Po-Xp&cy6Fmth}gljxp_!;tCU|<AzGSFflT-rT?it!eQm?#94Ztgezxz1Kz{( z$t<g!&Ye<3u8I{d@t3_9WK%S;+O#$WtV8juw!pHj&1Nh#JCQ~AFA7*&%u6a~m8|qz z{q_gokOvMB&u=Y`8$_ko;CuYX*1m&Twhld0EL0t^z9xC?+PtsTnIa4~IX{Hv>b7P1 zy{nU?H#G`L$9nwsiV~0bMW~m$kJwA0B`eJX`^~=DQwSOR0J%=5ma_uZ9?AKx`#aOb z%EpvjY($4k>+QSO-R8U9H`F)GcgIjAA6L!_<hDGEIowv&E6@$A;8?aMp;@LqaZdc6 z7U2r73Dw76-|zJ#o)voWH!K!;kY+*Nv+wf7hI-;#b}EICX{jj^peOJ0Swrdf;lz~L z;k?hZ)#LTXU`msu@vBB41%+GKi4jZwohvDWhH2l}k?n<P_?yhSLmeb8qRbP0N<44i zsKXQQKst$OEwr+y^40kmUOB6ZnZvAb5{f~T(_otL#{)3Bjs)W`A>5i3Eaz`d@S<ls z8_|;}P$nz0)8iaf+_suWs<z*>mN_rb_xmenbq=kPNOYjbSx+Q+kyy@KyvSsYRnBsD zP-J|<(}=_w{HL;{))}vq0})A}<QpyA98td2a^id67ZIRWeHnrwvPk65#6m6WGv-z* z?)h^`RgLQlDAp6Yy80~^`i-IPDY|7nAb@Yd+>w1dhIYZIJ0LtTE!U;x2Sj*Xex>os z-EgkO9Y|1RPdXYpEwNJ1|8zceBP;rzAKGc!Kcd$ULA>$T-`mITE41O7>VDtoA6hlQ zzWp2C#Lp#N$;QNEX>L1mR+88Htak_BWF3K=VYdiY{U2Uaj8vQxS!zTF(AjER%zA5W z63O=azSI`rdLCWLwwy;LG+)U>QfR*Ssg%%Mg?5oOHZ;*0%gDHVAbbe9eHVQO8FvVs zfl(;}#OMOVp}J+KFdMpGKs`LID|Nxm<*9;K^5_=az@sYobsmxh?|m{=aG<RJ(}Wn& zhoK&XNo}9`j1+3$*cyoSpG2r1tz5YOOrG>+U<^-sGcbxLmHiz&B(twiXOH}ge3BjT zHdA}{!6JGV3Z2Hv^Ub<OX+@T9MU&Hq?`r&{oekw8j(HF-GusLTprCc7Ba|-wLOO{~ z5NTNJt9R`6dcyr3_CdOqZ}FsSxsWGS%XvH`Yk5w(mW~hFpS2{r+vRL4!u|h{%EC%z zF*%vV*o-VTJdx_h%E-=Onb}YuzhDA<xwct;%IY7yP}Ic-R?2=H0WM(QRiBgMkFBSP z6ci}?F!UL|`(_O7<cXj0?n|xC^Ge2$`QGPe>xvot9Xa!4x+=X{e56PPiqBW~A6i0N zjc6XBgKw&ovysD!L}OoP`uVLmw?2_BIbZy-av9y=H)Ui^YlT_2HQOJakdx;LRmdRu z?SQ8#aaO8+X4ok(?J=lc9xCvJicEMzbY;l#$KaUa-H0{Cs*?;y`mNf;Gqcb*xa-fM zg5bq6@*>_!#@3A}bt^o1W`o+kn&Iq=)CP{JecMnZ{-sq`W2oTuJj4vOuZ^!b9ivmL zwxqU-?AQ6No&l@lEWcfzCnZZ?h+?Z-cma!}-RCa#)BhfR=HEwH{O=c|JFczw4JxS} zjBe;A)A~$$##-j?(wDGHb9d>_^61W#U-GDk<Ov><MAG<JYJ?H6<CZW?sx(|yO>0zM zz#5(p3HMVZY}PfLLJLJ!GOh7Um|?0M***KD7`1!8GFi%H8KpdyE~TVaI9+|X|9Ppz zS*gT_`ngry!$Y!)gVTxCemC*DyPrFz{chuzlGJVdb3D3@pOeh_rx`iF`IB_x?f%{1 zdhzK{-<R)zp{gwDfO08Hb-)$Ll6qy7^pkW+sSYSeCGMC?e6X+E0nI!lJ77>cvD*PI z|7@tmF01vfK+NM5$e`%=lBMd4XsOcNUigmi`^u8mlv=TbDZ~b0M?N={Mel&oBTNLd z!-opTUO-kNGThbR!GWbH;=+saGgc^FzMtbOHtOc6fc4@23ZJ*Yw3Y<VPM68-_nOA* z9g|_9UF8v+L%s}sqrUECL=KZTPnV!f6{7Nla*VkTBHGq_`C3dkF-49V!Eg9b7b9{j z5B4=jD@*p%4$(Jt>Ba=<RxdxZ*^ROTt~2IlbuKsN9-UrMh(h2dnpGY_Pbv$U-yRFc z@A32!QA(~WsfD8iMsV7NYBTYTk+VXb%S(fW9mWh137RbSo8IPtwZxb^39ZF-UX{%( zs##UW0nIcX>~UHTf2OQ#e&7CzhrL<oSz~<$P(rNt>)~BjN=?evPQ2YLt9$U*Wad+x zF7cd<hcs52PNQIg^<JlwS|HF{mQSBh*l`wOMZe<m(g}S$p+P8~y@9g*p@b+NU^cx= zox4=*3gn-%`rybaGzwW&C{HV8H18r$4(GC9S>}Na(WRzQx$xLAoaHauZ_K42BkCio z#P9JnX+%GvGD?Y{l)dz{^8`FW@x3bKSQr*^&rW7ZfFr@84@3Z+bUKt^vgGynkHy8F zaK9f9F(T8YpRBtf9j8{Yd+G_P<OE_5-AKDShvVLU6UPlTW8XKcCkl_RCKiKQvNP?U z?!dy`(!{7&n3D1O^<FcU-MmOjm`(}5pah5``XLExM46>@x|%f9>Dnx^Q@dMV^?0Z$ z`U5iaQ?7K9a|x;NC|f?A0gs=xT2$n$v`c~)8guzlUK;X*ZY^0UYH=B-uBVj-dU!&n z)@L+@m^ka4W~o+co_viO@J1P}&T<iG=RVj$DQp?p4)bNLcdI5Rph6XjoFbAc)~ySz z3dFKc<A<F~;#7BjGv>zJZxS)s&%ULJqsg&5sM9IQ_0FwLkh2cX_A5#U_3#7}W?9qN zCHpHLf)YFX!u@K>C)EV3gQm4z^!8^Wuo`o}0fIn{t{P|OC2A|Bu1ih-)6>n;(;tzP z@nZ}+`)=`D2YojS4;g$@Am$r|Q(y?c+*=SlO-`wx1h0N4AhZ(^GI9a5SbdP`{+8;5 zoz({~3FSfqey=2`KFCDBoG8(i%<NE?H0=fK?CltFo3kTJt76@2dHn^iBs`mK$|~|= zT{R*<A!#6XLE}Q{!9FYaVXZ}71kW0=J#m4IUq$KR2eSiZO+g=;g2kL|w6Z7lvxz1z zgxuf_74}0-zUtQ8v8Nexms0xxop)7btltb@c=we=dZ%pJq>IU5?8`nS3n#Q3pxWS* zV`ZfDI<HeA)Jl0(WsSir%;^3gXX~9RqZ^H=sQL9&tc>oIxtPgIQ}_{jmRgf;E9VSm z(IGXrPNhfvGPm~E>A4jgYFghcsZA`HrRPVer^JxCv0BBLJ|s8_G3M0toJizqdZK?} zmQQ6%pK@wn$BUmAI@CK)1a0RzDB4&3(9z=1)BdpIm1Dh|Xj7URGKsv55a|I;<#d3i za;K6^R5Q34StXXa>2Z$mIlVL}dP?p;)aEKby5DS&u4EX4g*O^A<iHuJ#%CQs#PM5i zm+UNA>COw*6x(d7KA1bU2b?#U>$|Fx5jj~1!TY8xIHnzVL2*>%GlmdF`h8{-cfXQ( z_|R#gH~g`|qL>Mt?zb*2^fy#0p{-<R;ty{A^N_Kutn(XwjD|q%ngfL#^aFa>P8K4C zZufWW&dL{}uBZTEv^mCOb$)OTa@l8eHRZrgjEJB1tFpp}a*dhGsUX7qYL?wFMV72| zzCk$qDt`>Ib?Ky2YdBT&6g7dZDXTMPESFqHEaZIicQuHCv91f<Y8%n_3CgUxaQ0)j zkjz&`=Q^(_^)901tFA={`JS*W`+CqMV>={HG38Vl9#dZ0U_|Q(g4y_?Jf<)_C$uGC zt#bY*pWXeaiJ}w!bAIyOADgfm71#}4zZKv?gkfpES4O>TO=t@mS+Db{%AlGWOKbcM z@<59j0K3nduh1~#ua_=2QP4(L(#GZZ@FThI_xO(<Kc>6Wy&SyUt<8C9qH4E3p<J_U zZ)ls;MU6=l^+}G&WX{(IQ2Q!1F3!sY1?-zdX1Ug@6b#Ie&iE*$st?bVpZ>XjLk6#> zJL6wJSGuxW{3R89n-1RoBEc~U&eOq5b#Ol&Tr0s3OYokriar*3Oc<%p;_$>oQEz>U z439u|+)3~H356FLuT&IXIPwBd*OC1_Y@5$zdKgoe(wV&H1aIPRS0j3L7Q_CU2e)5l z`0yhW{pOUz_t2k)T|-279)p)cu9K<E{q0odQzI|?m(=r9<2%_u;Wu$@^1OsB$c&xP zgjdL@T2jpTt4vG1>ZLOZ_LfZc4b+*$`BkR^849f^6@yIO!(P#7)z6YN3v`;=#Bww- z%$ev!bfuL@0sW-f=SrE$WwnCMSi_P>_-?M+Vis)*2oW7<GNVl#4H<K5eYtg&)^cC? zV~F}_z7gp!T32;(=2^6|0xS%GqCtf@)*g;GSo`&Mb8SpG4xi12I??W-OY@jT>noVl z-F?=ZRn}S<(5l_xPv9h<cq^?Iq@+-8r3kWJ(_JA=8T@zE{93nj*(*zah+{srGYOqZ zxACF1!dfp4IM5V0kIL8jj3<})rW}!N75<Z{sWC$qH~B=*<AID%^1_&EDc#y6rAMD4 zQYEuHD*D|D>jUwR|L`+#+9_(r$^3s!GIjPMa43E&m3;9(btRqKRIF;!ddyYZttQT1 zQnkQG5w#fV7OZM9hfi)T(miQJ-yx2YXq{)%`AIpZDrboLRp1Ty9BZEu{Us?Xau0~C z8M&O^P-0LK55kEKETK9m(UHE!K)_Rss2u*w*J@8W{e;}KKfG(QbC|+L&Vv3>AMsdW z9jM4{NWA3Ii+qo+;d|m^Ew?bF5D!NR3}mHM@3&UUSXu`dO@5v4sH&GkEcM>BB0>{M z1>1<6_<vgT(v&JHSIzI?DLf!^5yC+h(v$OjRiAdo*NASU_hqx9slho(l@%caMo;=f zY3DWRL2FPRb%gGuf}AH%LnG2eT;KkMUYG3Zc-56lS60U4Y^m#671r%8oyR{%2-l=7 z9T4NYs`Obx+h_ajYv=(=`4ic(G*nSfr+`24k2bsXBK2W$lz%0y{<_^?DcSFPmAk4v z?o4p@h@30q$~aIK6ID&2W7`p_m1aauhEh@P)jWKu2J|IUnUAUw$2LG!-nm~@A=#hQ zLv-IKs0X!3Op8yQiq<zJfB3CNVZoIpD+Oi)q;kh72sGoUDN;Cu4+u0dUrxzV7Ae^+ z8qrx`qyn)~<pEAs3xut(00#=um+X$e-Jo_8>de)otMjD#z$A%iL@F<kZi*DDa}B!8 zZ(ql9G<sAbdnCsJTUdH-WV1QkyT9UQZ-Hs83T>}Ggy{Tj>QH@1Hp;S-fGhOm1M9n1 zJD(32t8`tcL~*pX`-Ae*qoFg180;a@`*mjr9{L23S-FV2!|a>XuHt5d$C<CNWzCx1 z@B2n%8#BJ&{YE568%@x=IWQjC7LGJ_(+#>qGFbbIg+!aONct^9tc5PB4;TAmH;&fl zAXU+ozIoJ>x@VCuVbtexj#&K-4GdXp@P=7RJMfU)+Aw#br@Zul5tUnqmBK7>D*4Ib zSVigW{n-+(=*;v%aJ{NBvN80DDKegSH=TC}vfcw;G7tSH{4lXojWhD`?S;~-9h{{y zQB(4Z`YwG+)j8xN{7;0dBX4PIz$$jSQnifu!9s7i-+zubBCpU#G$~-+RhaL#E80^? zPXG+bbt}ABWQn2D*x+7kll>#q1$6s3J|2$sn_pqy@oQi8;p}mpeBpz6!QlX}E-No> zHlnA|I(Mfb?Up0%>q_rBhjt%CnEsYA_pWnb{o6txOS(``voB?a&J)c*PqLoS-$Tx9 zXb$HZ(`JJUOx54o0Vnb|0NiYCbt_{`y;&%Ue2hqMo@kR1eOCrPx-@uFpfAlcrme&A zX~}+AcDeDy67#?&Dtf7}G^@~v{*5)ZMtU!C3ivH#EMMuMEb93)zB9gqvOSTNjE_JB zqzu2^FN+$Ui{8nI_8?cbra~ftqOFO-S<+2CSg{fRw)l)E>dm4ShL`P9GpD(-vpl=d zzP4$g-TS<Lxnoz7Pkk)wk#PLZe%WIeu@5k&_k|Ks0*{uWpk*VvfvWWzZA4c}8;#ck zg={yOO>%(<yU^ey+t<{OPC^7wUEl}H1_I#?ny=QUQs|Zam=QheeEntmsXX{zy@>c# zMTea?i70fbhcmqUPKGzzm{y~Bd^zLRz#i&jf`>tUBfZupXKE(>sTy_Ab(q>$<yB42 zbjl|{;>Q;IswWh-qPX~6ecM9+#=Ts>Q;gcBdVFhfaJRo~tud|mYc$$g!{H{0Sdob= zoe`0x)Qml$I1R$}c%M6!BiSOhFe02fl}gO$KDwiVO;?^Q+`s<wNicN2o+=AlE`L(< zrKDET$rH64qnEQv*BQ}1Oaq1SsfrC5C4d4LrL{b9p<Z{rd;QEz!AGDhH=eBHh~Vmi zMj#&NP-P;kA!WaPn>R1GTSlMrR`5cQS69>0HJAN#k_UYYvULXV$DLoAYM0Zc{q8oR zOZZKXarEruE1R7Og>ElTdq%!0VizW7)-05%(Aqj#kSWuCeI8wB-_bu{tuyDp{g(a* zdk{bwlI8~r)M95nW_oM=MfCv|+5%yR!pb>XyL?vIDMtGOu0M(A&#D%drBnu>QK+0z zVSmS+m@hGti9Kmq1pPohB@5vjks8RLBF3ycPR2H(Aox72;(2HkB6E9a!M*xgEprF? zRp0?pt%2Aa%Q>eEv1~(4(5;NMQ_io_PgqBtw-{I<?Z{84Ju|gR{!H{HIx9ZA*jrlV z2^|p4(}m@w6TP7wH4u#_Vd!yXo|g{FZVjzTP4OMNQ{`d<ay6|z#`K5I<=O2Xjoc-N zYSX)r{h0AcBj>`JVHGv{i%6mS5un4BruSW)+aoZMR1P#`x@h<~!404qDO+e7H#C_= zO@1%FVC$0UYh-E$ia<Ej88av6lRkWKmGS7$&(iZZDz}HI+3`Io-}d$5G`p8E?K`}o zhC~w;hcp#KGhcu1&-$O>r|j<3oVCBnJn-@B3Ua$*yM4_W*0TQcV%)IA+eigxtd}<1 zj~341qY34d@+<IW(XKF00)@jRR0u|1hRDl{?n@5VHXLMESj`nhErFt=ODYQQg+TV8 z4KQwK6xc}F@<||~mP>$_Xq6=Z!tN`)QKDNP1+b6#(@7qy9(klf4Smrnt(p?y#1vtq zz_cTUqUw+raJGvQJ+&MJPdOqLRH}|6@$5JDwN`pjQY^_AO4|hV&li0^xI-PD+TE^z zK~$6^IDiY-<B?rD0S&Ip3C@?}XMsp_EEllQV70~{oh<AalnlrK`@SA53yn}P%w0f9 zRUAD?r4mo1_={Rhoi#0r<y275vH&8JE&54k4SzIM42LPRjKON}2H$2xE(Nab)Ma@* zKt#+Njk#s^Ev?muCK}Uz2>AqJH=4d`t~HC^04TX+DRQ1u$&;pIyIav;(74)tZhD4| zInkvH;;+3X2k7WAKq5$s#CdA47lti`D3-b%ctNGOKvD=OlBEeox;Z{grScmUT)K8{ z1<4dQ9sGOYrp)U_6sq<`d~jY-HQ+p51}-f@I2$QZ=AYf|C%Tlyb2936fm<)}GcHR* z$DXQAlIzF60|6gt7J5(3`u`xBY2`Zu_|@ZVZFV~F!ZB!J2iAEd7J+8RhR2Bhm>B{G zMoZ2EMr;a|>s&^KSiUL&*O;SV)IKkep@pHZ>-<1{i+oeb=EMyN?ns=L*2lQvgOOa3 ze*olTz);CHdV8@?6k^jFWg)VAEdK3Do~jWmuZeYkOb&aNQvtEcl36m37J1%~El1Ic zqP3jW_*Z=Ze+jTSJj+L8x|lO5khtRFX3?HN(fWY>9WdgeiZ<Ug>kf7ZlpQo4877YH zw~G<Q0DI8<&rR<dy)5Z+&`m=?=(|dG24KED6Xyw^v~M^P-krs2pj5mjMdz+k%;Tp- zrr~+C``gkZD?*(EUXk5%jMrBL>>*y7NDIey5!oiz{m0?$w@7K>)((_E`PuTw&UuR1 zjLKC-sODFhs}lAN{r$NcD1!o$%_HOBW!2-ojLLo8DKT8zp~|}{ae7jo6M0Jn0XA<0 z2g;g5J2}x(_)U9(>L6du)pS$*aXjQX*X)z^aqd-W!`+RJRT6d&2tuhR5_!lMOOW3t z^k$+S{Y*vfceyA6k*{}wxBA$*9CDCt7<(N#RzkHcy6hzHb-qP#$x`Q|y<niQ1CWEF z0!)B}K>PnjFH<G_I)j+8Nm=2|#Ko!kZ+bU~ydYc_K|y*9nL*@*-DE5YSV6lMvN>j< z4Ij)Mw*wKkIJne#i(ugmYN6*aizX@YZ7{nBCBF5OiJ^{8A(L~}S}zw>)fCV<EEWO# z?5K=KRdizwKc0YLt~*W!kbw4O0Ox>IFJ_Leh;{!7)P0L{5!-0JoOfcGHfz=ibs}W| zg*B#i6S3DGc2VMKwg5?)aq4hJ$CR!OSS&NUWItaZY-Q9eGSGXl$PgL^=0djb1x948 zWX&Vo$LsW$pm|b9{#7#xgz%jXQjeMqx^&&{gS2~~efDcl63;n}io<WJVAp-gNZ`Uy z572Fv6(iD7x=#Q>)^6W_h?2Wh_OPR*%+Uf3%|})n6u&Yq9HpWVKJnV~i)1GyY`s`e zYi9Vft3}1pLp~yj&Y?`<Po;tbPg0E$Nw7uXO9#xfWL|L!WyTihg$gzxXovv6vQ8Q^ zKR<;xjxDEdhvKPbu@KpB=!qKI<++4{1NQF}>05Qde6=5Tb;+B@rt_(w62(c$B4B-n zzLCQ@U%2+7su8t;+|TqB8qIWhvaX^_pzz*+<*+jN!dty@vF~>FW1_)2CcJ`CVij}V zWYww=s+WzUD0U+EGbBR#1Gy&5xsw+bNG6SvTmnswkG@wRa>*Ly-O+e|YN$?klYM0Y zWj-3eP(F(oHxJoWY(G>t+TWHQd`n9Yx@(;|62W>}H9wOJz!ZSCl`M_N9O`}*br-=y zXY+*W*nsVdUwXJJ1e0EYumTm167+svk^p$_8Lv<dnI2W;fbk!4D|<yV_O!}T={k%V z{TQ{RxDl{>J;FNXTfjGnLtB^nt$MvwN$>ebEHb0abEy)iDmi8e5?8mkSz?n^BG6(H zWH4?VM(q(e%(7LJCnIPoTe5&ax0$oIW0!dPI2mZ3q$;ImM_n(GLFl{L$tvitp{}MZ z3M?m5bftG2XgjXZS{e*U<qDLDPfgwWMFkt_Msh@(B~t-;r-|ZemoEONiq0rm)xnuS zv_N0QGFJgH5^(}y@?A=!J)nunKxvQSGhY^Hp}fk}0#D!Sv)=dBebkA06<MvuIoy1; zuV^t^*lJQ&Ao~>?Gk?)dwysC=jTv%-gwL*uTa9%sox)qMHb*oEVo&T-^Cmi$d84?v zyK?G<AsKFl7br3iF-cAO1%-+c8qq7<*IG&>bfWv(s9*1LUz_yn_3rCB{d&3kx<$VR z-PgE&z0G}X=GA*f?SZCnZ7v&FjgJ`D)toJGud-&J@pPTf4z*^|a{y@9i2d=`AVcRq zmbTP-m}2pY(Y8nl?QTHowuA0v6LPJ@u)Dr2HFEC%RHkUF^LKJYxE#%*EBhwVt#CTF zi?VL#U1kQmGpCpjibiD2KrJ$^f!OnlM7$Pmh;g;dANPxhyqxRVz3bxnV>sz%r*I_; zV{)FGsAACxszH{j2+_~s*I%~CnDJY-RG4y5O0mBP!w|scA9UiFEz&m+WTxVJ(0Y)Q zEWPAg>lN1%&avZ%x&tJy3TrRvyx8JKYk{%N_y!fVN4Ihi403VAa`tSo1ui#Put?EN zM0mM9=4imX#~iUlMNk2zr6aN|ldnDI$cb~1BTReD=O@nL1r_1&iF0^VML2Y#9D)zn zV-B7ub?`szF)b%d*~cDp;Djmj?Q8Z+%GuD5+h~{9%0RPU`iz|@DzUilZ~IzVos08* zvIGujh-_15$pj9Jy|hjG5jyB;%sidpmMBMMXHX2Ex-VcQs;rL)t&s0WcrfMRa~^J# zhr>J!k%vP(jFyLkJOt&Tg@^I-aDayi@~|I@sirU?J=hsbEbOaiINpWt5xxs67J*qP zYdXJLe#e}_-+<vc%GV(-ze8(~Y_Kem2R>z+h;qra;{F3{H&@8IKRm%AcWwo_mBr2Q zdQQvYfwDd0x`s|O%QO)`n5(oq-c1j_Cx`ifo`oM;Ta|W4JTH6@^>_x9MRrIB1q+lg zp_W)g-vjZ=`^j1syrodMWTfgwzx6~8P@@rT9caCz5*stV0+pI0WYarhEgW8l*P7O& zYC3Uusx%un7)Ukxlc?}@G$XP>1=8c~rF_jzN#7iwa*mr4N$B`8!*0sp@hOA%NM*+# zpDOrmspW)rQk0q_^ys#e=xlSu6MBSWPv}L$dO~%9>|fY;%29)Kvi##LioOy%vY1}& z@fX4l%x}Dgb@5)-3os{*^U8_o!-@q;k;T$iwAL4HWqElR3bt>}uR=E|R%M3}F;{^p z(i<^OfH;9PrpvNlHDcR<@PcisR3mz^Fp&YR;e+gf#cIYJv4_=0tx8mAJYVbqM^)&3 z$A#XiLXW7>fyagRQ=y-$(Bk7lzp6qHtI$)A3l%F$d%z(Tx=(hYZEE!aU+e(~Rp^@I zLKmsf78NR5v9@Xdph6F*(4QX{I-M`!?Ono$T7%uCzr&i9dgjR_G%8jcSg99g6V~jr zR>-2~D_ZBPbIw&_Xp+Z^lnM$<#L=3~EKJ{HB}9&Apw|2BZ<SBHIbdla*oUhaHF~F@ zK4It(i|%9ik_6yXATeg{*W=|vFv2P1Uy=r#Rmv#BGhbF4YehxTLGq0*MRvI_I7ei4 zVJWFqXY9S~+spZK3E{Hxt%{quI#cHXn#rQ5NK*FrN*h)7nGrsRJ%C95oPF@5<nxkN zm5V~IwO~C{2`u@0YQZzDcd^*1Kn3f{`bJdD>C?(?%pu0K>YhxA@NQpfNuCZ=z4!1Y zdanq-sQz%gJm8YNSn5P;1MVaVZVMQ%H8Lao;XPMZjaX4x^iBn^fTAYp*klr8#*ffS zh3nC(Ve<MeItaj#Zsnx?<Sd=)+)4XoPq3tydkXJoHz6O+c-;L^$_Lpf6dg*OCtJwS zsqAs-MbVxYwL}ESdF*M(*W?J}b4Vbu++F<LEzgecyCV^>;xb*+<FJBpx0X4!><?kA zvguT5SU6<oNr9NT#&=9nG6;6+B9j)#z7wIEI7Z}GoKTr%s1f0zACgJgVq@A9d^5r` zB*fa~dllx*x>M=pya+KpycHv%Z)1CRD9>+PvkGf9QK6S@Fs7+ngGHcuG>7zahkEp( zr12DhRc;iVi%Lk27CGzmie|eDd15oO5^^~RzPCyTbw~zbdZ&W0krGfLsX8WuPztG_ zEF&U|20>ZLplmk?>v1`3At*Z;)X5D3VYXEVbxH<dXQ?vmtPfjArF8F7L(otvD94CA zr&Hxfs@!o@0+<xq3nJwjkr_HLw{4*0&?Oim!!B(DP9or>;OzvQ)Ha|i0bPUF64146 zKsN%q1urI`TiXDJqw?g?DFmD>0a7HRL#2zBvxVJhdXMsh;&3;1v7hp@&0m+u8d+gH z(BsKj?8`tqZj`rfKjlpxvVSF?IjKbThJ5gVzd2C0aiq`qd>Mb%;p!;(4i6g}391`u zjCyCJF}#8275u+$r1AYFBaJ)P@c$;BmrH&dM;hOKkB58SBiU+I7V+*`#3#P1PsZwc zQg7hvY86?%uWr&M-18RS7GWN_kpC%lwPQRol<7z4;*rLK>o8MU9Utj8ChhWjk#F{z z;SZX{iluCC@N{6I_P041@8S=yp-mvi${NOPufj*ce&+%4qRhl(gD=_&;lJ|lT(#x6 z0un}>^m3SCb>^{=kW)4HBqzE*g}OS4lrrn<i?mkk6@H!HY=K3~3EmJECm$MerFBel zkqR(})~>ok=lY8_)onlXdb{5~1iv1h@RqBKaO(9HBXX})N2INJqAz7XT2vR`em75- zJYP6RzC?FU>YB;kg(Lb$p#0F<0a1P5vmSnU1{KlUFy}>ed4Q7O;1bBaACVCoSK$tu z{(wol@C9eB?7^bzvbBf{;%OTaXwONPiTEt~DZBe(`o$x=XiT|HTioX^F^kriMObu$ z{d*_gfxI$BmG%T_XMs|YJ+HQ=e(Mk_4WC*e{GwF(EOckU%R(Y6ifsPPq9dqu{9b$! zyekHfGDd>L6|p3_{Q1;r(R@OZF_Q93ve%v6G%c;46#MLEmIuw{P0Vc%d?fn%vhCwK zhkCGR1oQk19E{owZ(xpm_TV;Amlju9OW3=aXS|EXG*kkDK3M~e;^JIaEk3eDq}E)4 zM7igjsa;;OTA{04F~MD<kP%qXoNHtpkoyFEiz4U{usFBnSkVWpCI#kgyF@G<ae^fx z@k`{wcUkE~G(_=Uw8~l$C|VajjPBQ!9%sBOQq&LgbzLf~r2%Vu(H>t>GlHR1=dYrU zf*|vquZv$;j=>5zebeVGa;nO+$9a_?h$J;hmZm0&NRBc|Iy|Z;$^ICVWa9ghr`{er z?<q~zONzQh_nS4ph%Dp3ze5l49A2tRi%k1QPAMujI9pjFlRc;=3WWJSap?1;7Dnbk zr{C>U^Kfc~h;P)bAbn2Ay{$;qJB=B2R1Q6n($yGI(H@&4SRHH7?c#@n14FVbb&9r8 z;)pstsUcr@%~iWa>oD_Ysz|+Ccc!36kXF8Qfhz#~;yqeuS89c}QMts)M<M_Z*+tfB z=|f8P%tzNF=Zd-y$8FVltp2f^$1UW6s=w0XT!(-o+b4Yx{1s-l90VKkTci)z@x-<r zGYgba&Kan3VRrM&rGm3@;^6KD+4g}~%xy`DF>gU=ZF(@i;x}{}$H_DPh^Xj1#UFKu z>Re3oFabGVv?YqlVK=G6Ugrv=(&SVSV~v+l!PLM;z${Wi4Gaz6T=GQ!auv8dF#sNC zwUlpnd&^?QvHNVM*+6qAM>#7SM0orOFvm5BApqJX31^NT=NU<2#VOtSDr%f~^>9qT z>~5CM;%S}5r_;$|7!`<rn=FXVY2gkOyF?tWBR;4jo;j6>v#3?Pr$n^7`E>9g9enRJ zf-k4~@mwAJH67eX2Ukcj1ErYldylqa+=})TEt7lZwq_%vfnwQx=Rl=tgQ~*&B%`^_ zDzE;BB4n~wGWk830BuW+&fCH#?QVb3(d%^d=~Cm%q)KCnPVh_}{2LuSTyi@s4Z20D z1kVas&uf`=4&6okJ9PXpI{sr4|IhSn{34xQxemTb2me{d;zh|WM+cv$gL~`Xj*@zS zRL0q(D$_v+_t3$=lhg|&^)d-|`HiztXxZ+zhR&rM9F?TMN8&y!aet+=dPN5>)4{(D z6FfwEX|fKUt%IM_!KX?^rc3JKI`|<S{HP9oQ&N9lf_*ypRvr8U9sFGheo!+1nhx%( zg9qy1ol><sq?H|Y@Yy=}>lvw6OBZg#l8A;KVTfp0o(|qEnLjOMFD5v-p>uk1xR%m) zS}P#XE7m5@cawPX|Nq!i{CtEQHvcpB6j%KV_7sC;9R4@jQ~XFM=nL#AF8S^;-Tm*i zr?~3N*i*a$T|?y;GdW<|^Cm;(%AR8LPBjT;>)?}g@XsY!*;CZ&;D>bZ4(2VXM@#U- zEQs-E2>#dXDY(5Gdy4g}6`A%FGJRcpiYbRXuv{sVinm1{VlO7{@hGhbZZ|x8S<z3X zj(ahwI7*epq@rAq<B~;&Nri{(jTvuI^l=#l5f$>X|At~jGI@qyS;y19^Ni?kNPLV* zh1SbT!qGZmZDMI!zoYCcY*>oeS6rHwFDaWBQ1oJ7AvOFG_7#2DdXp17ApnzKWM47v zRymFvgap!1=T+<dm$t7cO!td4>E%aMUu4)<NPhpAeMK3AbBuk(H~EyZuXunWzrem? zz-UB?AabqJf4lY-A0U~jcd2BaTS;f2id7Ab9B*IIS7>d<58Q%9?GbsAPwm)OY$lFE z`DfZ!NIB0=k<J*B{UX0@>?>X%#R=^zOk@7XeZ;)Ncm!;g5TtaW5zS@z%^Inz$CHO( zi=l-!wm>{(l$`{PaqTTO@#xxH{4UepLg1HQ(%!<ax~5!d3(_VG+9E*PTU;}Q%BAa* zTdArFy(g_M-lp2lP04(c^qaP;F{1U1inhCuCOV(WtAG(~n&^_^v33gos=dXdw<JmZ zi|j2JgDriGNBUDCCyzhz&|h5oIo95yx7b_sroKsgi>)$PZS5_jamTjfpSHJn^Je<y zi|s9jsVYQ-P}m8j?Je4?hqkvkeef6CTMS`X+t^!}e8{x7=nc;NhwL1a<`!rx(Ok$5 zD@V*NhCP)sw<u8h2H`f?TqxzFn7PTWX}r`oWozNu!-{hHzqGdy%?0zbr%YDaQi(lf zN0hz)s=dXzQ&aX9izq|vEe6p@Gu*F`gONCeqI9d3-I4T1hPg%0^N2NNk#t)dbBpp5 z+FJ<J87(r^Z^zzZImm#Ny~T&Tv}<qiH?~v%K6?wn^kmvwWEDzVljasFeG34^l)c4I zX@hHTk$0@UMc%(^Z}BNoc>DGi>j`Ps-Xc%iTNFS*ZR{-`<oF^fpM$6Ra`qN4%fKh? zE$}x!<#c91yY?2(z>V9px3Kum_-5E!6lg?ThP_2CFsXm9y~SCOVjFvlWelv?TP)-^ zjm3|w=JgBgEq+S#6<{wfX>W0Nf&Mc6b{>4M_94C4Tl|)YqHp_m*jt>Y@~Vaq>6Eti z7W>q<Ehn(I7y?#2!``BS$O;ttIuCM^Jzk70`ssNbIY`aTSXN=u)I#iS#nd84*6^%{ zT~mwGWrga-A1%MNV`p(D<S%v>dH;}|#oK36)f3uT<Y_w#YMh!siuVK%2AqNX(RgcF z@WsAD3@X!O8of06+Qz=(Z}L^ySG+AXuK6kN{L}Uo8_uDt>|e`i&av=HWr5W$yfR<J z-touUSCokCX=hcR*uLU-%-ocH#m$tgmG(kwVqcL|II@N%HI7l7U5V~EM^NuS1R5k` zRD7xyzzg_2*1m#a6_~;hQIMcjyOCcd2jW-Wd5_Ul_7yS6f|>d6v9I_5?vk{x_}f`L zOWz!CT+vyY%eh_w2l~pmLSkiFR>--#PD=x(|AwJDky!;PYh?N*Z7Mi&VD&k;fN?b* zJwIPh(`Z6*XRJw<Lvf}(r9#NQzx*|(y~-zTTT#K&e`Q<In`O-u+lni&t&o?LZN=Ll zxa9!6TIQJ@lomZ&I7?nw-;4S6;A32V<N}r9GFfgE83AALjmOwk+yP;<YgchchFyi3 zva47;&b6y3l`hN6w5uo=tW8hTjuehYewUXou&a2%Zev%m9K}(FT}A&*<BzwiXh_>t z^i11T^d2Z|H`A`-uTZW?Gikeuo{1-B2~sW3*^dHK^A)kD$T#do!fnL4te&W1?3Zaz z5jaTj0(ySdG4>SqLo{i73W2w3dy2bw(s&@d+xiL0I-=ufHs(YZ)*Ao8quQS0JP@ye zn0PYIFsFD{Cs^|U3FwfNIYp^T<WHMZD2}-y=$cb(qfD8eEBN57RTU^t+f%p_f^%5o zo6)WLbTJ_*CRwj{W4c}z$usOJB-`(jtr3|mv@XnBX89Omi8;kRs<3LR>cO7kYrHAg zd4@d&rXNQ1w@eLXPcfB;ls&~j0sa2B*;CXC4ca~WAcJJsQ<QQhA<Fvk^ZHQdH)KC? zoH508J{r@rge%Nb3|qkJCpM;-PMg{@rl1fbBBnSgONxTTMQQ!R3GFGSl7w#g@3g0o z7G~H}JfFwwiR~$Dg1NsYX-~lsrUtp_qb_Yvac8DI#RlN$%ATSR1ksK?#aH>vDsYTF z#eYB!azH3XHJSDlFkR;!!qEM9=17FYfgC}U?}Gaab-wgNy(ayRU*~&FS6So5@bXRV z@92bf6b7t7;-0{cVh2TPsS$%oE)Jp2N-Voju&QDbx<w{L3S_J7DBk8%jU2juNjnNU zmOR?CrObCumFi{MQGA{4v0k?0f?uv#=1LRltbI3K9<YBUi&NrfnWhv`*OVeJZA!tR z<>vS~axSR0SCNNk8vcC+(E@@cs(`}%5Yjq3cSy)QsU-iZlZF(Xq#`w(<;Xv6NFk2# z#E?Rcd7NJK+(`V{Dm#ii*N&oGPIXKpvif8xH^YuXfoO)yUKR8p2k1;rGk$d&JBn&| zIcZ}@(N$Je>?o?Knk+@d+KvKhVc}&3)<zVU$YgSjDAcM1&Pu#wixI^vQldDgLduBZ zm-K4v(n6svAAL|G4B`?T8i8Dr`EslY#nYAPTq=Ywiu93bKGB6^Uu{0Yj7ghM+>v2E zF+|KKF5Dvrj$7oEtEXB)oox)gm`{MpaLp%XG7v)So9~CnAK|5~`NVhVaRpsUnNJ+8 zkY0iLCc8+RPkbVug@G?*^gvJ+R?{+|NXmRd`a{nA<(szs$9zJXt`wH;q)!4Q;!lhD z#67P0gd{QTCsdaPY&yanV%K(Jh{ztJ#C9TI+fFD<RbG4uhtN_B&5zQy6OvsZ*1gb} zQ7ohEN)#G~5wI`tv2aydZy#el0pGv@<A}w|cw#m=-~kCmtFoS$$r3DmJKoPoiN=KM zSnlAM$u*sLNSRJ><5$XZqG$X)HNLkC&Q_vhIU%*8^Mq8#tFrZ{wAqA2P`09rl-a~} zvRno%xvLJN301G?D5i`X#krAZPF@IZO505IjE_(SQ>NHV^h`uk1``+Q0c~qAf&QmE z_m4%iy#$Umx^w?nTXP9Dt|@Z~4>O{|y0p-kIh742))IY;8FS^yu6pwrYY8<$qJ!0p z#pVstkb%-{U#ul`#tYP_qo%o6I3t~tr^VV4O$sa&o>14~3GPW-Gjvh540|(d8B!~X zYs=u{-gn2~lw6$?q*$zCbd9PIp|JVXMgA!(>ZB3FnZg>AMhu<cePYBgjI6W~!(Q2) zV8nn-av$gX&Ii0}BZfR@Be7%>7pR$3W#3nL6xjL>%{881B)=k6D$|7qH5Bn7KCxd& zPO(X(j1*Q=C55tRh%Ay0l7Gor<u6-p%xFQx6!a+rj}<3J)pc8x3B#?x7+zIO=j=jl z!63b@kfhdnv0%8E(voFWSS=*;W)((P;!I%1QDWksM(jCzUxiHsxS|2gTtT6b`Cza< zgQK+i%a;0#U)A}`RvEus=*wBbO@|a2ZsFRAAMzmFH?P9Rb){F`Sb+i<##wm=?tvC| zs4QDHZe(<2@O1x(Izd9Hp|>K61S+gXuuBIva9`fLs<o1lb#%q9fOkcem(N|h_`NGj zmg2F_XFQN~3f8D{N5!dF8|9Vl8MECw6#n37QB&EW;8jw*e*^|CjR0a-OCi{LbEsij zFTEvi!TfL>pZ$llErMGK6;BO_*ly<#4O@hltFcAsSJ+1k0+cC&jGz1)7<+V^B!nAa zif}ImCE89vm?cO3!%Zsz7w7&f;TOe{96y0w6=qAo>ab`orqs}_8*{`Oo*M)}hY-13 z7?omWR1h9x%EwVD{g>DmXy-0BDl${v*ONU7j#SwfG$ic{K0!W9bW?b$W9$mVR6rUa zb_Mv8NZJ*^>4j(D-BM6SVmk2S!OE^cwKio}fGxVRE7;ke5to(V=M23vG!@b(3uRXz z`A1h`SD+G4;)=mRVipjjjr5Zlzhm;g));FZ_-KhL|Hv!a$S*>Y60nWPcHY2EHJI=o zMii;8Xt~0u37{V7xTqoA3iBzY0`{$am<bw|3&KG<QKRU`_Z6UAc)=o7OsJO{&Pof^ zzN~GtadsfyQt-sUDi5eAJfR`S6Y7k^0}QiwrUB%xz^XvxIT;}GJH!l3)@c_&-T(m0 zd6JcF<Sh1P;nw{EAg>HqIz8))kQA#Dt0&BPxN4~LAIvTB_p+;8`a|k2|5Ov5PQ=vv zO|{{;q-!CWD75(S;NPVYqtpbK>3uyTqPpi2JR=BS&=6(GFEL$k;?f0z6IUEbaN@RT z2$`csG|ZC-A??A$?^H~s4NP3})SgsiVA0XFgAu=j5b3J681X-Vu5yARohbm5@L?Aq z&SP-<iP7PVFEKRt3)lBK1{y9Ea-re!=-fk>ioEkmYZp23t#xLASdtH~->szmT4y33 zTxj@(dcPh1^7!xoa@Vo=@VEN51O8K$S*K(r=q(KlFBV{UPZ1>Y<Ew6h%*z(J!0>z# zqnShS4kL1(z`y&VCNUx<tZ51uKACSu_#p}TM}XnIb4Vb-@GYXM{eQr4P~-ozf#DOr zi^!P*hEL*60mGy6`F{&Ayx6|^1i<juVG(+>S|vNMnpWlz|1>cCs3_<FhIb^$iL-@Z zVF3}LoUCU6!v~{*kvTvAuwnw)f9BU|!N9`BV~<9HQy6jaZP^ARF4OkEz=-$8W>jiM z(RuSk4Wu#RORnSzjCi$tNn*q$JNYLZ@feKwQ}4kK?-HXA$w(M_8(?_P_~P*z7~a$A z#6Hi6-kmL?HZn;P7=Eb+hUcM@ZUYS0pl}f3MJu>f(wh@cjMK32<bo@(@MDD<r&#R- zpI6pu?ZCosRj}|q(w4IePlO8p4Z$LzjQ7>Btay^w+u(XlBgaLWl`cu{jGfbI*(`8t z{{$ZVY%W92fP-JG;NY@QL?4r)T`ahiCc@Ns=Sql3uct{-Ia!NPU%fHWHP;yMiO^P3 z{yHHJ{5G;|ivzDi3Rf#}rm2wBA@TGHaNxj5)asUi673)M(KR_91TMR7mWLFrr}5nZ z_PIjq9}m;otTp^PU0G~JpPvuQ_sr*{O<fMlkH^_3h8IF|jww&}ONG^Z&cJ;Sy<7%S zZ$~n5-(@U)Qqa&AcV+z}@aJS7Y9h`6g6kzt^wvj0E)ZNF;<3gZbF#6O7AQ3My*#AR z;Lpk12(IG0g8C)F;Kfdm<?vWA_~Z##Q!C1H{s2X_!F}Juat}^Ru4hv{!t&{vKaxLm zPaZ!W=L6v7C>4QuzeBf46CWGu$_k4%ld6aT0^a==kWn+{s<9`_#O1JR9KXk6y=9uY zSnq~Zy-rrTnoUl?H3gAb`@R$(e?RDAzSjbWbC&QY6XGqT`vW-yW5~t}xcjTPlo5dy zmclK^UU)#=Cv4ifE|$zp%p=%?*^hQrgpXGoF5t4Vu*%tvr-v1xX6IxSp`cy=sMIgr zesVi&irr_M`sv^IHq`nGxBaul0vJ{>Z#j;O|Lk%F^Zu@m{<4lf_!goor1(7&-R^d+ z4t`1pKOn&hGkm=cF4V!}bnw($30COsOLcIz4j!U|zbmN~F1s7SE-qUd<=jpO2!5H$ zQuQJoy?F@H6)t<zB2|}HbZ{3P+;}s=3YYzc4xX)p6Y8h`!;)GdrRV72hjj2;I(Ubq zRw(T$1Sf&!oQ??nIPY(QAmu1jzoTqk`@X7SZ=K0Boyld=Acb}BCz+g$e&=~jvcDA7 zg5ptg#K6Puc9^cAX#;h_yCtE5W_Q$;drt>{T?d~m!3yBKtzHcpqdQx8x!vvWI$|ds zu}oT_fYPrL(dtJ9+&Ob6G(q%;j=om?^dBpIqF~pLO1^ftyLE7l4t__9RoMI==-}&g z@XvH`vlOO~>jQQ0MLPIl9qb=WutKhXT?gmr;M;WYLJ3xQ@;n{vd`I<2KOOud308RW zJ@7@UwoC_~qk~VCV1*}NNih2>h3{UnA<6&07~j2u-Tpt~FaLDd)EE29e;O+J*Zk$r zXIc5L@!i{m0m#PO&$^_1vrjoBw%^9gP1Lci%lu-ZB-gk0{pPQc+(wAs{QIPLGjZM@ z5%iDv%@+$&<u`w|?1z$m^Up|@-^PEwARpTCpDzw4)A7HQ|9p%E*f%Bp=YOa&sHW!9 zs<!^~W03lBc<;05A=d!7FH&Bc?*BL7y&I`d#uyy~`TjGZX&3t9rW-0>1YN@xdNK0= zZ7=yYRIVW3JKj)};P*OM_yNIxlwbw<ep?4m)xo=&m;_Ih;D;HP_+JPXZE5;^F*!eu z^QRALI+k@oPw7I~Renh={`5~b@TY%z+Mj-BrjIdIPJR^r`(Eu&e~rl5ZzzBIfVY83 zPrMV*?7}w~RQvamU&<5y#$NAJ!xWaJkt(i3rAKiY*u9Y=e}@<KYy;c_Poc7=oE%*3 z|C(1%IhC1lm(1vl0-oR9C0Ri5w;OxC!0V=^iC-WbMyLuE7ll+IHJ0U8P&`RoPZA%i z@ZB`x3-H}<`@$cgR61I2L_U(@6~6l<8YA2P9MQbDb)P@`Qn-j{;6Zmw&Y(wK@A)~_ zJJ=lhxYJ-&+!y}P8^*yr5<XWG;yqtZGs$#guV-a+^?l`cHFWqItytIi{yMy+OKyVg zR#vdw4cM@d2DPH=!wuhom4WkC0<*%nA9qNtqTko|f8Yg)9OM%{X+%z=2zf!{$?cIe zN1)wcfWt(>6M1No>o))I*RUMk2(fB8n}HxlrwbpHo@HY%;mn(sI=$4F3_Q16^oNwg zJ<@Jzs^}Xj%`H0Bb4GL;Q8b)ed<3tL)BZu^T=)Ju=ZER>5{Hq|+lgA4i<?dOVkKdC zLN+4(cn~jr0^uGrTHxFCk`cW?KG*HK8nib4{+xW3Rk_CJ3beb@N>t{4nplvD*A_05 zf!D_Ap5Xsi#VafnvMbeKead*r$hnAjwTV9#uO0vC#ZXBN9V-8-O&6+NF5O>_=;~Oi z&#EQ#_%Sr1hls;IMUS`BlgR1$Oh1H%pp(}Z0IHJlMdxY{m5V$@kn!$RA%g}*9fg{D zy`n!_<Psi~2{EenjHA%_(dy)QL#9bT_j1p4UHs~j{cq5b#Halqd!26)KZ&~z(Vvkd z4a?b<A8#JU6WlAD*)_XeAAY)m4;CdWxKIX6R}e{C{6sXN8di10qo*My;_RJV)kLyZ zC2PDFNm|`^5dDlUa(<)+b&XW6GM5Xer3SUW^OjUh4;C8EgM_}nF8<4lItf}b-JilA zkN0;!gl$R&e~c8Ge8|LKqp2{WquG!p0oVmf3n-@o=m&Sl-yf9%VE0sqVRC$!^mqTw z^JLuF3<v?F0N6QdUVSP2wc6?&gTMZi%9PgsYyR$kJ>)q2b%1P>zNSB+y6bnzc2c?{ zgN5H#KqTPTd~L(UE1>=p_`81(j_^MUf347#fj0i`*K_N!_I979mrVTiG}_?eumAo2 z?*9q=^@;r5kN9Ws*T0v6PvWofcYnd@%z%Fpe|@~a`$u~)h5oJn?pp<loayiWpTl2I zqxlNx<3ahQfIiostG`UYh6mrPm8bCv{`zqu%DL0O1Ai@^xZU;WSp4-4<{rG^1o-R6 zs8R<0`VAs0{PkQO+_RmP<9jE4rnaz*iWHWUL|}iy2j%QuoZLswfUmCKwSJ2u-tODM zUFSjea;%mA58<xkK<-YAyLSECa|)G|&)hpU2En(TTlnLC|CjLBZ%EB+ChQ=)B>wtL z$OZg$n9)2If1OXSv=7TFP};?R9Dglf>J<L^sdIP<i_;XFVLy?7`v^%mW6aywYvHyo z9zkJ`CHBT%i+J0#RL&b4yz1)6WBl9Stn?72&Om-;NAQ0Kf1MCKvgnN4!ZO6K<j%7s zNN(de0seXvLb?XkaK1HNY+FzyD~NR?-rno{-UhR%u12Pvd}N^=uN>MZfV=^|{u6_0 zJUR$BFEVSRA1c-iF|U$h?J2jA%<M0JjcK)f(%|dW(ByvwzP`Gglmfo?0lt<O0bkcq z#Tk;?w6$(kmh)oBg>A+**-wo!QSJi|!e6085iO#;;Lsk=7dW)vgTpZG(0&9IfwxJV zSlv)3S1^_>5s&su@Mu3mkk{hQ-o%mppaCGEi(0hkU$PNrV`Qhm*PPCR9~o3wUIDcE zMzxufB1cQZiBn)&ixZco_Cra3H3*H|P#f=sk7d`dy-3)R*Rp9s^hhwF9ozRGdOaAc zlHFXk&eF&pR~*{|z@CSDUQv^Q>|SRoKfv+77YN^V0ob>n#uzAT0}I$f0?^P$s$z-9 zwWrXw_-p*xe;NGs^K3w79fQ9f2GOMP*AD=R)A;MVc}n81zjK4aUx%+@mrQiX>XZ1+ zVVU@A0Af&0+MoSJI>lf~L5HLO*srKm{xkqPPj%V?pi%3yAGr=){pMu3$N91E2=+$S z3A@|UfvP@7d>Qo_>elBcq|d-zbC);dy*~R)@|Jm}U6wpdB!OKE{2ILV<@~hkzy1Se zgTh-c<{^c*9wz$4|8Bf>lnQ6ytuLSgO6fhXobFWnh!fzgI|&!~GI;BaWO+io^%6)W zg}3hcrSR4<lKkJrTgMUOzW{HoJbk9|)|@f8@D=U9Ufjnxqcic={UH^Fx0cHs+QD02 z#^>Yl*58F3+Vfv8XB7_<h6+4i<E>ePPOd!3Bgojj?BqB0%Hs_Uz(Z}&))#4g!3pu! zUtu160p5BaMP}fw1(dABunht~6ukBKkQk4_TXV-Rcx!s|OX96T>XS!%c<Tb^Yf`=T z@z%u(Z$00Y9uy4mGP)eRwJb_)@zzhecxw<?ZCuyCP$FXvzd;r7W7?K>UH_`&&iaT@ z*4Yt8c0A%bi!HZV)697{|1{$I0ZJCcb${lS)0e*U!;Qsnz3ey371+80)1SLUyuf|^ zGzH?!fL*8E*N+!DQQX&?@n_}K-o93QudjC3k<weglk{ERP05c>6jn<&!j+1-mQZ=v z1#|s35wXIDfy!Sg6Do<hmP`b5%`YyY)p}^mJeS%8%61u3n;1J~IQ<(sp@ycwCZAU4 zDHTOqeAc4inO2>v;=pg>=J-X7U^1J4C4TDh-T=s2D#LO0)nt(LaXErk<y97K0l!2_ zL12UPQhqK!5Y+Y8<%E$n3Yc}iTA`d>5P))8zkZi;S^o=$0$KP8e%3WQHa`N&I<U?x zLo5l@Id{?NGHwM@0Djz$#x2F{WF%c&x&~d3k<X&Jl3QiJ5OgiqMvBk+>9j+tpPczA z(Dg-9^`JWSd$h2cSQ>0?YvgrX(DiT;l|~=$u)e-6=z7>4>abQr9+a}en9*0p*%c); z*uu2Wd6Q)er)HJbTYhV&5->8|*5?aOPu$l3j9QtoAGyHm)30UyLKuO_xc^zXtbYI! zQ@HDQ<-k|DtY@;|vOcbT#*a{AEKZl`0tB5TxryB8-A+d)(X__`ueX7#QNU}zkOO(% zE@Dc`U;X!(JNT=YNX`vBi^xg1#$JP6pv3qm43#QY`KwPnBG~H!2+eQ3`-T4MH{Y!B z*9EEr{q|tdGWzO1)c)#~5U2py^**i6uC(4WW?sw&(-%HmZp^qrp6u&u+r?i`03Vt3 zRxgC1$-Eu>^%$AsqVD?#@YfHfe924JF8;cX!+GcA_VL#p6t|KAZ5Mwn%=ioN*Mhfp zoyaTv^-A88PUMsLYt&{;s(^j3hF>cN0{mKWqjeeZ>zw#{c;G(*zvh+%V@4x=?T6e_ z*lWdqEVSZgN5#=v%8lsDy!ykfC|j3G?`Oa|HSpT!UGy&jua}d*0$wkca-s8_e;4pN z=l=`fwK#!yf!Cb2#LI5l*UBp53x8ft*S#l0C;tMmN8gjF06XBWhK@)QtTjL&1pFm) zwMuZo>}~98xmMuQOwe_)u(Ba-K-bMK=-L!MCA4dL_X@95`yfEqtS?9W4NGLf41!z+ zxGiYW6mnhA+6O*kyTv`YTo&#>@NpV%y-xdaU&mER;>UeJ2HtuXc<bHb$6Yab<;OjF z=SFM%%$_oqAi&JB$mh~f4Z3C@b}%4B-Wne-vqM&bAXKHUTv8Q_X?U~Cwe$-CTuz{o z*F&U_Ov(Dj_($Jn--g%n4CHkPBhvk$$!7Sz!tv7KsyiqiupH}2@;r=0l{TWmq#vnu zR<Eyg_g%r>lJh8cp{<Y&r7UI(sO!9Pa$z%G0fm-V6m3N}Z|3U!xwNW$@>P}AYUgoP zh#<X}_!j5{FX<6cEN>CmmLicU?<HQq(m{z@b-fQxWTP9c4dbscN7Sc5-aVlmYon%% z*&w_*8Ax<f`Y!~iC2jEC(q+kYA79*;&>X6om-G=n!nC#MEXzOI#-s$WMPS~&fO*Sm zEF-00)xu%Q_88%JMe(O#)o=1t((2QK373(}`j6}FZGI}nbySmluS<K`XR|)Ymc6a) za$#H9Ma*N^|08s??a3tMt$p!@P4+S3%lT6I(MW1l(WRj?16HHDCS8raIAfKX5fc2E z0pSYpMFGpTuTm)dCSTDavj}aQa(T5rd*PMrUC$>o7fYRS{}dXkFY9l6g2GcP+D~Jo zGo5Gu^+M=9g^@0hGaqI5SIWH^N;SrMjXErek^YEpMtHM?{396Y)dH#(jP&KAPW^uv z>HqN<=^=fP4pSKETX|C$={x1~|9*`0sltGmW!z~lx{sPxcYmign6n{%g^`BCIKA1d z$ec;~>DbuoFUz~IaZ2My=fH<JKj$m^@|%D{DqwV-oV(liwz{`Xx$KDxbgb=FMdCku zfZgv?9B60w&c51+?3dcesyt8jQ{u<CF8&udVc?SA6;|_wOEa|ZY*}{YpRimr?K@jG zYLniFNxhlIYWJpX?4stmNNILR$aqQcq&h*3|KfU$l+Jf<lD!$5#o6TTw+@PL>-pvK zd|<s<wks40cz433`2d1h;KSOlwUXo3OSFc?vh4fbkTfZtY_;emkJ}BUH?6Ii`^tAj z5iiU1F}&HCLtL%bAWUvw_=o&mXJDJRVIN7QVD@S?F``}Q<s^7eEs#~#XU;i9IRQ|) zG4Z5cUQ3dGtP=oSx}v3IxnvbZUYMk?<RY55SaMlb#mTsfB|mCnr)N*-oD=`Gzb%%$ zJu%H0#+FwupGZ?(&Nsy4MAGM=5xJNpePgc<e1+=X7ql{DlkfDB9VUA50-ETVzmv@* zFYM}|<OLFBzf@SwO9onbrm*^U(8^xH*}7z_ND@JFCrMcsSV1a~8VjH{O+UBMCZYPN z>lOVHevJCRj_;!ID!}o$F=K`7aZ^sKuV$vq^GT&fEGk(k3$%2obDgY=$M~$CJSGJP zo-APEO!w5i*)#!D7KnuE01Z>7aj6b?^&_Q=1E%~e>$u1-TD3ctIV(`)`{h^UB~sia zEp;A83HPPI$$OyHq-<x^QUAMeOQ}GiS_pCp{%Cxw>TSKRb}k`?_`7zJ-tCiJ9PeVf zkmj>F4s=f9kA^g(c2WEP@y;D`PPkG{5*N&z^G|@8=Tig0)gw&mt9KUqidH*Y$Q#_o zN7-POHHP^`**x0aMijF;*nM_<U4HsMbur3x1z&z{wgS*q=-{_?@MV_~tiaHZ>fj4> z@LzQB0)FO4>5ljhbZ{pfJW~hHkjxbZb)XLZM1AiwS_f~HU<Gjfx(;sC!Qa-wy(L&d zr}K31pLFo$I{3{?2v%_AJvfG<VL#Tvr|IAwMFcBw?Mi}^aOI?5?7wVg)Z`o{1y_D{ zlj@yHoyl_AP49d~s-Q5owl3pB9sE}vELSdQc=r7gtXzCwhZ>B^98od)Ow|#ulzbHI zxl-q|Ne6#V2j3{c3cY-x4t_%in>zUW(o%&o?yQ67=-?t9{9{S2P{#46R7XtF!CiFl z-zBwzFfY}?-_^khu8pCIS(g&55a@r_!Pn~Gw{-CSo&+n@cT5Kt>fjf2@OBASaO(Rc zm`O9<87>nO{I-hGC!!<%Ub;%*x3AUtyr+Zj*1=au8x(TAPzS%JgRj%UCrdF3xt>k1 zKA%!}=CK=->kEFWt<Qigqr^K7p_%9;=e_lu_nu@mhPP}E$9?_I7`xN<HF3B3$JGb# z2yQK15$q|h^BsB%!=+%BX$^&?!go_}olu!ZTh^n01FU3cm-Q~@bf{!yy!k#_T*hH@ zXaVTCt3B*aYbVneUCEKZiNC~$b--`sWy!syoGbqu>MKSX*$m%_>U;k&^|ij?*0(%e zU#*5}ZSCw~kvngpWci=c1pvzC3;XnVS|*#h%gkJ~11rorr(g=pl;O#(3tFNs5JyU| zVCNwg-uOda<(xC3l4Z27Gy@TaBB7-A%Z<l{>$7izEZVd#?Xoy@t9DncMk9yOc<yqy zb>Br$kkQBqy}myC49Nl0>ALL&8!<t(Rxm7i(uUTn5xcri`GCsS<}RZt-E$WP?Tz?0 zNZ9br7d&kT%u`iT8;G4Ah@HvkFK;pJLCg3v;hkpoj|bL=w{#2|rnfHK(qY2s!880T z;)$F1Q)M+(;d{XLXC*F|Z^KjH64zCo!X2Nt<XDZT)Yc0<VDh>=&c(RP;wog&JG=~9 z-i#u3S##AXjhO$w!%M~T7Kzj1#^I&=@<8nDWhzG2J0Jc@74~;IFXfEyq3(&|B+aS2 zN#(AvubQzeF1PEt21R_(0Sa(NZFmb;9(k!og@E<+FO6GE3xjJ~tR|Wl`l@REuok+( z_<d6#b{*UG$@%1(<@}aDq~#A{wtKP)Zsc=^F{cJ%H&el3L>x;_lk*Zk^smBx-lz{< z9*A`c#0KijYKh%(%*n)-n38QyqHmS)d)nMtCAgube&nn`j2c|0Q>-Jc#N~*5d)64A zsy7MhrHa<MDrsz3OThY83(qU0t^w<YW}Y{YFiy9VaLE=5+9DY|xJadS6Ou?5+FYMG zVLiGRzNUL2N1FM9^g<rhKwg}zs^a|Vn4Wkc-4h%v4U@?HKe;(E&cBMAdg+N$-4i;) zbWcdkd}6jFuBkF!&^<wd8*&&NJ->8+=ycK_lA@qZf4o3{FaXjna-jRHZ{_eP{gFdf zc|1#h0K2?}aa>YBaVi7p57N5nNTlj|Ltfkd7;IV}B{A|<*5aG|)@l>2V|d39)0+6K zX;sx^%=*ekr0#IbxyH<i^iUOd+uUHra@k*djcLC{kTfEFM4cI3If<L3v=<C~P?UUg zpWOE$IA_Kme@L;rrvt|UQ(;7pNc>pkvsK<517a0hTFltcMmY7^3Yc$19~K$bzI)wm zzT4&UXx|+}>9}gj2G4^z+A>bH{B@sX`K_b=a6?|8=yQRcaAnn&X1`TyT9tF+mm<{+ zu(PzZ?5+2Em+<*Tby5Y;_QOC?!e92jG4la93CRQ2-P7rT02jv?{_rQw08)rPn^S6Z zvz1i71zjEL(v107b|83~sL3XAt5)}Sks4a#>-w{WD@p`9-u<G=JV!E*Rn9SEgKLx@ zfse&6#bfMQv_e#U+Z(@AtmR@=vjZI`zF4vnu<tChqu0+gG9Fv#w>s0UY(j%GAP#SE zPLh5Yadwf{wSa@lQI2NhVCY*dMsx&)O4QK%&S)N!@#ErW+>A|p)*n9N9ccIaNIG+X zmGw!$9+zXxm>}B8SS8im!pd1wWqm%-zI3-A{5M??u<8@%yZv7y>4GKKTUi(Sr3&Ht zoGOkoBYnxhjGZJjF&5=zh@1{dYqNHB@+4NUeycuUi>cgi+>b1qcvbi&tutn<kqv|W ztvpo4?EX#rx;*3Yh1|1cJYJi#(1`qwBJpR1qn4lZWLnK!8&enW2$nl|k{LTq9r>Hq zS197yDr<|ss8)7;Rje9zKQSuo;9s$wE3a27KEst?S=`mO(2ENeY#VCx{ADZ0as0&v za~~WHl#wRuazOS{p;%Y0r4BtSyGd!ZX?0y9J*{ryEmRRIPJ=uuPG=T7V%t+vn`Sv? ztb4s_b+2<%gmx2WB5{)A5r|EME<!cxs%pw_jo*XBuPB0kQ=Q}oUqF->=}8QCynCzc z?pK%{J8++2j^BP5>ZtQu9oWN#D$KG2M&t#xLpki_nqYatGE))dwSD)sIzQoyi%)2u zZbAzLt`yqpe2<v%2M%Vp5qDTuZmJT}>||Q2%mZ8f*2VzWqj5uA_`{CD%Q^NAerNJE z{?<3SuA5W*ZS>XvJGhB+kqMi*7i%MFOE#jL9T3af#F1lSBz}4}Nno=MRFig9VyGl) zk?-6vyV2zA(ps6gO+Gfu$1N&yt>m;2rm>0B%N2>?E?o|^x^MP-bqS|5`IPWOO$S<m z%{hK=t$E5SNs^;JRcy{PVF{<Kluvnl8erYNnX9X0l%aLMS7%>k)%j0ZA<YffXN~`r zTSDNJg(}m4cOiBXw<Y<K#?$Zj4fYN4TW^W<^sbg>nWbGcr+kL&^%a1kLNbzwG&p7F zGU1fTS;@@nEAvV`y7{e2&!lV3@Zy}rIf{Pu{PQt$RU8R{*T_*zl}Am!O#)G~xL0X& zeEN3g-n+?hUzC%9QCIxfLMT+Y0zq#jo>%#kI-UoeI`=E)A=)lu#&F>&GC$jyoO0l; zC+AF_IMJ5L>2%~i(%?zp=G@8I8Gm>(2mM7$&AP2j&PKo8?_|@v9+B!q^Rh|iCHJC! zaMWLh69Ac)YpIz(#ym{VNls4OIXPbiG98(dr{y@$@mf-woNxYEcUA!AB(Vc!TSB{? z7~$#pnp_Lr!9%gOn8nbf83OqwOO$-UG5?3TcL9&8x*ES{LIUBUCn#v@rA7@k5tXEZ zCJJo^f}DYg#6|>*w$xj#Sfwxns1<@U1DyACFjj4CYn4{}YO8(KS})a#0RjOPMG(a+ z2nEk^L?S3RfqcKU_c=2YOwjjx{{Qd!d?a%&`|QiwYp>g0Ywd9AvQnt)mvF*~`7+wK zoo-Yk8)8N3bmK_s`uBN^Y`C3%Vw&0I<hi24^MpOH?Ifo{H6d{>Z)K*!!S|dGo$gTL z+AYjqi<vV=-h6BhTf5EIzXSm917HlsOT;A<Ik*J=rpUN-NIF<1PpcxS!99%I9~2I1 z!RlyrxAP-KuGBc_NV{_%;m5)--ZtiMmV(IAP<ak2-!2=N3-O!B{xTTG%`0(T#jXW$ ze#f~+!j_fo61h0IU8-Qi&zLXnh*AkDAflyZ&X1`;L+MKI1x_X;@glBZyR$~9Q}W$# zs?Q0=f|pejQS4aQcdLZ*i+@QfRAk%-186hug8{GuXC$tYia2r3m@CnsLjEgP3Iiw# z+s8<w#a>9zF%Z;ns$afvf#7<UFoN(pWQpjqK=^f6P*AUjTt2|Dp27!S&+vh8^=iP~ zOS%|6gLO*pqEbme1T8rL63Wi~tiI9^tuS)lS{E<FWc|xkkPucMklzjAb`oNNVp_`3 zMF*>6uK^hRTtIh_Js)7~RLG8-08S#`)m(CI-2Pv@%K#M&q{{8iT}oKcbx3t=Rh}$O z0Q@pgBiav1t=qB2ubaa#M2P{MEVYQm@9%&*oEiy$mtnLM4jbmAR?T705#c~V_YAJ! zLfJ)pMA#k~@K*6i?9uD>GG3vV@nWo)N601y!0mh;N2*_%>ho6(*Y8FLgzd;Ofv3k< z<wgN^{jI&ic5Q!I!Te!NK%TM6*ztW~tV6`)C|k&@!6L{DOo<PT+wNAQTobl9n)NAp zrLv%=IZMEkx5<Wxw2~SRMZH+W7N!x&BWX$5>Xz6>cQ#k(UCvsuzT*l}re}f+W5IN_ z#+Bc(;5ewvY_VXr*99GC2{YpUj1p@6L<U23(#O*tf|+j5m(XZ$D&@d%+PhYL0owR$ z^k%7Nyy^w~mgmm3@?;@@L?2WWOtVE!uux6bN#fu(*jVsKJ`qa?zCt*%N$1o$t4q}u z1e^g<#UE4&)nhWVZ4aqa9h~Q|&dMqWEdp+Tzg@w3xI(0SD+_0p91fq50<_P#`?Uc$ zaxm;62SZ;-3jIRnQR5EVpubuJ-b}`}xgrxPtE>AHHP}Pra}nP)zkEYm8ze8PeWYfV z5^ruK{##l;M6GzIQZvgl6zvlxIW{%)ECl6Q7d#JS0_kFrD>a`C6EJ>~;-&CN5=cf) zWC;xYwqlg;Lw*63bH(QFpmnBL>}|+!F00hzQ)^A3;6K>QNk8PI;hFAq7^8l#<k+hZ z!zV>_)qGOzxaaaoPGao={_0is6-LQC96@mYXNprYAzzVSJK>Y>37X}uv2d>Nx=6ic zg@r|URcCVwqim!Lf@e@l3ueg@k(KeOdppH5=V^5mZmNjLRQxe|V<h!+R^0(O;}Z~Q zD4g>xzEe!`!c?i!!+6M4eFvVWB;1d}w&DB-Ydp{O1I-=tkLHEs(+O^KmhsxO^3&Q_ z<ZFZ26F2}Dz8HS}AWZNJ>A1%f(WAA}7mgo<DZ(WqsWae*`KnVpG#7Se`TS5)-NO$T zuyMgL-_~cw{BFWtSV@{6ZgB2|&r4mn?C2_Fb>K;VK2@kwE|spTb|+b#CBnNTut9Vf zVPPvg7Umd<a=xb~SlCI@Muvq!VaMr6;L%pUo$w8;Qw419wMK%dvwO|d;I-tIT<Wne zZ=M7X;9E;nE=kV7)(i}1iG3n4nbquc<@Xw$iVO)vIrX$3EPU`<I9Y|BRz#t}Yi9u~ z8ln}`?zfiJ%^B)LUyca%_zc=6+-o^bze4L+`<O3SE<zVmL(hg3E6(r46tpBAPWfUD zajuQq4=UEBC=T%b$T?C`AVtY_JqMl1Qnk=oSk{_ww;mZ~*GQJ}wF0f!V<bH#5XDY7 zLi4N^k7o&G(cpZXE7oV0XY~o&`K2Du!tZjouq?CuHDOr*6g{esl04y90hN;z_+=GB zVOSmE_}%EKh-)obeuZMl>WEagDR$LQ*cF-}NQ3;NSo3F*Aiz54%#~dwVOK-J7Gb15 zzq&&Jl!RZ6gvy;H*hsp5_y%gWrnh1HvSsj(2H{s+`26Z~0c7<u_{YbJVgsHFJ$^%c zikZ4Z%IEN#r(~%sek0;A<5dVRlBjb!6}Y=qE$|yzu*LFZw653VaPW%_PLqc8NydT$ zycAwjLN$6Fz%TNh4Z>yi@GdJ)i#%82RU#-534Z82E5*KGupRhDKXM29a(Nqa`9JCC zHBAb2MUpE26oh*j`@tdnr(V}HI#oM_&V#TbT!O$@zV<ms;*oO*-j<j_be-Kot%{vR ziqc6B%NNUDYMFZ>)oEUJwQ3*x*a}Q!=m13+!uog#BkJ~`iC4cF4VhTO@XeZ40Zws@ z`{E+A{1xuS9~lGE#y00sC6tZalihwee<ix2mM_v<*w2s(mdx(q>_AOVzoAH9d<pen zhr<dH5p&juZB9ZgB~Lr=yB#(1|MT|jZ=o1;ZqJrC9qrlQT5+g7TbIFH?Af!WL<f6z z!#Fc_oQYO1mg8f^It`5+{3hD9@!aOXRPu}$gIFl&sndA|%g!?_VU&>+)HwfxNUB#l z!qcE({a1&l6wdiH9ro7`&+9noT7O;F7qWKo2I<}gYLa8X)q9fj>Q=*jod^a5O!gb3 z2jTeZ2&7B%X8uc8qrM-Ht!*84{$uOP-!Y~9v0?y;*y9Vsa-ue{TW|JVeYsc!SWofg zvrW6l;!P*j7*Fq7y!BW%mSzWf?&!G$J#D|*SK6OrkQMt_k89>EZ|?>ke1FbX_H$qm zTL+`Q^xR<zwgy-=0rTWGwV8wE;o{OgYVQWyx@wO!$WLEf`kB=6{ly!5#5c{RskZq% zGM<T+wp}xzefBkTwgwt|E|->A1Z~iA2PRa)?<ee=I62(`PknvZm(0pAG|5UKm#4U% zgspZ{Tt|^O9k&d#XY~PN?o+%lQxgsdB`gl7W>AD}9G)D+{+p`9J>fND-ft<y$$h7! zkJ55u+(pdz%t*}UIj4$U7Hl6`wK?V(Pmc~JRz@pBRgvI9WHRU~HI2@zOXXLmkLLVA z<LM&Fxf5pRBUH67_Kfj#bxoo@#_3J3%{WJ>5A<St1fp*&>KV3HQB;Brt6z%_9Fw}f zJQy}Ebfwet#9k`Svc~Z32pMJU0_UjUb*Y~y5vE9m?}=PVAkl@=F|0GogArqq8)`f- zyUyAaokcd0nK#u{e>4N@>4#0E=!gy;c^<>TJeL|Bq~G64AD^X<hxY%ZO#jPYks%yU z!2POl^((RCr4Q-(VGXC)L*eqz>#DaHsj(t!O8AC5gsUbRHs+nrl_wwg?dN6NKkktB z;VM4-_Qta9SHES<<DlmDI;?APkjvvon3TiSJ7N#HZz}p|&iQ0LGnQx;9H<b?sDdVx z)<n26qvsmswZz?&lgig9zqoXYQGRb}BgKvK2Xzcg`J<%^)%`z9A6LKsE^X#FXU~DH zTU>!siPDWcH?`~m2Ecnb+NX$T=q~vc>Ky`tbNxh0G3&D5tEn}%$T=<2$ED8w|LI6Q zS)c!Z>;JvQhw1-@&0pz1{Ao+*5>cPny4jBduJE?_CnaQqVIw7z;b<i4ddN;F;39`C zkR|F=4Pe2hrUWzLWZx(H)|e;K)@bsQ@&mv(I5&NO6iUDbz@A<xLd+lKMSSVE%~aiL zGZkB5#y7W#AkaE;wfd&~Ju`Kg@U6{l^8L#7`RpsU$If^bv;<e{)@SC118b$O)YTik z9iGho4swVmVE1~yM<Bh@$3KxGAI{^+GoHTHs`90hV`&UEsTR`rN~=eo9YnGMEtf{; z`5jf#N~_;br$ToudSte-KcWruwKcNE`8DA`_Q)1@44rna-c%4!bP6aV@q7u|$XNex zqkZz-4CWiPCl;0wILqSd8vX5V0|JeKK<pCJzEj*1uZn;H%o||<!waKBl_(q^_WZmG z_HGK>j3>Su>ybX5pXf1W>O988w*hD6dotfGa_v<Uv4$7MhvyT<{H9ug8=NF!((Z23 zmbE<geXm&jy8K}5yJqWfQNIK6VGXLC9&PQtV%^inwfE}K%AL8b<gQn%E!LCf1-uiN zI-hI=<(snfa$I%-{=c9*dIH+$i^&Ac`_BKF2{?~)J`Xbi=DS@@fIT^ynFGs-ugJ4T zM4i2e)BapolcQZuM@v##?P5CebK5**I(m5obmHYpoy#`llAvpvLKlx~uzRo~cD0lk zNwL#dOYp{M6sygH+%4XC+~PeaS<8}ZVtsSaMCaj(*bm4gO0KUHf5}g?GvJp9@gGWf zQ~B$nG|znnodbo=+7N0-t+M0Il!pf0-cJ;#_$?-2l+~WZPGnY}xQiqN(c`$-A{TwR zctb8!ktOE_1DdHT`Fr!-c<grD)zXLuN@t6uMlF`g=J>E*B@R1VzkmDC*^(GPy<mJ; z2yhZAhaY|YD<Y14w6#ow$=xJ;G~-j0T|NC(vt3NrxNM{D(^5f(KH3l51Bf!6e=RPZ z@55Rj@-`L5dZSuCG2~S)fm3SOGA{ge|N8pOK;+CA(`oC6Ma<S-lg?&t;=>wMb-ml# zkFce-Ug=ZXkC@|EHZ!NPe`YIlucU*1|D4`G!ptZhvl?Y_%Iy+ik5-L!0fB~W1F$^j zjov!*Uyi&Q|D@P>y8F<nM&ewI*+XX-iDTvWC((gk0zH@pNqtnxig*jg_>DOdpWok* zoO(x*Z6tsz3Itxr=a2F91;L>MIiDLG9Qt$eP*E*0xE!5%5wG&()ji&;1N`#5n&;i* zd87AS{3LjOGSBnnxtxDF^yeyKvDT<<%i=?2^CC<u0qaZWioX>I8#NLU7?QOlzNwp$ zJd)2;l<w&~BNqc%GmJpA=dPA~Bk^b6y(nFC3eQlikX?KuVF(LOHEonZC5e;4nlZnP z8`EkMh7s+l4#fTr-{On);yL(Yt*K-ey4~6N5QS3xAFZxH=>M%OTX}l<O}N(E$A+vQ zPnomnNi3p0KlXB#9gEeLS)Q{+AU5ZKf?M(~o`miD^`c*_7yS}h^aP(tBwP6kvwDd! z_cWTX-1QuNmqyy}Y~%t(nVcGOythAl@v0Mz#Bd(C=kdprcU8cWh^^uWpLFHzk^IT5 z59X=XIzW~ZIq&}d?01=YX5;GxnR53S`K*bOp%;Xo$#eO255oGg^8=K=CH{jziK7pk zRZu{n)cxFwfV++gnnG$Ny8D%tq84E3`#1di##izeNpr{?ODdb4TOal&`KJ_+*$lc> z(vJ*%@V;;HzjvPhA$@vH$|(87lq@E@sZbO)@uDoWduW;9(uh4zrWl!^&j98mP*-gh zM!%=}6Cd`_><XFvwvh2eMXWG=g8XvKO{&VL4o|+3p$-u{E)~^TW??8^gZqU2$XCg@ zL~QwFeEKh-(e2|VRjz?_-@Rn_J9_QQ!hcd~ir=6GhYJM2P?_UYXIS`0D#77M5gfkf zcjSlJj);Yxz4yy=R8}|5{+8HR9=KEv4EcH@^FOm>;9U@zPuFG!Ekx$V9;D#SOof8? zu2E4e-+Q8G?dnk&Ew_K$%mCP^C<6(CcruE&r8Qqc$DY5Cccyhm1=zh49@NM!$a2Kn z;19*uR8|DiYm_W+y$M@IoNrL;H*9_3jKmhI42X}aI<SH^ZsZE=J05RPGiA4Nr;$+2 z4e&Ot_nq%OC@mE19wI&ANnCp3JRDOYc*@+qRk-IfH&YC6uBp35M1#?SUEK;}#zZvW z%eA3h_@&QzXPrZRr_oihPFZ*Ak=?nFYEA1l8Cj0vEZ<dbOFyOjds6*BQ#~#CxPo!E z`1F<LE4Mk9ERYX3INzp*bTU`o(;Gwk$7MhvDD9jBg;3ylK{cEMjy?kPuD~(q0h&n_ zI0Eo2IDQxP5^!b#^52j(RsXHjp9KnMHMJm1c$NW%SCfUy_o&!lXkEgk!>1W~1bqJH z!RK|=^@5iM0Uy$GCTLng1^Aqk((pNWRxsesfP`nh7x>6h-)UM06lktI_H&Y8w0tv7 z;E7uV`McBvUR<3;e=Q^Vf{l+3M)D7IvQ>#?bPFR%C!~OV<SZ$erMKIFf2e(26+26c z0L3O{NrKW`4%H=ksGfGQOh@JPQ%FLaX5@l@iep|w&lXAd(!X=qV+pu3x&C_6aOcg3 zAq{I^%fbfIa54TL$}W_d596_SWI|-mJ#iaAvN6f;Wi6Z5Dn*bH26!sohH}UjnKQOK z22M1)N0PKiW_yW{$EP|Yk6+&8^{X@Tcz#a5s@Fzm<DA64%5IuvvqG?Uy$2l4FCz9G z(gaMQ)ME-)WSPRRRYQs?eAi<NsEXmNs(9b486ZULyQQK!>k60xx}tjuFcyFPmO}h2 zv(0A4r{q5M&7pIByg$Cq^u~$VCWR!w7tAHe=p*DaRcnGUf(G(nf2`+V8>d-9oMa9T zG6!Tl%_z#h>oERE^_5vg`PVc3<#D!Fl+PAUbiU7t7Ou*SK5XA3)kLf-3*#g5gCV=I zSpkDRjkRPq{#mG1JrEqML!$mFyOa~le0FKfRe1~j-Oy0`_$rZpK#7o~blsg_Di{*G zCQL>dX;rb$3F%V7Kgvb_7(xJ$64!<8$1?>kCxDP`r&gcIJ~iVoSoFm!nW350>!JlC z5mpDoQ92MnamZzj(Gt98TY9s!?+p9_>#IiQUdtmH^jnr*;&)wy{+ci;O;qO&u^OD{ z_p7tnzdWa3%>D=M2Rblh?6S)74t}AC;Uz~&LXtDzI!5U7Quf_gWqRT-H#NR?w2+MO zq@mwU_b0wn3&}$-XQ893G3{YfX(U4)=QRTpgq`FY{I;q)nfr+SSZ7n8C6C73=lMXn ziES17$cCqpgeqW(8P-=uVUH>^&mUD`#2=A|sd|Ku@ny>c>}4zsiuG$YmOAxgj9Tw4 zHK8M&uCpg&9tLy<>76fS$0#(_CmX(;Et<%gwDdgx+S7OW{K^?vuR42Ge<a|+yz<H~ z!nY~loCO~fikz&Ik6OL~Eiew($FVtm1RGW#IMA-=UpZbv^0WYKc&pt=&Y}~Yiosgj zj}KcI6_6Z841RQF1}vT!Z1>Ix!YCin3*-Cp2snh;;8&Co-<0PBLawlL;YSo1sEVBK z6<NXySyrmpL~FGYx>#270nqyJK;tUBd$(D=QQr8Z3l6(oQIEIq$uZ{c;k#TeJE3w7 z9@${yU5MU|TN=BRyZ=1RLx|28%cd2XkxO?)?iTUT+jpAtA;4#kTl$%tz<_0k`<ALe z?Dj6SgKUSVk3$$}A9roC+3s!3e-%}xam#_qHCAtRG^~d|JVF(#+!kM%$BW$=eTTS9 z(S0-Wkn>2L=xDrm{=`-K!LMiYk4`<zGWeu5J8Dqu=U;XtIDt4Ap4b4u8+Kg~ZA1=Z zPYX5s1)kX5HK{@IS|EfDQqxcK*z+&S^4POf>k8v4Jsw*rJhs~BGUsJ`5V38ksLr|w z9vjLhKjw0gnjMT^dYD>h=v1d#{)@xRZTD;&+Lsv;w1L_uy1$}sq3hNjP_h>N75WMz z8P`y`GK|D2tn>|fS_oz;1YRVJ$AsbMBw(SgoUMpNso*EN?w@`u6s+L5({;cXJNFbc zIrmaXq!WLFLMt<9?5uqY%RG5X<m1f#LF`COlhU?_i_QyBgj@|RppBCmX8&7nB08~( z|7D5*s7qP+$z@qY=qL-Dc6=e7Vu3|}BJK(2*B4Hkz+PXz{aw>4)Dt61u2Z>okZQFH zx%S3vo5-|GK#k0cGodH;g5~MId_8Kve&b<KyKlC3k)(dT2h?sF*C4Yh0YHU5{<4|y zo36ojgKDBnu>G>7E3he6E5mWm#a<~ivigf?AB6<YCH-ZDUjw?&Z#c~02IsUZ)C!eA z!LPyY9wL8@wKIbf{@AopBvL&(NB&bSbUC(#OTRj{(Q2c_LkU@*V8xZDU0(uPluf%- z(89FLl3FY8Yesj>;YN2!wq=bNq-{{7;DzoAH6HkS)Oh;mhk@R%CE1aI8Z&ks@cFpN z*XS{t&El^q3QhbId`{T|z*)|;alFR0U}}BD{sCT4H`j!%wz~2+!sUC&fm??TviLw= zc=4BTv}TSN#z<r&R<eFG^t<lL3ySLOb0XDC!^YV4lF^B*bDxCE->a*BZ^jSmtPOSL zA6=LlEc7)H3GNo{YW^2o6Q3Yk&YWmHoa#*LW>d?b<tDw5wHf<@ZRB`Mm8KM)=vpJO zVSj1j3;DQAoPtX55E1uT<yv3lyuy)4e64J!)1+qE5z7CgG+&o`Mt!N=ZN=x0kWQT5 z=6{P~;nd(fXqR&SW;ewd@XvfWH&^2PC2iqvGPA}x>!ctS_Hp`^Y+Iu%-CSc199<OY zMkqnp4w{SiQqj%z^dVwRHI3vz7K&TRAJ#0MGxsT3QM?>>zY{Ls;Jor=J~fVnR9-K$ zF@@3B)JVpT@*QM3dDdLKFVDG0l^F+=T<KGhZf`0QxoR$bCvpk{_&oz~uJ_BT&UI4S zy@I}ENiOpslf;n~^CzlKPBmSUyMR7go)JwqxLlkYIVl@BlsMPXg31>ty|h}{-*U#Q zN4#`b@u}L>b!${5jO(`xfjz-r=D^_$Zu}&3@gA^gO%!)u_>+0%Xr3O$-jO7f=6P(} z&ZRl~ho(JGzMpeiJN2<Hfst8nTJ`l@11D4Ni%g6E>-lHaXs(wXpZ~oP5M;2WynH)F zzU5cGrB3-C(0B5^XO#t4R6pzy(Xc(U0;_E_|KY;u$ziL$3fumQ!uY1$NjU733S;CF zHu=EZ5@7%VK!#toco>4Kh0eAUf&fqPAF5({PVn3hd71tP<$Zk^W<9PUWPQ$J1@-P1 z7}VP5n)bkmeM=EZy9UU3@PC<p7ILEYw@!`RZ(7}It*iIf5)H@>NzT&AtXC<$g33&L zVqv8GOOvHd;K}<ufw!M=JQM9$9JvGf8i^7CS^4`4V>wOyjED7RHinPxPYBi~7s^-m z%p&I)hNYH6*#4tD408aeHHI+{j9AkE?_|@x9PDCzU_ha<Xm~p@B8kW4^Y|?_f#^-) z)Klua)UA_1E9U}qB6^U#PwLWDj+9f05R2`}OxuW>^f8)V$Tgjfo-6ii^{$~XH0M=; z&PWc}p=p{QK~Kgo;|=xn$XyF2W#I8*AP?c?H%F-<M=Q-#lRS{hEGkxCG?)a1rT^P& z4}Tg|xI*_28oxENFVIzj&kY%b{}O7d5T!c?$-?Lb^mLN+w7<st)|x^F$B+cpu{OOo z%9iWRHO`9T=uPVgQ@yt~Omsh*DMDSN+&hoROIurTTZdPvGOfem4G7Qoiag+HQD$eV zD}M7z?;r@hZ94V=#P|{=23D^oD%Pu&QyWtzT(1|hk*7F_(xB;q^JR#JmSyg-W`d;+ z_Pk~~K+_CxXcrnpR%@PKP7HBzt+kaN2$HsM%+#l(3}@~j8hKXPCv4g~v~&)A(1ruw zj&IB#!^G1KBY`_fK+r|4wOz|N{^n28L%RY3Kq$nU#%+7K-?c0lt!UhGP$;iO>0H{P zXoQ?xDYV6yH&xXPCcVU5O$r!^zVaaT<U*-7b;~5@jy)P__44Y(t}0lSwHe95bPTLa zV65QKzEQ1@DTp3Zil>*FcB9zm7qM>O9UI!~i^W!SgEt}>+LRKyFT*jC%hcE)Ox1XN z%q*G?cb`J7I~up_R*x#UFXLY^>R!Bu)R?-2DJ~*1l;)MJrRP_}zx!FD_XneW6?$ii zfZtg|vTVj>WWsf4qQ#|nB5YFaY3<|2Ie4rfs}{FgYij5uh+R|f{VD`^U#DO$y`IT( zn_1)z_vnQZzzXd=9kbEo+(LFQm$N86d(}6d|Jb<Pxkp)%xi=F3<U-GXy_$d4yy7j) zGXSiHj0uYXl)`Ox7;^<mcF=YC(d(F5Q1eyR>3kW9=P23voGJVfX7WwuOxy-@CQIn1 z;2`#y4mfxO(Jhb@^J|x&G561^V<SsC;-5GFXZ&yHf1p4A;^Sc?ekmv>64U<vUylJY zHlM!mk)HouOfl=hv4>H!oT}o{U$N4Rf<$*<l%8H|tra~;%}brF7z)fJY|kp;bO<6H z_6S#7FjLl@$RO40krJnO$J9+?T@1GUjN4`O6yhsmLA_k3#u02`;)+jP#`vNd<Id%n zR|&zZDSXpN?2!`jJ$;P1pUM^D(BhBtkdtJqKk+h;RBZ3QpqYy0M^fYSEwU__2cxIk zb-14IBg8#M0+sQF*4TWWABY`g*WoD^>%+4?q@3Ux{(;S5D8}MVFzL(s6R)>Vf}0n+ zc@qB6EgavQXY^Iq#8~tlUKGUxdT%#*H=>05lIU^V7pVIR?ki%w)O8KlH9B;De<aoC zZV&-J|9T|&YF+RpV*R2ciOuBLKI^FH`8H&N+yEi#2l>&n<hTsl<Ob2lzN8N~-MHx! z?Pp&Cuh^T<O;NOmeMvtq`Vq~aCnAQ5is7UX>w*%b@#sw<JJ~EPrmoAcwa<fLoX=#f zmnVn#6@8YWmeVKIsxaJ8`z4AB{!F6Y-C|Hg;j4s2G?c?Ko^B$FK;r1izjT&7oX=bm zbbbK=w->(<h|LpB@8~shO_QH@#X0qS*<_Un3$KybAB6v)$)sDsLrx{9UX=}2ulv;C zBwc0?SL3A}=^wEA;99;U-^AUvO_{X#PSDg$&09!Ot%L0n9SjfbFA*xhR){hlvp$XV zxKsHK6_z$#unGmhto|6QjbJLj#5V5(Q$J@3s6rP}h+vYU+SKUwkhNM!7I$E3Yq<JV z<Icr3g|8WjYw$^l?*maU=R&fVgF=!&=R*)x=j@o3Zy&=vj|4#_LWoQSvzX0e<hm&O zeKR$y5KLgYDS*8}7bpx_!bB($JCPE7Ko4FcgzDFQcn#s?^+;<Od)@7!@>Q0Ek>`<R zoXDsnLyOaS1js3P3S#CTC5Hp`&F>2oi$c|3&iJ_2a^oNF7bo%}>!pyypl`}EgKwGL zP+ddStD@hxdy!7kGNR|$qw_h2A;?-{eT~N4wl|M86#ce6x)0agtg(HfN7<u`xXvdB zOSHTFgMQZdej&WjiLOfKGd+>=EoSh|a1aKH*v1CbD?GICZ00XCXTI3^wGX|0HW4Gc zmj{sFjAVh#k&QkrLd9FgZL;6bJDx_*CLRC`HSJK1b+&2$qTaMFLUz3feu4-o;bxcs zegT9oQmkd(6H=8X>ldh6iFi?hMHQLzA?icBaKHN~$CNB5Z6Yj)^IeHD-2YiQo(LW* zH+eFm<Y)!pr`;p{mf(4YllT6PBK@&feNG=cBJ+;Dm;j^K3|&J2P#6hyMyx#(MmV#0 zdRL6_X2lZhg#bwExT!>g34jzD386s%3eq1c0&H?dfmLl<H?cf!Dz?sc7b<Rm{NX9- z<y)Lh52AyJ?Lvtc%;I0D0}@%}eoqw^POShc{79c+a8r$QJvMoNwRI(th}Tn=ABAAh ztXD$Y=Zfk~hnTW`?j?$81?+$;#WV72C{@pPK5o`S?-rzz>?MuT54+DXA*;_Znm+7< zK8Qyy@K<VK1l_R6eUm_}Cg%_5!0)Pcm5kTZU(GmMo6)?TOT~L&SC2gCN9=k};%KkG zRwTm$nOHKPC~(*fQ8;NuB()G<GDz*i_@h8CD79-zVf488ON`;#iikC-%4&$J4}JY& z3_fbvO494R=N)UZ$44a%4E@vI3}3z&C_y(F%W5F4v=$o4=Js9FR`VU<oL!)xI(3uM ziBva^M`<>#pV5t<R4G@wY+nM-(j%lF8eJNq={LN7c<@kKj<(VjPd_PF^z!6nLP@mP zNg=y8qF(Gwvzj$(PpLq%E1Cw~sxK7jSeXt$vwB41%H~X75DJ=7F#WEqj;wszKoAtP zTU!Hmaf&NKPV}_Kt!NNty@d`%8&(xkBR{?%Ig=GH;^SM+r+qTOMGme3FTNrVE2}}a zJzt-LMJOg>DuZ>=^n&WC`=i6ZR?M3|NK}V$6@nn$;-?A?z$}pCe<i7_fPvMPeoxIO znApcTmf&&>WPQ?0a`nj$?Vp5Y6iQ!c58t0tw`dZcoc6WqXa7a4Af?%is}N*L2s8rD zAI^r4|0lDa%qw4tr1BR;s+UjuZYVx;Kgk`;{pjgL`IWb^FHJtBZszVc&G^>+k>K() z$*tV{cy%w*!c~73+mXsY&+AW^Q``{xLaCZ|qL4enH)B9Q(zIrPBEMNkM^G7K=b3h1 z<Cb9T6lJ^ObBi<#qQ(>ciDh9@Mlq@hP@+(z%Jh5w_=iIdhbui!`B`N~tMoWg-;@p? zz1OsdiykNVNfq`~@N=rd&*2(BS?j~W&*9*wdm|9@>z@jKPW=jgvf(V5S))Tt?Z0LR zcC~<{ePhR%11~DF$pwQzQN9|}l!iA?3$stv%IyFj)4s4!ujlH$v5U+rFDbGsO?!?& z$l5*UBVlyOH8Vp=w#sXYqNiz=XHi5fZByz!D;vl^1<^|^n`RNt93<dq0_!T9Gk$fd zg2LEVZMu<Fr7D46PATF;Dw-)D%EHngi*`;0=@&Y#PcuGyk~omJj+#Ul;it24Ilr!f zz;tiPDveo|tWx^xk;$d2$^ghu#wJ+AH7&fP1hu!EAw9p*!mYtkFpFE#GtWLE)ew@3 zQRW_cm9x86TS^uxyc{sZgc|n;qhmQeVT@@v6q*AYip?umn6@@Bz*2r^?%r#P2%gHn z&9p9{x83<v0_@md8>%8*W79#&qFj1TRpeXx523mk6cj}y)fPi$!)qorO_{(rCykd5 zOhJelL%KY(sC^tlcHR#!jUFX7fD`>LkiRZ%$9tD3bV$$j@vxyd{TJtp|MB8&e6`G{ zTi13N>x9Z?yT`-%M)EKD%uOyuD>QD?ZWH6do3SM2c}M_dR=;G#e@9umRRJpKUSm#$ z!cLhKK`&<n5pZfeaYl?l;&@FFejt~C5E^ENCWJ1<j>iMF-b}Ga+P%#4M;A^z+YUAf z{3c}JXCyBv5Tt3jwu6*Z3pvaa7F2^(BrkTn@6p^ExR_36K%(+L+6~O|Emhd>owiSR zBK?g3t~?{{)IhpqjbN{01iw5I8|zR3gf*gqe`WkD@!6K}d!5sq<3PmYIy~o7@xR{P zEf2}xNGQKj`^>-Z928(b!dg8b&?w?)68S!2C+7?7tnD3Lhes(nE<Wt~2CRjL^O=~5 zQ*$PuXxM0)@Tw$+mi0Gh(|o$1Jc;M*YgD~Cm1aHXkXZj5?-e6)7jFb^upx3RmDb=K z>Hdt)Ww<jVXRV3xUN~nxKw$3;ZY&{#%rfgk@ui6Uyr_tBmem|b06`SL5uYnkjXe#B zH`LGqK*#xNic<5tsaM#b?K_(U8bMOJ?StKnDT?-z$*|O8s$D2=ZLlJ_Eo_gUP?s88 zSeF_<A#AZ#VNEMGl9kjHx(Mq}sC@>(l5dg@RL+te3qkux;Tk86foWBeUiz~RXomf_ znuKr3R)7TJ7>T6_eXJ=Xxtb?57^}gY4{FlQ^3TH6yQj`Xi#CjTf1n)12W3>n?mFje z6HHREv8y81El|W;3SDuQZ-Nm<%AMG?X8ZslzE|>{)R=xJL*IKk_R*f2(#pBzwEq&Y zjtfkzqg_c1px~=oqfOdysy<P8OTVPWaykdbx;KkV+GLh5Gp$!u$3Aup3Z|3lduOv) zfTl<pbsu`Rh!*Nnmz~L+k>e;_?x^jfaCLJ;QlDQ&;w@to*MwjLPUm{6lFh9W1zjME zVu62e=pqI5;4;~9B57v^@^9)@p4|4M9~%it&?lXx0QJ5|!+J)6VEH?yVZMc8=U$=u zAAhMtoL-JL5-oxtnP@~=$cnJJAG7z6rQz`vC8To96ziEOwv=KbzuTk0Qb~ab-?c^+ zyWdd|4d_MUt&ikE9<m-IS}2m7{5eScBy}#5nZbdq*p)0us$OMBjrMk)%L@kPoT@ZQ zHs1kLyX&g98~Kj*Z!tx#@9q4$L%G`P<sGy~ZGH&B8By%sne$z%AN6<nSRn^pcr^U+ z!3-&ItLYi^G7pt!`96%hpJ8#q&F%E<g97eQx{qu8r@eclYz%o({R~^m&vT~&W@kAm zg`C$RD;|;XqKG>6a$9xbVfu4Kwm;$nvEZ!(?eP`u?m6_w!#lO#t=!6BK|0tuhXo}{ z#X4WvOi;Y$K1Sj^F^SkP!|ItuA)I4yrm#(LzrMsse2>l(fx;eu5tn^x38A@}8L*Zp zT#-yv4)ujSPNs?WrI2(Ek;1qvaWPzRxZr(Ug>4mv!#NK+kY<?<q*)y)-^LOqJBTs& z$nNxoG}ov^?d`voH7Y!!S<%o0ce)2ooRwuiqv>Ir`qnYxx52q;CEof2J`T12rjgR( zh8hh+)~Z7B(?|<CPpX8nArg@Oz#5N8HNK30CH$+Pe+%Usdvt|qjRvE8@dM(Fh8~ZG zYmF{5?Rypc;Fl+O8DCG8j0ZYiJBMXv*N=cM`7f594uok6?e3usCr|LqeM#1&q8DK; z8EHv~LEpX>D2DB4q(@-{0$wnTVoBROkYsc5<rB!FS|}ntVh{=rWe}IpyYu^oC3mhb zTQHO<+_6B*(HK^n<x6=bP!Q1I5lJiLl*Cm{ruHPVlmP{K9l}9E(l!qY$7dG@qGd?Y zF|x^wWkJ0f9ykMj&K}y%Ut+|0hitUe;_0UyXP2oJX=fC}lu4i;uqhIKy(t;v=*`I= zK=;}EzO{g9t6W)U&(o9I>`&@QCKb;-$THl9S#4^Ru8W15;CW;Ic!j&X#9V76YG5ji zPO8B7I8y#GhC?HMI#m!lhF`&yuswtRzZC01XKG-Ue!cCh_2w<=6j378i;V^Qz*m8g zX}zpZVZkR}cvAUNed|WKQ+!?H{QER*9~-eJm6-Om#n#$6n<e@#T>Xh;l9+x8X5Sx} zejHhD@Tg+i%!+n|ydOAr8b_A6L58N$m+&=jb{n?_BVsX~0E=yrL8F2wz|?7Ef=fYC zOX!6$??DEHTL_qB+&&4Yc~#VLWcNToDY)e=yzNvoNh4NmX$2L4TP&1;6u3v`j6|ck z7<8vVD!AUTHVBQ+Fp6X7k1IwE4=><c=72z3ATTV@D1zExDc$X|(n+A6+o*uabJlnD z&KduTh<}1Tp<dgC&VshGND}gzF=9=C-uH3-ydNypei4GZ4cEw^Mpc3Rtmsj!=us8? zW2LhiU{KzGp=&G&PsGyV7BJ)g`a*XU?4fcE^iJwg!Xg!Wb&#ZRF_)@ZNoA?mmnI?X zRp?s%nsOU(_OYl~(8=M{E;)#>!Jf8VrO49j&|2?4nB_~*frV<Abw~m+sLsog@|}FX zV6DJe9FguJN?<+GfUN2=*$ooCAv|zY3G3KPSXV2c=)`jyBBE%3#x}{U47O3P(DnAa z8>L;L3du8AuS})zWVcZDEl~NcTfoz%udHwPI^jK;AT#IPQ<(T@h9A)}Nm}c!@YYM% zzI~yzbC1|P&4GQDecyO&i6TtQ(m=$B@}=&0)hgpqURusvDiueOLiYob3u}3Leb^ey z?2ct)tBoIKW^9EST%n>r)uj6*P)&HJQ}bhTCd$;D#z3L9itaHvoLfBeyWaqSxLQG+ zvan+&-%;J8-^`kMPk11xA#-Ltwp5Owg#=qm-4{UpEIx}1sR*4%e<p*iEoB@nY>Q8d z1UC!%m#I}rW)^ZmD5;Y*sj`XGHweulOB`wfi?lG=eCdy3F*%>F1nDtSzS)_>2EV)3 zr&H7gHqnyEn}yEclLeykOoUt!EDPN`nKdawIVsXt6;ZBV^7dJo(<bN35^9y{aXyo) z=c%9eoPIQ><;S=7@NOONJczn)gE!6__ltsDgMSF2!KYP=KF}UL#aDxHgYaya5T6p< zAu{-+y-2h7zFtkfluWV^dgtraCo&}+_3EjU#pT94e>|FyGCmmbdq6;?P-7I}%snF^ z5~yzzK&cjm`m3e^j^1GLBBH8AeCdxwDe(JmYcJYUa2)}rVviW?$p?Rxs^iM&sQ7%A zLUvG{SNQbJ>3trGi59P_mqZ`Ww9p`?i3+h}NS9SWf>?>P?E4!6XtFZ$3P&i7Xa3dS zsUxZc{$0xRBUl5@S@-E#%EJ3ldj__G9JrepV1xu6R1h6o7O5T!(fynm5E#oopM7JA zY2}w1i4ih0K#*JJORmb~3P1}+b5-pAMoq)@;2(KjRiZ?a?unbDR#L~L`uw|{jRM%h zCN&329WqlhCYV-hdp)~xsAl4mJ%J1fs9X_D5I-NLFwIEVs&00Lh%bwjZxmByxV)9% z@#xW!>P<%C4c>=HF>fSa;))~8qi06!F*H4y1xd);3i@LrrN;Ld#@zA13gx0kIdy6I z&C`4BZX!Mo5E}&oBSfcz3>m{NIJ!zpl9*<4&}4yhFWxdCSBBL1g4l_b?=>Gk!qs@7 zN~$?YF)dyC*s+G{)%1wpVYMTZ*)LFLpUP%AmHqDK-RrdhMS9su2aV*98JgPLaZb5c zGMU)NvSGrx2lNkDYd=I~*Yd*HjiyJ+<2My!klCzO9s&uOuc{H+)qLA*@7c4#T+yL1 zTK|GYIIV`wB&H!m27?edaEtuoep&^l1#3(p7EpE;=WG%fa?kFUoQe}Fiyvqwf1TbD zVXF-5a)@&%OBGtxQ{ti$tIY29a9%9Bt0ga55I@i>dL1Awl<?QA|CVhxGZa?P0-0xj zl|Y2;DJ*Q{0=}4dxyXjtiCxiKz4_IW4eGOXEO{6*dN79MMk>nq1<g8(olXd-*kYs# z=Xt6Srg~R%0;q6C3@H;^v`LwMH35$jtT(_wzHnY(_3P5<)q4Kz*;UlYs%i#ItctxF zkcD`Zx^nP%W}dxzsGPdg5ZoK7&F`PTk-Ok;YTRBQ+eF}%ZuZOVX7W;n;A-<pK<)mX zhBO?U$?C+j4bDzZMDu4OeoG0UWTQ}ab=Br>VU#m#LiC&y#jWKs|Mt=DUU&t4a~{4- zAn(<FOO<`JjLcN=ruw5_6uPT?zSR*vf7F}<XlkFBCUGjr@PrKIXC7rft9ML4OMB*t z1f~3qyjhX_!aTcMCMCH=K}6BZh>h5FEk{FqVkAf)K{p=}N|sg2K2Z;!T&R8os}YwQ zx>n2NC9)2OIbi*y^cX1LV3@?$ddJ;M14=XlU|G>DTH#|X97ha>wz6z+)SohFF>8Wd zBp}mtgq;kZ-;jJFDj9-{6_fT}D?7^!U^N~gYKK!(rS$E)o87IM`K~Mf#JsXCym)_J z*m&%7&nr#IW$-!Y(_#S;S6=8-O~x&WfSY%f@2;?iHWn!ky%A5HwLTAt$G5dEZ2zcC z+>-_bdWmAdANJB^L6?6?`U)jENi^~bc~t$rX<R@&=a>DAdE=!%;l`<HxF)rlr1%e! zY+W*g`&m|Np&s!s@%RuaR~SZ)Yf>?f<nw%j+iE$s+T%#0AR_stAv?d+>Jbe|fkM2L zD8T+0*R%pIO98&LM&-x8Ek*k9o_#?5zK{RD5Tzqzy-NV=%24@QYmNAAjI`dVOZDj& zl8yxT`Se`*eFRBphu?=vha0MXN&G%=qQdV3&DP@VUp$~T^3h_m8_g3W{e8PH=Q&zM zxP4rN+sB@uRWEKI5@p36UA?${T!h=lo^DpXxP4rN%CRRO8#8Vn7xlC1`(Y(`Dqk=- z*cuMDgsoX6>Ek>)5fP_UI$C<KGbbSq1~@HYt}9<}T1#UiO)E{-7D+3cTqxfQ!PE<l z4aagNpb9Z*75{~J3uJJ84ny<!89@|y(sQKDc4yGrlq+AVe5}*yzleMSN>s_*<2NOO zGuDN9#Q9)b>+>62dyIIRoA^!pdzq=we)iX)UaaW&681oe-vea9m(oWl{UGk-$E(yn z=<3)GYIL9AOY%9EZ`66jl?z;ILeTx4JkQ9RrZu!wk|q|qLuCy#;kTdalN4Y{s%h}s z?w4=%!#2{4pVJEb7#^2mna`o;<Jr)hfV;{O_GorlB1Y|E@q<^(j`gVgt#bC$v7aLH zMl$=6B5#GQ*MzJQlpvH%(j=5c?4Oz(o>bpK`jSM0AmgM6u@l#Z<3meXQ_9nR#uU=< zihMO{Li7l8@ymUc!Ky-L4D!48Zv{wV6ud5Q9oD^O3FS`3>LcWCg(ZK~zE-5C5-=u= z|C2qgK5UH(uo)JfH6p&JAbM7OPmgH%vn(N|pD(DokKTJbgDEdNbiS2egF4J3!52bb zVoQ-{TAZbKim0ia!Z@?SA1IXcA-#E{tWX_>t2PR6*W~z_$EiyVS&g)lQ69}G8DLOO z%43jb>M2q0WRPe;YLIu!12xPp$Jb$RQO1Y!fFDGv$J6EbHvd|WudDe~!;DzBOD8%E zv&&i4W7ZR^<m*mGed1p`ncK|BJDFYu1aF2%&4Nx8M9+{JKCQDEKK&~*9MI!`E2Gac zzss24<<90i)cD7Rg>+@l><U|N;{Ufw?+1gS<DLzt>N&D)wu$e-6qaxsnS^uTAxC(b z*2X&fr-IJ)kzjK;{(aC`Fgv{XmA+R+&MqBLAv22-dJ-0P52amPSD!Ug)9SBd&g;N& zjE8TaS3euUZNjcwkwsgaQac>j<&@L&%y^J4Sb`FrUy;)*loxF1yR>XEb0CAxC-Uoj zrFKwrKTr9)K^RxOr9zO#^TVL%+lm%g$!2<;ekCKn-M^4~Vd#<6mDffrz5m-fVggSY zFM5UAIfdTNQw7-}YOR?hFP(>9!_zYkuA;pVprx*hx&EA&mCgTxM+<aznvW2@dc6=+ zQTY)W9_9tbNr$pJbG5>|Lc5(p@yihlxtz)66^Kl1oHbH_yMFpkt<_Y)cl4d$GVcl@ ziIh|;m3UeGZlSz`xANj~b(vI8TH_9P(hJj4Nr779McnCbNu;bu+T;zG;M)hh96r{a z#k@4F<a*vKBy|5qv(ELm%K|v!sU5xe88TJ<472%pZYBktVW+60N`IqYH|W=w$m<#M z`rEwD5_6&VnCnZ}9>Q~EO0s!o&y2r@FIRO`1!@8kRjmRxcMw?pR*dPofCLB^kN{y5 z4dBy^>*IxGHS?=#Epb92-uKX`YtueKMO}xhFU>|>KT8TAZ_m2(sOuJsanEUKq>+gI zUotIW>rx$c4L_m_!z)Z{?KI|8QZO`>)z0@quw&mxb(QjmW;Ge9n(Sg<ESYVNflSQm zSGAII^DXy_F`{|Y%8rcOJ6pI9SxeIP*9Us8I$MU?MY~62+g1Bt|Lz#xj(tf2JHHHD zpDBlcSWXf#FP0rAxJ(kUD^yd5$)0e-{2ZuyNyIQTND{GsVMJ$H5g@U_nKz_Rb}5wN z_VwAqKKZUUz|OK3oRMu&;QIC8y3enzv!oaw%**s&!1ZISb-C!x{4|gdtPzOCzN0*+ z&L34|#P={Vjj3Y`Nmt!re!p3Eww|g}hXHK=Y{$NuoeiDl{1HXduJUkI`k>)pB;{y8 z{Bab%l7vm$E3!Fa?jX^Z!kx}Q`}*7rFuWl#ewn_9K~8W}`MXbaf6v|5gI!XJb%~`v z&9)?9cm5^e$XZ_bzeFGIsgUj*CM&~($;{yY57CDKs>v?a>DAfhI;9WmMs=hQ%eeoB z^x^M=4g>jZiOets@;5x&5#f>F$+m<H0$W%4>aJ3R@(VV~h2`XM_)OM^TiymqFcl=u zQ~YKNvLt6ISlgcyW!uXhu{1Y(gmcq4Sw00jJ{kme;lT3tbJ7YMoTi^EV*HI{)H7xk zv@cafjAIIJZNbS%Ec~CwOG^(L<vM-1bHl^kk(jMz#(eGXB<52k0K&m5<cu2ptWcjg zzhN>|eTDhD6RCD)j8KP4>~=QpR9)wgpwj4%m**G5fA1=l#hnpREGISvt|4Rh1$R$Q z5%sJQ-pbI`_m3*AZI@}aI)7b>s|vt9`9qkDaCBsvKZznzB_-3p@$6Q=EUj`5ZbZbf zgpa-;;Bs%_kF%1spOvprbO@kC{!cyDrog0f;F#4nR+0CV9j-{~u?o5;Fz2L<kC(%x z3r7n$CztRK6>~E7`pH;BCL<tDu0Y%>oJjnyC#E;)`F>T+_d0QisG+hB^IRphW5(W< zJBdc(PC64wU4tNl`oGzm^$poscYfVKFH!})H_IGukl1vr3}S!Q2|<>Rq^CFhTzZPT zkIbyI@V_|}XwFhKOb&{!!c9}`)XVdjm|vAjKeAHk8BB|GH8U-~oM>$h{hJU#ntnto zQsL~*bO?^N&;9TC-x;!$4nwAIn3Gvf88Y1&|2yk{#s3CMs}PRPi1ZoR7QZ3?^K0vr z|21a%ulV0TJCXzF|2NOKGDJ1hWpa%XIZbJS%1^FUxl$SOR90x`vNH?8h$VJ6Yw?^9 z1C97uw*;f-iK~T?Sjc?ZPd4*6xog%j9FTfM4y%iP#}t5|223yqjxf#gC2E~f3IQ&| z5G9?tpD-;!qM9z@+%h{085)oM*%N4qL6enwm0d{9DJ<Q1Ptaj4;sGz7uFGjJ+LZRv zo_H=zor;qC%DtX+Hb>{>^aQH%{6BK%sEOlOhV9sjFpmlesSrhM0$O7;Cq1LXWwxS5 zJ}fH!NL2fgt0Pw3`qq(6MXKW*hMXGtI1cLzos(~1`3WU=dDB>ht#Kn4p%=uIVUKHy z?;FGc5?ouW&2A$X#+MXY<C?@CjAFT{1&=^fK&<egfAyn`>{@YP0OuB@)X4!G+w`FV zl&-<~x<(p@pr0CHlh8Bceo$*|ueDYf1;~l}qaT}gfw^`N_Lr5F?f*K3($9%NiQ$bS zUe<?j>I$FSf|<;D`En)-$uev$i?X*MUcG1IyPRKZl{n|pEeK*{-kHmet6<Y=TeMGz zGyy`pqd(#ly$$b(wli$mmR?Y}MR}-F&Se*>guU#Q8A*wQcK3_2W(%0a|8(3vZcm<O zg+#R9%z4}F><Rp@wO*J>845q1I|KLV8Hj&`x?lG!6Vc2>tN`-!nSq6^BOAR5X)=<M z-?}yVODYlAbEL=_rIqjEcM*CKJPB|hiIK?Xjqr_H$tt)}4v|gpN&r7IxM%<u&dp19 zwj&uP)<k<Z?i&!>+Bh>fEw+(kO$J2IW1dLMURS;`Y_&wn_t$bBl~}x(G3*OgFIkyn zCn-`b(_HkT@Rjc%6{PQI3Xu+)dKTH^8WlpUfd(stXi^B#Xxf~h(!vm5Gp&?Jqt2h{ zhiR*8noT!pI$U?<OXlLu`D`3wyCsCQ83(KuY;CEl<e;VhwBf{mLKsiCHj+)I`)A=D zwvVjCv8&FW4lWZ9!3JXd<03f;xSHLu=GcbN3xa<c{>e5VSYp2*z^t_#54+r5Ntq&v z++b?qD*2v8LN;m-v3G!oFRuOyBGy`WOO<u0GZa25lSTOCWx~d)C;Aw<Jo<xLTa~M| z%FI+vekk<=%=Vk|>rz+sEAr$3jj`mXi7zd3l8bk8ZsmJ1N1^SIBZ~!XcSU=LNTI{x zUqsbT`FfOaf4;qekk5eLq&GK#&YL&&3OE;ErxtUxr!3^;V`9}v4SSC_KB7+>qY&Lv zXl5jTO9^*Af1J@mZ*0Lzh4Ay;a<Sn0?O`<7P~Hb}!+CU{6uu~HlGI<*v0><WHRHo( zK1X&2iAAHu7%fUcr-kkbz9x4W3+~~g_(A+1XLEt%5&txZ9e1sL6e4Fx*((0UR!6{E z7vHpjkf|%tklBOS5Z_YboOmjnRE}P=kB;`+wWK6^lG(ag9C0e!uZmaqju!P?NA_lG zpt2}Qd!gm|`DEvZNb$VqI`2&upO%w_j9h4$@m02`w`bpG^JTF4={XE}Y0lNz1|q-W zw8Cjb)qBXuklBjD6mpK|M6HdY8T&N`Xm&vcmpYPV1nH)aX%8;V$(I3}VKnV&93C2h zLBO6p#hnjL^5L)iLmonQ0tO6Td+=hq@S+1U;RBM=Wc@_;Pg4ae-yMWoN$QBj>qQbH zu6Q1DD^omgq5N3$MSOHF_NwGCP308ab(P*cd*KqPBmVXd)ux6$@RrnWtE#Q%q)rv7 zW~*?H3!qlMn~8Co$xAP*EA(=9mGsI;e9Y5uYfFyrD-pMU)zJ*%`4F+s+^}R28w}ZS zhQv91lj}(xn*wcT8%=t_@xtQBP>t*BM-*EmV3pAAkROOp8_r3id2aTghU-s(%64U7 zd2|M=L)($``b9skV$;=6<7iK-68CMD)n;0;big9~fX#b4!cQ6hN{sk-=n%ZBMg(Jt zNf;+F3A3<|da(%1o;a5hh_Kp6BMhGtFE^eJWKwu*dT%_P2X58K0Ti#Z`5s>>VIv+A z8MUM)@jUqtm6Pjq5D4JvJP72cCkqe`Bl=F8o&f|--Xj+e!sS@Sm2?#Zl9aSj?vME+ z{l)FU^Gn~iHrF@j(P7|xH+LtLNWs^6M9iZ=)qRC8uW9PaKL;Q*GU);57FB-OKb!G7 z7elK*-Aew-o$;K5ZEh|(%#1%5%MKJ0eEwe#wCBVJ%6eoh?Bq|wWA>nP0s%tg=Bbgs z@LMIn_AOH;x=TkZd%vvbDl>OIi}#hR%GKsTLIv={iXKNHaq3;}97#zf(+q4Nb?lPZ z$ysbbv(tOq5|o;ySaC1@N|_vyNA-T$n>x3^7qX2cXB|CEuOjw~vP?QIxg3EdQF;%r zW&3Ln3sEg4JkV9Ruu9AmYFArOD7QuEw#8ZJ)#xocG@Kmx7rrqF{Tv!JQmBJ5b_xBL zM*UrSt4Rn&Hg?Bfuun_>lv2nFA!MgU6hP@tMgjCJ`Ey!iC_ZwNzF2nKD^OOAgrrrc zohE6ndikx$3F5l>6Q0)EBc^D%lE$?cfs<$e(n^dZ+viaADHSnum1~^&7sxC~z13|| zmUp{zjvVBg^(k<B^MR&|&X;?@@|x^@TJFV<9f_ugB)}9_=3I^EiMQId#|;rX9Icm6 zf(U|;QvJuR859T`wXJHB0dIvm23HRzRdDV)z)Dqkg>(f|_aT~eW<jlFwPo?6qrcjm zPo7mk&FBe<Qh}$$Kaj^y5$&<Ku#YVck&FWGCL1qWoFR-v0g#hzXgS@3&_^iv2B&hc zY+oA5YJ>vv6o>*L#gx}rVwk=n)M26&w-p)?x+dfv6x5*(OX|u$$15#d{f04D{QJeX z6XLm{y-8+KRFiGeC)z5&xR8rBZISAYMtlP;BM@sZH}JEOuVhlu4ef?132)ZqP{sRM z5^X0wC*oYxP{Kc)NB*tG50(w}1j4^cH|Demm~yZz3r~SSQqCvQyXH+;MhlV5lW87l zAS8A61H!me7*6lka>?BbRa6hh6(Hp>@d~ap3*1O9mC9_G!a$aM`7$4?1);S+NDvFy zKY%NTpa^tEoh`LKDL}*F4!Rp9i_|TIDV!`}3MU9K<RFWIV{kntykONYdz#gs8n-tC z+>TSid`Nu4f2sEQ2%o;NMH89$gipieUtm(ZwL37E#`V0Sz%z~FHyD49I)#=ohiWz? zG-0tZpR7Nkj~R*gve=OG)u()gBLzGEQ-t<o*NXK}{IZ;wgg#2pS}mvCFZiS218|5~ z+d`7t0-SqaWZm**`qq6-F_IbzA!itgzf&e+-&iJom$mk3p*jE2aR}Rtxoh}Z4w*@; z<ie974$U~TJI6izIvJTh)P~{Z2GpD%t_DVGu^RJiYQswsUv7+WYQ}yiPlAqNrKG1F zA_9~@611b;{e{<W)_z%*v>M6w{e07nKuNcVN#VTg*4!n;e7WyaB8#8W6-@+<xiKnc zg!G0Lyi|HIaB_+JQ=wHE2aPUrh~ysObqg@`{NmNX?<#GSy42W)N#9T6k1wyH^!iKB z7JLi`*D0X}pRi2oy_^MTIqr-O{YOld&p6!YMKxaM4-(*Ztd!C67hrWC<W<K0w>`d* zb&gvZQh8==;}zIY!6tF=bunb(W;XM#E=HQ0E#(i=vLJ7$-5VtRdrNek47^l+4smO8 z^5~fI^^#p&x6sEs8*~jWc6GX{8i*G~-y-Bel{!AFH{r+&J>una>ZROCJ-ZmGP;ln~ z9=pGyR_AwebqhmwZdXOsI#=#~&VpYYO796vwP#FuQI>{VG_;^&K7ExS=)ZUcZC6K4 zu1%ld%TY_e2a7|GIZG_)!DVDhn$-~6Ra+X(3lS1M1#>q`KDypH|NE-kP3!f1gyMa~ z!CpL~<UjzKJ6f69TVg^i?_NyMzWrGjO|Q-3OS&~T|ALlZ-qP}m%8m577GYLUGb<S= z-B{E?Y7tV6)Kb1pGI7NvOocsa{u;?P{$@B&#~?fC6+w0cM6EOCo-8y4&I3#EIFAb0 z)&d^lPCwRURnD4B$RM3lBL$w5EA0D{ml1akkpj6drl35BL#W>(`Bn1KfL9MAALUY2 z9kbP)F0$51W+g{y)6M#tNN}V39@Y8lfE|!}?`+>fBXK!PQcxA9Larodd6-F~1kjUb z_h6WjK=-0BK^UovgGeCJiuTCKOCl$e&uoWr8%JjbjCtb(enFNJxiWojq`3?Zs;sx= z_}rS7LPw(DkcN?$jMP>cYjBSerL@dCrpOsGOgex9qy*d5Mnb|skzFG~DecKcG9A?i zrge+=MxWUh`x!Pa<(TrTQkmWyDR6-FX-<n^L+AWi>|<<<>~>Cn96OY?AzV(JV~bNd zP|zpSSh#w-F>fQQi&n7}@JZMh1sVA`65QsrJtkjHCQPcuou+784J)P=|IQ;hAx(C6 z3f-6a78i2m!AcCdkr+)udapb}B_&n)n@#`~K%<h(jRvIq4;C^`C=4UuY@b8{=qS5L z*u2#YT4>`qHUe^YJ|#W2;=Z9M9`e2J$J|f-er%;5Iq2&AikWt=;-NG3=i;xPyTA8^ z(gq~$gl3MiKCm_!iIWAW67tSW)Df;w{zVx1U>=HEz}?9^{4$Vp<RU4yVkJ+AA8Wh1 z0Xs+*SN)+eZ;;dz-#c58<4)u)W9|XIU~VC@yE*E8ql%wfl5zj-%GBb2C&3I_cQzJ~ zIfsrY{W%<57A|i&RD&jyag@v%dQ@sipBQr$`iLBI2GfNyEGg8=KXDHJof!{KmSpc# zi)op&2Gt7M;H1k0NdJjFg<%I1Bzed^jojl$U956eJs;A=))6J%Z-xA_DdzT3IF*oF z=5vE%p3YhjWhE?a(o9|X)`>Lbx1{uE3`vE~f=^_&xdLIcu(<tmu){u@uf!%$6kk~a zA?JHz<m;Hzs4v@R{4sq!d}>RsU|M<>bG;qB@#qQt1U$~FN7>s9UP+q2uMA%IpR|DZ zo0HdpvB=qdiRaY?xeflTM)w8F*_gkY>xli(dU@m}^+PZ9&kNnEq%6rnYs?itZ(+eQ zybKpc6PW*?d}|9O5@GgL&GGr>i&>ZXi!fK<cVx`s?=7Le5=3V|CS+TrY3~qGZ~p8X zAxby0=)Q0-67UO)8F*u{+=t{oh<c$lhxGld1E+TyZu~=eqa``Bbs0D9-dU9CKY91* zd%XIsJ!tp4YNC0uKJM-32)k~i9|8B&bLBeYA5PdO%DN<XCKdMOusn6r)H;cunT<e* zebn;@e^*9fqq|h^n?Bks-zVjVtC;k4Ld8I7<AQaB=+p(bkZRp2eMD&4h_bri!PvJW z<p)&4z^@*b3C`oV|Fufm2ds`oGF(AEmAJ@A{9bj4i5WPis*ZFVtpDk~F(RlnPPWQA z(Gl;a5ag29qm5%y(E`>1`4cxdtIlA#mABTF?{}}JTA44H1fzm6&pTNfO7%HQIXZuf zo5q{k#nHJvc8oiio~U&}#=gd?UYenxBE&v*x3d}mzQ#`(a;q4lg<409kz3pY@;WQe z<!Uf2e^@m6IrNZ<pdKaUjf&PN4OKELn&srW$S=)AB4{N?iNg0&udi?FN+aS7pj0FE z{TI}#@>}HNQLUD5{Y=@9p_K7Vyiq~uKhd7o2)rKVPUjjFZ86D$$m)kOo%}1AMI_&d z8Ya1}x`lgO>Le`1J+|Zca;z59fr12*$D7eTm&ArL=iYIYAF%L!d_^QZ&0#1ajVhf( z$=y0kDt1TO*5$kp=kj4{COa)qi%*@CFpN^UjOZHe8R?!&n~G-%*qm2Cl8WJ<QbbKu z_T4|!JBivsP0f_CWi&bVHxUdwTD6p!{u@}eoE)o`vd4N>E#>jsiB&6>v1-l4*r}wp z8}Ul%(gNdIgb{FktJdR8q9SAC7}QtnS&HfA+Ow2h*SBXy=Xh#djx9@qr8=`^JzJy2 z2*tN95P*yEO53vjeYVITo-J#rko4<9Jjua|{(O*K56-}?;E+_J=h-=4?pHGlVaeMn z1}#Bd=dRO)3@P^O8?+{4(5fXVt+r^zUsM(?$SpPurW1=6*S<yTYApL=(LzV=(xUYU zjXIBBB~nbbf8P9eX~^=u_NJYM?OdQPD=9~QoG8M6u6@V%@6p>mJ{}2oS|&y+HJur2 z=qw=to{=ilt}rJ@`0{jxT>U*ERLI$l&XmEX(*X=pK@BhDx61qNT36T$`gIAVL$D5u z?GL4o!aT>7xMGUZ^C&S9HOc~WgCGd10ov!#Qs+@6n9JQgracsLwOHo4on){|CooTb z$vpX0r4tB0H|G7Dzu_P<^W+*|ClHLVm9j4?fYJ;WLp9kP5{`T8<!10Ti3(?`$x;MX zI%SoDlR3)39h5^EphD&8Xxt`;Md*GbQmegIw}MB)f9=iS<IK!^u_{R2={I$GPxMZT zHcQ$qHEgfH?ifbyi{8<36!1jvA*vLJS_O{E$XvyFG_tzabX*_3rTu$pKWE~dV`$Dj zj)%_vpLE1mXq6TaM2lr(bdJ%dROUxXBhIJCv+X%~3epuCvReO#FTdz3<)Ma^%_7&= zTFW?BfQ|Uw)|=K#M)Cn*>ip;oEC5!En7QW5{NZNvv3H{LrarK`TI<Rw19qa+^jxiv zc(%I5sx#tv$HW}jT=mnh$lAejV)6P3T{wXrdSOnQo_Y2ziMQKOi|fcEOg;e-ANY2M zcXb!t34odT<(2x*dEi5KMSt5ApFIV^_`m6UmhuBeyT>8oBuR9rKtd*3l>v#H_V~t~ zcs;~dAW*!1RjvK=fXdvYOwZ-3iB_6Ex^kCtTlU$x<d8B2E270$)mlFXL0VWPUd$HV zs)dxqZw;In{ZQUyq6(G0X6Huw``B0FnZ%QBO)Tpt@7v=M?<Dav>4g+pWHx7%buUAE z*opZ9Js5+Al1n6$74~@8BSDJQJEFr>lAyivw46=z4Qd>|9o!3=S8CBz&vx!-Ig>4( zHubUiQ7Tzq3*6&pnkYY78bNZ879fqpCV#CY0?v%65gDYiS+c80T(!n&tt+WxCbc}4 zGd;@t(UU8dreDzO7hyta@Xp!_B}@2n#7zo4YFPgpSbw5y>+;Sm+$%Yaq<Zcbib!<W z|3F%>Z=6D~w2?Rk%4qjM(gx@Q3JXP~=8usm))bReboa4M!zwDlZS3nqQY8-@KyO!B ztE^?3z_YDOw0(S`%t?G^jijDrRlNCEC=Y>G+UM=r-$|Es8P7G!6p@op{8K<$Yf8L( zk1y1e$$hqte!Pc!bmSWBF1L;VQ`9T<0rwPC_rMd1@Mu3QP}^F&^(p=Pm#rhjVFyJ< zab>v-8MU8y>XElT{gX6iv86I^q15CDhGUwS*v9lCKEqJ*yaGM1v+=V5ghP3ylQrx4 zcV2#<`CCR|J%1U$0JRRj5>q70KUT)3H*{_2R3mX9KM)u?BU(N5Cq^QOD_%!)x)`5{ z^Ml==;BDt5nP4zcMI41L5B-RAMbr?`UMGtrL6Y(G=paY$kbOSbxc5pU@j!Q;-F`JY zOO1O6lJuM6jeD;!64Q8+!0C3Kk-U;iU%#mBx%}b0=bi=?o~2%NhbQ^o+4>!!yUR$Y zV9XbLyUj5?lQpHS?YWU%h<s)#G-tp3KypWX1KaeKJ(&KS?FY|5tyGWS3M4?Y`}^~o zx)tB9At%3xQ_w^AqWp=&a*L5To`FPCQwkQLak1ieJEM6iR3J688-k<rz$1JsyEWK8 zDrpNtBik@orkoEcxLg1g3)CdA7Il}m_KBybBoE}7XY-@nx*fJy!_W1o5ik^H;1e+x zEl*we#t7q?ej~0~{BgJVCcu35j3eu;H^XbO(|s2IFxc~@#F|hljPc+DAUndoILVwf z2j|yg3?Tvh)92D`>}g5oKKoey;HVT_9vEaKO+am?h6k7D4WfUIx8?<615EpfKmBSD zY{bLgu(9ak`~th*9rI-ims%5RVnp2H9rURa_<g?Gz&uLoK{B57B)?wV*c5rjwZx5$ zlxw|ScN#YqxJNN!$?M!&GeHJxk}k<6L8W9-%B<>1>Wz1ss=pS>dyka0`;{7fYpyk0 z8z1Htw88QH#)AK*N*>RY>%Xb%#`)f>NA#_HEN}m<Zw1-p_62>r!n<9hZ`XUbuj$)8 z-tB6AD^X<f?d$qhQ@^IiDI_MyBEUO=?n#x>z1GIn-j!)JNyWT#GEe5W=_h_<T5Dqw zAIW!=RyFHWYg*&YnQyd50Lg*Ive(hL_vc1J;@2DZ&NLFosAYGxk@$j@$y&RniRH;z z7o+pk+8iYd@AgYoY1U?uD$UxQOz8wW*f*-plSW#SW!;VMx~cERtM5dAS8KY$|89i$ z-MJmU<7|%6`8n;~<bPM<e|Nn1T|3)39-h%&0pAtmwD$}DyG(mWd*8KYzcW*#yBkmc zpnKy!XwOeoKYu3Q?PGj3(%!x+OrzFy?^2)C1VaBVWOU+wzsn8r40;9)@#z_B+#Sf% ztiBXqfv&%f6Uda|8GEqa0S&2eR`<RP9Y)M?U)<--$7`zR%*T=H;%X!LcM2j%k&A@2 zEwzaREOL*UzfAd0>09Go%0G2zdA(&<6R2rC$jU7R;GDu>Bx<<`r7p^2J%>08g7s;= z?siwxk&tOTq<%U7OVuw&3w7wvFLV3znBV_Q`MVD-pYY4?1OHkT#2N4Zs0;c(08n(O zzaI}|yfuxlHb$&f?!EA~-20Y8?mzMFeFla6Ya}L630}|6L$HU+W_Rq~_IAI%&%N@Q zM!i|vuVA6ub+@aVMuAIw1uRj`>pMKm&bK$ebkUpQo$4FP2W8r}sJmMAz1*+!@12H| z70Yr>I)xnWmEY#S|4O}U{d)7Ho@HH@+uWgCraiCz%y<89+Y|Vi%tsWr8<`KUo~zX@ z<MjGX5f2_?)Ej}H^m~|J4u3578HVl*T!(yeCy#}pF8V@#w>ua7UFcr3s2HB1*KLxV z4ykcL;#vl|)A<siUEcE<y2jN3=Qh4Yi?}-AUQJPFvp5{3j=1+39Ar~N{^x1=8J5T0 zbCMaz`6nAWyuMYxzFogw#m{q+XVkfy*Gm7;wl6dwk&L33*z=k}287NZcOjldo@#I3 z)vYFW#@7n8`usN~%xb-7L*=fCm%GQG3^A3wwpqEZjGgcF-#q#I%eCBO&wsOxU5m+& zw1rNSF(2*J`a<nG@p-gC`DtCpD{(4PBKcqGy;<E*L%t-rf|;X55Dt90WG>R@{Ymzs zo@6gF)V^zt@$@of+V|+Ls*+R1q{>1$!7C}}aw~PDnr+4{QY#6e?dO~23Jt|t(fA57 zIom=cbH=n^#=jCgT$1fpH{*5@*5-VuolqxoO(%I@VI;@vsl|I!T6YJq6R-UdI_Bd! zg6ATVCFO*wXZhFeUdW&9`pjqvnFA>h+7A(_?|D*JA}Nw$&tWMkb2lk+1wKo94-oS& zWa^W4?rN3;Ddf4@77_QRH(i4kefd-ho5=j~o<j!2Pr}>IaOI?K0y?hb8+J+GaDs*^ zhNH$-b2q_x;xJStQFOc4v%AN~#;D~gQ?{<d{jGfOtqS&>ETgkLP(HrmPfb!Ct+!4; z$46UZ!LQT=&0DB`yp&U(W^u<qa&i*QQ3aT_fz#ytp|8`<rvKR2>2nMeXDb7fBtXt; zJg5vRiv`+!BTWc=9aEjJgBF`k`s2Gw>=!H4gr;8=I-@LT&cW3zc&w|1=_c>{L-c!` z7gW9yMm_=4<fMo_ij*F+&9H3a<Nmg+4wIQ|)}@U^2*hp5oPYW<Ccn4EcCbyv@bY&e z)jMVk52NNM-yM@0daf}akyl(TjHJ^4ty}ByguAAxoXqLA2=d-}xn=&|pVGnUcWU@m z$}u2f)rzkjdx^;SrWoh{biY)Hwy@kth{#AwL_OncK^aLcN5wb~81rS#a=a{v^qTYc zCfQyhGdF*6FK|wLSTu*285wwWairVeQUVJmDaV64YYWdOC=H{o-bjv>rSU`lpxB9T zN$>*>N^@SlU4>GbWcrlo!SW4ew_6GA+To0(9jTL46{gh5F;Uc*e!NLKlFrGGh>3G1 zv6(aK^*&FN@>_XLSFgKxlvE|d(dtbEx7&|sR`t?7n;z+9+pJa`>!#rCkCFHBzAq%H zU?Wb_k@%VNC>RTwtp%&OlK<kv27E4I5WU;lk9d}6v0mv@+K>1juA;|5=>Nh6ez<%d za4r>Rj5#fGP0WPdG@lEVY~Z1+Px^Y2?04ytUYxDK6%D?FeVqI%o~4Xqoyks0<=DS7 z4xcJhhq42IH=ij^4LM%T!AH2gUSvJlPRV{M+k$z1|Gh4qzd+@Et!$1D8>za~r_Fd` z$XmRL^-iD4<ttK1M!1v<e}tpNjaiS-wE9268@u2kd2gTiE0i-VFbH~}msM~FPxYyV zFVK(n^ku#VrLrhZDVct5#C}q19l6#>^hUL3{5n=VWA1$9WN*V*9S2uy)NbKCTa>JV zZ&APeM`O`ay-{IWC-&fJa^>thp$FK}MwHF?y(AQDl!A7_L1$2aO+~_t3wCm;X8B_- z<iGf^@9*$ud5yeOv%G>U1%ns4@L@1*R0akL+z%l86F93aKwIZM3AZ0|KSH1KH*?nU zAQ$$xN|jmIul!6}Rj{8Z&1%@!`|Xa(Y4>GuUe3UN2yg6yf%4uyvB+j*9^i|4gyS<L zhj@U&YRV<&6}eBE8K=yJf}o@u>q{YfV0=qnY?FWdS#&*nKZ3Wi`~1Dg`BMwAt}#H* zx*i`^tUBBsWa*Xe#vk$J?L`6XPlO>!T1h#WRfQTh4!e=aa5@v_iEpPo<mA7-IkWvY zig}haJjEwu80wK(<JkDQ!nyH5I7^Mg@2QdaHutjBjATD~(>lD6F)*t?YZLf(5xf7_ zkr{}(?<=YRzqJeA+?v6Ym$_7UvV;p=<FTqnp$31GmkLi7a;5O(w_NymGA3I)ctQw> z^-<+6XIT;i!9z=IS=u$37;Yo^0hPnAsyYz$Mrlzw!@AedJuR0ZKQT(Jwgn|yPC=eD zYMuDy7Wq-RZa{zdyGlRfo$*}*MJVWr0%^9gNh|dVXK=4j%1NWTPZhXmF&*D8=L>KB zIO&xT_8SoTJ^AomxsPP}6(61-bbE5kLKg&zkdD2zCZ9PCxI1XZc^=x4v)_mO03AD& zfbHthXe8d@BZO|%E3Aj&)w5L|rG|`>9s<WT&aH`#>uLa_&skT$_%ySwy79(aS9|{B z&C_-+{CS!-B7+6cwD);qpKbSlT}oIdKFyES7GDxnSyrt6&v9=gCA7_3CoHmjwa6mp z4=;?4R75pCY{xcfzRM8mK(<LaAy1((K~C22Le&gmINzHG4gyheH9ya+CaUTx)#li1 zaRtN)y!z$Xajw`en2dw~3SoP#wzr6UXJ14)>|r&HTW3S>&Nh;;IJ*3#%#3|Oz9xeg z<lFsSqWX0PNICDiwO}##@?Ua|)qfS&3j15Uhw)+GQUeq0e^g#7?Ef=Y3j2S@g%8!b z;aR9=vA^{;!G2g3*q`rNa{onZ8uj(QQmWu5qNH`e)1%btY?O{=!@g6W2#~u7uU{3) zv~Ty%r(^C35C*014Er!iKgklCe1K{NM4UT#P_@ANN1nbGJa~aJ?hERn2jBSOYxTRn z?q7Irrp8{I{?ysRD);rbPVm|8@o=M&{8;8rBXple_9)n{5~Ti29+SIC6i$WI56{U( z>gxXWn>rx%z3B{6pT!#wsZW(c!l;kq!Uz9-;yI9E7KOaA`yc#}zuiFU54p&q^hewo z$yI>X%Y2YwS7A~JVS}TW9$Fu-I&hd+veUB7dX?GOps}dh{jX0D@+bL(cC`S46EEi$ zh2`2<IAqsod<<DNAmjwP6T3L<?U%%dJtT4%ODWV|80(Qfo}cJ3;Z&7B&@JM%tOsiM zKY?%4#hN}r8284djT3jMpApw;1mCzZi{PJdtq^>(_b@)JN;M}4{<6GO2)>vr1>tA8 z@Eg89+pz4XdE|ZT>_ZVeHadgc8h=v-bHw=20l#}FMAPr>f)E{6prZ3byw1DpC_=`Q zjGq~5*CcV%9XLvPmJwY`7H0b><R<is#Y(@}xip8~Dt|eSJ<<mWaI!r*!YEW1PCFno zBlrBHD)M>i{ZQUepOhGD&N0ODOBr2Wor1$D9Qqrtysr;3*Q3b7H3|t2*SxPvc;W%b zCN267C)59M5sMP!$N5to_gewyDzlH~xW(8Y<TpAXit3o+Y58dQMU7k0DDWge+2>!0 zb+pp)^aeZYc1*n#O~38&r}LL0cHW<%k2?Q_cu7hkiW3_DBOVQf!a&J0A*!QFJBRl( z8zU8eko7vkWKGEL1n;+Ae*JhnVP8eQx*O}&I<J|RYBZf6fAMxk(wW{*wH3#GlLYWS z{l;;Fcw!tk;^d`}0_bGK6yv#}3;InF#6v^b<}z@%d+ch#K=TG~nLDOo1_57h8uQru zklY)w8@wZD#VRGngMr?e09VNU*Qwpc+=wbRvV`t11LR$9->B%G+NYYqz?F8DjlUKE z+YSE@cW)jaRh2FNrXU4jh$jfqIG}|FC4xW{lrog2Aiyc8Aj%-lQ4w)QsRC451C<b} ztB>N;ZQt&;wY6<*+p+u7(oP8=0a^i3QE>oqs$)bVXb2+Y_g(9p8iH{9e%^b3y!Z0? zK%Hq%Yp=c5+H2Y%42i7;$e`CO0Ij)!xn}y819reYGS66e1?9!9hq~2W0y-?FLFYEL zo>4QDUErG?I0RZ{+!&07&obr%Q0q?dxSS}*yNKE-3Z{WtesnJ5ie`6q`n9S0a}Z2@ zLP4;JzIaFbU#z-R`!0TMPTlKyOdQ%H3v>TNiYW)h7*)nQd(Ts3oX&nE`8$+~n##|q zFPV`0F?`_M|8M8pahJ}TZ_&49&o`TYo$oTdLBs>`7yrBYcI1sw#GCy;G2hN)8+Bqw zP&|}*2Me4yPCRZTh8Q7-;U{1C&Hn()5eh-!(~e4!oN50z@Z_GK<H;5Om+)l4q4C7Y zLr6bU=<T3_%(Up6lJ|qC_I>H{$(Y=Wx>DX|^oy>GzfWS6=^}Dr?h;R=4|rN0UygD- zwrxLWUBzb&Ge#|E!NpekoD(I`-W=;@%SD})oJ<6Mq9f)&f(IpquIjk{C32C34n(s2 zS;W7Bg|T-@hsfzEXMwv)!q#6z9wLcVj33%1o`SHxtIFdYReKBay7JP0A}O<nD&3y} z0g0|umoDour|PGqYG;fOFY!eGEBVNSa^G~X!s{v&3Qa2)yW}SA@0+HB|B*a6`5h*c z__vK@&f=Q(vnc`|$-OVr&byiMNL+;Y={SK*EkXQM3AGYmAJSsW3GaDLQv{CetZQ}6 zm3%CM!R?{M?~4z{1~Ux7SO~`F1dXMn2KlPey3^A(QMuu8Gq&AR8Q&k0{i3A*#W#G* ztiMXi=uDFE*>`K?(B_cmlVrg!NIHW0uV2%G#UbLRSh~15w%b#(lXv)gX*~`0>a<8x zJbO(4is%m0vxQnh1QzwP&rYqg<gS;%$IB0bkCGH9#p|*IJVNpJ$)yo0S<UeXvxTpg zD>l0PLU0kPukpb1K*$HEUcUhy5k=%V!<D!MpRmXD{AR_E1;K!}Hkt4rz)$hD0{Dm> zF3)S8bs`~59I_ZPM(-wQwih~Cqwe=Y_K1n8mGgxvOLogK5j7GBlhQMAdKq^aHHnBJ z@Y9t%R3w3G;IcdCj|eA`QauM6o+jL_r}8=FZo<#TnabLP(K#fp?pk{5GT$$yHkj`- zwh-g!#Q%j7Ov9|j?Q@D^EHI~9?F{E)o<Y_2Vf?pP`LM|qF89vFZ_S!`@xRBpylkXz zHmA!URPmM_5-YpKifqkW<Vg-Mpawk%8%6ysDRJv(GMW7zq)hi&E=@m*J|#cF6ZB9L zmA#u1i-~W<ASbyJ#&Ymp*dunF*X@bCa`>UcuZc`U8vG@o1-z^5JE_~{r`CAYxUDlK z#r)FY1?7w8iOceGP<w6kTh5X55cy$xs9;u}{ZmHok?gq)5dJRRPO_ui%PEZQ>94ci zHSq!w^saATyTF%J)Jt}V?Ivfw#s9EMXXsrXBs!uH5{egJ9$}xpJ#tlS+dkscAnNg+ zkv#M}HFxq^Y^?{M)nO3Wa&WA1<Y1l&5c}ybi!9>;hNpnO%5#5<^jF0vanxhQQ(Fh> zH?60H#>RVwt;dAQDibNzmacMJYI;EBx@7;w^t7ifu?0$ZkI{Px@T`{FlOO&QIQe+% z%n$yZcW3LXMLtf^hY%K4(gR>pa?%5Q5H6_?m*7jhdNxa*WyE5Szjblx#%y_blJKoG znYfYGpb&5^S#|BGMEor&=td7X=hHvCP?lNdeEJfHzx+AJCu0)k$+`5N2<OtX3vl^Y zPtodV?4jx*lKl}55<TU#^lF~7e|}=)pd9g&z`t%xL>|S@L`mA2n`&;@i!_cICXe|o zm*45}x@vx~-!77$#xc&UG>&m+X^cB-V|=`ZHc17}+%}FGtdAPU%y55A_jiK(JJtQI zl3%!3qx{lFxz?T89pIJu2rrl=cARxf<RktB9}<O|-unO5c)Xn$4>T2jMsM4!K{<`y z@5uHgb1F8Tg88OS6PXBDa`n+>NpPJlUnL4x@%jHZ=9ja_7a!2m#L&)kpA2LFZ^TEG ziNC35BIe$1#_xGVW~4FbVtCM9GQk2K^IYajUMn8+>#mug&wbv{{VjKYP4`z9MmRoS z($HjMdPaUb_)18>Kk&SYlsq|11nvXX)D8vd=!tM3^vEj3uhiOejkL|~o+gr?+{T7I z#rs-1R&%(>0UFT1hy_WN|5^Eel219s+<`jbB${;3m9Jd|xhN8IqylSb2@wpABJuJY zvlWSDg`J5?&(e-hB#Dn}b^7AXv?6gcm#XG^i;I++YcgK^8Aal2yb<mA-{p&V?}zxw z){g(4d!zO~nF2?teQ@pgJDa5WLu$vj^-ni>2<^CUW=1<cM785*YnzUC`~=aC_p-$f zC31-9#RtjjgXqPh;e+YK-+cp^49h5*i?zRpP&7}=>TTigDCwvfZ{te-M2}u8^@&Y+ zp8GHsc#Fh8j!k)*yi_&gMO-QT&*LHme{ZIG)fv|#xj2@jJFfq`d)ABcYwSBEL{_xd zE6Ry7F8{))VBbW&qW4~dbmQv1#fil!@94c>=NmPKAxF(f>AT<LdspB6!$4Qx4Ko+6 z0u^=eF|}S`=m_FvV~S>XDj$X?(>ec9x8(RIO&%=!v5pez+um;jTZL#P@ef+n^l4^4 zAo{Z81<xWCaMAS2;#B*{#%}w)+1CN93)p&>w>kAX+NEllnE$*@?ER_?P&cX4x9H0v zRy#+mRfzoa4Ew{6()1&I)$)*s>_w|)ofxd1+txK?nQhUYO}-R-%$V(|_Uk!4>!LfY z+_T*HH1<hBtGsQ6`j^D_i<rq!{)37C8fU=|+u|U@#^g=cW-oYu;Sp=wE%+-*!0Ime z@7JUkyv?N|+*U492sf=?di7xjS;w1%ccr{f^nUUN{I9pC49(B-(5R8!39GzVZD6+S zkJI=Tdqlx3$CF|2Kl^`S0e+6kQb5N9ESq56<{K4B4mOU23FEEK$%$6D)J1(Ovhw}S zLqI#EvG?VZ)8lgSUHu5&TJ5Y;*|yg#qQi26a=iDeJjMyHqjR`IrQ2ZGe`Q`|xN8hK zOj|o76+1T5UaEBb$~>{@r8k`SkpENmzUr!A)P2aEE#_<OU&1?{KDho0Be_%xa+cfO zSl}L{9fyLPATO1I6mg{!YH*R7&=vTkx)eOi4js5g3>BO?nGT^OMS8&DLRqmr<?t2n zTOZNQcJ_*UGjt{S_EU6wG<{EgaEd19cIZKtx5{9GFM;eqyj4ij6n0SgMrlKhV2@4D zM&+`?agFUz`8S9;E-IJs#x;T+Cm)FstdNV;$bZ{6J#tXFBX6(?tx{C}<l1ah{+x$+ zWjm-mz(M6_=&(qLX}=YYiuap}#|Pa$XZx)@)DDl;btQ$zE(${x)#`iTStQHW{|_j< zr#Len#|x$>9hX1xf)NFGytkJp2Ow?Pbs40+Q0qS=(q5C@f_5+*zwQ8})r4qir2STq z_GFMY;eGh^G``-?rQ+)^xsbnDU<)FMgRi&BOU2h2T<NS`&P8h0dS?0{nLb>@nl(-E zm1Baz*CA>-cJVb60p#pM!Ph>U55(8MW#Q|IPtxPd1Yb)ab!qyYA-t}o_UAGmlGYgx zw!Zd33R{1;DjQq<g@0Jt4qI&`A{Sfl;Eju|Gvy<})@!&(jl1cD%<RSsC-WxZ9VhP- zy$4?dWL^KBVLT$sNjtJDSr$`7CYwZEudN?)wr|U7(Lu*BBr4HSh*aM^Mj8;oGIG~{ zz*(=hatI%rQQ2)M#l3t*24}C7BQblQ$CLO5#ag3g2)HzVo3uXvM`=E~I+c<20N0^x zdynv)S1Bmmn)v7<JH)kv4+(E4s(0z=-sLV{?&L!LVu3LTTMk}smY0f`8@ST>Y2+d` zKX>%W%umMP`@<DKGx(m9p`uyxJa`#@??Aj<o`si*C&0@y>38y8=+<Jy06C8<afBJ) zh1+AEoJ7kx5hL@ezw|_p?mx09K1y_}Rc3q?qV4rns(nY^?LV@h>2r~L6Qj}hjrPqh z3n!j<pP{Dmv;165HT&WW>`=nObxF$n0F{fnFG`k<|7eJHa?iPZwY{Az`S(8~Cq0b* zQS`GD*eq>~97B$i=wXtgtQ`5gF>)j>vt|PQl<vz@>zHrF03m5{k+(?q(tmV8#=fZa zv9b4|t7I`q+*Y(({|QBWSF(ZqasLS%WhIx6p@8<MIET?n+hfeDMi(Ty#@EmPN(z%5 ztz426-dYqXuKohM<?T~RN1l*ljc@1Q*r{A&v%HmmW6|)gGd;~F&N`*_Y{XOYot7_% zeqQ}121fR|Qhq9BD0?eqZs(uWCv{}XH@%uJkNu^JO%XbvDnU$!he@nHGGQVI6QglH zRy59t!SN$8?ozK9=P})@$$o?ABQaawHcw{xP-bgaF4Hap&y+v2b0&!@G>a+{gCtE( zI5DS)6zhEjG-3Y_vj>QipZarKqgY`h^C}iyO+@KZGBc&l2@GDQZphRt-#(%Pm`L)k zondSE;p&Vm*;b2Y(Lr%Ue%(2nz|D9>(t#GUgmi-Bk=T(ueVV!oC!e}QoXD;(s`PL! z$@LQ?7k~y9yW=pHj%p*Xkme@>c4kiGYA3l+^8AgCp|ehVF)ptn!MeGgc^GLn9hHH% zC=vniAPzKfUQa9t&VN&JiKZ&z{TV3$Mx7s@IMw#BFclA9tESrI_*-=(k&{eou{@AU z;u9xe2x?mD;xD!vGk$ZPE&0I}2W{C#W!gVr|Ky-)W`A?w{^~&e#DU)*sLvArm#RUc z>Z_rDqMzh4%bo~=&1mNzBFWRU{6%1YuEVguaP=$gm|8C+DVM1|!5f#U{Z2j-rgk3} zDWZAAu^FNnFRbQG%p2u@&x+WoH_ER{3DdZezgS?I2sG+z9p;%sjYn{$75lkJRlNO} zbj8ld*<KgA)o^*Zdzo3EjJF?41{=->vG<caio;2a_`3OD=5&YG?3e!|hbvX_Z<y5w zbFD*ns=vS|fOUtZ@Z7;>{M>#`TNDotgulkeM0(&*z27;1+}+;=FNm*pWZ}NjgzoM7 z1#)tcE^CG<;kuw7hn|wq;;!=2dbMa(mV8AeVjX{=-t0fe7xuJD3avUZCJ<F?)cPoQ zt`#|FTBU!tQFpj3Q{sOAb#rEQ?dMaGo{rPZf?o=C_^?XW)mO=hbNS3oPZEv~&_iGg z##!?M#E#zCo!g!KPQr`6<j3j84QonU_<y5O(!JOy;c4=x%XhVnvnCDA(M)%4(wNId z^B@j1cvujD%F&LTT12*->Bim)scBo-lbmk6Lw+R5x+UL@EH`?Hc}&7|Mh+$#2PJkU zNJ#1-dZ-|t6we<_X|V$iTrGz{iqFHCg6cPAZsItHFiTD>WM+PvR;AZlirzUB0GS(R zCN3v|M3d>?^@|fK66XZTE+6URo|#K~74g<A1KMJeBsV3Mua5DNu5xfFz8^~_CJJI9 zFu7tx9!>m3qg)px2i@dO#mdMtV&FN>$+9WaFbVhxnR{b4!4{399rdS};$3)hUhwX4 z{~L(R@N7$V-ilydQG6_P>gG^lw68Kgo%D=JQbfvm#XRYkzQaH~dT{z~Fn44amM_Ep z0mXcs$CGk?3yfbmiM@Ii6K*n~w1sS$$&)YJ)n<1VnJH~=<#VVX{Qw&X0MVm@1s`?= zjhnS<`T}N3M~e8iA5-1nd@5hHYg)Qi&h$3~jUMzPK6>!HqoFQt`v6wD@c5;4L4r34 zmaDGTSh`E}CvX`*{}Ko3<P46#NYOK0Q||d@Ke)~j1+{CC7~Ft1qxQFy(bI=?u}QXD z^^j8iB%V<V{D_yPUpVQUB89$bjJ%)#dvd7cd(;5v11J*YfQxYa3rSl{lF1S*&Pk1% zN*ecck@89hfZSa&WX>q~eLa>uIc&X&!jd!NSK`;sLDU1o9@Zg7WEg1EZHw{Enl(=R zbch$5H4M)q_1+L)DfN+R<|i+TbFeh}I`~hyv?X6CIi)5vt<KCBLyJBqBawB(7KSdh zF`kL;cv`TE*2+FD_GyR6b2_>|0UjA0{>)s_Qa?!}Z2n71^2dN!t1{RSIotlok>jr$ zzdC}k)DW6<7{81&?Ek{JN9tig`$&b%*u-JzfWB7q0e}YLk|0s%pd%No-Xi-LE_A&D zie<nP{qYGrvcCco^f?g$^`+aJ=1Z)_BJq<TLv*`5!Rh`=YEgobO17oDY>PeIl^0UE z2a~(-X%`_ywg@hq+@R-bYEPX-FIiJ?o#~!jsh^`M=^n+edRCELsy%bapIzp#bmSiR zwJ1d08dJffBh&9&I_E{ako9OMdwvV{?gROUqOhDlpvFl|3rD1gG(90;)4u*I84LbG zh#s5|Bl}g(7lxcE&rlZ#T)wAD9LkR5aTkdv$V$oTwapcaUiwf{<&n>tId;#Ji;RFy z_rrT<ut-+~&utY5@W&jY>2yuUHO?c?PSiMzkX-Sb!p4YgO@Gq)p)N@8_0(`xLDS0_ zd`$Q6B`p&tLE-n(N!)16x6P|Iiihe%s1F?JmJ5X>u8@=O<iK?4|6xvN!||(q{3B-U z>byuG9KVsKE~Tj(>1^#*?biXFB}45_vk})%?Wbvs*xd9N?I%?*(yIqkK|xak@$!>u zH%^|I>KuKN{yE(WJKfqmRlAk$ROy=J95f5D${eU+reE0=XZ0$zANzTKo^jwN@`xWX z#2BfGEQ_-CijLl?^I|jZExb%+xN=sQ-tW6Kb8iOnplovn%6EPFjwt&ho#@C|>+yKr z#I`n@v1AXkA(`vAI2G=uw1`WBuTaWZ>s@p5r1TE=c{}+~+xs}xo*)_rWQ=6PxjSr) zt1_)w1*7CJtBq!2MxMyOu}@o-E_D*I8Wt~Z-{l3t*a{D)QMHCVOnH4Yi6=&0$p2mR zJ=6O8ggl`lZ#hX0+;tjC1dBrchRE^my<1OFP!u54L*{Q@N0XsgLqXWTF1lV6AJmf= zb8Lm@^1KSqm|V{W&$&L&ktM6+V~%CpeLh2|@UU6J$H|xQ{`(Sy&@Wo!WALu^uH&Y0 z3}Lizikpj(3e)<1fp??#3Eo5Mkng?MbD1?q&ijR#_Y;5i-V9K(!<@sZ=d#Rqr*nyC zwo`tz`#kO)CdISlZ+Rd0u6;qLTjt9e+VHP#bi_HYNjk-OO{4Em={bT^!q(+g!O3Ck zf&$SUST|3dSo&eg*&zOYs806R=vOF7TykD~XT#UIv9CLjCi=aCkRO_^npn>2NK}D3 z0NUza5KaX1D#;wj)W%RdTx=!~F`7Z?Fg3`oE%s%rSvG_)>KmPEDKP^;k1jH5d-5dY zA5~z~c9E<3``bDS@xG}j6pt2g=vQKfPiT6r_#+G6_|L5}YF06<vDT0-Eu-a(?<L%Y zJ!`}M!;D(T&-E6{g=k<r4ZOhHkUvBN@?B_ttJA=E8n~svsC$fu$m|^Z`J=or<6~x; z@n8|_qOsh^J1Dl3dkH~19G{A?V>0e_Y}#gm&b<l{pW!G*?Rtmahhod~Le_{@Nv>7< zH=d=0Ls!lZ#kTGb$AfvPJeu^|#IJ_rG1NAus_D5DK3joxb4cMcK&ve$=pqOln3xHW ztdQUA7rl!i_G4haXw;0|>C1`SUKuypyM&-$L7&}^?*v{};99BYb5$Xg3#j`=E0`CG zj`l@4X;F&ysEkJ`I+LO|`Rs>i6E+?hCwDRd;rQ%+Oa~i~8S?A1XY&O$&$*qNe@V?D z|LVvoVPs9|W|#xLL-Co~6*GQ|&;EmaO%?p}DJx9h!04o&w%e#@1oc2~;a8?-zlz^^ zCfIP7OwXyOUWGbyVVg_`d$63GT%)c72!XZo@6STftcro8Ed1E)L*Dwf$Xq$>Wn)lT z=du&Z(fLV<<h|SFSa`{{&H1$6Ih2#X$XFD;Z5^X$=y`)K6P*36lNm^wf@>8BCtNJt zE;}1swG`K?MPTnq5pB1$?SPi^l1I8N8#TX>3ay8vMRWdV-24=Ze~gnASGl2**Q4k! z`hNP%Ag5ZGUby7j<T6Uzm+5qt^P-waxm@mC{lR<zO0IUpSojU_Ed9_vUq9wUSxJZ} zjmao=H2oEPNOdt@p9PsY-=rZEsaJ4t@(NW6{=~Ov-K8HUOQj#;gqOYlPaKJ&?vjMJ zm`+2_3mUyga3y~(|FFCtK$aT49eK=*QK9$!3uMZ?JtSLI+`I8<y_*=;yMH+EqEqzl zVeZ6>B}-l)zBv?c6Eq21eNUR(m8~+og?ykr+F6cjikI*JZ!61tn^cKiYKHVmE~-)& zQ&Sh}7UJ&DYKp6QEZ+@Fy*5)9t~W|Wak)NW6X%oNs5SJQNLN7J#)AQn+aq7@<itYJ zKK{6Qu|VEZQCNtI{d5UW;s?RaDod#;j_8(FQ;4<AXIgi_HP^s3!`A$Az=jCt&Nuv6 z$iVjq!9t%IJH#~uAK|6y&Il9TMc_|}6ENbp<eA2^#8I4A6!I)*2TE>E4^Pg^!+P%{ z#};UP9yaL)=h$MO_IbLo1F4XFP+{@J)t*#KPr}wiJ|HW+z4SxQBT1ZBFx|Mh@SPZY zvD%G6qoja;CJFIJ(8I8Qtx+TUCk;<Ua%)@#YI1mAQ`Z!oi@$CrMj!&5&)GDMc+Qe# zqS^E}Ad=x2yw<cvd7>Z6?wL)aWK%}JaD@C0FQyq$MaazneaM6If>5HIKqmmSLdb(> zMP*`UK`2)56FH#Lv#HX*qB6ddlwR~g{A<{c2QHipe)wCB8nM^{zpBy}p&t_YYW8KG ze^NQCBZ(C{V%!rC(FA9j0$=ioMT+N&xd{OFq95VnnXy3cf5=oH!VTooE?E=J0Su<+ zlHzjC(ecc~Ya55=qOd1YY|8C0cfQGdQkkeMiX2x-MCVbVL}gxOLe6#lGQ`1npd9G7 zWEp2a#$NY?Vz2wm`TOGZIocQ|_wD-(h+;4&9T~gyN&@Gtp>v{Ot2MN05-ED)?@RKA zM6C!%X5zuc@)K_|Jr#0f!KC7;=T8tM#sVx_SYL8DZK3R)dXZ7{Jncy4)R|^tKrywh zky?T2T<uj@RGnWZyG!4!z?rwm`q*!JZYZt_^WThQM{F1vO=r?x*x#&c&#3tqRnp7= z`-z`~`an2Bj?1DwM9EP(>oV=@MM+lpM%Nk4?hpTvRXbN6%f(E+h_5mmbBpEDuA&ab zZ94la>8wD{l?!qENmjk6eND`C`bvPZ00T%=$$vAF6L6z;yKGv$PnalZ^S;yb+R-3X z!u#v<2j#Ryif7QkEE<qY`A0)~IdmcKCxn6KTuv+jRDdqb*9^HTx$U1aiz`W?X(oQJ z)C(Ktv1-GNmSdS00+$jd(4vPEHN_irT7Ol%T7H?&S*$@0VX5a<$CkXCI_-`OJ2?#s z<Lno_Yv_b}k0ho-06s&48@WaBe_=I1A_TMHVg^>yN<I#=4@BeL$n~XdZH527NRVYE z!f>4OribnR%IJA)!pz-U+6tfMEwA?fg&$T%NJ{*cXN$Ru^yhR2RNx8kxs(i-d=@V0 zd!u|G`!{mW)Vyqm+MJ6^>oswIN`KR~q3Q40^nc=XV>YVB9YigB<7@POJi%c$?X0jx zfY9<TIByVU+nWo=-UU=t_10KVVwW~(1|*p`fpXqVn{I3>;_H?A^$j2Lyss%Gti|=6 zC2sni-X+|o^@F@$&ISrS)&BRUR~R>w`Dj1d!&{p@yjjhY>Gjit#+9r2@49+QzcJmI z^<76U{w-fOaIumn&GKXgPj2AJjcY2PT=h`R4O)kB!)hMN{Z^hs3^zpMXuCE}1!UGG z(2Pd!<|hV;9Ke0y9j$F`ufa(fBl<Tp{t4p~x~3zxf<Dx2RONk~(phihsR?VLFfV_T ze(8SwYaTRuD_r2hq#xumxwQb|Wfhj}Vj09gc@6O7B;RnJMcrpe&^gH$oo9XAX9e=? zap&2a<VTXSu!NlCV&~aW?su}Dlk=QseTh1h?+kf1!>!MKcDOv7<UH%`K9j9kvfOzV za-XqYke{7rlig=s<ynzDWAzoK!^<1J4~%!jlV~T_ATd$N)AMA(h$3DNyx#@7u~+pD z{j=bC;Z1xkc#f6L`(MtrQS+&+!npTv`9!?Y$UhbPZwAWuEsx9hL<W(g(oqSOwlozv z>+wDzfuvj6$Tvn!FFwFmGVmT!QBEW~fkyP5P-BB2usRl%)=#TUcw&KP^*hZB(m(~S zk!2~DY72Q<8g}!}Jl`SBd)P@tjtM2ItEFk-mX}K3>2xUWJWF`5my&!o%8b1zpP_Mk zi2vpMyPEzwszr0P^qR;CW^9>$61|Nm3Zq7jjFG%iiPRU-Pt4c?`GOAb|C<a<BBy&u zf7OuQIn~|$k7c@hTBf_~f)@ysriJ1?fbbIe3Y((IG3=MR`znBZ+Y}yK-tGmmdh;tI z?1HV{?_bw7C%Ehw@Ur?WvZ#+*Ey^V<aF%x)o0kb;%liypKs-N#>X!;P-F%`@`M||t zZN!(nZUE%-&v=43`VfENqr5R<M+sFuY^UxM?mm$bH*6(xv~ZFXdx%bUqm#B|^-IZZ zg&&BVVR>&bw0}>}(*8X_v%zJO9Ol6OjbKwW!M>OYS3L2*9l3b1JN2=^i%$s@59zY8 zDknYF_A2Q^T3^rly;iyyFTC<kbZ{mwopB}Z7YH}~J|&k~V<FBPrp1Q$En?bpBG|Hx z=kufEDC^%4Igg=UE7u9{2~tltVZN3#-<)iks8-yFdzASw8@>6cDGB9jesqxJvX(_r zLircv+I|ymZzhHglM1a@R@0B<_p)Hc1`Kj`XZAwY1W1`f`a@RrVyObbl)d(%349-l z7o_OA((uAbKo4pfxI};7={?Q4?|TEk0#Dv8Ptou9T!QY>ai!rx%$0;IF>gn;e@@gh zbi4<2yvG4_ya#l=htToW(KzdChIY5QN`5T&XHmKHP@u*qN)aq?{a9hSi>B&B9j30n z?I2q)W)^n{x|)fQ^_;*A(YGMfSp5i>d_m=lUgR?Nr9q9)X&u!|_=$8jOTI(!F9>@8 z@1kmfWC_bcVl;!O`5Z18R7(e9KaKeKggCEtFj+`u9HaM!Sm2B&1p}4v40|L^cuwU~ z2~RN>DZ(>sKikXsE32sme7OiAfF3QTD_~)myI8<pk|GM<{4qrowsECZeZWPks@|EZ z=#X~gX)UWAc})sCxsm>nD*aSe>1X$4I)W?QF$i-)m6QTrEI24+n}bVu77I*H_i2Vy ztAy&ZRIQV<YK>=VO|Q=)EquuJc~Yi`u!Y)zd&w1<z0}(ByP3EiZnS&xhGk<v>@a*i z;+Un9&)e5@q5S*X^g^k9k1;g;6RwrD-V=q7QdXId53~^SN1RoAKEej|8YDM&I&b59 z7m7D=sdI3()Zy}xYk$f>F;O_usXa2rjQvXh#}qGc7QeS2uN?gwn-H_n;Q)LgtY>~2 z@IOi!Wj*>V7WfF^#^De<{*VIv7hGvaKH?(Pk%Fv_poJKgA&<Y+Dh>($zwAwq0G5Jw zXM^Z=P*{|Mk{g^~=o2yz^!nv4O0W0bDD*n;=rlG5=oI*YX$bFNrL^ZR7YKKG09m}W zjlEOym%W*wM4;PfYD2V09(@vwWAfA#KSAC;SKFE7wDX|T&OB<SogPj*qqUs_xP-QI zY`UEjoOT`?<+k%eU)tGzfwYr_4~~8wBv?%Cm(!;(j#ala|41#mYwZ^8)O2)Pw|44@ zzx<enR~p05&;q*bim1j#n0zjEo^oZlF2W4U6c5Mi1=O(Z6rYLz5DR<_|375or({Ye z2MU`(?s`coK|W;rL5k9;7|K%n1;KC3n|b9et2#u+q8(S=b4jCwbSAuCimZleyvt5q z>a`n;+63r_F!E7_ylKWJh~C=!iQLhI9oU=;yI>y*zdA|^Ti(BQR(#lgz2L*pXRp+G zs^TZO%;?sRjhD7f5mZ>i-j^>I%z&SR54Rtq_^@}RHsMQlEoPoZO-bQ{6?l>llS7gY z-*+}@q&8hnIx{EFsn<tG!iker`yPL{(#q{+62cI!<z!+@7L#?!;Lc)v_IzgcSrPKT zZ`2&c$`6-(<)&v-Q`M^EEzQg-`cNm^<5+9Bue_zvaPmop{U;kW8YGn{>{F@Z{zoSr z_Yc>p-15~GGT<@o2dr|{S|pkYO=qX(H&OVh$Qzb7;*|eyr~K#FNckZLDgR3;4|3+y z0$>}*hbotiI9lPhVuTB~jTnHF`IA#{L;iEx>F%^ssqG9kw4bN9Z%3!)1nuXqOWQ6s z<E^siOwDttQ_o7Tj@Rqd^HG)bcho`Z*?hCeX>zuVLqCXWZ^EaAeJ(t;14?}m6{Ip6 zyo;pko)zHXLb>v<m|Y`6Rqwgn88uOAX!=Y7Z)#44pop5YH8@$<TX0fo{p5+Uz;c8q zmq<TO8F$V7mP=i8i=|d~&8=)nFWF#AJ+rz35i?{>Z4M<Sw4&5C;~$s}b~m$O2c85Q zO4nlrY*oX0d3Bq|sMsU;R@<2}iTnW7;tmikhVQ%^l#cH*7DQwV&~fOW5mCZc_l}tA zj98UC!=`8~oWfPha>C*(x!@GpoK}LBgItsTKRSReG`B3LPlKcYtGHy7oIn0)E_aFX z=p;VHe8Len1@byp-`TW!bu^ZCEg!ZXr^rYJsm;)T3NN$HD?k{X)yI~+Z?2pzFW*bQ zTyE5@l^X<{R3&?&AIA6ZmOQHEi%v6Yp5ir<Q>&yKK2mysLK3?lx+_tD5EWJz=ZlsV zbhlb+itS^3Pw?RqhW9YPNJYK+;(!BT+87y(!g7aNQp>#0mk-LBb$qByvSU5zrKs`h zkPc?q&?k9r#=kQbh*{PwJGIAenEtwi_M@U72k5mH7z?M#JLbeJ^9Dn_k4@x3!u#p3 zMa|B6deqmj9eZv5@2IWO`&<5}f}F(AKO&h}qi_Oc81)^9Qc3h`Flv7%)k%mORtlsq zSl+Rc{K=@<DlkR?i}5#>?10g#W}Q5-0@E&o3O(~#X8$tuN%~<DKTpO~&V&kE<C{af z8^{*Z78%P;TWJ2C{l{Zx4scV?o7d#c;IMUf4j0@@tbD{L_ed#nk7N@m5OWTDfau9C zy@+iiDanr=qDKmnIJhA>hauRtYa>UKpTG*#TuRS+(KA_ZDL+-E=cy?cJmFXuQTL%V zeItb@J(?QON3Dsx<UCkD=Y?#%kV4U|_BL1y9J4Ypqczy_I!LirA>_UP9KrPB{w!Og z=6s;o;ysZ^P~|8egit4FME)gm6JHe)i>FTHW31(H+0c1oWD<YPO=9S=4@w9wS@5YP z82iE#y$A$scF$c-jDubvj?2{NcEmm^Gbg9-CP=$nHWh>Br&MB=U4%jNJ-M2{$FW<= z2^1p=W*^3fJ{2mz<L%;bS>F%N7V;uO%E*?AA$cC{t5JKqj4O^Z3!{5kuU<y&lY9|E z6^RZ#j3T=1O4^F@EL?U4ZC%fm8E~2s@8<JpN@}7l@bPK+j>HKG?;W(pCUctn_$N@s zWm0hdKBpw(AO*D;S4a9lSM;>0JO#Z+NC`EtCY{ZQ`27v&FGVqN%|0vPeKDXmrtaXt zpSes9R(C@09<Eg-?<|+EhY!lR6{CH?<|5g>30I6j{P!u5@&-P3Wce$(QnGoWly}MI zE8nHbW=hxU@CEYUrt9dJuH(2=9fetS+?J^WLYu0_zH+x%&P@N%d+C?4@Nm%I7I`M6 z=Wjj7sJl}@VhveNatbFO-ks&4IC*nMmoMtx!Iqc@5kX;T$zD(#^?6WVhYcuWjRkW= zI<f*+$oucNIO~J^8!qDh^VB_AMczkVay_SHr8mIZk}Fg16NRNBL81}e--Vxi?^Vk0 zhf@hmdG3YEl$TyE+%Vdn8<w^y|3BqgN6xwLaOq*7XBoAL+<O9YPx8{r6u-s}E;(rO z?A6k1v>O*N@CGGK2WlOT(@ZH1(ZO~IpgHgg#buea+cO!@^I-!h&4I>zM_Ou$@ZH1+ zJIe^SeZuLNpeVj-y4Mx->ir76vw!Qr?H2j!WxiURA?b<m@^VN9al&W+sC2<hbW#2@ zh+C}QWW%un6M#lCMnUL?xy<AK8B6O;YcdS}S&r13n@3o2?5oyL9O_V!*BYjCC3`$; zIT0uR)-LlYTk4~#TB&LnRdK!U0<H(>_2lL-M%*Ps#9OQ0UM-`u0{6=M?#{O#OSv4m zF1x6oge#9Ds^dambOeV``EuBt#m8d6!RwAgYV0KC!(~<dqQ$b(`?0=#(WA`R?R;2{ zdjo!$lQ8$hNBHa#*%VuWdjy02^fA}WQ_wl+Mv~^^ZV(?qz2cqA*NdqaM2rlOJBKz% zv+)VkNVXwu`#qhRa&F3f_T_qWJ~!w4>{qzK{-2${+GHYf)dC{w>|tUV5y#NiLojHu zFL6krf1OchLSc~i(Q|xn)Ru7*QYIbbN|>~tUn=VEFloG#L`0}zrG-+w+VA!H2j$G3 zWtNS{7H}uV%P-)s99@*_372{I41@B=SIwFPL1&G26@qN_YQPW}Lgh|6_YvilbPvjQ zdwKbyAs$zbq{C_bvQb-(=9y(+rpQ4m4k8TyzXy7tekkW!xd=xX7nO6|D+F3;ni`^v zSTzq4-cRm!L;$u$IYDFqj+YnCAGD(T6M;vOC2%6$#qn|yX@VWLcDVq=|AtX>GzFx` z7!PsX5g=RuK|vxjY9zed#EHj|0xIxNttpd7R^ZYpO#NRz6x^<+6%po&^WcgrX*1zH zjpoo1chO3Y!XTh_UUC0A*BUY)?B8nCd`PP;BXi-CBH!WSt8DTI?Mq{bCE*PASRRD^ zFD*iYU@SDaNeunLa@gbt+-bA8`pEt!l*lc{q9mt&gT8q#w+xl#<{Gv2QZL8`55sC5 z_E*7xLV%5sTtIP-K=c59dA58h3^Ou>kNO$4V%Koih5rhlQTrUXx`>RLNunzPqtn>T zdJp?&RXH*f%=K(xuA>q6rUM<O4hn}4bYkR8Q#|41j3^OnFYQDF4nq_Qi03U`oqc!+ zlci5UEEoOc0$<6Q%vBM|xrAgXxjZ*MV1N{cB^q@%Gam7cx`+E%;Bmx?L++wK|2oas z>?%G_?U%)|ay8l@dz?N5c>=|gnDT!Rx~TgZD=<LrA9wF@$DFHs643#krY#=QtD!v8 zreL)e)7h^3HKU6Kc0KSvbolg4VezrfrF-<PP$*H6_N7KZ#C)VAm?J=S;1NnpVe-c_ z_qP^B&kOr+DTt0cKyJxrk{q#R8q1u(AscOs%UAG=%`CZc<Nj6lBo;!JKFtc8aXx)` z;C&Z9i9(M`Jl+R(E5CgAV&#|JCmw`DDu3*XszCO)r&103+v}&g``atK$r=oNcDl<i zclLx|o=U{D(i2v2<Py`Gw+nP(2_L}w!p8F_OG?-Hs_1EUABZ+g(t%IN$&J*U%_*I) zIpyI|NCRcU{x8MPGO(4dBwu<@1}0F+Mmtck%C2D!h%6L&Pt!hH-s6VQSrLdYrzVaP zsj7@`3(eogy!=#|I4$J=#Hbk~OCeGC5ke0_#my}Wq~|UYAO(5@g5a{D80xZ&AF9^+ zZ+P(pdlS==(j!=bx1@W=YWK=>%-6E`Y{;q<KHC_Qqj}@&-BndF9P0os6~cEpnbz}N zgWXYBZ6mBU4Ikn4E@wzY8sPOU(IUHp^7?AUuf!R8#LSL8%#MGz^7|@by!UTXI5CR1 z<hDj{>6iGkrev~J#)59b;;g`%@=X=raQ&%VPjbHxAtFdG3zBOG5ZR#WUMsNlTs|q4 z&k@%`{Mz>bijZ}ykMr$%oF?j@z|laInKNp=(7ejTb$Ox0FA7X+4ApVeU2K~{CRyTX zpk3l4Df{J0>)f{S)+K&l@I{7}YsRsItBa4>p9)Pl>&mdZ_3&&!rDU)ZJKL!HiK0OQ zicD*2K{Pki@mQQaMz)y&deqUVlO4Wj^>7&Qa8Ato#)2D#;Uq>Bgi00)Ip>Iu1=^h7 z+j)`fMD|faeagb|_rml6_K(X`7*bf2d~;Q<OY6lw0*kA>kux2m7gY8yMqW{0n`T*~ z4#5|<%PfLlCIo*f3xMql1b@89FOEwo(ucc2N)ddrSxZl?++)pJ$goj+A|1o42E)kL zV!W+sa8S3;S?J!+qT};<4-P-I3mis%vjUehlcI18E}O$E*7TL*yXGkVe!(7fg58_u zUHnb!P4~m?{|8U7?q8(obm?~c1?=;v3heRn3s=qB=5!nkEEnt-v`hr{4`Qp+=M(T` zyF38jCWAoDZ_CTVE0AsI_V+t==?%R=>C-!W5L`CR>Go5VU9(r9lBpAQ1Q!eXCJK*p zs(9Y1V&@cHy$xE0<QQS(Gul_7K-hYT0HKH~!v2~4qSr!}`$3R>(aTlXbTgZ)z&QmZ zK!ThpQgEX1StKrcJi=)%rp@(Upv_(9G`A=G^B&)#%{}P|(jUnR+ChjXLY_}NO^8FP z3JJ!`R;hNCEC=zWihmtS+{Ut*!?MXOjcqlAp-7VbFLn8>c9)NwXIIHFV;cpb5`~A+ zK}88UQ;?oM^qq?my}Q#(2PI}ZJw2D6DnK`0EYRpG-D~vjsR0Z4v*mcUuzwrUnbd@I z?qH`YTFZ?CnFrWCCja;q$YJH*I$7ZFJ&{K3*}@ma#}MIH)&ax^&4J(h`Kf@AC6#B? zZKf#dkv<YnyXZ~1@i!Q;m0W~M-VE*DQrTypQS;y2RwiyQs4UqLinSeY-2FHYVu5*7 zlVdCr36t}XYU+svJ4+k_SuNs&{VzxltN+_%bVV*Cgy)rnLSwF{;mVR{Wci0nAVIG1 zVxLQ;czbbhvF;Gy!s!jdXvWFj<R-y%EB~HJI>hp3hWG@qXS=|AwhX^&ksEi*5Y%PC z;F(5E&CjYwg4+j7gi^4xnT`bat$;|jK}L<FRV27NBf;7Gz)n0ZgR#}*g<N);JDlka z0Gdbwqvj8^ml{}+eH^ktBES521k*L~{Hg&YB!ECg`>^5?F#OVb=vp2C0T9U!FNkk| zmc7kDR^nrUq5V%84vgwdjlqaFs(&RjRgf(BJFV8%SBU&7<%)#*-PyHtP4&FuGfy)f zXsB?$E{NxU(VqohwbTWA(<34OJCWnF&<F2pc4is$IYQQP3WjpPM@l}(+HdJeRRk8b zgcE&V87h>zO>oj5SVCjCz!(ev33xbqveKG2ptFQgSre-yh^i0HhSyhx5~Dyu)qGX@ z-#yp5WN1#bOQpze!fisa{m0KfoK(bzg{+F=woolX!y`OrF*S$~VR<KgtMuu?^Od;# zUPXf|y8K);_$y+7$WPl%m7n^v(A7S0LI;MJ2t0NQwTZsrg|4ia?ZaL93Ewnc_`Tor zzhRxpJXTsa43|;p2wo5Q_ZfBXA?rI)CUy~DIP&i(pZX`}7LzYr;9+_D2|PsVxr-$( z5sH;@J2d}OM)MP)?4o<S`*ry;;hoLUDiaq%U&0-5P=DX-vwE!6y@)*sALGORFrPtx z*ca?E>h2Y86b}_FCbk82UqV(7d+Vx@r@{0zRF>G`k`F?$HCU+iRb{*~&-5q6jy{V> zWxY^WS|tE<w{9yHf|<7oL`sr)-&#XXku+!zHkh$DiITzM-|#6Gidj{73>TPP-ZbOa zq4*x1XaAM%IeHd_QfT)_m3_Vl`*#?z|DsOuAx}HG^QC&u3l$jjsw^9^D9LHbNDu|8 z<}VUT$acMvZ+RSBLz`xvIv6w?4f$7;U|(qPB)nBz_#5u*ikEc$B(9_1RK~w)4jT=9 z$8%Td;ZP@Um@8rvW_RQH^QWFIUlCHYau`O8tgUsHybk|EUSih1Z*utG1i`PNpHEQ! z*B-yrE;N=M?*#jI5DlIG#L!3kN%>!t>$0v`1ZfkYsVI5gdJvA~YAlsULi~)HTE&Q& z>FL93Mch4$La}e5b^LsZc@ggm?ua1?0|s|CQHxd)QqnJEjmBSj|M7^jxbQR*-vY>t zx_1Si2pf*AXB+qn3U#t`pd;uL6J8JfV@Vc6RVI0T4o1t4TgZPA$K+7Kc&qrVP@k0= zt1^v#-Yp5%MfPGSU$qtPK$c)1AkLa1Y_WkoRpu{|Kk!bR5bB*^F%$;1>*R4Pu<m4` zWi@iHt(><^>9FV1kRN~Z{0BrVsa;2RiT|uoHtYGGMLvm6hGK8PhOf@EM=5Zt=>z2p z8>DsC|JTm?AFuOs36fNB*(nE^pTDvlonY@(8deT_*?HjL?m3aQJI=~IJLFjzK5-gq zfH-3ojxM1i1#(b#0mhioc;x&bDx(FD>ZIj=fDlD@{>tF&$5e8wpnvgoE_y?c*+qms z>jed<4%I_OdQDbvuDC#tr-~2`0XJ%27Uq+dVp-lrb`f=__aEaLD~9HYr(!6!&TBSy z5`QR#HxW71FY%?x<Tp}BnjW+}AJ>g1C6JV?0pc*?oDrKdN@9!e67u5TQ5oMi`_vSZ zYg=}LG{Mw?0E8m-Do)OYjmxqPL&|WCr+Y3Dlv8kB`L)G6^dzx%)XIJisvhaWd>eJ^ z0iE2jA#DzqybqlM2Nn+$bZSPJGHUMS^JOw9vjmB`*I^vo7xKI@*2+DJX&a`~!y6uf zo0ajej78$zq@G=hnUkd|Qr@z<(BuipD8;k*9C<2_^i{r(Tg;2B2TqnFPFy9oPjN2V z(pNAO4by55orEK@aPoH|(ik<%8Ja9gS&?Dv{vx8tvWt((OHYYh6v^Be3-5QN%7Ij< zvm?~*JWLCA>fGNJZz1nGNH73o;7(@Uw)l_rnVGloQb~O1y~QBdN}wz{OD8IgabOMA zk+Z>(AzmW#o3q>5X%~XfhakGF*5r#XI`b!6d1v{GT_Khqqai1n?>O!W!Z#jRZU<;s zj?atlv}XaaMJixMWd9|u#Ue4b5x}ezO&-t%pRtsW>|6@6JbFsUEbkLv>T3OJtghDm z<7BlW;AU?ll$!noot<D;s-Tv?<u;kkHPH!Bjq8zz?DItyN)*1vHFciv)Oo*CXU`E* zXW2pOT%vXEL6($J<VhVOaiu$-Z%BPA3=37Z<t*ldqW`zaU;NYMSheHXIN5DdC-wq{ zlYD_tm3I1Q>#`$}?B|-Xy;y+toRipRAkN;`jNjC&O*{wjL6%)B3O?-kq4;jHKNvM@ zxDCcP2MMG!%X*&(42-(o%yrNju^*O9E(o$3jdwJ%7VEMik-vGq0AyYxR3un1N+|C* zUSJ0*NGoaCpw{k&_oKfU;F_PeJ0~fcu_l6fn{rKm?|~<v)}DvqxuQ1`i+7OR-bjig z8rv9|7Pi74qr|<D#!zAx2o8SkHp8$`b)P4i%0#dnxd1H+B0{`FD1II(HmMHjc#+g< zyjqWq`rSU*x=H=6HAkPy@ZZGHfpZxP?uKIVe2D!5+<GqRt1NCUe73ayB_Auz{yVd& ze0Tm{u^1W)?-1fl7IW8SAxWAb&K|&d;oI&wFLVku*anUaUH-*qLc}@{KeW8Ux_oej zHTouN#yknpF@;!92*=k#ltx*hIb>Gi@Pfgjb|{any4Z}h4XyzDhm*!)Y6TB3sbCpY zQIO-CFDcHQeT*5~(~H~O**$2XtGq>adja5pALx4paPQE5W-6?ajuSxbc62KEa|lBC zy^r{Cc%_>FZOjV6)`CjwrYfSND?s02VfrL4=D*}C;=g=jt?(DjOJD)_r7hsEbQ-aq zJ%M66O3b;EY@y~h(NL?}=|>y~jse7>vR{kvXw)61@Fqytfu@<5TQsMO$Z<6v$s0e> z?03!$$8UyY{axVf#K0O0mntcG3&7$Izh^M=2Xhf?7;Me!vfsQ4(Ya#(%*sRob}hoj zP~uD~o?+CSC(2axyp{AN*s>gL{9kw?(XA3Uyl^u&A|=fTCC={`X0OL~h2dZ+VyBYk zhw-&RC9oml!5e<`2H)OBwEd_q5B$1{0kIOoapJq;b3w&11n`#A@hj;#r!+*mRQk6V z3!;D;%gp@!#>oKSp6QCgqvzTiUAziQd>qP~_O?T0$<F9c+3pFE!@=zR^!~_N0P(#G zS6M5vYNooUSW}Q3aC7$vkO)I3-y_@M&t!O3es}hUW-NSE9%4GW|M-N0O8>fu*Nlbo zay8Adc#7bDZ`5p)rmQ<alpQS9K<qf^!b0(c9>swh!-#pE&yz~4xV6%Fb#utybZepg zEN@f#P(ixR0$=~~=uZ1VeN#c~z*`M=t~E)fX(NijO*6yRh-Nc!mi?FlfEkeSqvB|1 zWOc^B0X4gHO2%)G)Ec2Vy9GP*k}DcGyIy#%T?jc%&)3hF=7+K@Wl72s4K*|w?UrWN z%BxQ;&P$3Xuozf+?@Lp;vHCgOUV;Eoe-jr~@zt^Vi@BH<Z;jOt=3=;gADwgdC+G@( z+gm|igz?1zwV9V|#!#uUjLd>auknz-zIZXH;J(~ga0~MmmRP&Q(ECULFFVv3x;<WB zUflw3{4sgXk&@D(!9Gug%xYP(8JxOXvP8NIYW7KRnOtuQLn;JA*zB2tAf%-9UzBIW zK45vuSC;8<u&64&zF~(K=dQ#93k9n+{^{+l5cImytV+R+v*i~8f21y;RRtb0-oYn- zgNOm2JY|dW-s?vS?+siHiwrJ%#%RZTRsZ%}NO<oGdY_@k6j*x}-0hv$Tsn(gTILE0 zXDs|<df9j9L06-$g|!uHxJh}x18?X2+EuvyfF{7ms9g$Tm9DWJS&=P^<~J!_<4UA< zzRHk@w?Ca@EF7;(rf@xi3FEl(6CKB6BXk^_{W6XNd<t|N@3YgF9sk~8y5sks<L>we z?<D<IBJljtGXL!O>wnzemfTCkJoXE8jWa~gRePjNtseo#h;`Rl-XwZznSQebMlyOP z|K_?nVlHQd<1-NMXB;d6fE5^cjGSIvAM)d0wIzr)M>b@_+(HdoJA}Ky%5Q6x1Fhw0 zd~ROCTY3w9i${7i%dB=l#25l%tp~?Az~qBo4wf|`9A(xM#y=64bL_2r&Hm0++TaXm zZv~XGhKudl3ep<+3Pgq<$nhm~xe`_leZ)c(D#xdB#G*-kfhZu)vEQaL$1WZFF}K1P z^QQ2*T>ETkBjxw#KT&7pjgNFz@`E}n%Yb=sS<XSQ>-;f-U00|0H4vRa4tyMM8=?Gi zmbnsp(kL1+aTcshobL-IZrAq_Qt1`0MHm4IE_IrFxZFWzZLY^bn)__DG}pq~bNXuq z)&#-h?yop_98Qp$Ar^)Rxbzkx5EQt?+Rh2bFGDjmkz^0m6t5&?wH)Ohvs}&&tDjhl z0NeYc7WEotFILb(M@?N9SU~pV&bc_&Fvs>N1ZBb9Chb1(veT{zXEon~Sc>3v?=bGM zR>c=E2D4mk>}oVf5Vka-d_?sPBuh-4T43)&waEOwrNMA4!oz7y#FzE4hI#gVDlr%S z8Mz7|4f{~%<hFAZNabhBoa7$_NUx3(AiV{3w8nU1t+^2n{esLW^OQJ)W9gnXrh~jW zsr?(trVwlMM2ukK*Ec|v<m;Dt#yYCP+~eb{SX9eM5|F8dE16H#9=Os^jhtL6x#b>y zNfVI`bIGIbMgVW_?2$r{2M>l04%hqB<-WWZ_tW(LM7cM+a$lwQJ>`Cam;0&42w?_P zk`}M*O`-(G#*6ny^cOJmm{7>wZ}nLl-xG{KaJLXu`)OuU1rw}Hkv`cnhsYbqODcPW zCArihq<&Ddpy|7KW4yItYbQJ*h22*vWwvKg6CQ0NDunt3P9NGe=hcOHJ|+7cE(gg6 zQT;$n!f|MUXx>*Cbx*M35bRl#jdFy&zmrk>0}w-2C;*HiFJPpK05a1*7Rli{0ke~q z1S~<i!HX}S4}I#z*C-`LBVV^ttM&f%2v8z6Ubx*VSFlKU*W4fv5wamOzx$q@%mbk0 zYY1&Qwj3r%_hTcq`^QN4>!kZv_JI5lzk$GlDT5;_$l(1xXa+p3!1lBGS}j`*pqWzP zE2&_D9aXThm)@eoPQGkYyTb`;T38|p@7Z)ky3tFzkuN0I%C8?Ti0i$D`kNlbLO&B9 zm7~J`>wtqH<8#DQA-f_m2~`FPMRRh6Ae-~CGvWaF^Mou`;lqV4J>KLH<9~aE5Q~3% z7epK|R?^_4va6hJzXP#iaM9CPz;D0EHGv;i;e}KJTSI$c4L?dp74mN?Hy&K20m`Z+ z{Zi^gR<069RIQgJf(xn5VI+yM{n&1ic|}(VhgORBr+?R+Z<y-52)>9+JZ`|IQL$PO zMmR*tmK4U6<zk*y!$dp$5Vr#dKgM!(X#Dt4umb#;a|{5!yO*FrxKxqDsNDj&v*kYl zxqv%5O#tsg^gwVQ6vD%)Q90iK2ExNj?OSLK5Z4X|#54b?*Y;qpr^&T{Y`^GSAVBUJ z(<dj5if`H|4zvbvLDnPopB_&6KS=q(sWRlNam$deM#@0av&!s~X+_`~CpE~zfwIf$ zmg$gRpZyXPkzO^PPOY1lI$xi1$giK4`clS{YAKq!xt}+(JI#`(Vmzr?$P%9D__xIO zlG`&-bn76jyc!+z<Kbyf{T*DY%juU~q+CvqZbSt!e`U4IW5PS2CvU96zVbtyB@rwW zH1?zROraOzM2K^IY!4cUlX#$hSE5U3@&1}BJ48vCSl9z0#q3ykinQTbEd;w(W2~%M z9$;`ikCP{f{1#so3(Q15abm3|^4xKZ4RNKtESDNw$Joa)%%^&ZzAs{0=uZ<<kaiky zcPEa(?pWIJB5OIPdJpjft7T~kJ!FT7?J+O54bC<S{WSr0{uQ%MGnVcNz9^Y%!uTZU zexE%_$!6Jr@-SqK*?`~>IeJmAPAKyzaqE^v-N}yGEQeKA^F>a@qVAo-c=hvYWz%O_ z^Wn;$Ew21YnH7vWBsjSBA80l+{)N^>qR)Y=i9Sb(Yqmb;ZDYYq04w^O83Ovo`Yo~| zNoyrO4wK~(8TG8l>Fi(kCEwl7I|)}^8M%g(6xK{4iGF~7NAD7s#U&lclwjd8sT^YY ztO{oMvjTuCG^absS9eJ6#0T+YTFs$!8_fow)n$XDc8^0Zs3Nwtv)Kiu!DV@9q?4OA z(OhgL;!F1Fec5`HGCC{wSlb3L)f&vuhbc+Q?k{W&>1Sf8iv8#d8zY;=Zrmz5!IJMn zarMaym8_3#McI2dkfyI^(pRUGYVc(ymm|U|W$m&&6rYkeE*4hbw@JmVv2Ap8ZL0es zT(u@orn_PP-Z@uRTGI>2X(L8Ah0b{-2eUV`sIuf=-9MnnO>H20F_O&uhB}6en?ten z9i*zt_?-xLhuPohvQ)eP|8FS*vX(b@qsmO9&QO^tf?&xO;>7{N1&6l40oZGhN#H=o zqhCRIoVdM>U+C^);$hS#yNfG1!yx$wpYAR){RvKyR79Gt3g*s^UtKqE5~fDdfW$x5 zh=*mBw3Z8}@)RRHF8_d5@}3b-(6bWYGmk6{yo0rHA1UnLZ!8qM8FX#d9bx~~RYr~M zTSL~6;ZD-CSz5mPSz-Sgqi(vOqyKFD^`!|>dW!uUA2{*hpUktce>#%JIC-0rG$h^l z6m{Z9#VbBewH3TZE8h)GS!O=s?+NOa5FmsMvhZ~WAx;vYSVOv*{&yW00AtkGW|!5D zYP?HQa+k6Jk>ns?bXXqXw;RJY;z=I!4!A&4Kwydl-keecrq(s{_q+%=mbYSq&R;Dt zV#M(`Fmb_UYudYtsb9rdwzIN3{P+}|+G9%H-QnS%>-^o{-JQQbksK@e@o}y_7@_2f zeBSuqT$an2!p0~YoYk(5bh~O#mIZI!;xj$(>3nR^!QX=Je1{o#^8Mr`KXe2jEZ;_r z<Xkf?LOBw>iX}Y?hq{h#73&XZ0WBns#s8ME@FJNk_CJUn4D-_UI?RU&QDc~eXUH%Q zYmb;Z%&XWQPsp76BHXM$G_Ct{&N}CQf!zP}Z0cS>{56=hJDJycSDQ;rBw{l85N<K{ zJY6%iS$H83VvcoE+RrD`E)db(EHi55b~EFns$^$ti}x38o>D@ai)fQ;k6h2=8f5Di z9Vm$1uhL)Tiz3|PTTXysw@5KMY{xA@&%?bHR=w7K$l>`VOmT9!mj5!+7dH*|i)xsF zk;kV{3XcvgHAPEZDWzOb5FSfK=gK2I6lGo6Za%pTy_XCgF{Zy}FL;iAUR)X+J!t$# z_Vn?6;xkwKp|WwK=6+N!vA~4u(tP~1ZfQP#GMCCBkK-c6A<us;i$k(|S_`&>tQ(=O zQC0%Ukdi4ziPfT%P0O~{EPg5Rs@RRBX9@2)2wl)y<(4>Ch)>_{`W+yb#8ZtCVNfHj zPUMD2tNPdE%@JX%&WW_D*HcMryQ2D>zBu+J@l^XeM9-lc&4RckyG_p~6a8TAs^}@E zHG;*6rI|GSM+|$*sEH|PHe%1SZY_{(;<4ZI1bqqzIt4~vn-UgI>Y5T3j^#>0(UXf5 zDCUSCfGg7ApImbuDljuKnR&URC~S>nQ%=m0?r9|N2vpDKkg(uuK3R+L+~Tym-1-^m z33$FsdIFx{Qd|847pYd?dL`Xz%P4%*YvgngNjfFVRaBVIk(U-G9ky_P7foh3ftN(h zk9>vk5%+E`Vu8!FLCH@Nl=d|2|IAc#1GAdDFVmbB=TrsedlKA<1<#CcFdM!`E=qPR z-JlxK;fO_SN=Wy}F50>kvFPhO!YW~=>=(X9EP9(mxtBIqa3I)gj$|}i^*?W!B_D{> zI@ODEz$DVLM)E5M7j^GtmaL`Rt($|3aAJ(DWEXm%Jb;INbEUuW)~>+&HDlo;vTPj@ zDZ^r$R%ZAa=Sk%WIRJd>+ZOu~s^7-C0zt9B{=gN!_=OVBX>(1wPork45VY8GC`hDG zFsak9)p&Tx9#C?RAPj*?J7*nZzbJR|nEc%C<4s20pX8<lnIv5}x;egj_lDr2PWB?+ zx%w#yR&)ZK1Tj|`b=PUR4O!?L-Q2Wl6i^A5KxmQQ>KUy4sY~Y)-nTjn!OdSQKjf=K zv^Miv8eqi|&52Z{yEbgV#=-}AAQ|*)e#J$Lw~P`hTIVk{DBCfAeJ6fMh=RqS_F5@y z1$yyKIKGGckx5(B32||@AOk3!47MBrtnEi-EQ`@s-YcbXH(IbnwiX=&S5Rr#swl)% z-)b!QrF8mk-Z<lyW$W09Z`X~8EMWBW`B)4>)MM0LC6DFM6qPMuLbpl<l{|IzeJkPf zk{Md_G|K@Twn@UJlzjsV(2AE$n5JWGT9x-n>7SMVC+%i7obF^B-VRRU>8o&>#zl*_ zCnX#>-7WG#$Nax|GjNh<9N_c~k0gK;{+WDa8(mkSSr{hAY}0d=0%C#YtUNDA^rJhH zCG`wQhAHxFEbz*-G)4F$mAOIC4{)gzAt7zLo0iw$?P)p$N&ZTgXp|K?nMf?i;dks? zx`kMyEZ1P^YJs5!K?kc_JrzbpgGNEyluG2ENxg0qbYOihZ6Kj7kT?cr@Q+9mL_v27 z;l>qPAkSiCR-V_gJTE$j)#7dSL~drQ7Ci+QZDzC4h{8m7nk7GC3-4n33-6-7Ih-DM zKC>t)w)aT*=EOaBBJMdjY&AOLXdl~@b*3@T%jX>Lgs#f_ieU|S`N%t}+mf;mS%FJV zfS-Qz7YA;_9RMNRLgH?Xn$OYIpa+oHTjHg;v5!WxBly|7K}G}3w8piWeb%!<%Z~Fs zH#^Sv-0V2tdmQeQj`O|efH+^Lt=g+#R`3%y&ey1&$UXDHWS|szPh)+5B-YocJ&PC0 z0j*vcC=kge3fJT0og4jqqFta>)&O^f0e*{uNDiQkI*bI+7m5GQR1<xF_j`!E<%`ZT zYQ!=aY#G(sAvzKK40m)rJd(Gr5eL|FuT1g0(|F^sgMM5ot{u-s3fE%dN#O82S?xCg zO$T4|(={}ANY(HqS6aizT%>9UW@-Q!RFWL@3iDD-O*nqqq6VUaclBXbk9b0_x5;%^ zt~2x-;x4&eCZa4Q4<?5dz64Ox+;sjGGMYmM?A(JxsXK;O%i)F)j^y4?Xi5}(%c0xU z6$=d4N=R^duv8)QGF6C=!4T8BJ&&A0y&M+>QD#zY<APy&fj3XR6P@v+^-F2ciO{$> zD}Q#fY?<5s3ZwQKMpoMLntYkO>IE{PIi1ApvLZP#-A~THBDv2=F5e)3t$yF}rS{*S zDBq)W5Ez|Ly|#Fbwe$DTq;IUqHmvG}LcLUCNzgbF)oVsw4=DdDKE{&<?+I0D(v<5- zlcqg6?qoM}k(%t{|4xG%f$t2yMiL(+Kkc+WpGmvfTAz(PP_54zE?T^gP^F{wIYva2 zj)g;{4Oi>)1fPVh>x<Ce<J=^93(ltV1W&So-iO!9ayf{i?liuVvl>p}H?8GJif2LH zkvtk}MNajBcc)Wv^4pJeGSsPIDI?ETbr>}d@#H`08)S3ZDoO|Texdk#=u;#HFjUfr zhRCQrj{b>e!3wNw8wi+j9XN<~!O@I3s)aXR$D$*?yB#TdfO-MfZ>S<F2I!5WhB0bx z;7KfS+hwU$eF^P2tNMJdbWMh&X_tdMEiT#4s)nCO?qGN#;4y~(sQ5w!lvaG9N_G@q zXBbPrtFS_CX$enIFs=7OzGJ7kiG2W&3@+-G>ngvH@4Ab8cMyG#sSYK4Ud;(<M%^ET z4Wv|6aFS+YftVKv3t|zs8Z~O+jkWm{Z^_XsGKnK6c($AV9dlakK|BIp$WgiBl6tXc zESM_G<2L@2eZa<`mbK-CVSy{XI#9kyel4#YdQ5zi&k;?q8?pOp!~c1p!~_rrwNIva zwa49>ruAH*F0Ye#oLbi<zg<Dggp6nOL!pi`0qyiZo$UU6k>Y#ke^h?)=GHs<pJLfq z4~?AU=zoqrh~mf1({rz*K-lbKqfMTkjff*iYZHHxUW)$bBhmjHmeL;_C`8*&2rMOi z8sdsLBBu0L71I4o{=Mw?M=)=8G4FxKUygy6pZ$msrG55a;nB{#klh;EyB9@eQKE3y zUiw0=O1dO}h{TH?m)S+8u9ZV^S?H)VTd@`G<8|rA7k&K56xRK~TUq4dT?uP&Bi>S{ zJ_t+wOh5JhL=#4x>@O1DNf)anr&iO<T7go5MEsMa{k{?b<p`Fv>Sj;r#`Th1qo$)g z6R#61f4_9NFE#&U`td3jNea!!1`(eu?^Unr1U-I&PSC`@GBf+yrxZ{Z!VCL33Z9>e zRKauB@vefW6wb{Az3`(uK@BJplRtHr2`XpGwzB?Oh058u1*GwDTJ`Y0q*iLnF=~(D zM?I;MjcRN~4~Hk)UaCVBrbq@(0-x<#3H=_@fZn@YY;!dq$kfGJ&zTd#!^Vu?SzbNB zgMD`d_D2TFehjfvQ(cwkBu75Uw+Zh@(p%XBO^~vp(r~^bPej{RrBj8^i&TOB>lH`; z)kneeGJ_8;6T4%U#!|ua*ONst1ai9LURfl$t5fZ|_*l9zg^pJ{>zL;vCosl-dSLkX z^f=AOF1k?2V;B7JqdC#Mrrz?)>5JAc(sc3aXVP?0lC&VDzbz_hS56Q)I~M4rwd6Io zRpyZM{8)b4*KuA}9Rkgu%tvB`X5x8`;VhB#HZSjiD(5RYIe3&H=)pE>9#-%b){6XO zd5d0FSY7B-Sj{|9VATVM=mTMO7*t?_{hX36hdw1gM1iLL=DY?RZ;>xV>hb=Sr!p{P zi`SF8-%X7zIzZ0pIytkR7pr#RljP%wBbfrLq<{z)C_j8uYRmbzN@o+^fvp3@K6>}! zY=|exQSaJ|z8;^J9JX+&ENK%LDVFs0-_oE*>-l?Xb3Eqo5DdqcSHw3};4l^VjaDd< z-f2$4`O_q$+gYhf{+y}AOlSt$Fn(mqcdbZx@7^u_yYqI4<~dZ(M#Yh1M`?|RIKQ>_ zXZ5k=kFJdc3@s(<l*46Qs!qvE4Xdp(Gpv!B8p!FBrkBL+v^em(Pu7%!wT<4lC@Fv7 z?_dP^NH?=_VKvJR(gQvO7BU71<zwzw7%;_svbCu{`<um@U9(a1+)5Q@+(}!Cz3EJt zy5suJ0z%2qDDQKk|4tR+NYF2FtdDkY^p?9-@4_a-_RKq+`=;dd#R>1xT(LtR4O(vb ztgWrl+l2?(uekRU#=`R>F+@@3{jehMh4_(k_b=z&9Y5&Z<J_SWC$-ZmzLGyD4~<$H z#7*>m`CJJ9HYK-XT*ChoU#1B^>I88}5yJllzZrrigde6NC;kX+dyhhpz8tDF7Ifvy zgm>y>hxY$XYYz;S)}Z~{Q5~mN`GxYzrTwCv657uxs|-+Se+Ma&q5U7rn?&I|`xOG$ zyr>Iy$+5CvdtU%a{~7I9t@owuVMV#0(^F~x*+;pwf9M-Z`<H%CZNi*i$F!f!>CD3{ zy1$o2mqqX8STl#-zqgYsvAf`u+wBJiy^z@Z1L*x8U9t2oi{4`qa_D`Z|48o{sx9)3 z<(>CW9qKE`=up2u{2+8(hbo)73GQCDT)9U(I-X(`DL&!I5ox;KRPD-f2hjCz0DGFQ zFPQkB=(@EeO<Y{MzIQ`r#<x%z`#-Ja&~*K_tU83Q3sp_g_4k0F()G`G9h|O<HzBZl zT4W8&TfS6bH~(m*>ksul6kR_<WH$R9=z6l-Q*M8u=YCpt==spcd77r@C#T1BNP7Ox z-?9s|td~27o{N#kZc*&0KuX8{N3xZa2{2K3?oN8%=-tYX{E3WKAUiAckMf4C10j|y z+n(}J_m*pPM=2gY8m}W;v$_X)rVjB5?>aKmOM#;)P-$I#B#vh6<o?D7q1fk$!aqs; zK_w^b)m8CK?A2mtgi>x1xR*$texq&_kJ!nb=z}<3OFxpuG9qEuIFJuxBb(aE?NY&J zimv*K-VA!Po&&If4NL(L2wMa2n^em&3VqqgB}o$z!sSIaa$mBMTcsO0Co8~CTHE^_ zqt=bwWHA#D#W9+KY9&rtxJR`ny?EnP`oEu3h{Xg8u^3BsJ6%};5J8CFi`-;+2mM14 zVrG#d#2*hP&8txK`f(23Sbdn%jZTFw-PqTtbmPuu=@fLs+5p{H-9cnVM;<s}Kc#VS zDNwfRrr7bNaQ9OuIJ4-}xgw7aXp!1aeQ5f(u%D8n|DfaOG@X5x;|^eorN9TVVvn|A z_E~I-P9kR{;Ce%QcCbwmxf!PGrsxA4SZKuUuZS3ueZWkNLUM}Uyd*brJxK_Wz6-0R zE|&rqL?#2pDM(X5(SAXpc*>Cq#U~YtKO96{`s1;(tR(h5)1FIrw!88qPy{cMDedwK zxkq`Jy0^oq7Daw2tq;EJV=C?Q-F+j$40*|c4}*oc&*j-4x%yqF{I{v{A`@3r4AsUc z5NsWOc{gJAk7D*8m1C=+%YE<Cy>P;()|g$CNz=VwB5>qHx;6)m=Z6$WyEGlA7m*`F z*6`w#M0EdSY04MIT_XO8WX4(dab}flqsCa^9IdKLbFi&@v53a<+rFaPGZm@)w^@3x zlS5o2pcL{~_{Fyl`D313v6fTnwiz|*dXy-9M&uXE8+=~pX+fdR(-knk;Ih2@pNqA- znZXHmzL3A}q8U`3x=}j>0x;H^*WXv#k{t3!?6Nv8WLoq$$z6^r2Lcf7FRBe!U$&TG zOK{se=#ATbze2u`zplU~V{Mz=ENHQqBo%vT_n`Qp+uIL$i>zUvE^6oF)8~m}u~kuq z99dZ@zWPauFK_)w<RT$?>xB$SLR8t0V&rHITQ@gLqRxTbPcuoFy_KGzz?M9m0@vQw zcDT6{_vnP8b51b?EbRXpzkk*$DIE#9yM`-?_A?g#z?I|(+s-dNan+P4E=vi-bz*qR zyvc6{=FIYi$}kyX7sjlb%H+9)7n;fQRf?13aSR<d>PqOG9)0XYV@ozq@$1*cUgoCq z8p?x&w<q7rI6c%EZ1^^l%4_`o#L!LSL^{m<x1{i#fb+&Wiin#~O&>28*iZ1^D?pyb z%AS>HYy=Urtf6741(eD&mI!px&T6)#+O}vR^4^A~fjP6gJI4<i3nh+5Z0u;}b}$Jq zAs4yEV$ofpl<PuhJHBMsF;>L+rznhb6+!KiF!^cjk_GcQAnbZ(MCskvrjrQBOdM_B z?2wQOnMKaSY1?2|=x61c?4^|%&860aciY%OP6{!BN|bRrsl?_DW#llb3wYw>5)+CS z!s@jIBc0|+6E9%#j1y?9J+CaGAyBd33Z#cV83fX}xJbe$$tBk6iC!&kPt6><7V@mZ z$_8mgVIXN`DmeI~mJ~WPFscC41gS7*;6~G%C*iW|n2DZT9hg<-NIvul@2nlyIXm7W zTy{s5QIlYFG;83ONvDn4o46NwLhRsWy^b_$$@)TboGQ%8yy3FjX^zb?&5?_)_HnLK z8LV8V9Wq#rp*4VX0j-5R>zpKG6RU7DrR;6slY5dPbP|8s$%He68b|pcMWh!S)lYso z%XOx>fTp5fiF`db9s$zi%R!ts>b3)8$u1`85o3YTA)%p%(E2ZA0lI2ZTkNu#{TnRp zoz7^srdbXj0HcZEE1YZ#_IS_cXR)eN)zTIe<V_SlCxVjY9r-t<el-O`{d$k4mY-$V zR>Aq&BOG4;ktTi~dUU?a>w94TML%?3lG=pVKe`%T|Iv^8lpoQrNz$)3e&zNHHI7jy zbOnju$-l{RHxrV8b2v+Fx@O=MyQ~vxhndbp*3CvD&V;~OfhL+w-brmP|F;5r<jD<g z{aO2viBQ7iq%Xzn1tQuNqU%fVcUgSNVUIyxPgI6TZvwyVPCdnLJ!zh{bd1c$Ax$|e zf1jQaAw!OimDMp@q$?3STuOBR@>t+{t?Cd{`&6bP5$4CxTl!>4pB5(s8igK_@W^=o zSDmhR57X(AEZjef=F#cuiYzw44ufP+Gs*fH`8OCU?o<bcqzyziVn-ewXiNGM2d<%b zcfM?w_><r@z9e|B8A}=8hx~6w@v98<kUoC%%hdczHa@(zC4&zOCJXCX2vv3`W>IsS zMIZ!QlJ8QCF`fMtLz7G&lC#RmZ}w$q{+FztpF(BF88v4qUn*?dp%A$5Nrk}M`3iw@ z@`wK{xtT)XeKxZb?6D5s?CnM`M@w_rnL|U?6gP7y!jag2By}ih591ZxTf^~B+vg5# zK*l;q&e9@#k_undvf5L5OM^Tjmz?G?d#Ec-|2wYq8hCY)p1jO${9AEho;>P*M6j#= zD~({t0FwmtR^XV9RB;<sNdJ)}OlB+j-Ikr8N%vwq=6v))2R@plAI<g=;2Qh_=p_or z0z}Pc)*pITnYbx0mCvlw3ge&@`_#bSH<QrpQ9vKE!bkd~4bvLS%!{90e^}#6Ns|?d zuLyCtS*7QLO6x)+6x&NCv(KdrQ4&i$(cH?8-HSt3FrCLtjw=*f3O1M4Fb1?Te1jJJ z0XmHjUx8Voe4A8e3-uGfcQ}b-jT$ivlJX}f7dJai3L=h11<B60r?QyIevcq-GJvEK zm@%K?8mXK{GFCRpLVyrJ`o&{Y6PUfgGjbO}`<HO#y6cl21by=8b{?CO#(_*1-Axjh z!B&n}t{5eO*|%c)safuzXB9#bnoy(WdSN@3_v<IXQwj6v{V*8dgn76L%pUc)*{X_r z2#!h+jZ4oGBdY|g4(;&PekQ7-Pe3LpY&AE@$L@t_y(tf@z`0$R;altEW#MNcc39ro z(x#RF&#t;Qrtm>J``D?pnWd=JCGzJ2X?`Hh!*ctjLXkLuw(KS!yivyGWOTYwE;Xam zsD2tikWgKI;SDsaV}44I-}1KnIW^|4wC#-f8d=nq_vsvW%!9SjWsD&?6si|4n@h_h z1ZNU+X!%ZB9-=Md&1lr9H-=<vNnAk71Q|q~mUkiwY0JIjTl7Eamh1CUExTFFPEWPG z)R5txqtMI0zl*@gTR}NHjF==D%p~uR<Y256B-adPVnMG=TuSPzZ}l+9J8;<>(_CqF z@0eaH?*k*r{WlvVs*HbZZ&B`5cwVZ5e{(?d;o~XLoSW{To4oA4wk}TcvO?|P!;DZx z(4h)-Nmho?BS-xbY{9hyhc5U(p#eF99BJ}re<;mbfw8jeFRhj9{O9s?h*!|E{h2HP z7-@~BQ~;1F+c2d}CzXzoU!Pqhm0J08oPzzN;5dOz`>bc*ZUxz(lSbW0`978O><n(C ziP))JRF>>xM-b|RBz>IRChjb#OeH<b=Rqt`M=c~h>&zfiNzZVtUe8z@XJ@uYwX<_` z@IDv$JGVGo@|4J$?J}LMXwm*QcGiK;eT@G8O5l)+B>5aQFH0N*69=^rdtfl^8Zb=U zQJf$b<fJ<R0P;N`_SwCJarwWG43#_ejKvX`SK?1AW+YBuwwr}JBUIX_e=lvhY0^GY zm9m7ykU;HCJ^^R!*J&q}6eE-P?8XRGT@#;mU;vD;NRy8w^1~a^!jtpthAjgn=UD+q z-&uj*z~tSWXUU#dO9C9pbY}92W;$CgLm|`I$tryiTL+O!{vY<<JwB@PTKvu=Gr2%u zbBjQWiZv=}y^w-6QP2#|;EYa`Q$cMNYa8X*Q>|2H1W$zqCn4FLj^$Ks>8bW;J^hu| zwsNYbXuTxd!Ak)xBB&tVW*a~*8p1{Le%E^To|!<b=l6czKVLr|nVq$tz4o)8XRY<D z+q0gp%-{{C$XO|JagbZz><qWQnLVH%k7p#UuJZ}kUc`4`a_re~;e|poZ!y!W1Gc=2 z|G2!vy%dj|)E!dwc%xqIvhHh_M34KIjmCia2Ard5A9}t->auQ1#>CPMq$8|}B9<j3 zuu1mR5KU3jaffyHPZ6BKt`(S$%_>5t4G%syT3##Zku96K;!ISlWgAb415VDLAXm(4 z9>_&1P=28?^G1ujvG;-(j^%*P%=5+xCx!W%#Dng6)5UqAZi46d%J={TK+a7Nt$mH0 zC2d^MBI-#x@P&s}wq6?$T08e=DqA1!!=1AoX)n(7#}7;UbN3>5wQ^eK300K8`zF{# zQJ(WGit^(hiJ}Z(2WHWs=W+4jW>jKOKUTi=J%X?7>hQ<X69>{?j^1V7WA+Z${)<t3 z;D3Oab%bmT^)UD=GpGC#@{n{~HeAC+9PFVPtXW?Yrt6G_nf@rgn4=F!=P-Dh&K9C# zRgFk%b6j`M*6rCIP1m6*y~*ClJC+cdlU(A=8gy-*Wtig+$eWBKm=oppWOfk>5J%6- zU$A=Jg+MV_v;HfxC4bD*IsH81#qT`_m@}ED^6uN)!qvMn6=Z8WXL2V`@0VzCOn9J` zK26;spK)2YlsPT6+WeKy(=tZ6Bdj)|U`PxWSJinqnnuZQ{Df%wBF|y9V_{YS%O@)R z;u$ZAXk3|`xKOc_;;ynJ49HI}953f^)Hm<aS)fX%I1;f@>5md&?Hhd)q2y(-z!!@8 zmJZziYbC->g-V12)LQ#vA4GU9Ys?faTPZzVD52vq?|JjXQAB9Pz2>N!`nUV2&FHes z8xJ$EuNc+&okL{>nf^aQ`OS@g-u^CgVrRovLpaS}Qnn|$D?&sCLXRsDWGPiQlkjgO zb%hZK|Jq9+$j<3JfglFF5ePT-ArK^<7OmZF-7RuR1cF#?Di8*6kqR8HH3FeWk>&}6 zKfjP032K#P1;Rd0ApB`d-*d6S2!uP(#F&e+2X!tk_32#9S3{&Pf$(?aw+MvaXzA*6 zw|`n@1j1`eR3KdQI@m-Y{OeN)gx_?2D)}wF<-rM%_;K=}o6Z<{a1;zy(+Va0e0d-W z?s4*9@csJnS$Qz5FL~hdHzgToZTI*)<K+>rjKA26cJ^cjylVLSy?Z%a=`odOA~g== zM27PRp3c!vR<z_=n7oYR`2Kp~`-PdWbjmuq%eg{Fq9BjoC4!jc_Zv3}v*hzT*(&+` z{{DHN!|(fk^4a`;$6A-)A5tuz$?tFFa2&_)_s}2Z_vq%nY3x=S!0$ueRvP>5e=3c= ze^di3Ct~;opX!U>zvmZz|Anx%$L}?7dsHs7#ZGY$BaOS&>HbmX8yoZZedmMl`+mdk z`zaot`Qi_I@jFYyov)DsaTNmI)e=}7P^<O}Q}+>HGr602@wM-NP0pkISe$7e$pW4J zJ|Q+qmVB7Ma><f}*mhbi(}4*?PZR83T!;`G$&z9~5@P$xXcVJjx|Hd7Tt8DoY!%qF zy+dqQ!uyeQpCPu&V?u1(+17D<h)v{~c(>CN7i|(gm0U?&R>asi<EO6}+rtl_(bax3 zn?>Z7%HBaXv0<6o^H8A>AL|zB)b{^WruM}1u>p?TE2&1>4NSU-j|M4-oj&*BgRb~k z^hXsRBmd!wk1<4$G7TRXeWG{1;sBAJ-Z&BqV_!$F_*$XdCtvY@5np@%nD`o&iTJq) zuU(MKIlNW-)K_>dn{)W@zv?9qB))dF%=Yo|wb6p?G=`4sHWOd#5-lYiuz#TgxbCnH zU{nY2nE09w;6-R)Q_RAjjprQ`U*mAPjJtD#1dzJy3Gm1;XV062x7*!(%<1q5^34-l zJ=<NoJsUS;&g&^+hGPU}<1|lhGx(YZ7E6smB5-yypOf`5etn$CB#oPq2xj7Dk_i^g z%LKc&HBT(<a9Q~0%W|Z@1B}UuC5lSoW@LkD+)UEJ@)1qSA=0>+Jm<yDB;2mD=})hS zY|{9q8Tb@&vkxikY-H0Ns4BAl{anZY(nC7_RUBk=T-;2@|9NI+igP|Amw8n@aH=C_ z<7THy-0VnF1ebi5#?4k{{?_4rn#9d^<;BfVHs8-YfV$eNeM;I(+>F7^#m%z*URI8g z^qt9S;(L`DB!9G8)Ju(@9TwR~{7k&Y%x|h<_XZJnl6CN@WF3gPQzBfF3e3btll6;? zzINO)2hn`2X5H+la<D_FSaaBCBYQLjyd@1xc`Fr|QEikG-4B<|GkAao$L1MGet`(V zDT2^rUXy1q5s;T>;G;X4Xa4LB7nyL!3Bk)hTL}K|@(j-6eMSi0%dmWYp236Y`F-aZ z$UX@~;CK`)C}{P)N<pRFLP6)AhoX6$2-G}->Cl#lz#Fu9^|`<P*cE~I|4v2V3G1a( zXi%r2QDtt}@oCR7`2{ETl7GkN7Yykw|E@Bm5~8a<H^1OwK+whiHoxE&?NMI>Fq>a+ z=g;%$QRr42Wqrv%!PQ&-p*o2C`<an{T{?PE9lc}ZpN`%|M}+^dHv6W3tcQZ*<R1YN zR~|ZhHmm$Ic?I7w@-MS>E((Jb!8P*lS_Z~#Z}hmVJj}}@7_QQ=k=F@5yYjG)Jc3DQ zXXW8%<`G<$%#(*+9>IcVb6l{4w<ISXILlS{J~NNtt2so+$;0;<GL?r9zTAgAB#%J6 zJ5cis^bqFb;6j~`^FPt~7|A+)oIKR|c#N5v;+(}uW>$!!u8%x|o%2M#$#=PV1dl%B zeOjM+1V6zG+^hW$rTuYv1o`r??6c@W<snvx%EQZyJj}1ZkgC}DB3>#4qSjwX1rCT} zw0hMxrdQ-*4LiPL={g?o;OMYR(`S}MPI-v}9K^X_kh<u19}sbr8ZhQ19wRSO^+6L- z4hRP%yK(mXP}*pY)>^Jy+4<!&jqE%dc8#TPbrr}09?DZ7W3{`imiu@}Wam!=O`hyT zfxHutr$DacLo$uO*P$h#!9H~`_f{aqsm6AcQG8DC9IZ$$N6YL~AxR4@;&=^m4E;00 z^D15^!ZTt|E4@^cwDifmEUhSxi|)+zKQk(1MJ#=jSIEPpX;sSiq$)mnRSB;39woT7 z`;_3ik&1nb&yyfU5uc|x(*E3UedLPItA3;6^R;!-EyU;he?WYm^5&=1OM6<ll>gZ8 zLczqBWL~OPQOTQgN5wrfNd;!Nr!amSS~7Z}$ji;vf+@lndOdrmV`OKepkpp%-OcUW z;Jt(Lwo_;8Q)s?Z)<5LjLOBcFZ=m^1*WW3WCizTK0ou)bGW%tYDgf_vuRO33`TJv9 z<a`A;-%0aqK9DKKL8She@6kO;v2Ea&d9RcVuV2dmc@mhAgc5qiOq3+Jz9_Ae5ZbGg zuv{mhFDd*KW)&V89Vr>^LF!dooz*1YmhW))-Mm~VGan-XD<TP4SMfq4XLBlcKb^F` zR+y}cJ$xZD`U~=`?3d}Ke-7c3v-;=8F<E*0nfm9}xmkHDWo{&I>!ZvGOLLr~mF*_B zD5`&^e=f@*l6<J|X9s>CGpE9K>{^8FKr{Bew9oY-lTsDkqJpFYsg#cUiy!H@%V|M< zOWWWlGVVuNs#w2e&!{bE^65|o-YlS*a~s_cBCEARW;uP=iK3oP7lO-)<CU3Fe{~zK zNSrC^sdujKLdohOaB*b*F%NXMiR*yf>a6pAFgxpoL+s_w=?GZ%Lrx?0N3&ZgVpFz{ zapkU5O|l*%#<=VbPQxUvrc1d$(6gEW5JOtdf6n(1OE@WYuKx_AB&}OT?xfBNt|8!? zK5YvRMG0g@h}P0W@y53NxBC$=^m1WN&a5UuB>vS@Mf>UCAj?J~v#G#FO25kcE?2IX z{c-JvY++ZUPg94ODY=7ph##HOEbheNu-{JIE=68(ktj0hz(!jqZs=~AxD)@t=|jP% z?(Cgzr)I+(rc|WX_uf^h^?MF3P(S)Z531BUWfj;&YK`UOn#}h$tKFL#P%J%POPOM+ z3ve1kz^(-65{6Ud6KB((X1-;)j8&j}6xm-ya@a{gndQ1YsD=qj6u%O&CcPq+BV>bu z>|3YewYA`P@)^nQGOOiDnFz`|M$OiR=;}J%i^Q)M6}1*@lG#mm7Xul=Q)C0xjh0_) z!87Jg84%46;&-gxX+{|L@K=re#c!SbI%$B=t(&Xc6`_DYlVk#B3Ao+canwM|oPCq3 z*nrN$Xy4eXqy5{RI@*`MC!_tlK1RDA^DxDIT^*#Lv96DL)|1#R`OC08u|w2raov}i z*>~nWzt5FRdH%Q`3M0LNWvWH$yu8w^{4x5T1Z}hO=j)YO`SY3j-nDmT<&RVry@4+) zU74e3iPbip#+yl#c4@DuZiIviYnL;Zo1HT5ss6qic3$<|KA5rH84J+JRrr=Hirtye zJU-Cg4X5(GnHdkW4mZC`)A%{biI1N8dAj8Lb8?-ORZ<R+<bdt&RA3>+b0znx>8F64 zC0V_hfvqM|vszDIqJNpke@F*hg>WcTD|z)FW!{YEpr0}a)mz0EdM;>`%x|D!=g((+ zmVbUsDlmFE#6X4>y=qmtkUn=UAh3ie$4+$nlk9A)_)>N@K65pAX?FHQWgQs!uMB)@ z;zy`AQ3M}S!fN>rGaRxHQYM>h`Wx!gS5waXigT(r{tb8m$6+N8`{H-jzCJHO1@b7X z;rzpm+(=|_oe_P4Im_^}B`1DOd-Km0lpo~!QlI*h>^c$@%@P#~K`98l6=SZQ9<npR z>w?pzFb6^lNq7sV#o%genoGNg<Ry|;AFF-&j%reQ2f#Stv9VJqcewg?_ST2aB|V9_ z_9l8LStXEF)v9RiKI?8jUlU2)DyR}qIkE-A&=bqlzr3LQ_imH&-)WBU-^5`Uu)(Ju z?Ok|E>waFd!$`Zi+f>^94MtUI_m@Q~?Z$Pu(r(hjNV~a&W>lU@EflwU{OtZzj@JVW zmCgn3)|(c&Wg5Emrhg4U>P>&ghzzlFQxy-3LXi%PH~mdyw7(DRlK%d&kNz%xTjYf# z2Z-KcBKD_n&<Qy>QV(_z7v-6iSNYw8JR~<q5AWfk+*!+uwf~uWZ-XDcpXEcTyZj=5 zneJLz7r0dF0{_(jmqHi?e3@6oca0SBl|zIgsR@<5wmft9_sKBhqHLM-G;mM;P`Uns zNa|`z0$s63ggP>x>O0Aao2Y{3i;F9V&28+cT5jgAD>S^DGLDyaN33uM@zLsbsD^PO zcrB$_I(BP0lVJ6p=cGe!9g|hEDBstvCsK!&^>Cg?$(~TnviMh;HgZ_Asq{2!Narcc z50Eby$g0_c*?vwfdLK;_AIJs}sib(>PRIZSAoDX6QS<}#L>+bazl=RLo10oz&+GQR z)_3U64C|xzNcyY{ph)(#Tl>AB6dHzpJFP0h0ac;OLAiKL$bMgv(biB4|DR+#Zkm<H z_IhSc{M(Yr@gMrwXJj^R$UPKE{YrNQ)^;ZDnPJ^Vh#0MVbkG`Hto}6etB2_^)ZC+Y zRHYqF{vfv}4@yu|Y{ghlS6;p_bM39rjR?rhUikl*^Q@`rpM36Y$u#%pA8VZoj076A zcZw8Tr<@zu`mAV2XFbD>>a8(3A(X6*R3vV%69P`IE3~J?JN*k0QZlO1)t8KB485f* zXjPT)|0RQx6YoJqa^uKfbK}TglNj)YUL5&9Z_gV$_~byQ2C<F*@Ei01qwLu?%L?o* zY={q@T3i4D58~E^=GLFM#f>rM#+lqWt=A2U8=;~bD+d+bQh8=_Vv%-5f>Q%cFnVCG zjs$ZZsZX^TdAXZ?Pbvooyzq?lX5uZp^66pTmu6miM1|0w_2#)Jax-M_piB3EsTk2Q z@#hA9l6=C4fad{5PZwxv;+^K^Ip!l8^ofd{=H7I3?@V*=61^9Q02C=v7Ksae<c{~2 z3U|GZ_Ri67<}&Oy=S;*(=IsRZFzrh8=!Un1gHnN0LD<|r=X=>D?(HwiWNF#h<=k^? z8!hEhw*f!Kg*R>Q%*;;PLdNAjZe>np;?m(#)dZzJBo^X}Vp%u%?<QMW{a=~C{ToX% zMDFUx3s(o6zn$&wPd)L^TxzmTa^h9m71_93D?QPTyXSZvIX$l<KhAYTG%($Hp8Njh zt%`5npNaIJcpK<D|6Api2miUiuMqf86u!{p3Z2+JnB#%&P$AwZgk8OH{^5uCwOU~8 zo`ua@mx@A*Xl!81Q9Fwy+x_jpDxTsf$P07N@qK0P_t_^Ne%k#!XOy-;Zlb@=KMbZq ztEE&BuMTXXk&#CyK9+62(_0s4@KmnBf^35qv;pglJnFeL!B6e3602G3bF#lcG<NE{ zMVdL7;OjC$m_tobE+llx1_ZXm*#D3khhkx+2K*Q3aYU&MvYO}11IeRoa5%$U5u*&t zRh~<PdTM_`@JCiJ+s4<(PCa&vw6q8)eHHKBXEm9PhewTvByM@@knxG25neyi*dbpM z)ai*ANFUU~%(O2CrMt!dT|U!GS6a-qcqSeanA!Xrkf&V7L}}K}dTkldbl~6a5=~;j zquW*U|1wq-#?(o#3Gm$O;JDyZ$G9n~d(`e4#Q9KCnWJW*GW}Ca!6tUr8Z?ni(F<y4 zEft$NZ~wR`scR$}CA&8_#>YygxfC7pOog0Z=To*_Ue7nHOV9b(ozJD>gzo%%mS51p zQNTGO%U;&`XV%MO{TGtNm}Tc7RHFU7_}Le4&GNAsX3<-(`dx0MCD$@JarJOljDKeQ ztS}D|7IM=hApp0WLNV9k!WeKXV|GkAg_x96(4Ebxim!<>mkzA`cb%Yq+jN2)6hJ0u z?mu*b{>D)R$N4kd3A&A`lnMF;xdaH<5r1_j=!{=5LEl-c`6I@^;o62ex{hQTxn`pq z^)hgYc4RI<4^z7X&&O72=x%6hxS4CEOLauA%zWwpXhS9@ahiBOMtd%gvL77Nvir9J zSf(zI4WM+e+X3u%qyU~up*;E3lQ=UK`1iK63t-Lt2<x-qiF1Tj*$scufAXF7wriak z-}3b9W9ct**-gmX7jpC?s?%!`v`^>?^6l=SDm)v3R+Jh&E>+PsK&t}m#}8m{nE!S` zd0_#^g+hk$isTM)X8fK5BarNO!^kLs)NIK0cE-Z4K!WGV1rGe>eyo;}U4bw2cOid& zXTES}#bt~5(Z}>ly8>ai{nv|&wEdxS(|#F8TG9T8oA}9Zzm@youh>Z8DA0aIez@=I zry{{VRsHZkmyq_Kz6PK2w#?+`b#CG#<wM0^ZL`CZd2?>1k@iDwRO7tK`xu4i@O@eF z%>m!?OxJS;-zls7BSZ$cIKg=BbY~<D^Tyl7>&iJ4)#{B`R(IKlGmM9LtK#LNy=CP< z>fFIne|YuEcHy7qt{X$Cn+oD1>}^jM_z6eR)QRw*w|+h^(98_eA4;mT2yLLSFDHlH zRFGIF%@JyEMTK=HE_|n7!P5aAb`}KS1^qrRUoC3C%BMDLlk~LYPImO=X^11L+euz+ zl^n0y6CXL)uV7wO<}(C$rN(cT@)xyW|Eh;QGY0HZb$A4NYq{!~IGm6o3={@up0&yP zMDM-}fAjpl9d7TUgt6cAgF-fnuFh=yGd_v*9mB{clp-42p5{cpf>oi)VFj6OHw3V0 zcWQj+qo_6cRjszVJo6Zj@U(17zdJ>1d;#&|NvlGq^}se6N4x^w`0;)RgN^s!p7;I( zTQd#09!$ygAkuKSdTm}0rfU!0BjV1h>A^pc_d+0N@d&S<)f`FB@vSO2E1F#Cb8g|i zw2UTKRfwOs>ceQ&Td~@GRGZ(FdG}BIdYq{=$ee$RKd-)jDj>CPA@?Fe4W|h+P842b z{J+Y+ec|0+6pQDsOA4{2D;i!tru}c$_1V7S$Fx7NOwJ^Y59$gm<uBpZCot*b6^$G` zkq&hKA9-O#@OgfYVR-6|EHLkTWz{k7+lT-;zJE$@>go`cgB${3uumfPE7e`9x}aX( zjHe>9dNpGqB{BT2q0&@&4RDsuwEwFdtaQhhV`=|Tjw&m!3DuMrSxK#nXRlHu?7fj@ z(W=9=oW04^r_nprUD4GYf;o%ka;i#$#y==j<1exn+$gF_7R@qgRxd?vK~tapHkE@{ zbMDEJS;h5o9>)>0=Z9d(lt}u%$|-bkzcnvZSvteIrQPtCRR!6%Q!#c~;$u`P>PpL= zAA5^Oe^%R9DP4<D34J_8i?kt;6CYlh9zRsGIN(Qe)WvU5nmPD~eLZr-E7!tZ?9TbB z>Q(b4&KFDHNxJ;@>WyJ>jFGc1VFF&n*+QH*CBKn~y(U(*UM|P#!7{NbvbuK4-!;+n znFC|B?{Q3yxHm6L-*p;;z`;(EK4`oarh@V5kHU+-6`~MQy;!yu)xIYg#1w>~wbgP5 zTuuSr&{^<*XvGwfZfC}7*U!RBzY)^m&1`n9=3qE|-R%G9-8S(mMSx;<d&IhU8HMJH zIS-|Xtwhv@o%I!~?V`FGc0t?+J71P&n`kGRBl5#)n^0U=GodIkPqq!v^!8n18`ZJ3 zzL<H8`91=tmHe)Z6z~X#<65DbQZ}yYpk3M%t6JSTGPi<p|GFAH4x@?^<sweglPM>@ zCXvxe!m-tI4$sw7!J4lh>qus)ndewhyt2kQ3Cc2m$1fy9DyW3c@j#}=oKu(cyTrd1 zwf7pr%-#Rj-2GVX7OUx(Dm0h*oDy!h@8KxJrh7d2*RpWgxc(DmkvyTR)zRj!5QfT= zyU;--{Xd3ie!%x{hi-^Q$VrtWAiPtf)}$43iY?<Qu+c7sxa2g}C8xS$Xh@DwWImW$ zODO3ap`;O6N`i!8i_H6rm41X|3=PxNYN=z?dQ*bcZ0kJxOW1H%Pp<7(1l?$>t)QkD z0!e(A{p}MAI?HD)Wc~|v{;x9gzsJn~*l2nf&weNhPJFC9TxYeN4+SMIq&jowFgn}B z8-#x1gM4*0<BJlfW!bOuvUF%-f%7PnyD(P7&X}lgwU*};{~>?ZI46h%aixUwZv?8c zfBZLpNPS`9X~<>424)C!=N35Efi5$h-6vql(VMsaA_nL09K*aqfT#Bod$PNsx;@<V zF4Yt1Fax!df-kt_|K)eAa$*j#KlDj+C+ur#kH=^-tx$?CiGR~-8`|;Spt6;slK+&y ztJ^#K(F1IeVG;X<j_s&Ym-))@vt8*U#FOFwTR6bg=Z#M!^+cug0IC}AO5)8{^RI-R z=C6?c<`I^OLm%#Z0sQdaInNb{B)8dux%>afyswU=$}2gC!&=b5gN9zJw{|`t&jlOj z78URv+z<ogO&$>Tvsbd>N9MmQ)S6i=z}l541+#HBen@7G=yp4PD`L?UQH{+1RBUIf zrA_dp6Nq_)RJ7_N>g)TqJvEx|kJztKdcn6p@~E{yN}%xvVqX|Fl1>~}qQ>KW6s9cF ze&MVP6hu4Tr9?9)749gCRlUt}abv(|wXJOpl@H=rMG28qy#|53)*2fIpb%0lB$qU? zEYh&o)B6;UP<fyy(y_gWisM$>veuZN@t^GD_<44W@WHcRqsi2>j!MI`5a=JH^6*l1 zgtl{sWvVqU&x8*MTb4$vUiIX{;X4NDkx<#cXP*@F?YG)4#@{+L`^t?V9>(#z?eRAw zRm*wl?3Ikbz&rX!QvUwY+R%W4#5v?-n6cHlyZgV*_(~XBCXfY;?V|^Yz;ZAeif>2E z_fBVH$Bt5HspGv7LP|poxs8V6A-DcAjxN2Gtrv0=V(ZvmYUqvgiUo7Bv(S+kP$bpl z5u9HME>Z1L8iyF5>8XlGwL(vgbpCLlr$-MN)VXtPVY9C9phKxV>I%F^;aCQ&LeA_& znYs29u@^*b()-*PNdw0ZDJcCm_lR2ZF=6L_pqU(wU)Xp-K|BbdNp|J#N1#C8asi#q z-$H&rRM6(e8j2IFf{0XVh9R@f(#PdgpXhuReu&u9@uPas9RH^Rlci#Ay5h<m1-<pV zA#Z~1c>Qj`3ACq<Sr7Z*)|^)07ln|{$4?g>t`tmxgS#-iT-9yB`$E?hU8TlI+P_>{ z)fL1yHonJs8iCyoPp-<h;IRL|%&kYNic~EuEl6BruRpC|&>&uf&nsR}A^yaiu7K35 zEsU26LVrR0<gP%y0C?H&c@hML@*{?sj<X!Vln(s*ET43zq=_HZBo|7J4)nxyVBBNA zg2e8wK#7ZG|5(NHfczLNjZ6_Ghu=SHUh}gvwZUcbBMr=arYgF)557~smhJx)z5AaE zJVKMxM5Hvn?~k9@+)kHnJWsI=kRS6pvp(p}56;z_3*|?<otwXG|L;8w^Yy*1z$I?? z9;wl1Cdf}-|EYoG_HRtKe|?YdzE6)C-(3QrtF=7I2mb7gEang%8Xe!uNj9OyU#~uX zd>{Xl8Q<TzSd!-`mNVriuYX;E1#W{ceMK8=r7p8J@c8L|?!!-kjYkUAUcc0|5A0hh z^H}l2w?yq1w}8$&Ie^@!`8z`k3G~(_&Pfdz0pvi3S{&uZ!Z@MZhqXbgxliZ^v~BVg zG`=TiQ}l8#z(=Wy6AZp2TPR$7YmOX?@8^j^gYV5M?bPX{3V#;9RXoj`A3yzb=HolG z>qYO=1;7_S#giZyB0pv%v-9y5s}U_Ox$5}&xcHA|K8Cwkipbpq%O9!u<zjK^z3Z@f z&2J1_UF)%xnGew)qIQolrn;tG8MR-+n0lV&%(#NlDr&@TT1y@xN=t8xYK+`z$HwVL zdWTw6<K*yXOrc>|RC*4S-C@i!3X#%`f;_auqEcCFEULB9)hh&Z7R}}9@>2!PU`4aw zkSwh(8WIMiSv{7Apdq}CMYW2x@8em;oG^>rjY-s<z%puQ`o7B1bTDU8iG0qtr*NQA zj;kkrih6W1N^hJ;;M!9!j?OA{Vowzrd&=mce|}Kcv}XB?`t)^`1nF7J>Lur(dSiXn z?n~4DFV<IaS_-C(ekxkBuD24S)Om^3cFZcl^%1qg>mt5&*p<}Hz8hJH=HnlZSvm%j zh%Rs>!mE59RhpvK#V=yf4CbJQ{xKhlj5Di>VJZvNSn=VG)W6m5YnxDtKHHzVnm{;G z6E)Jg-C<un2I01P-$9UB3l7Veiid^ggEeJV^M?Rp>F@W{SG_I$9MoCi_Hz>JeVMPu z-(Sp`zZ2xeoN*GIe@i17dXABpJvipW?Ajz>ki3wY6kFnnN+FJ{)@L;@lvmDQA;gqh ze3vhb&miop<R*Ppif|rf8Ta(Z_}NkWMYpDDwt*<cZvP@hn3CQW6!=E0wI)fKlUZ~Y z)6iX~Img#j_Y`;(I0-FL!je4(ITIvwhaD4354%82nCi8V8Hd04n9rQNW_B!Sli8X2 zDzk%<JeP64G(GH;nC}qD3bVdswG9c@42D|b13SOH5OsVM{4i>0Vw%zEKfHZsEIq2W z-bYPrzM@GSxM*uUGc<vTeW<?boz4?-@0)D3-SP$O$uoy?+L0WyLlKh1ht98fO6fJ` z>xlR^#5h!EfdrOF$!g?Q#J9Jz(_<RvH=?<?9OPWiA1Iv8MKsF{{HB-_b$#0tY*jZV zMIYvbq!%|mq{DoWeOs?Z?3b*jcKMs0w9MloYIjAeUXJ?Egb$LQ^M>5R56q9%aw1D- zEd5=hU01i~^y*KIUi}MUgXE{^)uU)BdNm_7Tp1~+TbuQj8|5Xc;zFGrZ=>lNMH(fQ zTT@GX=<6H<hI0LPJZW{UcZtTGRj@lyuw6OGq!My&3zdA9dW|KqYW8M9dXB2s=P-=B zNqdYWcX3qwF*^1w=-5@8#Qde&#apumc7ETbSN^&ky}A<>7QMPC|G^N?WcBKmvpLA{ z(}8#NyENrL^|D(38Hq1tmDkKUzZCHkKUI7*97J_QbZN|*6_KLr%=><g+FYviA?Mp4 zYl2zLuZnEw+x|LMefF%t!mJj(FUP<3D(5o#!n!IHY_(kieJ=M|ZCCg@b_^=RLMcJ1 zFIyu+FuZf5>c@J&zX!hEk7KJ7o^8HVmw<~YmoFE`_5$nr*zP(~3Mfx;uNH!ycy+$> zQ`Y;y=~4&||L2xt^y4paW^Et(aiB|T^5Xye(=q<YA-@;J<XC^H=I`5GxaIMHo7MAh z=39$U^V2so7@ztQCq`HMD;aNAN=lc>MOFZk|040djEVfn#<uv6VANjzq*kyX#2GeH zTdG3Vb4B6WJt2Zb?@=>qR$b$rJq7Xe*{3Znq-E2_1kOPM1G^G~@L^{zdrXoaO%JY( z+PBgT*Y-ids^hU;zRrhp^2S82u4N8fzL4`F?U(sJ;vyI{ud&9WAY|_P1sjw3L_Ug- zjFW9VzA}=UTY$eUQ-g;TN|p@k_-)Z5KLra`bq+W9S~<jq!?9U7%om-*2Zd_)nD0px z%sQuW9v@V-su+sOYnRyU@=v|*OyZv&1ukD0mHt0|O#eH#@iJFF<j&8Vzq6aMC!{zc zbxj=wH0<jtabY}Axf!U{bgsp}ZLGWl@q9E*<gX?~oIoR~YY@!ORBopo$FyG)NzJ(- zVn0!t5o{pA6LrlLV#zm0$e|xAkP*puF!%8mTFw1HK)t?55r=~auGLMI?K~&{MN$vw zHOnQ*L^lX%Ra2#;!WGoBJq6g!a!sakllD=)rq#PhEu_;+<PIJ?=|n7LIwy~aFAVX& zMP9U29_K$UpD<UvKU6tWuJKqGCb#=rn<{0qKhaBljy{i(j<eGQ4T`W0xygQVTJ1kp zE~HuNkNVyigVCr@alARdjKWVUTlt0V#H(8qNpgea!$YiZ7nI7PJQe3#({^G<(&t4q z4cQ-A3uN1F3>i5ErHyly#aEcRrE)~)7jp9%v0sm}V%OsfYigvq)kgN%H++$XP%|_R zjjg`(4fUmpLqzDg;e67+0#@53KZQ42-;nh~ygLu@ZmaF<ftr7zpwKUXR&VSaN`J*) zJ6Qa+Cs@sm(pVjD>&X{GW8%L1@<fYEf6~h-baKx84;V3;-%>f+Cler@3#D)KHSdZv z^oaU;VSHqD`@*pAA6WF!hJOT!;M8X1#tDfJ!{SYom0yNKMvjry0X8!w!@iiK5@ev) z2wuj2J-_CpcG}9!hIn)dzcTpptW50`erbK5&bN{OC~9>wA5-ACZsvpPt}N2bv(+?~ zO9^#==pmkCXU78bHq$4WnK?0D-N;R;0XC*{F!IWY!nyUeujkFjclkhni%!R?JKxMr zM~GK7e3c`V%zSiNt+E|c=i`XvvbKH0SM$w)@uf2#gBfp~j+#-Fl$8DG-fTFLbgV)( z75C-6<^$3(ot*!^%!v$)jH%4c7<Q7I;Yokr7bX>@p^GV~{963P>UJHUkncV5xHSBO z=?T@Yk()X{cuPB&pHRw-r3`}%y3DkW5pR?k(TN;RM6vN1WhCfZf;p+{DzD*0_YT>z z(=?r`kYN!fQ@H>#vRx7+Gd@<dZcuo#%;e9?F<;^XN^UQ*n$AH@<y20ds#+cK9qLWn zb|rUpEUgkI-D>-{0RMd37p{3PQNw7W!887V%1_{*&|q$KB*u6n`hnPO<wK>X5h})| zCM2Ev&<w-&_OR_R4>Yz~ekxy_9#zb!ToA7L0LB3T>XUN($*uCCS^QS>UD8{Zhu#U> zN7y7F9U9@u<0#)IHigeOsm5O%-&5_zxzKaVi}~j|4j{p`C(XiDFVr`@KrOpy?fTod zsb0W(>7(CM{O%CJ^by}ar^M^|!G-kucHCskIv1GrhVd-Pj^}NR*x$@}E*BZui#F{W zz42U%tl*Qf<GC|Yn?IhzhI`+;EHT#mRvAw-mV1;|Q{$7)D_*xg%p0$oW#lu-Af-o@ zfM;B|=6$PK2AWr#FhlHxVcGFSEjngAKmMoVS<-7fhm|nUdE*(XdL`EIO3b$&8)^1G z8P7w`C0@t(F`mnMjc4qFTPkn1lHY*jP%Hl^AL6Y#&M$dP2H}QC?RAwit>hqS^i1Vq zw^5BOG0tXc;z3`s7Z8?q&g2=9+wyn$P$#W-p<5L`?50WGSb1~Ue!25P&)&0N583U( zjtn6~mfn!{7?FIb27n!YOQp~L<l^+Ov5|(2UH+k19Tzc^_A1VYWZ7WXV$(P#UqzKH zA+i~u{mwso;>yrVtO1vdkyl}|Wo}jmdjMg@#C(Hw;+uiQnatEMkDdXW^<#K~dM^^R zS)b_CPnkxipw}Gz#UIJz<=*ePbCJI1F}erBe+yV`-}MD+cJ)DbG2!ENee-dwsy&qQ zCml&M3ffNC{%{8Kx6aTTd@T0O(7KurTc;AuYL>(Xr8$)o@UhaJi+_&yEgxWiR@O<O zHM%oo2KrWq@^6{&uhpC0EaBfWmw!9p-&g9D-lDY|;9qw<j_2P)PK$PUBYl?s8hZPQ zJ0GGRpezU>+`!m8pbC-%<Yor#-JQXxz0F=@uTx^^I5fggLi4*Eez~Q?VRvG@(q}yu zs~i@zKb@2wR-L5`A5$v%As;g)B|;h-#6Sft&wPvZz`uYQK^MRC*S+Z@($FufU#xY> z<90D>(Jg{CSNjrY>zHQu12e8uheJ24`Z@ZDr6&w^!XABi@;?3u#}3nps#VCeUhi?q z!)8TP@}SSRDSaFx=XqIZ_;GSx-sZ}tHL3EX^P-M+CQr_bJi_f!4BjDiHUEG<YWkp$ z@*z3=z3HO{sg$LUcHhNfM)xJ(FEJK*R=%&RZ&;U=@1IE@`&|0i5VSKn`Ti41YRNFl zzEoFuyhH4?dZQCZhVXMD=3&VGL>0DBt4lXf(@ZIpZKTxZ+1Kedx<L?wEY){QA&Qs{ zrHN28@@h<%tcrUD%^X?WZx+wv97zpodY1X%FYE3nxRA$g&dI_wQ6;j+@Rn^Ci(s^s z{IU=jg7F6H?sBEIrpiXf9TiUmq>#9$R@+UgBFo!uFuf6#-1+q<SaRvG<OPX(KE_Il zA}zYy&A0zZEN0OHu}efKOK8(o3&Hk~w3EJ@PV#V_vy<<VKW8#V_G)i{bhO08qxDQj zs*;ccVM8l>>uoYM7z5l4nq0~VKcYkL+{LiducLXd7Bj-_(C78zM*4xHwJ<jhYJ14z zjdc6-2F0dOWVC^lbo?LeA6gyr9q2qQh@&is27!GVOzuSSMVUb3zULzlhMV8D?jfoL z$Ew3;e6hW<u4Z5S1$%wf9!l%eoshjgWdFD7&|!O}SPw@ya3^RlqfcT;$t+*PuWa3H zx`qybJd`pI$UW7<t!9V$O0MZ~hJi9`kIKM~7M)ZyR7^SaNSU@UB&?HsXn#)W1a0E` zk>oR#?X)PM7yKJZ8Uxa2wHaH{vmzt4t|i<2!d~?QKFI5l|8gqBR}eL-fqsb#`MRp@ z&OC1Cv|DJGx5a;^J~rn&+*9hyb#$ZKQRHYINyg~yacZoybO8mh+A*W=Z%6IDzk^73 z)f#7jAWaXr;BS&GcW&n^nl$(9(`<)08Ft9b+I&QAk21GkG`Ba&ZAs+LOqJVc92pq{ z*WS%s!HdLJ`T#n0{=`JgScseAJufFhQX)1>dwXtU#C}rvInR|DULz`7a74tO_K<N1 z5My1KxKQd0u!-bX;I8NF0z16eYQBA_ymk5-{Mn;S7DGzFho%Bf-?aH!FPJ=idE<pl z)G5l}b0RnfZiuDkTobXM9mC6U9Jqdh>8<o>Y4QWS1kE$KV>M3)RhM4lDY#AW&fhtx zPU!#HIr?Z?x*ti0DlNG)NJyqVs0&6cHFv4mKM-DI8t7(%@RH66;$M25jxVvhjlJ5@ zJ)*I;fKo+8)I(V`$)3;{P1kV-!CTVfi9L8Itfs?X6tl41wY0OA-Re6Zrz%%#Uv~DK zd8)p&fW)=26PK_Il3^w5m1|!o#(O$Nr=$A`l5-z|mBJ$Zc&p|xr^1cIz@7hKK0SRe zXAi|wZ0_m961wwlefwY7OQ)+N|A-Z|Gckca40rJW942;<tKXdA^+ojds_sbYS(ygW z+fox+oOQfEY`={HrRviHIw)ok%j3{s&8w}`n0i-x8gz`_G&hTvciprYy-BQ}Jby+n z{b^ut{b}Im>Q8-IKR=+iL3^Wg80F~=F@9RAH)h8Vt(r3fdRF-f45p?pilq!e+08;% zF}rz$eE8~SNotjufP#`o*s7U40+1Ya1GJk5Nwf6Dq%1yLDwlTiHS&`RFJbVMx{IEb z=Hyu6u?j<Yb6c&p@g?>i68BSzo>9Xhh^6WqNivKYmlG)}s(&WmhYG*N?WlSwrm+y$ zv%@_ZlchQJth_5`|8@#L#NvK;X?jA7a8PH3?@-L%Y@ZNG?)FD6NGzoopDf`GXQP8m zI478%=Bu|e_6ef=#%iZObjNz?WX96}+7o{{ny&ZNr{lgsSEO$_XK*w<ibz5I;+XFs zv6P^7@2XgBCqFC0rMs=BzYHhop|NL}wO}z<)LxNd?&*KA>T6%M?*8HkKoSm_aVZxK z8^h_Fi7y=VK`q0E$A}+6My*35>8p=gO`G8md_fWt38t?p@|qL|Tc=|8rmy~#I=TY| z3wz`b7KJf%y(UG{1k>c|BUaPTz*679F$f3!U<vT4`XawHVSmomhpnckvRDFO5z5sj z0ck=G{?!D-WT%J0QVf<74@<E$3DD%A)if)Mr35Uc9+nbmLU!fVY?&|4VkrennTMrR znv~GwfYo$X7E2je`gvH&qzR$gtJy--4&j-;^aD$O4@*C3QbrSYE`NX<(u_-gu#|gP z`b!g3@~c0N&odax!7#wXP%gLGe|q(PtLe8{3<JP0(8Dl5nv~OIUwneWV1dE%FbtI2 zRBXF?uhraOF!1ysCe~66a(f`R_rzEdh%`x(ju9puANivc;`en_x7Yiq$-h?Y+!;aZ zHa5)QLbC?@MKd9__wembgeX<&L6t!W?Bv^fz!a&a#*e=`m>$+I{$&UYgPCwv6{)Qg z#F^eC+^SlP=r?2-OHX<dyTd*b+Bb*n)3ZF$yb~ikmQwD)N5AOOhVtLh_fb~*2gL4P zm}HOtT}%SpwTXwY6>(DeC_=KwWl*`xLrXN)o|@i@Phr>@aQL)^vD)8?2!Y9mTFn!9 zg|M!!mrcU8v09Zd)`E+ag&$NFPCcn|#9jsmCxwGS-Pk!i?Asm_30541kLd?|9N?*F z!$9O~r4>pCrK8-hPY)XwtDW}H9WRlSFBX4KoS-<yd^$dyIukKV!sEkP$XjCsSZnv! z!O79uwbs2Ib)_#`P3d7IKsFwMk&|3S4lq}5CEvG5p|ezxA0jL)d)f{}g&^C5>1*NT zqdp85Kh%7w&)ytvMQp?>VdmE%eciryv@o2$SeRMc6w2*STQS6}rtk0;(14;Sn7-KW zp(&CkM?$p0M<LuCSws^*SOOjvHuuLW57PoS;HWH?09cAWECFe9NU*SXO}JUH6oW+! zeeDb56{|c*i-6U%2_44tr35Uc9+nbm(k)nu4L2*6Qm~YHSW2bI0a}z;O$)PF%D~dk z!%`+qx&%w9;bz6s4=nvXEd8X(C$uQDnl8;^=?|824@-Y(^08p)7oVpX%E2(e!%!}_ z_j9+u)l{0rFaQh#Jq!b+$v(kQ9-p8XEHDVC>Ua#4+k3e?z-nHFzMxZlG1*9$T8cq# z?~$hm#vt`*)yG)kG5e;)IA5b3JN>9!QQ!XRE`s;U$K%9J2_KV!ziJT6)$I<CEshbq zNxr`)TD3P;`xgG6fuXd2Y<x8Df<OoRqE+iJOOG$1N32@nFxtTTdJ-Rne4R@DHhz%n z4HGmU7LS@eZE+;2OEJ#u>5C(*V=Sn$)^hk&Eh{Zrll2Qf4lx8!>Or|-B*OHCsG@_R z3tN|8=ZbE_qxDv3g);`!-p2JXib_{l47{5f-B6GxUs#uIVaGi}U%E6ujMSlgv1@&% z3}4$%j+WP^>K8}S{^aH9QIETtZRf?o<flKfe)^I;pT5%<YQ421miC_?s|_P;zC!QZ zBzE5hj<HI1`h)f?e~gTV3sf40QnxORpAl`)rLu&@G-!{Ly#V(5#P1}cB2TzY6R*co zrWdT^M$GyD8bZ6($)9Zd|B9NZ$<EdE#q_GVlwPIgE|y+J(z6jGI1dpoR?C+!DJU>$ zDMjJM(u*LwAbi~--b8Z--4ZWohI-AG9Px?`8^;8-y2A0voN)Xr8k!7V7)NB&Soxz? z)h=tnsq%-b-lYCi${3;^$rz&Egj;21J0rp55eBe@cu*999csOat`0lTbo17*H-PAy z;iXaXdy>2S^}Y>eYQw(eVS73wbZcvTOtfK|WPeW>9!h@`rDQsiuBWbb?$X4sgXB@k zbJ8xcImY-oKNe>=U5;9zRnAEIC8O<ru~Ww1I4nYTXYzxKIt~{n|K1opu(AO1vL77F zJ+Lmenw|*KH^2p~5lz>6e{AQExA=qSgIaWA{s$1$5gc~mrO6&&WaL&B$3nTXAFKfv zfRNo>Cs)bkMZoJvGW`!m01%riRzMfyAK)rHvOSpGek7R8`1P-~!DNR#Vvq`KWKVK+ zvHh&*kye|`d$?m#>s{w|SZ&Wr$N3z-g)EU1JLq3WPdOo@ppBYyGaepzOWvB-CiS57 zOIr@18JpbhxyUq>p64~xCL@yi-eN)6Je+nk2zGpW5^oIK8OCfGUFryyb+a}OmY%Vc z!6)?(Sqt8RS;MXVa+&01#8r#Jq>lUKujO)87(ZLCS8&HKe;371lE2B!K2$7!`>p0p z#<d(?C4UEE4XY4!69(0%$4|I|I)W5LTU=lJ(iLbJgRFa(*Vn#`?%NS6eStGZ(0L}X zV4lElJ;A>NugB~clJB7ZUS`$XFUL5!h~`$yQ=%I&0!^8Vu}!VEdKCQxg6ps^+&a)| z`Wm+pv7*5w4;O}8V-r{&V{}S^EV76Brq~45!~S(Hkm68>`JC7UmcUk!YD*$NhXVp+ z&AZtH1_1J*u?Z}55f6x4^>B#*S=YvRKw?3MO9jYMR_Xyu0hS4nwJS5peGw&I4)+rv z%hehWNN(Wa{sQc0HH9a;E&Bs37a+^hX&#V*Foy>SupCv!0}cRa36SOIyB=_$00we2 z9Bkm!6^TkWx5N2F_^+A58Q&v&qaA93Z4%-tLx$F;{XW%o(1tETiCRn^n{QCG_7K|6 z>L@3PiMI21t7#`9qwz3v_YM~^wjZeB62WkhLvZe%##gD~a*bRN7)@X487||`lYNIF zmZH|Nk@T#r<svqRr|b;l1eG~hB(pvh#go~*RU}ly9<f}4=_|!@Q8ZXCaj{%xxt5D) zvRE!G%cATk7A%rkhXo5WeMS}w%FdNyxhNJam$+Civs}x?VDXe4#ezjL>!4tP3f?9p zYx;t+bEQ}=iUrFhE|$wI*K#pfJY`3*V3Eu^AXuP~UuChN>|809i(<iYiHqej%e7n# z7EjqxELbG7J`pTX&$KKSl$|TZa#1W;E^)D3W?{J)44$&17_dlY?H3GC73ZzFUxTu9 zrC2VC0m~&Wmdh+G7lXl5b`%3v$*jGC0czWTR?m3wG|J8#(TB#LCr?Wo*K&Cwg0W&x zUmEFPNhRoNZ>`>n{X!a~uUoYp*hH-semmH>w-u`;MRV6)N&9PYo2AE-<13a+d^8lr z?isOI*hP0#!n;N*Sr$Y$$4-%DH0=A(rS8f0u!k@@od3Y17__%I?0;1)MqEBAb={$J zM6AiIz=y<U$o%SdHoV@vlh$TSaur_a;8TS#kvQ;t+oHbBvOU)Kf!JR5le%7TL@E9> zk=a0G4T#!DTbo5z*UM{~1te07`cPY4|A~HijeI%fa{L#ue-ndk`Ry5ZF~FN5=&Uxy zB4Skb8zn#3!{N#747IGLQwap%2g97aD^PH8>jX?3*=M+H_AaNCTe#8h+9hkqhpZ9F z9T#=<6erhZSJP*uZ>{(1a@BO|#Ju&i%lkvt)8F$481(DSp`})+erfU$3ttziX(3nj zBiGuLj+I4|B~k7$ysL}#&PEo}09PZ|Cf`1ibo^X~M{W(ua(f6NpsQZ}$gQMa$gPnZ zS$6IFXX<Bb*IMgYM5k7;WI9&c{nF)7>V6sUj)UcV65oSwnHDE@*y}K@is`IbIqh{k zA|HKlh&I|vqXE+Bo{co(hTLA)*m01hQ{GqHI`v$+-TXMWSz<b9qATdS#@1=e7y;^y zEiPNvI*pvzqd4=><z)4&6}c&DRk8<RG_0KMZ4lwqavvAV<)Sdo{?KVFxGz2wmd{cA zxspGN<xf`63n$3?rmd1c1JQ;xoPIr?#q-SZ<W(a~H}JPbzUjToM6lkwELbWjWHqkz z9nVF~UKdMG>ES%4<PMh3Z{j+7h4Yp!5D84%fvkC~nS;shWx1S&JM<}T0hwyCULIn- zoH`x}`%4dqoE9Bm>Uh@6J3S!lr7Ztb$0J3z(P4d@_3{ww<<#-4m(P1Z)=N<grjAEa z{_BNqOW5-e>*dt(te2N~K-SActd~=<SDMc7fCzv?td~>AvtAy7^z=onmxov{r;bPB z&GTBaULIn-oI0NM@_G-*dU=TTa_V>_+l3yG_3{ww<<#-4mnV5Z*2_bzms7_h!JhPh ztd~>A4-7sn>!oBb`8GtWUJ*MD*PZ>Kuu2pOCdL2Mf~ZfA8dkkgiefRktCWk$D_k}x za>0{AQn$Z{c#(%9_C7fqChFTL`!1UTL=(gXH2C7ysTG<9#y(_tc9+Cw>>VNd9idxP zUt!i2M)ei;YBh|}RKcvsjRIM?U-bSEW=--37!02>-#H!)kL(H>ZZ!(4upip4s=3l` zErM70G-6YOr>CbEyQ28E8+KJGRzH%w%=R3+PFoC<T5W0h<cML;)>s9Q`=!$%`|T{N z!h(U0kdcM<I&vU56&|HTSoQ5ZR_$`x`JQTSDyP2fa_Zd0SvIXuZN_EOBPY>7*>nf? z?_k5G>2eGi;n9hV>!j9U93?eP6<oT((SPu#T)6xx>aG0g@~3FG@+bURdA{LK`4j$p zfrV!*F1qn-;~iyDb=2d}6|zS``14gPTGoojxl2)x-sg%fAmSJH7<3X0y4`A7QR_13 zcVyD6wo@TU81!_u(sBp7ztQk#sP)FN@aK;_pz@~x;m>b*K;=&X!k_)=us*K*DM0wM z(`%{xDM0x1O|PZ$rvTy4XFZ_urvTy4H$0&7rvTy4|M7szp8|wGzslF>+m$~B2!9Uo zfXbf&gg^Irk1Kx)5dPfg0hK=m2!9^+IzLbV1B1^P{^Xcp_;bDCPmU&LBexQ0v?Ie> ztN||xeI^!*`?R{N7oW1h<e%{AtA<Yrc8cYF>cy?YP8T0#toDQ1yPe&8p!0@})$Q!c zK=mkWEobz_OS(F-M;!EcNb!^6By~1@NK36k`^9&aH*OFXF_}D8bBV&{;&hq&P$Ydx z&+TRCJdLYD7m)giE5P~S9eHLt8Uy3WrteUz{{pG;5UD+s*yWt@k!Ttp$P1kdc#kYu z&NbvE=tUPs9Zn(j4hQ*!0@fytRa0{{v0Ge^P6pK=s5$P==_m`~)-%h4W{=GI=tpFM zJ9QebZg*m|MB|bVM%N;hqjebm8u{YoiH}6HcYZ=k!a}6$1zXEq*VAi>kDTRn633S4 zJ<e6U#0?OwN=h`40A2HF281iQ6hWz%Db;sS#FmCqe-fzGHb|;JHVpd(3tH4(Z?$%g zMgkIVbi+f@hL`xr_39kKoz~^=2gS#DMWjg0ViYQQ5ss*)_DD*jovXu(@YG0*aEZRu z#`$HdosL!*wkak{yhPGO(XZ4AY^yU$wbBNE5_eD3?yy>)z@iA*Yl8FNmfi=&fNEGv z0vY0cycKTlG8!QP;+wfYZ;XV_>I!^EA%XNfU$Ax)!%EM`pO@(D)l#ZarnEO2@9OfG zAOVU4Sjkd~dLliKB<C(EfZMnvKLWAcEMgnieTb34KF6bg{%oW%8AsA#GUct-*D;Gt zDl5GUvAx^$z<=JnldB0LG|FIveC=dnse7yT<;Wt?`AZTX${T%m+-_(jX8%cO*}Ttc zE0njz(*GvOP3Bdrt=8W%dh9DP!C`&dCES+{N&buGjjUd~u<!S<B>7?&Oj{yst1qGJ zR#O4}PR?C~v+B1DgVi>DQS0;$;SSlejn4{V6xUkaS#F832(C46j(vO7wU)ef3HjOE z)L*9IM8+?J?PAatjuEusMfgV4*_kG(*?2-J4~Q!i<d1<|8AclvshgBEi|lJKam0g1 zW{%LTBn38iU}|fQ%O^@PtI$evlQ&K-aU!}tR7?~lyp{R$rxL>>I4WS4ox=Ri-_9Gz zHt7no!yh(>+WaN+Mu~`%`S-0s8R1T_w#%EnoyX3e(Bo&!+f7)6`SX^(A~$W+RnO&{ z_Vu3Z?EQw>lb7i1{S`Jb!`w~(#VaZ^C|*&SMG3>}>{XnZ=NQcnt8t8)*^>idaafB~ zV0xH+<FJ;$`*c{#jhw^!zrM`NZ52As{n&I~96MD{>OsfCNCUN^eh{$Qg5>wJ4@2l~ z4s&F+ebZO-jX>gz>b0E%kO!n4^z+q>8kj)R$sWix3HEwU9Z=v5X0}yc7<-gF>-eL& zoZ#1c;lJ}C#XkxBEdJl-t=}Y-?;R2g){?8M^9a0rApeB=Y2F?Az~*he@(T3Ll2{-q z)<KpYn==WTgpEy}bqg16f<gb97h2PE7!j-a$3S_J$>U~uDes?q5BYcQd#ttxrMYI{ zy+N&YWIpR*sIag6JIOC7>?^-|P4E2b2wI7zpfloZC3N%e@Puym^6xsd1SfP{z19rt z(>hgk1xaMKTR(eO%nCV?WO#|sN%7s)Yn>0(+wJC%nD5sd>`NJ0_G@&x`IL`*LFMCg z*&LwxlodI8hVQPcU}6U+D%?dnu`^Pn)~2(D#6J}?rt|Sfa`S3(y}kFi`ILV=Rp<4a z0S0#()3+rtk&KaS-n@S>FT1OPM9Xg3dueieHP2g((MZ)E_r<C4El!MghwRtF_GX&T z{t>QQi93u8)@-qwWqLtO&TyTmUHNzuS-dzsP$FtxNzjaO6(s@$p^5Cht&Q)M-3pDM z5jynOf+RLk=TVx4t2*i%sG`vxseO%koG$Eie3tDx&8ne`%pzShc_L{NLhLQ}Hc{-= z@o-?dnljIdNNc@c>9A=IQWtmuG}%;KWv<1LSqXgpJM`%YPF{OU{m6IGzY4|StIh+t z%Goi-$}#?iwfG>8^EYe^CYR+L6FJM}{t?0qZQ2*(Xc*AJpVC2kEhfd(i5;nFi#o6= zn>X4Utful45oGSI6V0t5VYYj1u<qGA%DaW7aGJS?Z$VyB%>CvK=02lhY!&FDqvP;N zl0!Aubu5U*lAcg13Zb>&d~`WPT%+8UAaCoi3&enFoqB;!Y!`kD<L7Wi(fe&G3W@Tz zPCdCO{sn+5c>+`EWbBveXNUxwwu-+3f-l;zUZVW5bgVySjK6=Z_V4)XhpUUBzIKf` z=fkD=Ql2?YD5V=4<}X}D?ZYuF!{`BgH}6>W=_@f}$o}pJ@_O;iCs`YzA1kU(d5nV> zc}Qq!IMJWOg`w71e^i)LPIrNY0E+~O5%aPKECT2kAV$o2AlAqI00RO<r5o-60|1K! zh!Jx=Z`PK0zYdoO5F_S74_E@QRDc*UCwV}&fE+FpApJbbnxl`G0qiG0jF`7PU_XHU z1&9&zoCoX=uv~x`F<l<89N+)}V#I9nfCB(p0>p@U<ZSmv7%{Q_u2Y_vVa&HB=6gL> zwKY;y-zXcs?JZa;h0%@=`Se4CfPL12A*>SoQOJ!+gRH^9LFP<sKt%!?4QMnzdH4m8 zUqE94jU|u3fC2)l15{@<tumlu0Zjok#cF!ofJy{(1E3pBy;^XU3TP&vnIt%vR%L+h zZsgh;JYRm|b7<F3fRbzqP=4YK0Q(E@Ap?}3_~ii01t>Z<E#)U(3vhq{+YL~D;*|g` z0j@Vd`AH~Xy8+0LlvYr;%7%zkBrC%RQTZk|n}yBBG<RULt-)s7MS`d-AE;~2H`QgQ zD}`BSV-5Xc=}7@uCy2?p3;!lKoi#a7^9^6(bR_HmspmzyVX$V@p#1g0cmFkTxN`s> z19iRBE;?r2-_jeuyYOH2C4(QP`36Y0vOe^P7)L%Mo5$DSpR1+#*CtsW#OCWxWJo9U zX|@`+!AxEnt6CFEmA5!QRKL*{`z@MVEq5_81aE|>zZ9-{$7+_v5Zr?n3f}Xxc<;#K z4cqTjZw%3e3Ns$EZm>MaxB3U=tq-z!N^nr*op2)er6DWTBKG}Yl(IftN3V`sAE@Bq z{F2o<WN)EjJ$;n*VRh$ENG?#li<e3lna@7-uOIy1=wDH0`TtV?nr|{Yjs6v^dE<Yp zf4K=&Ro$-s#nuPBdY`9%z5c(^zh?h`see%mr1yTT&(^<WdmA&;(fLzP@j3`$snRu% zZ-eMYGri=XnV1Qt^CF!!f`qOe?wZ>e*|y2oY?{XO<>nWgmyjY!opYCBD9WZzHKKo5 z!rGBFqOqRC<RXNdcVS8sm#wtson-9hi__(&Lvg{{e}rfdX;=%1S6YdTv6j`?knB)n zEq^}%K{eA^lBt^>73v~8O;0la8GnTACxvZsOf-`EDW<dP^<*w5uwxs<jy0QfFqy}L zDQ3UpS<SoBS8-d+c8uoH)oXM5qi;R(2D>p>`%=#Cl0dcRiEP;@{is@<xIdI~->>gB z_9PkB?vS!R`x$5P3o*D>%MQ#ZdbY%BD;A^j2~l-r(cLG3EJ9rjWc*gieT`z`Q}}`L zjis-Yk8n56@)2ai#Ozo4{D?1#<&WIyyZ>_+bAFleq_$kcOhv0!CH_+f(>HgqbDMNQ z3?<neRnP91hJ8_cU9_ql-}rgas%7=*P$_A!l_$h(RkP}AmjgOaw2hAX+7<k?hf6!q zHpsbhwGGL>vR{u8Q6eEAn0y;;L(*Z{+ZaS9*GoF=N-miEFGk6Q4W+-1+jLZ=)g*;x z$g-rU3t1?Ikj}8-^;Iiq!@+EIM=!yN$HrU6p}t|Ow)uJyZAP7J+7!{|(@R=M(dIY# zcqFmT!{evT5rgN>d^~|XJOSDqHh8|7k4IALJUqp;Ib`ru=i@2K!&5?=g9eYR{@L%6 z<T?*eDQ&t99%oSAca`PgDWlB+gJ&Jom&GILbsip;zq&4i=iz)j{qykjr_Cn@&)xZW zB*D(ZQ%;+Y4W4i0;~9{LX8>*X3!eCe*}h1Mori-6R^2|u(OdxzX4i@k;DVAGmeb5n z7|Bo0b=_X#Gcn)G^;Iv#iqxpZIT=&csW^h_RPWm>{&WJXs86FAK>iZ-X)=_j`jhUH zGWyfx(E>w(>K67i3e@DW0z-p(*T6)Bnp`I^RH*d^CMwkADFQ=>dd9#+hnjqYz)+$V z8<;3jlV=JHE$Ti46D?{%BiDe98by&<Rim`>qd*sOH-0lv(W4eT<hGUH_}77oBDG+N z3zc62^+uCg(C$LzH-0)$(VP}YuLZCCCI$&)y9<%uY-ZseG7HHI{wh@~vAf~tSXBr6 z;TT<?Th9iSg?-<x<pjNO)lp<+w{wOxMcP^+!s0hAaxRy@&5n+oeC*2}FGaNJzK$z> z2@aad?&}yTbrS|BMtL@DC()K+&KxY^JbdEz^X&0n`x~hXaEv`(L7uC;hrVA6>Mh0q zRiiw+e_Xz6F#m*xs=uZ8K8`&sd!lqnKT_itIJ+><g7yZCa^22;j|?IGVObcW=*5Vn zG8N#g-H*g7ACkl0Yd^<>(jG@ks775b2~!`!_*;s^-{R}FpQGG|zh!Dsp1-Bnen+iy z)0droCrd}R*Tzo&u{Tc(d+VvL!(;*(_Ey_GRMCGAB+e37Lv}sKgK+{n;)LG%@U$h) zIo-OR=Ig_~_b2D;+pfdpbap>5Hs6sMx}NcWhe88AokPU0!I+kdK766CW`pcbHtMh= z>aZviy>#Ixh%%_6`F70)tEG|QcXi>fhHLg)&8;#YJyM;6^-l1LKCF1rx?H?rdq1VB zQ3X%%{DY7=R3YEmmp)wX>cb}(eRxftK71{c+NVA&yO6Y-duuk_{-&zKx{Cf6BPVB7 zH5?+fg(dW&`gCPAA*>}afNb7P#|M&(wV%Dm7a_>*ZKvXzq@f2(_gGEe=XejZgx<&% zMZhUA#uB<ENLoOBdJ?$=d#si}$Sp|=_#uukvxJg|k)G6R2}LdQmQa5QnaUVrBw5X5 z3H6_XWnUr7h*?4>nI+V;VSmU>Swd-JmQWXu$xSzHNVA&B5-NC_^6{7@)U;uT$V^#6 zX=9d97mvwKH*H9?n#mF>cqZiIF-xdvLstDvSwd-JmQWXu$xk<JNVS^D5-NB;)>L@+ zyUY@5+OSJxrYxbfF-xe6$7HCRHY8ikWC;~Kf6T{YmQd4%y&^MZ38jr$LR~y2N8Pj` z<!UBNsNlIVACFl=O&fNM%#<bc6j?%D941TM+-J|hOqNh^G>--cvnxv|2i`;*_CxcM zoi%<iZOjt-T0ONJil!|gamuWplsuF5a~<o3te>2rnYVsk0@)452ho(beqJ(KV7=GR zOU4RpY_Ik6k~)F)UOz9HBCsjF*3V0B5LoZ^^OBhYo7rpqRQ3j}-Ut%i%=+0PGFPDT zn_WL!9&(}bn_WL!mbg&)&90v<?JiV)v+HNedKW6cx_-87cOmji1w_rwsyZ60-NyP^ zLo8dYCgJ40vVQikOUKyPNI3s+qPe<$5@}}r{2fi%bs{wd@P6*aC>2*-eZ!_JsMtux zK@qOH@*;|rP+WXCX|x?A29az~ic9j>G^S1)e!Ba(irLFdo`LK;h>$#c_YaCdCLBKx z)@S+&BQUS&%ZZxJ@daC}<((v9z9TwP18E>+1f?ezifn|A<`l~9Pg`R}KC5Xfx~e8V z9wG_za!H%lRKcRU)_9S&BMb9^EE=*fCrhHHqVWrw!=S;ncV89_S(ukgqNbt=2pVli z8m8EdrZ=QvPL@nfMN=$j4uS^1Uwsx0X_%LncxXxljkY5Xb6^$?d6<*Md7)@Z1<e7_ z;1n#*q9G6Sa@m)ny(tqk+Kxob)y%Ky4T+eOC0A3?^b<6nfCi7@^MkyxArbR(*_fhe z`U@Iu_p#N~m_<W2=446MR5ay+W<O|fC(g;DAsh2@*`1<j1_&B$w=X`?^n`TG$&#(9 zC<Y3Oy`aF)c&<Ug<1&9H9aA3HHhb#rcgP(aLQGRKn~K7Xq%dM_MLF_Q(h;GggFb6; zf#G>EodjBk&yoL?=YbU|Y&0;J=Yi?db$A{5Uv*|+0c}?Y%;kAt#R|jkSm*LQuo8vc z0L<liV5JJf^H}HdJg_o>HOeSjgY_pq4`@GyE;La2iQf#gzd|1}Q2B{}9cZ~iml&x0 z#3uk9pwM;$m7h4-9tSOjt~XHmf#>D@+YLm1keA|sq#7efB7{ghVspj$@h`)+k`YZN zspJZgq)Gtgp!yfatG>#C8%#(Ed8*Z0oyt8LzIv1#3psoOCHG#ECdgZH15a0M7fm|R zik?#=+C<f+to{{iU=_SPV6|O^-?Dwq)yn1Xy@l@8c734cTa*W^?h^e;a?>=SWv$-3 z?mS{#)p6=x(P31Z<c^~F6K*(*WVg3^qrLO@ppBm;D3M#=LU-Pp7+>AhNxc^S9#+ji zvGdT^)+H+4_ar{xm=8}YTNO(A|LRQP#bNt(;!wKj*(l572cv(SE{fJ21|NS8`&tg) zj4VDJl<aoq&93W7LXlc3=B|OL#uLioq#5gm4)=RI-Y>-mJfSRV?;|uG?@tJ#!&h|_ zuT9KHDOofwM>I2f6t;KJqgf9}NX<*%PH0kxL&|IVUUnWpNy~0aM_=sAerYNf_4tQI zJ(l_`dGSQ_<DuM`kRMNEhKD$J>{k7_S3EJVeowFWxa#r$=zIR%vtPEcrDI9rLf+T= zd=UR&eW`>Mv*wHVjom%yReR+95>wnS**|u7$lgX<t7X1WbGlN@mkE`j8qn)bZVuMt z25&)Ot`l|9KP-!Xre~UEm@+k5s(V5;)0ZR$iYAS|e1V1+_wjc8#<T%|%?^%QX%MVx zk2a7|v{@pHZ#v)XOH-zJu^S(DJ8CSJUxZ2G{uD0BPEHfO<O3SeQje{#^pAeJ>Y0FV zZ~KLh)p+mle1CqChX0&JP%QI94x9$7d&PTuzsH@RG7MQhGB4mOB?5HZ5aPpmSF8eJ zcscQv?6}FiXdWrWm0)+V0O6LTGm3YI><uAt=)XKW&dM*V+sIJOE2d@_cs1S&aJ<Bk zUBut@5Pu-?UWx;}lHe@f4w=)?0OrCHSHA1Rj}KrjI+zP>fnm`=BK;cn3*P>g!@1DM z8!e<&DL>FJ?UooV%Q}BaV6nrwfJC+Gjl4$Fzp|x>b~}SRRg(EI2}hBl_E`a8@x->? zuNf&#_YTMfgs*h3B_KSQ>s|rjcCrynKv;HS$(2cGEz;01NgpJj3rteW16+;lO1^)D z9l%_MN50FhG}BOagyjW<=g^h9)&wJ?8CwK{rE`;7;{<yXi%jIV<0#SKcQr?qWZoxB zNnqWVcawPVS|Y#|9rix!o?mb`dk<)!qvI$+VR=n4_nT+S{ppLWwnT>;R-U#@g2G!Q zqFc64vdz=uFCa`iRyQ>+c;^i~5H@m<xG)*#WVL>gDOd*PFZ#HUjMgvaWt_{Oc^T*O zClTSlsn2EFD)}=IY1qK#?{VmtqsFoMXE=L&*#D#9V3f=kP&I?4cwGNNqLeW%7jqTk zWDTOh`PB*t244$a-Sl%Q7YK_|_TpeyqSl;k00e^pNicXE>f}HVC_95B7(9+(@NU?Z zM`OdusXQpb;Bjb-FMB`)^g#&*k0Tg-6B1EdlF@olg2CfZ3d0_djMjq^3?4@?xXF7Q zZayf%;Bn}EJ%ilGrI!*69!D@(yq}7bjMjq^3?7GScf<qs11Q1ZaRh^J@qlEs9+Y74 zI6gDx0m*1RD8b-y1cT4?fMm2Dlwj~Ul(hLIC+dqN7(8yE*`Y-+7>O6DVz<oRTrgMy z!8q%PnE(I5V1&Hq!2FzG@YAoG9Q#t@z{KmlIPfEY(XHH|?W9femvb^ZefVjFw+N;L z?G-_LWia`!Z2u?@CSPp)z2vR1xrE@y?@g-8WAFf%BADV_o<_fpB)dsT=|X2I<VyB} z%CE_lFVcJ1RvpC(Gf676+L+vNB>ABqptmVT9+9kkfsNdnTwWZqGf08Stv3$nNN&F< zxu$VaYp9}wes**thPD!kZQ@YAg6zG3xi_S_hg<jjOZHZ4=v;GW1gR6;YW|wJCHW|8 z8e79ebi<mDvZZXjy(*gpIjr=UEXV~t3>s~hseTLNilk}{os9SiFRyDIe=^sFayZSI z09MdwF=X#=4PBs#DPa;*4i@tlVrVR~k2b6L3n^r_;ilt5kwn9WviGGVTDupsreu)W zdALvfTy>??{OC`|Q3N&KmpqEydk71+o`b`ZyM56Eo7tsnMKOFLwFj)0=a{p42~Uk> z{a}Tvrj7(gFV5}%<PLy%3Cdx2A^P}GM3O`z6$rO=i(M;)9<TF&<fnA|1&BzJdc)e1 zB#mw{U56r)Iy@lxDc!{aL?r#j1CpQ8E!OE!MAEa!DSe#$l<raiB9dN2AS#f=g>ErG zha!^x<N?V~>Fy^$MA9opsfm}6pVBQh=1@e^onA}my}Mk1h@@|NK=M<%#f%(^NV?v8 zJNYTymH-h+7kR*e0vPz5WN4#S%P^DwMG!wyG>!a}Ze&qGebsXDcTk0dRS0_#ACY+2 z_(NhWVlIk{NYc4wl@icsK%-5H3Lp_^Vl0Y-NK#Y)Nq_}AQT;=bq5??bE0~Gu9(vq> zB)o!^sNSK63`n9Y7>Vi}N*j;_R~j3+_IyL6H1<e}O5;KUl%IG5KnblhK4gIM6Tcjw zL{=J?7@+)cglMuyQdAn-4N!jKm^(cpgc{cyp!{fxO5=6|kRSE}kc4eWb^D%(kJ3Mz z@pZj|@{RIU9c<P54q}~=r1D$9tg#H{&c{W$y?-=g?<#dx^JZYqi+@K{^*BY2iZNGL z-N|!mI}UM1?a=$Lz9|qCvf<?8%T@>8u%3MU_cx0A(C$=G%vf{|=YGljw>LZc(9}Y9 zhw~;{H8&Osa|<);am~(3q^7%7;IggC{T<FGB0PO6eQ%Hok2F1nTnv8h-p@}vAA8Ie z1T5b#(~!<kUdkCOTOnl6!wJC5PD|(QEdpERJd1QjwONErkzTb9JK5AuKm~FxqWcCr zOg#)eLN+Bd%W!j!#Z`Q)rWsS|z)jnpySQ~!4a=<a6M8R#3q4QNZnh4QM_!nGxgDLK z{JUunsS>#0+pxY#uanUr|4s`pz#kX*o-1T}okutK^gIWH7dQ`dg^}v~hye;dg+wZF zPUZ_Z#35Y0RnJ<~2$i|@6h=RrOJSJ;4lJgMx|VD}t`#`(*BBLZYEAXl=L8SduNji3 za0P&Hqkg}6MBfwSk>FF>i$Cg2DWZpUsbl2J2SEg~FHMPHxAR|&i<!B>Y?rNo)6AV+ z&MnV^$R>bJUB(@{vn2Uf#>t#_$`*|X@25kQ)sXj+<WU2_Y+MNHcm$W4F0R!NHhVgx zsnkPoI-i5a*v&eYhom9_+szAuPs`^^F@j)nO}i8%km3Z^g6K0kcZ;PkfoT(Ly{_En z{MYkhBh@dZGxBbpr8Dxmt9AX5zukVy*amg{f=gwz|7ON{3YR)O)9H;nPiJsO&~wGK zcgi6PGo6KUr474@IZA>C`$egbu`Ic^om5fkM6>5XDb3p+uwW@DXxOL=V)=+r>y0CP zx@}en?u!TIb&ykmQ$hY&@F~UJPcL;6d*BzB@;}x~`2a`iJPK94?fzCl@XzZ^hwvB^ zFXX06M}jc;H^KFsQr9zr!2Rku-dB%?9o=2gLP*j&Y<C2;*>h&@-gW0rp3$D|loStH z<fow{s6E8S?!x3ccx3{+VCO!Beqt?nn_jv6Nh@JN5>9<e-8|gr+{c@VbA{}^&K!gd zoE@~+JO56ldz~cbKNujxQ!R3(Uq6>C@g*rbXB`t^sQhI{fzy!O<8^c>%~U?EU#=fu zs7Bpd&QgZiJ!6U?Q|9CVRGpir%|~xFgQ&yj*g7jp5Z`5#UDmo@y!ogzW*CI}*uP+g z!E6TBVfZ=IfGC>47znAcsds`I1m_f}jPladx!|-$-GTKn%*CI2eg4v(p2@A1rKTUw zeH<}txXg*KluMO1-_=VUn(Mh_2AwDPH3ZSI9QAeX((0}pD;Sw=@EDQf(!)%;CiG%I zD=e+9C+BC&@&;+Gl7{_coqU77T!l}b2ym%HFe#N>$>YJN&`S!O*V^S0y|}=6Q7=*S z3Y-qTR1Rp<OC8`x^-?MNA-z<-xSvZQ`?UPFo;g7!p0kZtZ~&+7I6L$_l4l<TB?slC z*@AYj0A4YZQ%9$$XX8p2Nxu?mMY!k`o&A*A4mzpzx>BDzvXvY_=5F@)GfzgQI0qTh z;4}Jp_sE1iqqC6IOPz%|Tq5C}O*&or6<e4P3LaH=xl}0M<BB9fq|;yoqhK&)YA95x zpZx@{cImVlij?+2yUTrA-tA6;P!@mjwBX=r?cyCgErYfgbs+eRc4o7D)-#IxCAoYG zZLq*;kp^a}?$S%0svqd3PSp&()Tz2wFLkP>=p}k|ffLqC6vhJQd@dvD0oTmX(yJvu z($cHTZlbno2R+Vo->s!rYt8M<JiYyn++HEKU+1>r`peeA^-4Z1$hyq>kBX4&+Ob(e zS<jG$P~ep6G-)5F3-oF2<Ja|4`*?}ARp=YSEYB!(gEGsz&RPX2(&yw-Dj60y&3mMw zB3&%dr}Yy*?T}0T#C>|HL-&DRYB%5D@;SY~3CZxB-j*ED=M?`kxl)`<xe7j`IHUT0 zeda>F)Q86DrQ#eTms0Jf!1)MGEcleReOE8F?dy7}Z+KZQpVlw<7wMIG>{?mE&0|ya zQXdO*siN4ipA;h5=$xdFXa}1?q_WVdTq_SN%7zU>#?ImW0@1!*Pcwt#dYLLS#(G;H z*ujeZoL;R4_?&*jvs~rUbr#xtDWjZx`yvX;UX(mIcJ@Wd?y<AapJ5F_jUK|DrxUI~ zmp|bu{`rWL8{!@Ozix)ry=I2>+J^b~578r<*9?W7sECGtkN@A_BQe*f<racH`L>1a zSKARkeRc_p%YQ^#4&bG-qE%~S>5A12Wd&C>l>hh&N*)G#c8EV4<$Yk@yXXb)3R$nM zedWX8D^942Vh|U~>sEIRVn#TeU4G;NH!p<e%RzA4FrMtYw}&K<OGT5<Z@J!W+4+au zfSJDCMnOjDr@Vm*HC$|<qwA%k>vA2vpXX_JvOME<*hv3a`f6Wv{tnr28=e1Q0iTeK zAK_*gWc~E#`cb(rxorpU+3Is&*7?e3ecMU7Z+k;9{b)-5SN?CYY$p8bj?f#<_mFD~ z^S?jN$*HfcKd|g56D%S3kJ{aDa4w~(`@UJ5rL$Xo&RyV|(d&7kqu%2u1KHR3O_OJj z9X}Ddj9=mZi}Aw_o^^<qefIdh#Z-7-{#oPq`B)a^VfpOwJMz!RPhPXN(3v2_@j2s% z8QkaiNv`H`<0s1!<5%?mV*GF#%#v*(pFMuRmi^s^w?32pJ|D|9d00Ms{JQ`7_{nRw z{y*$}3w#yD^?w3^@XSW5fUgp@Dydqr^@Y!1k=)pjpg#p)1$;DWt3*ixJ}3zUh%rW^ z_0?*XzAX0PBUPyNl>p%pR04=7i4ai45QX3i5+eM+-<jFHyL)Hv-h_K2{y*gN$?ln% zojGT|=j`n6nR92lH??E<^TQ9m1ucGSSl4ZTd~gH5gihcG4@(|HM7{AF2abOD`L{C2 z)`~ZNE#dJaoBD(%J|z9{gTqFP-y^K+#*gnnz^_Lq@Pj)lkAb(|_;K+%Km7b#c^^-B zvlVar8pGp9HuXK4rlKuB{NM%C;&(agy7A-76Y%TV3H;!@%VRjRH-78!W@7f-Yy9(X z<#Agp-uP98$B%64dp4bmw*2seYf+2ep{(o1kMBspFR>H&!O@x524>#)J%zV2Km7b# zxx&_pH-1Io@gtl1#HMz<m-^v{mpd(fYgpHfA74*_U$0K!2R?cH^`bX^<G|4mKmS$+ z*;?_&FD^WOWK-X(iQgc8_yKAyevh!O8$ZZK{Cal+KbT%#8<=_H_d{^>!_U8!_i>My zt%SjEPuTZAvZ?RgG!<?6;fGsYi{Is}>&B1YJ;1L|C-B42m)8bn-uSJ@=xX-dYy9(X z<#AgpVeo4Yiyzt4_h~v8ZTaDcM~xQ0Ls{32AI3!D*S8b+;nADd24>#)J%y*cAAbI= zTw!Y^41V}!P?+xzvZ?Re)Q<NxKm72jqs4Cx>$>sd*FW&<*9rXa>X*k~f_vjP4jldP z^KWI4t(7qNwS>iwZ0h?p(bMLKA6~V!_&vh9Zv5zk0Dk>Dfge6S^7!L=Z~T4;j(+(0 zxAH!|G0j%O;MW)yKeDOs-!v6%`Qe98JuQBhv#uLIyxSAMq)y<6Pv1QL;LaOAu`Q6# z_nUt!T*WH_{Hns@M>h3IP3NL5Km6co(BgL}>$>q1Q|RSmjZWYPKTlp8n0e#(6qIB3 z-0S(_*Gj=PW(!TZaHxo1Md|!6aYf<qt0$ZHjS4`s-1OJ&T!sA{%SZHX!6XrWhjUsI zB9!x!;E}WW7Xrp>oTDCqnec(BOBbG6C3X!D^2dJJ*gz2_%HLMHi;Hb;-`l(8IJ&dW ztHQx};0{>smqxCEe?Hu+bBuNP-@Z)JYpeL<=tIG(j%+XwJs`DiAzWZ1M6D^ws5Xv= z+!Rz;4`K|6b?cG%0Eruif>;A5)M_L~BC!q$8bJOcWG)C`D|+OC&aXyfWlErT9kQ_w zSS?D1B2_RO+qa~>BHV5lK`4ZaR|Qhr5GOv68!?u?haY6q1ChETP~FrMzx+a6wY9$^ zrnA#9Ih%%ELjvWK5o`1+R1P`1;s0Xr&E@|UIOH!t&ac@4;J=QENkc&(kvp2b0Uo(m zASZt-{=Y;9&g*!t!T)09Euqx2mgSd&-cAlUuaFG#7vLKF=kHY4Eu-fV71!<xRBueq zK(9f6li9mE(7QEI{Rw)#186S;+E{S&kUl`$T;E|7f)q+uX21hHDz!G}LM)qlFprrB zCx404A>w#Vvgi-<Z#mfN5tI1`i$3wv%aT)gx+YoEC-#N1=WmxXul165Nuc)%DeunA z(q))-xqvs+>g{5UfJgUWR>OF0g{>Dk6=y9~zeg>`YUne$y@E8UegkG!6>K`S3YHpF z9^(C@;qU%b_(wb8?;bd+Gyd*zWY>9r_u)d?Nc`O`%5T|OfA`Bee<NqZ@VpA=?=HLx zW^H-x>7_o~SdDR3@4vrTNr^hr$9Qf>YWK6%Zk~ZBi{b6h&e8a@xy-5G^9YYF?epjn z)^$IRFj5kqaQ<v9J{%4(hJ?<>{Fq~x{TZ&q$FuflHs7HWpHP3b10S?VfAy27?}raw zjkNd_u&x`Q2>jJreE3qT#ix(0hvFHn!^gAsTQ(1)6Q59jv;!ZsNPqNH`b2HdTh5=L z&yM*dyn1W#xtw*~_~2ci_7lz@t;L5QJz9LW+Pt5h_;}X-m#wxFpHP3Z10S?VfAcl; zdHUdkPdhC>r?ajbp9uWTT739Xt;MI-=H2wf$Fuf*w%Sg78bkb14t&re{mGH|L*Y8m z;-mG4!bd>+3FlAN;-lW{LdTzf*u0mX_;}X7#a7#iPgQt)&?5cCN20!;{lGP)#pi3C zzcT`Vu@)aX1-15bugyE@iH~RPOj~UyK1Jd2L5sp49DzR*u1_sKYjplh<k5b@`Gd9i zkck$bU%P#ny7Aew_DQzdPJH6R<D>k&4H5V&sT|#W^~*YcWd#0SEj~0-Ej|~6i|_N@ zvvxmQZ5KWv{#?iSgBIz}W$=#Q{l%MGhtDHAe`EyyTrEBv<h1zw7+ieu@vQxs&G+cS zC&XXtzy~eTU;8BL`{BcfgAShp)^$I>BJkI0@!>;Ki%%b04?V{p&)RR<e2Xr8Lj17~ ze9$8Ou~Sjs4<Ei<=<vCmb=~;jna}YjoIh5J4_~sh_-u9i5Ow2^XYGI4YP;}har<i= z_$YttHK^~04_{7o_?*tVZhRu}w`%d>OS%@HT70qi-d~=z@3Yl*;nNrvAGAn+>ba=z zhYvq)bod;~x^8^%H9-3b=TFt*!;d^IKL4<JKRxd+&)T=xYP;~M3X6~OmmW!<r_cLy zyazsC1BwuQ@HI(%!ud<J_`v_D$LC%&=xaY7wF^d@HJfKke<8Rmgs%(nXmLg1@aZal zs95je#6j#Lei}OSWKbEUtKD8F{KRYMlo1_^vRr`0xUl_cvN8KDZc5&nc+0hCcgFwp z6R^uF&pfPU6n=U<BO58P-s4CTrOS1mskora4fbStcJ%g8izRSmzrF&c^y^dSQL9ds zs?+?aX%C^_(=;aCcyKxD(%yren}i(ExtmFpF6Y;|PvoY{KhHbfc;Fd%Ct1CSH1hHd zESn{<_!N|B>tYlcV@ER5_9j~GJ#K5SX{?x6!2QDhoA-~1=S<<^*pm-uzs;!5)93}W z{NG9nE55TGi&^=NH(vg*HLUBv{|hd!#l=LMNVxFF=*^MH<tgg`{&Z1=kN-R$Y$g6T zf%3!OzrAe;RhI1yvbCqjU-;LEe^NyFD}UQmaPY(5%inf6>pJkCgdA!ABwYC8?SlBb zB1b!bKV4wq<44~>{IartcO<jM{{7pVXtnpatvx;d!hc8n`$vR7nKQnWG0HyATQ7g! z8rF5-{{?cS{gZIvkGEgq@AC9@0DrpJ!pEPU54OtwLHXIge|y{DZCCbhYfq2A@DCFI zei7kM=I|Fz1qVO;`7xs%|5?|8|0Lu{`zPVTAKy*H-xayq0sQI03m?DAA9ySKcYE<Q z_V3@`M612WZSCpt7yd`$-!~%sl|M3)_-ZeIq#0iweExocw{dCzBwYC8yPo*FJe3{5 zpDx1i@vrBDt+Ibme)jL*-Zp%FDf_pzr^jFTH;I3ri0~(K_&Xz+Pw?`0n)3-k{3k(P zY5yc#_``EV{9Tc=9l)P1$nf#A{Oy*qe^7q-`?ojIYVUDddwTqZ|CIRmjtGC#p9=qs z-}vL{Pi0-l`11vFr2Ug{;jj0!b^w36IK#)^o)5Ol{z3WS@82F*4pR1SYfq2A@Xr$e zUJ>E1{Iydf@b`Q9Yq?Rk6aPubk@io*g}>gD+X4LPLJc3k%ik#~`?vY|z25)*+nZ>$ z_qeS+5B%x>CH{#K;jjF`?XXHe`^QkFeg2yB3BmE_3$!NfpM(p4sD$H>EAqDk_|ruj zKK}Q7uvPXC%Fq7&+uMdQQ`x_*JrDfpUnc%NBf?+#n<I&@_VPEI@zp{6CqZ6m|0G=a z;|?bNuE^mI;7=ED`1oP2_@M0H?Zwx;|M<5z(Q3~Tldb*!jidjX`1gnie==u$aRmN; zysGN$U-|ok_<w;MY5yc#_~Qvi{9T^z4&YB0bNKk<^TAfxKPW%@_it|-zFCz0+uHN6 z{}zRRLPYp0e|aSH3HVgg;&09;1o58)d8Pf6aN)1_q;~*+y0F8?FLT)qW&fc3@b_<T zqSfBxw)Q;mZ&dhqj|hL|k8j@xfBYKdj}PMi1#+bQlW^gWH)z_w%TwP0{OKYOAOCzl z*ed%6<%hq2d)wfRSN3mf&jbG|g@3n*@K^r+sr%sXmm5Jj{GVt|+CK>w{`i6<{;rvT z4&V<ztWW&(8(^XAACw>de(e=Zl5IU{YfCIL?C{r^{?E7~g@1e``0vYn0#^B++}9ao zZT<e=9bYZx6V4G1f6gbI2P#VQ39I1ZmiRP)>ePI~l4CkEpKw0d1#kKB^t99EJBCCQ z<`dRgKJNt4uSg<apRwxHDL;8<<`aH}y3X&38ORZxyOV_Le!?xr`^gm<tG%Bd#ieN3 zF`p1FM)p0+j~%D_gW57$Hmf7;+;6q>U%UVM#*WM%j0ih_a3tFG`+mSsr+t2Z9pb+} z7_AAsdy{bCjS-l5M>2olfj1|XwR65XkVM`~6`&mBmJV;vc7ABJ6R@=-R)4nEH!;U6 zulWKGyw!Zczu*V=!`o}VU>55-{1tyjj==l(BwTpoje~ecGGE|<H(%Vecz<L0sZ+q% z7jMsYp0nC<ta+lfZ?E|Q54_d<z`5Yyhqu@Kz@e<`!274j5qPJPaN&(tR^lDW{D24E z{7}*2Jsa+DY2Pn^^2OV;o%5}BZnCwbw{Nfc01v#?e85|HOYy_oYd+v_tn0vg0dfT1 zuaI!zjV~JF9m#xv2j2WJ*Wx_@>?Gc4pnUQ6Z08-zpS{cOf7aT!m;c`bZ{`2L2JQOc z?dAVJopl{}Uy2-ocLoU;-W~A&d*Dq+los!2EI)l6C||ri+ZkuIbC0bZy?uN6`#tbh z{{GM41@Ob$%imwax(>WIAxGf-0SOo09q{*i;7!M?7Vk5_PTKbbP`-G3wzJLhR}Zqa zqsQCJzwd#!^6yUt2S2>M{QH-)t^@B$$PswoOu~gXJcJxiT#?irc^{-8TD%v-cPjC2 z0p*LgXFJoZcIMjJ(c|sq&-cJv`SbgsT|d0N{P~;V<96cR4Xp{hTT$f38(GBLwGu~1 z@aB!C#d{3emUtI|^2OV;og}NBvuy2n;O*hR_rP2E@1KO#`Qh#5zb{~2hkZYU9D#Q! z3736C7sNXf|Gmd}!Uu^K?@ug0domdN;_cbaQ&u}mL7DA%;O*hB_rP2E>rX<vet3KN z>wB=S1Mg#yBk(?qgbQyBF~mC(f4v9Zd{NTkJ=yZB&vE<db>BOl?fk@Q=L%ap9(a5B z=RNRN{&}vs>W8<NfBq5Hb>Llz9D(<<BwTpo2}Haj@y~nU%?|-B-aWxijweGwnRY4W z1$B6Pw!_u4WjmjOGTZUMyG8Gh_rP2E<1^8&AKqU6_~TgDf%k>T5qJ+H;ldklSj5}4 zl1N9!Z+_@%@qX0un^)QV=AL+awv%PGbBC=R54;=o{&x?&mH)i~UJXCI>2A=)KfTPl z4!l<(N8r7TgbQ!Hk`wPp{O=z2O-GIv@8iKv+U00ard@jC?b#03FOlu^vbE!Zca`4X z?twRWay=5p=lkIu?}7J4tn0x0I^+nvuO#8Z8()6JI}(4p2i_i0^v0}tXj<ab2+9|4 zk9M^Fb<g!;<BIhDbv@o)>R*3Vd}PzV{yIOrz2fz;2nSa*86bbNt+(WB*no)A&k>Ev zRU(4%)B5$1*&^0R{;9P_GR#E$Bs{oQ@)LcfubsD0$a={_7HBDCt>o8n(*}L*tIf~r zTKReHjNQiyDX?s;00PcuU!O4G@Id*c$&-H~d-FJIgp?gD%ci2Nd9jSYH;N}Bm65vK znEfjdf%42gEm)Dmz_KGrSat;Md#{(AEP2@C@sB}{xIYdfVNDKrt)h$`h%w_TQ&MBZ zz!uz%qBq9u3hV2<R(zc=z?PL*Bl#r#)z?{9KdG*6{xjCkG1qI(MbqdE*Ev4>`l_=t zhkalaAB_u(Ta%^~H4OwMpG4>{hb!Iqn}UnL+t%NoB1iN$m4vOo7|l2qxO~^z{$jLO z{hecdWv>%o$GZLoubyOGEq}wmAX(dAQ9<?hR8+yHYUu9?psfCS`HzR<B4>XuM2_h1 zFcP-@;%UkLx_rml{^D&y_4ft5@k)!_3JR<AX!IMrdWLoNYwBuke?<k=-{H6rJIkTJ zXM(c&%hxTPe$#M~v%i-jNAx#?gss1Ly<vY{zFTd7@wTe^TZJzw+21x$`u+y5e#pA| zEp@fFzoLTb?<Kep+v}mf>7cCsdihUB<05B&uS1UL@0BEM{l!}>`|I+ZYWs_?A=TeH z>ub0Vn$!0;c=eyHs~g0(vxhy43aY=?;zH~(i2jZRW%bv~e>njcIr}>aIikNeld$y{ zUpMTpD|T7iUwmz={x;%UR_ga~G^g)x@ajtI>d(YCut$GI1=Zi%aUnKZM1OAtW%bv~ ze|Q@%a`txyazuacBw_0>K1bPKSFEtMzwqX${<ff&?C+1!oW8%os~1>Tw}ax<T6-21 zRDY-ALhLq){!Rg9_1DXPSA>h4{e1{IqQ9jiZ2g72?61prr|mDess6^H5!v6fLFxM& zyn2=Ott@}T@6lgTLG|}RRKb>;=x+%qtG{0UvkF|~?C+nEBl`P$61M)r9@$@)?@ZfY zSd;2+G8&Qny%?0fzrm|FS>L=zs;jm76%|x}|AZ>o$`Jj143yPhn7np;o`Z{={dIre zTfhCoc*Fj>d{^53Vzf~GO|g1#6)1gwgI9lnXMjZKBz3j6zoLTb?~AB{%~#Rizk{;+ z>*YUs0T(&@y8t;tzud3Mu3tQ!*k70LNZVgL4OD-Jq7m7HUxU*3H+Xe7>*{mW)!P1w z3aY==crC!jmFVw$P*#7v{5Sk|clLJ`azuZZk+9h_UO(7hm+wZ~Up(zqf78&2?C)Km z^!*K9eXw<Prn*|&Ur|BzcO_o?id(y*ze_+_{q^#n)Zrp$e>WjV^!Ec2w*KPvlKpl0 zPPF~S+nnkzzs+TT?**mrZ}944tgEk4S8Mw#DyaT$#8+@}Yd7?FEhwwMUjB<lT;%NU z7yOJCzaJ%G>n}bZ*k70LLfc=wt*ib{KqIohe*mTLZ}94$T35^8@OzBUqJrx04oFqp z8jt>N0cG{q%YOieoU6ax*iH7g6-D;`;@gw`b@>jo{l#aa=<now+1KY#)#~d|;48id z`6Xptd9l25rn=I;USP=gk*Fm4o7bbbHEzmG6W+l^s2-PhA-)wSpNBn`FD{>I@KaH& z2g;R6;~&BYqkXB;?pUgn>yvgQelEwD_)ckSjxk}Gh@|U}TaO8>cbQ|{whZVGopLU| z>G?>k#ySF3*q3(JTw$+U@k{&lf?AS{U5vP?5qE+v-kN62o(J5UFXMhissu1uO|0Gp z;RhP8RRvNP7_*;X6Y;wO@mw-BEe_jr)7=ulMn<!XRO_-$`hvvwx7843`HZ<n?$~7c z3|qT^nOkJ$_!MM*0I3%;bCb*ztD|njR!nIqSj2+gqad(z$pt_=|2E0%8_;%<dD#pd zr{C&0-JvpJ9Fje`v58a2sk9YPVc(|<fL2b0<Tu;mCwh`g$>ln(0G-cfwv)dx$5{V9 z{x{+OBT6sZ&3`peyq&!f%BdGkNgOuFW=$OOvmucLV~xD3np!9ykvP;^@3eS9%CxK9 zT`!UCI6<D_Y+SbcZ)6t3GVWg_N+ri?_Wdu&z-qZ@-`RS>FM0j!ht>7a<62x_FjlRs zD+N5O#avI9>G)j>gYlrE17{`M%gaZcm10k)E|`24E788B*-ak8UMDZisZi-bOs53X zy(B6*6%ZrnoWlC3IRV@-&>?RUao3o43igN|I^}5ht@1}|Tx|QbrKS1jsE@tG#I0fn zLEI1nWY2gX*!`!hY){+k5mvGOv)lg9)LA9RU(^n@|0Y0h+W!Q1`wc=buKR1P%rxyv zs(zKq46*uBwhxn6<2MI_&R98i;Wn+jAOlu{JH6l%G-XO*S$DxNXhVckS$3Ljy$zY& zd3zG0<W(4$N?U7MCoW#J>9=?AUM_A;nKGj0+kB(uTbi#iYmrd=))Zs*kL4(qQoM06 zP-x^BIelvpFfnHL!9~sEXjRtw5$Y<lDPbB%d`YQ?VXzeIkBh;wX4e#9&vLv>5#wc* z;JGBlYX2YLVzxw~p2r19XQ!A_KBqF$%#44lj0t8&E!&*Fgz~CpCy#~s7jG;?XNu4n zsZ~pU$u55^SmcjKv-vkpsQJ9PspiAxFKgaz{v6HLP!fjLJDZ(SQ@kK;8u$h=j8np( zEeR@CsEfk|*=Sd0+>eZ6fP8<ADnWf&!tvzPsv3oo4c`T*Y_cdgT2#JARZfwW3yv@= zj^NVO0{Y1}VgO-lW_m0Zx=vAf_WRQ;KT|A(E$isY2cmp}rapK$h8)qJY(^k0(m~c0 zDxId9s!&~6iZgGJI-K$JD|jDgJnYofCS$Jm9Ad^t1@SRvy$)zF1ewO$e44j?+RV~s z&#WA5u;4bT&%`;838;e_E11m01eq{q{f>N<*;&@c@msd#V_yZsRNdyfSmP(ggPj5; z%#X|#c%|;iz=qVtZ7JB=5hWQr7r>C?@{hv8@Nn~=nNhqIGbz6pb(X}Z))})NkXK=# zh|53Jn4f6O7gu%5zYFkn!!GEP&_)7Fe^8cKCdv}>$Du3%Wn)lA_e%bNKv`lymiEd| zLn$@|uPZoH&B`R4i8qL)7#UZdS|vB8%>TLZS}iu3#oR+YryrVo!ybf;Ty7q9^N-0W zU5J;-4CA%sf$G-oSUbIYVD&CzUR7Xqn=x+{=PO{Wm=DT`-<?sqD+4=O<{uZr&)f#{ zTA+}z^L@O>CME}VF6Jw^F>^czf}Kkc?FxWURfvfv#M(Nu+K+h!o`R!F*JTuMYRnwA z)+p{SYo)N(+1grPp@_A#g?xSmo5U90Yx8c`UMS!7Jz9Ctn?=DL9=r?2vmj$wTfqat z{^U_d?v59n?$yMRW)sUYQg<6O@4}kyXshXwZ?O&$-e+n#ofL@QLzOoDOcpBO^4>9_ z{vjTmAsiQ~hV%a}Wvjx~Dd=SW8M><<;nkV~V-|PeR!tc*59QArLYWz}E>%})3r`PM zI4E4<Zmxo_FfIvVY!t6RftJ@YRYP0&FI5N|DX12B_W{nt`?z-Ejb+SIj2X|s9&7gG z4ygG&e;|gi1;wB4HD>Ya6~*`*S_%pSS5;to8=q-L$pF3+Om8bfzA<AC5~!S1^EIAJ zd$5-STEX*kPwu$1n$3KO?#a!WQ1hX9lGfu%T8}4b{pWb|82G7C%=m^t`P6|$f%5zT zMVe;5uHR~FYE6B!t+_SzpQ&aZK{K|eUhsK|tL?oi7))l3WY*{|N~n>~$ECsfOy+RZ z4z_2U)sl$+B(d{E^~My?QwO%=m_MLB(0dm*Vn|(@-}|tt;-&GZ8i#*8g>CgYIwn;& z_Nw04%UEhGyLZIEz4vAg*eiD2z?EYBN(%13AwDB)^^4l#^Xn%y6}2Tyda0<bmobC$ z@kMRPc_VAurWyDjP}7vZvZi(If|KRuy(iMx(C1z3^Dd8zdg3A}X-ymOYJwF6TWF#Q zp#^L!l0TqDbHP$vfZDW%I2WkKtbejLAAy4d#Z7q6dnb^(0<T@T&TTM}Y5JdFVm?`? zFD6g*UZ?Ca?{C7SXCERApVr$7gAWl)7UNyBcyUTd;ZD?GkLR$*b3%&WXEELjv~^!4 zH(@rE4Y$qOYH>IHh57Q<D)=#og~%-!4q_1qJmq0^Ba8{gyvvd%q}J7-0Xg4pmZY#G zMU~io-)NSnu{=$cTW_;?bK?qk#ckPB&cHD~AFq7x1>)CcmLK(-=3a3b*Z2EfX8Z?x zHyVA-{X*RKhmk!A{|Fh_j?ehB1}-p)$G~|UDBU3=9T5M3eN==>G1|&!VlVo))#y-C zNe#iNq8dSPg=pj;G=eOCl5Zb_gUI{}Zg^(m6MH+igb|r*RpwA;;vh2ri%jZy(iyxy zjYT+!qTi|OM>7)#k(n>9-wKsUwc(rw_2IQs!Ew!22OJ#fFr*kIC()N{4toRn*p?qZ zuI^l@m?o1c4ua`%D$~)OUMh2_y*o{qZwcv0t;$3nf*tv%%ACMV90a5LROW5W#6e`< zh|GX_hsX~g4(7$V^2SJ+begLV*e5<zC7d#a`hvijfSuUn0&FWE4X!3n)HTVVXLi;B z%MQE(GSdOeDwUbWe&Hbc^&ge#faPJ82}FXhFn*bBI$#+sGauvKiHjeVXQ?k$RH2IG zSroNl0uN0+Hb)i7vnX1jie6Af@+^w}q>8Fkkvxl{JXKVuisV@oU8IT{RgpZ4qJgTY zMHR`jC~D#)+VsU#0)|I<k`L(O3^86&_j!2ci`&Mn`x&xf=k53_WNLMP$`*(2?cax) zWj$_x^JMs{t20)9Ix2o?=CB1*CJQH_d_Dj~jwKida%(}4Pex)K4$aGvx-kW*92}b8 zLMnGCQWJ4#ew(VVHj3XA6KA+<#ofC#E$>A*vV-^V<DWRhBG(FIP)QYESq9DKX`i?c zcXR)XgZtr5?&^7Hjf4Mz$|w;!t^g2f>kYLb%L)8v;KWQI5gZ3ss7#__je{=;nK%ye zdNdxqPs-HwqnU|=V0VkS-gY~?$HB`sJ20%U2Ew1&2g2ipl?gA9t3SgO*JN_VL2x}% zWjgw^7axQadZ@iWjVja8lWLWTP6T`MXO%gDnK%eW#VYeQX5t_+#iomzfpDVNKv;lQ zU@1<WT!BpO&2Y@e4#ZsVdw5*%UUZ@K10`oN<-|eA`3(>zASukmL1ccQGKVq~2a)+d zm6^s&97N_5Dswb5aS)kPRpta{;vh1AsWNY4CJrL=ESaer7v-c%?qd~d)RAXVixZHL zSvM}uS4A(VTJkJvm8zmDRV2@%=xS9|r;6lR6rHS!8dZ@zi=w>};>TK4kvxl{mBLiD z<Ko%YxOlxaF1i%;Ysu4T3ZsyzHHCqjT&9o~hw<>*|AiS3gZy%9LEFYdq-^6MQlaDF z^XRU4i_wpV_iS{CqZtqPfqNdl?`<RT-yLINl9RLTeHBA@GAbr3t2>z5v1KhZis>Y^ zXDu>{KeJ^uaZ<>7!U?@Ly(P1#bvy!jYI;RxHOefWnw}B#k~*2iQ<HMjRmm)#nu-Ly z<OOkB%v1AiU^hpmd1{`3bcIaw)I1vLBAMo?ISt}tB5v_*&3NfvG6B?t=955;1~t0* z7*M!kaa!{rPy&pQb6I*zpe(B;Fs#~`bsk?`%hGotW0%M{2^sXUijf8-U!mkHQF1U! z%Cg$a(%V@vSzhP-e#N+!{U#1$-mH8Rx4-#L|GIo9%U;2v6_qP&MU1m!tqm;NP`SZY zRDvQ1upI(y7XmyeGj<|lr^w*X<BWOf*tBoVUbx%fZzxOu5~W{?((B~q!LD6`40O$A zFJ<Yw%d&Q}JHwq#spl&tdxMg_QTc{Vvd`tKT=qLGdZ+RoTakLH%oh7juCK(dlNJi| zQ40cYgMizFfYmbN8)SSVGG0K2F+Y8eF+Xe1Sxb#sZzFviKeVTB<k9?!4}R~Xxi3)r z3sHNLY%bW}YmwpZZ(CVb8~b~SV3h?{>4MdD8dhoIIrTa^ne}?*>$aYJuHNU~X3^V~ zc!9Dyxk?sgeTbs5A69;7E1J(2zOwYsA@Jw2|1#riWPC0Aj|`X>jEo{ahZHT*rY}_A zfvb0jtNB)mj9`CnmlbT+m!-FsWwo-gYaLDhpSlvg{}y0>%PY7ujx?q$%U{Ayyv9zx zR{5H(C!gcBibZ^n%zCTxEn5-e>{!&mqK3)_ThV+~^cjmjtNhGX^dyRcx7N!@q2uuH z@XA-&+^dzZ+AhCUwv@%U+Of+km)nXiRYmnIs;{iK6`iSynpxCb*=#EkF>-b&kC!6g z%B=tK^8Z!-&vyCec;jLb-?7KmR^rhT)W0fP$D(zW>ug2yRnb-!ZLQpDE8@O44plyb z3_w68uki9$Dqpc(eyeP0>@t=wtHe~Z#s5-O#I0VlKBz=sfK_y+Dr#a;Q)QE_h_8?i z{>LLj@&7OR|F`nLw#z?PuW(D*($Y%I8(2(MsiOB;^nN7*60D;6s_0V|eOmdct>{S< z!LDJ-FlQR$GssZ<=ac{Z%K5g-Z&fWVVM|LYm)MFfRYhxAw6=1st>{cuw1q`mD!15* zjzkf72S?W9k>R)*X5!H!l|GO1%&VMdtNtP0?wGrnEibNIY%5xzir!<<dzJ6mivF&O zK4H-(m7my(?n4pe366~XNu4<|HqAl8^k3y>y-dz8SH5hkK1#J*!<K6*Yivb7RYhx9 zw5Ae!|62MPsERhTXmjOeTM^f(gFL~Jswb`uj#LRqL0dVPZ_Lel35T&SRla1a{yM5N zcM;1MRW7m>{aF>g%c6HH-?bH$sG^Tq^l|0KwxV04Ji%x4WMl*fkbI;pdHzGr|Ec_s ztvcUznJezEg_U^NTOb^)inu#+*6PaDwxXSQn_{hxSoBflN4BB{zG&H>y`RX8;Mlwd z84$_!{lb<i*=A*BrLDPg#fkeKXDz5)U@MxWidL~`RV8<iHs3PFs-jIS+Ej@+AghRR zAdoNktQ;vbg7Te?4843WQoa`}U$iy%xx5v|R+Ce8C8CflPODVWN*1lGgltyPd{wlO zMH?#-uVfX8HRkNkwr6lH1P;pg2r{(tjjdvHRh3m%b9t8_XDsG+bF=Cy>w?*w3LM+W z?8eH*VD_=#W4;d-oN8lQ@FUugd=E6<SQRMihdEU2ay_iNpiiJIb3m^^*@%I?km`k< zu2TZlpQhvtTUyYwx+%H((`4+de6ah~B@Hh#=muV9aOBp?6@g(ZjTwK(7o+LVC`G7S zUGov9zgU!)ILqN~hJ*Ry_j<)mNf`wfvvjhKivM7^^fag0<}=dH+B5BH^ceeaGp?+K zufiFnO9QE`3^c)PL0SL!f1ex|7*?B6y2B{>;|UDe+-Mjxiv|Au6Ho|dN3HD@mwkP| zvh4DHeH9mLJRC6qfqm~~mLtLuu5ZByF-)hfK+K6`Fy~)E21gDt8C;0_4BY>MLNI7Y zZ(IzDAVC~Hs_-q7n}ip7oC^^fg;#p%`~GscQ5ZKR3;wpWNk2A*9B&NCN;Za!Nil|u z8)~GUV5DXz8>wScjMVW%`Dw;a0@Mz=vwCCw<c#YN`CUf&AwSr=i7xsP;CIfU2T|Pe zON)$Re*b~Fqh$!;Y+42D49Q6|hD;o744FK^7&7g)K>0k%Z=~LsW~AnhHd3cdFj5PV z{U)>Xo`uv^f%1o#nEF%lpolnUv6m;{KbzgAuP!$W;x9&7AwO3OvyrlOV#K?yP7JzV z`s40rbR=pccwaP%c|%a+hT@Qe#&Rc)#$oaV94uj#>m5um!7c<Sq_d=OJSr95h)RXI zs8l!wl?sDhDR+0Jr@bp?OSvP_Qm`xOY*%%K(+r$%W<7CHGWyGMSr^^KtjbzpVn<!R z+S%O-)JbN;ErH@~APTcVY<F5nrm&Ecj3FaiU?Pn$kvf=2m64j>0vl<Bjnu(Lswg!Y z!T<I&7-TcPW1QAOUC};vJnOO#XS)!>)v#qDFTg_Pz(OiuAw_}m$we@a7hoQ9U>+4P z59AdV<^9_Z=xONONc2e>N26$*-2|08vW`86;M>xek5pkcQbPQbLd2K%t1;;QH2CFk zDuQ=LG|ooY+!!`Dt_p{o7jT$32ZzZOI7nH8){)+#Bq$t<Duv@wrSL{nDa=Kc!YQay zsJimtK6eETq)bYI5CQ}eS&is02%wBZHd5PDps#aQYV|d$yc9zk$2aJH@1#VeTg8m+ zrB!kqla6Zw48t&B7=w)=Ij2BT7l7B-2(~spi-)SxNPQH~<2s}ZMS3ODx%l=i91Ck2 zUpJ{g^a*>)ZIMkQfpH{_88BcmTuCc_pw20)?RzZ(d4>LljM*+_9=8GVu7JF6Ldq)2 zS1Y9C2JmMa4dS>t9)=F%e;c+AkqRko@}yoEB$c2iP);ErkleAtDILDTg5TQ?`S$qX znFKt42>E^j`OdfS>}KJKUnT%gq!pe>cLvW3ToQZXsh3ybxlQ4@9`e2edEc<`6jH7h z#|ClS+^r*c{^^}a@%+{g&;G#kD9Cp*<U7y8v%7_7cY!C;3QwdvgXea*UF>6@7oK`~ z6`r3fJU@iIZ$sYKEj)#ktHrTF95;9G2%eX?r1Q4Vc0WA(0nZ~LA07@9xlO6O-xDl6 z@yjUKC(;T}q&tJ>({DwFr(Rx#=VuDf2FUvs<bBP;Q%Jd592>-Ob3#Y(jCV=rjpuGZ zJo^IABOu?2knbD|&mI<@{IRgH4rzra(w)IGdwFDd>g82<HY+^qA@6d?`>KVfkaD#+ zHi+Zq9v#8+#agFy-gvh8;n@dx9uE2NdOPuK3(uYwo_M(fo=7V^`LfrE=h5C}PKmwl zcfGs{&#em2b&wYi+ll|P@Dx(67RLs0+}yJxcwXz0&Ku8GKRkN_&%+>JD&!kx;hAXR zi8oH*iL}BK>CWK!{L;wq)XS^zY*KiB0C|@|-d8L<g_Ntsu|XU+Cw2tSgIv<N@jT9Y zU)mLdr{is@7tkC8>4reMvn(|6(-`%()Jvd=v_cbUJDP_$-<D+jf_!1Zi&Ol2_V*^d zmRz;O399@qcf5~;%G(!#2@20o6`t=y;-!%IzZRZC&eh`BAdZ{yY83hVQuSh|U~W8v z@1HwE@T7eFUX!woNd%$;A>Rp*?@SBP-WH<01)@kRM3J^58tMC|;gZ<ve%H&Z@Z6&C zTnl-ZK;HQlo<hpi;@BXLn|pTz&)aJv#q%3KJbMDq0gw-0@DmxqA)oJkEIj)NJdsv- zBHbB0-(2LB*b7g+yb8}x6rS%v-o=o2o`t87a<w=%h~wry9l`Txmvr9t`L!ROJ%Hz- zkncFice;gVUkgwE*xXo$w89hV&fuB5Ffu&#@+v$xD?Hag-WtgJvW2IRa<w=%h~wtI z9l>)YeokS3JNCx&D?dCFfaf8Q??;f2U;5HM`&oGM$Lz*Bq!pe>cLvYFE{VPDQ!lT= z^J9hQyO4Jg<bBD)Q%Jd592>-ObH9$@IUTdWk>UBJAD-QT=MNy?v5@a)7M}erJo#gJ zV;#~8Poz78=ZY$)#9nyn<yClor0`q~c^5+7|5$hmDOZbQgE(%+z#jSY=v0?<-uC&0 zAD-QS=fRNg7|2I2rL@l^3s3$S-&lvV!V~Gv;92-)WO(Z3Rd{Yvc&>uH3m|W$g{P2m zwKz72<L0D};JNV)r*z(U?(oAi9(W!E`HqHsr&@R#7M}dEzp)N!g(uRT!SfWC#9sEP zmsjD5-@wx+Hf|;4t%kfWT6hX6SBqnVIBqsNg6D&;hrtt56(c#{oV7HwY~=fyWm%1x zWn(_gEE~rOnq6PQ>xa_9?4_Bd>F;NjW;bS*j{P*VbbL#oG@C!*=JediDqLC@T78VD zUWF^`LTis@ZTSCL-;=c`*PwsQi*<Oe!TLI}J)|wddphFZ><Eq7<;2A7mA!ovO<rqa zC$3ZN5owkY)6n`XQ~Bb0;>G#-tR?9AT1c}2`q~10ZAVXbmW^qr%5Xtp_7Xs_7UFFH z+bw8*JG!;AbZk4d7L<?eF@7p*g}p7bZMKEN!t53HcF?YBN9k_~SUW_qRbK+G4k?1Q zt^Rni_U0OtU&s31F?)4f?-{#yVTHSw;@Tial#bWoV@LY$O?25MajnGCybkS+W4IX6 zBF1L#too|V%&$Njj`oQ^;~TOTqbKh{y7l1r30h^));CI@xS%k5G5Yi#^spZK`~<wV zq0Mi!`egiA);nR^!v%%e??l>OIMKpMW$729XuAaobiIL9IrOVT#Y=YT*Nvc#i=`hI z+HP#AUsDry%&q!LOQtR=a>~Z+$tfMX2X~p(f5wYs)j%I>Al--HxEZZ7DD7*dUtCa_ zU4uTYfvg`whRxvhIokYMt6vcx7p^^A(2@4SH5EoGtAB5Mbn9(>Z`}ITq2h%F_3K7Z z$Hmf*3vD;H)UT-tJLXn>r6p4r)bF=BWm(kmw>hQR)U%^Myq_75leGx?eiza<K!T6K z<ukPOmC`pZD9m1jKE4at8z9ri;QbkRe5KX5hzESjqb(E`X1}Fx2a-{qaH52f!qTr7 zYj3WO`&Wm8SKp~$H)6WJS^9CI>&BA$HIcVtY}Hp<F|n_JhNuIpocJ-GDQhA0xf;^d zgX2eNwHY-L`72*?a7AJELUd|1gsq1VAAwmj8vRl{yKV1-Y>)AkS<AiJLTO?4a&0^6 zeJiXe-cnfaTVU<o6+LGQ53j18eRtg-x?X$qRoI^!?GS83+7D{Rp#wACM`_K{jjMjy z7{q781a_BZi#H|ei}7Mv3()gbkbWH`+64V?h5ixUCH0Rh3bPjggH`CuI>@*QytjhK z7drhjzBQ}Xt1XlkX4h)lQTh)ninkP&{ykZHa&_F#S`<9{?!s5sYmdH~`gfomf^A6q zLCrXH5Y)fWnxz|8{jxELSBL)FZ2D(BURE{qzY@}a0R3--{+pnGM21WK<BG!UYGAMu zefa<~ZUpZp@Ytc#KjVwDmU*>>(!%Uz+IE!w!;0c9g{6N_)}CA)`q!f1*>@Mdx?X$q z)zrTO?GS83+7D{Rp@X3Qh1M+HxayaULHs`S-x}0E-7m=^SR=>SLSI2L0?BSePz%)9 zld9yRCSy`?7&jD$oHQIJj>ci~1RO%6y|!QuX$!;6wlLaj3!}ZZFxqPiqrJ8;+G|TN z+Up5>M9)vro|~ieWrVazmj)dQnAbrpjPcwq%;?<nZ?_{LjqeAD<tm@tqB_WcuJS_s zn>`%a!b=))7*mJCxGEfSUch1E92_QB;NXf^+QLAgEsU7j!g!@Ej91#ic%?0jSK7jO zr7bF6>1liKPD4{6+@upEv`GkAB^)NAXV3l1*|VU%ig?cX__3#{f5dwZ+c_x->$Dus zX`r_3$=#Z<td9usJmEQncpeoR;^};ThY9UGzBm|p`H%|j%%6&=%ac(64fK586?IAY zeB(LmW&~SpcgJ(CMj=}M45D{&JZGy5ba5vkUT-+X{l3I=p62ev|KIVP7yZ+Dqr@(r zv;H4WPUii0&Y?#ax$I+qjORQuMEsd?{QLhlp7X?Kwfb_*_wO(9oP~3pvf9Sy2;^1% z_L#+UZv4AbI)}g2A)h`z(iWf4Me&@cxFq(%Q!lT=GiLFe4?Ytqp8EJm8=hSh&$;1m zPKmwn)XS^zj9EPAaF=x6_NkALwBgxB@thC*H8MQ)@+v%I7SFlkFHY&a@zlph+VJe6 zc+Lx45_{RFUS5S~%;Gu!^yf(N)W=8K@a&>^&h3A4O6-NFUS5S~%;GsOaY^TGpZfSn z8=hSh&-wJ6$nez5tMH6jJZHR1IyavCX*}n}Pdh<{OBeG4j`xx8CZ6-fr<{Vh@!bF7 zIrsk2DY4i6{@uiLUh9(18&7?Fr0st1qIk~dv8%T|BFzg=y}asvk6AqDK`!aM@zlph z+VJe6c+T-pM24qcUWI4O;yJ7T;FQiAPknr(4bLu$=QLard)cR6UWI4O;yG{seWZBm z<0EZ&c2PX%n~yss_QF#yufj8C@tjAyr1Q2<eSD-1&n}AR%zZ2}JoWM_JYyEmx$;q` zbl!OC<0EZ&c2PX%V3)*R_NkXw;Tf}d&gqYY!IN_+2jV&1F`Dk!ReSuU`&xU9YiK+s zW`9+5?16Yr5mkzbR22;>=4)wx2jV#~V|pN-(~M4a#K$3u;y^s7Exwia%Yk@KM?@^b zK|*3+ZSiNWYn`#O2jV#qh~p7eYK_ka;yE!shYg}U5YGuS(#Nv8;-wJJ6%rAP8#puu zR?Yt(i08D$h2l$y<NtwpP6sBg_k{!ToE}l7;!dRf9Ej)SZ{$?0t!sShNIWN2WXwoy z%^0>auRpfd>&7+AW^gHXVC;^%MArTr=Q&}P(?MWg&l>Sd^rzs&{eU{vGb5GDpCp@W zJ$fy<i2dk-OD_II!-<iruC|;}s|ag+WTvw#jF$`(ubNTXnvuGL8tk1hY?(3R4XM45 zs8XtLe~V%LN3pZ3a(*rtZx)AT1R-}v`{G`9QM&}<@9nx8s^h{qTz6Au3@-Ha`HT?Z zWxSk-zdf^;BmOpIz14xv^672dh9K`Wtfe~nFd4uM7Wd9}vOw0EF6+Sa)LMTP`(Fmv zUu_+gTAi6%n;HKO?{Tr-s@N)_tp9yuMQp86eC#0ZK!4N?_w>S^3t}f2hSQphyjtHM zh~>SKRaS1~@KEyG!w^I)7RwZ%WtOM6&<4RF^VAiYsqcWP#jzTl0*4Fr9Mt<!M(N6o z>ZV>9@hdaW>A!Q#$#F(;=|J$1BH>QP+N@Xr5ep}d;T@QaAB?A9b-@(;XnZJCI~1!f z;-<>x;)<hDJ{si{P(A_Wx1k(cKZw4m<x;KXQRQNZ(-#y$Mho#lu5pArFR1!p(;|O^ zKBke29D+?9mt+K+DzK@-@7G_zdO|PYJO}4FI9K3YfpZbgMV1&01fN`#_q;=Z)U|<B zEO2|&SeI2nzd`<c-RnnUq0ekA^f`V6Rvyj8A*)dJGUp=v%71D62nc*z&Ir&;NT(yv z{%m6pmTD{<P3mh<Q_@I%28x@LZ~;nmCWX{GP~6PqY-1&;feJXI_!j;SfD7XWOz_mo zsr9bgS?QOnVnXokY^fG4ahZv6*n{G1V>MC)GG_%-4de$nC%(xP7nCHZlb>g58&ZUJ z+S5$!L~6<$cKU&w;Yja7y08N2`wJnP=zF#3uN!ouIM*$_3H<sZ=e=f&r#BZ@#YPT8 z#yH{=Azl`Q8b?tk68~uq{JYukC#~?u(vAv$Pzrxg3V%=ve^3g4P!ZsNb%^cIw&Nfc z1>Z*GYSEIwAA4p1f20Kd?=aOse#HL`rnms5!2da>wjm|(e~PJ{NJ;$fm-r(s@t<bl zFZ$a7{Kpmg<NqzX;fQAh{-c2ZFNy!H#Q(Pr{JY!mC#~?uQjiLNPzrxg3V%=ve^3g4 zP!Zr??=qpF{ZsJIiCisO68K}!4&aZJ!2fNg8px0MV;2zMkCedw-%M>oO5p!TrgkDF z@h_M7BQ5d&t%bknZwK&S|670j+tCe2{3Gzs1pe0$|67RvR0sYEHvCB|{1YtvK`Hz} zDf~ex{6Q)FK}CT7)h-hX;!nXpBXYH9N#Kt?Lx4Y00{^#|Y9K%2k6lQBKT-n!e=)TU zDS`i!OzlKU;(wpSA8CpIR11I6-wxnEZmK{2yU`6tyd?1d1@OO``2U9Z-|fJ^#|ZRR zjsK(-{#a^K**_?SKPZJiD1|>Lg+HhW@UM57P!N9#-c00b(UQO)d!_(?qy+xUnQ9<E z;*VWefIm_K|9>*I4Jm>D6HM(yO5$H8@kd(Xf47Cd=x+z`Uw@ZB{%z=nBfb*&Ukv=O zBL2T7{&zX>?`gxIw89@tQ!4yHDf~ex{6Q)FK`Hz}MS%a+E)xpkPr<hmxmvU&@W-Ap zz#l1re=SoD<VXCm3k~o`O5pzwrnVs^@c#o-JCTz3-z)J)TH=3~g}>-;2k;+vr$7F! z=!PR66ZmHU|0{|A&BXss2mXmR{7EbP@hzwD2c_@_rSJ!(@CT*v2NePS^)3?%;!nYw zh+HjN68K}!9N>?Xz<(K24dh4su?r9IM@r!TEK}Q%68Qg~shvnk{7WVNNK5?hwD1@G z?EwDkr}*Q)3*B(6$O-%d!2b&3e-rV)!-0P<8~&sf{#g1_;SWmT4@%(=O5qPm;SVYT z{I7PIP!N9#{wa~GMN0yI>=^|7krMbXWvYSvh(C5A0{%z|{O2;Y4Jm>D<4o;DO5%Ty z#2;yiKlh!N@1LT-9l(FwWPkj3q8pC&JAr>X@E=S3ZzTRx9QgOP;ZIuOkEJpd{-6~8 zpcMX~6#k$T{-7ejzusj+LHsHB79v-RmIVITGYR-3CGcOuR0H`Df9%2p{E-s)|DCCA zND2HOV`?W-68{p3KhhHaDHi^sza7ATeZD{b-=G_g_)y?K68MiH{`kxqk~P_Ze;*tE zq!s>HT2tW<O5qPm;SWmT4@%(=Dgykkc9~ERe+vEyk*h^Z0)Olg1^kf`_%CLvf&7R+ zcAWzLND2I(VQL#v0{=&u+KH6Jf40OQX^H=23xCny4&Xm7&maG<(G5pDDe%7t_+L)^ ze?|NY9QgOO;ZIuOkEJ*j{-6~8pcMX~6#k$T{-7ejzusj+LHsHBW+GRMmIVH5m|BgL zz`us62J$2RFEhmjLk0eSV`>{x0{=&t+KH6Jf0o1_X^DS<g}>-;2k>8iyAS?w!(@Gh zek9=Q-C9r-3IOcWE~5f&paSw83g~B30BNNFtlg;;07@wUlu`gFr2tS$0ic2k_zgO# zbwFI@wjtpehg6jNV<K0Jh6MiD0}S{hCGcOwR0G)&|CgBJ0;2-|zcRHADS`jPOzlKU z;y+X3kF>-;-@;#Xw*&Z(yUhoGbmL2O!x66v_<s)g|BvurPx$j3@b|aDPg=o`r9Kt> zpcMR|6#SqR{Gb&4pn~vw`+r;}6tsT|{t=O@MN0yI?0E+KkrMc0@gd+(e#9TUr~!YZ z1pa?vY8z4l|KBmS6Df&*vBV!~iGQAjzvyoV@LxaCAOA1V4M%({@V^lFUrPM1BmR>d z_$S%$C#~?u(x3`|Pzrxg3V%=ve^3g4P!ZsNwabKp_*3vrM6MPs3H-6A8}LU;;J<*W z2J$2Rl}vE~Q-S}Vnc9Yw!2cnpb|NM5pCR!_TH-&+!e8{a1Ne`-)gS*I=!PR67WfYb z{+AH{Yl;8u4*U%p{-hQDSV~mk4@%(=O5qPm;SWmT4=Muu>s=-k#Git1ByzQAN#Kt? z>wrH}0{?2J8px0MV;4N&kCedwPfTq?O5pz>Q#+B8_)nMkBQ5d2-NIk=w*&aE|BV;^ zaPudL;g(K#EI^XXjnc#>X=VL~Tp;EWrgRUKuH<HH)7#>b;c=YJt@ScWmt|CM?4CKS zc5+Yd1b6B((*>>^s&Yb(^Kx=i$Vg@!jpy(lAF}idvNX%di0#o#fB(H$5GF9al^#)J z#-lh|-fKuLCJ59z`8aW3Gh<MRoHZ<AN?igdA`ucmVZoaSwl}j&XcW_VVM)a`Y%m{C za*I<foDUG|+t?>xIO~IHTsirI>6(Ym(`)6g5o$&5-W7-4yTB!@1&1+>IE<^qA*Tw5 ziJVECJO_tq6<?0P3|*1bOLhx1F}4wh@paTm6%M&C;4ozl4uutXN8XYyrav%|R+M+2 zT_<uoZZ#ca(}{>JhfW|3bRttFOa*lknTXT~<SV3ng_N(5@)c6PLdsVt<SVqvH{J1; zk@{XBl`47ZCZ|fiFj__yVFj!7B2pEkDo6pI!t^<$fL3Ap3#0&EVR{uQV2S<INHvmb zB-KKy#l5~FN@nxEMqvrhymC6PoKEUNQV){)6RAIu;@Vv4FOtIMnT6@qq*jtzNopew zM656!n`8nKH$SZK#r>bT1~1m~5^Eki;!{w4Hph8XF5#JN&R}yhNIgXAAyR)P^=DFC zD=xi~6gC?zOkY516{%IEHsK)U!KR{mdAO%2<-yu=dU^QVN97Wp*=8|YFDCUnQokeh z7gB#A#aOrW|B%AwtcB?dNv$Ten$$-)NO`act6m=Ne@=O@)}dY=z6YXm3D0bECR?9L z>S0n3llm*EzmnqOnCUN(!sfMw>5E9cOX^)xALAh9!6vnOdA`B|UJ&OiuHZ%6o6YY4 zTwKC4+nB}HW|4Y?)FY(+M(S^*xEO2t%cQWGZ(({3sWqh5klKuc<d02z_58n<{J*yN z^E(h1m+;IsX0x@~q#h;pD5+;iJwu9%{ie?&wV2dmQty#^kJKkPNdBK7PiwE=NdDhg z{OJe4#U(tmjS{w2Lh3P6kCFO2slSur;?e2zNnx|+!t^Di){<IFY6}jMKQ?vN^WQ1? z@3i>S4}^<LcxD^-u(f+gJx=OzQgcboCB^l|)Bj5fn_U;CFD3OpsrN~Jii6~jO|A9( zX^UK4oKLqnTt1tAKwMnHGutR-Yo(-qPwMxio+b4xDXzbl{t78<_Fb61jMN9DJ|NYE zgXE7*y*2#Z@kY3OHvPc3xP)i6aW7lDm((9f{ejd!Nd1Ep*MCg^A1Q2hUYK4>Y8|O{ zq_*N9`D0UaEq~|wg}8h+AEmgsglD!<#@5P6JwfUTQvW3NPf}ceH2qal*zCP9eL1Om zQuU;oaghA6sk@fHbNx(QKAZDExVVI8ws9X@yN}e9q@E=8FH-*^#RYBCUnBJvskcZq zkZK_H84i;FXUGe+fA{*WxO_I}0da8&&upWdt(BAdBdI@<`ZuY6lj7pZ>93P|o7CH+ zJ|y)asn2nc{69xtD1X28fl+-n=Y>(ZglD#SKU=?_)KjFMBJ~`p=SXp}?({cEy+i69 zQtL^rC$$X+DbF_Kh00^hcdkc`%V!rV{yejd2iV#Jq@E`AG^yuFJx}UQQg4!4L23o5 z4Wu@Z+Kz+dza4oR{`2I5=jM9qtaBS{-$rTzsR^V;lNwDbjZ_+`p`?bAN+Fd(Dw$L= zsGcAa#rQt5ka>kH%_WsfYCNg&q_Rn6le&P^1*A?PbqcA$qz02Ra7bdxz`-!b4?O=9 z17%4VQW68DhU7PmS50G`iKHfy8b@jzsVq`iq|PUGKB=FO`U$BYlKLU3Bpd`k9_;*j zN`6>oQ1SaM>-?5=ZY6aqsb7-%C8<%QMv*#?)On;%CUr8YqevY^sy_~bUw>rT`Sp<e zdRY9Xvd&c2xrNj%q^==#4XI30nWWAobuOusNS#FLNK!|V>W72i*AH2CehHFag2nG{ z*14N?enaXvq^>4)HK|{a`UR<TNS#CKL{cY`I)c;@r266@`1M7WonLp!4_{>p&%0RX zF4p-qsb7=2iquu4E+%y`sk2F)P3p&_eoX3cQiqf3gM;AL2U&K0-6X$m7QZ`L=T6qS znbggst|WCOsSHvXq=u0iMk<w5DyhRr9Y(4*4uW5AWZC(}OMdYdzdKmx4%WGe)J>$W zAaw<)0I2|}vq+sqY6z(zqy~{1M5-4Kf?qFW+4v0zlnxB8kIgHmu+9`xH<G%M)L2qu zNu`rYCv_&NGfAC5>I6~)Nev{Gh=bslh%Ad=*_iHSNu^`ELwCY|$tx$b&SX+Kq;g1& zAvK27NKzw7ok8jhQpb}zp40$R14#A6LGa^9V&m71{JPos6|hbL>->t;uSi`^>T*&S zk-CV~>7-64bsVYVNF7S*P*Oc`5d3-|%f>IB{NnBW@>wUJb#5Sa1F6eMT}EmIsS%`3 zBXt_7ACdYIsY6H|LMj0V!7l+>L4E_EJ=^b@d1W5!<dM3b)b*tPkJSH>`Z=kellmE{ zpOHG2)Ul*~K<Wpiy5k`Dbw`%P56{E+oU$Y=mmi;F-hY!=XA<jNN9sCKmy)`a)P<xj zB=u8LKP7bxsbfeTOzL1#-Ea{6x*^NrXUrdv<F?P+S?6}vxt7$mq%I+K38~?vhLbv# z)TyM7CUrEagGe1jDjo;HFCJMze)9(0gWKUJ=JQR&yQY8G&9&a_@y5*CeniiS2yHcr zAHl0BzMdzKbACOm^1NWw>%$YASHR2A(=W93aWoFc$BQSa(AFU`w6*j)ZD=c_I&Jco z^}mz#RDA0nJ09P9ofn%Thy_2GExvUiIDLolt!IsQV%z2Mty8XX3t;-z;Jw|?<6C$C z(k;8tuM&Jek8j;`l~Z_|{eNHLTkj6B9TWfWL4519EB*1`&*NKnyG$rJzwteYZ{0K2 zAOHP4zV&XG2?g>09>lj!8{?1vejeYt+hsyQ{J#hBt$Qx>$A3SMZ@t@PLP7k$2l1`b z{?8x({XD*Px66cr_<s-LTlZYzkN<ui-+H&pgo5~g58_*=jrPZXKaX$S?J}Vt{@;W6 z);(GN`0wZOt#`XjD2V^}Aij0lD1ZF-^Z3@?E)xpk|2>Fr-SZ0{{J#hBt#`R?=zA33 zI_+W~{NYB~&*NKnyG$r(|KEf7);$4#{P*+t*1KIM6vY2~5Z^j2-5>w`Jic|e%Y=gX ze-GkY_gv(KKjs%a<68rVoDBcHxkipyVP!TKwZKXk2V!0wTRtLwGFmaOzZ>aPm1}*Y z2;yH4rq&$m;>>>2Lu&_OVxtigJLf{D%IxbeaVD{dbBaZzDo9n3nnP+1sTWASK&pyV z6{$K>b)*_eHIix}6%wzCk^}Lv2jXL48Xv<xLgTRz&vYO@R>TJ%h>yiXAdch3f%w=1 z@v#^z4#dZ*`{6)*?1A`LTm0{V_*lGc9*B=U5Fg9;g|aaR;$!*sbs#==AL3(AsC2}~ zhO7sh=qxYqHz2dT-$4GJn!iOZ`6U)G#)7rU#%zNWvT>S}d)<zyf#jazm=!NhW4ejc zxbEU~ZM!(#{H-|MzDJzy+{@EJiQ<?osvR^|R6A&V_v==o2-SE(HJ(t7r#ts9ENUy7 zbf##-!SfQ??v<`~SqVivUCFv>lTvH;<o3jWRtgT6RN-)CW6hqzMEqx`EUKPXcu5tH zS2p76lu3uEt24wkEXZhFSks0U+Hx~mYT61D7ggU?n9+iZdrdL|WoHD+GVnvVGc!sv zb|EieQoph@$}-wZ&m3Nw(T<F6lah1F&d4dt*ppLwW)3p<ATxea!o5lN7}y%2$2D;$ z$7K#%U=$BZkPzc!lw1g)jX?v9L1WU4L5~(;Jiw_+o~Q(*(&VW~o~p#@L9ShF40=%h zUirZynW~bfIQ$BUW#V*6kum6!s!&v&n#@TMS4`|7PLn16(-N<{9R@IbmpEm#iqj=+ z;&kP1ae^v&2~^1wRLN6#3)lgL-6+@{lq=XBG)1sGs4(%mOHc-OJb@igV8;{K@dS1} zfgMj^#}h0kFl?t$G7iXOOmCt^3o$w&cZW66Nn8Wd7mFLOqlzaxuRDuH9=HakFCn|k zVJnOo7sDz9Z1LilAy1cd6R9h^i_^6U;&gKlak{;yINh1JP_-k_9Vv|?tEWhf=^;+z z62vK|yEskkCQg&%#p!(7A^u^H$}}HThN{d~8F892Vw?oJ!{sSMjslm+vF1uS@?5)H zTyk@pINjbVPIqD<24MxAV7L+>f+0^}$P*ay1cp3;Ax~h)6BzPz=PqS-8N*tQl5_%m zJF?T|DO=nW2aOfC$U)=94Rg?q;`TWxSKLeoO%b=&L4~`dA#;U%(UarFabkQ%>2CQ8 zg(7I62&EaRyE0Q3XT~qU@E{H8(KHU^7(wKzN}jm#1xFBhDw3xvoUYrkCy<NV4o8mc zIB`6{i6i@O16we9<H*q)Cyw4Yjqi>n5jZB%dc|ppJc*};QF0r{o9A{3NRAc9-^4dP z)2h^Xt<>Mmdq<Tn#cJL~qf(b<atZMTqvDssBI4TRm?cj|@>C^HTq%M^BTsUrh6k&V z5)u!GDM0WH7zR#!Sm1<*#Y%{bGM-Sz6Q341UCE^#q~uLJQF)>}svi?={g@z);HJGz zAMSz>+}}B{q-rj%xFJxMEYoG(b{5?MywOISF{}LE__)#?Tq=Fz1%cwm3o!40a?{XW zaX6p8L!QrT#ksh3s8Pa2DT;T2C;^dU9Bkl!K#nmWyB7{)dSN|_+-e@);b9dI>v6cD zhKFT5tl?oDmISP?=3zCG^-FkIi<MiNm-2w6c(!99ihL{rlaGZscP-5^)~=ksb?;tE zd&<%1kXmm=&9?=LKWX8LAOGVO7oA#FywNCbG=^2@A3r5=cxl~(fs&n><pCojby;Tl zp%<VhSk?XB?D9kU4Bxv+{PIPtr*5*$9SCWn(g`K}2xINC)mw+JZW@tVYs|VVg$k+0 zqA+n8^2FX^6_eoa4*+~WEbyLth!HhOv`{V@Oem|9yNcgsieJ+autwYO&!oD6yU+vG zp4S$=u47@LU3CC*ZEa8qD}G4h%^gh6N*Tjn;oXo~J~lpM`lh`GZ?dgo>7K!H8N~~d zjR%fLxeX~J7wbpm)yGR=jb<8hbgV|Jt3i-h>8e4>!zFvZJ9+LoDkx7=J)V3HedgoG zp=;}QF4%(`vH<qAy-K0k^gmpxq|SSv;MK=BH5`eaIO_9WblO8w)Zo?G!<&@AZ4VeA zX%F2xWDnhF54d?_Z4bR5aU}N8Rr1_%L{J`YduR`D4-~e(Thm*I``bhRnA*ehl)!Bd zcnP6BbnlQobf-P^kG(zY;*T`tSRQtK=qh<`vdQCZ54*zK1BI>c-t-!NyXrSS^oyxI zJWUDQ_JFTp+CxHz>>+{n&@cA(@F_QpiNGGZN}elh@_5@rOL%*ru=NQ|{~F+L4}D{5 z4-ZfRw>|Wb_Ryn4_Rxd&&^Pw>@cyBZ*+W;!6R^qSZ4Zs%?SaD9_h@?Z5Py5<6H|LA zqy%nz=qc@?XNT;eC+(q6?CoLc4<fUNu9D|0n>^n3P!--DC~SStruz=|w};*_wTE0v z;I@ZEX%C4VvIm3^=C$>Xy*>Q*pvdf@tK=DClgHa0io)9ig{@C)nu?EYzxRizc`ovG z-xuR4f!iK>NqgwkA$x$EC9e&KSbty4#TRfS?+;xi&mfyT-u4g|-X17yeXpillKkx< zF{a}~HYIS|LvLvhy*p$N7#i~0VCS*6hsXOzW)EE@PcNH1VeDZ~SpNfst?%7*O+SBo z=owRcxPTJ4?V*pfhdv#$2fRAuwc$A!YkRn-Z)En+Rr2ftTIP5a#va<k+5?5H@6(it zw)~zKJz{DPr%(d7JpgfjZ}#nwJ>b(KuMO|Xv9^ahFnXEzhx1Q%l{}x~>1xUo#vXQs zwFe4Y-?!;pwB=_H2{E;Y!IZ#l4;V9O5B)l14{$x?wc$HD*7k4{-gZs=!`VYu$@4zG z#!Pv_*h5QLd!VrO{hCffTYmP?J*M_xPy)9-;E70k=-(lGfNL_Z4Su#*+rt&`j+pp| zvxlydXDLHklz%LYJv4^32MSx?zv)P{<!2AwVrmb2;hPSz2fSm_9+Em_516{hYl9y? z*7gv9#3ugX?4hgV`7dUBOnJiCLseLNps@8xP5sc8pFPCK)E>6Wxk~5!CcdC(4@QUV z0rUHLZJ4KvwLP2#iB0^&*+W;!GZ$c)@`SO6qHy+5PhsCTxXFiYW>`!V>w+Tc!v;lQ zf71NrW-!FgRd)NzC?C<gB~X5DVxauAq>E-%<tHKH!8V^7FkV|_%<DJ6n3sS}dk!6i zAO4p0ySFT1M(Waqr&cYjFy<v0^HBNFpV>=-@d!TgBcpB#jURb7Nyd-7D9`7;g7f|n zKXO3|6)X4a=~Vm(dh%VykK8aA^6ww<Bku-d61pT_<p#y?yN@5)far&i=dDlt$N)|J z2zI=R-h)6JH!{=~ry<AH`!TXXc2i>_jwSYT%(cZUG&M&aFH)<C7imYVfqneb#Sg_c zUStC$aKC^1#EW?7KYA~Qdi~qtGQ#RV#&XO>M1}P{_0)f8e27E;Dn6tgu?2qmk8OO& z21?-8zfXLKhyJ7Yp{UotEe<2B{$ni1Ttra#>pwIe#G!u`57LfU0zdu7HXdXHC2;HC zCmzH@|Iu?C>Gf}my9lfQ7|Ssi5flFU4~_qD=wHQuv?F%FPyexv|JXnY-1_&4|M1X% z^c=~0{oCR!!s<W9a?C}9gunhn<2@YuSMeV0h!ybDe{ADDHc$e${(a&-JoF#Ei6y=M zZE+Q0^&ew7<{~1(U;m-;9S;4g_>OkO2Kebew(%VsD1lr5KJgtM`j6g3vtIwUIEt|P zkFgwc5dq<^|Im02hyGPOM>{-Oe)^AXJjVt~;MPCpXy{+_is$gqfAj>^>)#eP5mx^( zmSZlw(f;}mjo)zSU&U{<W2VDT|IssNT|CbQO5oPNPyB|5{-ZZg>Gf}mlL)K-7|Ssi zvy~C(KO|nmp??*x(T<sLKmAAVai-NjC2;HCCtkxt|IvF<(d$1XPQ%0h6Jt5%+T$}k zzyISx;xiojSMeF`xYPXfAHCOEt^O&2TmL@s86NtN-iL}_{~>W19{P{59CPt>jNtwc ziN|p0U&Ujz<4wy?|Iz!L)#{%Txb^Q7kKv*J=s7C%`VWc2@X&vZ<(O-azwo~QL*g$S z`d9H6?fBC6(|`2bSz7&50=NEs;x9b(A3aB<UjHF+7asbLu^e;l@fP0tZ*<S6I`psN zE!r9FV4L66`TwKm&erO`6Y&-v`j6g3g<k(5aTXr>kFgwc?eP`f`mYMBe-&TR&Y3hH z{YP(FO{;%7m)D{A3J?89?}zSs{X<goxf}NVKgM!6;wilKUldON`)NGIx5s+LQ+#AE zi8!9(+mRvh6vtipc_JS;CtoYir{9dTh^GKxT#sW4_Rr46rscU<izBy{0Vg#))bg+< z$GD*##0^}S<A%3*ScPRa>US~Tq&CN>--E3BcM#*Vf~#-9-p!>jLRa5-QB32>=!qO_ zzgzA48*Bz^aQxI-g9DO@B_4unar_LuU@QgK`UqK%gX=(u3j5q0?K&JQI5FmkqX?7& z46c^~z6q4HAHm!Oa3q+^NLgT35k~>$N<ElM2<EaJ<Lv9J4-b@InmqZY7`2<+^b6;D z8b<N)>|A+fpB9At7{<Iqk^<%Z#~ckaO_*MG$b+eMSlQCC-U!#*h=Sc{fBTf9emm{6 z&IZso?MaSP@4>PaVrLs82DZc_5j~9<v!4+&V+)eWt?-suaynOWYC4wd^k6*^xv~gY zqFW3RL)Xr}zUu7a)+D2(H?C=VmA@~x_LF7^9v*%BeqU?#vsnF>+0u_bj=@(yn4FKQ zetL=-L!Ex2&FM)oN46l@Q$JuR_0wPJ=LpXKIrM{9(-`UJcs18(=|>-D0R71OX1(ja z!K8Uq^)gY+<SD)6qj8Rv;tq{Arv$}G=*9NF7jplAvD8mLqa>d9&)uA#bLa=3jxo~D zY&92X=|>+2;CugIayzPeS}bPVboWoRIbEYTdEP%@DD~4<-9Po5KXd2@uALa^=Myzo zXX!^jPw%TAOg=|dKgWxiIh}r@&FM8U_ZDV+14F5wK1x65poUXFaJ|MzKO@Ntz7$J8 z`gwF;{a|u9s`{BNX3li_i8iMr6(`U82MnctdMo`rk>u77rbc3<pJ&L+t{?q8x37LM zc^g&zd?IGHboz-lr>TmQr+&at>Zg~|&u;#n*D=0f>M}<9=?Uo^`q9rr`|5`hM)Uo8 zq?qy3=_lHp8pIq|nDGq^rG65Xey-;HokKsgnSKAz)cJ~X$jg5J=;w)j^}{<nn)-Q0 z%*g5V6KziCDo&pF4;V`Q^i=wJmGf&3{cy~UjeZuZxjgInqo2q1)eoPL(bP{*F>|NW zPqaBbDdy(F+&^F__0vP?=Lpnr>WA+vvC+@*<Ym8q^z*E~`r#X9H1(4sX4Z82i8iNp zF?SY5KVT^Jlc4l-H)=Tb!*~AJ=w~*0+4ZBJ2ldqtztEzopT%P4OQ)Y`bGk-x@*Lm5 zQ0k|<(oa3U5uN(sw{vXt^9gy`^`oDs^wkeN9MROz@sKM3-&?5vE!v!36LVl;?jJCe z`st?ha}MYC9M2#6oMNM&k>q9958k&mzuWfJ4?Tp@)X!`&W2e(kv^gEAIC<VbU?}wy zuk`Z-=ieOqp?5eo`gump^;z!+_*&Eaj@nm0^sq-$Kc7Gh{rwYdPE!>pPyK+Q)DN}? zq5nFnJ<X}eyDAW0dvW<xgVPxUF`Y4hKXQ(L2$LGqdtp-JkOwiZfk_SfPoVqaC(!16 zg8TQ+tfT+^v%Mr}Uw*%TKG8W}SJRq%+_Nha<8VIt!BygX`YT9dzHZ75oU0p;{aOtC z52)F3Lwn8bH`LVJe8XG#UsE$|!;(eAQ#Y)v8CJizCbj;(npc{a)jZq0s-|^&RZVMt zb<K|a+L|4^me#Ze7sS6`c(1J~xe>Gq-Fo<J!!aKR`3B-YDL5bZC8Xqh99h}s<9Lza z&I%EWY>IlPef9fgbm_Wh-OzplCFwVyrWJtP2|#WKAh+uQsRAI&7JYQ5IjuH)->P?O zE;5R9D3)u!?D(Eu^JO(nm@kVQh^G9NHBGzfYVNeJKwkx~F$52Ky)epfRB^37k5MJ3 zLi+We!3CnL=)0H?>kMMX?7`v(A!=B^JPHlIV|srt7qeTiKjoiC+nC>~X~p~&)uraQ zhS5KNHR=TKFXEZBk9gjO7Qrxxr{^q|7oOcZhvy2r8`ptnCmWom8f@~$vzv)0=A#6j zed*)2o`=M<|32cGf)*Wk`pi1bby;Wk&Y?M7xvIrW;aIehFi@F$CmS4U`o1NaMG!O8 zKD(QEV*cn%+UKiy#yj!sw~u(%p+yItc>Cr3?pi%O%>ACwIYduU&Sin9!#+FN;Cj5D z^1UOBeI}TAV!lV%=WiVTYT9SteZ;c}EjsY@oYnEV-+OcpPyY17dhK%H*~td)H@(Z= z_j?Z$Pt4B<JddEy*Kxo1*+)EwqD2Ru_^PLUx>m0aW1l@chvx%!H?afHPBwVHYA}p_ z_B8Rte2Tzxxx*h!`|Q1scs8O%2cDj@CSLZL*f~5e0Asy<cCx{3ruWv{J`+tmG5;a( zyc>0#_StJ6@vK0L4m{x%q<y-6Z5PHqdvy-a?RGb;!#+FN;8Uu>F!tHY#1r!s0?!la zqjucyiTj9W8d`MVi8S$atv(zE&)%KG^JyqfZ=aoPFiSNU2G8Cmo|s<{c-G@?bmG}_ zAMtEKiw-<JXA!*a_dcD&Gu!TlcGzbp8{C7D-{<+>$HWu!0Rqo5)N$h3V;}LHgBBfl zdV2l6@a)?;Jonn&#tu9?+2C`gci4OU>}%o)|GmKT9Mo~*nXr#|jz)_PJUzYiUU>HF z9G=hH-MkJwJK5kk)nJ(Wy`PCE{OtnIW`{qQ&-d>8h-Vz6aNvpeCyt-4)mOuepZz<B z=Xi8QKYn(y!6emS7(Dx%c)~v}@O%Pa*G~KFwvTwefEFEidV0aV>=Q1kj(d=d*@kjH zhkhS*vcWgRFD}A<A0?T1!k;bh{Ds4xP5X@BM?5E>MF*aqUTZHrjn3iuChh~heRitB z$&<vh=t|*L9y}9`YrfwN6HoY`iDzddx5bx+@i!mzMPi5j%^&VS9j(84p}iz{KL!2G zz0`iK@%H^%k2*9yE--7AG4t!=2z6V$F|!R+M(JwzF0RMEDt<L``ib&<-p_CrzZ&@i zP!zkkJ_zEw*v0iQ3S8Wb?c0ZnPIP`f&O-F*yIha+v>(OAWtC?h)-r0?a%0AINR67c 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 Co96KV literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/Tools/Bin/bfc b/board/novatek/na51068/loader/Tools/Bin/bfc new file mode 100755 index 0000000000000000000000000000000000000000..03b06d7d9ab1852216b5ece042b07821f1c2f0a8 GIT binary patch literal 26872 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 literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/Tools/Bin/encrypt_boot b/board/novatek/na51068/loader/Tools/Bin/encrypt_boot new file mode 100755 index 0000000000000000000000000000000000000000..8fbf8de688b7b7b9d1386830726ec353569fdc97 GIT binary patch literal 67608 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 Cm@BdX literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/Tools/Bin/encrypt_boot_dump b/board/novatek/na51068/loader/Tools/Bin/encrypt_boot_dump new file mode 100755 index 0000000000000000000000000000000000000000..1a44cedcf2ce0329117ee9c99962b90329455ce6 GIT binary patch literal 75832 zcmd44dwf*Y)%ZO_0%S071`Re=)TG8XJVnbi*piBx(TSV`XEat&TD)LUiY-cniBM~6 za59?njMJvpw!XEkwASC#ySCL7Z()W&5>PRK+(adS!WjaDi$b{O{jPn^Oa?1$pZD|o z<IM+h_I2&G*Iu{1_C6;MR-4xh@OnL&p8=jLJd&GUTBVAd-yYB6(*8D8o^hT6PnGA> zo^w2dXf=@knRZofD)UUb-7?Pt+R9HJ|MU4jZh++EStXC`bEL|7Jeg-^ba~2n{XbQ1 z(s`OiPRq>G<0(<~QYyIm&v)wm=ijc%GtW*JkBw0`;r5f9^ecD!mAm~i&rS!NC-cnA zPv$27BQChefGTp5uabwSO#SYEN?ZA<`5<zKq!+nsvd9}$<(cPf7hdL>>32Q-1keBU zCxhpI+WzD1zA*c)Z+vO&7iQma@$9?qsatUIf^lEE_)B9inK$Q>FMhn~Kjj7IBK`{x zOt^N6XU|0k8h_Qi^`bMbeWB~O-(5fat4|vvgshqWB>&@|S7~|XC$#>`Y07_on(}X* zro8Ml<;|xlfBZD%3r|yi<7vuAou>Sj)0F@AH08!=%C9?3`T3_QUrKoi|3Ch76$PI} z|NBo<{?uv8?>J5Q8K)^PK23SzH06z_DfhtFGlY%5<hkv(+PQb#6PbD2j9K6I%$!qu z=RKa8kvnJ4_SDuz=21H@a{G*LOXY1dZ@){G&X{%kT+h77+{m2So|)gglU6fspFMld z3@MvU_q*@Bd)}Q9&&+vu-uZ0++%<2`jLOQ}X3m>&`#m$Iaz^cUJTqs^o-^-G&)nPZ zxx+Ja{@lAFcY0>dz4P`vJixhqcI2+R@1&<7DdW$L+;;cvcY)WPbLY;PD-EUgn|IH- z$F051Gr=^jy85;+UQ%(%*laq`pX^V4Ia~e3OD=^v|KEPRXlIdIzuP@>&RssypsU@o z$A9!w)YL%FyKcVduDgbcrnKGsr&K=AbHL5leOmet@Ej*EKfM>+uAWMltCaJrxWp+R zOjgFv{FLOByQ))FmFJX;9?JZT$tf2-mH8Q$Q=V&os&dM6^{<{&E;wa=YI4eRb@0@j zaweSpnVwTVBwOn7%*rVjnaKRq=9Cv^3VANbDTm<MpZc8gVcAlTr!l8o%PDWlDIcCw z{zOiBuKX{`DL*Tx{qJ(h#TI0Kp35m8ktyW4IH&yVobqH&`KNNqJ95fJH)MYF=<WhN zKJdiZr5-(&j108naEl&YR?zCS=)3d)RecwI$Zzd}DpHc4C6(!}K7KCRC3#`7bf?O1 zlf1B2I;rw+OI}zi{hZ3Lk-V@{dXdVnl)SJ|x=H1iN?uqeU9a*lNnThcU90kclf1A> zdb-O0LGr>P=^B;)jpT(j(p4(|bIA)!q{pcIW0DtENSCPme@k9iAnjNAha@jcpZ2Ky z{gRg@PwzWP!9{Z=FXEi;Qu%L5UY0)Hsq){DyexS-sq$Z!yexJ4IhFsa<YkG|i&TE1 z<Yj5oO)7tt<Yh_I^(z035v87)P2|;2@TTC6!70JXQ*O`~?rvn-cj)o_i^{3ft%kA% z6a<pdz5%)wDJ#%^(8D;^u|V>r*+;58EltO(JWFJy0(<N`m`e0mo)!~Ftvytxc#db8 zjKXuYJQK0r6Ey2OY=z3kYYnwDU3enM@3v6cg&wWpHj<$@b=9y=kyEvpGLIGl5}nFk z^3)IT1P(3nl-};Kr!ya&<^?U69If)0@#zJowbR}urLm-LwVKv8t>J5sswG6dgK5%! ziTc2ymxQBqYm5CP*;o=}C<v?x9Fnp}1cbFo4b~##JL5eE@>CnvvY@rxevDi!2~y>h zX|Xjdnf)uu0?ClIt>s&p5$%Zp3obk^h-;5L3b6Qyn^=N{M?IcWU5h24RQ$XnMWvol z<#sJP12kS0ZqqKP=Qq^1HifKREz?i9Gq8^e3HNyGK7gv_!cltsQMFKa=oN)(<seD9 z7F!Eoec>`$(`mN^Zw}rPyft`RYxIG#q5<0D&^!GYh`sC#RmC_jEn>KqeVH{?^NV&f zPWMk0kzbOg&?mm2*!~hYB${L~t>w{ehpnYr!wy*Za#>5QVKd2=pTQv+l1~tnkL7C( z+ew&lScwG?a7O(5C3gCFUth~#Xbvrltfi1Q(@#_V25Jp|CqdhCx0~H8U6wdq%B-cC z_FE{99vh@J#GUqIGVLFxqB{0I1B})h?xWIL+OnGNfu!nc{~y(Hu-5Q(>KvBZp21&_ z*Nh7!?Wk%}pf!A%Cc)_O0b1;0QqF9WEr&DBjrfgK_Km8sPy4|Tnoy#*oSESVK#ij| zy^mkQYnzY3G7jGva8)72uw(3dGRndeifevQOGd5K%%(u{MOi0UyCs=js-3`)rP`)Y zhg%A~L5KKyTrXh6HX3BuCH*?kW-h$E>C95kls`mDXg)5}oTg9aHvKhC<0BT(vL%GX zy(+R`buQcn*FBZ8&x>~D`IgpQ(*5O`muMF>P$wd_Z|-N}emzl}p9p(D-Zr9HZ$x{& zb({3WHTm5e1ADBuTkh|tOtdx6K9})9DV|fh{kT1l(j`wI13~K@yWnVFUr1{ix_LN4 zqqPiN!?PtxC1uM=Yb_&Q<>7KgaP@AxjUG#ETG+220eqTa{U@{hY294rx1W|KR~)0s z?`fhn5Bx45sv0kz$75z{PeJqp4GNBvIYzto`RvAlU#CV-G?Xn;(+-tYNoF3FNQciB zWaPKc9tC7Q@k&{vYS*Bib{T`jrxu0c3;dyYZDA-rs~|orKQ1y*Y)_y^qM`V1tW+F% zZ5#N3pS5ZmxP`|b+6Hdo;R$-%wSUmKZQyH?t@fU*_I?!d?n&G{(9?L{5z1z!x(i}` zjpywpt;Igi+93j3!@bz1Kr*m-rglLHY5m9J=%L#^-lcjp>GiG+RxX?0eRy;I14<ze zLL0>=Bb6H)&$~l`v<n&sP9qgtqs1P>s-kPk%*69$HCSZfTR&xv04;)+dVH2&w|eXw znXRLfb!(T_(1f{cd7Ao+;C`0+5L2b`rhbJRvX0uLrKhz;M>K-Hh(u*iq-@FavP=WW zF6og}?_r0#nV~1W7usnT2-g0V6*)t+O7pj+`3joH&9ZT^6<X{Tbl{SmQu=pF(|@J2 zLl-nh*Jp0`yjY?ZZ3AqrNODmBqu#FkO}%}BI1L`2V!Y*9EKe;~h4Uelj{Owifi*2p z_p@?fvwazOv<*C4W6jzI`sJZRzAkWAM#iuXi>)1_TL;jSe*5MmzFF6Ww<GZ<Uz7oL zt38Cm-%W>5yrInIdGML|;|c=h?~`xY*w;_m*O-@dIPP}nl?K0q`6>I5G+p=c$gIRK zXzqx?Zw^6_uP_(ICu$afr1p=sj>e1#5hD&~OdKZ6CY%u@6+5KGMu|7@0LEWy=s|^K z7(`F}sjLJ>(G$NYW6uG54EzPWq{m16QXV)Qs@8hEtXx{59nZs2GA%L6FV!=7`xf%B zoIm)Yr|foV5w<#XE3J4Y(d1z)`~LHsu4mFTeJ>^8oVy10i%cv81JsDCF;x+Z+#PU? znW4f@-6pf7$#jQYX4%a&nVe}dk0uVGzVngdr($aLpp~w+dRyxIm5V*mg*97X)n;Ig zqje+$>vLIH7Xxd_#lnvll7fVzVW^du%EkTM2)ooO^0Xh+pD~fHa+>PE8>7cxDSHkw zwa6CDE^T31s|41D4;>!JWtx^7sBsy_WuFW>PsoHC6h{HVwIo3+sWrc@HFpM6wm)ST z2dz}K)||v*+~qV^oHy>@H~)&$To||IKWKi2(_Bz*nf~vgzvE8z6n3BEO!X7k{m(RK zsv-d`jsG6{_nqbf=s&^zI;Xi3x&L6QB~Eie{Xd!N{)4jY8TS{ztjgXiMauWp8kWH| zIy$vV$Jr4TWj|N#=;()}27|PiLS0OuRQ}klypzh8lBEb&{CUMp85Ib#Nl^!ll_EO$ zj0otT4lp9Hngqs{&te=!>@${9YuG3HJ3esT8A{C8%j4rp;A3K+&c_9MDJjZV^c|X1 zw>Bt@4*oHN3+fn6ti{Fxy=~wMU#Te5R(S+A|4Vf`^kr9_D%j{$)Tztr2cN<Anq-8L zN!~$Hn3UvHlEQ!_Ye)*Wkep0XIDzENBxRLJPA4fVNOG35I?d>Ry}d!1NG7DxQxV`y zdb*p=YDwCv4X(6}FBoSR3yoz}G51=-VpOuL7#c|mIcs@V2lkkj{bIdzvU<c$vG&CQ zdhKdi3I_Jlea=Rw2=i6{it2M=<aHWES72d#4*W$wyt@8KsTR8wvYS91176jEzL~g3 zx@jE?TRn!gCqBDubazpXzZY%w>d|BV$kjpIkz3dxyd>;oTJ&pBAZ*`$2Hq2F%s)S} z8vW6-9c*03Tc@`@ih2Q2_o_3ke=wdFds!SQnSyPAxKeLo5S^XaH7_y;$3@u&ts%J> z&<r1nI~_t5%Id}clvz2QR_@XklXMp`LegEtaU|VEtR?9#;%xhCVo-ABOt&8vlwwI7 zcCFz&=qZR+W#vr2%9S&<Jg<~>DuV2C<m~fq<(+P&om)A~t<>F0(c>lys3dfM&;k2- zx3W05@-4S=m|Hm}xAGru<$j?l!m8(1{@ks6%O!Y~J!_0Gz@ufgQW8xLcBC$4=Q&0O z`!h#sSl=fU@^1!`@SBkcUNEysYaXIUZCGNdw^8@%m2Gu<%tV7@uo$_C4zfI^wZdL_ zzM4<N&3HtYAAbcy-4Fz>ShO4WDvxd)czV(=q82~y@+b@Y$=2&_`u;B*o<GvuvEzT; zLn<wz@;{{5Xo>nUt-}WqCDF1<jzu0D>5|d1ClL}?8V8a*y);_80!bx^qBXz701|Zg zJM+!T;;LL(#H~5pIUZ^JA0bJ<H0nrW@u|`{OyX!FN&iL;7s{ajLJogTeU2RJaYoW& zSBRem%B{Pp1rPDipbc0tS=Wt2-~3V9%z^oopXRu1_Os+oL<4U&{Za`%l%Gb+uyrJC z_1bR|oB5}eE$=&>U*Z8l*K5rzaEpd%7e818_hYW?YQY$+d|;uh(&8k3v|3fPKDz(l zGg?fXxAY{;W=nvT&v-yTrEB^rO6}LXVTvij6pxWgKZ)SC)MxhkI6t$cWl0Z>7E7bM zrO{pNA{>^wRkB}V?;6;g{vWhBXpG09tA`YAjzP%hc|9b}<M~yd19;xR)5~)*&jOxP zcn;=yBhNuRZ{j(Srx=kld47%OaGqc1>E}6(r;q2&JkREN3(pZeZ{=CU^ERGm8Hs!R z3g@u(k=?v2v+oIN%~M$4mY+jcMGYgm+-pC~JdDacbz7ZjJwkIe%TtJUyG-_eA;nQ4 z#W$qUZfv>J=LX4297o55ED+Y22O8*$Nhh`D8&0&uWg)fZGx&dXpSun)b%8wuu(Uc# zt0TnLNFJ9q$67v>LDAj`Y`wC(?r-UJ=!zv*KwkUrX~ug_f(c7oeg{ismiA@Zii$Z% zeKsWWBCEKhU9kRBZt-uV_(oRS{t3lPJjY4Ja~mv_2Aw$jc7)>pAFZxh0(P74+U%LN z=A!d+msD9@p^uXGE@yrIPRsPUEZ2(?mux8~Sdt-GWA2oHz;Z0{Ku~)jJ+c&>FU7i0 z;#;}J)1`Q-w7wy?*r51h>vEysgS1Y|ZC5JYllbL!5yfd?1^ery`u&f<9>ZFFt8Q)6 zqwnvlnQXKtlk3rj?Wr2|XkRphu_w^wLuX&Vcqa!JQ}m0wc<9mIVY>CfedjKQVbpQO z@LQHhMPC<<8>G;4ORH$t{_$F*eu}<uuL6)dnFj#8Q9Wf}se9Y>)h8n(ve3@RKqDS; zORF<}{pBl8mUujM!>7>EzK4DCEo}pvDe@jvBP}W60)!sD(o;9E`^WUl0^2Vg`Z{k( z-%p=@e6rDqM~cN*@}pZv^u&Wi{q*S0UVYS&g{cy1Qt3QwbZe6yLyJEmB@w^OtZgu( zwPUE;>pnc#I<slv(IhZ#&>C=*B}Pp{t>Gz^uIKmSE=G?GnFg*7ecA`JU%(Pf@TYbS ztPZTutqBDJ_nJh0f(lPCp?kIF!eObc1wm^ixdBejAM&lPww4B?$-Hae&$IcJKZvqm zs;fBUOI>9ZHX6~CH&nTD{`2uqMUNJ04KIRA^yo0HAqm{*(IJt~2a<wFJy}otV0FYY z5A;;LqJ6MBl9`do2N&mWfG-xdKS$%2faK{uL+}j7{YEsIAD>!?r{fP=o3!RPgQ;|} z)@)VvQmr-rRi3FG{=h1&`L&ALeQr%^YjI$|^<HYPze;O9q%}7?%?bkh11l|mMa_p+ zO@2j9uT@hJc-yKe)GK@IejG@qCn<ygoWW<`Y48~dJ|+JFK3yn7g=)xJ@h@;%9k1DK z6;$Z&TY7$lZiAy<pf#@qGk1p8YG!@v^qBCf)GmK^!UaNtm2TELklN}8OpP<wA~n}y znd?aAs>LdpDD$003{25EGvChB%(sa75>)uN^tZF<{A>E}R`lNo{nc6&D*XI{Uy-cE zBjC0KYb2*%FP4E5M_`6^Tu#Bnbw1@3tegVbNbNMN?aI+50Htzxh4yQxObL7rq)~iy znNBFFAe@Mll_ZM(3|Iozqsu~xaGyS7jhQI=Q80d{5#0r&5uXgkzgi@TA`(n}a#=Bn zk=3ykk{+r3fXJ*TY<1#-_RD+VP%vIJMlHj8to-kV>sY#7e#NtEDEhS&Y0Zzx<EnV! zpR2a>tSEe@3jU}1X;m)yEmfY1!k<)a20-DL^=MnZ9zE%=TZB45By4{$n)cQ;C8nGd zUtYIX>#42zhIf@QY9(_BT4#f6e$cuxpC_VyV*$@Xo`pu@$D&?L4#jfy%Z9oS_4qH! zgq9psjZ_C!b$$-0gxr|}s#f~}&K71i_0Lz<$FSDO0cHFPdi<t>P<&AQn*8{+1*=cQ z?<)*d45+v&-%NbNUoo+uVs2sdgg1V_U;9BfKtqXJPKK?mruD9Yb8Mux4-9*^TL%#7 zjj3J5q4?-uR(%LbDn|dL$`*>frIPy~$4bTZYgB$WO{}GK2nJ4Q&AsuFuS&0qk#47T z!HTctTkXWeq)0j+Nc9w}{>01HNFflkW|6LV(N9$0qE}_WV8!*&Z9ReBDilb3><g-H zY(nZxD;2D`7twq}Yd%>)8Gz$-;}NpjE5^nIXsXB0T;8BJ`<?uRnv9hW1rAiuQtH#i z))s3YvAR%2e$1I;dv!(7ud;$_CukGHQ+b7DYn+BMJ-{iNtO`~Hi<l6)xI_x2*Zx#D z+(yUETJs7iR9&H2alBArQBmkl(C7_Xt8{C>Oi*h+5vN?upvRppGf>zE_DdJQSQ{$F zs=jP`gYimea9nF%UolouwqoorrA@f<HDVN~6&=r1Pkk`Z@b0z_5R2>pgR9~r9TYO_ z^H$(kW?`IF?PXO$f(g^qnvb{(#1hBHt1@8?5eqf_b<nW7!Ys>IMKbvV8P=eQAiPwf zp}Q~_$%^r+le?b5iU&9_2X{)<oM9nIwnp;wix)Y|U8Lw7L}?TTR-2ro(gVmc(#nb= zwajdltxm0Zt=9ZECG51>&4|GYq9LxBr?wRb)@#k{wC4YoCfM4*D(eVqWF26Ma!lBI z7={>(YGu8xpqOPvIZ#&X7LN9M^u$8~32R&s3Z$%+R*D&_MF*TRH=_Mlvw9ogj!g3q z7M@1Ht*#(e#hTDsDI!|@QUGer^$IT4BZG}!3^q>82l-%XJHspu1>O!?oz~l0^A?9# zS;YL*ssQvOs(0g83&c%OyMd^bDE*;uO<L{DaiMC)iFc~YALz9Xr+Ny4jaL;08}Ij$ z*;^cJoSSE@g8fo^sknat`GMs3iWUW@!PaU@2Bp$ePV|X-rSz+3u-Gy=DI7w6s4TvS zI-oW3!|+8sj=owg`pQ(=>Vo(%^i?Q+O+m0?NDyUZB);Vju0B>>aaBS5#=>9)S~Ggg zTOI!fMq!oq1KG${CvG4x*%P+b8t7glwGAHM<@k?QE7K!<f)Eyq6m1upz9FK4de@rY z3tH<WgKiJeG_|J~VMS7<3`LLXi;w)JbP5G_RCA9ZwY&JLijm4T1g*D(KX1#Y&@ZZr zRuxDSpjgQF3I3~=Kq1=&+g}qedqx^vQ&IM38NJ&2C{*#y0tRJ7luDWE8?yG(eh-9I z?dV<s)6*OsS8<c5ILR|e72bxhyx60SqDcS^eXFgmio%$5;NYRS;yPfr$s{RLlN3xu z`pByZDiuc8t3>BXFRQa+LXjL=2sJ<@$t<yP_*SBtWPDT@pm6-4mFniqaT#>GMiio& zW4@YWQ06$HS6GN?qBvDo)7qLL7;?>^TJuLT>57|<UsFLxHR%@=zVXjh6se^!DvxTh zOHgAO<79f@wc1$Rld`ybi^b3|FeayBqzm(qs3^(+-Fb~WU?{L%>J=&4TxV1Y7&2s0 zP+T!SgAprH@x6Q&LW<~Mt<SV4PkRd$vL-tZwMK$R7$cjR)rXKVR51m`#`;pIhCQS- z7qCzqRWPS0FsYCR0#+$9Np!keY$xfX$W%ogT^_3<>nbo9@V`}76j(?+(tZslt#HC+ zgbi-9khMmjgp~qwp`hJ1D0M_WM|<_FE@>yK3rdT(^pK1vdN&EEP(?MGJcE(aIoRi; z=m}?P+&XCfxpWBOMkt--C@f^LUt!4r+eBf}xLz7-%~5%n)>`1B^#bU(V55;AY`ngJ zHb0h1N1aUzrnaF7J6%;rxvRRqlTlmuX4Mv&E!g-SG}paoE>vMgc?HpOhEibnItt9l zD6s2u6qtbmyFN#O1+`l!80K6PYR&P#bgMIZ68CSVZnZ_uw9k`RR<gC<KeMNCc1cNQ zKX_=Vro}dj-^<0au=S?gEi<e)xL#(R2wETN*4nVuCYJ<bhw7&3u{DuuN3WUI5z{&# z*ROgG2DLfE?5Ns5G_g#R2YP~IiUzYkAi~+}uiI@z+wf4^{d%+;4`_JUQ<st(hU^CW z?>PzRUFhRL(t!`0qCvqg3arK)Shi^$W$2K#gMl+}?ZJ#~#3$@C;y3lmAcj@#F{~*C zb${*t>EidOl+C=e|IN8SXPqz;ch{PUJEyXVSnQQuF*h1c*-8A4(m>Mw=9y0A82c7C zRb$`arfO|NrQ9R6@oq-8t@an(jO?N8&$t=cK-weRjGqDQ0yiU`wSA0xX%h3Vk<4B< zQ!AORZl*~xZ>bFU;(3|Y4*PNTMBHv`)f(OgzM6^M>9!eTx4Eer`xQ4;YyVB9T(qBY zGYah|+>Amy?q(F)-*+>9LE&CEGe$CZxS1Ns+~j6zB{R{@G)d-iGKr|CrLS+{G5P(H z{L(^8<xZRsJ9{Tii(Mvx?1jr@VRHDyOnk50Ow?7$496&DIAlL@p*#0jK5H#CH7a5t zbScc%*(aU4TDNYmz3(%bey^*#$z`=VJHeXFxs-inw(}oVgU8i*h*S${h)CNfLKzU& zKY>sbdnemqmTK^5nH1}Z45;VJgnR<hFZB84s0_SHcSI=`tj0*2=Y)4QeKFH!ggd6f zxQ2$r@$Hwg)rTZ{n^3dj{Lrm_GF!btRl@+PW}9j4wXfAPpkGpzZ1_Yb?E6Maxz_Nf zEN?})t)bSy{+64nv8TJKTKh(oa(T;eGYa|fZl+Ua@&z{|B(Xo^W@N(l2sblEG6im? zMl#2SIpnI9%w9LsB$=&b77IV6{{r&%wzV?*7aA4Ht~~waTs4o_IK?L~EOP4<tjFBC zkxrci@)RQo==<C{xe+XdV<-$9vLAHF5=*OfaPM+Z<+1N{Yu<EgWV-4w#h&EWyr60z zE~mtW_C;zUu(W-yo2s#gyQx}xuu8e)Jj#8rEHCVFGm4yDZbp%Ft()-+{%vkX@U~xc zGc}U=lbflP%u{ZrNivU-;T)|nJ)MY2R)4zjOT+4wpd~(GPTW!eI&sUO^_)&7Xf>HU za_y7#52>(zrpnRxdVE3&XLDLZROlVQX`C2>`ww}%k-9?zyph@|dSZ?rV{}YiROcMv zyPQE`Rvx^s8Vg|GExF4*B_7ZGO9_+9)m~d}5YxhY--WuhR|*!N!)mRGCBJi~m>sKg znhNeZ_CQLM5^{>0+;rAH%Fy;rEPE_jSFT6DJIfOx()V&b*m@$s`)-XVat4D;OaF$u z4Kte*15WF=H)2RXa?!Un2hL@J`O{AN3wlC??7M#ZOt55-^C>8&pxpL41w#cz2W51L zWSlXaNVj9J-%|Ekw+=!jXs|QKh_SE3f<40pcs)L)K)2qb+HS+*#FB|8>R%-~JX%VA zs~VVP#aRt(ZLIqqqm?_#HxswTWJ)aU<p<~~8sp|-f%KhM^u!eOa!mNpw9>lR=bd`| z7UFGVr9nh<29p@Mq8;~GP|q^*QE=gDwb~`%5Zhc=$l=?)P{%Im#7uP8U&Wd7?c`OQ zILCf-|DDlJnd$=J#s_B+0*~Ygt(K^<42z@c8LHsH8tUX6PIOlZj*igGS{JsK+0HE+ z?giKjhB)=p?R!Y!R1~PzGTj9Bi`iTsN<8O*0;=4Ww+$p!W#5|ZIayMK2^M7O8M5|i zF?C;#OWq)!W7Lp?Fl?@%1zY53UB>eA{syFdQjcxc8lI<z5nWP+@Gyh3v5iJT9U*Wu z%0&jeJ-Ke;w;xsN#YInxO@nTF+;J0h?A0$v3rsCGo^m7c>=?jt;Y7(vk6q)crVFUV zt#C`f<#zE2C<&Cxtpa%9uwCM|?@_9Z8rA8rJ<jd1fpQ};XR49-nM^pGc*N%6zz}kA z%548hnWHSeVrRpN`L%Re<aCh}jck|c?6vIgs4iM;ff{yl*>tI{a+c!aPdoFwSq=R& zM~Ms0YI)|kYWxb-Gt&tI*s;$${mR@Lrvo0YeVN;5h&vhsMPx|W$G%cYs21Ccy<wFi zV-=#{?$GtHebPne4QU{>b18JTJKPJD=kV7Kdyg`8zz$k%w!c88E_^k}O-;9tb9<$l zE1L~Z(KWbmujgu{<Hw|3xq>TX@NnWEa=yfI-$;atH4YKolKaEB$-M7FtPA2JgWUV> zvo~JpO#X9%C6{(k>-dz1P42b&?Q_RFm2xv)Sukqshet?Z<h<zYvXS1pKL%Us7hrbx zVkk&1A?ZC8l>L!A#4?&Fel!v{mBSEOeR0zM%@}tkcKPcv9Y;Se_5dzt|MI`hE7Or! zBE+zha@RTWve3tV-bo90*}rqr!kqRmoV4I&H#uoxBD=v!FOu{EC*3IN*(&|rT6>0* zm}-CBNmSX_JBe~zcM|?-=_^P{l)ZmHM&JnpaYKBNvJq|Uk=p&%gnfGanqH3PdhPM7 zd@LEXmPJO0DZ3aU3|U>GJJ85t4>H!`tW3kY4U|=3L8|ONm_>E2Yo%-|WmE0$Y}vDv z)lyb#Z^)KCne~`nR?~YmTeFZFnLPxQhy8S>MvKXz9kq_Iy{yO;>#wbLYK5ZoRfPR! zf9>a-THC3Whi&xNIy&bCM+dyD7VGo<wcSc2Uy!v0vRdMy{k3m6wMrD-Mel+9iXK|* zS!&}k<%>k+cRVH@i4~RK>7P^S%2Oa&jZKO5MP@ns(uwiHrPYBodSxo8J+@RIh5s|r zDqMPPys*uzT%kRdG)JwF0uCv?rnl4Noc49Odz2_TS~sZsq9z^3DLy2?(fKN1RB4a3 z>!a9TFGU{b_EIwUy@Rc}{*oT;(}Fj0W*(d}<p%BH6__r=>NLb^9Rm;Gbr^>)G`ve0 zI-Ez`BdHJX3|r{u<*I5%f$p^#X1S49RX{9;<M*lpefT=3lASW9qZ18ide_K=jJz5@ z;i@$T=Y+;^>VQ6@n5&B3P8Ucq0E)8!Frohhpu`1Gk_Awn3!oeT<yin@J^{cO1z<RD z7S)V#Fc_B$U>pF(WdT%u0)Q$PgQ_eBdM*GR0D2Zc%_jh;aRJn10Zh#WFckn(vjC=l z0)Xi*fazHPvvL8<0>G>+fZ8koX|u*5bWN>3e7O<ru7?V>P=Uo}DSBB=XPv4R7{iH+ z66}cD^;`_m0NJZOvRf2yV#2=YPK`Sb91#+PNp%h8u7lwv>e4q@d$?5OMF4Kr4}aE> z6D_sQiUC@~dBelj@bK`1`r(-chLtp}jixurkVzviSir23h7~L@hQl-5c$?`Lv@#$} z?@|Z1>*1^G{o&yUXaT<fq_ZE0is=HRI18lYlYx`~05~N8foDzyQto0>o&^FUxifLl z0N?9{k&@xz`#3CxO|BmUq+X|)X(e?pa&kcNd~lqw{O~oLnpH)24hFei5&0`b^sSDG zhsz)y+_;{3(0)>0ev0<y@B@>q{FD;(%685?>(+)7g-5zwJ8P|>wUOtAK9%(KYCl6K zqzcH)-;Vm`tfQ4_r|&}5<es0(xM#NyW{Knt6?D3K`sFDXPPp~b7n!V#TKqx3WO#{S z63PRFSLliB`y%H$dP<M(^6Kr<4L3Mhphu7P)pgrfEaM7Lo&)@97x>i*_%wko_GIBn z|K~7Lk33CJIUETj<!nTc&neI=_s;icyw=Qq0RNd|_!faB_UX?Ipf1|BMZO*8;+Q`i z+Y_lm`|S}-@M>{a?Zv9m9<~g)nRetHv523DuiX2Jx8fpkiLxLp?nr;k(7m6tm<xV= zt?IXWA2?@!K+w_zZKLud?cwEW^ls$E8{t^`I=^mh)T84!c_PK>SE%dX-$uu;=C+Sg zio9aA%Uic+v7%RH8}rn)tJ~bU;&m^#TR=`tw_R)a9$><9<vAQX6uG>A%7jSU?d3Ft z6sEN=@@a?8U~<a(9AkaNwR&=?%y+iT7q?yZGqU^3z7Kk8HXVk2pkewJsGx|@{pQE~ z3+G*7dCR-<u-5PlNb2!xnLY;O1U#cP$U>X(nK*r2auYaG0$ozvHtIglSr?(lUAgoK zz9IyP=c)Z$5204O9i=07b$Q)rJzkA}`8_|8;Y5*8-DBUyjHF19&+|`A6n&rypO-?W z7P4$-cJ6xeHfi^7h0m$uiu^R{)#O|40SrP(_X=wJ{U_P*ns`rfO)eXpvKeIGYg&U% zPVxvcFyq29oqHP0a{_#E4F&9%$dDjIq(ip8`R=RK!*p&))C~lS@>ctaRKGte(eV#O z9_~ZvPFQQR_em_K6|^?0J9zQ1CwO>c$k&?e9?Tias0~5w*`hM-**AmM5${Tadxr%c zYl<gwiyp7@hh;lu&e+1yLTdn}v4x<Du01<`y`eo@xJLIL0rT~8r^BcO`}yzbmrW^{ zcfKAE`;8e#n%LCQcr53@{HKv#Ii+C!E+Hwvy4N<TRo@`E^&@U!{g2sa;)>(L4^wUX z`9D4n3hlH%<lum4#I~Si$Il4H$Cfc6HMfv&c~x@HU~47L#PU(?+Ozw#XE%5cSZ8t1 zg(;>a*GXKY0BYoyMXojDH~0+^3w?$h$1LZaG-n@Dv@~p`Oy<bWbv1K%llfvMRv36s zawksJcsa)?!au@_RbE{%f5o&wQl{3w{^}?rhaXT@EYJ<^#pPr6Xf+Qw6Fqq~jPTuD z&U|x;aOMqgL6@HDz0wFQGp*0)qXtAfyjGsWn2uKLA5XXpp-gQXq*ore?^6zE9kBN6 zsa-H(ey6_Hj&`ZLfzJNLiO+mA<pv|QXV79u4%hE4s6XnRe>r_Qm}8qQ8WbZ9#I|`~ zHsC~9a#M8cmHOHbkQZBTS0574*CzD~2k1U1s9XQluLm3q1IY#sP>e*K*RJF`GYi|? zy;<Z)_Iu<mF_D45iU8ZqvAuA{h)f(tc!rC67>Fw3S=!U<=k3Pki8ZJfL3J)0_SSVM zLZhc$c$1Z`m<BnJov}-Gbl%YJt7bO2nK~{g+1|SSdi;xvs{n(?{Gx#4r=A0Dk#ELb zomRsR)MNW2d-YMB2V0vI9iqvq?l%-^<6~6!?j@Q1p#5D%!sKAQn>_A6I_LK%-DSt6 ziLD`?6FIm33QuH6cTrQYe*8#J9hU{UZeRIs-9Fvw=B*fcq2aJG>fPX><%3b5RoYM5 z1Rh?JeT=sopqG}>xvpMPJ=FICkc#bqy6?R(O2qVj5LhF6Qfsd3gN>~X(XE_(agmex zrMBkjy!o%M-C_8~jx#FP)osc`&CI8tKi~mttuTlE1WH{`%o@BHRQmMPo;>bK&z&S^ zZN$ua>~mg~6Ffb($4ErZ^F+qD@`M(_(x5w1J$VX=q=Ud-uNlujYOJ+Gjc}M<w=UPF zv_d}=!yz|JDV!Mn;7Y+lPjwHnhY2Qdyy@NNuzaWX$ZuFf33h~pQ?V+oTC|xWLq&x~ zZPXL_OBLVgY+%ie5W=QWXC0P*qm;LYmi7u8xcq^8aJ6w6=6&9Hr6rbBQHRnQ)gy{R z_^s%@kd<NsWUSrFnWL{mxAKW$qGDLlwYE`7-}#$F99-YvR#>-+==|@lbeDCIENdC> zze<?-D#bpoNxiid(a;*^Q>M^Q-%3h)=gRv8+~EC2Dm}=kOwAt>-En2)EK+sD0*BH+ zM7g+f5{|8iR8y`s{I^UFu?QruO%$y(*e{~MIpDeuCoJhTtd8)g4x=(T{{wb=_noP? z=P#uL<Pa4%p<w=A5v6M~Vuq4<&>vJX5VZCON9_x&as9h^q`j9br0fKZwcSw2^t}zE zVd2_^<eUH>sN0Opve@9#{X~Y}WHlwkK1zvK^nuP^PvleS{{sdYzfp>`nA~Ml?$2J_ z1$wNA+=b2aBgfGPR?$c6{+#Q_NVaZ}F1HVH*U=M(uQL+XD_1MOY3@CG<;uDD%8=!b zL<3*1d|-X=+_L-p-BSq$t(Saf@BE^<6V-^jK|5=Y6c8>t_v7ziLvZ;%f+Y%<X!j%8 zdesy^b}=hS+z5RXRCG5hJG4js9~_sAgJ@VMVEX9pabo&w^*9F)M2Wvg3mkpa?i*@V ztb>6=hV{CMuTWwydQqf7wZ_?Hf6aG0Tp{3EIY#@MGvFuXSHSx6?%#QULm-xmd(5kO zQiXNh7q+<QC~xNh#pNHOfGE;BIEPp0h$b8$2FLlf*R)>aLYXPfi}vjKM&2zRo;QQc zc3#|25~CU}#~axsZvdeKw%F~|nQ^*^gqoEH!&bQ0Xb%mPDS7H1mtqzJFC>f)m<WwS zQq@$%N5jXE7+|@5CbPxG6OH5ecMCpm#HYBnTtdor7w=UmWil?K*7#sa#%>6m4BQ(P z?bG9a`)~3VR&?38eixqBsDrWsp-%TgWgJ`8@9sZl*YlJ4wS^uuk^PEdVJ)UkCdFOP z@T=C4ppiIw?7*TAbilJ`bbqGFN%r&W3gOq)ky-Go_RtUM0lR7s{eVP#aC}%S`TYWX z<i>}|%k7*Csu~VO@?$F={Jt=>vyq5LR`(i}k<Q+^7vA@&?whmg>G1jL-uZ=dCuI4$ zDZ`%`sk%Tgbdb^-z6sB!XYs3F|HKD7_B}r6@WxjDDS2phxLfH*IQSH=x11H>{RW|{ zxas28=mA_T34)J;i^aFeFJslo%K?lW8vIPD`N?JFc)&%@O<!?+$F<tOY!(fds}CzT zNI2@G*ewE54Wos_EBOY(+DM`OL*Br0_5qX3_>6*J`yfFf9D6_VS-da*#OMQEEJIQE zSNiAYl+~3R(cS2eX_)1}A$PZvuH{8jHWk@D09)oJ#gT{YDe{i0+Hq_ZpU#kF-pu9z zIb4UK%q!O8g+1&*&LNo6hF3s9ta3FQPPXB#YCr5fXjHy6f3+C0r?{9pz)X~_16NP? z7hJxw-q!PQnDolG>8w3Q>_m3a%e_W)8TRaLEqW*Gq+74aF4nm0#)7#VCGC|B+)M08 z<%mTr4UVOeca6XMul@XN9aP_q%ILGK{g>^SL>N#DZ=sf0itKltoFlxelv}4Yz66#= z<?i<UGPS<4(1N(ExZ24_9^lQd$Z)mS?y-+6LRqbKR~jPl?bQ-QRZ)a{9Irh3z)9A` z&pW~yc_J_J(ZhOhWC&gD!}7isn}P??E9{#&*6KedtQ!lbWDW^u%KAvlSZ3G`!+Jmc zZAhU;>;B7Pt{?SvzhZ};cPy<q9w)@WT3D9d1@ZIa1GHybW61?)+dopf%DOxYod?l5 z0u}#3X!NFiDTl2zDm5j{vP#ZV{|*o1w*kd%>iFNLwbGQpP>(I2Pr`S5{_ti1cK_Lx z)6<Rr{Y%`DUQ_<yf-m=vWH=+8?T+No&EBrIQ+2y?u|+@ikAJ2!{t7jIrf-v2pi`Dw z$#3V!<QErW@+ZmfHb;K{0ccqjk>A2o<oDgbeO!M3Z;aP|+VSrG_;_M&4QoS|&1I_- z-97b`DeI`L%EQ9H8ICT_aCC_zsF5hXV)1cOAk?Xngw}8t6{5_>ge&o%kp->cVv3CT z-8e0KBIg_NYH<^6c)YONk3XQ&!ry$7>wpozjb@u87jP^l%{J0(X!mg8GnJ8ce5dIE zXLskZlsoNrd4W)UL@Ym2tt_bhZA#>j&Tro?DTGXC6~?Pozy{`PF^Mm+-cxgoWWWBC zeZ@}u8b@4cUiW+OF%x6o72iMdxh6r3V@M+p_g<M(tA`_qF-CN6f!(!}0R_LegYjx! zeR_7VY`N2S&{M(!f|Qvc24^3ZH-!^s*%$|PaZaGqa#k_@Wg07)C4$**ucD#ThS#^G zx|nMFiRXlg9C^yPPs(?ib;>eM4I~rSoa7xn?U6Rlr=4pL)&|_E(=V+(8rabjvU5?Z zr{2)-fMBxQ*<vQ{0Q*r&q1N5clA!9ehApz>GnUKLYLruzU)E30uy}FTGyK)OpmxQp zeSk{Tbk-mB&G%_79ntg{eMUM_v!wp$K)2w_s^F>qf}1GND@T`UkH|h{F<KV_?S!y) zJ!&wH?ZnN3f!%jvv{<j;6J0jz6W3Q)rWzPm^2(m}$e$Ivj(ru#>J=qtidBc&#%n(z zs<2n>RTeM~n#xi%u>T9CEA~WoDY%d>5#9!X*nfjJXtajU3d_UMEi&J$wU(kw5)(V? zkElr>i0)<5hY}N))E^nBJ$x=r6BD0O>1S!pOGKLX@E=JjYNyX&7~y}JD0j!kaASn& zpCW=lKp1Ar0X`qtu+LGNPm8UGVWO9L-CiutCv?J{RQ<L@K5H*@3|j10^y7M{*Q{iH zwb)n4^0HSW5Ad)zD@`AHFFl`vnN87Mtj_^9g7_1LbtJk~V{67SM?0I{0c?OK`Nnn- zXw_odX|84jtnms~J!pG^^;cZXM-M4z&ts-elk~X)TiL(pE*RoK_pdViuKdxok9w!) zGZ-bOXIiJb{lK43jo;%Hz4#>vBq4h4&$j%X&-rn^G|3}JSQ^R}Qy`w&PF_%RKTw4p zxD{w>ODeWqy{Wn_&i5IX<|h{RojiH+@aoczi|YA_q^%TJq<>$}oU~9%PfQ%Z1rRN? znioX%=-YYvs9pNPqkm%ztziwb))QCpPIh5_{gEMB!|y4mKQffhdP$9US9r#<e)-W8 zb9ps;@7$o)a#i1pN_-Y{R@L|A$j^$zf+dvX2oNPtsgglao8@79+cEzVbw_uL{Th2@ zd67&eoE4h7Yq{AeG!dCm`*rrK-BH%NEkB=$FI7rR`L~I=C#6hlHj8-20z<ejeI<lf zv61fovzUeH>we1q=#RoJ*xOIEr;f8L7S!67>o*A_3lID4DR9{*ThJ$goO8cAqyL=k zqxB~KrZ|BMch6EQCRaQXzg3ra<-0awwoY00sT8p6@^u**oF9_XN^(*>&P|)vZ_BDk z+sF6}fdnb!LzC+ERu8RY<uW~<5Gede??o!5fIdeu(`2z*EKQRAO*(U$Y|LrW)!$@a zP7_gw@*_|bXwoG8jFK6sSQ7k5lM**=TaE&2{3{jmnG!)>`O0saVu<XoVaCLlZ#Qva zuuGd%JLh9YdZIzywN=JJGJ=p~iX|gMtMwC?aNGN$s1Mt3^K?ver<*Fa+uW4jeuY#> z&fp&{leNe?Oj_*ze1I)nChM4^$>scNxESdk``5hjuJEiY6D?eVY{@=U#wuYx_K$YB z^;(0(Q!-OkpPkM6|MJnG=hPfft4vogo|@_C5Fj=fo|bbIY2b&F(q4#3QfMbh?(Gcd zr;TGf?JDM$C8R$RIz7G8uOT-|UeJ#F9OdWO_r-jWp)dWeQzY^vy9Sv*sMt^OUVi@o zbx&mmXn{Ae2sogw9WS<@-!6N%_RK2D%*v~ImtCYyi<!W0;VJ{G*KS)h%|hivs9&H` z$nqoT9qqbOb>%+im0H6)jPnvVi5TlmeH6L?#~u@9f4Tcq2zyY{62urIU_Sk^%1%}3 zd<#eC6C@%Wv=j8F3wpZ1tWhyEIYXtSoY1rsj+4w(6`^*n+f~`GDpT$9?sP3SPXV7? z#tnfjgl>ras9mM%*!?*@F8%ZP`jHy*fRg7edeq~!BWmlc#pGt6`!yD?lAG_Wl$lh4 zp?peaDxZ?EXXValsunwm0T$4NviPK(j)k2iAMGd(ae_#P*=5stu>-W(9N$c+i%C>T z0QK`2Z#_}CTs%!@QZjik#^2%ylKpI}034@t?o_Tl{0%VE6E_eYazCNTl2*z0w`4L7 z&7fvdGVw?;&5DNTmFu;K?qZ!Mwda=uv~N;0zucQ%ui7}ONR)0BzY2&!4RJDZNZg~x z^9gBPrAF(L_KC-po}3uZFGmjkmCDrl&`}LSV%NJg{i$FMA9M6$zw?2xiWYlF%8=r6 zuke8AD!xMN;<ZRU&0+_o!eWJvoM2fK!G{kKy2$zMTa~~3{W%#jOp1;!_ln!rW6yI3 zI>#Mo94PRTh71(zgTo0eK)WPEr3XM6yW$yEK|Cf(Jn3ohk<((4WarTWCNr!}>EX(r zx>R?Gq8NsK!GBJgI~}VM`!4th>%cWVusnQ0sEDlnzEa9s?Ca7%t^@L#Tc5p3x#C(Z zB&Du>qg>RzP+Wfg&EnXfS34-Ju~0y8f3Td0${r#s-393%FliIUg<X#b1J4pqyH>t4 zI#ty0MIs0&#U7<;?9XhKl~mfHF2Mdrdp0k~VRS|{r<FxlIzZW(ayy{3m+BDVP44z| zn`%NZmEJ0fum#Q$4QsdY*^CVAb(x9Eh6E*1^1qqw<w{g#%n~goUsZK(U$AXS>*ScI zAaXfLXANyrja;`w<|>O~PgBOB4lg6K2rCGrvOVB)*>*;k=uyP#FL0G1ABT&rxh_#u zuE)n0N5%z+9Xp?}HLXX>>Y1F0CR<?NaSthspelh88>ykAiNG%~wNOXc8j`+N^vWm3 z3p#{TbK;9B*;0N&d~vHVlizM9=p(8`;uA%u#3wHQjq>vQ{ZDm}cR*cmvG|JXI>sL( zZhVOZD;cx|Jab(tv~wW&ai7k#?qJlEve#PUZ|EVh_cS3KG_G9<Hbja()jd!4ITi=7 zoF{Fu=PFsQyH!O+w`9lqWY~8q*b7qKTwbXcl=|WP!GUwOx<0+dzD%|J&KCFFTl7ax zn1-OkvN6gDb^>Ev_UC_nioeO4aNm!w2r`D&D8D%}WydGhn$!U2yvdB;SP<qDzi!O? zRsxqUUf0FVwY_`_qC~D1bW~d_IOi<UeJmI^`#4SF&^^g5MrmRC_!^9qx@CO#!dtf_ zK8QG*Pq#GZq}>?R!C{c0Rd>klMI(UEjZ5)q-E&edt`hS1a0aehgXR2bMR%+6DO%M8 zTb)4Ax+ym#ZsbE1yNQ+LggH4I;Da%0%cVW?2f&&$h$bGBNP-GyApG0Z_u@r^%Q>4Y z^cab35a=K!nwN0x7WhP5L)=gtMM+4z61xiD2EmyuH?dLXYK@h;Jx%+1r334376plh z>h;}M$q9%jn*1^wE>7~op2h*0_Z4Mb3FKwMZ<n#Iy5mMV@q4Euxb}DKehvQP^u~Ef zMfR(3<&V2xu*;tkp>X^$Ip3B@yU4*Qw1Vw3(UzS|kr$oW4iknqB;dK+o{Sy|Mo;8v zKa_Z}o~ZFgx3M)3`SZ+54sqpvL@-*3RNPEZIG0?sR&*<ogw}AkYIwr$@|jQ$RVjYe zZ#E0U+)S?fJa*Ji*yXFVmEAv=dQ>Fbuckx`t-(u`@;9aDxJ~L3vuJk_g^@}lXffIP zWW+(;k5l`<)i%?>Wvs*m>Z|Q^fG2bd$FJvp&}Nu^Vq*L{abdKEpMi0UuwyuJmACtR zHC~t(N-j1Mg=6&SkpYnl_2^!%I-Kl_OgG{|f1>asnI$YZj-zDW(&kWSRqANIEM`Hp zOXC|b@=oxPD)8Ftl{bx5@+47%uW>R5>4GnVw5M^nXgA&xnF!a@wQ+!amZhgaBuI<h z1#+fhIpL$~!27Zq;xHAo$=JeM9Ghdh(pw;yp19iEmUpoz&Vuwq6l7K>{cAE#IAW=^ zql4N6r=KThfA|X_OO^XQgA+=PzJ7xWMG#%bQC_&all`_X@jx>H>>OrlDC?j~<hchm zMnK|4i5xhBEjz0P*kzHpCxx`cRvP49q3np}FsLCOLwEcv&g1hF52+}{n$pfpltR9u z;YKNz;ygN0inmpiVlz>SZqA0<LL>b{`8Ax-#P=0oJ^^#Uebu1H-pm+g<-WRW7+?S| z?z=a85c3{;33bE-z`Sy89qz%SY9jqo7-l~wv(D`2I1hFL25)8eW7T}1=hYXER(aB2 zVws2!i<#Kfay<*3`J7rMqXd%Oi|nQ+ktr3=UgZkq!rkRVAu5M!NcNwc{U~nHKBl3| z^*vnz1T6F^#4e_bTuqZrEZ&mRRCFLI{e+*SxHprw{-nG{`@lA}3XN+x#+CCfJzjjM z6-%&`yxOISpQ1+oUjY533-o&cfi2F>U!2dlFXFRu4E}a7+Qqk#<olHv&Q+L&xAal# zxw5r`3kG$3AM?d}5!vk5YYP~-DT6lYCrHbWOlOfwsaZZpGBeA?Zm~2;_BZLwX|ge= zNtc_p>rg)W<xhd9_HdfQ;F1!4BPvycc)nc4FH!#EBnPo@+hsN6j)mjkme^;lbJW*z ztw9_aJ>l%LMea%@BPd9wd{QF+L9EO2jQ-jwu}V$>i|yLCgf)-N@75FFE4IHuPKGJ5 zr@E<f`&yOaxJ=!&v;}1JJAOV#V7u>W!?MB-S(epeb3hrk6~4-_E$8G}e$_AU0gCpB zybp#+x=wpU#rLAU#o=@C{&t=KJHny8#pi5}Za>K%Xpl6Ts!Bg+vmV`k6e$u@R;-_s z)T3RP;3T_32$h!Tt@uOuoy?#499WwrkSyxy2?PnWN2GiDLj|Lr)--otSDgeH=9?bw z=<VPVKee(@aGdAm5@{+6CAsuh`}+r%$f>5Z6NY?QI;nP&OaB+`TtqXgra~Yky7!R% z6$a$gIJ1V;u{~-Twb*1Z&{4Nza8G*sn6#-iT*>BC%2*&`YzyHhJ-Wb;-Mdecm;nxw z;Teao)m;+O!q=pcZilaB&qAm{1&PcpLNy_v*4P0Ij$!33vWxg^sTj-UTFiMb#erxX zen&R8ivZ}jG8}=1xr~^o#h6sH@#Oo|%43wcN;JiYX4%y1c?nKjcR41pN4~3O%PgmU zU5nkT2qUbHE|68Tk7rjgHd!j+Y~|`BZ}Jp5B)QK`o}zd_OzIg;CMrqkElqJo3i=|% z7F;Y$C|IR<Uof{D-*G1!oEE%Ui@k&SkX_k0Y~dFaSusC>HS+!e>pK;A+>LqPu-?_< zyqdz4*<a(4=m{N8O)_V7<3_}i+0V)pK^F<8$g;g4sG*X$f<xP>Qh~tVEO4q&lldDl z?%XjIpVY?%tp}w!ejtH$@uc%$0T#MSzU!j?%1~(3CVg#};ag^Mw`^S9&jOpfi~HqI zT_mKOARoLalz>1GW7fxr@pxH16B907;An-pj=%Kv;Izm~rqvBEq?aBSnUi)N$FT1{ zCQIZ<jxu!i=&YKGJx*&w?j5@g^wf^Q_V|ri#)?p%S$B9&-q8Gu+U6^^lRt6eFtl9y zHe^lM_6d*Z7BLW)t9iFW(u-7a(4Q`)ofB7QB4g~otj>-$2zcqS3XE7k6koah!~Sad z6F0ID<#1Og(4e_er(@CyI`ZPf<-(0{g}jjahFU;QjJz*ObWgE`B+>yIW%aM<agL&3 zF|R%4%`76{QzHpCa)2_lAA>tx48{qg!5the8shi}k4%@8;w*aIEKHSI#(ti*cDigm zSppG}vReB&{8ohcYe6LK*CN~S*eqe2FgHv8VI(GSgRfP<*Juxa3d#uP_`}PQo9c3h zH51h(hMX8ExfYgo8GM#ZE}Xa%Q|nAHvP#Cn?ak<ropzwpDf+C)kV1H;!+NzJW4$cG zeTq453lbyTuSg7P-Y_3PWnpT-b-tCJ!)n<7cue9CH^Zq}I{aI9ep<nv1}VP4RGn{X zK#v9KI~1cqUYJ}~QuH_!=oe-s-b$FOWcqmMLXUB$5J^!eax1tR);p%f0%jJ7kfWpe zva5q8kdJo2fhG1(h1IRMX|WTG8uso9$9D5=dchzHDlocmKxJ#)UrcMep7_6|43)wb zZkGwwd<;Xut8RnKuV1@Wi^-J|IN$8kVo8#MlOGLaVnQs~lel)f{r)>jucx1q2LEF6 z4r@A-_p3p^{xz*Z!_+ZB(J{9I07kr{A4qm-*$ys;iTibT4N4dN-LYOFJ2m(<E%sHU zNG&c>gqBV}%%N@W`$}vyxWGfaW-U96MQWw_iUrHwzX7K(H)7*x8aV`m|D}%S7^NOa zjFSSXsgeZGnoNzd6H+r>YV5K%1jk5?y5#`-6x!QXLMiS%jIlSmsTzBgq~gC&7CXDs zWWt4<R*MuZT($^cD*lp*;{c&XqC~B)%K)5lz*o-QP;m(qwE~BTo5TzEu_-u{1!qGk zcj$Yow1#U0sP=Sfo~<qk$kmc@(q(#pXs)_>pX~mWqfb>oxpy!94vBPXPq)#pk~bb+ z<0>hyW-}MT<U7iQYccVlq)?%Ehg*0Y4Jjv%qR2Dk;;9JgoS&k(98hRtX(d0jsLc>| zfh6R(v7V>>s9Jl@h6N+!im4xpT<T04wav79nYO%S)<ARGoHBoP9_GxSEvH(Hm)8g# zwb%`!?*WL(J`@?7AxZ`yFGYP4yoY6kTzED1w_SL70*_s_;(#&sTgpx@V5({_CMP)9 zzh7;12463BO3-nP>gOC74YJ=(%a?BY<B!h!4kxwPnNXW6-f}-i(NTSL`LGt7<do0J zlshO)mZdsuU*e88(;ctI8Sfv;DrpUKWW0%=Fdl!8@I8w8@WmjSIODZpO&Cw!?Z;gH zDFabBVuEW4`b5<#1lSCp39qO3h&s0)6&MaZi5xB5U5ux4$`-VM0wi$ZNe>C-dd&YE zVMZjGb9nV`82i>8!M;u;V3>-j5r^xse~3|%Qw-^jI2Ade+#!gOjKBpw`))OK&VAAT z^KyA>N@<BkVJ&vc!hw3?c_reqTgD`85C>FoCJRrph9>+w6?tJ;Q6CNJ1Xrqc_Q=yo z*sC0=_`ytZ>mB)#&x~XQL)6EqdgK&A01~>Vp{!mK{E!rZQ6rFkLKQkq7P)DPpUY{o zIHyT6)8zE(Eypzi(8iq3U761R?3+uCV5#sTP0|mF87x)2(``~Bh5XQDOimLCw8@V^ zsdCeHg?k%E?gwR8MUjwJvLw=wWM)Y|k^a}Zf^|}$CpamSux#z(0|<*8e0QqiUpRXR z{0+aJ_=V$wveytgs=t<@A|~=DG-O&P&aU82Bn2&BVjo{7mW}t*c#3K+ws*NH?!!q+ zDV_DI)nR*;Tj#fzsgfT174_`1pXZ5UE)jMXhRU)tU&5B*_(ltloE>=9KJfR~PMKYH zVg!2p>Ho^=1)05EhJ9PnKt+NG4ch0bpt6cEYO$T7#3Y=$Q^gJKYuiL$xs@xa><7*n z1>GflIx4r(p9Mm~-ImEg294Z9c)#7ZJO`Zoby;cI1omzat-o!t-P)0D8>y6ak@fiJ zRUqb>t_4y?zc~ArW=iaP8=V29qeSBSuLBg=cV?k;z+Xb^3}m-qW|<|bSee^4pSB8H zIexq#w`P}UMD{B649EAPw3viM(#p?;FZ_<?y<AywwT0GVi`^a~7WAkaD&0i@<a1M( zv1L-5bz-1kZqHDv#O?Wg=_!GAbqd;%TQ!3!7eTk@iq|rfWUit9Y9I*UKjc<l<f0_f zrK)8n4VS@0Vk>c>`96}`2{?!}Zj^S!nyKL`-A?=RTvRqH&l{N_f+-*SDaoyT*{y_y zj!I=-Zso6(A#qf(%Z%kB;3D_(^Y7&T#vB}D-(<-$8ie(97~y{b%$Ebq`aPqI3`rOz zLtkZ06+t3DOK-<Pb?L8!sN6O%gpLqF|7B_y=<H|}mmC&=tb3BDD%hb4pqhf>tkIxc z5DOKE2l$IZLJg<E2P^u=P=BB{JxyB4T}c<qtCfT5E?b-Gc*-oIIkRX_%Xd0Oow2Ul z9D=b#)BBrfv190GS$P&$NMT={Tlt<_$>J&w{cKKU!-cFz`W4ke@dgH7iRMZBLFGrd zJpOaH1?mGA^rXElr?O$Qz*yk6C;<igX<mv}J=3>Sob?AY_FnlNzhl~=_?4mf9Dn?} zl2H7*G4b2@wDN5QLG8_;_6GN`_*2Q$7Rh#RaeP9d#;5dG1vSngCztUl(KqB1M4Tqk za<A4wLn304vL~!$eEvx3(iopmroBcxx%1LxZPr#*TRlNa_^v~TiA%9a4!a4vEsako zmm~+Eo3#$UtrVXyT3~ldCMlu#jiLC2u|bUnyaRkk*}hQxV&AzJdg2qt#V;)+5sF{* z(Wm8c`5_+hi@W$8wrnJg&z%`5dl2tOewtI%5xmr_b?{1&9PDwUcNZUr3zhvYK4HA> zLw}?V`S|WG8u9|`u5+{wO5;PH23W<=U-SFIp+Dv~SK$IHD~2|a6vybf_~mz#lv@Og z;{(4XrHMxaPkiCOuZmwfncRh!epSl6D<>ujhw%MdIS5Sc8epWho+YnUP~d$X^v)0S zK?)xqz2Hj*y`Vf4jTiRug2oXuz!xeg+B$^dvni{#wi<!X_=rR2T<AGt#E1O8aKr(A z`_>zYqA?Po^fH+hhJ0B>-i)-?t7FHlMry|p=Jshr=1O(?9IBxJ7H+E$NB8YF1FOT< z(y(u(5n$%e0JLK0)BL7UeCV%8n58?+0LQ(Lp7Ep5m+#fRt9bR(S`kj<f06rMfE+;F zi>a*Sl~6t^V)$U^RWem>PY-3Zvkk`Z?GFc58(g4)5<cF_<qeS|dg*Gtbgv=ll;Jxx zDKRzxBZP^i@^@eaXPJnP7b@WgUgu7q!R$sDslDeIK6oh|4)79c(hM-iuEESU>}xYh zA=|!iV1KaX&11<I!hv03@8O_zh!*FEy<5UwR^sraL?K^P;RVv25H~#_>`R5MeSke% zRv_#<$;%PY130?(4LY6`W`zPB;lRG2wHIE(D>r=mgktn6J!+I5rr#N1-v+LDREBwp zSrAP13^L?R`Lsj(H=Wc7Q^x8t0+KiIm|;4j)HZyp!htT+S{)7?4z@hA`330(z8{%+ zv&$O8Uc1^_cU_`zFx(yH_I}ESk#-J&Ybf9)cIeA$t`_X+2f8Or@0*Oo44ADMV1d&z zhtds3DIZ2Y5%#rTo5-&e3Zfc?#;G1iyXTy+7uH*)4y}){ej^0;u<r=3Aus~#WdwS{ zfmOovycE85u<1)1rF}+Vl@Vy4lz6ms+R_^<5mrbfK_X^gc;5u<0O);1*!M=*+9}ja z^$ayqyP-Aw;bqPEGiL2-I)dbJ<`)iZ1;emKht&`_Tne~VL5Sny70uVLOFVEXV$Q<s z7M#I7eGcQu2MZLJqj)3*rMDW^ZX+OhBf!i2Lg}~QCee^j7=hj4z#G-DV4}ghfB62d z@daa=fbp_PiO@wd0AmUAj03*H!>GO^@&}4Q9N=N=xRH8)h$1bSWoBRn=yONUWcsCV znWc~on(Yt!b_hDxCGNOX-3aia%xrFaAfcSn@(y<wqS;0ngCUys83e?g^1-Z}YSgO- zI>Wxb)etoxqO$n64_*0~o);=xq?hgw!(steD?OC&5b0i#3m~1XUJp+XFcPB&IC?<M zPIQ1sJrh{L-}PV(m;i)jvS=LW56x(D1e%+rq*sM~t6;n@26^+<o8s#^4&uCL%M=9h z<?=-xw5CE_g8fpCPU&#?ohjIm<i&Njj{KvZXO<<yzID~;i2x8f^}s&86qMg&db*dt zCMVDbm|kAD18j%k<&sR-`OX;B3}xmNQ+5{c<qg~bgNc6J#p0|q1D*UaB-ORcl<{fY zWtMiRg@C@u>?*;2Qo_8HgH%R9`no>N$2`;s&hR_YF79M}lt>GvAPC8l1Z>dfPcRt) z_T=r0pZLSzjj{>_W@)<~IIMe@$`rguWftr$Oz$q$PcVkBHsnksweu{&TK928)&YE4 z3^9BJ8GAX~XCiv(o7G}76dAZ@Bh&3OOS|+G2>ROK&`Yr`opJ`uH!g@?ivx+VGkm1h zI8(sN`8GJ^gB^qoABJaFIIvD`lrij5v-GGQ-~$!Uf6+TF%HN||s(TOc0fP}92QZAY zj?ky!{ZK5G1Do;CF&Xr^4YpLFzYX-os>!r@AH9@ok#xl#fIC##X_l^Za9=+uG5J#d z%)ti?h07wZ*YK$W*_5SrfIg|cjvVX-eJ%h?Iq07x4q^IezVm!TZa%kRjts&gIOM3c zZQ%en8J@qSB^D^N)*0Rd7?QKYiO~T=WC0=YaSI0`qj&_x4Ke|~;c&JIfdX&JcML=h zd~fK1o{+`Y*l67j@l@k>U9_f}34cw(w;m{GpyvS%0^CdJVSqsZLkBq%+KJZO@oCd{ zSd1RC3Gh*N?(*({k9O)ljNM6bDmNN|{o&HR;lRm>iRTBmey?y!NM6h8HN2QA8;v=Z z5ge&z9w>K5eBlF0iTHxZ*<x=4Xh*aIbAX2sTOYKC`&XN#sJ&i!cU6Qq%*V!*hk;dM zALy7d#AgQ#--V7(Q42)umVJha85MPeO~rJ`>M%r?4iQ1TD~v=FI4!lYSQ8VEUKzQi zWp2niEOyV^fu{F5;|x$%01Mgyp!1yp90Roj-roti+hhhN=ETRHOXj{WTzVKkDA2p) z<X_*b*Yh4I!^S$3!^|?pcEfx8I_#EuH5DuC*ezHH+KaqH7+44gLsIB}F)V0hLu?Mp z-?yK?<^bv_NaBKeAgx2KKpIC(Cg^<~u%>sL@QXuh8Um<CnN-1;fzE~qZ1+vyNyyBM zfo_&=2#fgdH++3ud#ZHpkm=pY9|KVq4=uYJy5bLr1LJco75J?PzW6_b-g(kQFaFL% zg^Ok1IXLX2=W)kF2z$}(=&>E*C<&_Iv^C7<hZK@~VP~ux9pNubmvUz?tS~Yf+$SdQ ztS~-^@F4<|)<HY4wc5fq9dhiHE=G#0xLXb1VetbdB_fxj8!=&yF-7TkR{;-0ERCS5 z%tbk3K2VWHgTvs3hL7xjG8Oi5H1r{MRY;Cm5e`g=+J6p9c^0Nz_on4*LW$W!#T3dy zi2Ic&yaXo2R62CWl~ERqx}k>ebupm<G!TkjEHL=LE~_RTj>yzXQ_vK?yF&g->hBnV zFFBa_IK)j;A87bu!;RDj0Ahzm$sR-p34hlJNS-$WD8hpD!0LRZV0PJJ9gnL6t9c1v zsD`NL;CHB0&zV3PhId6S96(R?<RQP;ia%mnAB06$i950vw}b_^_LxG*2LPG+0KSwg zDc1cX+!?%b6vCdc??W^2LGYE-T~Bh_zK6@TVefGh4eiBrp^w&yO~(~U+%XV}N&mAP z?_ogL+ogO1$GT)3h_jWQ^kJ>g?;nX-(erLD!}L)CppV34ma;tJc^IffUq=YjR@!U$ zaNzQ<kYVF@lsyOEGCO=^$Vlpajg?g&$iU^<i}=1j6vU+<fSb1$NA#U=;3H-|*z|Ve z`jMv%baPU>&xAHk8PtP6++wKr0UZnpk#)<rZDjk0yTIXMtDf2p&E9b;&QSW*de<q3 zg573dJ1!T4;Ddgk2fAN<ctQ)Bj-G2xyyn1byhCS}wwi&py7z5fnqWcsGjYp+3jMap zPD~d!W1XDrWo#RwzZ?2t-+XJGa(tt1!}pd%nF8A}WFcs?ST03y8dQ2fFKq>N>zLtN zFWb{zW!X$DQlq@UXMJc|EHr9r_h9}!EGvf&*g4E(IW`);-59wuVL;*8#c(7oq-QT~ zDK!vgx3I96Ny7QU#k+^o35deMinUl7L>9(Q^$d}&O~TjW)S@ECUuamHp@soX=?eL} z&yhdjW*xgO@%UHTewhN`c1)C%kQx#8Z8rmM27=Octsa2dubF{Xz4RF5q}5rbcdcw) zz1^5tp_#Q?_r3@C0b$=;hU}l&hd{lsk7i55f$e-W0jGd9!Yr+1nT$ZUBFQ_3Ebj-y zj8guN$-7}6JDZ}>a$kqN&4)rR!~3>%u-c;a$g(is(n)QHmEKXQ?lTP*-`W!nNIopi zLO0ZUM~?j)g|=M~t=igc#z&V4(H!FKK>USxW_&EAjtUS$!?}SEuS<-DTp-0jyCK*1 z5ePGC>^k=Ium8G`4(~%MIrA1W(uSQLa|2VDFYqpZV9F#9eH6)B^}sQ`^dN*Yy)YqP z0a}NfpnEroU13KdTN>Hg`7k%)n?SDDD1%%M{gfXPwl=W@2L5>IT2V?*$X0|#LM?Vg z*y`@Ej}6fFbMVba%Pt461%?vhDM}$zdlZSio2=Iq#ZD-SbyuVFpqP+FUP7vMN!KK# z+jm`J<j63<gvBxpCrWfEtR?GH>u@JT+a2~ou+73>!upL6NAZ{NiNjZ<WP7$9XQ-Ri z+b(LQQ8Agc5hlAX(NHpHbo$~j!W2NHgcG6RLA{jxG1J?ssE4j%hp<t6A_P9nu0VMc z%cNK_oNU-zDHn!A-I>1SVQZuO)i0d&Qb<dmPDQv5<wGpTfl$o0$nb8o=(sy9j0X9( z%i6l+Q?yID%=S@+bZEGK(k*aF_k@t{cb`N$k$E8<RFg$q0KP*+LcMSg<hr@6i2?C` zTN(S)is#-@B1!%f(((C4m)C^Lk@M|}UI+ESYZDW%T=0j6$iy%bRSN4J)V&TFh4E1N zJ)-?mJvj2mO<Y>>o^cDr72boU!yWb=qg*i`{taOR`Lp7Xzb9PUDvV37Hz6L*4sMR& zJ25FSUJ);;d$)+h$=ML$QBmH5)uc#4M<3IZvNPckmD)bc@JULz$nO$vkr3`VTICsm zcjRck(Ip}vT!rU?LE&)^O@>QthoIeVdp~_4=sSv_i1*Fx>RES3h;eD*P>{eePj#Qc zbrn^&o$b?R5O6ZEAzJS>Bhbpaz`#P^C-l;Fdf<(TiC>)m&hMYQIcPzl_jK>Ocz<k7 zMKKVF#cyUux68nKTd2Tph)JMJzTYWTY){`a13Ms}C_klK->U{QF$rxrVKkIP=}EKn zHN*Nyl(*q~cT!@cqHTf1Q;T7Kc$57Dya`Cfn~E!CNVFawpiAvNQ}=!3a#xd>45-VF z^#hIFg925o=S9jEE0K2X2e6d=5Qc0zl|PGJ{xrQ}s|ATge5FOm$@th}nJQxvImB^W zPZ_>o_c^ko2~Z^kxY!3}N47{27@Drt6MqW4-FW0a^cZx)m=JXHvM8uRkpg_XP2%%~ zQIE>e13siAk|BPrR6)wL#P^g#fpG7@(GFRwR9C#eO{yVb#7$=Da=cI#+41d}lo+k% z-yu=;68<QhA|;L?LvK~2WH`tBL}$XBkkdd9J9ebNC1nXt<w)^fu}j^|6?aJ4nJ4Ii zLxcg6(z8T9gl{NC6?MBnN~l6nzGHepp2^_brqPuwkot5PyEoaZKmaQCIv%z9su<<? zH=CHV=zQhh$edfgdi@n}H|<xO-o1ou%+eKlV72burzggGWkZ7>D6tc`ZW*qgL4}H) zkfA0GRqdf-cU61_A9$k~z<)&76T$Lr)dP@f6SPJeBvDFS?-+Q8*ckcVy*4qjoO9Vl z!e5<+7qcsjDKYeN<&46IsV<kSjJHoJQ#*#~?C|K;q4;C3bS`JENIQSTR+!7%<#MJe zfu0?jVljybAnzZkCX^0k*YEa_-pKohbj-w6Y(>%z=Ilmu44*q;NJ=D)ZI6oKjL?1i znDGDG-g!q=b$pMWOHqm-)?mLF><z5gK|wDHiZvQFihzP55Q<_ni3w^Th?>MCCNT-= zCNahsYiwZeVhwi0hM<CCZ})xnoO2P4`M%$KYrQ|-THm`C%(-*U%$c*#{_NSaXU@5$ zE~8xV+DY5J7ORrkfecHK0P%BoqRH7jfa~ff4=rVDGUX0Ze~tvIEHafn&Z_zx^3YPP zdRzozQA(zH64YWQ!hw2@$%gw0llvK5PU1QaxBH~GZ7dSWK|mPO{hESWv{OXusZ=yy zX=y$JKBu(Q<d7vY%?|L|t81yJ`0NH`E@P=mq9Q<m6*z}Hbsa~Zytz}$MV`c+)j^&V zK%RRo@|0^*^2}B`#66J!AM#{JnE;>UBhQ^{cQ&$FrnKl0@)K1h-i^1+i*e+gt&Bf1 z8CW1!-qWp%GKk@|sAn;*WLZ%X3Dd%R5@gfDdkPE*P7-(6jVSe7;81LmxL%IQozNlL zx=ksV!#+?|#OI3WyaNpfeN#^;nIb?u(_GY{K)FZS1*yzDG?aHhGS3v?b%Y$bAKn~? zh8~ewy`7qdN`x;3Gl(ylhfL*24nn3!)j{MU(*nJWlt-pVG?{7<O(oMDb>TTQMPw?` z$Woai9mz+g*?;YLd-x_LQyD<vj8IX53OI^_2N(zf+%vhuF58Gf?iiL-^iu|W2F8aH zFV(Bpg-Z2U0MXHGRkK(XI;A`mU81_`esDWw#DnxDUU~w#67B1&yXD-i-F~PKZq!v3 zroPGqQ?83Vck4s&8Fv;3Z?D?AQaO;xD=+*N`X?kyut@bvK8*2gCC)Kl8@-~ZTa_MD z5i+I0`CJMz-Db%}ri7W)K|bt4rdzqtAcn%?Kx?MdUQDEF0KGj8U`GLF=nB0(CP5lT zZ=bcM#3^?>QwmtSKm$=N(bG&M>zjHg$cyq!Y8($hm%Q#X`ysA4cFBMbrrdSBZrxqi zst4{X&Z>IJuR`@owR17`#84RZ;G|RMt^fxDCNzRL88ckPwA&w_-eDVqY^A4*nI`iS z)kCI1+yxo+WaS}Kp7U07I=RRc*Om6tHD%>j4kC=o@x?*t7P^_E3)Vzy15r?VpS+6H zMMagkHdSQ-U6Ts+;yvflH5KS(O^Av19+3-8#arG<{Yppqx*6vgHyU}e#SW%cWNIsw zrbs>`MGn$*Q>G-&F)il1w)Y1=9i?ahem91|E1$`yAa|hRR|<A8KgYfAL~NPjRRSgU zT0}QR4~`#d@kq(0P3Wt5r1!`tw1~6n7~t@LXl)RNRHAM8{1O-saL=UKB0T#t9_ca> zT`*_nm8?pp`AP<Qw}fad;#8tUutNJ{q`>vrh(zi2w_3&q!6MR(|0GiTXGI#Ui<FSG z+z^_wSeL76cCjW>ZTOP!L|J^NE8JmZCi{q?F@k;&BvIIW_EteLWs;5d<pj7FBhr3M zy$%T7T`u(@O3I+m7GcwJ850q1m6)1kScEAlL`!8@MD6#2ya;Q^u!x~fwp=G6h8zMS zsvriM=*2zUYn)(-u$GRFa2k;e!yyAx{DB@^5)ZkQg<T-Tpb`$#4CgRrkEO|+P$_6G z`x%(;4YVPgBs(&dI0fMsD=7uaD(SFNB?Vl@0TM%$*=rf0%bX;T;UCI){0izxc%FSs z^gA$;R{W{i$vtx7WegEywYpbHzw`yp<C`?8$_SIuQ6NvM(w7(r7~zW2D2bq6B`$PA z)lPRR@eBs&%qy!1auroO7a+qiBzjSyeqZjIjPRO!sCLNI8I#arskF$31dSGpw&9eW zke_b7B17ge+9{RS#F^k*ET|l|hL$i~x}s{-^?)Pjm86XoExzp-6{swgrfz>hexK4D z4n+f)Ay<kth6@3Cx_TAIzztnPs8OWJ7=RAxs)-Snc=K7;oUokojK7Lh?vpE1U&@;t z3T4o+Mh0IDbiDQirO#<L%W-uhllx(U9EevUA%;D;!F4SX6=~*_4#bdVA<{f9gL8)Z z68MlP9(txr6OZ~KC*)CS_SXn>kjM#N0^N@WNSyi_#>!!zL_9>KD3wGc498_yi9jO| z1(%?8@`y`0=rS0Vp{MSY=VLV)X5rKm6P5BTyJrll3z1`S>uHfFD1yAGLZP${K@wL} zA&dxiA;|Lq1|E>$ydx!ENi<91Y!dlklv&7SqLK_TWnhm=N@S-7+NNd5m{ZQ0Pt;OI zFNApAw=oA)*W0~TOEvhGzz#Fxw;6Q$i962dlL7m6Yc+n{k55b&&mfe+m^SWY)Wzf9 zY7oy#5BYM&<aLHfs48%bL1v%>_VzR*S@-Suo|e&JlF4vg?kE?mhBDFxv3Op>LMqTm zz|w)6Az=*Vd&*#00*tChUlU~DSsWIU1~N}WFNQ1#1)s0TwN~Q5pw#nJh7i>#NrF!2 zov{{pG_ZDxIFN`S7GXMZ7+#(P9|H|?SWO8_muh1<hWmZe=X88Dsd<o`Uq<813vpaE zRyL@i^=TCiIc!p)N|OY9CGN(f_cF;RD;ypY>A}^t_Gg)ajG!2Cfx3*n6yxlo*Fnxq zGjOZUA;Nuu7#A;eZyyDiXg0auW~M>HuFPmyoXs#IABd0WlzPc?3IgEb%M<b-Oo6~e zgEcu^r3Wv>Gs4~!svsfZ>x%>_RiJ~>9Gb>B-Cl`~HUH{aK$L`sVGyB`oCHrKL`#OF z#CnjINI=RGpu1MCPx^w^Rh+#CNdTSxlbgY47*&C76^<YS*%oPhJIHSK5xt~EB>@h| zo5SyzydDR7G3q1uvx5a4GGlExD++jmRWtat)?x`*heqtz<iHk@B~icvq<2{6deP^s zJYv23iJu3G`+dvgb;4f;KOB5hmRd25>Tsk_`rrmu2(DPv$1TwCKw{wY!A(|-%R*SC zNmxXQ2wrwkG8JKR>p8F(g-~)O>W>h_&6LP5Khl(@mrftaYe4~=K1-q<xSA+2Qo4wv z$(D+MC=p4Xvq=P9qO1;k3bBXRknmA5P}gc0+n0q6iG>vfaveytPx?&n!SRmaqKGM2 zMMVf^Q?@XvGMHDQrF<1;odgZ8))?qj!qjh&*Y+UyW6Wm<$d5mrA<iyN6B;Qi1_;>U z(dQyvwp2e(KGJ2>&VUc;GMnSDMMgi;g>z##Y$xUy&tCPBg)%CVNSwpgKC*^|MS6@3 z{TOVstbk`8WugUXEmQ(m;adr;pOFis2NJDCxP&tTyohOOk|oM{y??rgnp?XkeK{j$ zc3vkIa$6?I7`6uygHm}_5Tu$kD<T`(i^`#0GBuH;f`3?h^cSsFVfWjF-J7$7hPPmG zm+8<S3HK^mSL8%kv%@;a36rJOXvRYhl6o?zhl9(fZV7adc(%NSC`Icqm@<=~I00W` zd4`AbA`$#d6=V`Wvrl^Sx)S|l#I6FM>?KO4=5|qGiO4Zg%=DcEK`DG!hU{KvO_)n@ zQ<<BF{~bg%+z*txoM9e~nH~!?oK?XeZNjWPN~)%OF2Vn0_~#qbXUu;&TtXf;=zv@Y z>dFqJR8*;7x<@TKFly4uA-2mEmCuCiw3$ZkD0+ke!1S$G4?HMAO6c=65!2=jnu3_8 zl<5nJ#!u(|rfS`g-XWFHdEjU0of7w2bxHy925xlfJUu(1xe`KnG8ZpJOE$LLwfUVu z!;=7abeAV|g1inBPzo~SV1J2R*l4kO-32unaJa<_eUS^gMY*8#1-c8G<C{vjmHvVP znc{l7X9u`HF5`IO+Y>dtTAA}9sreFybY%gpNRP`XuR^ES#qZ<})?ofeR#(yGX@bo_ zuu8cRYa5ZYtB7)qyv9kUfhBM$@mUN3Tarfy!G%j6h5#w(*@(8Zm-Lnubkf;gSHjH@ z=SNKIrJ7n-i(n!CI&KroDkPuq9kc8EWrA0A!zI2OXEl%eP|UyKiN6?cPRV+Vn<g)e zLy^gyLyIaSd$oW>PGpUvs2aANU!J2z3<5>KPVet!MaFjWt8gY+IVuZ0z0L%Q7zAe3 zLL^p*tAPU3ECS6ejAZ*(>aie)Tm6{v5<{>v$Z*V$Apr`bJsHjGCGf(r3Ahd{j7C)$ zl486VE-Nd&5Jf;8aYdQE@n|L{cLoL<LPgGuT+Ua-a8weHOy8wCJ#|lfR7XbiIf#>p zZWC|Oiqq0^Ow=;B$oc57Fu>A)Lo)fwNQrekwdInOWi7<c(lTk17uAR($yIXI%=d6# zuA2}eFDm&af77?bNdw#uK~{hlYu9cB84lw3IQff>I*vQc+vTfz^1Bbra;l}E=jsN^ zOx$s-EPXC6ff`0JN$aqa{a9Q)Y8pnsp1=!dC*sVo9wsToux)D)4gw;V_ysdf_eEjx z>HDQucv<?nY(H9PxFJSNh4;0EO*mNGSnSRvEH7csk|0fgGq`33r6cJcS&cvw=?wBK zsc_>xiI@;s)$*!v;y_urlS{lLm){g18(B!egfBvRfGic0duU=2r|MN?tUuj@cn=3l zcY_|Y8bG=m^f({+(!&rbLJ?U=EPYS$#=hffE=B@a1TkBvFx`#;S!V~jvxtvvs$$JV z?Kb}ON_1c{l_D%$lXbzkvS;bhXqkvqdNkF1R@33V>_fctmyQHp=|I)g!X5DrH7G=3 zpICY`(L*Il#uR9nbadh|WT1dDFu^v7X~XF1#*Y!dSXptrmFYzb*Q=ug3~IV5Q*`#8 z=0IT^D0L0LQ?!%@VIr<+yRg0DJt><j^LJ`;frjz2S<DdXdbJ$G1L+}@mA&R94s^D_ zqYkJBkRpD2H44G`l{q0)R_0iI86gl17sHE_RI)KPtuHI^=w%)%H}(dheJAlmMOm4Y zN$=vRR(8qirn&*LBoI9oiC%G5-hkv+VNQe<VPae{xk21Z6ct4ZrldHs60h2$JX+Rw zmf+p`5&v>H#h{2s0nl6-w_tru>CM|{QGEO^Vg=l~e5B1QOIY}<hxfH>kje@5;E`Wt zxSxwzaFZ-TUpXS*6bfPwP$sdu1aHN@X;xSAG^<-I!G5BA*AXwhOs?u3c2W{e4U@qI zEs)*?FM<99ebJ&)7(p$cC?Ab_LVW~Ma>P^j;$n%F-lr%9)_yl2Y6lZBL9BCOtV1}- zu$$LUx$=`nfwKOi0P!Bjm=L88Frc=w*72~m2QzSi<w5z?wIDv>FLop3n}J>@)CzqH zZ8kX+sNI`Q?u7YSm&AY=f43wcy=^UG`@|r!Wg^NXg5gaVvPeNNMbh%y7~I5sMqUVA z=BB`bJI*mCzG4+ryhPTX=Sb=7AOjtzlI(m<vS`OSB&$kgUBMpgQyOy)dq5~o&ql7; zdbPA?46!p=zpjKUAq!;7&C_LzJ&*`$K5Cbx<s(~UDMKbrw!3)-fpwmNUJsOPv;V4* z{~-&#h!Ly!`C^vu$<NmE+?M=0C)xBUEdNWdjmIc4BkLdsYUcbhPa=;ypsR9zFykUo z8?30<+1*%G79GkX1KbtlO=$w}5?i@R!O9G8gILIeJ<cj9&&{l%<Vuj$WH>1CQSE_6 z3DxHz)I)l}KTyJ&N)G5O-Az6^yE!P`wx*P}S1W_^aK9v;DqUegCAF%RfsTszvtJBQ z1a%@_u9r0?EOwQFPyr%76l9=wY!fZpEh43Yaso~6v(Z#EOOK`o$a4kR(jjK$m6zxe zd%U>v`#ir8luBgPqugi52yqZi4HCH?Ae8FuD<p5GJL70h?98G=dkius!`c%5M_B_L zo(cLhI-osyNR=(lAU8(cR<+^I5TXFe{fWVg+VcRWJfV<YRS9Jo^|5|Q#3nk*Q~<x1 zsJe^uE}Rb8aw@UM^gnP*B>}9(#gr`8ECSKT{7Ss9%39)t7=#QO!jOUJ%U};9ZLT7N zEhPYSLCYobFBUUa9*+?23miF7O#~$&Qs(}|C!oKz#I0pa;*cpF5OzW9!MH{_*dkSw zUk3NbxeVVmv)Z{ZUA;#t;zwQFiKpHZmywyQ65<3zm#k%CKoMfyCw-(d!%+<wx;0r_ zg6b-ZfMqDCE|W5{_*P=9XmF-1I-ytO+SaIIJGsN^7+eBk*EkGY`8~=22W@=DU{nh> zf&Mj?&OHsaHde6YF^Z76l{}6Ll=VJWaSC{-O4bK@UF?@0)|H-}cf5#PGtn9ZP)S8A zW$FVVizbm*g>F_0-8vIiRDBtPc<IXuf(%R*5XU5<c@<+DB~i8M9{Dl?S5bZ<TH4-x ztO5(4QuDNYZooOVP+95CSX9<BHe-S-)-h16{S5R%Q1lseQ(n0EC@+KD>;OZ)i1Iqm z_AmxSA?QP|(~#=;NqAM{AyavJ<p%2$#i?aZg~gKcAQOJ9gku;a-ITAy5!`WrFV>Jz zsEV>S5ob~YClak*42Zt+i(U*At}`a%M>ZIUD``ugjo#wcsc{XHL=tG#it10ctYJ4E zt_*u|eiI~;uOur{hCD<mCaNMgL>I4wdS%i9m-`%7aNSYq6Tw%6!6HnUZH|QTZA8el z8sXujN+mUAfV+mv7Z);1WX#+ZH(KpvMe0=ot3eLL`{%T&p7nhV8R0UwCQKAsGm27E z1NUUsO8QJ9ZQ>3Se9a1SAo_@hBmwL~XCB}C_oypz1?h?C1{^S3^nzPhtHGodVE{eY zDw0)U8B8C&bC$n6q`)LAb13*WVjegN_Ly4^o4Gh(vZWN8Nka5BUlcdUfmusp?kcF7 z-7kG)3#<MFSNvtbj7uboD<}h*gv``<!JBJgG?9x$QB8@Y5e_1vs9XSCMD<;4ED<pW ztU<8^5ygMS4GWU$39ibGz&VyRw<z9DSuJHB)d3SJE8B?$?F*6t60R?i8axlLTLJDn zMXm<ca(1z0p|QFoLNf+>JFW^7BTLz}E2Z<2E#|qe(L^LI{uXzK*Nm{(3tx!Pwknk! z<i3}?$QoF@4`#188e_k`zj)?arYNKc$roE_xJRRj&ht(Yo*N(>fVy7B%s!DPK-d** zawwALA=sqFxRFSY#XafGyGfQ>zRU$(#wU2Bo;xVQCs0SD*OzJXU7m%~c3=QhaKk_# z@^Ve0bOb9jdqg~OQRl!ZrbaSS$X7KHn<;V<Q8GTOVRGR47b?1HlIPeYDpp>el5n`j zQ!t_k?7-(2sixQNqMqKoEa4bg$4AJ-GVRBf1V?aSi=3%Z%O@7BLV5CH2RX5<6-Ih8 zqYTNkk9$IZa;q%6=WQ5RE(e~VkQLaVn&L;`n23yw@mTD+LVGJ5gMt8uvzAxRFm6EB z7cs3YMR8E;%I*cR;0?v|VzKVUib3gZ>zUGOdj#@xWXgh6;?XM^9EizO<5xMDBb|xQ z$g*dQ6>XOAH%q!@brXxgi9az+BAQKPzuU_7%i4-0i&e0ZV2CWCCmbV7sL?;xK5mga zJ71z>MBr3Bn?<+S;Jqv*2yoxZA`KqG2{2rhI3{xgG|T-7iz#rKt!3n)d|#Yawv<67 zABmR8z+b|KGAqC?W(6ePpReK|+f8T`qbzyoGC><5x-!U+hXb^+6)`<RPMZFS0QrWc z;QX>GQi;u#*r4K@JPhU;31X)xH%!F%y!b?PB0?FGX-1(`fJ%A<C7Oxoh=T>mva?Hw zZcfKPE7a~NqD!G85LVQa6xW?(C^rKQ5&N$WuBPt!F{CGV0m({qm^g_DkqIUqIgvFf zB|MiW66IMBWQj<wu%<wUSGdik^8##@&I{mQlCOlQ<^{wz=Q#>Sc2a<KXSdb7fQYqN zJ&3TsuRL8Q7r0P$2y{ON^~8c$O6hrYQ9jh=C?ZCmdG-JqN--vTl_2MfAn~EVw^W## z1`>OvGgF6_>Y#{5%+Pg0r_Gz;-iYd{khRQ7$n-#`KELGj6G_fjO1MW9E<;l|U?Bu0 zkElq*3T@mY@<Y#*^tQ@M0e2K}Yk&dCU6l*RZ(tn6)65dtR}%s(7a^N-L9@Pqezy`^ z9=gXaVm1tF8747IMg&rh_4E6f6o4_VCB?*Zv<}+CVRCKE3*@OMNmUoFX`d1q_E17P zng+V*8n{r`K!&j`rF4o8uFUh{z{2$N1Zzi?k)JRu0?_2A&@C&!ncn?(FB&28Tlf!% zOXCU>^^lU)ED#@7=IaO(uUIUZ<7f1S1i5(DNMI7_Sr9V;Ts`m~Ac6mUO^OmGA<#l3 z27)E<&n^Q0`E+Zl0ABl175EqN&BwR2JQpaJmRYKNxjaiG!H9oRKBWe_`k{FUu$u^N zjj~5l(|lc&5|>ub!4y#yeR2^!u~<LR$!E2XmE2sFu6>%VyH-w~J1B{186gtPK!O}3 zr(i5E(!$W<Jn7npCt}e)vG(Yl`y-K{rhW9|1+vN!?NcKMmX+`jy~9x%94ddOz&X(2 zFvA?=#xADm*>wVz7UJ%zK928)7`5O;GV#jQi3@qGzdV&FU5F26HAwo@>$o*M!Xo{M z<cc5sNSeHmZ0S6R>EF_JiH%__PbW;5f=DE0ml<ThT1puXM{sfoN=gSJGt1IzOI;>* z(u?p!49_XcI_4mvymGS&5!f8B>+jA>5D$^TjYQ?uJ^jZda|wP@H8l|`#~=eZK2O`R zJmNGlFIp%=5$QH~YSo=*W46gcF_~LNObnM9Ed1li1fmMEh~x^5+rv;qCcGJyYXMSR zL{?1UB_h-e?hvlKbe;?a@EW!Gc~KljLHNr7hAZM7EB&Jl3}((~jvV3>7fz&*f&OvH zi0+KUIP!xGx75UqlBp&vv=5y_kPHEsN+}~t?h9S8%!GI}(?zGGwMRW(5c)$BXVvHB zHQC5C2wlS-@(~*|v4~B+XyRh+d!f8>3&oblubAK2rcJ|(n`kJ&!9?xE>l06qQc!>n z;c!{j+z?J7j=}X>COpI|XZRzJB2X@yJB%;r$8~1PLMGh}6h&fc1n*CIkM?v`@St@U zYFdmwS3RC)4|(O4HzUCyye$f5a$)qpMfiaAM4rVATNxSRSE$*~A|@!QOpj{v4d12E zk$qLDljqkEyShPzbQ2QwLmo1Y5TU7jZ2`T~Ovy)RC2H=7C^LG-UGysS-B2}Y=S)pY z0}MRyuty%^W*os(2kuyU^Ui*_I5Pdt+&Ir5FnnPto`?cna$xq2$L!EgeLgP0fvCDH z4PyXUVv;WhIANf}4)MxVp*`xMOGJ&6dA^1}YYiNDpJEp^OKA*DYm4tz#CsN%tW<1W z=^5dMBGeA|g4Ow!oa<0q#KauK5O!c!E>#o*n4^*TL{7oi6b`B)Vq>0?VFGiHtciXZ zXIc01z`9(3dg?*B$2fPmPue~)Z#+E~fTyZfbSg_g7c0*5Vc!k*);s0|@pOSay@AxO z^GFr8k@$aG3^!ND;GOvaM$0Iln##eQtE--q7H5dw_Nk`_{FfZHr6Eja%Aj6N6k$H` z_3-W0gP(YOy#AuC5>;d6tnp3@&Z}HIdS*nVTy4kzVg_{Tfk#oR#>%29Sp}wb@#x20 zMP}L@A_KLeN@Dlsqnju%zCZdVix;lbbI~o*6N>9fuV7X~;)E6`sPawJ?oyu^Z<vEQ zQtLx8U21d@z|6hK5buqFG>4q`<>fgW=VK}Yng8};;n6u+hml&si@luH&s@rKXl-pQ z4vW6zgDtW})2`4wM#nsn`T`FRIGOH{r&_f~Oes>s@|bC$#9Vl_v_DhQ;@O=dtbo8& z1cyseUK_`|0EY0uY=RolP=Z{<bPZi&fFq(cTtfsRG~AbKl{7ghp*fsnRL<R%g+{zK zq7H8EV^#)HxSRr0IpRoM<~p=|Ck;%xoPFFe2Dc}J7$wrPc|G*qR2UWfy<&3<Yj&8y zW61^Ph^H|mILmB6dY3B70y3_UNG3vK2?;)ma_ltkP3)UEcErV>uJlmRLKb+Gu*^fQ zdzmVAQ`T$COHuY|VmQir4+i60vA10IGR`gwaR}aU)finR3<mo$)24LJ8y{4&f83)| zk@;@8``!JGBCW+raHnMx2UZsxk`|jLGv!R<V%9J%hk1WWkU)i{IUVGV^(B0A7`=64 z$_&ec|3!EfyMzIiSunQli5yi7Q67bt9N8xeWyB~t&}`f_ud^~$Ktzi%u{?6YE2hMO z^OaH9ix+Q*11AeO#Gxa=a1y^w1jYbgdLr@N)T5Bn`>nwTWbuZCFW4t0oW5MRBtpQ@ z5DBi~aS4B3P6wGHJsIbm1PBCRqsi+6DtFp<-OZ%ex2s32c;bf8nQTf=p(z>zyCPj) zr?59Nl$R?<&*V)htkW`_Vr@ZH)xAFuA53Ou@xyRwyjX(g(M%Q&(O==IsKC)pNT-nn zPV_0v&=N&rrWmPXz~vPxsYE-f))vn}Jf-vW0P;?iOL!Eto*N;(C#H^`h1<l#f(Dkz z@R%3Z#s0%K)f^Ajx8io#*gei>!+np9^CLEJA<%`?YFB03aMaJH#R;}j?Q-P5vuyjN zw%9>p)9#@B?|MM8Z0z=`#CaD<YP;3)zw1iLO0`?A66fDZc-x@7Dyz)f220<kHS12r zx!LSXvm48SzC%r+$K<ysd^h-zIRqgNA}(PlPA&0GzR*3@t}6%mH@RryH(uWTh9ms> z?R5vgj)fJ|5A!YgVfVM(soGCoV^)-0=)(`1`{W0#;B~|gyT5&P*2%ZVm_iRHKd=u- zpX1T^n^3FN?6_!tiO?#57r<-ZnLe`v*#x*vf8E}ceCeL4$&GYdM^lr1$+`EE@7c%I zA@w@M>()2h6D4xC>PXPOi%Z;f?Yx$2EYW{2DA_LkKz%F2l|lM@6O;4!#pIK;m6!V- zuDEK5)naSklm+VK30qP(S6uB^?a8=Qze-OESE}pa$6@S)LT?A8YYmK>!cUgV#Rag; zKw8WT#&{g18chy#rOClGIgci1o0{zKGvw<{t|?94mAXGU%RVs8wnIl|-ECXP70G*8 zH>paR6!N5ZzVT19nRg%~tBUj1%L~!8Us0SvYps0mY_m=D;WhjT`=r%;ecJAIG@|0_ zKxufO>yyGIw9r>?Uh3vFziN-To<~>msIkl*%Fymdlz4PSe)?B`|KuP-vYYI=FjMm7 zduy#^0}GLS)z#GGzG;VD$NlxCHDzCz%G!0W%y+W#$>o51`T?w%=7(PJeRkM6lQsU5 z!-O4n<=L9Gbo{y<b_TZMN}{{$uzR?#zE!8&{eReDcbl!Z2f7T{VOPY~oCv!wcGz8E z>(}GS^>)~uXRF4(+!6Wme%my=6?{$Wx}5*1o73CM%ebww3hFo<ORu_3w)tJh)Eho2 z2_7~ZllV%&RF*zv<-7T$O!p}7mtyN7Sy@-?Qvy9$t#*)Iu6%X#OY!qCkY}r2eNkYa zGT5V>Oif+k`i~{w>%cC%DfSz^sgsONV+_7l`D^9nhN+h~+LM{TgfA6W*%@hAicQ7U zcGYF0ry<SGiH)p$`;?y6X?Etll4-+nkJOee2i{Oyc4>B(*iZ+SOS3znGRt$|-)hUA z1NW*ehcvq^%Ylw*b}Ln;69+C=TNOC)C$;6AX1B<4pi7$Fe3e;|1Jl)(D+j)-wkoCB zO|cwUIn8dO%B;eH5o)U{2aZx()za(+S`Mt9X4gw)zQln&)s`CvdaJD(X?86v2i8op zb61(QIIynTs?C8_)K;A|JA2E4b<^w~?Gf?RW6BIyjo-G>f9*W69KYV=I$}$HMBAtD z2jw;f$aLzVpjnyRv&0UjjyEg5w^Z)WtV4;;Yvh%R%#Pl@Vd4cSsr(?BNjA4L8K*XG z^6ObMIK(QTWAT*ufQlP3P07XG<(D+JBur1u`pZXl9nLj{?ld*o&3O)AVT9<gGvII@ z6C3(>sq641d8^276F&qYD^QB%SI(HVCnS0|FQDVWIG(}dM;|Wp8{P5#d{6W-rT5~s z%UkAq9nyaHOe$eQ=<W?N#V*jEIA_@z(D8o7_l5$f*CBN=mft~>YvK2X)cX)q&0@0y z(;F=9ZNzA&w~!Q)S-W*K5Npl*-A!4KZSrGUqp6q>qt{8x`&H#xvD7<$)L^c9iXU&` zrO<_m1qj;SVoCXRm@>alT(SkpN_`x`=083LD_&9lA3kzF<Ots9Y$d?B@@M4Fhrb#8 z)#9%`fB*Km^;7Tw-|#_iz4ZN-nvGujq|>hx_jLZ!|3<wB!+u?I-sYpeo)3l?Cr`Tb z+uq3^q*w<wxP9^ONBx`b`FmSCzZnh3em8IBAFl?S`K#9W1_dq){hwr>8`Ub&dP`t& z<#&30`d#|r``ahZ8-3a4!$lugoAgHErh&sxe7rHa#gPQ}!^3hTn*{9I={I+C>V(9( zQ<H8D>o)PTwXdIUbguuZjVZsqRBT)_ZrA=!E8aZY$1Sv`*Si-7v>Eg1ptt?UhE2)+ zW8%`8>)y$z{lvc6g8Qb3VX^*?Ys@<n_1=PM_f`*#Km78qeXaB2>dkxQ{E%Opjw@_j ze)-DHHm$Zz`+Rl>`yUQBe($E|rXQBSY%}36>+0{0ymp{=v-hX2`0%IlH;YRm^S<eK z;?}-!yNyT7wH;gU;Ezw<-`aA}mu*XiWPJPnxz=`f3KPFizS_}gOwlhsuYX<cwP@D? z8{FT&-|cj{uAg+XTYCD^hF(E~(^r15b(G!f<&MPI23IqWS@_VS#)d1O9`otBH}&{e zQ^x1_*sv@$Ev0;o5#E<~UOzc?x?}HedQ`kJeP-QV_v9YUn4Rp<?3$@{rPw8PUybV* z<zjyLc$W9jic62y?b@PaqxKb#hdGY?(LG|s;DcYZZ`sMiar_?@Ub$THqwAj>TJgmP zU)9Ro)_=w+<F_GG`bNH5xn}j+AN}Q+m(lcMX8qirU245lr?P{ylS|r;-)^p2ytYN% zpLbThQDfFCiRA--|LpX->u-;F{GFlU*LUM?uOB(C^ESVSZ?zrKv&rPNm$#qVbL~;Y zstY$l*La=U{dedr*B+nN_o=eIl5u7qk2hzn>w53d{nnM1Hu+}Kj;~tvt+U*-<kake zSDmxYXHWUFdQ`L6wV(aG!1SQfm9YA~AI;gixVU@Gj5nL-3~e*NsD41d9q)M`%sRgN z+b465IJIAR`<(+nzHz4U53A=kJn`G6@4I*U@<Q{Z51oTY@BL!JTfN2(POq~0PR^SA z`5o`R)^f}5x8EH#W8>G^A5D)u+T!P!29^Iju;jDOJKf&=$#qd^bbjY`(@r)_a@aTA z?N;>Xs|{ECf4(^R<LK~9=1Xt=vi^X*d$s&aMVG%g{#Q)<{e8Z6I8v}|`mrY8FaO=E z`^#QUe^}tT{o8Sw?fR|nknryAA0N%nUY7e)PPI0+3;W!-dg89{zF?QPKe*HCrJ!T! zlZ%!G_53Ah@ZL{s&t5pV^88m5QfdV@ueT;Ee8AhiUMsNua!$KZhW8TUA2|88d^o<& ztACz6H1I>$p>3`l>s@8i-yw58|E9tl9qv_~JG@Gl)WV+|UEd$FtKI6_7q6Y`{YRHK z4xJso=w^KPAyxNJb=%QlQ~ce11%n>{GGcVsn5t*}PR>sHz2u$U5nH>h^=RAN`#Yb} zo9k?etDe`O!ul=&X^ovf_BAgyyxy_GpJ(h>Tv(JdG;4m?o|z%jTCa*d8Z|P(wC0r_ z+2DT*{C&ayCGc+q{=b6%m*D>Z{Lh2GC-_eW|GnUE4gMFwzbW{)1OKt${|EU01^xx# z{{;M7fqx+Q_X7XJ;6D%iKLr0t;6D)jH-dix_~(NEF7V$B{&T^982GOR|8wA<0{%wu z-w*z0!M`T>4*>r`;2#G56T$x-@V5tl6Zrds{~7R~2LAEj-xvJrf&UQjF9iRU;J*$0 zJAi*<@ZSXfHsD_!{11TtRPZkk{*mB+0{rd3zb*Lx2>va>zXbf>2md?ZpA7zE!2fmd zj|P8t@IMXy-N646_zwpEt>9k{{DZ-NA^2|qe;@Ea4*vPzp9=mpz<($BPY3@V;6GFN z2mcx1-wgaKf&Z)E?*jg_z<(+Dw*dc&;6D=lM}U8O@OK3NSHS-|_<sTZnc#m4{HK6_ zW$^z9{4>D6KKR!He+TeS1OHXvUl;sufPW(Re+K?<gTDd%<G_C$_&)^yp5Xs7_+JD6 z3*hes{-NOiDfn*(|32Wq4*c(fe-rTk3jCLY|7`Hj0{=h3KNkEKfd3Wne+2%;;QuE0 zw*mhE@b?D)-Qa%&{BMK*8{oeh{C@-gPT-#e{-eSFE$~kV{~Yk|2>x5Ze-!v<ga1+R zZvg&Fz~2r07lD6g@NWqI!@>V^@b3@)AA`Rc{MUnjHSoU-{xRVHHTW+B|L?)SJNW+q z{@;RsKk$DS{O5!JPvCD0{#U_&ANYR&{z2eh1pdE(|0m#o5d0^Ae{=8;2mjZ=e-8M+ z2mVgrKOX!~g1;;H9|Qlt!T%fZzX$$R!2f6P4*~z$;NKhk4}t$p@UIH~JHY=g_&)~! zuHf$n{=b8N1o(S^|99YD2mJHEzYF*~ga2aiuK@llz<((C?*aeT;2#D4Yry{}@DB(7 z@4^2y@Sh0&{@_0h{B6Mh0r*b>|H<GV2>ySA{~qx71OM;9|5fm>1^zDJp9%hn;9m^> zpMw8=@E;BSi@^U4@E;ET$>8q}{*mCn6Z})be=7KQ1OL~-zd!i@2L4OHzZ3ZP0e>&> zZv*~sgZ~upUkd&i;NJ}VBf$SL_(y^NJ@7va{?_0>5Bz@x|Hk0I8T_Y#zdiWB2mU{R z{{--V7yN63{|fNG3I2KDe+&FKg8x|Xe**r4z<&t%p9B9w@V^TFMd1H6_`8Dt``}*= z{O!Ph1Nf(d|0wW30{+#&{~`Ea0so%h{}uT60RJ@b9|8W?!QT=5D}sMr;UD~Gga0+~ zj|KlY@Hd0MH~1d~|Bm2)9Q=O-|H0tj68y)5|7Gz11pGe$|83xJ1pmI^UlaWQ0{^Dq zp9}skfxk2O?*RYB;QurD*8u<W;C~wY$AEuB@V^cIox%St@NWYC+rj@4_}>8kQ{X=f z{Of~%CGhtE|E}QQ8vMTj|5o7d3H}4Y|2+6t2miI;Zvy`?@Sg+z-NC;(_|FIbe&Bx) z{J#Z%C-8p<{Lg^@T=3rn{$GOshv2^#{Ck0a74TmJ{&&IuckrJ9{vUyV3-GTD{-1&W zo8TV`{_DU$3H;r_e>M1j4*t>Le+m2#fPX&te*ymO!QTP=r-T1;@P8Tn7l8jb@Lv!9 zyTLyj{Byv6A^4vF|6uUH1OCUre;N1(fxj*IuLS=T@UI8{1Hiuk{M&(l0{Huae;x2Y z1pY(8zc=`YfPV$>uL}NMz`qgr?*jje;Qt5sp9TMT@ZS&q9l(Dd`2Pa_G2nj^{7b-p zEBLnse;@GQ0{#uaKLGqc27d$i{|WvVz&{K8XM+DK@E-~OuYi9r_zwdAE#UtN`0oM# z8{q#d_<sccL%{zI_<sQY4Z!~q`2P+5Gr)fy_y>Uhc<^5c{^!8o8vHAR|99ZO9sDnY z|Ht582>vI)zXkXo2LC4D?+5-9z&{E6CxZWJ@LvV~FM<C!@LvJ`Zs7ke_>Td9fAG%* z|C!)l8~hi5|1j{c0silS|7!4m8T|9W{}u3W3jXE6-v<0Y2mc?y|0eh^2mimoe<b)f z1OE@fzZm?#0snpAe-!-df&cs9|0VcmfPZW7PXzyt;QtHwmjnL+;C~<dyMq5x@b3lw zE5Y9m{A0l14E`SA|0($I1^+4FzXAMHz~3AEPlA7M@V^57yM%x6PX>Pz_%8wfe&GKQ z{D*>nUGQ%N{$b$n4*mzhzZ3ZX0sa-i{}A|p1^)fP|6A~n1pn&b?+E@E!M`W?*8zVg z@c#|`*Mk2}@Sg?#f#AOm{2zn=*WkY%{I`LBTkxL@{-?k{0{lb4e>eEMg1-;=8^Qlg z@V^KCmB4=z`1b|>67atY{@LIk1^%Cb{{!%^5B^)hzb5$SfPWGA?*RWS@P7jS?ZN*5 z_%{ashT#7__+J2jXYl_5{Kta-X7JAk|JT6(Hu!G@|LNfWGx+}r{++@9C-9F3|7qaw z0RFeY-vIuL!9N`Q-vWPo@V^B9$H9L;_#XlPW8nWg_<MoBC-`TAe+TgY5&V~de>L#$ z1O9ix-v#_zfqy#q2Z8@!@IMRw=fS@g_^$!~x53{Q{6~R*JovW+|5w3(Ao#Zd|0>`= z2mIdv|GD6w3jWu@za98r1OG1IKOFqKga1_U-vs^z;6DQVtAhV*@P7yVyMcdm@E;BS zao}G8{L{eS7yMrb|1;pf2>j=Re+c-;f`0<|_Za9f;izZ(AG|mDeD~EmC4WDhe!k<o zU$ip6*LH4CzpZDk>=`_5LF*qkzufhD;Kxoq9&G7n-}0MrjgNaQpFHB*fJtcw8^qna z6E-_yVf7>5kK8*deAS0hv8Le1*VdkRty-^FeoFsx=KP#rt>&yh?0EOWFuOH>`j^XY zUU%N^?iH=Ge&1kYsPg{AP9IeA?LYoh!KXJ5>@Qw%DgKis3H2}k)^1kb{SNuH6VFEX zzESh_I!(5v#;hLe@{8NXT91Zy>%0BXRO9C-GoK{wd-Ybm(~H}rl;7d?M`hRHjb>aO zJ!Zh$Ki62<$GOGDH@^O8*P^0~+|EHuo8Dfwvv6IP<UyZ>ywuG0t-q!mYj`fQYUmL6 z3U7vn{;+-e^qKdjO!@5kv}x&gZr*e@Pn@{nSWL_xXSQt{{DG%u@EC)^#(MntpZ7Ow z_U6zhPikEL`|q(UfBp4R(B#RVU){aif8M+AepzqVE}zsl-+b@Eg9p`$h7T`X-n;j% zxy8j!4}bgZs_&5_<Ny5j+sC7S|GmI}(V|T+fB*g6L2+@PT*%BE@x|)Zn-d>Du6^#K zkCt|A*l<E%`}VI!b?@%`*4?|-xA*StpWL?X$cP_)xHaJ7#kL1;+_1m@`s*L%<>bWw z>g6?PY_)3Lo7&n|u-~y`;Kwh&9Nufome;;?b8GDR$tT}*u(PY^`1$86Ta_>G;8MAA zdyg42zNnR#*Y#{+VZ(im8b$V7zI@-?iHTnqI5^a*oSghso#xFGhSjXuvTdzeE!sy% zFF*C_tJha#WIP-(aNwQqJ9iG6eC$}r>OcS7|7MdW(*~YD-|cj(R<FM{bLOX21`WFX z<H3UwYsGe5yVg9*XdL77=uy4%fBdm?>WC57R!x|&@yMP%z0x;sJU+f-$G&lW`kYx1 z7<gpiuwnVj4jkw+D?5AQx}u_{+kW}wV*iH^t6%HcbKC5opuazF(`LxHS+f>Y^7lXR z{{8!|SFEke*}nbuJ5Pdxi!-`(@k{#p>%ST-UVOgqfB_}ne)rvzQ9eGIGv>{E-|oW? zf9w9`m+RfVy-l&VZ`<Bjzy56Ks#RH2PMk>m-Q7L3hpVfn(QK}Hv82T1@u5SLHtpLN z_)diiRo$voY1i=T)mB?Zk3P5Y(@(!`=jXRK<)xQ8w%oe)m5+Y<>E@8P-g@^@*RH+a z2n$=XbJVEIf7PhbtaW_+$Ct*8$;f=?orN{}_dod6sZ(!%SHJ!^zot#!8a#jgubop; zlAU_>+CAs`^(H&ktT{ZfYSk`{&zzb1(`&Egt#@*&Q~l)0$-m|1c0Sp<_0X_Ro%$s> zI@YZk5ODIta^)N=cz8saMvlC&X7lDzUmrdky<y3cqMl>N{<!sn4;FX)_~Y-rE?nqv zc<R)&o0l)QKDu*f&$JF5hDT4DwE9GP`W(a2qhWva>vw3;&p+n|L`AL089MaAl3TaR zmlPB<I1nEG`|da1n0ssK(ks2~?cH4e`s-*+Qc_BBg9b5uTDFWES-ZA}_m4l`cxA<k z9r4?@5BM}c|K&ZWPf!0QAz@K|y?XB5`u08j$%YN5LekP^JHP+_tctO*^K-j(>oI-h z%B`=D8~4jzlPPDujg4KoJ9i9sU0f>H4hi{gbGvq<C%p2?{iSQyW=GDR{lQCFS;Ic7 zQ>Rg<ufAH_=-fH)<M-}WDO|Yl&t{b>wW%K&x$e;M<FP-_ots*I!GfRKeDTGq7Io{^ z@ABSzA6C0^#kgz#{($#}3^D)GxN%bO*|Tr_FlWv@n{U3kH#{|UhJ&;7OEoubIuU;9 zlGooodTgH=5wRxQ*LTaipMAEhNsAU!UaeTMQr%_C_DmZ*_|f8Z>yAyTUcFOu@DBz5 z>EJ&F{HKBcP4J%x{xRUc4g5X9-vIvO!M_>!KLP*0!T(qApA7!H!T(+G-v$0}g8u{X z9}fP#!M_;%e*^y`;QuZ7{|^3(!2f&jj|2Zq@Lvu7kHP;V@NWqI?ZLl0_}>Npz2M&# z{C@!di{O6){9gzE9Psx7|7zfG3;sL6|7Gys0{(8`{|Wfpf&b^=UmpA`gZ~Wh&jbHL z@NWeE%fUYp{2jnQ8T^}re@*bO1^&_C|0?)rfd4@7?+pIO!2eJ1Zvy`3!M_#w&jkNL z;D1o@-#qIY_#46h5%~WB{v*JD0{HI%|Bc|^5&Zjre<1h|1OEfypAG&+;QtHwKLr1t z;2#A3ZNPsP`1^zZeekyi|F^+E82r0{|JUHZ82kr-|99Z;1OD^C|3mQq68ycv|2Fuq z2me*ze**m7!QU19&EQ`G{)fPSANW@Q|0>{r75qno|EJ*Z2mUXC|5ot-3H;vz|E}O4 z2L7YKzXtfngZ~)te+T^gga0Y;uMhrB!GAvZr+|Mi@V^fJYrwxM_@4p)*TCNi{7-^^ zF8H?w|4!iV2>t=!Uk>~|z<(t8ZwCLv;J*a?$AbR{;QulBUjYB9;C~tXcY=Qh@Sg<! z>EM49{QH6b&)^>g{zJk47Wfx{e>nKR0sc$D-yZz`0{<lNZvg%+!M`^6{|Npoz<)dV z=Y#)g@J|5$df?v|{5ODq8u-5t{;}ZS4g6Pv|2XhBfxiv--vNIY@DBn1cHsXC_^$>3 z+2EfA{&m3rEAT%D{`bItA^2AU|48sZ4*qk&e*yS^0seKt|2^=(0{;8Ke+c+D2LH3* zKL`B30smC+cLx7W;C~7Hdw_og`1^wYXW-ug{40Y0GVmV^{_DWMI{1fz|8(%50{+v$ z|0eiP1pgTD-v<7k;BNr`@!;PK{GWjT-{Ai%_)iA^-QfQ&`0oP$H^Kh__zwsF-r!#h z{=b3$5%B*O{C@}kMd1HE_{V{NCit%g|Ht6}5%@O*|MuYD9sKWt|6cHK3;sWV|3&b> z0sgOpe-8M2fqymdw*~(l;QuoCZvlTd@c#t-?ZE$Y@GlSkmBD`o_~(ItA^0}}|K;GH z2>uS>pA7!Z!M`T>*8=}&@P8HjGr)f!_;&{XW8nWM_%{Ln^WfhK{AYsyAn;fGga0+~ zH-i5o@c#q+M}YqX@ZSUe8^OOL`1b+-K=2<1{s+K68~lsF{}=Fo2>w06KM4HWfd4G; z_Xq#`;BO87Z-aj@_;&&SufcyY_zwX8@4(*&{O5uHhv5Gu_<Mu@ZSY?Y{;R<M1o*py zzbp8g!M_Cj4}t$a@UH;=Rlxr$_>TtvPr=_0{9gk9t>FI?_`e1IUBN#L{6~R*4e*Z# z|1seI4*2&6|5M;!AN-qw|9tRI0smg$e;xeSfPYo+KLh@+fxi>@p9KG0@NW(NoxtA_ z`~$$h9Qb>H|48uP4E~3~e+l@H1^*Ag|6}mK0RB_K|1$XR1pf};KMDNP!T%`u_XGc* z!9NQ8hl2kt@Gk)WaPWTv{Fj2iJ^23x{z>590Q_5me{Jyp5&Tzx|90@t2mjOHp8)># zz`rl}Zvg)^@P8ltW5K^0_^$;2ao}$Pe;e?>1O6`H9|HdE!2cESUkm=T!9NT9>wy1P z;C~MM?}7h9@UH~^k>GzE{O5xI0`UI={Of}Md*FWs{P%<Z5b$pd{%65|4)}iq{;A;a z4E~$I{}TB30RIT^_XYpYz`q6fR|NlM;6E7r*MWa^@c#k)XM+D{;GYiu&fvcR{Qm&| z!QdYZ{x;zMGx)y={x!gVEcjmn|IfkSAN;=re;@FF5B#fve<Aqq0)Hp)zY6~2!T&M% z7l8jJ@V^WGpMd`e@ZSvnwZVTW_)h@;SHa&G{H?*iKlqOX|6AbS7X0nO|0D2^2me9f z-yQrbfd4@74+sC(z`rs0e*^v%!G9(AJAi+C@c#n*yMlj1@Q(!lec=B!_}2peufRV6 z{9A&53-DhK{@20(A^6_`{~+)W0ssBrKMnl5f&c5^|0($22LA}@|G~dG_>Teqdf>kk z{I7xkM)2<i{>Q<;FZiDU|0Cd^5B`0?e<Jud1^<iSUmg6nf&bs&KLq?2fd2vTcLo1) z;QtQz7lXea`2Pj|=fS@O{GWh-CiuS({=b3$dhj=azb*Km1^+DYPXzx^@b?7&n&9sO z{*%Bz5d5oxe>?DR1^(y2|6B0i3;rF!{}u4R3I6Ybe{b+#0{)l5zZv*{4E`D5zYzQn zg8$p#KMwrg0{>sZKN<XYgMSn7KMej|z<(<E=YfA6@ShC+oxy)7`1b?<y5N5j{2jqR z3j8mC|0wW}2LB@P{}KEbga7y7-vRv7z`r&4_XPjp;J+ID=YW40_#XoQT<~83{tv*v zJoq;N|KGuXF8E&oe>d<y3jQhJ9|Qhz;O_zcH^6@f_zwX8m%)EJ_%8x~ckn+A{-?ly zHu%p1|M}qG1N^sw|1aR51O9g4Zvg+w;Qt-?j|Tty;GYftAAtWb@NWeEYr)?e{HuWf zpWxpH{MUhhEcmB_|4-n*3jFJX|A*jj1pff=H-mo?_`d=E^T7We_|E|Um%#r7_<Mo> zcJN;V{#(F*8Td~D|4QJ$2mBv_|1t3I6gqv%w3`!Sws{)HH+%B;uakGbyX(yd!+RJ1 zcI4aN7kwX>x%%-(4cm9WySMER7jL|t<5kUe$IDyXKC%0}eB~K=g^iXcIwUu*Su6V0 zjDekx{n_MvtC@oiT3s_f`eVd|JsUgr2^@AHyXcpPJ%ifJ^1pBWc5s)k7Z3Q(XWoZj zdf#5Z>V&(ix#ZBk3RSL-{?zZKtv|ihHEdLk_%ZMFKUKf!{FGkT*Hk_8niI}pC&z$t z9wRp&UNZKBk1tHUytBik^rQWLjv9KaApDJ`_J1WcXj%Km72ESqC)De^A?^LxZY#%` zZ0@*(w0mXk?5sLpox8WNQsnWu3%;oP-j)4B8lRo>O{(*zOFbfdKWkBO+2D26J-u4D zY1^)S2k(x)J$m~2_p)jb-yq&9G-lGIkmxXD{M6`#kR)SxTwF|?yOn2$R$lE|wf1c7 zY4q~$<k_y1S9`0_h{#yu<nXxo$e3v3h<<}RdN&9g<@nF+_9{C*JTx&b+&DHSCZUtD zL71aecywso)X`BfAz|ThT8>|2d~8(6RHLu|AfuKeTNA^l8plOOg&QN|jSb=*tp*PA zHO3~6jfxC?@vgYY$sq~h|JWBd)~aVnbfW}gOl)|xu~CEgMn-ok3l9m4j2^GPw`|$c z(Mp{uPR~^rZ*<o(<0Ib)H+EG`cMMdmHmWSS7RS(-=y8$bjd3B9jG-}!(FsP+qy|Zj zRy`xaLnjVOoYYCad$t|s=x7yZ#YMH~8$Pv@GXi&ZwCWX-5E`MbSzT#-Xh`%pP3#=t z**eK+6&TQO$S`h5d_wpnqq{pllBCtpI6iWGbVveXZ9-*6{Uc{qr+@m7v-n4cPK`}4 z4vHM#7y&lvWOTL~A(AwO#77t>heRcYk0NW3$+va8_Nukd*YTg~w|c=jjaE~}TD=k% zneb2XPSJBM;+5~=nlLr_4hoqZZtM}z&)C0jODo@~D3!{0O9|<6GzE%H7(F&J+SnyB zIyO;lb~AQ~NlbY9MQLed7}=Tzjus8%TUqtvYZ$sWdQ$v&HbcVWM{_Gi$A%<C@HH+z zWOQuY<mYn|$Cl=()|9qKsdy<Dos0ra3(pQ-?OJ%X^z`)d8qpwr6gR}mYEXDwWJr|d zn%p&=3{MIT4-YerO&m8aJPu_u_U)nclH<9~kT{)%gqRrPSQM^Bi*Ckei|9Jpw}+0d zqm`fEKx0D4SO}UFIX)smKcPr1A!PgrQB3coQAYQ!M$5K-!X9PLr)q87AgoCbV>hF& z{bAwbBBS;DrgrJ&9J_Y4kX*LOk<sH~x^^}82p=CA?e6YwWi?bY9sLp~ja3%Fv-Pm% zD14cJA|)%U|5%-WH27(sgqVboDA9(|s<k2G5|ChQNSFZLsX<tCqo3dz8zTRswUago zqo{FQ2<9cs(P(rx21kX5#D^P0g<B(v&@v$@!O_?k6ErC?K0zpL;nmuEY-9q42;RU+ zL)%;7f*=*>rHQ)FI+xGxdG?z+u3wDQPxYm?%iTC6UhqNEA&F55#`y3Ag%g6N-On11 zGRD9-?inLe27Qh1W}F5K@B(PH_Lh-H&zQuhFk^I#ZZ<U*A}4ENc`C2C#Au`J8y_AG z6`1R|_yo&sc}Bk6>ac{U_|cPMBS(vs9j)72j94^kk1cg9YlQwGP+e?VJG*vk9UZ1n z9TyoM6*j`F{iv?fM4wwHHCG4zGZjtww|$m;IYvH~@Bfy*sak>lbnVtA?*F14W%cew za!wrkKNGXa5o7SwIB0!#bF`QaS}dwjY)<L@=*Qi};zv>lQ%HXm7Vci=;L_t}C@K8k z|1;FG=^VuZ)j+C<EpIljk;SSGW^-;OE33?UW^)SPGl|IOk`|NRBXxB*n_X=<&ckf> zCe3JIHqRgpZfZ7Xk{Vl?&9dM%nADBb$J1<1BAwCBY~D$lNt#QVO?r<sw!PWxX=i1% zj5L_kwFBoRwese8(&En4Q;zRlIF8hn)I@3|9Yg9#nnapSx{x%s8|6rgNpneadr-bS z<$F?|bPQ=QsnL(?CH3?-n~f~ab?s#~$CAz<olol7o9iJpnz$YZ@<}~Omyw!CJp*W` z<dbHQTJ@nmQdiP!(ri*AcPhBA**uIiHqdNdOzIOvy`-M~%;p@@;{IHR6XgbQ9i%fz z7m{WVG@J7!<zbG-6{u%0$B|}}W{~;}p&rs@q`9OsUZH)?+>ckeAEd^Sw1;#CX%1;@ zIQ6(74^k6p@i>kn%^c79<a-3iks2q`?uwL)GMghv=kvV87#1#jPUASzWu!YvGm?=j zdQ!Zf<4COzaz4^!hiOM;(j%OQ)OZwmlFFy5mRK3y7-(fkay8VdP~LvNp}ec)*XGZ& zj@jH)KSq)lACKy>PmW(^%QYC-aB=PB;?}34(-iv|R^4lMZraA9KDnyAA88Ktwvr6} zBlV8tub6zbut(3AdK37&M}9H7Zq?hxHQ9QMql<ljll2S|6E}p9)VYX1VPk=uzlV$K zT<ab#Zs|6?U5s;VeO(&Qw)1oGOfJ{kCD+;}#^C7UNuIBZkz+Wvhl{<h)YOH)3;em& zH=BR6eWo7&(t3QQ9-G>>mhyvCc@EafdvN}ghGz4&|6INe<*lc?7?G3K04XnW2&24P zGju~T^pD79I{BXDUzWVSF0S+B`sUiuu5{ZTE{*5N_02Bl>*AeUKG?;_dZ43=ch4<c z=609HJ@#^;`#8~lntDL4)q1##{g&-}_w7HR&Jf7|Q`DbH{T+mLnxxm?qqKgmTd#kh zOR<g3X9&@oJmknR&&pA*qdE6$8MdaKI)nC4^8LuqAs+-vKW*6>Nq#o@3ne$i#dWr| zzl&S4+&^o7M;AA)#g%KZ@8jg>;%3sn)aK9yl=JqY-BQk1^dkbr=<U?Y#okKlUBUig z>=zlz{@K>PQg0s@<20%z!&i=`(q3v)j#7GXm2xvES11|CBVFV@$HvdaI9v27*{+XE zuyub&r3KWe-9%j<MV`&Ey`DVskWc!*k!Nq0OoR2>7mCwQDY(dOI`xQ+#)OuBB!2<< zJ718$gnY5>&mX^){58+ziyTjpzl{73rFJDp>p6%}eVX(C5&J#q6Fx&v<a*|a9A}F> zl5Jx(NrF+Y()Kn-|1;=2616JSf4Lui<lEDiT%bNHWIk8!bGi*I>T<Q&W#i~#EETDM zsji=Lne;t%%G9UsKlwY!A0heFmuzi4Xp7$PFtS$2`RI!>Wq<!tyFj~jyP$aP<G6)8 zxgAB`%e~wOC;P>^SjW8}J4g(`Y`ZzO={9pw5<YUC+Hf<5^H}Th`49Z~!RL+_-fmwf zzZd5FE3qoSU?%6W?`k&7BadbD@~Ql=1J<9Qmt0|~5PLfXYB}h+rm4!_iTsXG-$Lq( zkou(TYv7~yqQhj}Vt+pSf0zC0zEj6+xnIe)))}QYzSMqtpl}iN_2=by?9?3Vr^gRM z%5F&66)8iqbp~I1>R;t>IbRs%-MX9210>@)J+sDIqMGQL?9}vP0mqv-zO23M!oDTs zk0Jj}Igon(!7sPby4Q33YU-=>?JDInC@(BqKB9-V_$WE#Cs{H{CBHWLK0eHql*yN} zZOQj0e~skR4!vJ`+MlR?$y)AD+5V`vleOvD9I1=HnbfzK`ev~G!t3h8b&Y%0EJ-`o zQ?8hDm3948?I>%{f+@G0R`e{RH~vm^w$iRrO;Yz+uD1gBAk!D$L)xK#B;SMlBz(N< zmQ2!_{B<Ee7+-I-oS#1PAACIRzx-TcZTwXC@-H2j$>~)v`S<RvucdeE<r14*es;Mz zcImcrZRS}^`?k`K6nxFv(hmKj>>v5_@jXK&PY50Ulmn69BlhRA-z4SyOYIhYUs*e1 zJpg(2D$^hO3(>-2X%E@MN%b#*_@ueL%;raOz8C3dF#XHY=cM0Lvjd_Bb10vIPdru1 zKke6oT#O@1`!zqO@Y3x7iV7E7DVI;VxBgL1x8kZl3@$C#%V~tAn^ZoYEk1H%eC`*? zN#y9k{-l4|FLLx_|4#Pr)b&u;gBSTRy<O%TtZ%*0Aof*)kop!-p9$Z-s`Mww@gI8i z)Nk=~$uQVBzu0e46^dLhP@fxPf@ymD^nQ+enru7JCAW%ARVol3G()5;vs`y=S~P|+ z#1OWX{`7rTf4Z<ggZ;(m(F@!8RR4orGHh&izPO#Gc6$!>`7p+K(S4BXSi=7K?6-UN zI#hohglgrMy$apl3m+FK7cq=66Wf-L=*=VYjl;3CdVT+}r@dWbtxr9tuev?;qkNYN zjHwt4iC-w!uiL@r`0;ZYV}1Fb-nriYNj)>E=iUg$Kzch~Y)=Qc%&2O8=bsg60NtXV zz0#ghX0t8VRpx#?)x)QH!=Rz2%`od1Dq<fen>>R{e$BBi#Wi0c_2pRWNo@F$F_yH4 zWaP2Yn~VrO!{!qyBRQd#LuRqjhm6sBMwEWQcv4mA1U)0nk`cp3KT3?!GbTTGz;OM$ z<)m8wu@%R=v5YZwUdsA$eZ&#{v#erh4sCNp^oVlvCz#FgY?rY&y<L{sTaPWZ7Mdaj za!7MJ!d#BOOuth`zE8&!PxYPC+SvT`V)?2DNPW|(Z$_Ni+`I3;)c4H&GT1ch`=a3q zW%)>bd!@b&X0wCnWAL-~ym#q%(faonIDn?-9Y7DNsLj~iXA?06sZaUO!(5CuDO{C| zFrLcAkK^3#J~6MV&T;?QUNJ7HVsqp_*a6{n0re$inaxkwwtR$>CFGCUY&M5W=F{^$ z)o-q1b~%%b7lT}U;$A2$ss9%Bq)?CM=}Kk){rpz~|CPXhCGcMf{8s}1mB4=`@Lvi1 z|0)5``aY`Zu6nAz@K1(T^0A~9w69jh_C9LM61(4eO#5C#-|t#CL~Y4?bmSvLUHR11 z5-T@-zl@jVW7&WEi8)5TFSPcN#EOuk`ncNpsFYBg`mC|`Q7J=o^|99*C_^~;xM_)1 zH9fT?GSpEYqt-r)FWXq(5I<KwGE|YzOIl*Jvz(9Gvg9w*zgyaEIUgYv^|5?^V%DxF zSU=vZf49i9SpV*(@7Ig}KTjI#@_+tB4IO+`R(n0|rKdynbex_}*3;Q~`iY+YsHdy+ zbi1A&)6+|OdPh&oIcn#tuBQ$4w7s78($k@OI!;d~>*;Jgef~PETE<7jC&aOI$Esyy zG>chcty;1YBfRDK=){&|6C<O-T119fsc#Xi;<9QPHZ?ka>Le{qh|~7y>+?qQH7-0V zM2^w7VxtnI-bntl*>Zdg8wue_{AXEDBnQQWg(QSnwG59KJ&q+a;iDtMsKoM3D>^zP zE-qxMR>HD9A(X>7O~|CkP}&faAk~wjDjOTGM%@3n)c=zVCk__fv*^9IwGZEjOY0dH z9#tm)EP87BUWE-|z*0WJ+J|q<&FUE*>f6(Qwof<JRzv>ZLFX;y7h3zM{Dse*-%`$A z?S1;slTEn>OZhd{K73;yOV1dlr(!px?UwQu9=*vE8(=AKu`8~+p|RKz4pE=yuiuAU zVcJsO!ga82n8v75n%ydUem&c&KO1swmhu)mvP>^;Y3K9TZ^<97m+zrhXt7JOu0lQ* zJ0|5NtnmExON>z3r5|2u$5kwne2aZ%Q++J$uzY`wjk4ukb&g$i!#CqOfw3GxeJp9@ zbLHpj{La@6xuv~&vC{TizQ;XRK0_~`p_i|}*K(wmTFz_9O?s}prQh0mOgqA2zb(f< zfBh0GmrJzVzg)fF%hk(gHno)0Qsc8<t!DGRZ21h{+$f(6gC;mx^HcWo{P`EKvut@+ zTdlmStyaFva~J%)Jinqm;V#91oX65nyVljpKY#r5-+!SDVW86TmVVsre^`DMW#vqk ze%Pq@L&pDM`E`^P-L;gr^ka?n^4Z#Dl==;p_FKd<>ACaYs~18JapZdc`T8yOY<;f0 zmF`Da8MX4+s<x;9EafcezURtk>*cfc@|Jd5YOs{Ee3!Xi$+KL4u3kP@FK_?OvkGLi Z6x35`rKN1yU6%4WWi#2<uIg##{{o0M7KQ)- literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/Tools/Bin/nvt-ld-op b/board/novatek/na51068/loader/Tools/Bin/nvt-ld-op new file mode 100755 index 0000000000000000000000000000000000000000..99cf292f35b33b287b40943ac101b2f16c64cc3c GIT binary patch literal 754576 zcmeFa33yaR_BP(^5tqbeH0~LV8pI`G(Zsb`BDXQo$f5``NeDqAWHITmszj3rZ5xfa zj5;nEb(GPW5fvRk27)X>9LI<oib`C$O;j?t;hO*Zo~nDhy2(YH-*3L}dH&DWGqLac zo?1?wI(4dU-MY=Z?3@d_ckAYJKHYui`G{8E;}=T(*XK*Rc3;8#kKdQ+OTd4R@Ez{! z4ctpON+|Qkd^hW&o$myZ`g}d`-4lPA-4&79-7go;_fd-WIp2<k{APX8k6&M^@8Iv0 zp3b+=mm+fJqpppmO5RvHO?c<~?gIq+d=vDy&PVl_FQH83ODI$MobL`6jF0o}w2y7$ zUr@I%*xe6A?B|y+RsI|OW?FvoJ_%0db@Si%5#0RuK+N~+{RR4*Zzta+$VWZ*_T%We zx9Q{4oj$!}(iwwJpFa82=_O^=vre6rdB&+{3_7i<{Imh_Nq584`4Ifk2S!{p*0=wZ zr#JSs?tQHB=#TFiKJn9wCoKKz#1kM}hd=5`OY~}7lG=1b(!!(xeJ>a?JR!k1vUl?# zRzi&w67b!4eVs2UwcC*NanrjmPWJuwH%SG(D|#mt`FgyXFyug}#In}ouLXY_@V60v zFX8WH{JnxdeqL2yzBl#vW_-Vmzb*KCAAcX>kDrh5_X+-N{B6fyJN~}FUkCpFjX&q} zB`&_j-*@=?0e?T@kDs6L$01j>qW4*I6aMgXkBb`4zooQu!wG{9KkT-(rwo7K%?;1L zczxeZUnHIXz$G8p2c(wnH|*N#mma@jTK9s_UQ69_#VTv|A$RXLtnlv9pWS@9|KC|V z!$&=Q!fmtDPMfmjH_N{$FH7)!c)^|hGyim6ug}IGadrRC9?bpvzM_Au3ora>-?xw6 z@WsgclaJl^`o{bNzWe6YS%GQK9ehm61OGhyH)EgreDat}7AAam4(dGQx(D7|9cVb; z{wnwWZc}?b`rsOCcH3j?PVBSns<QVdEKJF1`Dg2fH&@QT{pXVkt{O09OE&VPWxtVg z+q64Zj?M|basNJNKYT@>UZ4HEaKqfwW<5RZyLX3<eEQviZ#;NZ#ZobX$A6AL!sk1v z3)zwTcFkYlk$wZ5tE+NeIk0O!H>qp>slHwFVUKzTd(?Z&eqEPS>QT-`9{dOloUYn+ z3*t;yeD;xD^I0BtnCOvyb8^?^yxym4{tyrSANA1lFCOWSM*!%mT}wUceQf`()1!NJ zM2~f@V?Fpc4)3}g#*wb{`QF2S&h_9kJnZm@haFaV^jANR^rs-cbfxDXJlZwQL(c)d zx-Mt7NBV)k={o)09(sQ2!QbNHhmUyJ;X;q}?H=v@EU{}ngC6=^?crCGJo>ROjNg_0 zXJInyicj~jXMu-4<1pEGRn7+<{8b)yd(^{jcVUw5s{A`W#@)<=yH0<vhdw`e#FK#@ z<M9EH`1y*5eSYiVx0}(ZuG;lC4?DbeSl8(<_o(+`5B+cVh#R{+%6Y;=&jlX+c(h0Q zlRfNw57xU~*<rcIcp2bfpDGW2l!re1dbIaIk8)n~=*L`-IP<oLA0F)Chxd8(?>!## z&U}w@f*$;B9_=0K5l?D8>iyB9y>mVK_k53fPxG*IKaY6$oX0$}!XsW?<q;pA^6;y_ zc=XrbJnWh2VV_Gp{CSSYdh8>QxINFqK9_p%pL^K3uSfb@Jp6f%M>(Y)<!te2SB*!z zPVnfLcRk|#J0AUYu!o)ddaO&gdicqFk9HmDVTVkQdQbMy^GuKOul0yahkMM+_j|1W zuk(oKcX;Si;xR9L=@Eba?V;!5L%WXKCwkZ?*JHjo%ENz_d-%`&9{uvB$Gp7F!{7Gx zh%-lf_~G{+?S0w9&f`7$%je+_bsq8UOpo?{?2-N%kMiI0h*vjz_}h;j{l3VfoJx;= zzu!a8wH|ic<l)cndi2*=k2rR$haECK{CuUyJb03a->&em+bj=1xxvFeJ3Z`hq{n=e z>tW9(kM`c}F)sWbcAM*=&l4W=`y!9@t3Af=`yT$h+=HLuVYgl$`!H{Ll=HGj{Qu6Q z-!Jj-^Yc9HT;##`^3bOn{OY&Zxvsf(8azI_C-4a375OI3!|d`|h;`R-zWsgasUrkW z)qDYXruXUeHJbm2womg!zh>0eWx5|LCdBet81F2{e~r>7P3P(lKbP{aSNu55C&O;! z+iGL^1@J5K&Gm|h+2wOA#_xgP3$D{V{Ft8tj7Q;h`6<F;e_Z!V>uA4b)Yo#1FWRAL zl(NI0we)*E9-A+ZO`ih)XZcOK{3KoPU*T8OGezs~v^NuRo9R=u{wccrWb`k2zvkf{ z@+olUi*bI<sINTj|4rj#`OEZp%*&7EYxY(1Y1`OXeyv{5bi}o5yVGBF%AR?uT3@j) zC;igca&j?Fr5|;B9lv@8{X)JVt{=}t{Gpwbb_|!29XpTHakw>3&o$bfNxFZX@-NZ; z(|UvMcdh4Dup8@bs)^Nqfu1)j;_OoeJ1~8#w!c&U&5nJ>#J2Y~I3CkC&r{{s=z5RG zdY<j7*s0PF)%*bXA=CRE|J3|fuqXKfU9V&37Cj!D^mwe$>5tO&`gOY;zj_*SbeV5) zoIgB+^2z7LjniT9bJkm<$Kxzrem~fa`gi=>FU(xcAE47W>p0-(`7dq%X5GIjI(>J2 zU(*_A=eu<OHWv7GO7%5WuhaZ-apPh=-rM5(w?fY^HJ8Pf^Q7+g=D74ej7w>+wp)s> z{YTxui{twDCCDYc?qA2wJ+=Qd#*N3<^gPlW$DgY0-yGN8N!o5TI&L`rb~45<>uu8G zu14$W!*i&r;N+tI{rT+a3}1f!m8Ion`BlNf%3yxJFMs5W{87bMmQ)3cD~C-ltg0%m z^5qA{<mOK<uGI9H++owp%ZkSoPMTh<WL-=0D}qxiiwh^`Pb;3CUxce5lIIuAD$Ji! zSzMf7Jgca<B3M#h=F1;{(deo{sJ0>_J)bpI1uM&EXOFsYbYY+<Tj!~$t}M=<QBoPK zE}V`WWrd~q@0h^oa>*Xd7&xi0s-!4?O3C!%N!3#VMWcfm8AVeIEAxYug(bl%6qG$Y zBYOrjje%^CN?tw%brlzucA1_fUpP8AxF|Tgq8J5a41{(wOC}eW<(HI|1f{TxMhCN0 zQ6=T5q>EYymy}MbE@o?jXG||IDx}fS;PNaKR#H|~Tp0|MW@nEYT|NfZACCgg%+H76 z%4g<Jg6#^YBM-GkJ=Imk`BMsuii3gC!OXJi(u(S`q97YK>cTPk@#P0I9KF!OlCmqk z+bLGg9+p8Bt5E;I{6KkC{>2r=Wu@hlm9l2<lvGueS4n$R?~ETaBR#)tz@U7zX?VIe zO3C1=;^JvnW=}_X1Ejpsz>`ZVRoe$onO<ErRnj8C8D@iv3af%>ulUK8)rFNXLDALK zC6!cUa$z1#!A?P`u#eN@Fv6K7Rr%%6+3A&E*?jFA=+2CRmDOdzl2UkRWo3D#A<#Zk zvL~MzTr{255kE8RqC8KvwOn<D)A?Qb%qXg%JydtxnEWy6`Prk-$j`fQ^uT-$0qB}Z z7oo+5575ROkd;4b5_}#5OgUG6VcF#T%Hm0d(+kUriYMiv<V-h789JC|EFPVnKWa4m zPs}dfhYCgqE2ekl(#l~*PYQ@mV>0ryMJKq=8FXO`W@n^birV(ZYN|EymRD`U7!PI) zR>n}a@EYH`l)V|+gTz(xE~N3h@b~h;Gb>Ai#b{R%EG<T<EOyL-_UXY=s$x)yYIMdR zjOfbZis=}l`GwW9vP(-#i<C~82o7TBK>-8~$2tLV=3fjTgCy9n<GQc{j33+VJ$fhf z)^+Mo<a&428HE)XJ(IIV<-PBD>GaW=s^8<sjy97r4*<-G^g3){6jz;DR9;$9SSf~9 z&Cq(OoKC5G)1$_~lR+E}4qoo^3qG)Sp1a3F;$pTtk#rfbO9pYW%+907abm;#HNE^w zOlcB^bSKBgreOmlW-FQNV_^5rv0$>|!pdyaq(U^peo!W94&gJkC&P=;ZFKb5Ics)w z&e}_RM|(&H6lTKd`PF5`vnq;<g2j_r0X$;RloB|huFvg)Jx<e6r*>k^FD3UJ_ZS6L zRV7!J(Nkq?UwRRiBv5x&;iQro8JwDnxG2i!iU0w2N;yX#J1fgv&PeaYc9m|P>+qaw z!NK;?Xk1c;RZ?kjS<oX$>qs;S>##CJ{b12lR&K0j_Bi&bfiXjO8BKOyGYzhuGQE7J zb||$B7?7SnI={HIA~>7T4lBp<%EBv)oiMZ)>oC<}`B%=Gm0wX@Syf(EIK2dg%}5s& z4O6<a+L>1t2XSl)i!ct0*kzrXjf@!+Ygbv)=^67(%xseaqX*@W9-Pm)3RhB36}&z- zA0uE|K9-4-ohCYQ&~^H~G}IZhsw%33;yE%obB$sS;6XE|7P?Eut|Iwv4a*)>HM^`x z>s9VX>b=#csyK+q=fo3ZCf?)dfN4et2Nji92XQrqxw@Eic2`yP+}@>yrO=(QlteoC z<n*d+PN8KpIpjtMr&mevi|u7Bkat@W6^%h}4#t8=&$7<&-{UY)(+~@bU*?X99qa=# z^7ChumUK1X8SwUIS>yJZ8aP=PH|jnJLDiTDQJU!~ZZ7A3;Y^7+CCU}hJD8@sT$goa zBX`-Td&sOvO|lF_XplR7=s|}mzzK#bR!Pv7+Y!tWv3GCLTbtsmIU}h7Rz45|A{%`p zIia*0vuHn45mlumQ%nBJVvNfwF8Rd;cMGKqu<qJdw`{NcG^=WA`OMP7vf0kKa%@~U z+EJYDk11D|x;IOYXov0H0O<OTkO3pMq0x{L@0ysCsysZi>Ws?bs**Xy&O*+ZUnUp- z()^;#ZFY^A!CCJrfRzF6T4$gJ;L$-$2l{?>dU4s6!KrG!;ta}?!NKC`)30<^B(9gq zLRin-s*itp!KS(-x<XW|9Cziar&Kyu{LP{6p~=(b{*m=LH^&|~?b>Pe4d|ruN`^xW z3Es4qR&$la)xESoBg<`nbh)OQZyE;?HNSjHeq~|VmBrdPSOR1W<a!6Y7L`>L%esTb zaw(KCKx9~N>?Rsq8C@pDEi$pfKtIn224)szAcB=nk~Lj^&|{Y%YE7rda6evBHUm>K z?z}6ntmb+|hXm=T-GpL<tf_@n(Y=Y%;;Jev31rh{61v41WGZRQHinsW_ic>b+cteV zZ11(_K|d`uZZV*+x;KM)vq!1RE}9n;2fJv!bJN5X10r~N85S7T*m;4)vN4N|$;S;j zTFLtw_V|?Y%9-4^zzt+&Ar?pZ!NM!qr3hL1*xU*hmQ2qWoS%bbO1^vljjqb&PE}de zl;X<lJlu|t&d_&1-kHuso~h;K(<Hsv))?&3#Uukubdl*+DH#St1@0a}J{o{QjQH!Z z4wapPJ-3JBq`FL$<0zE{aaW$h!Mb;WySfZJkj7ecZ}U}5DlD2d1vZy8#$MN#Sw2Ho z=eUg-6>*E@Mw=?Mi@SK)&V7;$lW3!`_vUd2s#dPbH4H2KQid+4n_tYNcjnw%EI6;) zzTo`>=2C8@!LRpXr;z>0h2gKwMBD$WJZ?iLN7p3rLl7eng9Sq{V{e8ahr-_X%s|*f zCay7oNzzM`0y9xS%>BpAZ1m#HY`uLtK#kcwq?2v#J>5b5Qr`G2aup^xU7Tr5C1vHY za|Z5!JXJS#-lKcFI{NG(o3T3l<z~BGxrYL~x*xl6Pl~%Y(|H%pRHMjq@^c+%5B10F zc*wm7Jl3;BgaA&|jBK81_^jp1B8)3OYRT~Bk1d<Y*?v@U6{b}Ri_|k1_*qfKY^*sd zF#dv5@{6WU^HmfEr(&v^;tQ6~#2t8XrH>Q&j44%T4D!hyGdI(bv5Yyf(8e;J4{?g7 zF*l~-lIgzcGTbwxB>fl$>z3kK`FNZ#%~vX0@hG_(n|_tP(&Eyhsg<ZnRa7(;8~-Sd zPk-=GNXjays;a=gCTm18U)AhVDH{`E8FnIyp%f%o0P2Mks97aJ7L40aUuCK6{Bvbk zR!$8H<+)GMRMOmuMRsm}i6W&HP(<mKpFhR4NK8A>IJSfqV6|)l3?b@OPxqC|jS7^R zK8t2U`K(51;V`%fEiRkktEwt0gqiV7OjiB*Rb@t<)JhtP#6>eFLrXk(Dpno9%4BaY zUpj&otmbnAX$q=BrB_#R<;X$=BO&xG#ni&QMQAA$gcs<iZ>5DLWj@(>hJCA~^ZBIA zhf&EVJ-!jchUE`DE!{UFCopu_xN*21bXryn%E<6RFl1;TKjXB4v68_iRM+_fPRkhN zUPiA_uFDQMZLss;@c(`PKMUYJJp8W|XEbnpz?Xu*yc1{R$#h@e^Eh|HPdB`6%A+fk z7vL{6uOCjBB>2`qPOfm*?}7XHUe)-uC#T^Fd@o;{#>FD<>1)?G*l!_@u=MbK56n+D zyd`>*uAlgh+wQ^%fqi|w@!~7XKcu7tCvx`j9jI~e@De;B@9jHM<LV=byZcT8=4V&= zH2Fp$cv>F)IOmI?oR81&osV<Qf&9N6lHd9~1NjXGUt{p=48F<W*BiWZE`sHJY4FZ@ z74jb$ymJnOe7nIr=a<O8V(>Nk90Ga1SLuA5^C#pZ4vBB)d<gk348BI6e<1&Z!8_+< z$bVw+K7Brc{67u8z~EaA-Z{^}^xgDXD2khm^sgJ~opTyY|GmLG=XuC~Z1B!G5c0bW z-lxx>kl$+X&iO0yZy3CD9*KOL!8_+z$bV(<ZASSo8@yki(_s4d4Bk1vLB6|T2j|=u z`8SR9&bcr0ZyCIEE{ObR2H&jD3z7eq!8_-d$Zs?F<O(%j`hYXk@ue6%2Dtl4Gk6@$ zaX;w>kE1s3C)40rxAXBEJjbf@u?(I%IiEa(f7K!JJ<i|}Slmy6!6QJppQ#3qBRlS= z!r=FHS)Xr~!Q%*y`>8Q_1St2jz~FK8$Ne-KJdQfKpSum7@y_`)89a_`x}QY`&+}W( zXR*QK2%Y;`YVbJH<bIkB{zsQZtTT8VHFH0$29G0O?q{>X<0zZ^X)}1+W%16q!8>Q0 zDDE(LOb6~~m%*Fy+;?@<Z*}OGJP8JWv|9@15`#a+;FArW@4`Bt6oXH3NPMRm{BI3D z-QbTi_)LR8-r)TPpK9=y!JlC8c?SQX!H+ZeEe2m;@FyDlRD(as;42J1&ERJld_RM) zF?jwqfb&^k@FzPYz8ej`zro*a@TVAjlfj>A@QV!oG=pDk@TVL6QiD%7_-2F8F!&7y zKfvHy4St}(Z#MWr2H$4z=91es_%n?39R`1<!S6EoOoR7TM*Tm_;1dk~EQ3!n__GZ@ z+2GGH_!NUb*Wl9({yT$DH~8}mKGWdOH+a9n`wiYQ_@M@$XYj)eew@J%H~0dB&o=m} z2EW<hD-8YugP&#aBMiRA;4On+VDKXizR}<>H2Av>KF8pj3_jQ37a9CT2EW+ge>V7~ z27j@^HyeDO!EZ45PJ?eX_)83av%!xt_%?$dZSc0ik1_ZTgCA?~yA1wPgZEWM{r@t9 zPcZm#2A^c`mm7St!H+li6oa2&@M#8rg~6vA{6vG#H2B{cyx-vS4c;>N*9<<-;0p|X zoWU0we1XBgYw%MIev-jg7<`ez&ocPQ247?F#Rk8?;HMaTqrqQk@OK;hRD*9a_!5I( zWbjuR{9=Pwo}q+G4gPH-eY3&uF!&7yKi%M44ZhUiHyeDJ!M7QFxxw28Ut#ba27k4| z?=tvGgZBla{$FMA2?qbI!6zAf(BP8|zS`hZ41S}*ry2YVgHJd3nFgO}@UslwZ}77X z-ZJ<(2A^l}a}9o+!CzzW1qOeu!A~{#>kPia;O80qEQ7Bx_!@)1-ryG){0#=*Xz;ZL zf49Nc8GMt$*BksIgTK+>7aRP1gI{X!3k<&5;6nz#!QjIN-)itT8~kR2Z!q{agTKY# zZG*qn;5!Vy(cpI({A~vBtB(5rLW55*_}dLW$>2K-KH1>!F!&UMztiB;4E`>IPdE7A z8+@k0-)-=IgTKe%ErWm2;PVXrUV|TJ@P9D)0)xNL;HMh={RUrQ@DCXLEQ5d0;A;%N z$>0|l{2vXz(cm94_`41MVS{fn_(u$Wk-`7T;1?VGqXxg!;2$&iW`kd3@EZ*N&j#OW z@Q)k(W`lpi;M)xTF9vTL{9g^e!{GmB@VgBDNrU&zi2DCxgHJH{rwl&H;NLO$WP^X& z;8P6#Q-e=4_-710-QbrPe5S!aYw&)9f6m}7ga5n1=NbIh20zZ=ml}M5!7nrTsRqB? z;42LNd4r#2@GA_y#^C>9@CyunrNK8E{3?UL+u)lGzRBQM8~h@Jf5G4v8~is0ztrH@ z7<{wAuQm7$25)W%TD6}gSm9plj_U8T>YIbT?2o$nd{*t+1hY_-(>eHQB<Vb13I3aS ztRGjzva*Y`b>efv<HX49i?j-Uh`2j(v*3G)dk`-cypXsjag*Sih<gz?3ci83H*t;N zImCU4D+E^(ClD71zKVDs;yl5Vi2D-z1&=4*mpEPUDB}HyQv{DB-k&&0@KE9dh<$?3 zB2Fak_!-0r1BjD|+XSCXd?0bF;Nyr7B5oFZ1o6Sdiv=G<d<b!q;J(DaA#N1ho%m4V z8o}Qm349oFh2WjU$;1VMw-X;uoG180;v<Otg5M!Nk~m%PCgP)rQv`1$KAJd5@C(Gp z5c>o#Cq9<A<0rQNY2p;(Ho=b*|CYE_@I%DM5jP9Im-u+%#ex?SrxG^_zKQq*;zq$Y z5T8g~BX|z+NyHU`D~Z#H3j|+9+>ba<@Fe1siT#4d6Za=h7d(pi6yg-YBZ*HXP7*wn z_%vdl;IoKNC+_%B`ky$RxJ~fM#2Lh`f{!B}K-?_&2;zaniv=G<JczhSa9`rV#EpWx z6Q4m`Bl!CxfX^hZ5WJH(lej?ecH%7JJi#9lpGE8!{0{Ni#OZ=J5uZbxB6uV5xx`6= zUm!k@*e7^7@%h9ZKS=)*`-$5GKTbS^xK;2&#6yXj1>Z|NjCir&g~Y>&n*`rPoK4&) z_y*z&h-(DTAs#_oA-Iy*A}$bo6>)$#Pw*t-k;Hz%<B2aMP8U3iIEOez@JQlZ;v~UC zi7z7d2|kPXV&abPrT>ZZh}#68OneD(tKj2^M-ev*K7x2O@nXRT5sx8m65N+~EODdY z?!=c8*9iXpaNx^`D+KQ(9!Fdtcsuds#Cd{0Bpy%f7yJ(K1mbkTn~1L<P7%D3cp`C< z;1`I0N9+^4oH(Dj<2&hp;sW9}!H*Lc61NI|h<Fllv*3G)i-;EsUPwHdxJmF$#Kpvo zf^Q(6LR=$w4)K-56@n{?IRQlq1Ybp5LYyaf67f~Ue!=63rxB+M9z{HzI7RSC;!@%y z!9$75h<$?3A}%NH*d_f>TtVC>_+;X%iCYC9M_ftVEcgiGD&ob04<Zf{Hwo@bTut04 zxI6I-;u^u<Cj-wUt`NMFcouPi;O)e-iSq=1NIZwwFZdnexy0#$HxXY$oFaH5@wLQB zf?puMj@T!7Iq^K=j&G&^iED`41V2uEJ#nkxhlp<=ZWeqmaV_y;!3&A&h?@l8L|jkY zDEJ2A8;NTK&mo>qTp_rUcmZ*N;H!v3#Cd`z5#L1Y7d)OgOq?!w6!Fc(DS}55HxMTY z9!h)*u}|<>#J3W6d?Wo&+(_Ie_+;YSh+738N4$`@S@03Ww-YZGd=T*+#7%<x65mPO zD7ZWEUBoqlzdsE4_rw)~cM{)CTp)Nm@jb+Of<Gj_m)I}(9pXO_rwiUhd>?U&;Elxh z6DJ9Nf%pMppWx-h4-$8LE&Wg2MBFC$apFG`w+eoU_#xtE!S@nBOuSg|LgGh=n*`rP z{3qf@!8Z^;N?ap&4)J5e6@n{?7ZDc-zKZzI#Cd`z5kF4s7d)Q$3F36Yqlo`PoFaH6 z@n4CP1P>+t8?jIDS;S8gcYG!NPrR78P4LOYPZ75YK92Zl;%31|5I;k_Snxr_ONg5U z_a%OoxKVI-;^&BK1b=@h@ZX6m1n(qXN?ag#JMl8&Ji#9lFDLd3euwyZ;&j2Ah*uD& z2;NBi58@=jFA%RJ_6c52yo$KvOX+{&X5u!%j}xyZZWa6x@e9Pwg6}0>L%dk<LgKZ= zO@ePCUPs(0_y*$j#5IEF5VsIl2(BdFKwKdBD&iN3^8`;K-bm~hJf8R^;&j2Ii2q5P zB6uY6%fv~7hZ6sb*eCcb;#Y_}c1r&fw-UDrKAHGc;#R@O5pN=H7JLNpYs8BMA4L2* zag*S_#BUHc3hqw)CUFgLo)zw6^_XRcXQtHttDAi-mSp4CH0CYy-)H%jKiS>qTbX&8 z<y-Y_q2;ri&|i7Wn(u<7ijoRSIw`qPBsKR!vM4ssbdfau0g{r~JflQXa1SKoV<nj) zX$wQLKP8J;&q0$=&oLrNxd{^fu$+>lQqogNW<bJ!M_^?e^JG%89ahd;)^t52lVj^? z6-f#uWwDayRGvE_iL=3dBJnjqa+Isv#jNKBk+jX(J<n81V(t7JEd9jJ&9Cg9K2z24 zFG%97d5o&#pOD1atfxo{RzVVHv+eBVWljHpB+h2^r@Un;&q5MsndelVC6L5f=026@ zMM&Z-bAw1~njwj^%v6#1H$oEUHy2S7YndOgC=$!m^bG7)$1zfpuXFd3dWxjEJMzTY zZ2Q02%C;Vm#Cc$=NSeAq5@*flM3V9q>WQ=FeIhB?2}ztaZxBiIHb~+;aH>e!B9O${ z`65*sC2@8hr1Ja(Nt~UJ5Q+b5NaF15Q+eLqJ<q2dw1NLjv@{bVe`P}NfNxa@|FQom z65kn+#MSe(NNUm{iR-nyRcV7DiL>=}A}JUQNt~@GizH<rByqMLDUzlWAc?bex=7lN zha}F{hpIgLK@w-{A9t{&1xG>>XX_6|(sl$Sakk!|@|+GyoDKdalI9a3iL><`B568! z_dIhbiS_A|u+SU7CXPHv$RU>vxpc_bA!EjlwyysyIRSfQ4RxuU-9sx<xrnhsOH#QQ zu|h3&#hUIS&g-qPf1tvg{3-XPD9nF=g}4T@Hj7IE4j=vD8T<HF_CC*o=moMBeSE$l zp?8sR$g7{(YcYPThQFlNFt3&l4}B1N#|o{tLObj+q24|#ta4cmvuvj6kb2hJ<G$$Z zTs0L+*kxGJTP?nd(Ws@xpJ3xV1B5>bLNdvjIBsZ#*5EQlQ)xoA_|rAcBwp|L<8KK5 zhT?A+{)RKV#WeQexcNe<q2Z}X_Wtg5vfa(SPO-nn4Vy}nW=GuXbo)K`I@5mDz4qJd z+-u8T=3eL7e|4|N*?)Ae3+y}H>#26gy{@pYb+2dHSL^G#)EcTi$%P9D@oJ)ISeM#J zINXI?dfS5q210A?{`zX2{abyt-aZUh=#&8Z_?!jkmxi0AH<urZ-d)*Wx>)yA=oR~_ z#@@bV6@x5aPU!oU=^|{gtM3HaEac9WS(+>$nLL;&x33(k$qPwV2>Id43pIHLNGp6t zDs^4f4B^VrT5^<@uu;pB&VXcsmUPz=wjQAfk|Hg!@96DYK9x+FW}drMm0u&}Q!-mi zRv@hv9+Nt2SxP481)BborYn|JkiK2hw`h9mvZbUS(DY1A7byC1O&4f-oT8u8bU@Px zD_JOHjiv`^+FDj{7U<VCeWa%S%NCJ-Pt!d$ow>{={i&uuzg;yaeOcPspuf`eo0?8r zRzbS^`5d(^_9{)MEZa;vQPYbwoxIF{4(OvaeVe9}6n&zm=YST*3ca&(uqKO{Ru6mD zl-;g6U=cbXyhKH!h7~g6?b*{AA{4MfU)T}57w{4l4!|?qSfRh979habSJW}_67f%F zqA+8VUA=?#DQI(d%qh@5JD>o=lYO2fyF(R;<jqh=9NazxF^73-kc{P1VwX=LxFdA| z$*dO=>yE(^jZurzsEV^}`%jV1&Xr5g#Tt<Z%I#0vQCjE=1^PWp-R?;3=*3JcQd^N( zyx4y5^Vmu$vA-{7GNaNKtV~Jp9*p_hn4jar&X3DaiM>2N|Ei-@e%`Z*S(u+A&ptLT ze+To=iO(O_`FW4W{Cq4U1K-~IS*-q)*k{G(AFuQCo{;(ZQ=}3j><8oWQ(}KVS*hz9 z{l=peA%1}TDa_AsV&})@r^H@v=6BpE>jicj<wFwhT+0c^-nk9RgJh*nUp|j(07zfg zQZ~tvir{%IpsivA4?)o0uS@Tk4^iYh?9OL2XKcyN__(gQdPUuq#QKj8MHx_m{T@@+ zrO1$7_i<v~DNKRBciLV9byVAn=wfId8Cq5R`?^ozY8Y;hY8yB%SHWxy%M9`TbWW0P z&fz-ebe*%Uml75*C!>5IwBFvaUDZj_&DmGy9H4Wy>YRDZNjD3G*4fYMoFv_xt)D1u zcNLMmBehxQ^fM<Nob%OOos*=S^DdoprOvrn=S*i#H9@Sghv=Ln-JDnGoOP0Og)EJ7 zLg%FBhW?!!vU5ToAc|p$Vh5LZ_hDUu&QaN&a0J&__K9*FrI8_M(gM{;Loi<pl-&$L znHE%tiiTjU7SzNG&VitQOX3}C5}(`h?G{?i>EjNzoimbcAsDg2PAsFuez;H>*&SBa z!HVG43RB}HCf`a<U3NlTeoE}3`22S#tNe~@CNV$fID3N~TR$cC@n-(mVM)0=EGK-d ztjkJc#>7x9U~6Io{UDIRa_d2{8gV_j^8I3HbcSdYwN(mr<-}_r6{jmD_RIoRkZUU$ zh72HDDb;59!e2jPQ=<i^y9KXdoIpFtxZd~vhsxu7i!q!jZ@v8~U6sBTUw*EX?>NSa z)FvdbH_#GBr3I{1EPs)%l#E+xiLUfEY1N9<MhfBL*Xv@Op`OQL#DV(gV#v6~9H)yJ zsf(%6#hj&!amKx$#fTp@f2vGC#w}(G{)Hrls2;kQ3SG>XXlV{s3{8^wW~C(>Db>J^ zk`8Xln-hC|a(CQotfk2mzeGn!bjcAPDqE^r4M8_8a7uJL(f&Z?P|Y=RyrKn-qLU$b zP74a+1@~(~Q@o%Kf~DAw>&&kIm~O$!6NhhR3*@$kb4~#>qsh*QYC|Ei4zy=592g^- z68qJOG^?>t7;_*96i8{z2<a17aEDv)(NZw{OS0%$B(qI*Q30N+u~z;Yk93$k8W6e* zcDkbfL2g$l-f>nm=+-u6SXH_qm;nI{AqJrp3};S4Wh;ka8L9m<8pbHG-@Sr58I683 zQ4x;OQkcJ%`G<&OM)Ol*-xr_%TIPq*D2*}NrmaeORvRN&MuE{yez(R~^k^mHI{fzc zl{F8N?pl#rKq0KzU3ZETztdTaG<<<BhKyUx!@8K4qyZ~Z^K>!K)5g$7ibdxL&rXAb z*<T#g%^4?(H~L`b`>K7a7DMp17C0rk{@JVrs(D6^#~_I7PNzE>*{WQ2$J63H(e9wc z-X9NoW4d$u0U*#Fl*U+n7%Mld-o%3Eu;9z%3Z}$ff+xx`1y9q1gVLCSx4#!#@M5=M zpZ0e$Za*CPp6bqF)I6L{K98negMU$wimSwiac+t$znSG<O2wPR1ELn8#Qx#(IK`Lm z&x&x*AzBy(XT%lU>J~gg3SN>*##MaMyGrq!#4@;zpb&mIM-00}VW%~}IZL%h62Yrn zA6W6O@)}jNA$XVqqklT6O+K5sOguE&OiJuS;+y&GeyW+2#`Mp~xPoPaP6{rNf)S5; z8qJ)$MK$wbsQ`By6r!28i?x<0>@@R%v8tJp$ZX~tTU0Yu(MB^@P+&AO1;wwN&Spxy zK*7$cixT_Paa7F+SBrErDUE4nQCz|4ELi+|w#1ug!IapqUlv#J<=RasjVZXVF4&1P zeikemr%1s|Qpvb(a`rpQenr$goJr-``75i@#*Airx)TF*HENtA)<67?GK^DA9;>1L z!^4kA3HDRk(I|1N`{&!Ly06%t=x`by`p~}QRMj~uy)pY{>Z+U=Q^2aYF=AgNRYXli ziT&qGS)b7dz4v8Zb*Yrbm}=|WYy*~MxSg;+Oz$DtoLVZ}T5Rn~WZZ`I&<*J?9Rn38 zgx?)0=Er@SPAp}A`WuuD4HRj(*F<UnfhyV%3^!G~EKapXs>UrKJ6BYT8h{de(OBwf z7+~8zAW#dXF$Q>lvtfV_PLDM}lUvI+8It%1p(VdwHFV#sdh%p3_lnfT6v6;UNN+7s z*fH)WDartn$Q*cAPy?u@iZ%=|%v9~tIMte|8aKP_98oQ507~q~#>5$5LxM5@r7;G0 z?=8asZKuT=pw+GAQ{Aa#To35>mNGy;F*gD%g)qS3(sc;1I<a`b@Dr5*6lt_`0yTgE zRMCcDsHxi6IMq6+8u#z)3q`f40VuH_9ZfwA5BM{8v``DBF$Q?|O&TD&2K8Ym$bO-{ zQ~EJlFeP?we8GeIs)8wvDY!PS;1svud$fa)agDj;4Q0%CrGgcyehOjCe~K0EaPNAP zSd27$lrDyhTTH1g=1yHqx-O<(7bC^O|AdEg`Z$$uewR-&<nBW8MlY;*Lv@d;#SlEK z1x|_XjCqq5sOA|tu7)6P)zqPN&tt2&OKV@F$GtPFP-4Gz37cqi=O)Q_M=Fm&u<ZrR z&wX3_oVfgy*uRg@zn0?x1@hR0*pB(R!E67hhn-V@1@m7PpMM4eis3ai%+I}GdqrG+ zO6<eT{LbiCTXdAWdjS`}u8hq}W1Q&>EnsV61V?KD%@iZ(34v@9d?nilQ3r2EN@eN; zMOAG5N?sk+PI*oF;TTa_O%3$J;p|nknEKLUi&>1cc%!%$;+<K{C!16;4Z7v3MYx}5 zHX3?(IK^(%IZ3)6{DjW=TAm`?D1-uQ*itB<T8g`RmLy#s(8Z8(i<zv8xmg#}s*AY> z#qhSfLlWPSD#fEqM6L$}p4-`9;Y5iZ6G~(_@}f<un;NAILvX7WIEA`nVulu|mKr%G zYQf_8qK0chN4%iF7Bt5T4uT+Nc<CNJc@_=0!=5xynMa2Fy89G(hPw;NJ+SaV+w&L< zCLF2&pP||p;h#^pu3yXNs-evjCJwn`$iyMP8<H>kguCra-S(>LA*C{0gm>Mtzw($k zPc)QLVt2oYDj0)$AY(IPG^H`VoQZ;0TJFP!*{^kW*1pskS&aw9EWoL+5uUD|Gn^S$ zA0_rec}il`_Y&&i26bKYkQGSaORWC`817RaNDZI~^EsMiVDk~nzQ45UadkCzl~?*) zr9OuBsnmFGHX~~r3Usnc#wuitbaM9%Qmh7IrDGwbASqsO4h2RdE093lHII@35j83$ z_Fr>Yu+hjG-4se=^!ex&=)b_#KUM3Wjx!LVKl3@EiVc4T=_A8va;Vu6U)r6NzK%0A zls3mpXHxpgP9<%OmtIckM%0TZ1(DN#&^5$Q)B~An!*{xdc<FB_-SVxjAzu3JzaU+K z(~{J#AYS@5rT2fWq$%;z=PAAJD<y3*971~aeo9~c2~rrHhx#~<nvqI9F!~#;O2(N@ zD6#jsFs_f%VG(%}qx?`z7+=vKR7Anzc)^j>V1(9Ssn&pcsz+w0#A!f@J%41J2A83? zGnz$*$mc(*n$qJf@zl%knA;G$)nmS$FgZPblJ4~s?J?^90UmQb(nn60hZ520rv`0R z+f@rCTtsa{iT$}ey)^vyMz$C2rZmPMk7wz}>309au{?B8d$EJ!N^gclnb!`**Rh_t z>9@KCZrEP+Pi^#g!J`n!?0PPSyS(SX{7vyX&O<W8V$J9(TI~HVRI$GJ5PmVzM?Qw1 zI(^ZMExo0%fO3z>Q-IP*94Qw8@cUzUJ-`1ho7hoHx6&4}OP(e%Bx-3&>{`q40cW7A zH3{YJn&kPHpws(5D~)&Sh5I38({~Fmb<FnBXOLoG;2ez%3_7oR63cjD4h%}{juD1R zeEj?vT+wL$=<iia-{we0u{<=(LRwiYpZ3}3#T845?)BSa3lH|E+LSw96@3=EVIy>( zfx2nd7iCi{YSuPZCQoBu<&ZQ6HzoEdW;L;9rQ9{^WY#gev$GRV3j?9ohpd9oH)JLM zs}!L>0y)}Av^gD_vg<m7hf{Z&EJk{uNWW3irg-U>FLrj;ZBfF;c;TB6vMGG1niFcb zzbQxASTmf~pWmBvLLXYS+q)&!bGg8W8E0S$w!%rc>>QOO;eboDHuU+*_wf9QNnQi6 z%Mg83RJj3Oil)XJz00O^x)~0QBHz;OLTl`kbP$uJOW!-#Zv9|n;`iMI$kL?==iexi zrOWO21BABPXH(VCn)X%r4{D<VHAeFTq4&hJuWvwo-=RLOWKv9;F8YT`K8Q>#&}Sr; z(r$#n?Wo<JoKF?0?x;4J)NvFRIucSWLh7dLF}K^p@_tAVxkyx9YlU7DUx*J-y^tn1 z^hqG}ZX{JT3T@BMfJc9$`r}zdPCRZ#{`R+&3o2>GmdL#fs$#6jF1eImqieW&qE=~t z3sc&7gdBMnDI;&GoRNuCJ+y}JqegzGt|LXJ8iu1sUS|UIn#>zgt^NCxRTnc5ql4@# zPsC~KD^R$pscOevX0d1;^siMlqQULURR(#JkgY{u#Y8IIj<?oB`In_6NfR>>=rqqT zO`}`eZUZ(_gn*%{+g(P(L>iP{R3hDQ7&;}5ISLg}<~L*_$kKwmctMI56vPYqXhB81 z;EQ$8<2z39V(9i;^>>r{mg<d3%o!YiXSR2-GE*MIWF7HE-_A54<p6q|sd;pX^sH0V zbSAq^7lm?srsrx?TS(J>Z&am5oyJ{RoP-2aq99&yfEF~x3%*{9YNsOH>ISdY-<$Bw zlG2R~PKT^!o<VM&$Zf7)MILl7C9`2N>9P69Df-0=%2*^_R#%Us7gBwjk<h7rs4k>6 zMy8_Gi7e+rOozH03}JEH#Z0TL=!{kS`!z`0!DY3oD=(%z<$G^3O@_=yQcjYQMwe$l z%`}TpPGoJgFrSgoQ9Oi%Y<-8esUF2*nNk+AkgIs*fNyD~D!Q=$5M7SnkVzqFT2K=& zNYsM7c)>R>pxUQg=WJi3t6!$SH#)(=T#<!d8}bi$Iiem$=Mt14U23MF;13XF*L|K? z*TC*Tv-6N5G6#L^1}ih#ox95s>>edH!Y*orsfycgi9z=$l%4T;`z_jR>4r9r`TJ^3 zlMI<O;oqy3g8q2HW-UlD1kQL}0a@e&-dL#)`%`4S>OD5KH70{{rLZon(U3{?m0Hji zFSuL_n&Jh1Em#~cI7tgS;spn2L9-!nTC%elEji3>N#wHV$S#gvR=Jn$b-KxS>hDL@ zcVwwMek1GEC2e7DY&%^s4^@ht;%}v<P=Gm)4S;_3jKg~PB6GQ{RaV}pzqjC<1uQlS za0)+87v5yZ#L)Z16@EAiKgPT88lwQG@O7({<`sra3jYfQhUO~{Md7P?^BkwS9#MI^ z05!Y6rq(1<(j=4=nU9>xt=UXJ5=YKwh#8JyqT8NisNkq~qE^orBU7=lFUvhWs?l3h z@Hs8<*g6bl3}*bU#;OR8$lEs{-Etd0zp;{V75@Qi{=P=!Dwr=Wee#V+Kgvx{DCzC< zkk<ZlHXdz+dJWidvd_L>T_3~i40YWX*Yd+1iN_At^=GoY?rwR6s=P12*_W$)-C0Ji zy8hw|Tz@cJ>Ujs(aph&Pyr)+>?IDb|=U$W<*Pd}qe}kKzP}N_?`rlUdJj6O*R@b-i zx=>xu*}eXzbtrFuTOOe*?--UBQu*#ZwZG54R$br7>jTwwC9Y%JV_&8uyO`=ib^S4~ zw+`#!Yw1;tOX<o`uk~bK1Pl9*$F-CbZEWJPU_MJwy<D>%TD6Vlix9nbIz_bf+MzG) zO6cFxYl8!;q^^4aJ9%Oz)N45|?TNxx;Sy5}*&r^p_BB*W)z#L5y3&VT;ENoEQlkn@ zX%zoU-Y^aQ{|~3X2&4VA9egwg(kHJ>d>F4ASx99yj7d$j$HD7VJ>*vT#`$sn1G%6_ z@|tMYsJ|^>eG6AOxd>JNT!&m4->j;j{Atb`ExlTB&sXtxyp|(FgOXK^X}G21(72e% zKM#an{hh@-!jC)h#spfLn+Ni3mDPFj)si;_+RQ**UrGH-PscxOKh`=m4PRF6t^=&l zCo{WGT*Hkj`C*%{Ca$8Wvn}!18gfgCob;=A^+0;QZ?k&)`Bt}9>(yP=$jp5<WZo3~ zY9eksRsIik{+e^IZ^zw3^?_rN)4r~=vvcD5US*)VeJS@NR_(d7UPFT5F|G=Sj9ul! zzw?3govjlibCCsp6X8UF@3E^gQQ2s8!#KN!vrEhH)O4vI7Zf2MUdI`p>gP4SE##9_ zX_;ea7k@%U9=^lZq^2`jN|IvJ8_Bl#k}knlJ!0Lgq+oBn_0*Y{Y=u#>6%I1PuymX0 zL&JpiTlL@IIt2+VtEI;*DQZ~4V)^cwN)1B8(t<;+aBr*On$)DuyfiC(PO252o|=S8 zbOk9^{pVKbl+<8fE1Zq8cSxN`ZYDt$ek(jT$qJv6>Q-6biQ<)d&?u(3X-Togp;n_p zD3fAm;BIbt(?fo|TzV1PwAC&bgZ2;`gtl5ZH(mO77>}vhbehQifm1os7QyMcB{7X_ zJZvO@;!2|ZRcR^nUUE89ZnFdUZf9xj|HgQ0>BC~s_d5Q!^l3HmQX6h-44S2BgJLl9 zx1x*8{CT5daifVdnrr3_^HulFXtrwSrTY@^X#UbDeM)1^yrI6Obdg{$I;1c0xe>!^ zJGv!4*9;`{19RO;RKxy++;0@n2t3@xOZh|m24U6iNNC?44Fdni^{Kfy)_!sNnAYI_ zKs=_sWBMn)eJy<!qlU=qa0lieZH0b79&&cGxX9KCk!{aWDE8C+A9-CUKZcx?A6aW) z^lxNI6tjOLk3=#1H*!Z5Q@==^#;ku;5<1F$8nuT<CtysckF|WEyo3qtU)Im^?^qI} zFFCsg9Q=4f<V-2d(U-#^GC4LqIXllu-zO%09@F=PQyKOkXLoQgvHZ85joKqT597Zx zcp2j3*9>d;l`#oA_00%m!C_XIqfH{hwYWljaEEb%Rlg;;j}=BtMuG&+2(mdlVWQ!G z8O>`ln%iGMQVc*dHHPluRWfu<_iVKOFY1%hg+6$XH1wqvdQ(}ZyOlLGA$TO4ibiL= zIALPOrpW9A`}n4~@gzJiohEwMFyp%505PKqtY=%H9x+DzoSU!`c&)Hs%s63UXIsYS zu-mKSU`z?mYY^*nfMwNo5bFreG@%`)`KB~F{-4d+WJFR0d=n;3W`zfdN-1^CK{(~G zWcVnO^q^;;zzLB}a0;vTg>Kla#m~zfg7WS2;Y88Uq2tkxq{#0Puk?7*_2mVmzGPjW zxKwO?DZ0K!r@n<xne{z_rG)(o9CY{klDnu+&6*?hTslvts@VEC2HCzOr@rH2>KnxR z^1G}rVfXq*sA;#Q&#$i6equ42sVA=qYoZ2z21_FQeGFXQjzk-s6Fw}^W6tLG`A)n- zyo}6@xAzEt+DIC_&#$(-eWcRI-w4kz^*NsUT(md(BzK`t=7I}EpT)n{@9YWBh<!5S z^|}3d=(7?&`HS{R+FhSMd#eXl8EOdFuRRStI1ZN6K<+r$k7}H0#LL<pN$vMW`|DTw zztqPeVBh{XUEj!<`tDnf`dTE|*N6w#?nv&UzP<HBsgFazKHjPCohQxqox=Jqi>WVR z_xeWs+Ww8&buNcp%P{F*vG4ep`v0;F^}hul(Ei?q|98>9zj{1I?QrB@MIW`^W`A#_ zVch;ciu#P$qdxx|<1y+7;lGGJG9JY~XT|7qGeWTaclf5aePYI={PF>oK((J?sXhXC z1%1?y2aJ#(58zLS?zgC0a5j1b&wCLd!^3dI89zU8eJB3~q{R9yLe7;rOx=HAL4ZZR znT9K8+zUvMkETgB(o~;~3KF<*!tiQk1g>41#PdQ3fNei>GOTY-tYcWS8s_EURYMdQ z`nj_;G8q(~4&%=DG6eM(6YKh5%e8hxXGh}d?)A;{7Fi8J-0}9tm}$Q+HsKe@<t9wL zb%GQ=JvEW9RKE$Iiv;4z4(1uj6U^j~G5I$?Q#%wOJ6E{j3Vk8_RLfO|nXSvgUB*WU zo#DJ)4I?{4)~--%`{PF5G$-$M%&RT;giOZ??GLN+(G5yjsbs85DBZA9Cw$H*UVhuu z#QQ*huJ^d!k9_-+>o2?eL#y=4hy)8iCh`9lfA|K2`q%iwdZhmq{_uMy_wt9wAD00f z?+>pbrWzg8wLg?G@80-Bwo3Tl@Q3*LkhG{<VqHClpjV98Mqzl*F``kW*;9-d5g#M4 ztUdS7Fo+W?ls`w~#WWeCG4Wzt+?bA!7x$@n@#YiokH$U5i;K+w@F>zp&W$TOCSLsL zL<feKnM}UjVdCP&O^dqpk7p3mf6+fKV&1*+j}uhF|Ik0S{hE03f7L&Ze(b;EAJ4(< zevN<Ji1fe0KQ3c(FaNme(JuYtc1&@<=pUys@80-FFO~3r?jP7D_-PfF4zgEZU(0!l z8=ii(fNAk@af{notQxLO!A2pzvy*W5iLtJ34ntTsgoYWLo7rj0(;vnrppUl>SQp8b zVs<*d)5F=BSU)V4d&^<T9qL<deL}-B?IB#rxeF=o_?`c-W`>D2_W7dS4toUV^O*Hh zn>@#7e3AC}-S+$yBiU-GPQWCLn`FOQwPFVc|H>qqiSy48hp$c6Hw|c%y2Iv%?ObOA z6kD^|Da)IsO+%bErGUgTU|3ohO>60qEVoO;lJeBIEU(dEyHqrW5!Tt2RE5n`YiEsj z*mJl(bnn}lG8tO6zm6>k>=&x_b6X@8!OLx*vt^xNzbx~}wK%E8K8x9Oc6O%YH=nbU zV>W5g25BI^Q`n^VZD+MZjfUEPbQ+-V!PnUj{?TcY+RJ^A+F&E-G4y0y{|wjq4;d2( z{S%$^MrbEih;p}8`x)Lk#g_1J{9@I9_DkD)<K+QdG18~V4_Iu6+3aV&!y5<SQ_N*) z64dR$)*z;sbXks?Q$ldCyB?hP7E3$Ue&A2A>`OG3DhZq{&z^fo8e)He?lK4II@y0& z`96+OV+D??xr>fxGzZvA=s748mfvdkVRn=VnY;9^-rwoe+O;VY)_5uQj+)SVQL%q% z#ZU|u#iH2JS~0F4V-$1tr?drmb3i9|7XH<TTG+=kaDSPFW7Rk(Y9H*fa~*!&BT!>q zjIOECL@QLH%b94gsm)3gycxZj#{MY#`$ufL$^A<?qQ|jT)_cJ$V}I>nt6`3-_6b() zngpb%-WK444eWCDvcGGBb)7W?H^^+h7KA&BixG%$$_{tDoxGnouzu6LW~JhD2psK8 z!XtMzT-_O}+!fl`{*m^_7=1?Malw2b7f8GZ3gG!o9*Yj3FA-XsgZty&DwlM+qNk@O z1j0w9vI(=*__V??`cLgb|Ew7O-TS5BV*$8RX7pyM{Vwh&yK<ZmM7wZ5H7=SYaycoO z;7>6om}ZzD@z&XrjotYqyeD#%WLd*|nsP2_=&u;3f$$i#5hDT5**^N_g>Kc@1^w`6 zQOOGT#jRSfuUqe{t_j+gnnt~CN~7`ne0Y+X6E08437=$zu1QVE&H5y<4zHo$!09Ks z@UDa*tDs3|`vH32aa~d%>+|3UoG;Aj*9NQh=JvBaJhTg4IV_=eSGVdd^x+WpqLVbc zA6cAMRBW<UD`ix#pxw}A@UBd{4EJ-Bqi?fBmOj96#2$v%#E4*(9qs?r!_LXx%bt%6 zw9{6s!c1>QJdSB^8rnN9CwygIw87`#_BO7;`>S>Df2F;%;K3XtZ`==!l?i60De47> z$_Y<J#}p(<hdi=-hx}Ld!w{u@gB@i!K96NTVIRyspKR^gv}j+kLn8g)ChQoTUX?(N zj+v#)`TRboon|@Tl0|==&edczkG9P+H&58H&7&^WFe}N<{0VOPXEmPLzk$%t`X?uA zKVui8{=`7m%ZYVw(|8Sqn665a1EE*guYvF(se$knsk^MKcM|IsBY_ha%<!97|FHNT zW7|8`9|gkmbSE7xij0N(PGkwe(%7)Qdp>Q4PyWCW+()b#sBN(VwQDU52TLXm8^YYI zpAzfyVaP!EJk<qHgN-w`6?&`vN&F{Lt}XtC4*fGx&5OaSu~#LLwKsNmZaojzs`o-; zQnCBQF@hM95IF&Yn0zPiDc_MX`N9>uhBsW$IXvXw73yejjfEj&{=h>UP9gQ*R424& zbG(Pzt#DN`quSe4EIc~R3Qxn#8J$Z`0*NU*N}Nj{dE#EAuK&DxC2XO#uwp`~-w37i zR;t-#D%`aF>6m0En#uGg)(|GU&y0^NOz@_}J!k$g+jD7`?MaVs56%prkw$x}yKLab zdsGAe+I0iVOwIqQ8aN+b*#5_u297b4=>`@s*?lp|&N7lE-l`@n&OC#WG%^t#V_M)A z6D%^p3+{R#x}KR|!y(hsr{k#r=KAQ$#*h8WStc<Cjxf$@m}}W`Y&Tp5Bh5{=U%;rw z5{yrd+3&SnNwLd4*FcXcW6Z%gY5#-Q8t8VFXe<-WH<vweYanO7`5(3C6*j?X&(0rX z+Vc$8-h0!Y$M4;X_S7@cf4x1OY=YCC<6_(Mk+VwrrT%#b{{4&n^DGnn@3hB?_qQut ze>>f5&!`{JIJte5!wLtpJ@C7;@9MIj&W|puA5<>YohsiR<98=T6NOcx_wL5Hx`yM* z*qVOc1h1J37JYs~7T;duX%FqYm`!r}tMdDp_6>YcwQs_md)dC@p!zSi@2B7YpKM<_ zo8+`lom$8Jxr7WgzoGx;-m#bM8w%Bbv3*DX$L+(jY73F9Wj=Re)noZpcQZm_eT9Qw zIOBnn0M!LnxK_o@9`SK=X1pH{asBwp?+iQKv<n~_H!sAjrs9lRx3|=?R(|3ddr8z; zA63qp4%ctLH^!s0+(hPV(FX}-ws4-?9cxcUwWeGD*#xWYYS>ZfbNvn)MBXyudd!Wt zEqz*LFXq2tuQO>P$8W}e8)L5{@B5GK<-<_gD|@{KpNzBDAXICbD9&Elu<$R~YyMK$ zF<JKH_R7_;RP}JR#QGW(74L2%U3c5{jbXkc38L=yE+!(YrIxzz1cBpuaQvv>-5BFi zhTq+<{BG&(u;XnpiA=vM;(AfGJ8nh7$QVNXy!crAGt|EaJN^XAcXhravgBtP*pFXR zQ2zLc#!-J1`)(e=F}zo<`JdbO?yu1z$336_iUxI;LDyiG`JdW%+`_%I@99VwXWyGq z{~qjnKYHXpwC`Ry?Nm>vt)3U}umRU$N6?0jL9hA}AUe<Y$F#<Ie)KK)mi5?faWWj^ ziiW>FpxiLwHrR7vOd``?C%gW-wGs9l8{@C%p!z-7GZ#G&V^7CF*Y4(@d*zh>nf?0E zWRCq#-Wg-Rc0?xH@8E|2*nS&s-AnsDh=g(W`w`Xe!G8OrYxdH9zczm2?#(lPhP#NL zV_kP#`ftOWTRLLQc^{W!M*M_jmxZI2HRGrpg^%$%!!;Kw*DQrsx5vg?(>2Grt~neD z<q3Q=l>QN_?7_58qcf&7>hnSWh4}fO+jksI>bUFN9WnMj2NOV?eJ{W1KezAx@cO;7 z@5eXqX5S%DWe@fpg&x^U`-acwD)K-pd|2lwo+s^t2?HL8^Ms8!Zz2bY<p@%W6`p~| zXzEP_?8PM3-7k(B^EN_GcrqS@pgeVyC?&W4<D5_`-bM(7d!}N)ri-@`a>A*2i6I-$ zq2}T+?671!Z$kliAO#W+Slp+Js;r`f*s@|@Mc~sG9!%2v{rHK8_D3x231XutiQb9< zk$_1?zg4it{sDoo{R4OZLE8J1`%*}X{X8Nl9uY!~U-5*^3RfqgX0`=QKx5Qv9iETZ z9Gl`XTkwLow>$oGd%}Ep!9zdS)9-e`$i}N3(l<qTwZrV2SbJi#y~j8kGg}INC_*d? z=imuM&VhJX`G<NjDjsX9XMh*ZC*EN{jK~Q&?VbEOOpKpb;=?oKP%n{hv#-bQhVveW z`~IGa2X-W==O^7C&J*esyT6qCKYT)s{z*~&lZO6DSN*ex$J5dN$^2jJAMEhS!*i*a z{evAo^-wux>=dQ^>i&_3_Nsq=sCD{BJwty&`fG>X18WK0KM9*+`X?eA8Qbg+@a@?@ zlVkhGk2t`Gd?|JqVSNuz+~2(s;=Ov}jy_6OeZ(+;{c?_>H1Egl(LPH5U+g3J$6O8> zshE9)PQ!r4po;CI<X_oGs&jtFshMj@eJ0?5I^rGn6fP#!;Q8T|n9j+OU6^h5aD3~| z!FbGzj>j$N-}Wcmc;<|!F~)jt)l~GB{UH}zEk1R85br7Q_+V%po~Y}8g{sA$f@D}Q z_<!|3K{a8GTR)$t<TT7oa3827SmAt35BLF;$5DDt_{7}M*SUCm&Tc=H_fH|azIoR9 ze5X4+fysjBaFFDLKDEN-b|7nq71|z1yx=W+EhgRi=ITv3{eH3-NIK`u+lUJkS#$04 z$cr~5wp6dp&H5sEK>&jt^Ntn%9SYcrA2X2xYE=P41O2uJu1EgPdDk6`D3_2EvW>@4 zjgU#1hbdWyA(M4Jo=ny^&tBi|yx-{F?_mNQXob&T+Kgkk(b*8s=_?Yf>wj*<u5|GD zn)6N$9<Ykn%Q)YD`DhU4@0rTzY8SQehSFyt{?;}p1h=Vs3pJCuiH@le|FO@&>HsFk z^GUP*j4tcPL74F1bDzXZ##!G6Q)<pXIk=BKWdW^;H%gq^KUweW7wGyw>9YO@=BfIh zgCDE<)$`Fn=xYhwZ)kNayt9&Eojo@xvF<iB6fe)gJo{S>Gk4i9-GCy(!xC~DCgXWD zn#!}aIA_EsJ5P#iT7uPpr(?CBC*}0}+*<t;-nRMtx}){{ZZ%YOShelQwbiabE0C;P z^>+9R9w6HJB;;9s^!Y(zJ$^Wd`wEuPm9%od7Hf4U-{eWGryB)AUoFS8TwkEy+Q8}` z@i6b4H-Ioi`0(pdI1m2mnF||wZo@GF`KQ*<9C$G%xG(Ho@TZ*c@j0QN@W?fIoVp*Z z|2()a-56?Zh8z#<@M_RHJ|(aIC?{NnHfAT}hCX9ih&StUv%bc26!gE5uPG+qr_47E zkJ|@|>Cj$!J8G+;o`G<0)E1~+kAm?l7H^=VAg;Ep@Y%F|FZ*G39iJHIgzyH_w1hxI z&lcD{De?g#h1GBf#^6^@+q2%9k!3B#7~$twtEFWZzNu+K<ljuK9=YPNXfXA3scy<V zvRmy3Lik?BT=?MR$HtjUao!-Y{%_2MV-*Qh6+cWAd0L8T$qD@+jj^9a&tbF&v3%-5 ztMOC_+p+&VWXx)>w(Z+_6>3q*Z`2)~Y-QQdX18o_UdL?jA=?#_ZH>J|mML599Gx?X zwdlvvi;y}OMuKTN?YRK<i8|MHI@h7hReMcpvM*@mWZ~OUJlGPa@D)<?6{*S9pSC{% z)$Fr%5w$D=zoYdMFe<CQU0M>U=yV^Z%7OV{ir8HpmruNPI6|G6*?tW}KQb85yajl- zamb}s(Z7a_4TOHe032;KjE9$fR#5wMH|y|b_cdl-a7E>-ZNqY2A9~4Y7_=eK?ae^e z`-ycHJfG*+Q>c``{ru=N1^Ra~tpV4;6K4)rUI5`ytNV~HvHmWWfL=p!!LzOKK%Sby z;Mif$g%fk6Sk~Fsq~-+^;f>Xg<JGulRQ$l9Fobvx{-?S8c+?8#@I__T0Yy`&G%wPe z3pto$_1j?aU2?vJ@H`|LTQWAaU!=wzd@{+N!d^fjX^zHeM0i?kXv|*~i`G`Vrd#M8 zr`)U;s;;ye2B}w(?LX)CLBeZL7+R2yagP?<jTSsC`+usPXv7Y?gLCv<Q9JIT1@3$a z`!aHky{;ER%?|q?@9-$ZHv3t82U@Z#q}jD=3!K;$^RP^vKZx;{{%|LCC;u=^5IHK| zyGF;PzVK%!bv09;L&#gF9rj?Y$Eo<{z+NY-NI9JWD<V?K=q#U$2Dh3H`DYy);2ch( zkxcXq`1ZdczO_GKB$o|@sISqUG3RX%4a(s}I9z0f2H|uVewC+HdJQ+0;k4ZFwRSsV zW{nu>T>Q7@nx2@P@y=^@lKk=>k97GFTytbaup@vKK~Cr!EDG>DYPpFQY{T#1+0!uR zU}1q!w9D$Z**X^%n|Iw)C?YxI8|1HU_Sb!bbb-)k)kQh%tZ(g1mF4uDem_{(!)uWN zA>7W`gjvQohlE>FKlX=z5XJh0Hbb?y@p}<#5j;N3Xm)y(zrNd0p5Qz`rk`TwoSGa= zM?aue`z+Yc3h##&SENW=`mr5sd`{L6_%|%A#0y@FOoA4eWkcH|vv3tPDb8zI4I>f) zp|{LqE^-(Fv2%T5-CsCv!xyFGgpbP!m)HUPv;ZRNzqo!1?U#xZTY-=bQ?1Jhy^zBR zz&;z}8B?Gr1e{pE9qp4tUA8t}j-<uR_lkXhB(6Rx(C_nrUbQ9Tf)+`<c{RR<bN!dN z;5jK{^KKTz`~K3ei48o>70CJ>?7SH(x*&dMYO9?xhnATIt8f8;pJ%ed7u!}=gqp)D zuiCdFW}*v^rM6bTh;==ldv(rBy!H32?)vZW-<oUshBiQh5X;YK4%A+o?6VTH*8~!W zzsIgZT}DU2f0>q}N{-L~L#LF)x+hs6G&)9t9s7wP%?i;^%diUl981tQY@et@WfJSD z0+%<+Dv7sT15AI(3H?kL`}#*TE!LZKysVv<<_o@!MRkf5#%syAp+pThlLl}2gum;^ zihe&&+MOKe_gUb2l!V3dW4J&SHP`eR9%_Rp{+{0QPUL0`c@;NRufQDakWe);@h1=F ziaFkfN$?A6@5m1UMx85eyvmjl4rYu=JyOp1S|J<)Tv_!H{#E4}@L?=^(yRvT@xUs% z+)L_<by*JLY6@Ps$i-^E{Wq{Ddt=tn+|XCK;TcIt7Cb)?z7ETI*c0!am7|rPOB0tM zVDWyy3Pp0<o}JgCd-d9-$exVs)vI%|uopEWfS=z`r9h7vHkL-{kvHu!DJ8Lf2u1<^ z`MlhI9f9k2(O%b`i3J-b4YYvaxHr;qWJ*}`OYEzfAw7f_yxm{Xrah3KW=?Eq#}|Vj zvRs214RcsJ|0Q4hrJ2arz+dBl5KE|83HDN<aN7yf`Qgd-2=;#cCXCv|x-BfHzFB^` zEV1qhpjDg$?Sti3pauV|p;g-g7nChz6zR81oEmZ)roiGA(t<H0;d%bV=YB%aKp3<? zU|^{o=I_RqSybm(Y1uvKd{UyJqHffbEcw7=WmW|$vIXv={Bn4xnSR3`(2Dee1#=n- z((topS%;)1)?El}HB>4~*vnzK)%LNWb&-KOooq~VPcZTlvSX$QgfBp1N1uIIIfs3V zeGB@5!{f~$7HQXmZ)``jT4TR?Eo*?C?RT-aLFGl$qeasfk=X6Lql9{n6vpcpD33GK z%lMDm<YOes?MTx8EQOd5*R=mp&olhjsh!0Zj#*&fVS^w)Es*tYVjX_S)F*EN4v{lc zYFx#f7f!67$277|dY9({uhr)Qd!e@6aB*@VJQ2ra-wj@>ia`8}$zOeylNaZuu}3K@ z`xmRQRtWRg9lnrLmTv<icF18j{=PfTSZ))w+Hc2I`$h~4o}~^BSq}T_gVc$)Udc|v zVs9F{Co&$uNp_NvY+enMSWJRSVh(#fZ=UaZ!(HFR%;%Z71!Yt~SjFlvv5x<SIE)ED zchh5OoLE<m;V5%$r+ps`GellTL5|$e&-mGP3?;db7!tz7#$Duwkx7C6*-3$ZZwBy_ z2{15Bv0v)Qmf-`E33!ph3unz(f2K@&oM>^H)9Qxbk?nbCAT<0?%#&9fnxy)n6#ej- zQU(3*>c=gLeQ9ZUkB?r2dpgx8pH+Wkg?nOO8;YWw-q39#=J3`)|A}0Nrr}KWp=uc$ z>X{1ATN=R&rSj?@u%N|{)o-MxP8;cz&=S*^Xn6p%Jb+prKrPb);Zk@Ww3L7Mf<MrT zP!ZLyKpY`XKT&N+;&a*lAqz(Mc`*bRL)4+tb-25ko|>FkU(JD7yEYT6qL={Zv&0+F z_qe-jO`QKWm2Eg`otPIUxt1|SZWQlB3DidxoGSgA#QB_Nt<@j#K(~E~oAyx1EgY&% z5XVzji;<tRLsA4*Mwu=4ZF9ij<|`?9nB02X6*5V3T`zQX#4fuUNpT-@I=U>-FfYk2 z#cmqU&FXi5SK@XHp`?AWy<|4k^ZVLck<`8mh$_90DuAVk_7<B*>rt~n`yk4)pk(j_ z)hj47jK<@Z0v&1>vFKX#7LNQPQS}!41F1~sew{^m=RRS#+z*41yF=>t4OVsf5OHGN z@vw*edO5_0i)Gf>Zz(b3L1Nwh6hBLG4_rCp&v`2&&C0^P3Z}Khx<}9#Sf0SWj>*9j zq3{TduP*}q-p}c`E3o?K9vm%!to1peuM_7VBLfC+oS>x;YthU(h!NMFoE!Qnx+btf z@8f=kBf@?aVIm;I16wrPE^avI+nlU(QiI1!T$IDi#@$#YYJd+WFiG`?d^|C-p=Sr& z9qx~rI49H==Z9E>HtdJcye{#UlaSY4KeK*x1nR#;>Tf}Q*3Wl5FeEYF!#OCEzi!xK z^?MDAUL^Qvm(}C&K-PQM!a=n=gY%8?j(r?7iZ?|`(n;8vK%<bj`Xf2(fTY8*df<xY z9(uRy@GxHD{GUOMY&hp@eBs}FW<OyMBdZ-11%FHbll>lD{$g|*HFwMBY8*Pt3n)+^ zn8Nu0TT`4FnU3>tdnq03z3NY+FVHLng{`V@b3^B((t=6yv=!Sf?e)B02)&epcWol{ zlbEx;!$ouKJaofMeyhAY!kX;M>4^ml2pEL>VI9GZ8XSV}BZ{!oM3G6Twf*C;CGX%= z><VpYUuwS(&JLg-kQG}d_P=<U)gHuA?YL&7N^bgkUrD~z9)+6h`$3cZTGjwt?FI<l zt(sPxKep%U6tC$NM<QF)9dZ8?2<_seE!!h<<73GXz`8TB?$6@ar^#c^Wm&g;l*#|+ zhOtK7Y4zJ~t^OW?s?|z-5{qAKmJLr$<8Q!*{n(gnlgWgVtd_+2C-p?f!@;l^$IiM8 z5|tqI0&>4<WsONqOPqf(Yr`&5n(w+RazY=e^?{m7{)AA?S+1cPx7Tx%upep<Wprz( zP6JMZM_A}_%RUt(LiVl&!*=28y9L9(3(&ilv2vvB*__*ux|T~`bx*?gaME)T5HU$k zPd%UaE8$~u!`JP?tz%+c2{xfsaCAHI{%MS{KUCWR+3=9{MF}{}Wj@?;s(k&B&lzuV z`6rtB_4=fr<j2g2=u*2DuP&^|AKF9jJyp^}-Fi8trCM=Fv$iFoYtL3rsOXTPh*LB$ zN-!cpPQ&zdxM4##)Hh=(oOnyV=!S8{TlH;rZl!BizUq`TgaO6g_PsJKDX}f}vR?&D z+YVVUJXNgA3)uIIZq?Wi$YJN==fJ{4um$^DE@1FV2p)H0c;)u{BvAXwuACnIbIyjT zW!6fpv$43D(ip#<`6n9upRH%GQaHd_G8~|n3~CRo{xWf6hRR=D&s@%=9_yKO=(hLk z87`~#W<7HggW|7T&-{aVc3aOhUe$$up6i))@Uj+jJrlW~o2hPiwz9Au!M`xzu18kG zSJc|&QiMilUuik6`8ihBJ0qChSno8rd9GoAlr@a}h_GB;fqYn2M84us#`j<N%{lrh zwr{D9H$5bTOlHTp4;==j+5=d0cn~7^THe=V{#pDL8MzC^V8&}+=<j5iwRQy0a`Z*C zuxH|F4#S9qjH?L3!<IU0pygQUbM|^e4>Ea$u9sa4noOD+ZwMthq2ut7054??#V`0k zb3B}lKqsW)Se8{h=avLoRSn#p&CC!P$!0R%pbJ%ekg-05HK_Zz^_Ws(mU4gE2^m&T z(WTtOl3G?z=i7I2=Jj4ZZJVNUN7r7(%<ZVah2Z3Mn8Yx@cG}B1%VH)QiZXE?g1i3P z?0S@7rz4a72NAEaYvp^Z{SuP3FX0??wPu!qiJT!_tJV9K5^wda-PBvp>N1e4G4h&B ztZVFpf!rltfQtUR81<Yl^{lbKDig6<;ys2u_9lw&$5nK;Lwx6ahvt17JLS!?gOht< zh8kUgcvYZwXBv2ikA)3}rXTJoW7Kjk^5g<RZk&t=yZ$z0mmHW;QuJ(?U_Y=64OdQs zhX?X7rYEMJ2KaJLLuq<WLvgb9OErO1V*>dyv2GCLE|0@RSY^0Ru8u^rkf<6@XPld3 z8z&;U3d+THj4FVeD{9?^=U%b-w;-{TUr#`bKw(1{4UmNs0|WooswwDkO0!PE6f};u z=7yBIufAHc1+g^(&TlPu)(3%>KC}+*HFY?4?m0UwwKT?j)Qat!>T!H7VRd^g5IQUn zx(v5%`APO?9cT+~Txqp&EEx2NWPk$P&ZgL<El{C$?X1}QF2;@wafGdr2>oSQG<0m7 z+20IEKXN$)J87juFUaN!e>FC8B1*7VV9lg==hoPr>zNoj*kAJsH$d;H)l_>VfI9-* z2w?&6zC9Ilb31R*vCic}3Qr38M!!7k4SkE}P098NaA=%M;0~AU!)EjT9R*rFDr`Fw z`DF(Wd%|1ovkF<2+(0M7snJ?&2gpgIA^5FCJg!79;YXj=$zI0($jZ={4ZWm(w_?^h zk3FP{T1&;9qIN50J@&_0%+F}OIb86(;Zm#Nf@E19;+HYdB))f;haK_cmGT44wX<z* z2;-UaT>Oq}T`r?^7zcN1XW4+~NzkUpgmz*nlA6A<6F(hbzr{Y{K;fgEchCfRvwCF@ z{F6pxG7DgjhRNJu8;v_`S*WC<b8?V{&n3CT^@yA6N0dmWJ95!$kjr_rvV*1smClEm zTu!~O2~@0zmr2ylP4NY%LT#*dpmuN~>P=hOU2AhPl+{X{&PvfF-^wAISm`#qA)i9g zXc9fgsXs-kE03@LcObB}NK=1AlOwr2Xr*pLMU}OAcvj#n;MU-NhRQkT3blfXb+<qV zu_tCQ-23gY??h?Kd1k^@`^(?aU^HUr9j$&FW+FBm>5G}(Z3&q*NFS&EVr@~^d=HYS zjaAW^S5ZU~n-nMJAYl(gJ7v5s6$^Q%pGJ^^>(Ao?#>jxKgkkz=X(6QI0!|WIk_i%Y z0)I5SU;BzmunoP0*V?%UNUvjlzHZ%0`c<F^y3VN>Jr_*HQ4Ey37;>s*m$*`C#{nW; z$lNb;5<S3C$XP<nr08kQq7jlr{kqx}6sdoOg|oS9g5l)3*AmwUr+|+vhYRu-8yH{y z8{=`r4`?7QLsuFJYsQYpMOQek6djLuAd5L34{>uj<FOLC+{UQqq50a!T!*?y6Yh9C zm&BgO<Gr{I(GL9}j1%=@j>n%SP$=VZ(^R8=^eQ@Z>qJGl_5TZm9*?6@7S(mf<I_wW z=goUP9(z%<nDJOd&0@!6p0q^9;~Qvqv?Uym1Cib}pHe?1Uj4)_R5Zq8jTkd_xVo<D zdfrCePlhx8ofI5@$Nxv%n}A1EWbeZX2@(<QR#D?hI}<gyP2x%fwL=oQEggvhg5r`9 z7ZjJM9RU#urla&Utx<7A+!$w6+))uBY7=A$sDlAV#5K55ZKDCvu&Ct!zNhNmz8!+w z%=i0v9@6)osycP*Y;~$`E$p?nv&Z{P>I$TGYL8=0hFPiN>Gn7b89K2?Kf%9Xk3NHU zcnYt}9=ot~=k~Z3yxf63zQv?Y>~S{Xo!H|8fT!6b*7Lb1Pq5Ao6J392{DUPY@pk+x z=InDu@_0R;5yfl;qK2LHp@-;nM7HL9%Ia&#_FUA#$a^p*L9p&VmsU9yh_C_PAB>Jf z)b>s2<<iJ{OhuK+!5~jc^u~kjaWaU2<z$e%9dNGeyxp`<@ECscB+5|Gp4-A9l%6{< zMI`>fqb5MZ^gU9f8$pMgbbMPCEut?CpG#F~Rj(rCaIIiS&O)K&f0B*%d`M^e{g2~3 zc%<X`1(;4qKfhpa^5&;=P!EnPcpIkK$#Df~hu^#{<f(a7jD_ycFQ2DkoWWM~<r;{` z!q-{st)IcY^%JYqJ&+t&Ux87gUs=NY>(ScrUbV|Mq%>vmkaQd`tRFaBT8P*H?brdn zGB>`>L=iRkUisO<hxUy~?9T?K&|V3&DQYjRM|}75d_M^0>S9ZMd?9knd0vQ8X{uPT z$iuv}JRqGM5G`w(<Wmm^Gd>iS!Hi5!08oJDp~~z$eW);8;A%PL*qmwGlqCp{rGV}8 zzz`EVXM}Y;8%)OE2-L_eF65PylV$G$2hWj`d<h5Aj|k(@V2><E1#sc}{R^(peY%*$ zgGhlUsgv1Ws6m<hwyJW59D42WXa5ue%|X0t)k?f4-vKLKi-DJexk+3?)<RqxF5vgk zw^H2Yd^7m_gIT1R15*xR&FCrHuUVBfqdV8>HKRejX7m`K!+M%iuq-B80vl}%Wk>gp zc=2NK<%EWehy0k%UKu)4&NPaRM-+|8(Aq^gJPzHq53KUW9O#mqWP=`0==9Y0wT|>* zO>HOirPkCA+kQ=LY2i0m7a?OmsLZ!20K#o5`!skBl}9^NVgQjwXpJaP^eWJ~I43zf zjZVEk=4a;wJ-_NJoz_rMPVQdWP6G)kAWHo95mn@zAtw-J5U7=RtT`i3Z}jGX0{W^C z2iIreL9rw|n?>`H1>hZz;-dn>CNSBH#RN?y`jBy6xPri1v=VxV-;Rg!@i4yZx2R}q z)w+K`JKg8`sp)K>T_Y3=mryQJ_Y7wCR#w7oyXqwrqu$2gix{WeqxG0srz0u(jxB%l z{an^CI7@~(=JKjyDPyl_2<?rfzCQH;=Hl>>ABf$YukOH0G%L__nl^TH9e9?h&_Lws zoZ<+Mlxhokf*6azQ{M$%2O_6o4cTaX*!rGMwQKTfto+jJC*Gk}a8@6&a+8m>Rr}P@ zQk$N0R|m7UGPn|R);{(p;907RWMSG7Laf8mFl<l4a1~>aR@Dntg4w9@Dx`f=eHWd0 zFybsC$LFdh^#=IK@!TFmFdTmkf7tCvH)#(Sas{ZE`9U%teEkyqR`mjJQj-M(s%};P zM!%-U0xofdy>3EBqbo#4tCN328`W%yEmkMz^W|}QLHr}w7pi;BJL5;UyO4NX);q`s zsSfhGQ%XDX`m@Mu9ci@X)uLYtAiM&#5--15cy-$gFDH33zh6LpePB##PhGn$KhzHS zT`d(F`TbSDAcPu^<NsOv?-FL04#KSKOqe<z-=xaUf*jW4j~1qwp_alx0*!d}z^X{H ziFo6PgecyfSp0ciTqLQoO-fKigZV#+KUPyGB1l3|Pw_wWGRloZx#aU;1jO&Ec;%U# zHPZ`ebj6K;V5%iiA}w2({1p65K0}50yI{xnZ=iN70Om*d;S7C-6}urv`i<B``1EzK zgaMl?YS0n?NUCFlah4=}pBzHbRN|w%gRMvp9E^<=XC$!5-~uZ$xDR@Pe5^gExt>OM z@zsx{3|=a-Ac>`r&^s%#!it`W94o88w;}@zk~<qejPG$#+^MADvV+Qxl75g-(Nv<R zEt^V)8v?5M8;p&%P-!LpV-lo#IBT`YJ>Sn#E2cOXB)dD~inMwwcTg`7l~tkMDyZF9 zDA-uFk<5*~RD%kw*em=|YY1`{@$p+VWqs~2*4nDB6Q0xbfxtHX11pe-<Bdq(f|ukO z^B-%~m$O-@1ss;cW*%b@g)B#F96Zu)F=Bzp;`-$Kzf*pFh3@}Seur))J^$D8tJGTa zzmeau<b1mPd?Jk3ra_j`y2%u*IeoOLwjOWNS7VD<tt3TWVLmhNK@U(j1Fu%3R(_&& zGxZyPqII+QqLEl~$V(Q_dWqBud^?5dJyZ+3csPHlLxv7DU$mlC9cEI}RB2^7vKv*p z;YE2CRhs?+(KxC!!l>it^1C>tO34pQy!i9{M$pT6JV%w&ry^i#s+kKIyMEn=s;RW4 zrmShw9AVEIJT}Z)=x0lrnMaMpXW-fb8bO(~Nw>v0{6h^A?5%1TXfgI^pNAWQ&muj) z>W@aB0Yd&;e{}XHHuL{lpX)bEt^XT+9!c@1>vM%@M7ll~P=x<Oea?{sPqKIx&yMu@ z9O>s;)wM1ikW+nC>+@s)<Zn{a^tsDGBpQ8wY?eHWKELrC3px56H9EAX#_=oqJb~Wt z7xa0!G)MG#1|A!{iyeLD(Jpa+f345e(x#63JW;T>s@p)*FY9y4#&T5=Ti~2woienh z40gEeu5TkN{tF#Hon6Xx-?Qmj$9tf24Z}w1vC{g#|4;henLkL){~J9Ye>!=Q*6)rY zD4MS4>v=5TZ`bqKOZ4#Q$mQpkym&{K=kj*i0Mrw4l4EbH&vkw5g4SZ39vDP+K!H<^ zux$WAt?CR>E6MdaTzGP|-2>^8^PdF_ALu&-5vy6+SjtV$$g^0=jHmIOIvVJ&(9Yzo zD9!o7#mV>a=hFJ*Cp`Wn6+<}tiQ(T}{@1Oq5o-A_>g#)$VfwH2_4N%v^8bszZvIYc z{@>{9n-osEzRneSrR(eO^vl0PUpu%oqjvOWMqjtQ0t$aYU+)W&9clV{S{XqYj~G>k zR*!sPdwuml0Xxyxe3mx)`qq>3Ec&|s2|TCt^?CH{|E<1GTDKZ@t!@<uiuGXh{cxyz zZ^Y<Ohj=ob7|vs$#(!25ZtK>M^2|tv{{U{p526x~i1{4p@WOf10OL9djD^B^Gw`DO zL&vhw9C6~YsvNa|%}yUO!Kd59CVs^4W5q^uZ2*COAcJ=vtjAAvZ9FBVggk%pTc9y^ zkzN1W{dZ|z1&aAQ4w^8IV%4KCY{M4Jk}6YerHr01a+1E|t5&H~ETYr#+AoZo!g)2) z5{{k7C=8ykNoA~hp%geZM21gRY!)-B>4dvHcl1>ePSh|P)3*#^I7=%LxDLltakv(r z?a8%|rLsGrc{q<U#jC{TTC5OD2Qx9jjHYiEdj+)ub1z&<;Z<W0f=FoK!~>VG3)17g z8v}f7Rks+kfo<?U3n}UL`Nsf=D*?<9Lp%6SW&-xEtf+905;qm2yco<{Y#~?E9+y{) zo?CGgxtjMFUQ=dsBXm7^CvYU+!gO466@C30+Aj!M4#zBOx}5&sUI}4heq%3Zivv&D z3+4ac*^3N#I<Xf$9_rLy?(8q^;yIW06vH2}mm8Bn^M7nFbJj_n|5JOpg-Xzgy<9=~ zFWHNPLchyi<djG|2-<<YbQt+{VlV%Ai3HPL_IV2S!l9uv9z331pthIOPvc{&I!o+E z)O0O71(tN%%Sr${+RL+#c4{w8r=WbwUPj>y3|?(}iO7c)=fuR*q3b)cmxti8JJ`#R zq2`0iq;-w(3N<HxdiCL$2RM;EDAx=3#%1SNMqax$bIf_6-TdKiJmD{qZ|-`Y6EbNL z%Wydi_U_c+F=PH_ZW6roWck+eioD?x_gjEdb`PEm;p&^*SzcciA2}5S*Yn%EPwpy- ze{u=j8y00?>UpjDQPgBe-mV%9#wG-EUS2_2VWYlpC4LZUhD%UqOegPKRGZAKkoWTS zf*PaF60V8IK938uK9MB{SAtT0TkzR{5d@%?yCKmX(RA5%G!5OJre21ohWj*47lEe4 zW$bUUb?|!qYsEl{oR6GLBwHmuwZB)}tGOnv%gKbZ{?ENTW#G#d+IIRjpnx)g;w9>2 z(TwxB2leA%)@X&T8J=(f7WsPSWc53$*fVvBr!Io>fmj))@)l;wqG2v?Ec3)KX)lKP zHTT=ubK7`8h_j#=m)l@Peiv1W2C3G*x+?V9OVkU1gd06|p8>n%RbD{23neP=e(Z3? zp}u;tVRV4PM>Sb{=?O0d_L@^OJh#s$CDCr!;9?F{^A|@Nv6j~}r(4Ww_uMidn>%{& zrL_1J<itT6D+}8KwXK=S;*@{)#LF^@`+$xcv3x_CyE6#Fw$LTPqRrQLt6h@GXV07- z-MF)W8E#vToZ)4mMP*?e<#8-tiYNVe-+lM(TkN^__0mW)SW%u)96PhQW-D01ng_%V zxWBkIQBWFrqb&2oV$XB$l+`Wc2d_{8IWP@b3Rj}{#M*&P8;ZFOyAB{|QO>63(xNq< zTW-Lsp6@Nqx;QVVHj$aQ8o4oF-R}tO$%6z%ASik3^?1R`<gzf9C6rNc+Kvhvi#L6Q zqwOx!mwA6FL4@4oT^gy(F_TuFFytdUC(9T?q!uk;+lO3<EsBlFS%fNBUQ=@tvQJt> zeX>`uVfVhKlM=0<u~f*XIXn#K&FO?x^2&3y@N=QRa2ez!D`AS~kpZ4t?gG)_W!0Ay zQ!<mblChq97ZgX{h*dTFYqsq?=1M%2#<K4!j%+N;Y%KFUw;EwsF9@UhtiqM0k)@m3 zii;Y@oK_lHE!?}VAMJp`E6e;y<VSrDFDs3_9=cyDnTG~s6bliijvF4Z$N$)0DedK& zhx#I;zUnJ{G7t{`8zsXy%Zclbi}j9jxij2zYYdRW#>B1ok@}&Pw>*xD3YY2Din!6v zi#xV+ncdEjc!>2wGr!AhFZDe49$I;D8A=RfD;qbp6*Z0VL)~;EPcU-U?fj3lvk$5Z zFN<sqJ>Y7lG}dnBgM}X^4hPp$<J<6up*_$Lz$Ti8G-0HRhBV?w3zgjxzOx(As_7>n zA)@ff&#L_zHwk?teoEH0`N+FoqANrCFjtG3f}lnGl5jz)NW6*aXtlTS5CF(APDQ95 z?Xs$}NOP=0+tX+;G-fr6Nkx{yoS*=2;<AoI%V<jF<oe3UdSgbX;FTJot*8KRWtnfG zs!#zrg57vfitx(NJzDt1LQe7?(kBihu^UQgeb(>m$pn0I+FRT+mli_JtJK<ib`qCW zr5==_acWUt71jmo_MfQPSD>C`SuXqkTDEs124&ZXY+_>A*vFLTQE}pF{K04pX&5B3 zBEEp{Rnq^gd=MV>n^TeRPMuG_6D8NBWXX2m3>+-s{l)v<-`^sQH1l2mNB6yl{ibal z?t8~FDJyHNijMKsF3(Qvb_z&Kn}119|MujL>2~zN$$1|&le}&5d*VM}QA2@VUD3WK z#Usw*&#Rn>sm$l#72<t{SsC*;{T1E&JI9NEDvm6RY>>lKl0C^!Yg4mzaJSkmr^bpi zLkC8%-EC{=2rIJQdS?w3Fto<n*(753b8S;j;WA{XZb{WwTC}XXdE>%*+rMBD5(620 zKFl${Uj8Ed(ejXQjB<a$01OSC4WiZ9F^B~aE<hz)>U!_&!n2E=)93Ar!eUU%<m`E{ zJ1DR|a4DF|WG*}##Z0r(G98!7benvwQzghGhpo6*gZ<t8@~r!1NxinKq47&DvgBjR za0Y9;P|v;UY<dem6}GAFA9cyVy;q)F{~<&U$-~Wfh*siPqMSO)Wb`59ryrV(?2w2I zt9lWF#H*Mw+hi<2#<_OJUXt-VE+NOAcJUB0(nqaEQ*>-}J93({CPLjngx@n2bBk$f z&c`2%cCP_xcE1O7aySL^dF?20C~_gz6$ewj3)B$jWI)FLjD{eJ#v6x2?Pg3uxA-*a zjCLJ*A=Vm2u@o&jtscE4H^R#z@S5>`GC~7Ab4p4)@%6gIldu8$q+{4S0Wpu#Nv$7Z zM3|xnF`f=n7as$v@v#&oThwN}Kzrid$zXb+0v_*R{6SiI1a7)~9f~BMQD+nqgNr5N zCdJ{66r^b@!7B{Nm-@bYGC=5Z_SDRBKKmZZoCumP=qLCEt4x&Xr++8$4ScbFzCZbW z@*}(zeyIK5^XdM=9P<;1yek`CqlZV!H`gs2I~KP-sTyF%kpUUep_}Vgj=hB6n6DDh z`5DoY%~)9x%o?e1{7Mg|3^pk|jp9!!d-lZpN*r9fI8)Vt8<Weh+vf9XB`cOUsc+B_ z9UEcU3yz+s#|cJQ`WVc*L?vIM{L}ZNYgavKouVYf5}qa}sPEvsdf2?sEH<tdZNFhJ z$p^q^0?5+4t{ZlzT0IDbo?m%0)M}`>Lafr0S1Wop_8$P$a4557oJ+mu(jRpc^Fa)| zN%st8SW=p|TX(g$fS=B5Ms`F*5(Z+XkU`-10+i6It^rpNFliB+U~gk7z920wq_G~S z$sbc8jRWBG54vQq2fv>b<%1$k_?2uj=HJkM3=BYa6n>c$`VECmpwQo4g#eb@0UP!v zg6Eu;k6?ZxNVVJosKLu@Q^ew><;NPl1+JDCbXNxuZzc@I#8*~KbAcqlx?9zcPvG{A zB|v7||Eqa28<tg)1rbV!@M>No($%MAOl-C!TQLJX;3Q^yHE#xTa8&fFu+z-C!S*U_ zi`(-ry0m1ZUn^WzxKbTBuM7Nyo?0dDMxvouzBroA4x7qc32#aQ?b4WX0|4}P*w4{I zWV1!eSQO$34-o%|y3`>;J8NxI<5p4gWWRcWr*0QI5zymTnUY5i@wq9lQg!L?V!$lW zrPfFjLfmlos!Sr&IaR2Ai<nWGx`gg%9<zaTmf@zC-C#@7Ca)nK<!77nXzA9YNB|Uq zSZi3%SgA+irBBpod6_CH%vQxofLnh;xUT&chB7W>&kz~vCZ4o}sgi)0x2*0PcS5MY z8fTI~fD6+|KofT(GBbJ+eKn6$?HpEhRZC(SCc>NrO4Ny+VmR193)1lJB2YK7aX^MR z{!(C)(K7->yF>tiAGKlCkvnMCYm&gJZ#V6a8z_e0-{Le2L2<W%IeK#o05~ibs|zLW zue*<}LqD`t3=X!@)P9z6H_+>UQFdT|50}~Y=&oLa%T)Qav2h5kK|Ux>oCTFKkCoCz zEmU0vsk_y+Q&64T5q)<A+bDgmR+mo+fIjU@=Y=DS=JRYQqgUt;NX@S05u6I4v%g@< zSElLQ1Ar#hLyVdr(bME={UR9!l2|S|&=IDaqRs!a1-G$AV|V?D`N>qdMo~E~e2QR) zB)VBz1ckRRGA0*b!dkEanw;%=Nn8dLiE;RYHtI{cF$@dAUoNzLm0S+wet%bTH>p9# zk!2l4wS|%fb1Gb-s_3rvfO)G4jCQ`mfWd`MjUuoLIP0-qJ-!4!)kLlMkTHaINq0~y z3V;bfV6GIWul!A{UN+#OHhkOhN_%@_M9PAIz^w>ARc6#jkU<5%R#~PnAc7E#THjj} z?$b41OQs{SfUgzmB6%Ic%2^u}qh@n^JJufeAPuNYTnNxSK{PJ10Q$QD0hL`@tpTAj z8&m}l%Jo1LHWo1$S(J`u5X+$A+rTiB>Z-TUU=#xV!is|oNb1#~T?|O-?IpQ3=WDbD z8f~%xxRXmw1t?|H*NlAn^scxw{?PG9Ao6d$QA4(|PFgovbP-X9I#PszCpi9^W*u_u zF5&~=8UbX5CUy)rz7i*u*6F?j(01WQocTashfeo#fVtDC%ETJ>#y<}mI%yH9OA9R| zFY)-ekofXP&?8Sk9vQFET_Xez4e_@v&J5ttn4Jekvya5AV17zDDkY2ZgS7)={f-ol z6}P`v%#cIW6A0|?GI|&$5qM_7XXFu*p^Z8wz7{EkScbYuHND4<l+$GFMej7sEKn_^ zAIgYcRM&X)+tQVK>V`@$%4*0B>d1>GFEsTN^_aYf+T!591iP>j*qb2`Iuy)12&Ytv zHhg_3Dgj-7P)Te^#di06wG!~eK-A-r^`z08^2X}UsOUDkGr9vf)sx7Vif_|ec!!{N z3TB`nI-YaHo5*P!Vn?6_Czz2OoH`~X4KpO=@Z>Hzat9|SkVMJEh5z((g_4UYfWX5# zRY!105i@utLr-A9Y1msctH-gsiAuEK?a<vEZy46g<->Y)S7*QnsCn=uiNPeAY?DI} zU@Phox|kGK{(P(HUu@;O>ky<vFmJFz7#N&%ntFgpqX?sz6DN-(Fh9zEBY_y!Tn>YB zPm*?ASr=I-YMY$SRxFmvJGSB)XcR@*A=aG?n^YTNBZ>FW=i7+Xr-TGhm3zI)(1tUq zevzN!6^yAl#^lPyKB|O<9qqcVV*7#S2!wqcXnMkX<0);hd9pMf^rCdbUcemxf|0fi zT{nnl>N>p>j5|9Rzd)HZj7hc}9JpQ_%@A~dFc4pSE6}PzMvA_M8U2efbIKrfAV0-G zcf|jBMK3o086b|}S=6gLjGj_-C^E>_B)YN{jm!oo;llRwRu?wCK>bN#Lj_V4wLtOi zB?za#$?#nU?%-&PYLuMrakHFWq3sLlGqz9f3h}7iKLMTY99*q9hPhGd3i?D>s-~)^ z;4)NcP^KwRqzmu}etSHr&z~P`O<LC{n`(SGV`Cq_R9uY1N)E{vjR@!EBdxGey?-z& zj2_ti%)>L5g!3{0%#iF|`0?bBA1O{O-eBqa38VSZ2ydJ5#(yY~DFvb>itrr1;2)p8 zuIF6Wv(J8xJdo#OC6Rw+^Ot4v@hj!C#>3u4hN#*k@^>zm{2?RBS;J>uV11(Kj>#CS zg5>6AK;zWgVm}(*kVCR0*7K@c$-25myO|8zh};uC5NJ97h|cXUsB>F5&ksmfPxvjA z#y+Z;se}}CMh)Qny3jn)P<Fn=Ql?OB>{zu<NP0DI6mqd0%snfN5&GQ>Psl|hDeITG zV;Ders2hnfIz^;;v2|<@5pP6!>K<hklNM0}T%Tv`aja=_914lPwluF7j^>DL&~r|& zX6K;QOK{JT>h~abwk~lRPIgZwsn|Cf?!_8FZ!VaP)37qs?Y&6LQ4<G>Ds2WB>9D<E z^r-6rV}qGDrAO<T1^=K&TO@bZ1ks}mVCFxT$Z<V;UC+7pbA$)ANB*ML(C?xtK2DPR z#>%v+u5bpQd9>`VqEgI)6-Q8$&8S1ow97RV;FSmKGV4V&3+f2y7l-2s?*kHzc7%)^ zWvssms=~PoIY)WN1c0i1qZv8c|4QE2*edm|kbpRur00u5+#>F@3?Ejcc~@qGW@%fB zhjs(TpfvUrL3i-EMJ6BB7YCs;D94z}{w{>M6D^8Jn;MX3Gl~tJ$BH1%I((Rb^n^KV zvoj5^ZbQeLfXU!KEf@4!LO(zcBym<M_c?^GLH{c7Xjt1X)fxhGm1lpScnu_~$Auo& ziGFx1yra_?bpYC7o2j}+9A}FfKq+GQ4xHQB(LkpC5j#4DM4*HD+DLX9sl}S0lK@Xn zWnHvYLS}++e({P9hHxIx%|dS;`BzVAAyn3JV{A2DirZk98NWSAD&mQ2X!Q`mx!Q^j z)dB}B7`d`1WUkH2Z93{UU`VV6hmkAMY<^eiUkcf!Mg7D(K#OcVDQ$8YqdJ}#`K^-q zsMDm$4`A{+y&YVRNGnBPJsN5t6Jp4L@6U4PW_>DNEFNM-w#Ivmw79bt=f}j(_o5e? zL5wsc_10Y0VNb_kToym-QuOqf`1I<CgP6-N<#EWDIs;%c6qL~!2a?_A5hi0And13C zZ5Esiw^6u2jXRJT@T5<*c#rts-4`&ZHnKcm+NXo|SNGQmm3Hv<lmYl{z;pv(ATH5B zgaF17?5%r9WirS#vrk(OVDjv|8n!ut&Bv|kGH0M^&nyYCh%8PP<f&;oDa4Q?&(vCA z*Se<xpjJ&r7XZ+r9&qt9P?ap2;Q|v31oX#O`^=m7_X9y7b$9w0rgbD@E;9fsa!13! zBv9~(Ksml~Kz9I?{3me8NeL3?$lN<QE7^KU$x)`{cFZ1R5-ROBoMHfe8*r2X2(xiS z014R_F!@Ri+e<z!cCTfae9`^#vis!~`};-lkoeQ@q?8eN53QR;!RUzzJ@2a4iV%me z4N$50VbEUnj)9>`(7O0>gv~cFG)(l*NPO%Zm&6_W`9M_)d}<!WLyge<r4^jU6o=!S z=rKY)O7zqgkX-~!=xG$VGKC1xZMno_Cj2ydK$SpKGf_^$+f0D*X@I6)*rUD_r5%#j zOBxSt!BJ&i^|pZ;s}vr*A~4$;q2OxVOT=m$B+d3Rf!Idw7-j{*Hno~5p!Ouw25FfC z%`;Fx+v`AgGti1O=;nQhH^nq3dkYglnU7wLP<1}p2nZx?=II9tq=S%PvoB&hh@Kp> z4a1l;Rq|F-qpry%rmG}DtieV0Farf0E@&~J#(-ymHZfp5>&KaCBR-=Sdl3VuDrZol zZCDG@Mbw79k!F{(9T2HqEeVFG8dN1_^}2zAD0`8{a|FRttfkw9m2(qq601GLpFrtd z#D`7k$~5TJ2I^0P4mZ$rsr46VCsON;1i8S2wcpP_PxH@f_=Eiz*xI=;QOZa~b4jzo zWkO%?rP&}2HSAj@Fizzdz+wZavH`OJ&>bM-3ZP5ABL0L=;DCX>#q&7cm7xTtI5)zX zNR$vgf$GEx)5cem5iekT)f-*|1Bn@#7)XRJY}ggq;#1&G^r-n2@p#9|i+tdEk^l^d z?>Y$6NmzYkoXqv&0H)*-X)4TL?Wya+sASS262eJGo+km1<-=&1Q7|e)^nsXC9xzv* zg>PslZpjv)EHz+ift{_7{ouDBEc>Ctei+UNe08f79HVS-6(4|WEPs)FQ)cq4OY1q- zr-FIyhIr!5>fSvlA{>=*mTD{Y`npzMZbiA874tFBM)+Z@#N<UtSz}ZnvPErv6YH1| zpNgn$JC~2+4`f$?tMYaHS=7o&i|QCP_>i8gA#G@WgN|Qgw#H!~GaoEQ<Qp1BJ~MRq zq#D>@lOV<3fqeg-#Kb6#lYUnrL{d2+#6ctRg!spD<GaS-+gpE{e#&mMI`m_7oYS4x zefavJ@{$d#7b>krZeO*}RW&{u-FZETv(@2ZaR@D{AC!x6wi-$OfSKU(KOItXa<5sP zheAnAoGeT(!kjPW2XI>9Pu#%HS)fYRjztD!78>m5YlRwjivDm1bLCo$!-bVHvv(dz z)zL>-M93*T6huzAnQKjRyz%MmEN_7sb5!vi1QUQzbK?I5n8I25tZugt$kdx`Br5XB zOkI2>*6OOmynsOr1u5h`1-ZC#(s++4<;RF#O_rA-W)7c|qi6rb$<al`fgGCRmAh-C zAXb_Risu7VhJ%;(qt&D=Fkg7vq`XeZ<+L$oka$y+-AGXFqDnJ4Bukh55EQ4P9wZ~i z!L@L-ya^hk!4i^QWWXFLY48l@9w^}I>4~L;)5p2mu$$8c)2N>fr^rgID-by(3`}Um zoERFqiXd=)H?|16u*M(;FI+O6WePehdsvFKs`tbti4QDDevGn-G1>tqYk`dv`p6GG zEp>&#QjlWNFn|)5OOb`i&+FaulXRo;X(ON*ST9ab22H6HcBHw|xk!R5Jw<fUc#~OB zEOEuE2?B$MZ59tZp`(XA2OPDcD3p@$X#~N?9u1?>K9<Oo$Edn+4)lX_4|rI3N*)PF zbGvtwSgcpa53c(>+Kx9#I*jClc$~ug<SCQ}XMl?uF3NrQwJ2ySH=2q{PLxV)<<_3N z0tAVJ6?e-6*y*_^Y}B6HuNRBa37c%`ewa>O95Kg@HOzy5e4eZyIpIQgDzIq=#`GEH z8ILo~BeFh?$IJvtvi-TAo`_7NKX2+mCUx}Z$P%PYLZIpXJRi#?=+9@MI0F`<(GyP( zWV4qPf6k-$Q~rGDZmeMk{#?p)VyczlA^iDe+Midd-KvP$cquK=H+Lnbn{e2ye2MRO zwa(!)VuCcDK#qj^+00+W><v@Ee}}<u{QLbj57cSz!J+@nc|DP@AF2Yf1%j`Hk>LE~ z?MU&blk)sk+mUh*a~MXeYu&y_+uAnP0J}Z`2B6m&s1c^qz}^};uJ##q4)7))GlmK# zNTiN-E<oYrKLAfYz(4=OpG)f#!?l^pt`2<9Egn+1GR_SYdN@C6-5N0j*DUgC0AQN6 z;)JK>)lit?{N}={)fDjt#$ub1rY&|aSQ;#r(|=t<<2zdH<I>VJi=9dkEcPZ?uC`br zQ|B9J<4rl6uXjOCSS;yEv)I3LB4*MeHb7!+Jx?FQQB|~A>7CS3Gs*CDgB@q&0@k^r z?OLhE*leY?*-DV)3W|))E^CF&qKYak{eB-_A-)uUXrNF|on0(d{e$@cHn!cl-O@(u zSq}gB+?nkX?lRt4cHX&CN|$Ri&&ayeJi^X7%bl6H5PxldmS*o{Iqm(u9I`lN@1D9w zq|mCw<}2+9o^-P>d|jKpTnh!WCpO#c8*Q^+hX*lxY{YI+7j$PuX=Z;7^b>Jcr*xg# zfv)On9h#~-r|H23nx;pEmL1Tv5{W_+PL9I&zn!<E>3X552HChe4))4Nb?0cd5Ax)! zOocrgGf;{<-%ww@Tr+Nzc1O?1EBaGA`vJ(F*j1bnkwTF)c3G0F9va6bQoxR-V~l&g zy^{0SUvZ>3(pW}?sIvs5($~BR9*L2wJG-GFa1u7XpI%|;H3k3|@sKdoA=Z;lY=%v2 zs=!q&0ECpSYLspvEt)Q8I+$38a8B$`?E)&)V|4HEK{cdD_l+)7%SE9iZ_-TO!aq|? zCfzb=R2z`U^=U|w?N7`XwxXn5+@L4SA)`8D6e9PN=;4qw%1-LTq+^+cZ;>6=o73${ ze8P`ubSdo5piGGF(gKvFNP-u9(0Bzena~I(Xm@ugI(WFdHRA4W>gev~3ZK&4-J{~z zn^X)^)G9?}>S{r6I0{>Xh<@COt(lTX0@B>wM(yrMvwX4)0|CiL_zXw%H676h#t~IW z3S7@{KB(NJc3ALg4L>no(&VeO^MO~$xBhGGuzYqfQe~%$L!%q2Aq4;UJXt@=bG_@? zc46>8GYEFOFFwyQdGTm_Fl2od(9C4e_5(hf;q*@@W|Jo=|D?y4$YSD=s&vOR?KL`q z>QcrcjU>Q~EoVVo5{vu=JQN3TCv|sOS7J|dN;gt(On)*&kE05t*HlwrzsYk`@nNU* z-j=mPdMicW(&<%bJL4xZW`{IyL1HR?+G~57?eQ@CK6dbG1<b7QLk`&<7Q|-!<rg)Z zN|v${Qw^80Rul5;#4*BeT9m|8>SE^5A(kh6Dx8;k7a+N<S#W6Q^(ltYe8q5Mi8>A{ zMK=P3AV@uG6dkYjxMB}fB9}C2J_CP216QmUwuy67kAVD0S+1Psre5koa%EqpjG&xx z>sw^CwBx%=>~@&3)bk<*rxky4wF0B>J^5;kT75;=2_AUu!DThe!s|YRfKB_gV@ZLY zH}WK7WC#3>oTuAWHH{=LP?vm2^T|$l)=8LZMrdGwv_g+zcSALaBk8{kX6?-Em&@tM z&SeLKnR3pDW4`R(4(s8~e$e2^Ph}P$2=@rbwi7o}7D)TDK^yia<~QsH=BE2N<bsbo zhn+Gw(WfhXz)x^gu$@s2J&-&8GaQ9kXT87rRQi`s^g8Z;QAH5Hy$Zn^hlYyOgYaJ1 z3l)7JZz+(&e;pv7uQAt?12QHpB4MtN*ZBS@^IOKZ7NAb`q#>sO)~c=&ay;R8*$PUF zl?)eA$SUs#Gd1mm%WhD7&f8a1Lg&TE4QpQ2V*-LV5HyJV@1Z~DApZ4kXy(2b>x&ES z7>RXW_(Y5^Vc~m_AiZ#_8ha5}b+zLvws1@k$OJw8?#lRyD7t;@_kZ9j^}QumT}-|h zdMZIrIqAVXcaAzMm897lzt~CpO3Vqx<aTbI|DtobHwNm1ej^ux$nZ?wWVaS~t4XHB zSA@%YGh;gXo7_#ntQOEGrGY0B{G<!49mULT+st9<A9E)+wCGk>9<0w&XX9PZAK5uB zcID71x3D$X@TUT<Bu*dgyItYK04c6*$_&b_J`CaLhWd&ljJ9uUmplE`o#$u<cqV(K z-NC$m4VR%3o%+uUjBY>+TG<sNZs@0ztn-kBS0FUr?^5bpw5$i#U=S1^O<Fxm1Dn1t z#I3hjwOrOyzrv<fZ)Bz_KEVm1C^2xsoOEvK{X`?Kkw!lew$ObsV~%F$<rs<9jP+*B zW4Dd_HId5o|8I*owIad1Ty?h4gC}WsZDXb!(Hk45)D*~~I5sG=Z!ph`tiI664F^KT z@h~XXmi{%$>fIG=g@&yHtTeJszr6p`HgN^d(?6uiU)17B)}00xwYVE#PU6@}>Mo#3 zmwA<|B(=hi_w*cRxN@YlA{d*1_|KJuB_JwmyTZEzg4^o6S)vxDV5rYi_X&D8o20nV z-v9-1Adi3rY9=73$3n+L=-RT>W3Z>Vt*Q}s0Rq(+KvI<?Zj|spOdHFHcej~p;R-rc z&a#~P!~IS2*rd*dOLc{ePr>6Qrfjw2llVb)d9{10>`r)${{<;Tv;`vO@9sc^olk`y zsxe@7@)>Q%Xm(2BI!x>gnynRX8Kz(DwrZw4N}Q(k6wRZc%3;7{Ch{`-=NNFATye)< zFBf`nE>V-Z+Fk5Sz=cbRb5NhNt_h1wam;oRt|)~5dcqrt^9Z;ou{bI^Is)|EYLA~$ zE9Hq*!HrhT!Y!{4GcU|N*E1)hc(NZ?vv2m%M#3MlLG15~oBUpiArQ$ZUQ(Kon~_)` zb%Sg=RXS2T4m3_wl=m^#WjAalbz-U;@)RMr2*lp`gLOFvGqR_lR~oYN1qIAi)+t%h z0`;s>+5$KjbuGLW!@>yYBeD5zUCC8{B7UtZ`^aOH`U^T`qbk6vYN!y9uL<K09zi_L zOxYgh758(WhhXl0QOcCK9%UQiP?W?7_$4qw>nkT-!Fn)*PN;TC7xg4{&DQ-GeL)P3 zW-1pW9ZBcRMo&O1pnW>FYuf_6LlE7d{~rP$AV?!`2f=TjT835x(Ow_UtxW__Ilps= zb4%p?2sK-Sc_{69dXc<?ZHtA|R<VT)s5Yn6Rozd>?R2e%XcZykT838bVlgs8_0uz+ zBt6175a(js*XN|M?L+gLqb8AoM2eQFp0+`dihD&KE$SMI6C>C6?Yi-zzD8p5VS=$z zSWnX>pXF1de9tlQ9PXfs=UjkkI!vg)gNSbCF0Ab7JegRD@Uj4OEWWgGZW^-iJKNW4 zEu|1WmbKRJ4E18<r>@J;Jjg+it@Z+C2=lJh5gwQOTG9R0+gnjitJETSY*HV=LbXZ} zlX^`si){2Rn;<Sj;Bb|drwv!nLv{pwq}vtn)dz6npU{QyO4MF87`ieLA*u;*r0n9} zWw>a_SEE=5w-PN<&)}nr4QISZhW4hsOkTN3@Dnx11ya4+NTOLaP|vWA`wsUsHuEE@ zk1rQj*`jVAE|H!mjLtp-{WM001J7hsP>j1bCkFuJ?92f{)K&u{PUHfj{R1j4<;76A z|7!@N0W3hEl|x7vsw`1Mf7CQUZ1^0C15VVjiy;nZIg&LeyP#>fITO2~UzLf4_$MIB zvor!@0wy)Gjp$^qSEmP|1(gieMpaBH)-h<seZ?87`-9AArd#M7pU$g+{Ou8Ym1NeF zj<cBmg9n%&>nTVtNIi)&=!OP$AO<iXN_y#8Xl(oko2W_>wfqO>wU-g#0|Ge|(Q7m8 zVZWwM5Bo`A5LzsS|B8z37b0mSl^_`N0!#5|6WWYt5*kE9m__v_!4yubx}8(Gpq2Hi zYcIk}6vPPQq58I{^T~YlHeT_Es7P9>x1aVfY2VX+IbVP@dw*ip4;n^<HtakDt8u|B zz>M(A2N`V{+Y3hzN%&||Mp7+!iR)rd-P>?k@g5TUwy6Ei7M;WPMXX9DR%)0IJgI;{ zqYksnE<uzi6+_w3fwriBLp$Bd=BEUe*kp)4LMAV?vZ@8IYmGx5t#S3=Q{zq(jjKVA z6YmL<QX02mBbhrpZw;7ECNm4QN!}qO1-LDw^>`L-nlfEyCeKLAy3wh^>g`Hu(`lkj z6>yaCqwNYSkzLiGLbpO>5C<w|R%!*$0kA9d;@Q>;=2LsJVyzWpO`R;KMxf44wPFwY z2x!GtacSvV(WX6)`b5&wwc^~3+iS&X237+~Y)v@^u()M}d^{wGA*3f<1x?kC<-4F( zmBpUPBLH+93tN*o91w}m#IJ~`KZ9zyMO{Jm{%m}kh#GU!?drouEoCHYDL?sLO3FSA z@jLjHUGP1hQud)*GMiaw!txHL=L2q=Fo)zcVf7g1_*lr#LfXg3Bl24S*+QzovuMQ) zl0W5RR$ZQ|OwGF>r4{Q*pyOkRQ(dt^*Hy{7Kp?Y_KzT=nqX4%Ftl~2X>?##b(FB6f z8Wz^RWilRZ0_*Wi0<Fjt$)f&^CErGijxjW{KD8HU>{N^1q5z;pv)Nz5`81k}*u~5; zY11T4YZ197#Bi?HvmvEQX$fuEp-OL*L2T|4A0xq-{%5Bf{c*b*(Ui^96n$TG-K%sp zLyZ<b2X7%-$c^Ay3lBKM(ZXW@bhMB(CU(Lf6Ng8!ygt(6S+3q3NHs*%gP9y$YT6@y zp&$>7Jc1G3I`vX33D-b2U<NSRrKDrPdyVOdX5rcU0EM6zRVfSCZ&7=Br#dQPQOJ3z zt4Omcq7GzMP~&GN*u#X&^gF3jm56I86G=oSr$g9>P8>pO7e^U3rM0<?Z*@3aP;PU0 zzmypc1kh&gT85SI!iS*@TPqbX>OFxH$A{~IuYj(M<T0uFVjaUX;Np$1>U?T|j=0W} z$0l_Jh%yluIxzJL+(_c4HdJI<pq9<W6!c@NzcfNV_pn}d7kv=(FizV`9Fm#T-Cx4m zN4{lME$RdDZP@R|nDayYaVy#ykSn=E$Sq5Q8KXG9<N`vmAWO<<o@=g^AwgnlN63+d zYR$ROq4Q*RQwmU$ws-7FYM|jWT(ArSt8u~BeFMa~#DS)<n`gv#8xSWkAjFP49ZTQ> zV<fLZITuh>GTXB*h<qJS3%X)NKM!Km-^qbQIvdpSXA*xdDo)-@+`98~Dpc7_9>nB_ zQ2}xKZHHS#oR^4dIL%Ho;#_2~+s*_(>83wuUx$)cnXwA}4p6J<7;wn??Btsyg#MY} zT7VP9$lGB)7`NGB_iy1ceT^-@a#gYWj2^>SRG;7m8B4r4oDXS3h*8MOA%tF>vZk5e zjo@j~@s}fRR}+&Y{J>fJ$#x(=GV64TC3@690H&cbdum4zw=3}<KJgSw0kgBrGH{k4 z&-stf!(Gpn_A_>6REq4M&X!-~8-;f%!<}VwXghQ_%tR9KYws*0InK_qkHtt#M%T`= zY8L|e#HV+OdexDXmEKt<$f2_Q^@Illt=T)&2T1WXkSfyE6TSsh>G`sI;TiR!(8u7m zIr2%ZSegomzF_ih@t;lV7C^M!vjR1kJ|*gm)-N7N9#6@mgwn=Yy-3HTMHI3<&f-1} z>KF0Ep`x-M%%8R&%t9&I4|b$DOpH=!n3#<00Tr|`%)qw;P7GmqAzuU4_Y{5PYb$H0 z;_foP`Syk}Xc_l$eyfgcCxK>awU?-K!Pjg;+GnQ&39<#nB|bgq#W+83EQqDD4Tmw5 zM~}=?d*CK$C|lNEqHKMTjC2fnu!nI|PpxUpo6@ubX2CybT9M?2W>6XY2F_<ro$?=_ zD_qYQ_h~q;y{ZgG4pSG4OE1+Utje*NHDVD~=<GeaQ*?$|VyV4nN807g-ZQ$#9Q75O zt@oZ)k|UL#@DVh6y)$t$B+sUEq@%_|nK<k76sZKKD=CBR3E;TT*?ZO`S}l}d@7Xy* zf;|XBKG}Yj#XPh<-NK8rLAGGmts)!k?Pr_C51Y=zFI||(vr>^xZ0Li2_|;i>Gdt2s zL2A@qIwPa&muNPEpUppvbwkK?M?e{+{US-%-mxD*vwRG6!9FGIUosu%ckeS>M)+Is ze4H<_^<4ZEgy<^&59WIU@sHYv4T6_8>SarkZC1OaH5P|N@dF(;NWdLep?{b5a+?2h z^;da?J47{VwzxvaJQoi@)#zL&h)zID>7p}WOUZv?#K($fP@a^UNJIRM+0{m+GEzwf zBNU9$G@)-aIGGqhz8MVxK6L|tSU~|wd&zl&G9iOciZ<nQz5?Z9d5A68lt%$b6aWje zGn;Jx1Ce?oPLvG+gSaI6c;r$)oQB>-q=hUWgV&}SztqWyg;)mxYjP50If_(Og5fwp zM(?A89RVZS)3Y*B3j|51&8vAF{%{`Wc*(lP-f~Blvi``^J>?M$aQr(;(S?&KcF&^D zW=A=JSh<TpqL{?hc;)&wSp~sqvmfOIl1b~lM2-m=ANdSg(-(T=AQc}$XVcpt5z{eW z$7jMNtM4X}=e8$Q8_7~+@ar#L4a_p=bHZQ@OsG)JCQF4rv+6ZwInrdQU>0!XYqj4k z8gC^bRqB3Is7mAg4-0MjOyjL0%W9xFs#<dCmj*<88S(d+ak*qf%nb<9`Bc!L^XV># zD?-#v=8B?&l3eys5AwU?3ns|dLl<<Mfr3C6bfkfzAuedSfr0}r=!pi3PQ(R0m{4%b z$5zb(E$ZPfHN;EE3_@Z8nQ8_;2xbA4<vMClaXwS@;!;kpA%*CfgO-=I$t)4qQ(I{@ zKTaWl0d^U!31GnOCV|wXm8eDnR+4+dT)#%ndK-9#bUfoi@N*Qrc@(!Gf@p?raUX#E zriS&8$fM?crjcbxQG0Civ~Cl$I0tZh!0P2Q2dqOPEcCQsa469O)_mltG-IU#JkO8; z>(ipo>HsOHC!sk2x(RV9%Qs4ks1b)tFO1QrKwR>;Q<O*3r;Z!Maug1x)w&r;iCos8 zoccl3I3<^60JU7ki^5IKV>VXI6f2UTNUDCoVgLz&1?bj=y^KoQr5uU;^r;pVIqC3$ zzUFfz;MBx>7JBBG1MA%Q7E3W%Nabqba{`?rJI>RBru~S0(js~WSvr~;pA~+X{D)dg zPrn1oM;HRPqrAUK*pBkvhBhDDQ^T6so;?i|JPze`7f=R4;9DPwwS;lAB)h9gA7Oie z-p9pFR5V_owU^Y)M`EXj{+J|mH1v7{txRL|jRsng2EEuo{b|rM474B(+6T~tk6jiz zk1O>r$*S+z7>^Y1#4g)ffB|!F#J~*-3zPQ|7dw6a-ei7b`j@yHJK}y3C~ON=X9v-p zjWzh7o5I@~DT1>Rh55Cta<xI+Y$Fzy;aoAvQpqfDnk);=?}}7ba0~~cN!H_;)h2gQ zDht>b;-RQefIXOHK9bV*PoV!A4tHX&&Yr=Z58jS`M%+-^aBUh=(RXbYV=~{;>ycA0 zQk(?K#IR%*l)NjBblMfob?sBzQ+#yVBE<}XFfF2>{$>UO$kZ}H-_f=Pe?ncuhab?8 zW?R$IJ;Am}xwb8jy<UXQ3ri5!qUVaY;19cW!uXHReay4E>~#)2r#d~hUeM+YMwpij zvCCPm=L**|11mdErR#Z=dB#AYijTxM)|Fmko&lbm$~py)nQ97bG+CMQ7isJN>XC)( z6>s~Hym75ply%EKD>g;iYYQ}eb;oB|N6o<h1yV$70Wy2#Vhv;{D;M7ZS7jC8ZFCeK zL}ndUE>^+ZBrZmuW!3>MgO$}aR#!u$5)!)oX6z$iF#VXCbqZ?~kK*z;S1?Ny%fm<y z1H{i6QvatPEb4tc+284**JvOrRrAnS$T~JnhZ8|PPim13&H|xOgM2c^aRMrFG7tk^ zNqAL*Vqo*GfmM;X8gc|1lh=%8<YfC$9UL^=v=Z4LlkE1sUBqGyNn*K!;LaS+-$g*3 zL_`xLp`)X`%s@e*i!o;s3c6wT<|FXi!cB<>O@#BBfq0o`2HK&X637(eu%?=L#(Y9U z-`n?FCyrtMv>IDJpeXDOEG|-(n1sfTC7wZo#4&%T^uS-g_=flvvS$YS8_?CvQrO}o zoc|H)NLi@>k+=qlA}du4ku!x57F*90L3Ef&A%vAwsF$R7(*aRh6AmzxY9y{EWSInA zuPfo}_g!rEp&4qFVZ5JIcnLY%K!nX1gp>+oig6)RB^wE0B14@2tg~YifgnW_563)? z6@tse>=dELt~3cGf(beU5(Xf_9h*QSTn*?g#bjp01>F<S#Au9e5ple!-hGda>|}lG zI&?{Frk{=S^hL#Dpk@HJoT*XAHnFU=UlD18ZAgCc5A@t7|3l1=)~}*VH>*sOGfaPI zH_Kr}m0;)eFPc+N*+xE=u4|Y{fB;;JS&IQpoSN$HH6B-!eNqg|=0#0h3EfOWbH{{l z!Is20jgsd@FRV}EAiBj#>>H3}z?Er?Ze;F@CAXwjrKLWC)Z`mduoJ@%yHlmDZV_I} zR4zD8VBpCRg!<9gky=0NH}OHIX4;Er*bJs_r+1l1b?cqxAJj{&0^W0V#fXM%d4mPA zJUehAMGiqEvLuh}>+~evfpaFWzF?Cjc>^8yF4PH4!HkX#n8=FygMq33ZD_m*=dHL# z)A+E4+NS2!$S(#)Y8)*WRxd;6E<By(<?HA}9LGPG4MPThLr)Zn`<SKYe+aXO&Kwta z!LA$QPC0C;HHCZ)`?ApSEY$K23PJxxAvFPD&$4$l6xwL_4S>FApap5r2MI;BKH3N| zsQslL37$9{?;)>4^pL(XK9=LXX*6K;-OSHV>d-6pR_K6l#}Xp)Ql{SQebYszW|NJc z<4^(FYG<Fw;x!pTjEnHC<P0!+)1Y4fTG&V@(}>`TLP(uRikx<c`Wg#^upbzmZAaO| z2DMODA*MV<Kq<;J^ahg=l-aEs2~ZOICG^1!_!faDoYO9imuz|mV?R?8cwB8d)Ij}d zP_Ka&q(Qer$caOY&Cg~v_K6iJZAa_xB9l4#w8Qrg?uXY$!~}Rn6hDB>GIB$C(+Mvz zQbx@Xx;`N01p`B45T57*VjeQEDlKtaXNDolO3|zX5vuU10`D+40c>7%2vcD6+OwPo z4K^ORhp4p8e>;MK%4}Sz)u56U>0*F>Y@i^>1#J>&Y8>Tcf0hZ(WC_eFK8SYI1Unal z<Yd=KLb_rb9^2@r^5j4+?sc{;>QW4dge@Rj@lZs0(dK*&%a=(8JBA}Kjx`uTDTBh< zrjR}vR@MtDFAG7_r7<%^NND0#jHrx7nW%^s^o4;|u;EVL<pv7Lx}b9jMPmvad7mJ) z8?z^ORGxu&9Y?T-K&BYvQ=QRj4YG4D-XmYw5d$H_54u6w=|Y1oT9?unnuHmW-6gJE zLpA7gQQgHrp?@yuI>RH->4L5TH02Fup#m9d(al4%(D~WAfD1+-vB!x7-M+++I=M!O zvfFU0)MB^6hE^HqjI_Mx3e<en(JUBXKp_1*41kSl7aFKH5z>7!_a!e*KEpq8q0%7H zo}-J&4wSBzu6w&PZCGWX6=``J4K!UFo&+>;fuZ0bR{or+yplrHqyIW&(v;0Ki9l^T z)lp1*j3u$VdT|0<9l=fMQ+p(E0E4`AX4?fqkFjmTlmi6D{=xuuF@P!?uyr};Jt@_b z@95+jz3#AhNHBJpJ|k7n8PqPSku`>5q1s=dA!sTb9ab@@`$ua_2b<}b4j|Y0)PQ9J zSoTk29*c<!W0$t~zXU`XqqMc-EP`}zNXK$JOI|Jh<~(eXjeHh=3J|)JC$3<P5+8h` zo@R6Tl5#LA$J7V8*~owRH?x@tqDtK$rNn;Wo7H9J)k{njYPh@xX^%tLQW6bq->?P- zD}kWnZ66}q^xisZKqxG1f<=!tpn?=Vml%*Q1v<-sK!i>8sQ|$&zhNg`yROEuNqAK| zT-64-H_L*=GuXd$pmD3=hNB^zN7CXjDzn-E3T%~WG5}C_9u(SSd)`33$;qfA`4s<f z6B+wWAxGM$jjzt+b&23QfVfL{aq=tvd6<QWUJ#KUX?TVBz|&0eD&|0I_2;1iKoeNZ z%_b(-*!miX{KtHqnFtJ{bHFK|s)O@28=Y^YABNhzaIfAL^EZrSL__(N`6@CF{Pr?O z{VTSBg%sVAR}g^LebdmJ+PoUkn<xBdB0%=c`5GY)FXsCOtOKuWl<%~0tCBgl(9t2~ z<u4_LH#Ej;B&EfqoR486%J`TvLsAx-ly{y@r7V>c`GN~<^S)<Fyb<Q$2_I)FKkj(} zu9uv0ZxM2yif<UmnTz|XJmKyp=Z!N2_<<Dv!PM3j14rcaOU^Y0xaLs;Jz=h%jc-DJ zz4%}Yg@b9m-O;Vj1=5V<;i>q(;Us3x0U0{;Pp~EZ^cm!UwIH>Ne4@u@o~Pk>=AQw^ z>RfNp_M%;@+j^VHD*Jw;(50NG3LVA?GUsli<&5}1%GvZfz|6ai<bWMvyZ;U1a&N>< zE{>046MLE3jy6p>O=wG82;EZCaj=ewLtSbxdl{iEY8`T>T8sULP2DP<wo><TaR{{w zFCoJw6Wk+KztMH}3+JyozR#@~iqa{Jb89-h&+YJ@b9P$(j`)7>dtsxia<21e8X(Jf z0Qbl|Ywc~TA)y=>JVmUm3%Qr+kqxyQGOcL;94j(lIDTPI1M)p{`sZQ>vTV6k`?{}i z{p35=Ag2|P0>EB_w+w%{&58=78uOd!<xwmbH>a5b+TN|G&|^g_ARMc}s#_TnURx1V zc?U@ml?3`Q(Yx^<VAGYV=e8PTv1<LfnH}m%o!1i`mT&bP<_}$3*w{AUB5(CEc=Ls- zJabNOui3IIF8o?jv!%OdYNJ1AedtesgpRVJWC8XVffYiGTP8JIdW1d!z^1R}r0&(r zh1r_k=%7m6Lr^`vu(9^j%<9F-7Yv`k%l3ZVL;tK*J^E#iS)QD3&y#BUe4#T?vaoT} z0<3+^s6NRv=NR0DNxG^J5%LGs+}OTrsAxOdY&q0^+XDqMZ&<le%bl&Q>=JrA*{b=D zyXzJfHeOn9=dbxPv-)YsKlzMX9sDp_;g>ITqGwKbaHjeoR_U2j<t=RVhhN49u#D<G zT<wn)f8Q_jh7WOV<*ul(Ce%%MK|Ek$?d#AfG7>m#W~QmDAD=5wqu(kTmLJLn+Ik?# zu7*l=5P_o)lHZq>Kj)Y78%)$^EzHj9?~}r}ea#*DGbkSv;}*8)b>2W^Y4C^v{@}>v z<wXl7?z`y|Yh;_1xxtDskG2I{foy#te$Si=@8n@)({#+1%Xa>#qkrn~?$%8`zdj(> z)x`Ra{^9q&gI=7B*NFQJ`VR1WZhHyxZ(EQP!m6tQ-f|wTSG%=~C%g*aI$W0f7=DA% zK{>(58^PYMTbZi@v7QCNqBpLqq7sj}!Wy|Mkl9@OsW%uI;Kg-(KyZGbcVqd;#$aY6 zT~6{0V;9I1>dW*KP(kSOI$Zv0MF;t;$Q!(2Iuq9(^(?S}cppK$I}lr$&4Qta_IpiB z&>6txuP<B)-okAS@XJ(|jURV3^tGC>I36>uD^vC?+Q^EemgF?PON-=P_T~%zwgukm zMkdGs$tfK{elML`0CeSEcU0SeU=Eh&wzr241^M9Qve1Db+lr3yUw?pAwBd$sP!_*j zlQ9On61yxE)8hK6qVKM20o@xHN^wX3iC-YB<WHz1=Y|7NiMRToq9vhY=+*pvHiU{C z|K#9{^>43b7dXHhSs&Vca{u<odf^K$6M}uhy79((kxw!$P2$2m*s<2P#E{pw>F-G9 zy|lyoaUI_C?05PTbON9jDl`l#^f%~;1yVfWe;Q>P2tGoYmWBG`K9#ZO2cyGspkDs+ z-p#?HB@@fbd%sZ%fsbqpWNr}E8RQL}N`xl`dao!Sxh$B8S=?dyTF%s){h7EoaqSK~ z*e^QBAMA~rJeS{mF#3C!$l2b=Fn{7I2*~I~pm%d=<`S{v?+n(8c{8rT{h=IH$1Bl$ z&u>KtqV8TmhOmDMMjvLsg?payw>&!78^As2f#?fdrvWi~YS#iDzyc98(-$mSN-Yf) zfU;4jOnf93iv(glyjIaFra>b{-Edf-XhCQf&zzj%w$kpoT|(~_*EBFzq+`vmzQmC) zvyDV8p%a)8h@j?3Np3**;P6tAY7I(ZY5qc=_@ZD$sCB~)h?`>DO1tECsczJLFo-Eg zKBW5(mTw#ISD(on>K^Pns81++$$)X0#cj9bg0e2vkz`ZFyqY_~s~@w$t7+ubeDdnD zM)FGNC>|>JG-5GU?YbOc-gBCHy8s0)YxI^!FUhH$kg>O?E<pZ8%W}9<Fg$}VwG+Gu zgm1!QZJ(~5x^wXm?E5JB?5Wj(^nl@kXjv|Nm5-eCgu`gM)@#ImzAbt)VIzQ6ZOJHf zPWP~Ipmq@+%W?um|FI$^==)3ZuRqD^TjC29LjY~1yMq7ogGHZt!Vj?|lFK8PfX}Fi zTj5Yd;^G{}uEjW_6(y^iO?!jUr`Wzg?P6bB3E3yFw1pC~uVh?iTb<_Ki^BBe9Gl;Z zZFvcU5FOk2b$e=SiPuNC6tpWha0s)lv}<k`Pu*}Rck-X}eD#n^gCmzU5RQ5~zO7v+ z%y$w*U~`;=*PMhLT%D^PbP`^55<aDf!%o60PC_#iMk68R9_t;kOBm>>`v{FFM=%&b zoDitJF$ePfMEG?hMcozBDUVL)m#ARx)zm*v-Cal)m3W)^qE!&Wpi$+q({ruJn0%{t zL8cWu8-oc2w>D@LO}P4qKy9PVOkM4qv)iHSdqA$;Q>H>zVl~kXD7*klon6=^bZ{^e zcflco5!=FsamTKbE3}+&^>Xrd_Al%+iU#F->MFr+nnhw59_l+*EtSk`ydA=bq%*4j zYY>Jc-0382AP0Lp34e1Egy&u)z(3bx{F3;7q4v-6Wk$o)8o)5-8Iid6RmcA9{EIrt zKg-U4+4lLTc9Orw&VS<e`7iDye}$dDn=3!gR>t0_#8h#oe%R$Ya9aix7OsJc&Tpo; zqo)IS7EEojyhiG&`>JYYc82J_FjdPVdP3ry256ieZ{fW+*4sGmR`do~?q+M!wl)8- zGC~+})|_&9Xt()%n^y{~8y^epBAsR!FHo?UKP{e0c`qN70_HbXWrX(NcoV}{T>I^e zUt^<v>cS;h=8pxoktX#$WF-?CuXCQ~1oV#ZBf5BXUn_cjF8U2Us}bF)y+Y3AKyzEw zM~j)$Os?n|jRe}q!pR8q&YZV`MGwrqd@kl_aH@Bc8iGc1yes9g_V{1my*c|)=6YO1 z<NJs&qHv=e<Ml`r@2^B@wE>n}ucu~2DCn8sS3@V)OdJb|TmwHjtO9PPx}RrGW6e!n zy%~r{qI93Im)eqipu$VaJ(>6d0J*`~_(v<c2YYLe6}>SB(*jm>pZ2qS$!FBfU>)NR zr+y3!ay)etAQIFKO0EGVXn)Ok5;GWtlx0+(juF;DGQzrHAGqYA(Z0~Wq`-YX8ZPp+ z`i}Nh<IojDYX>roU2D4bO{eQ&_%B1ha2EF=TD%2A_;V0e<b-;W>C|s#<iuB`b;S8r z<n_dh;HLNq`~GuHSncx6M2_gb);E2NF-AX;A7zL<Di_?jnf^zZe_(0sqINKyO%7zP zW9z|x@TpH(MrfB2=NC5G=M$rsvJh7Ui@t;$@<S(DY<Lm+v=34&%Lpws{69LqozJ`M zCB-GDpIN9{pdiu@6`zex-09SV(U)~^Ud?VbdNtho8M)=rOWC9EBYioBVWplqqu{LR zD>>=wbnz{G(Oo?E7}WMb=k+rloG$)7W+)ou^Mn&n1J9gHxBR7FDDH#Z)H2T|%|{o{ zzTF_OVinNI!TDCS9FiFbMIGq7ejh~Ro-lR|0-rzAGiQBU>G9|mX4bqW(Uzy~b|%5U z7p?GwIqMfJ(g8<UughXAa49^>X}PIbKzGHs4O-+){q}_4MA0-Jlhp7~bP<;6u^sLf zpD#tVK3I_zh7=5aJmG2-aQHEbrP<I(Nr7w$Kz-PPX?JxZ3KuOkAOQ^4aRbI0CO#+y z7O7jGx^L1MtT0L$m>#8g>h?nR<lE{Kc(8eE?m{<qVpluX^A1OEHGYnrP~;>?Z*`HA zz=OqfbSM!*z)9%qBuEre;3S;nB=lh&`yj!NCp*`_I;aZukGe-4q>@1gp>~{DKuihs z3&uuyJ#|e~Dm%)Q)!kYJmjYhf$K$E%j<t3U%fE0`uno+F3OdGAH(daY#c+j43BO2Y z|2{38AsAd*_=uy0)0iaVGpZ{G6pkJ?;Dr_aHa&bta=UyjoVOvluAKVRsWzqpxDNWr zk(0w5Mm~-{4#vwL(#L)%sP&OgHa)gJ4(_OrIFOI}cm{?T^ZZkxk7U2ru2IyL<coH~ z%}#>o<4PxCf|DTnIL}F_aS}uyXE+HHorGzu<2EE1eH<*V8pE6DFvNq+p)u?&J@Ep> zhZUH6j9GBP7_JV?5A8<P@x-ez^eCyQJ`sPRnVc*u(Gyi8;6D72Y$j(xj<cd;5dw8< zukZ<nql0~%T4Xwd;ZV<1y1sWFeXNvM$74xxN__P)Un@Z{%G5T(cgTw{oc;>*5Ay~Z zo_bRMD+NWt=x|K!9)kcZr+nnnKrGP3>iwOyU~5*u^V~}K#p}lfV?6_b1)pV=)is_G zIbiSV9>Jmua)Xfze4cww%g4YT9)CFK#>_}`crMT36l8(9b}cD<&BS-~>9L-BYvRt$ zDV=;S0-+R<Y!>3Q(nx<RIY(WKUR8aK*vgLgO#EB*9G4Rh@K#meH##ww)B1a8{$VB* zv*9JVFa*R*h>ioVu(!5DpEvQQ+Fp{75%pNLt=`1rqRTZbVeosO75updzi)f|KIXQX zvKXC9HD@6<OI33*tGR>KI8)VTT-TbLz?ZI+K0%k7y3Kn2ch~pX%kKKVN06s_{pR}W zXZ`N_u1l*g%=(_2{Ttgiz^{a%-F`P;)sN^4AWnZhBs~IAxGl#l5^yvL;6I1S!RS7L ztQ%J+Z?ogiTJU>JM}80JV+jMg{dPT4UFHcPeL50yBjD;$@et4_yZ(Dq^?Q?lOVOwG zYk+^02)x_xmV-({#+~tFBh*hF1Ty{*Km3zlphEn9JyauhK+j0hbNdT_jGo^kmn*23 zwDUWk!Goh8p98FR+pd1vdvbb5dHiO*jI<b&S0kZ%Qtf_e)n3VJ?|t6sFHm1@C-wbS zdr#H35u%m)o_yNf%%5N$>abs}@3-n%s=ivgzLV1Go5K2Dp7ks3`y=-Ch*l)AFKOt4 zr`!$QlNFzWihotVy`9+m@3prSAI3w4Y<m;34o@TNCQz*&f6n2DZU4XGe}1n&Owp5s ztkdY3{-m2t>!6lupWjc<@3j9EJtI2O(>;xz^GMHa&;DlqIP(FR1@OWltrovDAUESh z_@}yWLLT`zvfi@*@&4w_kPocLmA&j7j>pF5jyONjn@VEG3kdx=bJAX+zpAic4-~A% zX<#NHH~9(+a=DAarPhLfoNjs8cBd(Sq2;UOFvGO@i{DBwtFr5v$a-WRp#^lWn2Grq zhpgX2?}>)qR@>d}m|kZnZzgK3s7ya&UZZxgo@lo86t<qekO^<LGZ=lY5dlviRyGaM z8Xqx{ugY=x((YO!#hwMFc_NdZf#`&p449r)+aAY!)uSvQh-Ty7_qC23B)dprg_D$< zTr5Q~*(M9!8&Mi2r*hFOTb|N?)~-XOiOIR9ZeB)TSe0o_YUfFx)mRMGqNY6|Z1s*< zI1h9pouBNMh4!gk+79`5scW2w0~)c1QVoKtCjT9+*c>~(Jz{N+G$%j*75sY>e;?w< zuaETAF8YOfR_J=xqCj$ST0M4qpzpQoFnqlbBz_n=#EM<-qc*Ck1vqvnn&obrhjl*v znA8b9PjB3@sm86=m0rh6-?E}OrI`Cgq2B0<)D)J7YA=G3xCv^q$J@g&#dLOY#GdoP z%vUYAA6`O6a+V6=D!<o!Cd2A$@Qqe^Zkdlnex&q-7Yg|L9IN*afygFavb#cAC$}Sg zOjo(n8&hT0CX6b+_S8N>lq*#Ax<KTcvO;WI_!{T-a^>w@&{i`Z%Yf>3Bf7e8mXuhT zp1S*xzdZBHwvr&eKaa$c!;$&;k54Y6ahS=-98Z{^5dyK&Je>PHlAmpI%Zt`|YWD}U zY%)%v<eX(GK2^ft>{*lI3o+WL0p1M%<N~X9046nEsgd=mbT+!~4rDaM^0-@mc}bK> zYzf{B^kLEt6s-yN-V8FW%o0E5eW9o&;08XIZxKQ>Kea}#B)L}R8*B-Niat(Sh0d^g z<CgCJnerX<ds5F<VDVhy1k~X8GamUi^Iw?j#m0FU1rG2!5_MvK6I?8&q7x&99N24Q zB>jw+Z6lHmlHHFOPs5m=_=u}cqgnV0#*-}DD@K7m0)#Rp{)0pcHS}FDIx(m48xdck zAD}7kqUT5FTc|`PN!8DE{;=OBzXa@7Q%1!zuu#swL?@u3-~~Ua)v*iHgR97Rg1w=g zWc0>~ocxCMj}_xn>=P)6eg?Cf02bi4AX?T3;a9G72_?A|`d32NNJ$?h@q*JaLE+VW zp#~wF9zK}&R@H=%&B$H*^EHX%4Bt54>uS$Y+qK902ijA~_V{M*pgo&qC{mJJAVY!@ z302sh4L0>=jJa5~YRBWWN58kKO$gC`sXcy2KIaodtQuV<rW>04I@p4cYDR<C3)QxN zA~`xiG)IQM5L9G*u1h$+hBc3(F>4;P8w0H`gI6fYr;M7iR?EP=#Ou|Kl5rL!r}9i= zAeG)uE2Mh!-l_^2Xj0&d)!z|g>GcV}BA*!g%yfNgW{>bY^{s+U@;z!dse`_am7!}% z?kxQ)p&R9Mrri!lK7)jsl)mZrRy7RG*@1ilkrftBsoxxVBT%#j{u7ca<NSYY3|zx{ zSmx4A?+1&PTO*f+yfPmY!N-@z94s@a{yrMa+gvQ`s*|~Pe`0NFwhr!AyXDkaac1bi z2v$XG3mp-RG+XbiDZ|Xj8f#~hSpB(G+mwT|oQk$px1=n(Zdvt;U}WihI8E%`PVUC< zt(#U^2N%?C@rU;3YJ>xMv*$Zs5!+`>-I+<%Uy`cizw3+MsBYP~kWJtkp~%~b@mLL> zLSJv@SIoQ$zWsNcx5+`pX#@TJpgF1xE>Gr9ep`8{(TK#PhoKwJc<>!aOY}QMjKpuR z!SLH7%Jlm=2oMHH6tkP|3GDtsyptEHqkGi;oLT*ug}xcO8ujPud{|4W=XZK<<9E#k z+p@4e#dG^>XiW6R>|`%TKE0R2%ftT8zzIpqJhwl946;0EgSBD{7CkL3x-t8v4<>#d zh~VOYg@N9$2QU#=Ubph*ql3_t6<dO_9!rah#$`{~H+i|lRgtBE6`Rk9^=KsYrph2h z4jHQQSdWcpd=8e-1Qu)ohGjRO7>q0v4B2lK7mdxHxKFY_*2hMcTPwB&W7*#kcC+7# zY>@KKx}wPI8y9jNTx5l`4-0JqvErOy>`a__2hO29(5855_1+MORUkcp3-!=H!Jocs zc$=#prbN(LHO=5J&L6|a(iXMle#&VPB5-_N#s0GNfaSvnb(uY3TN<DJJ?=t3LndcH zP$FXM1^0!Jp*>{eml%)oC}*UJ_?mKa!cfnG5(z?=+3;L!RUrmD2JI)+x2UOz^+aFH z$3PvgooPi!kLqMtg8l!aLEU!4l|r^oV%skskVeDE8Tzlno6#SMKiuopIv>BxfsX@~ z7}(?{pJe;&*Yt6Nrw&^);nMBA5+6`;;bbvz6KTw2NC>(RA%e7TQ~<;zzcT)+ct|nU z@5_C&GEqtE#KfyusTJ9zetHOnV?(-P!uC@UX^XnACfjUJijGJ7%&yhDv4WklABfsg z>Qe6>kL1?ejJ2@`BCMASsce-nV-WMbEQ(K=H{*VQ*3iXP?^f;r@f5aU51{G-Nd;<u z!fgQ9w_xRlj>nZ4*p|Xw1eZzByC5*>XBi|MV?}mx6i%?G2;z6<;>l&X$(33jat?iR zd2v&jgi=@-lu@#z^pM<)WP{j4u{pn8;`n?<O2Oz~EFRciUexLd-wJk>$Ey33$I86r zu}gA-k))Ax<l|uPZ~E8Vg!T2IeGu~dgOTh!RsJZJ5n!m)e@Q74PLG1Ia2E)ng>XLr zhqwWMwQ3g*4-~aj&*B;a#8!Q@cHKH%v@72g=OS=Se#Sr@<*OKhh0bZ9>w`<%yKd#g zM>$I9h1CH<#tGmh$w=OwR^m8!iEvtpY*Qiuci$epZgcGB_Q;K!Bi|+e>3&&?^SaU^ zEWdhFd;!cJ_c$^%<OzgAB_8tahXOtT(1#Q=OKu<2DeH~|8<ONw2wr@IxF$PK&ok?= z4^fE(1&n0|Lm^8rHW=?q#WbjgO~INB8Jg><nTUK=Cs%dkiMoNu9SSf6c*sMgUaOX@ z#Z4vdC_)|g4@kiII$%Y<<SA%>k+!xv@!K6JMh|!x;2ik;h2dAEg;_&LO1^VxeeK%J z>Mk1>((9m!YuPqw3}OZ}We9e3p?gFj?D3JrdW1i!N&IY!YI($MYof1d+|N-DB1d}s z^atW~1eBV2zd2ODl=lU~6K4%qbj-%{yV$i@W$89Jyn69oQrfC^5sF*rz#6{-k3Q^d zK2RlkLQ%wDr^oZpP%LTVlRps8@3_4?3gvIWSIl2&@1As|9KD#a%EG_v_U<nfOMCsl zp}oew{IHk7YCiRC$I-rb8j^oG+7HGsl8#klJ@;A|&TowMC-+FT)~uK^UCz<EH$@|L z=>N$*x{)Vn1AxKk4>Bd*X&gsD#&6+FF`7si>cFEEgb`!-^0JOc<a>{jZD*ax`!&%b z_jvRVj1P7!Z?`|7<oK0~e&JT!lJ+a|{xbsrm%QJZs#$S_(R;ML>hoXMZxdU2YbIjz z6^^Z%=vO-f!;+Fd2npcnTytYspo8JJ3vdK%ujAxZztlWZvrHVR!(n*IMQJl>d8tgV z>P%gkX_k9JDeit*g-%cR--Bx=Qm{XUcE)Gh9QE<tq!o~+5*<>Q=?T2+54cSwrV}Xf zL8X~b`T{bW@9wL+MIX%gpdO=iRWF@I77yTrZ|^fA(F*l*b@lwt?9MOi8;}udD2H}7 zYHb~nI1yCZ@sM+0%TKz?ubDrWgm~(3u0Cd;uw6BP{;5(3K=05Vz##%$-62pxdpXbs z(6LnL4wQS!+wLOhCiFoP95&&#JbEQ!2%I5YUi1TQRsx3d*v*I|&OjV-8sdnJt~lZc z#1SVWjyPDy5r_nWksf&}0~PUN9fTx37*QY#0*GDR0mOwJLJV{JkVF+9S3eSn_RG^G z9S4%2F7Ajz_-)1JH-a`b73y4!1Ga=2iSN-TVOA<>&rveqSQZMo!-rdS>ltv^^ftl- z9C{NMfq6#jbn*VK;+{J=`L;cZ327)espAemCc9ru{HEg(Kia@P*01`~DT>eJr912@ zvhz4SqCO)B5GTNd5Y{pVK^Z7y$9M&R0@RD%KRZu*Gpz0ucV@gE)JqWFNrcdMJA|R| z5t+DVTYy^5G)1ilj7s!J>qx8i#0*<F?ZOBpecpxhE!o}39_;hpjtn(!J(3V@6e37W zo6S)Z*>-yR#VRb_ZHt;>y4|VBjJO0na0e$HjC`pM6O4#A?jwt&QtjZkul%Q0UHNQe zO=5R`3oCn^FTDJOFWu=%<~jZ%?mY+Yp>|z?MvQoWH?;}&NKwGOA@Wl*8SR1(c(qSP zeDn@YiBIj%@QB$UOZ9CGVDu(SNGN2RUZ{$NkUA5ocKtOIgBjSjBHK)`masW=n$^1* z*I-!-HfLSl$OSG%>u=r<TT%Aro|0Jh4fy}MYlD^*8{p%*8!UV!lH>y8N6?}i)eCCU z!5^iKhfrd8bd-0}&z{5JVeVK@eTz=?wv}9j>2NN=ytE#pn{%ja(eYl~?HKi`f$}yA zGelov_<=mKo`{<r4wMB+a}Z`@J<?#?pLyo=%<Hov#PzfoaOnYqn|`c3ll>E^wWgl% zUx=1#P2X^#49(VSl|11?rPi@n@4G=S$zd+scT?<%V;UZ{d%`)Ag`*Wuc$01x=;HFH z(ntcUX*r6}{v|rVvhjW_8FBVDhB=YXU|x97h+LVMt!~93YF5$fo-l_i<V9efz4j=| zWwIDAA`xp^+bK`1)q+dx7U~+rbk+r!(TG(;o?E!yX<5<o3H>0=J|fK?H(=Y&(wcEt z`aD;d9)|w3gXLfGAiOz#FR!k`0&Zb{;#xe^Td_gD<iArwRehP2^6#+xD?wCh3{;IR z{!UJ-R5!x_=VjcARc=GEDluLG)t^81B6MY4kvrAD$@i~8!=q<<Cv6qg2)_${Vj1e~ zUGZyRx6Ahx7yBB8=fXY=9I{g^R0F;-?7JCRg3*CkR(U3tRTg3T@!DW{q&d)ga{&5Y zrWHPU2-;J(Z0s?Zl(b?!0{H(nc~p&f!f^To;K53?XbyS&Ug(P21zk#u7Toj(7MJ;i zo$u-ufILyn^kdj>STmNg5duS9IdOT6)q7j*>s^4>#~HQD+r-{hO+1&pw?HEXbX<at zAjY;=^(L;21AUQIn^sNQM&?ZHhg}AZ)Qi5auy^u=XW?(rm}x>nXfD_`wK4g;ZI>f) zg=h9z_}`SgPvn-;zlkV^aaXq1KT>LRQ0;_c0<37X5gDw$QPvWN0=I{<qSsD?>V<mu zE%1bKuP?e#%#wPD7Y}_4Jz@5g$bqZxs@E}o<^I=!!xO!bSL;7o$F+WijS0k*?dm)X z3sTy3Y5m}uxOBM)sjBy+^SWQ0*lGkuQhsg*PZGuo!q2TqOGuw;m_jdy43dudi^$vN zgI^%>ZsE$}A*G)9S3?WGF_C4y##72$>08wKx1+FJDN_era_1aYJVtL;R?(L0uf*P1 z&z#*)>bX;BIOZu&2^K929bJy^0@#aFk(q<-1DKRHe3pH33ql^`2P?20hdHWoR4ev> zerFYJy?(dC#?n585RH}jI{1av?TN8uV637`;u<^@b7b6;i{25HM3if$gR?If;=9Jm z2ryKwbUbOp<Qeta-~T__&ILTG>fHMoh!_>!v7(KqR%1<VqSS_#wi%%^LlW2{GZ00T zR;{$C#o~p^45A1GXGXHW-LdJZp4y&cYkN*xzSdS-YYJ*(!X-gl74Sy23Q{k791-dT zP%HU<|F!pA0-p1o^F7bU^N`t>wby#ryWaJ#cfGf@+K6|)e0q?6;&fB!f2^Na9T;_r zi#yAY7O0|r!uQ81=_kx4^uMd0Fs@@CuAivfe`+7Hf4_S8syAvY`iV*_ly|GTRk7hV z`ibut+9~TN9)AXeGwLgOF8#!JB(eDViQn@|`ibZT_UeCk&$!?Fse4BB{Ft*}3mAtP z8sWGl?j9v=UA*aWyMJh;ZQZ@kaQy4UiRPZ)X3w1h?Jqri&y?B30{on(zFZ6@kfLgh z7SLVbCC|npF>XsD_vM;I?wnc~I}l_?LpV4Cru$~wBfkaxy_Y<NSrl)2c)DACd~D<b zFWs^~wKa~0o+#6pHF<a8PnvfUPrOAdk!BDUI{e!U=vM+!SFP8?{#fh}hFmT4EDPu` z;q+aQ{J7`F?JR`LGccCB&PXAgM_Q^xIw(V!>t@HB-U~cwpR&VGEsVuN+f0*uR^x5| zE;4g^(*D%_(LGZ;YLaM;>2=J#4l8Jc9t|w|2}|Y$Xs1NbO#|LT{|nJ5=ko=LKOAA& z5XaiR*K6-$WQI#KKfRep>GdsfXLse~$Svy72V?l4uzgMBTdXy&(XZZatu>qY<NZJ% z9wZ#iG*7pAt_a5fq#-hd3sIxIM_A?jP|Z*?{mi-2wMHG)5=dPgd<tElN0!S2J008| zu0z6IUg!PH`fzuLKW0rQ{u}NNX?5rzcZWOlJzArupy0|4Deex%`7UCWl1Tf^nclZ4 z_>d%fOxL2n!HC(H4o1*vpn{Cl@{0ZIy1@t<CY6e)uzu^!uhY(TyZOe8nCT?v>Wgcr z2lA$Z(fXnCW~1O}#{zbc4dY|u@DPCA?((j_bcC-;hY9=eN~`c8_KQc0&+7`TC2*^y z#<X^bcLJ$xG=-lO<0fwG1oOMiOG^5%gdG*-3x?wv?+tREnX`wy^Nhd|sVe-wOzT>o zhUvSBc)qSe-~EP_kvS{w>`dgAb`(xf`DyNrpETO$L%hG^NW#3B7Yo0Uv}4ZeiKf@5 zxhG5%0{*fZjxJTSG2*0%pa0Na{;v4EuJDWEdaWrN=)I3AOR&+eMlZ>Cng)wPtsZec z#ooe`bQw+@I2m22LKT%9;>Gj?l>G!0z~B7!kwccAVr_8VG4#9Q^^J6NSZ;2u!Ytld z7$x(<%A8P*C3oCQ)MaI^8_AF>N@x)e$sF=7&(7vqv}HXZ%n$?x3)9TJj;;7dCpB4_ zBM<<M;7tz53}jH1{s1`9=(saE6<P8gtaEbLl?|V<Zr1U^T19Pi+s2*=POZ!r`KW!| z9=;>4i1G>ftT<fY;gd$Z$V9kqYuTN0Z5KuIxIJR=4+5}nMH#TN*HMGjqYY;ExoFoE zPFPm76ilavW!$GnQ|Zr4-~CF{RN6ubKbSh^qN@mR7k2>aKkzP=JHIX_C!JX6NvhQw z%I@cl0rXNXqFrOPO{gV?y3R`f3?PPeF795+kgJEXZSj==LII;Ae#@WTXkaHgVQ27K zXQ~*H&p?-zdLg!Azw9bj)}!!hf4TX#QDKxaoLkvf)c%U~8t@7}TI@gJ=(Vv4?ZEjg zkP`^ef~1D65b3RxFC_N|{rCazt)50kL^#V{M;TuTzMiY{{0?uj(&jYCp2qw?Ro250 zJ)|nf?eRW(6BL?TT&JVuSqE@`+To>LoPu8Qt7_9iT7*ju0s&l?R@PU9OEN!j<>Bu` zD2W<ALx$pLFAuBokC?rS8uk6E44oL(G-$@nyJdx@G<qvYuiqw=)+__5bJ;jdsq2ce zj<HHH=loOYw+n1Yt=`6Sq0S%wnDdyG9YNDkj;EsK{D}re+FMo^NWrFkeMfcd<72r+ zG!t)V^txFNRaGNLwkdFX!eoZw{Bn2i&}ziKg2+l<T;lhWsg_@0Uid7gBmYRnon%{` z*m}MoGDrZVbrb-fFgDDsDiL)Ct?U?zm;r1bw=;iVMI9aaS>Ub6s){u(<e8Z{R5(cK z=z|8uFSA`aplC+ETKT<{L0&ny-SL&}{&PjUK}(r0QlQ8w^3Ry<P{fa;&b!=22d9`t zEa99Q%T1}nnt3Y6ppOJRZ(9b0vPkSjJSq;IcN$~ty}V3MM%d0X6&PUeTE;-L>BymG zq>Y&C7sMFL$ibm?n0t0PU-%sd3$MKgoG4{PdE&R@Siu#KoVx_64gn$jR&t!xGb0pt z&u+GQ`q?5x*&>|Lc|%K;^JwxMe_ul0rHdnkTHe}6pqm|1m^RcQM*{yn`j-(}hwSif z+DdLG;e(xP4KX45Tm1@O_A5-?N9PRS-m0bQEKv70K>5XPHy4QMFza8;_m1=v+nLbd zL+$V=dk{u}682K7ht-7zIo53FW{0evH}|xCi``G$@OK)1Z;I7>*O$T!e|u(Ua=P4K zqv@T^u?Z(8=I&(U*$I1W$7!#+fsQ1PwR(;rq80DNb)~veYv^XB6JvRemZ{(BCAG<} zaa)EuA~@;%cyd?9w8p;9D}1+Hw7CECrS_Qfj@kP>B{gV^?T(7OpBfwilQaujO&c?g zZmo?s?TClg#=>X<$23^!PqLud&Yzg?qZ^d}&C1MYEwXyjN+bkZg5t-}m1kP|IVg`e zDnsFq5<h9mwO-MJVrCQ9NV<xVgO|M*v3efc(`JW=2S1YfH3g)3YqOnA-GthK!u^x2 zp3DTHkPcpy_Ub3buS-DyLk$~hzG3pmtw@Zm8l`VXY3+zPqhQiiss3(}b&b`7h#GI& zZo6YRzjna;{*Hi<B`*(S@{ImS9i)fHh;Vr{xHQcc+<?EULo@<REmmfd->13JmO(4? zPs9-NCg#pE(BEwJG_$pD_KD$mJ2wkD{R^k?NgDq-vrjPkWnp5VT{ZjFHi87JXXZDe zEzi(~!AL@@a2*wIOkI|5q;zpT0`*#rfgt7{muv|tIn&RI$V+Y8d6_)1{HDn;#`I78 zH&%86_c$FCk!EE!GHZ*_q@=U;ZoWY?WMuD^d}EN)T*&$JjUJ~HV{0prZe?x0H)nzw ze#ZNb>S6C2^?ojYO7FF;E481k(fihl_hajaz4yRg{*=;t4Lt(*up%2&q>3U2z7DCB z%Jr|(%fIo5_SL&ptjOvehsXrI1DE*$zLvk#Hm@sqKd<!ON4KvFjD=@aSvUU^#MgNv z#Gm}MP)D*gE2HCwf~nEcpE_3CSF?b`oa6F0ndT$B|A^J|2-JOqPu*7LHNHxFtrI_Q ztsF8Hh{_jSAu4Y(@G&#TcyBNEVZN~h6C4*${Nv0FZ0TnXTG?e<EofEG=>BoB39~dg zt(z`0%Lp@r>1`&5GH@|DyrtVnpVgOtiT43Nb+&1{=VgNSn#=9+IN_efe9ksgoOzs| z%x^GH{3+)Qc&AgNrkS4#QnB!e<z=QM{5A%4pH`|n|4UO7{T=skV#3m@<Tv9e;+Q~J zHq<AaS2)Gb`I8SHGv={YtLLuKLSH0<#H;w}Sb8v|?{Z`QHDdK{$X(R2DLF<QM?3!J zh}HA7uYc;d=l;pY@K(?He+lR9ILx9h;hdESFJ(v%8^*sb_UHOn#lIxqYm|M?c9(gx z@Zz|$FVgZRYG>|kCs8-pUd2R(0%uj_k1O`4HyAJmvECbs==E`oTz&popB}Y3#3k)$ zPe}L#TqrJ)$I58dw{~SrN6AurJhuV;dW(EoIHQC=XDxIu_L1$^GEJ0n%sDDHApyT` z31A0ti$hlC%Z9{SeHQjrZVU@ch|?rLXIR)wSlG3!XKdbQ)t6b=-}V{#rp`<&H&K<J zLrct;!S;H<@Yz*9u4n!}$4yc7SvuzBFusKO<sU~LfIlOa(SNgsZ41^gNe}f__9p59 z9NqaWTqG(so*Q4|J@MBf|1i@|$snNc<d;O_KDQ$+1s$C0b33h1k{dFM7zwi|97y^% zQK1OcOwo!(q066|`FVUORudt?szaM~Rm2^;?VzOHR<B_IRVMQoBU;H$$p|7gFgeuK z-UutKfh^!G{y7Y8``FGuN7CExOK+@k+Q;V4;04djgNPn{oCk)VWPV|4Y5j6xHI3Qa zROLlpehr_LZ{Lw4c&d*)Zg_4UrZ<kzqo;U8!_e4J{^8*D`~0RiR-495p?mxn=14ET zFTAWj{}J$k(mI-Gdew|WXumh(Im0b_7|<eJd#9geXgZHBWT-co(cW=9%>RJaV`VZJ z!I{@)4TN@X;Z^S^=@aZg)L>Z7i(eW-OLvw%mj~Jn<X12Pn%QQ+bI~DmFHBY|Glizi zmfkR(06wZ=-#PwJ@0ZV(s;SFQp$cEht7vF34VhM)0ks3k<v&L`kyJV#auV>&<MNm9 z<%zQ~|2MrUQDjl55Jg65$ZX+y>;0a1CsA?!5JBf`%3n(b(x0MyugIBJ*XB+ocO0n% z-3#i7af;)g+w^psc30#79!35NKTR?n=kM{R&EXlgl{KleTmo*~39$!Cic6e$o8Apf zT7QzCafZXDq-7YlGtPOiHD!K_^KQ&pJ3Tk?Q#PK$x$zrOJ0?FKbuA1$$HnLVCHhB^ zR;<4;D)z+7)3alrO*O}IgoA8h8@gbL?Df+CbtYi9BHm1h0}9GoY^2oHM-n3{j{^<r zP?Q<71E^30GllK&qt|xQpTSo6Ivk=EOKZK`imG+l@q0#ul4I7WX|o9n_dAc@c!D#n zt(zI?%lGoz^w$obpWp}W{5{t10q2WK@HIU<dTnaZS<+Vc^P25Rw45tdnbC5t`U+ak zdokC+FN^v}qb@s>AifWC+dYk*NkMjq_i4TY1T<!H+dawD(MiQf8zv1A{0m|AL*fnp zSb9-M0;iI<?IGTC3#buQ-{(Lk@Kn$Pd!V@chdwGN_)hAjz^xQD+w*!DsM$Vl`d^`E zb5!I1Cq3J01BXGyC)A7x-*#7Y3p$KUhuiLVy9}fw0-f4yqu@MQ%X)MRgl~oq+!co} z|J*gE-+EDgYV>rs57X1#OSz!V3Lx$%KkfE`FuA5s2-$9@4@qtC73UILX6kM81`*%_ zxg>g?T{0DGe)ORWM#tx#&k(<FpMD(9$n*z=ZQ$}u&IxmmS3Xqyh~`#yD^Fq}c0?>) zt&soR+PDcoVTB9tPPWUX-ob{|X+Biy%D8)29P4G=IXv#1%TjiIZKUf4WafT?3D(xd z5bC$u>4Caf({2cQ<k`8lK4{*APT`wWa*V1s^$q$CQUmx!QHG6MI~3f<Wh7a>dni)l z(tfLrTXQ_q*VP(NokR)MhB8HKRoSPHBF$Z`%^HMCd2Dr%DdccF+<)D%@m#}GYF4Vk zuOX%xzdP@XD6>lV9Ohvf@d{{~rEL8l`uA@2gQ0>190&RL`tkE6`&oyAvi`gFGZX6k z;r6r2&@$Q2djBTiU-iy^5c^qWRGN2QiZ=(^&t{mumhERJ@tG)pD$j+n8Q_U~`S(`y zO7=6UlOtV!*bYt$hco}Jo_lp|yC#j3TV?le$KKrC_hUNfuHLAh(6&8mLy|Q}tbJbX z5Yp?Op)Hxd)OtI;WOmhs97a$ve&Q$S*eb1Zvmsi=95MRmH8i$$wKbezWo}2*!wO=% zlbk2wZlV?<X@iIf;$i8*h?N_^nIR-??t6Is+vI|YHw|K`jfJ1KRxXg3m>a{%8rLds zt8K+dAG3c{A~y!Yf11llcK;h^;zwYI-c0Y9Bm*y{oTsg>A61K#9*;WP{B<UdERmb| zZoG-$n4x9YOUF?7oZ)ZedrUY5r$6?@-?Dp>XQto4?DZNG>xmtS?C~TmN=>r&ZjPOd z;cZtaIg#TJAB&~)HQ7C}2f(KOb*`So-_$@X?bYZL<65TYy?UPPj~!;d1&aukiO}9y zZtA2&b|_}W1~CGTisdG*N1*4D&Uk0WLW3BfC&it2?WTUK>lKOkY$Ztl`f8LY8<g4+ z-8bsWwlbS(0s$LL%jyVg2_n1f@LolB9amnDZ9l%t4iBc@jw(%BmGhUv$12|M-4r{y zx*-VgIuV0s_?6^oac64~;I%DwSn+LY2TLvyUX)0^P}C0)8wBe2`Bf9(b!;$ihsAlF zMDrwJV_4&4xbtJZUMR<UvA*KPu-5Mo;)HEG?@5H_mqWii2e&&H?FLj7550-#8xX}> z;gM8A{YXDWJYw886ajn8&{wdS-Eutxu{IJ*zXtWqs&%Ld$)RFxF!W&G--qnVzvZe8 z|CI26wQ`jp4)4X{Y4;+7>Yrs>t%C`i0UTV9LW5S?7NKM7^?tgL$tdyD*+9@PfpAT` zfr_xLK0@4bqc;c|G`{jkKz6M0-n?4nxr#b}!O!zZ>?z1qW2r9T{0*6h(>=#+G17|m zYc++_4V;SF+Pm34*-F1RDR*`#`GshD-=rv#B<lh+otzPMHaU+V-^H9aCBQtf!`X}k zlgJ*CTpvH|qyAT^M@Y}hNEW|Mtw#tC@RcTrZ;Pr*-6uV#HitFNrg&&KliME<JJ-Po z^a-k3<|ep*k6{@9jQs<<|FttotDWA?oZMt}#kF5(BhW!(8OKILM*esM24vKUtf<;@ zH+$0tCGXCvbrVP@su41m+JM-#&G9A{M7)sX)?+YHIE8q$+!8_vnVUzY-=CEHEZt}O zNrGn*Qzr>5bKY0qQO@p-J+a;Si~Yo_vFxPe#>8QxD9)#v$aHbY|1PyLpjYzXDR_}e zQV$sYE<syyCsoTn+n3bR-_USr^L$lRV33W6JT_<Oj)swwzn_VQS;&uK+mXM4KNa&W zcWoq*o4hYSi><5n*XjNUJf<dpq~!iE8skm2HD!<)A-*sQc8w5F-QaI-(r-Y@eGy|1 za{5hrP7z7|tH>b_P1RBDU%IT)ok#MY_5v_s)`hpE1@By5UzNH6tS0e#Ku%^gBI~4g zpOG40^*%0nR3ax<iDWg)Ipcv%xp-H@9KEczJ@ZoP0=IpPn_}VL#?tRCf|lL(6I_xF z=)nozWg_m92v)Iv6#a*+%wlE}sT3N``HUs{>wMrvO_Ze7*7fh(xhQ<!$0vD_cXNxW zEBX0o=Te;0k3~Du{^hQ;N)4p-RjBYtH#5v@xm@1Q?S$a+&=^^o3(t7J!&>F<kJ_Dq z3bZ^Sa(}&1D;PFQGdHE2KA{b>;G8y;H}kw_ic{4N|HZo5p;pOhw{&s=F4(mZwHUQ- zV*%TW=nY)YK>vouy^9zSL(=Hx;S5&B<)c{t&PlP*hS=s0;!U0ygoW;iT;8~>?($B% zf+JTmLu{B#JI`6!Rb0^V)Lbw+++jN6w@;I|;SJgIjvaczdyRh5SZWp~%_L?6x~1>X zj9f_dWkGq%*M*Ng%*y)IcVu(o{6zF6rsyv8$N`50Fk}4w-aLOlVf8*~rlLSy&NE{; zoy(_%Tm5;X_MB(+dI2ruTg5b?!^-cb@?HL9UPxXEl0c9umV9@<b+aZ_Q}j0zcHXj$ z`F>3eco?@wI-Ev%n{{%_K=dUEwmfu=#OUB<VRd=F`THMZjEFgZW+q^dKoDQ?x)D%t zEtwaG7u9<&0qaBcst`Anc_sr)#VOG^q8pV6zsfRBp-e-EE`saX71whruIB~Uap%&8 z*{XStzVNQQ3cL+g?Is7!a6gW?GY8~R%!XTbXza{a9e&mt05fT8u+)0hP>G$3H*}Ce zg{4tOP^#~kt+Y1kL8mTq-(rFq(`uvl7W~He*Ky+25MgVu*~M+{gAJVk#9+zZO2c(+ z&c1%H8uEsu2DB@Wo;=_^GhZaN$I6;hfMuVpT6UP4S<J_*exH+%4z<=s-HSUCKwZCQ z9S&H1ykza9T%*d3dpHK1jhvLg<h1Q3R0C__b!+<zBhr5hbv_uNR>OgZLbW8EULWtk z+Nh<Yt{wSEeU;83?l4(*!5h6sSf|9{d*HM(>CQ2z7>+Zu#k^##SPo-uP^3Zj;v!)V z#AMm65DCiklL#jp8k1jVa-k>uw+0O~6pxGxj9qNyeC65Yhe!q2dMT~|Jnsbd5B*@b zl=#x#XSVqtT<(7`gAXcdw=zwon#cMDzdY_?e1m)YKu)7|TfguuRdap*f5ZCyc~=?) zy=Y9xv~B#?-i_{Q$3Ou~Yqqip1WUB_lW0zE7-2>{#j4B?_AGn((Wt&A0p5kQ>hoQp z8ygxy=)1goSOSG-TT4~$!G<o7;r;58(!|M_C&jrl2bAg`b7r0{`MpBFnmdy4_0OD~ zUUA)7aorVM$DRK$r>m=MXE2|<&wum3oI!p`J4Z_zF!%SR8g%bdh7WCNLftDyUHU-t z2@EzGVEM$KSN<pd)LKyI-HA+Si2p&;4719hPv6`g0Gd2O4i(ddEwyZtD}ev$_1+V( z>0uw^sK<c%QzX0=R}3q&5)>4ti$7P)h-sqMTQ{G>TkQcRX=*Um>-3y?qJa%<WqZx! zB42}f+-#+PX!aECXzj$0ab6>-!q^kDTNZQR;w~>Ee!`kL<;<}d9-jtQd%{JsTWFFY z^Ik;F=+=J?mf|3$E`B=n#eT-RWexQ*dCl13rX-+xZ#6?6kj<B2t#KJaP~n|OZEUpc zrf0o#FTzPOv@0H_HY@wf06H_x?Flx%WXsH>e=~z#9EXF3jy3L>)vP2XXD{F6P#Q_b zLS$-)Qhf6w(4K$X$X=bIz_@#tnbh*3$vCuVgbUyCj5&;e;j^HC^JD1m?aN<T@qKt- z@^T6u8i&Zl9TM3+aED1&=I>x4+PO@#J;!s(Oc8(J%@XF%hkl~*4nElvd?F6PCz^7a zx1oG1SB#(JoQ{hRl5_G2v)o3iN*rR`!$tm^Un&O)%>L4GYjm5fo8FOx`VqrJGC~JS z0s2*qxwm#Mn7YxtY6C1W5i4WVbx`z-11Wk&y%%Df4f8iNY@mhv=M}I}=BL8<V!CPY zJ;wAGVb02AX}gGTv5SCPgsk38`QKARX@7$HV>Xn7NYHz_ffrMHb3RSi0(q8vTEYAJ z^7}uk>jWM+Pv?IH0%arr2&GWPn_9S6E#Q+^<iEM_V8mW(5DPCs9zQ7GgOzp7+T*{g z%P-X(kp6~>1nH;CkQ{Cx0m+7?UMvwQ!Z{<h%M8nR1+XnL0E{x<1+cxXDg!pcT=!1l z06??sddKUE#-c{lWJQN`#0|`ncjW{AXPN|>M8(PA&HNhvt-Wg^*P_ZE$;;l|Xt5u< zRGSFzD|qOnzpOmSdRtR^yWm3JKEhl7#i6Aa^?LDJeHQ04x%^Z!&%7Z$Ia5yn+&}<W zl|Vc;hwdvMm3lM|g6q!D;LaPxH~#wLy+2!@Yt7cTfo$g8#)s;2Ld|TYi1&obalpFA z7}{{CIVBWaalcS7Y}G$M`1~j_VW2&qroD53R&e}p#-#9AQU6%9rx-P^aW!sH%#W2l zR~VhU1gG;>sW)=U=Z!-KlGQP>`-_$n<ZAe>b_i?;eBbZ25?ODsbFFjYxqJKgDB*C7 z44dA<iOg$?YI<`13&xG&C+lP3!G%-L&W%4Ud{*lDP7`)QTkOm^yQC(nNy&%15?1?w zcLV{>E>OA02$;g%K|l7i&aU=%5?ELe7+V{2GeYjnW^5pFB(dC>wHQ|r$dYGaF$r&6 z_C<T{-_2^Jz4Q}1WC)p-9n()<zufdtdT@k!7anx>r#^{Iq&&abKeQNssiHzY@S9?1 zP6`_J%$QVm$fPoZ3R4d_3)>10m-c_&1RRX>|Di!d`9m52Ie#<kwMHeYh0n|9{qaOn zu5b!J1vx|%F@e!5gVQ|=b>@H(`Ejh;yLQxa_LiKVafI{CidS``ja<g;wA`3>w|(-n zx_okWVl+8sH6zSUc-VOmd)M-8L~;~|=UtL~!Q6$C*mI6B6?N(ZDpDo#2CGk6I+iba zSZ)f(-d*>b%e&1NwaFuM)AyL_JKr6-=-*cC;JX^)ZD`9Jc2VvC?gek$UsbR1-A16; zr<olJ61$vVIU*3Gr%oToZF+aepF9g8<`O=O*1)*?4HoeC;}gCSNzQL`@4bhQ<L>+p z_GQTiLdM<{-+LUiXZoBC$y4JK=GG@a$II~z!Ml6SJ5Cp@2t2#c@q+ziDPC$%>zw+e zVjBMD&);!7IfW;be5&C3_W?YF1C=4FPugwnAAE?e5k#d%&ng1+DFBKjKRXQClYNLd zf3X}2R{@dVp4&QS&-zemU{!7M8Og~Pj@wxYbX5^QSn7lyb52NWn|rqp%{Mx%-V~{5 zUX$4STXEnC^CMAbAW5J{J6O|m+i7j2)R6aG-bY*5!_RL_*7}<XJfn501M6ockY?bE zyNzIekgq<Je59}nZ4F!EGAx$}0QdU>hfvK9Z)^#O^~rMtg!?`J-I9(HAT=rj6wz_( z$MvD0NFM#6tpiwuG>dcU+3KxV$5M9(*!o4Avm^axXjN^S)xM+fK$#lJ&sUsFT3*ft z(s>_}mgw65BwZ2v`@rt``SX~qP&>qn-Sbo275DT0bSu%XQAT};{qw%ki@L)97T^4E zJ8992yIuT|+(sq}oJJKG9O@C8c6o=PJ}X;LcX~gV3IBg3fQSAX_r*iu+WtWbc6zlf z#z4NHTvsDkSO%N*qXIwEI603L#+2oiwFKV~vCx-1YQlp0WxGs@FYE~frEN}LKjGT? z8<TeKN|;>kS^{$rxdqYy2q~Om_I2iw3LvuF9jm5xbSp+t6um$k&&>ZGp%cNMT8a_N zZ=I{R#P3D)%{DKs)eYus&bEnEQQOy4Td8_esZrbHaaJz;+#72c>VYxM{}xpHq+~3d zajCh<ted;Me)DM1Tf=X8{1m2eEa)*7qX&yov_&#%^bg#diuYt+us*J56|z=-n@{3s z(%s`_*(CiZyg62D_kW=9sn<=u&wjD6T*JAjgyYU&tp6o!NH1dS#921kT*5zOdYmB+ z84R66Ip7NeX?txKZrte&m;wf|k9w)C({k1IcIg-crV@o&w09d7zIC@2?PZ@5ou%`v zo=3;h9^ZPn1fd`$w$<sN)^lp3T^+Tlzs5pu$HH$*!5X0tC&nF&znEX!x~5}Rcsunv z!w{(P-dblj!9)6t{c3aa1pJ#Ilq2F!U7Q-*x@>^NR*RQN>J^2NV*f?4oyaxxVHHLL z@}iYF6k%C#kq_ZmW5T-t$Z?-P2Y{y5c15XSkQ(~w=DrkpYTK^DwpNXCxwYm);oDsa zUvNr{;a`)0Gq$E^y-g^vvKY>`p1gAL@D^+3t(phnO=#KBxUp;WVoe{!7&AMx!AeK< zvV4Za;0B`nhvL@V9uzP21iGs8q&vi*<;{Yo;z}=q8;XMoO-3#>5g?m#(@ZCvCrm%U z*GEhCZ%_i-L@7nw#nOdP>REz+t;{YnH%Xhi-QerL`c8&(@E(3F^$ZT*0EYhy`mv3u z<VVJGaa=|i48j1(mfD|ewY7SB{(7VFJ2vhf9(T_L7y}Q7Y}T5QTx)8Lhu1O=(1SU} z;<b^9+?7uSHinaC(Cg64aR)O82b(+d8N4E?<Tt_9FYk_rAGKEYu<|7|4NwZ7Aqn#( zU+k?M-2A^#9tz2y1C}3}C%L{p!JM7Hvo23)N0Hyosu&UHDa6SU0fT2|3jLF8XLN&6 zinF1sMON*PHNC40fDGJ5oz(hO83fTW?n@n3Xt=!F>M=GPjAKHev%oWB*JbbHdUq_` zmwJJZM5(wKIoo95abENkRA4ypHFbj|Z_zlJesjJrh$aO>+h8-_a`H1&8*}<-Fe$4e z_QufxpAOm`6SUhgtlhZUE!-)3H|whr<2$_VVKKn&eU^B3dXt)!9r=6mzwq752Rrpr z|7`aGQy~0+d3*Dvs0!Sfa|Y8d>1{Oy23zOpa?b#o&wpW3vgX1mrrBDS`QPH7%wlDJ zt-@}^me42G+&bIJe!-|ZbaIQ8In#e1iRbJQcssF_LiMfnad&PVLr~ARDPrWbpo!n} zr>=4c_sWhQ#Ky+Mk6SBGr|NNAU>r=})KP`gO87D=E)A9$C>w+^wYoYOD0??fTdC*y zJb6M413e8&)m$6Por@lEm)FP^RuCkdIXI#E;}t}b*$!vXv4gPPc{R4nvWHeB1_Zl@ z+PQD7^?w&fDA!^;^CJExb?`36AIlCTvCF%k8+YNH6^~VcL}%fgy#ol`jK?6z^{Zx> zz|*x<8+SXfrhNtHpwlaG6rtQwaD<mB=xNrUmNJew%`efkQTYcT;l4z8tF`h1S`v=n z4I5L37fyvgSUu;-<c`v`5<e{^{0yd^=hNg#i6%zK#}AHdK7MN0&#QHMk#N3NM$t$) zwv{pDcVhx=yNesW)|TojguvR>3_rbnUA^^vHMZYrd^J4%9N?=lv?ZWRx;WbF{vz}= zXb73FtB?mqGmknXX_n-3RE{X3;<h^-1RaH!$08z}D^Au)50Dzcq^{VQ$VExT3YOvn zdj?3~Kq3WaA*8$z1>qgk?-Q^w2BkPpNQ3To$?Wvq1)$I5u!i!N)Oz1zj)Rc=rw#AH ztp0E+3!c6C?9RoHE528iZlojs4~nj-`XMTaYiQ0tqiMMq+0?U3@?uo#$0|Q-ZGMx{ zjdk*XI1WTV>Pf#lV%ZVV&g&!W*z2_bx%d}Om{!lGkJ_~h)!|BcW!N!tI&#3d2^^$2 zg?b=)Xxx#@%7BQSdn;p61M|qhtJTO%9q}66IvLpAqMCZqh~`iJuYlv%7w@OO$5mf~ z`W_c?XmT2whUS9$0#ftqV|w`YMNECrTmEjz^-QAt{pEg+8_M@<VJONwK0eG2Bi{?k z&G6)}RbSC_T#fV=SnsxZo1fEeFSW~?9TPe;LL2_j--6YCtHsKGoNw}v^2fW`i0A(M z=mQn_&H@MefxK)>G3VX9?A_iEQOB<7yPZ+H1k&zZz%j574SkJK`>xIMlf??U-k<23 zS80LT9;6W6;Eg+n_dc8THjE!e%Hj)O2liq9tt(!yF$3ze&A)NICvsX1JkqK{_Chgk zVc1cT;#P~mfNp6OpkX`@bcHVhCNwQ?vyEJC1Q4_hbwY*I4w2%8&*j8-`qU`%ZH{!z zx2v3V6m4*7=P|UFvhVUf)6i{R1-~f0?$itZak+{g2o4)yra`+m{nIC=HlD5a9~p(+ z#)@mLK>DZew)&S<-ZwWA>Mjt>dBsvgtC;kx`V?KXl?dbF83OF0i{~fGJGu%#&!6Du z{Qtqv^FafL&*;xm6RwX7Bk9`it$wc^c=$z3B8A~b47G0a=0G6YVASwc{&XH{o(vzN z;iGx*h?U3J`#I!=E;X+pUvIf+4W*<|B%NQXUsLN=Ge~ldI6_dG;gEojBFa1ENgtT! zkkNdt6rcSlcsQVkl~Lfc+V!Ba>#gR=f7L?&6MhTVQ(1XF8~tNNFkS8|jaaX{1a}w} zva#~9Hn%~MW6S;LIq}iYGXec=q4G-0i?h1H%4|FY)2e%REs?|R&iZyKz<x`0zWmxb zfiH|XDc%raKMU2w!jHzB$5TfZ7J~m+ctdi2%o#+jAQOg_y^s=w6t=8Q#f@ztH#MX> z04I{#(z&z&+C*wek*!J+{sd~(1FC+6g%0_SHDkqkb*EyM(oSYe5+AMzg5WyUm)fg~ zXnG*j7EaY#D`#o;u)x(}aT`nfqI1Ig8mJRD!!aBzXJzw1Mm9>Ng!(m?LQaQbvc($k zak?Bzn!{&vY`40>c8N*fV`ZjMf#6#pf#++=28@<AiHVI3Cj4{RuSc-uyt1LgoGh`+ zJ8GJSnc}7pa=2_KO2C(Dl|xLO_=Q%T@_eH&R`!eVP^}pqgc-~KgHtkjB4k;aRpuQi z%YT~D13!r0?$OYsmHCZ%RdE)h34-&-jq$L0$EBLdl4NB@^JPh&V(^DCKA1l~K9jHJ z@8*H<ug?4H_H<J}iTvS*NNdWTWr9VyQ&dt99m#C5vP1*HCrq`;d-B-N&AhA}C(YB! z`)GPS<968?Yvs!fwETs^?gEHPUB?%~;7~X<xC>8aIqJp2@6N(BJ+T4zq%XYYt359R z1feNK6ecJlQ;-n#fLRwM4Ht))g`nQboI`1Uu=iXJ$6vr;FQ^=Bg(C%njlIAhXC1ic zto1&BcQDXWsLYXW^b{6JHRqQrj&m-`I48z1@|s4UfGPvLi)N98%VSJ@6Xyh3nS}s_ z#}!qY2EF<41<=s-zyWydToQs(9@RXrsKr06)~6IxlMrdJ05<L14W6+p;S=#TOjLc% z|A;lZG!3onx4G3UWC%11vp4EqQjlh;2EIOj1&?seh2paNXx=oICCSr}Nil{2l<8w8 zf$bjqr3Fn@Cai*N51J>!)EY3Af7Ns+0v&KT(&3$FLfKQmPPgcy*mpUeUD;;3|D8XZ zF$7&ENWVN^D!!LE#riGOd7t+`%iIZoMsE8sdaJWm=J+Q6BkDE~{8*h>&Yv>XCoj@T zm{NiV6fZ`SUyVQ$klq6%PL?qFj=t>_l!o&1H>n!`G9etI93TeNhVRuIT;@MP9p0;k zL8x0NnnFgM2BrI4V#Xu}i3M(@XbWS;LF9D?1xP~Uzw(((@!Mnc>bG7GqHq~o$VUg9 zZ);9tva+9t>SFFy_!!J0s4}IqZBeXU##FzcG46bWE$EL$m-6)!&swjW^wL^J?M^P! zEk{{dozN4XaGx}uR$9ph?C=FlvK})6eA;TGcxhd1yHvqkI9ny;5a=$Ug&p4KjFA)J zJKP_f{zLLE&d|}3%L5#_Y$`T;WuvGg4;yEea@-Ap+A~q;g!Z%@$vMln2PfR7rWg5} z67l^37~)|cw9NnF251@+P6}NCyhd5T*=3glMA-~61=p6&N#2xP6STkZ9<x7irZpFS z?(<a)amDkI4JwPP6m@jc5LoihM?OHOUphas_?{&yI6wJHrhzY?>#F$vKRvJZOBCX~ z+TSBQubK0Gr0TUS-~L{x<|3r(312F{SYLYaqQvb_lwPbWy)ft19#(oWP<mm`tKB`Z zSk;Eoix#!<3@?KI8tss~oIMmN&nF)+>g33GHE;{-y*7ojg*iz4ME}vbkXmb_>9>;X zmHhXVi_UvyYPtUO^09|th;epb_eJ-Du|o|{)z7yp)=#72^p`7zplR}ABHQDyR<dW# z9INdnZUbhYb7B5D<_Y6n@+VZ3gT7A!XT`U*{<novTurH5^RRODQX{pg;bJ|t!`{~x zI=wedcQPUm;;-!7<VZYsLrwJjc<$QTD2abaj1bR#qpswPDDTrOJ{LE_gB(d{=6La< zf8%q>#nSeWBo^N8jP!oVU~pFpBk+EtYu3{kpYcm{oW!7>_Qoh|jF^kDQ67v@#yo!O z-1hPMJweHwjSDSyAry6-72v%?MLcFf#WT-o<)_1G?SQGyR+wEZy^{o?CLc~oA8BIc zw5R+hSg{>ux#rjbB;^`!&Ch(!STox^PUXG5XNtd(xdV+Ns{}S=M5J@gL$C0F<nPZT zFNqT_rLr<RW8A>snxZjXwmOqGiQ^fJT?UQANhTo+t2^q{t%0&0rzf2Er60mR1xmeP zuRw%#^UI>0Z~?~}Bk)bG)d<CN3)#hkNk&YJyrvNCHts+|kuOhr{{T?oue@IdVFpbD zvq9YMsKFcxfagg=0Sn~5V(eZptFpm)t+$yQJRuo85;bV-rqsv-hOwK1Bc;Y}${2nb zyD4@2GImo=Fy4dNZ@?3LC+JRJHLfB2>;!)Z^H=b;w0|(!bYSE2gpJ%}`nV*bi1cDd zVU2Xu&Y`R1qSj;p@_XM{NC^KT6f3JBElzwe%bT|k0nNx918pN)f_;NrI$`9H%HZsn zGxZ(-?ua^5SKA_;%#<P~pf|!jH}a;>+pN`3nth&Z^44+pKgEUuGfoHU&Kv6lWJeJ# z22A?Qy&7Qs8S;)1xw)*)0y>nB^Umxqitp8a@n|$NzX8nqjUFD)N?*dKvTE0qNfIS= z>~ttbfgaY~{bmm<|2F4^nDe|+?EOQk5d^ql-)yS<Cf2k8gT}A1%Cw18s&W0(h@{us z#kEEW4T|*UZ=-V64ke>@?u2#n8Z>Ofo^V1#@^VI!F`nPTI5V`*o6%K2W6m3~rWaZ} zC!SHoQ8u}y&<mn#>p=Axq*SXuOVe@^oB!EnYX0F1KCaAcokY@Z#BI*{yHk%RjBQB$ zE+z-ugFysu%4evZRQ3VQFp!HS3v}$VLj`X)dgFvUwn0u}EX`vZOf~vbOH%UWJPtHz ziRBU`Bu9Je6ns8gJlEutSX|AyCbmN=@|2lKCJQ+)kdTiQbqD8~SXorYN=^QyiifFd z%`^?akh;tGp8YGMDoOHJpQls9k!|Q=wMjvFzc<1#6Qd_EJ6MDI6QXwi-{kD&-6bL> zUBc0#HD_D?JxPdkEw63OLx2GY{_!YRqv$Lik79jCDMx*z%R!qS9n&J5k8a3oYg=Z4 z!>VW*R>j8-tYQ<HnoJcT-c+V0zoqhKy|)zs07V>p*H^@?8m~TV^Q!2}On2o=0@`_> zCGuP>oQ}EoeqS$J#aesCS`Ujz@>H_ZN&{uP_e$F|*r}&@H&f=G-CWvESEX6Sx2doO zcV8$khTdZ+ng7Xl<awMOR+@@rlksZo2`g2fb(8*Tl^!)HGXV7&F-!YZoINC>rg_Rj z9;nFg@Kxmckw|&4o*YHzdcIwNOfqlznSr#0lt@mv`s7y>_p#0E8{mY(*00qo?06<` zX4WU0`R?1~SlLc%l3D2Rl8)YwaOdsVhG5oH(x#^QxUjjKuUe9i476S!Dy%njG@-R6 zd8fJmq4#6$8T?30bvCaNEDyDz_rUswP%+gWn0kHHz|<RP(-(N!j7ZJlqgan@XDR{= zfFf8ag5sf~Wu3Djl_3;v^q!p_8bO*7eHD(v-=p<V+~(C>G_zf?Zi_ZjVq}tl?+9&R zWk;Po5aHSwXF6~X-<={CgUnakSlgOC6jP+BZoL7d9M!qx`l=KH#7yb}S!q9MGTN8c zInlj+RrL_b4xLw7&YV5adIR!>Oad6>IdZA#85ycD=f5jJ7hPh9&xVnm-7+v)ARKPp zHW>~!y*|2Py9_{FHqu)Cz?9~yfhi<*rq$H(q%pbyokS)HCdq-25<&y{Yyxa_wD<bJ z2xAB-JmtLw*?Ujw&wczU%I_}b-SE`L<fw6d8ejZjs#9<0iN>V_{Hz!~#c+@fo%3m} z%%3&-sKn(ewa&`k#VrN`x;3lu^6nV>mHAfBXN}v}Y3Vmca}io}va;l0__du`jU?{s z88Pwj<dJD_G(KT32k;WiXM7hDjmZhh=7ARp8Oo~98=1UI+V7X(E1(^Tdsd@blNI@U zz#E*0Qn5ZDkN5)aC*02S7<(p>aqIZ0sUi889|XEpi_1Fi(?Z8l1|1ptA$hfwb=Qbk z;CyOOp_MVmr>6VPlS>y#&!G#1snp^2gc&FspX6(KD#RG5n0s}7(68{L>d*1*?$7U` zK*GJcLs|y(l{>87x5R+IvQ<4pUbVEg)h0h})DhA-PH#+YFzS3?nLk|g48{+&2lY^! zs<KQ~sgD^C%J8m)v#c@Mi%fNr&VKa!7vrF>dn5<c?WwLCnPNi>S%vdfb|$1#_?K>Z z1}|o-4z7<^FA6Vs(uZ(+xQce0uq6Q%%F74O+k(_pp2C&>Q3h`a_E<o(LXBprJENXO z_B`<sQpJCi%x-(yj;$J*8fSC|c<ei^jU=r$wlIvRTaq#NpEZW#`m$S6pJ9@bqzx*C zF2%1lAzJ{LXSkIn7MAtrSO%e;*2cmeDo!!{tA0U2Z!(a2rwjuZI7<F+#wISdGuxg! zuh#167}IsZ;@qr5((fH&tsDgpW-HdgR;)a4g8b?oHEj7gekJ^fl{rLGCJZQdg=|?^ z65ktn#TId<v^Y{6NDUjebM{v9n){so25I5&UTGMVi2^(!1)%~MjMi{RKcfJn9sD^Y zfMk*pk?8nKPj89k$)<;~*^R(djL$6GZvf2^+)uvdFc!Gq+0Fb{1+(ESl&3IS0e?p- z?p5?;Eb@;?P5J|Z;csQz(qZb3yI<!Mv0Z<~B28Rrxq1rFS(Y>s$&U<Hfd<6oITY_8 z6~jDQ_xnvd!xaVHGL)l?IoirTp(@<=8ahHF>GwWH##J6k4fh(qZ7!i<08NTqfG<My zO#_jq3^{V#U)YG-UNrrW{Z`vrxrvVALtIJxUgnR5V6C2OmJCcKf>!-6RpWQeyM}5a zUGtaVTr}Ho^b$@=`V7eVmdVt*XX@ASCzd0MPLRMe^^`kwd9PW^bLTU>->Y26w<J#* zRQez|B|VU{RHWAVCQ{zn>|@WZ>zW*ltns}lXV74>U>90=@aVF|!=vb5MIdr|v7Pa2 zHM03n7WuY!%8xZUF#4J&!Yp_V#yfum4})=L9@R)!QKroN)o{upzwipA5h}i9#Pi3g z%UTZ+yS>LMUgkQsim%k<j}l+F^<Vij5}9sI{Y@xsZl~|Q(q^6%DmP=z@?S`i=D+yO zrM$SR^y1%3FS_)_dA!g%U38pd@Zcu|O~O-VTbbLy1l$Ds^U-zA)0<vPzY<FC2w@CJ zo|wU<<*^jG5T^_yc%PHNS+KP1wq5+hz>Zi(K%jwNs_hzw7u&r8-@*&LU|6q>h&dfK zIHFo3z(CrL7Hfa>+=a6X-!0<L{car{ah~2BfRxv!O#BbLcfV6cZBABixYjSq%+z0h zhh;Nj1{8aJ4ZW7%2E9h_c;&Ig2EGy9v@=T2qv@BSZv#yF%tNe<2as*<&y161`nBc~ zY0fd62kF6_7~;Sba_LUW4vsiP-O61{mddX)cPE2v^TO}ty(*&wv94X)7JhN*H3Hlo zoLtXif*gxzASs4>o6(kLexVP-Q|hhk9l9cfKb(_U$ac<07x5!~hM(>p+@g#>!t^@v zffBV2n~8p#freId7+2Cl{sxfh)3bXvc{WT}0nN&e<^{8|lP03hpC?SOwX*MufZgeJ z`LFN}{u6YE2a{DefXqmJK)mwnJhXa@0y)!{>_9%QPLAqavZRXqnXvquwa-&*Xy$k3 zf=t9RyMTVRX{RTX%D1S{t>m&r`XEx-KaGmY7EKotV!>=P>S?)IPB0!V3y%@WT>Ms< zWb`gzxkn9F9Z7RVmRn@E!JHQYhqK)>ktt;=dyrXB@66fx@0R#NoBL}Ku83-LiKz0* ztLfvJ)ZFU*96kW(HpjCv5()EY8O%H-$swvN*(=EZ_+}aCT*oGnOFm<GOaw&PjCL>v zk$QiLf&fH~D)*aGIWrGI%CLEO3iD7Z>*8FDJ7VQ$7w2L=2@HT>MB$T%f#JccMi=@@ z`Jt2}VBB*!J8OlRop6660!<*Nvs+Hp6($AiKIWUK^L%20dA+bH?kt@x@${Wb#BHO_ z`qT^JA#Kj~;(ChmLVSy0!=K9tft@lnArbzKnHVeAGiWh)3gEW0thU3@+A%5Y=PCMf zKDl&MU3Amy(ez89!YUu{d)lGDk9RJG{?-(Z#UC;NAZY+dS|#|@z_l+%JA21-QI$M8 zXmb&BnRcA^=AaMBFW9chxI|WcwlN-SdR8mfwU<L&TFVdRChl+mlEXgUna$An37P`1 z^Zpe3&?=?{RY;QgkSg-prwe;4@q{fx0R)9C(z2*8y4m#I1o^7mB?pwd6MIiZuD2R@ z>YP=be%v*h&)HVbcYaUHntz$INg=<Ao6bLK6sl6!+3tNB;c+CNep~x0-|#`|6OMyk z-)2qS-tN4Fx3YDU>?zZ8V^5A`(3i|_w6fpjL43l`gkaoWt((jSljJPM@pl?*c`<Jo zKcx0U@ObqT3vcq$+e6Wd*X>!4*dV0_TuL<rV3_m4^V-D~<x9SUaD6JupI@4H+V+{F zrC7fdVgzw@QXBp9$N9(rGV3PsBe`KSzJc(iu{FHJy6KO+95%j^)#f3Klx4Lt^C&Kf z!`fTE1dZbt0XY9V<`~53?=KE+>{?DFFobj%ZTcMQfQE#8ruu5}3sBsgZ?C`u{A1o5 zW&R=ZAg0T#pB=-W=TGM|H!H%~ENthWro#MlLS0FGJ19S(ne9x$n)KpYbo^14MCOd4 z5th}(bxCdZs#A8%y;;NMC)>s+m8r6CC^d}`BDSJCQy0hFe-SywoSox#iZ{NtXsN$X z3C2H2uGifO-q0VqH>)&e^I}y=0y<{aV^%)ItdC83g3#ht>uXe={C8CNI`WGW9ne*3 zKIw5e=RoKL5O{BshYBu$z%+hcm;52JD-8(*yhc($JUpKWYw;U)0huOsh|Pumw2dl} zYV_hwUi7OXSNV&%A2Gfcr%={*D|{~mL-s~6ZdQM#{|yrjK`2mG4%bDX%qCI%ugr*I zKJybJLTo^-0<t)n>L4P$HdR5O5T{{46$D!Bhi2GnpsRGC`H<Q=g4zzJ<cHKIOy-~W zR|{`%VHm-g%pg(s<}ziS8WenNc)`NIdV9vohPV=u_YaVgFWIh^0Q)@zaqTyY@sxq0 z3;Mfeb~NBh=>Jh(&#6sbVu)^L%*~4EOv=c(yTqrt^T`QWp9t?weIw@H7EsZ+zJ#+s z9^PTy{5`s7^jX8{t~5Ul{r!T94fESstTp*dkzay*o=9hLa$Oqgdy{68KOjw4c>-0? zp_ToP8tdtcc22CWN?itAjqT3c?M?p(02|jQkXFiWrp&?FPKqbOhV5A^U*skpUI;n* z8xy=o=qi*rO4L|poR!q5c`u?d)J6=DsBJ#A`>htb%zK|+->3Rv^qQA~gY}}wC|M8< zBxO1T*#9dXihn_aFv<ligodvcJMcfG!z0xHgKHBK^DhPDb&VoD%M&A@!wL=;Y{tAP z!wW)(SD)tZmky*il1!E9ErAC_@=J!+J{8bf)T~5;!Z5h;@TdAhYsL7Be?3vY4=9Ns z-{Ln(4h@<~u7k0o3@QB`QX&$DD4*ShiAH}t+)qMI%9VZ+N1(%^0+doXHhftx1BDJd z-c*0gH5&(K!?-PNP46h<>1W9ml#0eC{8}@`x=9;B9i@n)2V8C@Ty8s0;F?g?d56@o zGu(mK#risD(=Y)I{uC^rM+a3Y1uRfF=yy@!!Jmp-`|ZU&;5_XCKQcH%0+RNCap#*f zIT^YzTQAXti4qpGEpR5xK^1%@s9^MmS6~*!W~df9z~63Pf-g>y9&#Pq{q6Q5N<`h; z40BTN@*l7KWbB80QdsF-_9>Y>Hs$Yv(#nG={&YTWm8I-Z!2v|>)ga@<atJ|Ohi_g` zn{Zx_HT^Z-v?bR6kCD=KC7c%(7K8R_lk(t(H(M+Js=m1wAYD8iZ&L0;tVVk&KqT0^ z*PTnsx45%qMy_GUvd{YRt?iCf&Q5Gq;1PqC+q#?I-DutSbxq!9BEkMTEms{Q1`K`A zWi{k<s))gjR2j`zZZw+Jr(yWZ&Q(~AVvS6F9INLpp}u9i<*Ku<t!oN3lIiVPTs)IR zQMLgqV@h<+INK#{p7UATVae->)^@SICx*;VC;DjWFXrq#@mYG1Txge)dd5iVd5sCh zBVe|>LH4Mn2n7T2aDlXM$;NI|f80GH?#_f@4)^nwPOI%=%OVg>y3*%~k21*%tbbC9 zkhjUh2CKNN)|^-v$a`_;8KehXSPTE*)tsWa?#o|+KGS48bAQ|?>`(adYJPBXWkGUV zZ<o(ukMxvo>z%|Pvz=PFN*XtX`0hto;yGxVxn1j}$#^Q0ZzP7dXp1bfXg-v<cMMx@ z#zy`WHn@D7%?~Q<cnUX+);^VESJ%2x7xi3_c%qHOJw2^kRjN6V_2cf(41l@Wx7!o$ z(56F&G~d~ddGvPVSIvF7Lw}MB#KPLakw>XJrS!5gE8i14{k(=%WEtReLx(B*pJa0l zEJA*IS&2PlA7ffVVgwc;)F;>s-jhK6zA8ap_Ev}&TVIJDFxL#Hhi{?OytaZM$S)g% zI!stiIlnACsI6f;AT<Lv?zebN_`ebTnp3**F;O88T#HNi_>S^qx6?XD>tF+j?P|R= zWscHQnP!#W$VH1THgOR#<+gUU+C_XicSs9~J-y*}Hfw#l#<!eC4mug_TN>L{{)qnc zqx*fotRiDH`_?jP%W-X`5?~SZCwB<OWS94Ag3yg8ZIS-8O<TP~ROIgn8Qc69U^1om z%x~vI@`o%G(+b|z<uBvT=Lc-*_N>RVSsvOlxj1Y040ICE9Zu9Ik3h+wbQzk5dj=w@ z<wPRYR>bm<+gwV&rec_8pRW?XSyhE+FuiB^$>;~BMlcyz)@@U371LvEZS}IZm27Q; z?X%V6f%Y44=J=~tXQs8+{i_jG+K-bVHb1C`;RJCb*8vfL^_Wu2NvY@6tkeeycK0<n z-0<3+H7Eahe%ExS5fq;Ur@gBbCi0Q5BPf28Mcp43+#bzbtKkVq^X4EzuDLVACyz3J zec5uKWXms7z#DNAmKgjWgB`I98P5A?xUC+0Om<7xjK#}ZrL<07X1l-Y6AC8$N_-)C z*o0ZP`+S~>iWUN$8l*T(qOQnan11gc$>;iCI|;4nlO%CAXgQ#)KW}tS6n=6Q!!h>} zSSaf3W~ak8&G^y97(m%C^;_w$!JqKz;QZTaWV^*R1Cd%kql1xW-FCRuT)0&VZq;hI zRfln@Y=>LT`oD0i%Q1|)?L}_YUdgT6i`=Tc$gSFo+^W6Et&E%(cmLg>EjJHt^{WH9 zmEyIHt?N^oA<k8`gY8xS7j{L|++cehLjZ4RuMd73&2MEk?8B+hu&Z|16^2jessq?n zo6oL-^^^7M|BYYafdxl_U$qDPs=XzEDWcy20v&0;f?u@{<5%rve$`&)SM5c9)n4RR z?L~eiJ8im;nr-J-TlJG$47+;3JV_7MdS7SEM3MO`eC3C~z769?*L|Uq7oGfZc+nQa zYa&#-&1-%^HJHJ(8MXXHyz_RR$Xt2)W6Tvpr?U3$8Rk~!Jb@ArWzJszU}IKNLw{O{ zwBIrQYzlZ>Qsa#DK0b!2nM*;Ig!t9!hKLK3l;GKT(<|{NTz{6-o$cOuYW>;Hji=Rf z%+iggHcsxk@wCRtJRCcjhhufstgGh9Zv52olb!f!<K<!(xG3gQ5o(Wk=TbY5Q6~>~ zQN(9S{&&PUWiNoIAlxE_8uPYv4(sHicpcr1g`ZCz4a-($9q+iMcx8p3C-&{4kBGOF zToWzd|LJHw^a^~u&if%kh_JasI4kQ<OeV<{uS=(PsqI#OQiN*<F<j^%6tD49QLe*w zK&$|MTgnOqV^Vy46Y=E6Z)~lsSvUVgQ^@_IJjov_IUkYmup$WoLFkJA&f#fehdtZL zC&>R`A!ju0iAl5!ZM4!O^s;n@u01%2(okXcyX~?|lcW*v@1|o&D#(*P3Np~Z5mP@U zo|}kliA8<L`_fY)A-&=(2CRIKN<hk;_iF&v!3?{&p2dRLfV{iI&%fwPJPOCHF(9_# zkec~E1{FJ}&HZI~rY*(I5bvY5hT6-!=|HUM4gAth#V;);zck?+zqC`!erYBdl3Yel zsuh9po$;J1`K8tHI3B*Tp(gcPiMwXac+&EVB7JeXP0%|)lKYl(3_m!}RpXDL1h;;q z7e_SuqiAK{tOnc_>ovATVZf-d+t{GH)p#)Czor;4^&#RNFKSUVg`NZ2;#zMMkHk&t zqQob)DB~j9D+<rn!+Kr$+@cX_aGvCyu{^p`7tLHO(8YKzlF5&%PU!!^hE9O-rc<vf z3#lID9R<;o(~DR7q=O@dI0RL@5uSGQv`hyO!1j3fW$UI1;?GSlE3_$svjao!&3;0I ziVGqx#r~MKGrmIB7zC`DH6}hEBKZ%9qs?R_4z<?cv1etbvt-3`7X#px4Y+@9XpHAB zB{(Vox6pBUH~n9XqV!m;ZA_v+)@c&&lhbIx&%nOmH)Bk6Keqy0<C2p-avgaqUa&GR zYi>B}=%kpzMxb_D`@HWQ3z~CFJ&us{(p-x+@IGzdt&2Ha?2`yNFWS{EAD}CvPJ1=K z3;3<!H_7kl&L#T*?|i0+4{1jF6ca?V&D#zQ0c<EQzEadn`*<SZ0|76WwpX2<t9}`H ziG_bV*0i1&F+<ndOZ@abDhe&BQL^yTbWAjn{*cYt%Q0M^7?XXZP+UGOe+J$2`LXYA zE4#gzo+_*Hx{yrOqZ-a<9)+W;?|&|T+g)<?fFa6R+qZM#Z#!EoI$gk(v&5z^uVm9- z){XMUY&9%;x7c$X?76wbsGG}-y1B%tn@fzkxx}cO$NLV+3hfc(23{+33AePap<+HC zRSA8_SQ*P(?f}*8z?9!@n2S=rFG7gS&&BViyHw37Dlv+ReLU&VR!Ah%&<XNmxvQ9b z7ejqXB^oCetpOwvdOZ<-J@u8sFU#!(^tgeqB&vTJ$#J0lL+DX!3d?<o9#PWeuu-Kq zK##9mnOW+gvw=aOlS?;34NiNXH>AZRw*-3J@4cmK-cw7fPmf&q^w>3$=T|zdh8RWj z(4x~ix^t;W@j_}2NO6H0k*};Eoq42zG-S-S<^Gi3k30taoK?b)9o}cHd`F20th+fL zp)Yl+g5$JEA#K5!bdetki5j2%{2*6evl!X@eLzgf{9h$qvUr{e;$yiJ&ame{$I0l# z=*GkEC-LglQAxACKO?0ScKZ26`fB*zWCxZ9rGjRsAC9o`E`P)=q2_hoze%cr5!`Bs z(1bkMz8|a@{8=i>+eN(92(u!QPl%ow$2)0yjE8kB{MY2aP)>v7ooyf}JVov3Z@hw8 z(6@P?qYCMBj6WOhohWr;&Icy_NBZ@}q&=@#wc!!t`n=F`f%dAm27>KeEMi`VV<C)7 zhLA7o%@B}q!ql*pe0S`0rdx3xmuITt;mq*?yTLKV@rIj)1OL)yeB$eslfP+m)Y<3s z&&XA8#O2S*w1_$OzdK5K^K)Y!fh{%1a1=zpF>WX6M3X7{!2xoykr%_z!GZoQS8is= z(LV+WVN8r*aHL)hwsvTAy_0=vtTksVjo~I9ey37FfSgd(*0rQ@uyyQ+TD%@w$Lq6T zyPmoQ#@b;%{fo!~8l6|MLjFt)D!qPj#q#LSOC^-5wbuv^{w+7T{uNzMf*@u2`3tmH zt2c%S%?Zgosn-ST8WMITkv97fvV!t-qJgokfi)N)nRmhO9Q}Hi;fTYmv5j*(OlKC| z^(zGMdYjYFMPAzu^?L$Y`41lBL7rTb74|y=e+kR}ib!(@0PQ?0NdKSV)(o3X1wQa~ zkNR_>lhE{h7HAl65&i-L?#SMHdI+_Xp_GGy^E&vqJpWD55CR%O6ie%LWCWU<@eSUr zA5xX#V!aFD8&I;yH===LcGa0*le_CkniO|AghvHD?#uQW8v)hXZ>%&c%<1H23Rg^; zj7d|#ym@#Db!dKj%kir+SH*SEdlb<u+PR!XE3*Zm3RTV2uUb9R*k+SHL;0+g$xMr! zQRWSKe^gye?76!=9rh?BH`99&$7e{<!fk_Y`E3*x@%W5TVH9vDoV`U(d6<|8)=AWk zIO{^F?b(;$${op%Mv>Bn?Aw`So&4{x(YNGo+=K*}s!HU(8k(M~{=)R!=o5jGGfmNS zd`48RM4HG#r6{Dt+}F!qhW%Lmu04zftZXa&lfCFP+dcH`+~~7(z#`l-hLrCv@VqCg zfr^IWCe49+j2f~>F7iz5htd@299kg;A6VhAnY>U+v9mSS|1v5gBL(s&9(v8Yy$j5M zz-IgOSxR)08G>do#oHrCx^~B&ejvXCB)JR5M)nNUa~2ObD_-g5udn$`zqmi<Y;aU` zL~`_=$fs+PqtY*azymlGJC>)@`#!KTzob%~`>-^<kK|b|!J{Neqo_#qYkeT}wE<77 z_4xZfonPipA?9Y#`Gm8PggQajw~o{baz5FNp3a|V$U8zS8w#C_Tcq=q8MHkRX>3kE zRtpI6k*7Ng#^%4q=xX1o5w0ryGt4Ce{4lKWr40>M_G2i307t=V9cZABXO=gh$v${& zmAVC(#%-CF8{Lu^89`aHzymO^6`<f4XH=!W1}YoLgMBzTQZa$Qpq^5lSozoeUZd1K z2G3?JF$h)T3B4KpEtqd^^v1$yS$CYZs2tLLv(sk|rFJ==C7jiNntClaWk|RZ_rzOP zv*0C23g<_qm6q6B=I2TwiqyVJ4@Gai#i%!X?s*LjgYXIwyaeqznicbkymNuM&=g`n zN&XQHw!a=xYO%Q?TSzAt;-)eWaQkg84L{8^D2h`5cq$6fKQ8a_uh?ahi%)R}R@%hX z=BodhebZ!{yl1v{T*<5bZQWI7TW2ej$94*udBJ#blxnQ$b@q2-i>&$n(Pn=)R{Oh& zTKXeK))If7G-ChIG<V|o;3*+TpXP}lMaT}-R8C$rg9DgW$5n>ue+I37Bz3+<5iff) zrp`<|H7mV+KiXl$T&31uO@~;&PB8m)EBiLL?C>`7Q?Z0Wk76{T{7K@mM$YB{ODZY+ zwAi2Y#*pqYmiY82Ij7bfE$MytPb?-Uz3<bl|Gb|1z3cUyPBUjE%Qdm<%!>{Gb{9N) zJcG(W8E%$;l4jTREkeP0A1LpwyBM9Q%^&al5Sq`<6ffk^)7z~VeR}aFUKsAa%bQF% zv8p{2ChS-8c&U=r@-01@vR+(k%3RT;k;rH|vgs~=-R+=i))|&z@8|fo`vnl$4ii_W z;ukCAIFVqan-9HTsY2ea<E_>Y{E_0hUx*5cZ+$1Q^5Y&UD<RAK0mt4APOa1P!KwB7 z;kA)a2d6d%w=Mb|oEq_e;4iwf^)oP)7?8oKCZor|)Y&W*Q|H{1nXhN_^q$`Z!S7=K zcV(x3`DYKV?DDU4*&SSJ&-NQJX(FQrTjzA^2)M!Yox$6I^eSBqrWNiXm<Q6U^#IE# zJ82^7AOr2C?}Dv}e7V`?-HkuBnfrR;tClVr`amkGMxW}|iIy#RVUW`~iDtrR0KHoe zLxAy{fXB@#LgbBRe+s0!S8u&5DF?q`!}Ep_asGh`3nL$%k+M=fraJ)nIR~^Le|aZT zn$`lCXu9~>1`6h-xi8wwW6s;f_>VK}@Kb(Fvg}OHk+CvH+GpJ3wxB3F23v&5LFy30 zb`t0#ge}puOGok2=eo0VV<w0z)OjPX#;(8|ts|)?HH662hdl<dmGhZtoYkv@6%$%q z+;2P2ur`ji9S)C<u)l!mk5&(q5@Ae(0oe#^1ypX&u_N<qeEI|RdzW_xUzBAfttZ9) z75%7DY!LvYxQrZOW8p__=bAbzqkMc;&w^0y{2zC|_fc!*&kfh!LI^~s34w@IQJly? z=CO)jQH=xI;t@-%%uYVEoAURwZXh4O8?vqGo9)nR27{mEoyiCOl0hMdCvT$|3V<28 z@e{4=Cv?;FhBR1Uu4Y<p%y@ICjn0m#@z!7Iqp!xG&koJ3V@s5*5z*%V@xc&o`Ca`~ zKrB3B+cxjMKDK4YFdut0@4TOLOJH1Gs2eQTRdBrSUikxgHy7U*wgq_al|QX_b?NzF z@wvR%yz@)Xi}}TS<<H@rReJvYV)>8h`KiU{d3j7}9C~H+_l_z(_tWbOubfp9-b`K! z@M_M#$aNt8aM!b7gtNPE-=Tfp$k0Igm6MtV6!`D`=^?o2snqK8>piWfBmO8Ug@%D) z!z%G`<tQ8nmWGdlJTOY5ApUybC<sOVD4aF_KOKd+?|(3q{-DZv!@8w|3Ymj7o+Xy- zV)vRyxa)c=vs}Ut`J5RcZQVQz*kco<xXc&Nt53htPQ+NVwem}JDWano8{UarsjwS= zz2O*i=9`B7cU3Gae`3Wj>s0yq5A{6E*N7w|*cH~ftz)&tqZ61<^MHB48zD(=UJTw) z7<vZC*1EjW_fikfpkDvknsPZF`Okh<groN&9(iBrWl)q4yW4i2@w#9O%vn%iGQ=5p z^?X73`He;_guml&Q>Sd&BI4bDq?T!>=Bm`i8d>s-W`Al{($>2B4UmNF>ts3c5u%F3 z3hPPeM>2qoYypTln$97SkC>CAypvg)5$d|+8fEqFRtvYNg}gQzG>asII&GW!twHj> zrI&x^rRde_T@dmv(Gw-#EAte5JL*9+8;R?RfK073^Va(<I+bkS;`ule;KWWa=^>qG zE=|rrilld~b)7d1U6j0vyZx$PPY@*Kj?uX|bWsY;`ea5gfacne_qPXW`z+e-)pF)N zsoT$Ri^~L1&#cQgX~>;z{_FdA-Mhq$4*usVJ5ptxwS`}-*}eoh;@i+e@9kejj`+r9 ztm5zN`#?Gt*s9M{ZsT4E+KK#Cc%|H3{5RuOsfq4Xsg#beb5rX}aUz88T~H&E^8--* zxUcZqWzT|xrzMzINBG~ruESeAPdN4Ixx|l+#|GZ#wtERaTHmOThyUh#f)m6Nb>2xH z);Zy;Rz`AB!g+;I_E>s<we_8M=pt7k>y{_DB7wt*-W%?ap>CTr4^7W{cd_2e<3sZr zUw>Rl>XIKz;Mbf{*hS}(5lgM?tz034!e%aJDOg(LeN?D)8MN7&x5<yeN3Gt^v7k^Y z<bC-8%~}HBQ?Fg#ZEU|V)xaG&Si0EXr1u|c-J)I0{WVnIyT*sgJHfz1bUrry*>uLh zv=m;aGdL3Ae<Tm@TvD?%$p0yLsJfiF##kXbsjuq(LsV;jQ0o9IC?_)JmK>70IjAvt zjB0zZbIBn~Q$4_qH`>J@_Ocq8BpAc<W2~PtBOsA(ilx^>#cP|T$GW1=1nlh_5w~XS zh`A>;n7&$>kI)z9Ul|YQ++V_j!9xBWW~Ql8RpSkw`k9wQko4y}nDYnDb}p$igLg|S z<@2ATTJQ^mhZXT}Xl#8iFNVB7OA;*&g_Zd>-}v*fG#(G5Z3@Q2heM(Fv`}N+B9?Z) zR;=E80!;lIl7Ye0VZM2jau#P8sa&nf-5Hci7R%u`{}wMOcZ_w5Slaz#RIW297Z1uU z9Ajmd@^(0loe3nJOU6KB&0NvPV~c(C?$vy(=-9n{Je<z{j$jk?D}S4L3x6z*E;RfP zEAuRmJC__r{mKqa{f8Ip_s=L1TkYllke9)wq_Vj-Q=#};36Co(+WRE0hc|VNX{wf{ zF7um0?(?ThIc>Th4DU{@u}?p=q!J|o*rFrhYa?LDp+zHe3x>SCtoD__`~h49@<IhX zfB!>8|4j+{A8aUU{r)K+IqqK2l90LeL~d-3f3I#}fY@qRbI%#4Yt~%<#UGXQ2XU*H znee!bto^TYyr#fnzaH8b4{eNx`s{J+YoEsdjQ97ulit5+{b5!0_TC+wY<hxy#g;d= zaz1R+=G=<fPeBsywPeLT({^^SXR7wjJ&#VwX>$dw$K4C@Y-UH_Z}lvRC!A*!O^?Lz zYH0V_BC!;0ZYX(3BK)UhBAQz;qAmRN((&0ni<|AaC>F*q;;5{@cP^`~N?G`fU`Tx= z_2)LXsxYdX%j7#S1p=taoOC(%k%jezr^*c4`xv6WnNP$#z0SyAxNfz8%}*B<d>igl zE~|NTFh22GX<_$ZWoi$==N|es?%~x2ouz<+7=Di63LM7zUmV5ZE+Y~k((0W)6btp~ z(nsjl{|-WJ_d3}Bq#{B?cr1g^<aFaJ=#KO;xjE6)ul(cfS3E2}1t#5QA#!c<yxer~ z`0&!U?879Op8GHgnpg}aP3QIC@uMu#;Bjs0F(J>+wbm=01M4myVvFA9%_Y!Huk;u? zvvbqx3mY!)_WlG9_c3^}FnBhcwv53Fe}DjyEFjm^buO(!NA-sG0um35T){3QyoqfT zNG0STH1ShbW&vxkb&K>W6X!6Oc{7nM#Q)Oo>F7&&&gdGc!dfF46fluoy)P5TB{?Rn z@j=XV2E3mGWLeNmo?M2oQrx`r_nJ^f++=Pi4>3Ce`dqmom`M65anXsVrfyR7tukX= zL#LM4c+ugFpyB~fmGwu;^&e1c86G>AK)!zj-?KWFx~1AP{Uzwf|D2E9J*TqUR;HN| zD)EuBn7!)WQor*@nj#U73e})5+v^7j?-h4;jN~aSdyDwOL_;vY+D8;+yW%KJt@EDR z?T^8c26kV*Gu$t^3L(!wd^~lBIZ({smk5_dO!~YFKf9`4pc(SKONMvj3ZN;<N0s>9 z{<~5?{tNs9uQOE=Y{<Kt4-P1KFdU2Ng1<)03E&6^+ZC;zmF>^@Z?tcakiU~2`2EJ? zV<dqE<QPQ8`7uP?xpd@GkXr30orRxmvbCK@=FW7A#+fXgi-(q`ULj*qqUn{?GDsdH z*o@qbpGSj;REM!&s*HQz`T!T6*ONDD3b6Z;cgkmw@CjFx%*LZ#-s3wdL&70L^rS^S zpg-NeE#Wi2+bl2<Mt@pe5CAT4*!S)AHtwYwa{ORuM2qq=zW%_JU(TJ{Ha4>Rko60h zHTBmcTFYwSi`G|5wEiJL08}7a@AA&%UNrX4)aqRYQz=gl__p+Cv4f6Dfi3!43h=ct z`8lh%Id}eFJKt-$?ps!mv=SSyB1c}Zufo2AVv&syvsO7FHl{ZD>p?kUj(N*&YJ`>f zs>s)*t=y&|@XkV3Dt_so=c{sx_Z?rAda(CQ4G^GTa8E@8=5w}+3KZr%VYB}}j(UkG zs`2Y?#SLa@ob_@R>tza$OFR4~Cq=65rZ;i?K=d3y^n6dbV4h6BC&BX#l2um4CR~N@ z(BZ1LwBA(G<EFbcepexf7hyJY*5JXwk(GC>06w4LDV15{6K6)l>*FE&0*`u|xHZ88 zS{F>eNg34_vU=u^rw-v~028VA2pW}QT_j5w4~DU~P(f!)Q)))B$9WDB(mLEbNwp68 zO`3J3!{21iWQsO>N7992WqI6Nhk6@T{`*{c=Uj+3_|BzJ)Lx$X6t#&Rn`ak3DDj8r z1u<txPJEA*o%kNo4p9oOw{*@i*Gih*7?+JeCtEjodpS%{vu-dF;Vo)T{pBa3t%`mn z3hTEn_^l6q1zgoYq*?D;bUhfc{YUW-k2-XXgC=fH2wClO6jx|myW8jauHCY$JfupU z_66Rz1cjTLO~U2{EDLjJ9+IHS(fWyTcKcw}Jvzpicq7}vlknmW#(|0G?fr>Kd~&+x zxO?`{&|a$L6L`u9wnfBiq1so!D->O*=^LDVpHwOEQ0wel@haE#m`}$zgXX%1>-uh~ z^Rq*#uZds@*QYu>m-*k0*<n__Q7aGzQL#-z#W!QK?fw%90oX}xrMqZFM=q-`twYBc zmMD!)hh{$eARH)^S4qYIV>aFT+6Q>gsJ$OmOROA4CB)NnjhnDy+%d+Pn~NGEd^IM< z?snu7Pg&NaQ<TcSLzq=<py<j5yn`=on1hP`M*1joPN#nPhkYocU#Vp0#p&<@zFq9C zgm21V5s}Zu9H}2WOv1OjJqWF5DW^pw;6UwF2wR%G{baN;?LHFEk@pCL26Oj{Hzkgt zzH3hJXClWp*@(yJd&wg#>t&slJ%t4iMwmP@3L{9rhnjAPCx%$P%ia_%%wpp(t0KZd zTHX(*O?WU)mX&V8>!>Rh!u^VEJSp%T5@afxkik<(LnQDKHt{F_Z~np9<lOca6z{>L zXstJx9BlO`MJtnns07MH49T}f0+Mg%F(D%DaYZu3QzuaZO^>)UxFi08-$s6k4ry=h zYHjA0F+`#7;%<baH@|cEox|@uzvALtV%CHUPU`{^gA0!W%lr7>&0>T7efVrDO{Lkj z{?d5fRM=C`LWXu4y0d3(OyPv}J0B=zh(E-?H2k?=r-AsQHb-e#w@6n)8FHSsXx{ps zeVvOVRS2%UvL`HV_7`#`0Yk(|T^FoNOmqgLLlfQm;*X5j<>$pvf3-ZeLn6yqh0*ZW zDuM7%s1E<oEIOO*R^~L`Fx^G#HQx89h+etMA5+{H8km+g`Y^2k^yrF>RS{Tenk4`} z9BbNUPAmQkwZ=l*0Ln}R<k#~2yeB_weli~dv7k*%WtUe^vx1J*9{{t6!$5&;L!dPJ zb05R#Nb44GOPifEHLU)Qpnire^=keT6uP`y$H2apzq!0VltQUYyvc)90Y3@iP4LIv zg`MVD$uR-^-s!VU|GZQ9g+1n_B0LD7JnNr74(0w1d3{W8@gpCe4JspiCqGg`^cn2| zqUDbA;u{|fb$btJn=9)J20(F&NyhAyB|jOK)<T~*2`@gcUVpwz$!>4H5qFHUNyHTL z3jbQTXHDOAtZV-a-S)O9@?(W0r3Jh%+@_`m0vYL+@30Q8;W3nHTmop>JIuV?Y7VyY z#u{)2y<5#g{JHhTO4HCfjoFoL1}$C#!0Y2bzpmeH-WcwS`(LvU<XI<9L}oEoPQX)H z&XXs@&nlPeul~Z6K&oo3OZ{2ju?H{9Cft|wnZbUrQTsu&3zQM<2M{KkLpD7Znc4N) zLtx<laCRo}aaPsePui3QtWNxc5@czRD5+FP1)+gL6OzD8JAuerq(G6ah(dt`O0hI0 z33MC=iXx(-prWFnpzIYwx))?AWvgs07U>;^(jrUC*1X@}x%ZhREx!Nv%?CQqbDz7O zd(OG%oO|xMNMIjoqv*qU`TBSRo)-%24vy(`JUeNr&9UAqNHHOJ+<vj%ZS^vWiv(?> z2=DD3#+iC3reE!Tag^VpsOFkV`QI1s6g~W}PX=09Hs*X@t#bmeYX+OB=?QSQA%W^g z>&vM5+_W&HK=~~VZ_hdm`(RDijH<GZHpCzS#kIdzfR{ugY_ww!jP=-w*3!+q0*u;D zd!G(pB-dh9)_GU@oYA2^_83@h%iIU=mR6fOXLQFM)ZF<eFI=sH9acLT4|6vVFX2C7 zKjb%SA&u8aHTf@@`9A&{-X>oiz;j-;+jWifHb67|2+efYSWK;gr<6a2WYU_O{yRD_ zXaIS7`#Zu{*v$AYjk()6?hk*_^;|%-CeiRr$Co(}UOO|vwnRCOAq^a-S)?xG6p1)# z%FP>?LfK{V@qk#%m|Of)4(L3!4HxYmi7wJC2mvTh(rwpCt07Lu60vUlDOZPC6q~Vg zRJ0EmReOM;n$ryJ2B!dg7L3%>zbR1cA3+33IO+FahaBK(mAT%)rz3IxWn(h%J@g;s z6IPV0yrlCQ&xIJ5?3`Nhw!z7CP3_)G3Azlyb!<?V4<lVyYI^#>4=4z$xCnfr3pTNh z;E6sChkAsfU?lPU6Mp0gLVi5?qmONwGpmRYt5esb-oalIaJ6EpM@Ylf62V}vW2+KN zTTP0cu(V|l6KnP0<=SGgLB1`B4HHrodrU}?^N7?B_K@U&shmKxNDgO2havrXq4TT% zTlpa$lykc_T{!0C@VzwtFi_Or$i(iOCT5OlWb3E`Vd>a-B6CE&^?{!5YeIz{>Olt3 z)9HDvo|m+IrmAd0>X?1w6l#y}Rl!F33ca^W;6MmXkE>00jGc67s$&o2j*hXDSsM?X z)3HYqAK>&cW9!Jf2e{fXwjNhOF1qO$I~KTqrV?NIv5j-6T_Oj-oPw=jD(cx(^YkJ9 zH|QS6T7;)rkzgIxxzck<UnpL)QY<ss8$>IoK%!#rYx(6;A}(%3DxT4Z7T3LGsuH%* z#OAVY$t%jZ(CuagR=G2&!sBP2zZ&LnR>|Lm!>Rtt<U!|E1qAvWjKnbKlL{n(bn6Xm z>DD_7_NBIT+pRjh9Z-Z{lj-=a5rl<MoL;|K2$kfvLG}{8fA4Z29qYXW*_VUIWBL>2 zOWGRd>u4_rT3TwW+rZwMj@D!f^Va+bE_kPbFPxvB0X>h2r!E1`7jS;|e9q76ocDbE zsTcV3v$_p&{u|&!%kpZgP@5^M6Ugy~4SFza(1W1@=K=78RaWA&wA6CKwO=oW2#u9G z5@JXGCgIR%Cuw!~cyi|`<+Y4>Cb!huu|GSe2BV^4%WNnA8ufXT5~rkxavfxK0fJm2 zUS+63R}5xoeH`ZtJ*5Olguop2SYjJ^vjr&kHc-AMP%Z+L%2uO)>a>>CcN`jlvQfME z|6g#l+UQGMeKDY!>yoBf4{<#J#db(czWVZ{(OG1M9K`qLNxV$u==Nj_Qu@8lJ;;Q> zPHj9uLXv~h2>v`kZp}~-Ct!57M!I=QTjs%9871{`TKxXSN4&X6|0Ob$Yj04*lD%Me zI=BU6*uWYv>-_97@FU}s>0?H3NMsJLN?kXsnlxtRn9=X{teA7%Fd0rdzsc$E(RB2> zVU7{#W!Z$(bqAM;o$<0<FH)zi+{#1eTz9aU^V7|n65VgHdN)sr&Wq%xawy&o!E=TW z?TKUYd`30ZB&I5AUA9kbzu76AIOpPZcqlp=&&G57i1h6T*U-|0RFC}{-5t!J%`ay| zQ*3@~B|AT{UTsiAR+#wAS87}>^4UOpRUz95%Qj@I*{ZW|z(LsW$lpM#_-j|bi~N+# z?6+9csHJLG$%@drC_I_|er0x&DG1;X>TM<HT$LIw(G|j5%IFT?<cFyc-5ToVhcr|s zU!F>n3d7V2NkoKpqL9XkND7X~yQ=Cy^Z}5=>L!AKsO)=S$>Ebb>uga~RUk$aZ^9DA zUFJbGj8)$DIZdDr{Zi^QdPB3Uf%MFsaS$EZ+PzqV#}D8+eiz2S7Ww8A4o)<)dQGg# z{(-T}QaRpKg5mLbdHfr-Shw<mb#G|4dS4dwQ2i@?^b;Lq;tUy||HY}VS&7WJE7>d? z>iQ8M5q(HIos(caZJE;-!)0IV7?tJ{TRZx8A*=Gnrc?zEv%08Nx>}CSe%_`S8%dhc zgR|oVg~zqty@mZfo|yy$xzkjK(Oz&blH|$fq%!<Sb<|@P@(oUKFwBKh-9&&+VkeGL zGvNxF2lxCZx@U0~Jcx?9^(9krCDPa8GL*`y>^<O(4Gt6X*UQ4#+K{uakaATZ%5YLL z@$g08*;D^vhP-2Sb~xC`D&^IZeXxkjYpt1Z79C@_O^>rbRqg?tZM0NMje0Bh1rG{V zxpHy~Cx6Cw!0h$zarD)#<sZwITcuTQY>=9|RJ||&^-4%EMHM4WO;tJ--bp?x>bx&^ ztJ^_k9*DY{&`qyn)K%t8dTy`8<6x*xif|(N)t`@#F3^}}YIC?FXjf<nPMp56wjaPG z4!W^+8NUz65scFViPXQ}iQmS>25`&C@-Qbius}1{!_wwTvO#4!Dw-G5;(Ouc&r-P* zHgB1{{59BwQY??X2|~kuAjjrv*4HGI0Wwdn1+f(MX=TS@NeqJuPEjO}<?nwE@kB0R zeVqZiV5zf!A{L)wVRhRmoaqbkDUg9gj7z-%hhHyhg*X*Unj6)TxH9=Qp*gIpBuv6E zBMR1<&^%d70&5nzjnM0PFhYm)n~l&L=irA-mMJ7a<CA4xTQW6~y4xTvjN0CF!Pxv} z<CS(}x>!S%$M9{Q{e++iSkHTWiA-m8s{ID!Kj74Ub2Mep$gS=myde<aSjrF%^L#pe zDeU{`)wGY0AeuSmn~Df9CDlx5nby-ajCaj6rOx+LUVUH2ZzI3U$r7K_yb_9=6wjQ5 z8A>($4>j0nZ+kl(-{nN=#@dyd=<Y?+%o8IL6N_|Y?uU3kyBUm(<fBr1$4@B^KM(ef zjjjzrFp>6f%EH@e5ku8h;%7WbmC?8A?0nu5tiAWEH=ImfVwx&&&t7BsYyk?<CI0lZ zsB4uQBAL@puj@nS+T0r)sR6zV-AYE9d&&L!CF~!0`7`ME)7hDs)IE0BSnm;tn(=&S z=*oO(=tpHLWg@uAfQu2x@?((|(G;w64@5jUidmXko*cD0$eZ&i7wh>z1m<H_jOmZa z5s%VD>NO}bkfW}_wfGDBiGY^2{ugpwx3rZGSgt^iUi{5RVJN1@q#B2f%08zk4B#a6 z$T|wM#YbzY=y8FGyAeGir{(WI-!^IY(3i@)@rLIm@Ag+GM{!m4dda(+s#SlW$JV;g zyFiaV4#SexMs=i!9$Sm)u{BSRtp$2)jp(s8qQ}-ikKnbZN3@&}4n!P0WsyM=5>VW~ z@JvG9fsnfU>5v8ANb6Gf*F|$tsm#n<-LiWm*s#JYA`iY3A#M=J1kn+iBh?y+ZWSzA zQaLHeMeq;Vgj?VB(QO0*xUWgT#Nyxqj?%i^^3~62h5DK&rKeUa0QVJ|Js;R1nfYy( z-ZJs!`H1S%gaQgb%=KGGFD)OY?+78u)Txz}Qufr@v_{D1Oj9LzrxZniCRj?tvzJxo zc9cDV=Qm<KZK^7S8GbXqw5f)yBw&^fLD<ucNcunSS1LS_x749GK>yQA=-=Gd0)CXz z`!}e+IEKYZcr<0NGSh?4pG^N<l|S5$*OeR3R~BQ~zd}l38u`n5t?f2xOo#|7(SW^p zeaG(k^+7bu)Vl4zA-Q3l<c7Z+<r&-h^OG#8qt+%e*Q<eK>MpCJdo7yz=tBr(CQ=Pp zk)4GYHP^lPbD>4|N`25B9=n@>Nha<ODf*=Oke(nz@g?va+X9pvlhy_43iSIe{%@+Y z;6d?>?^5bt*s|PCZ<BpGFnFMU4o1>zpll!O=7v)-l1`+@?u#p7i(ZUg=o-K(HQ)44 zFD9h;h%zC0W21ZQ39?^InK+E>N#qXY+>xAt|Gu;EO#S6;n1kOjrabjVN6nZ=LjKr& z<Bo`zKgrrErzt$OJJ-eT>tFcJ!nr{|kK*sx=3^t=BbnYi4lAx_rb|u_>eMTz2hVw2 zZ1?Loeq5*BsVWjpL8worzcQCJU3ILYb7!6-pAFtBm4!cYf8KJZAurOaL%N=8ik|C= zp6jD$Hp%MIF)Qi|YT?kC&izGe0g8_$*Wcfz<0QWQ)p}NFhZk9jeHJMVnfs-2xr?H5 z^W@f!D}rUM7ueAznJD8w?2P<`4#bB}cSJ=xl#1T(sconHu#Rc-BxdzpbsDztn`d*b z<L(s#%f9v!Pao&pZ%IJ-*4-ZIM#qvrYy%}s0_&wxJBQ!%9F?JiHsjtb<M&NA-%H(| zbWe(aES=H1OQ%4<SKNsph<aE<mqrqEOo~fQJadVQ&mO4JZMnTqP<`?=rwY$~%x4C6 z?8hz<PNl89KqlzSREt`)&Y~$Y`4g#6!Ab70wmD0E--wBc@<)U~xQ7XW-fWHC=jQ27 zoxbDm&X4~ok@{O67(X@PVo4Z#Tl)5GG<H)oXVW=<M_JEKv;enk^`qbDe*GMML2Mo+ zQ1-s)opSv7kSn73()4dR&m=Z3pA{zjPpZanA~Suu8>h+u*K{)@*b$tpFhWQeuv|N^ zgOMv>k+9hPlcB}AYgz=rk+dD`NSY#u_bPZPTA!#UFFHl@1=&u)+aDRnj%+~2oCnTw zAe|(GzK{&eN?%;l{X~U(jece?<!dOf*{h+v6mYA61XZxyvNRe}hN6E|(eJ>2gfge| z-R-Czqm)DgEFR5g>>KC5m?L+@BkJL?EPH@}5|G#q1rp2kStTXFyPabHFTlGIM^~}1 zV^ofLXcP_#zqR|+qaNNWAd>haa^|iLE!Mkc;VA`oreGggpk{7Tf=wRY{m8(E*!=BM zk7C@rW_!t)D6=DFvZ-`4h48?)GW(&FXkcIqv}MqV#S8<^{mLD;4Eg+9n=%&+q|V=z zyKioRpUOXDWAM*tOD(qRgq}SbtL3eTi^=qt)#JHv_!8E51K(hc?bI4i?>c*<vBqg6 z(rL1T9`W>NFCbamNu>+iajJ6h2X{Q*3dnFnuIV9N&s{~&bBdnlM$gFc)=28A3j3wZ z4K%91IF1MIN~3w2R!`Igej{e7?&O)}Uo=~pkg<qg9#&LAV3|6QU*$d#0*Pft!}MkG z78<U$jd5;Er7+GrX=qriXJ4p(F!Q|F)|5`qN{xG-L5j9vBJO#6h3B5@Vm&$`Wl>jp zrf(ze8TiLqcdAGo{-HxKkV1YOpEh99Zw3%~#&N!}ifHigjxrndgS9II*p%Bi$RCU& zFi{cU15z;gSG~t9r*7PG9@L94^X^I;?~S#>oBSbH<0wxGY(z5RL&Q-`7z2^u7h@io zcRn1q@4NhCoX}=CGL*WS+lH3eK|T(rTf88+xv{+{TReJbj~*u31Do1IFLnuHS5eoL z=-X61psq}_wx;`Juu%{EF`zmANyvK@kLB)jmw88l>*>Fl4!ftjk+Cb*@^Rk&{L@!M z&;1(FZOpBB&d*oM*5~}+`8mIZnv3TA`^H|Dy7wrnIZxkS+eJHQRs|K^n=^afpkzEP z4rG$#X^Tay-;?|gQnB&}`)A(#`Jgz9%%4S8Pd<91=S{^QtFv=?_3~8Lg9Zv(lC6TZ zxltRnc%02btj8Ux=|MaHEr+D#-T|j6uG`h8bbnaEjZ5>prgMpN?-lfw8@f|#?T~}J z5-OAU2*SbI@(caYN?20nbjbyF!mM%0Cj(Z>ZG$riB6nbZ(+je}sQ|Jyb0&cRUfbL{ z>fPo{%YKcV^-&lk%&FrS2_`$#%Gs8b#cuNgtw5bRUtft9+C1^-wxz8VI}NY+V$fKZ zwpKL?-rbkEvX)fm4lSuOs#C4IaLXFF?qdOY&X73mIafvh@>D7AF(3ky^l^yI&3?7` zW+K17)$!%L{VR4~k|`*kZ(GUbkLrrMH#fczyKjY9&K!72>evx&>3!TY^b`?v@mt1w zr$VWo_v$x2>|T<^_*9_4d#5NDf1vN#dQ1!zh{-lBe9-gsqUWxn=Q-gynYzV??n(`J zBgGBHKB>(3EWgu{$)cuj)^lchr8^9C&1cL^!+3xHCi1#hw1R{R?A(eMO)K3`G&6zE zs&WiVY9!XPfo=po`|C%I&)&)y;j?#%&&q(&_rpBR#i%}!KA<3^ZeA*q+p3^8fe8$P zn!r&ksBO|B3#08)Z&T}`JNE^^A9egwM-DV^phJP-R=P5=!3bQL>C@abHv9)`murY2 zw=vxPX;B)s;|lvX-mF7Xjeve#g#kONg+kFBM=<>om1fuAF=u`T^L7+SF35xAV{kH& z-oF5noD#Omg?eXDiQBnfx|q0v>zYshBl*nOM16MJ2WqI%zE9c8_ZI62-wUE&RvmnC zQz)mSSXxd50+h?-!V(x&x_=0DL^EAXFpYXK*<DAsvNH<u<EL`24?ZknYwXhSYW>a3 zteICsqweSGPLpZLEfRTZlIdwgk9)VH5%+E_D<j2YHo6}%I!;-!H#I+*X~Y@qDN2JT z6}5Aks^hai@XCk+54CZSbZ^Gpbia6CZi9Qik1=@pRHBGGUf7MSw+|RxEdMg5!Se4V zV!Q>|{TT$#4mV~DMTiyzyFe2`K29mmuQYde?BiuZ$)WCVy9*EmD`Gw1YzM}8w|*p= zJO|i{{FjrdrQU}<p5nm#ZgfyLwkA^j*`3H2(P4hZ3O(City%=n6f2E;?IB9$=XIfb zhIzI4`10!|eG3_*S-iw{@op>(OiVSsYu&p4g^aO>);Ey!MbT7%wTeR_c{yYt!2Le* zEN!Y{{-CTehc0OuQ(cxl3}jNzB=u-5xPSrS*MNzwAorwqy%B0e-r2!mE|Mj;{%A6n z&KZ}kRI^m@S6a(f8PvQUV1Spg#XSdfvgh%HzZ&aq=<gP6U?2J!v4J&?hUuQjeG7I_ z#0K1#)GTonY%tRPsoi~r#N01bUK~j&Ki1-;*dx29s9BalH0X%SFg~9xYBA#IrXb$0 zx%>l2m}5tLVeZ8T3;?FCJkrt7y-e!L5J>i#%OP@8R@}1>Q{+OuriFpbkB~42)w%EP z3KG7`Q@VXqX2L)!zA3fbDvrYdYrL)_Rb~Nz%8sGcdA_;B(T-Mh?9u(GnyX4Jmt!-s zLF}4Wv_nV4#Z%ShQ@qHexhd0*hte^%n{v+=lpom<536iAyfSuEe>f*R`2E;?jF3v# zrKvLeext$|q#Nt8BywtDV0EENT~PHv&8yhO?f^5q^Wa9=#rCBz?KPzyNxf|z*SQ^x z4{cl?-+g%Z2jeqM<sG}GINkSQ$6oQ&hWOK~Te;6{b$r|Kv2zW3Zk2@3YWT2oRiQl& zlyxr0x|O#l{`Wv8L>;Ly@GbR`OcrXt02jUxl)C%Pv3RP$0ne&7PcL2hA!h&#N#Cp8 zhe(mcL;av_)T@bfawm3sDt0nw>vyR!-+r3BGYSIOTYN*7sUl<N8X}_Z<fYMP=Lxfi z!|{pISBH$?+`mX-+q3hRiS%XFKGz*e;&Oww^jEDrzffiBiS>!@C_d}p{&bvXa2?c- zd$!(>wk`Yd?a+_kNwqN1xsDWOdTfz~!V%5fL;REdI`oaHB0JIl&doj6bU#he&5Ntr zv}|3^%RD{`OTQ=${w<NF1lS~7k^IBf1=6Ow3;akTKVyAW8Yo+tT}alZzZa@|v143G zReMn_RjC%LvP};;%}q5twW^dxeU;fVvZgQC)RH-lyMK<_l=@GuujJLdSLf=yVEq2a zAM=0tSmoVsPEDrItn|H2f6n~n<Eb5LTWE7cV$@?{H-0sn?XjK%#d6YL;=~7n68G0Q zA-dwH5(;ohoz3HpLaX#4$<%wvhFPw2jRl8z#of&M$Fcoqxao{u&#VRpBg*lc8?}mP zq!nx%cbqD?uw(n06y;P!Z8AO8<vy?Z=7c!+hAhM-?&FSwa6L_=UP(5b=X8!?KO8yU zaLvB*=T&J_`C%OWSu{18P}>ZM^v=mBlehs?NjI$b!K+re#qbh#{i~A)olz6%pRt}N zm>L_ij-Fzyl)Kn%oYkfc=%@`BS7wo$2da{(Hs;mLU>(p==KKwY^6T$|Ln)wZfu0qg zkoNbhEi_MijfMj}c#W3RK0LQ8(d}hDW7jL{R)VvTiGyZUb#S}e0MXvCp*}xO@IH^- z74s}vT*r|WW^)z6SnJ%k55fyQ1*VNzmwQDH19&-zeSYI;NkeVb*=9PJgl&UjID_+T zz%8LesxUXNb<88#FBuw|=?OiY0ovgHhrvn6nINf9N9b0$^&HUB8hrpskv%@TZz-O7 zTxO?Asf{dC%WdJ}T!zjDRhC$vHc46R7X%tLJ?@cv#Flsc@HJC~?$m;8HSmjulp|TI zmntl%Lbrxx8&ycxZh)}f40V4<SBd_j=Ve9D%cEzkAzHFoHY=i~dnNDsGc#0~=rBXm zN>CU0jm%K$PTmZ)r{u#ZW04u^VIm|(=@zCz#4bhhBEi<HM^-uNk$$<01ARBBN0%dG zV20X2L&G|z<Hg_ikEbw3@G9tKZmjL%$vr6Gg%{D4K(F+>L1UpyBlu&}*=$h0u~yK} z+i-OBp*Nv6XD`ysMFdrd10j<`H7j;M_WP(Ep}=)_sa+2Ej9Jn5D*bZZ)e;V%mnfHd zb9Vm-fGyTm7ulJ^P_@aBOy6G7&v?wxeiz2EpucHyO@9+IHbz5=^(}W#{7s{RyB_7< zZ>g#o#`RRfH;|ib$=Yc$Af*VM*<-)~4mNL**+=PfmB^o-B}(Z}bP?H;u(4U1&v9#b z2F>o&qe|KG5T5&$$REke{F9XP$9ODve}ge_dp6v5m3#jS$Vlao+1%K@ciZ=P`YIow z4|sHuA4i$sA^#{7B+qP)kVi+KJ`6{nxW~RiN1x=`9_t+=(29?UiVEc~FO+Y3$oStV ze}F2gWlHzJutF`TQA;R{)#qRpCJKC}eR^CS;BZb;pDKxt=xl@0C$#^0lkRmStb3NL zj9qyxHH~@STY%00dGT`9EJDo3vQLkR=J`3TmF^=D(_FfVWN;dj&jG4*@4JYF9Q(Rl z40+W2REFp<0}l^d5ifgy{s4{V-uZp3Cqa7;mn*Tdkhq@`E0hQ#L^($)aR96g$J(v< zb|l&=GkdX+GD)CEB6vK*V<N-FMWEUgw;T9{S4McNGHjE3jy@U{eezcjkO}?D4oql0 zz0|%(ok~S|b=dc4;+xhr!Scb{)wBZb`++^sL{E(&zZ3tRJeum#+l+ZXHC&AO;5)S~ zHPF<(wj!Rn+sfUq-gb<XSWykKSXG&e_<Tu4s{H;+KB}G6{Q23Tw^mSNM@4#@$O$pi zPSBIZP-6BkED*|<On)uO!8wbrE;?%?A{aXI!Cpr`S0h13#v9*s<epZtL@MQ5?n(F= zs$?SCx%&$s{WOHuanSaxVtJSyBbok25*OvR24a0?NNgLmQSBb0b_d-1fHl!Q;C1t< z9M%3em|=&mEnvK)EO(TcsmWH6uHO1zn$Ol*%OIZ)8^Wlj7}gLpmFMy942gtF?R#I$ z>#(~)S0ocLuql>9al<9mj$lGatU|8YNd?+rF%P`LX(Hq2>}j5Ohq}dwY#A-i<)jM+ z264O^JF%(5jL&OpXD?E$W{sE_Ti7e9)_qL<ifLWtVLpwqe;`B#E$9vY-ZEVrFDW+w zy(gvG)TO4ShgXpm!|8AwwTGhupUbDfXIoPL>f08w2<wF(^)>W0d@tbq*GMej{4O?} z5}e;wN#OjL&#PhWu1WX%5r!joZVWP*!&Bb==|0*`eJFG9gx{S1HBQhp=kV$*Yh{tV zMEW+^U$T1!{M5*56dzYvE8&=-zup#O7bF`#71>lyxECpGg>+M5fCb_`#2x(?%}W@_ z!8VtTN@5^WQR<_C;Ar+oE>sth+Pe9JK=X~!y7?I^wB9w}ufmISxF{~pJy00$-*5Nn zfARKoHxX2dY!0fC><Ab;*dxnCUcgX;Ah}kQNVJJoPPZd<WGxywZ9Qwlx(w}pv%Boi zd|;tfPqK0SQq5}Likl4_FnHu<^KnZ=Zl-ANz6fX9QU^3IX*mF#83)efZ7B`dQW{A7 zy>N^s{==-4`fuo9&3l9pNPWyDyZtrC9&OjTRJ*$YLo$^`QmA6cIM1x5yn97{aovQS z@41mq#;#t%zb$b5riOp|_zdw(M(l0O3dqXlwWZ-77k)mOx$X;E5)^i)S8=rP=HmX- z{*HrL7!w?S$fQ)NC7n_(q8(CS=i;W+%GUIRibQ6@wy78T$_m0#Yx#V4olVnv_a<_S zsSD^2Aufr<X+dyc4+f_LMT;Kc7LyI+8BvtW&o7N6Qg7t0CwJ!^R#EPr*7T5E@0RlL zdvf73C?OZ$k9boe1>Z_Su@rpaZJND20Kroeo7^vSS`85DjiXD)Q!IA%lbUiQGt&sT zmH@eig%UpBWQ$Au?3Znc%d}S{%b)iAmxEtd_Xw1kqdrciIEwLfQ}>#RxlQSBG}K>o zT0Aq2R7{7Du!1x_q|(w8pGzsK=*NxkFRh66zRe2TlFG8qG<E+wtTdlX#o81X^Z8_I zi7yuGeRb>k;=@#HykTW$TFY=^_5!`@wu9bN0w&8SH?N*f_U#Vqa*dKP;f<AyxLIYH zkvd5{Rb+v)Ph}D8F$Wjpx49blPMo;WRpoKN#;X89c}U^pJ{2I1RCKRiHSU<sl_H!C zYH2T8!s&FF`^_H#G^@q5=#vhyPg8T#SFb$O2(^m>RsTGc^`c#Q?+#XPSo!V#5n`55 zxgq4gnddU)|DxrWsFYgbE|DQOT9z8!*CbNVQC6wDjRzU8y6%sh*~i%c7J;buRdI^6 zJZfm6ofk!qbyJWk)mfPoqYt+IaGwB&tk9?r#kC$nt?~4OwUzo{wviE}Acxm(qMamP z1QR*0_dL!+B6H-}w#>zqZJD#sDp3TIsgF?lb*E11@nq^%*#%NBwT=4N$6x*;4#MzF z?9TgJ2S(I#&(3HR&598kQ+^-t1aOta(Its}Bw_&IqNP_jh$*c@9aVRHM^C#|T@U(z zS#RaFv`!3>AgnACLT(NB!P+|+ox2N0jx25f%=VK5!7O*T5XK5;*ww06FJ<F73qe8! zMMNI|{`55P?GJ0S@bBnP#lIST(R%;i@$Y|%@b6HMf6{#l`1fU<{bjQ545QFjZP?p8 z(=NRuLd1Ta4G|w|^M#hHkYtM6JqnRuD@}xmt9dp=%vgTp9wFj}-8>>rkzmv4ejQd! zUW*X%GZ>0NMB7%3^?qHQiV#sFH$;5?e>@^i5-4a|9}E%qHr(zpx4V*B@A<t)#FeVg z5V4z-Wcu#fWuyopO)=!st)6G-dRt~Dr!Lw+#xt<R<N_{!(w5@*vJkOgf7v=d{$4Yg z{xp2NiYB+f$G6q9E%4DM#rpg7?~3tJ$SZt22`-+M_EL<GU4X;wK^MSBgJV`9Vi4>C zKB}<r@n-c>_;?pX7UQcc^B0}exo?8!5r(?>pTdjkJ&2dT(^un;jU_;Cw=P~+tEDFI z2$otI>wQ#Xo4rVDQjx~5d95S<GQ+#eEn>aQ-G1iW^md>Xm%TRKQ<;i?oc-9g3tQ07 z)0JG2n#fG6(3kD9pJ89lc9(20o|KAYw0o#7YY{|YOP&C?*!Q|tc{-6i!Un;`+8~Ja zTuW!~XMvCbb{p+Vd<)>^$0=?z78KR&W)I*?Y2h;m7w%zSt)%crhKUsZE?-Iu>nf{~ zmfw`L5fO)4?u!bq;7f7gj^j!S?lHL4-l*WV`VzLgG@aiwHYd9cE5vwP3R1sic!;g@ z!GZKNOu&a>0&d*Ieb2XO`{pUPQe55FA^dcel5Yb$b30RE?q+@7VvVU+#pDx{bx%u_ z@6<v}oy48C{H3g*jQqKu>HDus`jI^oxR<6}yG6=_q?mnr-q&bOrfCGpz8a)7yE6w# zNq(tFN}F(TEs>NQ33#gwVIbZW$4OM8-_sZ@=BIrnD^zTwF<)nCVrLkcy`HAHUB_P_ z3d1HWZGE1tfye}!$*>kUSNj{ZAUsD@?`neKnR@45Aul$#GI}tq<H92M+16V^c6hGn z{tTfYE(UFM4H62KxV>$f;hyx=v$=5`Kh&<>jkOw9-Vn!us-2A{HTq(jq^2%E%w`R9 z*I^73k;HC>5v$bz^rz<=ik@#SdX}Ca<+-!y`Tp<>Tk6-N>R49veR+5$d1WE%OFWk6 zP6&FLe47N?nrO^2)9rZ^&?qv~b)FwjOL)m#WrNW?so!R;i%f6s@=0bdJ4{?eGaw5g z{!tanKf|+po_6_?cckk~%K&-T&1xe!o01@B(+ff0(62CSLpsjtI~Blr#JMJ#<S=V@ zh(R)IKV_Qztf^Zr&K!wa=<waOQ#5t51PrkTgR~_Ln5(@8-1pd+@s}?!Q*-@H&C*O= zI8+G9cC=4xmzm*|kR|~I#JxiKCWbUoE@{^*?SPQB+^2P^>>eR)wNLx2^2I{h2A}q% z(mqn>X}64#P~S^RTN~1<eA+yvJsr|&eA*hNJsi^NecBsJyDg+O`m~`EjD8x@+I^ZV zZLT|{P4Q`8P`>j*+BBcGyV6b!X<a_;0HqzSwA3!OW7c6mDa?K{jbWbIw=J5wYT1W% z+aca>$ZHr5T57jMz1wdrMZH+>K{SN2w!dK=fGUu^oYEh0GmbCglADeL<C*5_hxm>h zRZ*MmFjQ(J_jR=z=HOB-R*Ivosxd-t&Gpui`*+8BN5fskV1+4EX}id7qFEp0T%B6t zeua%#wbe&<)Psew^6s&{ry^|Z_@#n$uwBRHAB7sJmG~x~Rf@SREOE(DV`Eff?$@f( ztWTyrHkKgyu2wC`-BDaE;4X8&DX#WC&|V`ICKrRI5rB?5P5_Pdd=ovebgZXX6%Trv zVz_r$EzziuO5N9gg%p^%C1@@vOnns`S<vO5qW2cSK&RPUlLw;ghbUC5T;&=;4Gl^c zL$=eS$ar_8A%jeM!J2o7CG=PaqO`AtOr?O>fz<4Itm+XXiS=|+bKiHtSI<lirK`4L z1ZMIb04ruP0j2^oL3x=YyfI<%u#a_%hL@s!%6=hbYCg}GL&~IlN>xaS=TkO+<m(xm zPkA$>)a6rN2r1S1lw~2MGM{p9NZF+6vmV|OQd~aeM<JykqIZQ9iRix6xgq8Le9GjI zBE8G!nGjNL@F}sL>kt*)exzo9$W!3g+In66b3wGCHk=<=E0(^qEK$0LG=0##vY(+! zf7D9F=?iNJ6vMuhQnE^6=2tU3uf1I%rZOZ*H>;6Iee!im&OuR@8{yX{|5nM*M9J(e z_~gGT`5}_QfK5;Un@tt8pf@(mczd4#=?ygJO@Pzew)UoAySi~nK`Q1&`|*nI=L3B# zFfsppYUT7Y$Ef3}9csOOX+oxA%)Baw#XVAJ!0Z)%?I<Di1}@)<2FVrQE$JzM1i|A? zu+VM;>H7iP8vK*l?RgSgbdGSnd+DbhEAM6?MYTvuFRJDDTdU>TLM_*aTFw=e(w|W$ zIcSD~n(%?6mNTdd8_+D^gApp%QqafpzR&C3`6kCMbstbKmB<LRm5LG#i(=jTQxTC+ zZNPN3ub;Vy&;NHty!=_amZ62v3+`=rm2NzXav3~cB5@0NEG4l;eirN9W7muQ6^=RG zK1|ZD$rlIElD{5Rfsd5=$Q#r`sf>Y3-ay~u^v837ap0_|{uoiekPykm9Zw@c3Iv_p z4dO8R2Fkf~^g?Uyvgn2Jy7R?y7MZ4SovFWr8SC<P&sf{GV659<DHqG1rbXlgNGsxm z63wQ~JCW{cn`Pt&Vjp<Om+<^inq0bPYZ4tPbN3OIKq*s%#nd=lB%GIp$f-=13pixz z;zhRU3wSSL&{uhj7;A(wh)tjRvPikd-Xk8b)2<S(eh0)%eN<i&<iK!kNK-GOd^1Cu z=kmVn*`#F;G*;3GRudSad#U-V6zGjRl^d4EF2Bi`$wcUit<6s*OVMtDECYYqk}iLA zM4(IJ)`ZC|CaI%;u@yu-gv3CY&DSwv5NBs(Wh2Z`4G2?Q&4{g4vk{~V)qMP8U(GW{ zR1>)nY3ro<8h{mP9$F-~hf{q2l(bGyPNgZrHF9~vrxWHcsU{*!db)MOoFtlv2-C&` zqiQB`3&Pyn24aM{F9Z1$!qkfB36lVcMws^sc!LOYZ@v+~g{l42`Imjb=1Syt`Om0B z6DLCKj9x^dQ==CV?}@zhEzZ+>QV0mJPKTwK*(Li0kjmZjqfnWKi+ASl0&y70-w?g1 zrF8V7K3t}k5=mi~cLz%f+l7>Zq_F87pQj)xydF{tlEO0~r64IR2q^_g;m(j!kQ9Cu zQVNp7RUxGyDa;5d1xaCQNGV7P$Ay%Fq|g#l3X;M%LP|kWs0k@SQebQDb4p>3#G2e+ z4G^Z5$-PT#<6MDV@DrmlIp!s{tZY`rhwm_MQLKJHq|fl8PI#^Di@1;GYUZx<n{j!I z0Mav(>?sqC;r3o5;}&_OdktpF2ZcQ6ggny42Itw)=ds}Ys;7+M49@e;1f}_*vaP%y zDpABFVZjoQW^@0EN>>$?9`lI4+(%hS+%|2Y4zFFTllV`{&El(Y@`I_Pur}On>G|cM z%;4`mU<&LWFb}`hV|QVN_(`ZYS|R?exhYy9`f1Ni2}E%xFIpkmc`sQZluIL02F=R& z=jkmggcYE+dSEHf5lwZs=812<j8=&E-FYF+uMj@pi6PCe5I*hjkk%OH#(J$v_vS-( z;2l4^^+j;iVk!(cDd8cTQBQ!QYE_R_L*G$hS*;c~DgpaNrq~n~&?Sb)k)nfgPI1>1 zpt^z43p`_ZF9DBosWD{`cxs;W;IRThNs1Q6)35R1QJL(#O@2f*MI-W<l8O8A><phP z?ean{dCiYd2shxWim1<{)33;+Vj8~C=`EwS!njt`Q+KwYO{V2xTqp2eGA`xPxRgQT zia+beWd#OJ`&C!_aj8s}`@AB3LFF5Zh8IoP?T7mT%I_gRoM^&M4ik1(Kup7DGM2f; zgp4U3*cWVI>||)55niX3a`wpmP>^PLRce80o56e0@Ssoo@U}*F?lXR5mNaO_{+970 zQxn-r+}zFPx^?8gBINC-uMt695YjXkQQFBNO=udWO$cd?q~(Vq<R4=nf~mRQh-^2K zvgcsq4}IBMzdyXH(C-NQUJq%$FJ3HL5z>5Ld|DrAIm~wpBi5F?r}*W;;+KV*;%Qr% z;z!W;#O=Ok0}660&t+}^g*iXz9*2_~{KOVm*9+3Bi*WdB<cPWx!ADH>H^3s9$HvX_ z!?}i}{8Y2;WWixqxj8E|%U2n@if01Sa7v9J2kx=7hnAopW+eON_YA;M<=HPwED=mR z$IE_I?@@gz;E=CUh8xv-QAw@dQ|UV)&Ch{PJ0hg{Iq+!*l4g`dlTp>wo4aGs`(1<H z@6&vAZDl?hTKs&h<y$lc<yA-e&M=bO=-w3_1N8#Q9c5}tF!lHq?k0Teqp6VwFcNf$ z<`dwFCygK}KLs)<`{CkHwaS$}<>98$Mk9ku8N^zC=;xsrI`tu~(eg)J49eIse5fD% zVRH)DJ-N=NE4#nKITuY^x3mjj$|7|$*cjoG5!PZAyvS!TH?5FyYpncd<W(hQv>p*y zugd@2myeJ&_d@nzQnE`6?QV^OP6*YlrcV)1*k9E>?6;nxDWkfJv3J=nU0-uv;62e$ zNCy63=bE9JL<0T}Of>s@R+?yrY)D1Mwx{N73G#<X%i47S0-Rq@b1#IFTiEZeAvX?J zkb+HV0biNbh!oD*N-M{QG)*il+Ge0Rq-jp0w0%g++5y8t)&FZ!m@<eIWJ}(=$w;C1 z_8dln0t`Jq6~S<Sv0h-f8%ut67MX!S_A$vJ{658R_CFFQg-nCB^-Hg$NUQ&vUEzxe zTe>v8gO->h$*XU3ZR$M>K1k);efcOqQ{NeCJU4XWeg8W*`(j9#AAbK3ely|s!ti@S z`2CY#J+ep1Z;8?D6@EV-em91EFNfcS;rEZ>_nPoKEaV>-e)sgh0!Zo3-FL5GKwspm ztMBFD;y+*z?yEcnf34$eztM~};gD479ou$ftFazKUddKt9SLkT{uG?|=AD_g*khTF z_8D)?ibWkG>oXE!w8^ML8vi*~G%p7gSkbYXV7l5UE+DEj9DJB=5p+i^t_B;9-(#FX zRt$%YNM!i=4-Pdk!pN^EPR~c;O`y&i$k5xERFzv~RQ`k75IpbMf74CqMgwA#afHQy z(boT|Qc!0v(#WH2Mt@Hk!;vrlt?cF4z9N0rpY1F9M?<eWL)y(DP2ZKKzj&tL1|@G5 z{powZJ<-WioL_3Kl6+<+)ZEm`DM;y0rR2Y&KRvIuC;#k<o;MUdZwk-sW{PuKxk^2R z=c@2bb=BdKtO|C^)iR!b)Qw;t5!nc^ei!n_iYf`r3P(Af2OkXSREjDXlI<)<bE@sn zy2~}qSV!}x6pkZnJk73jJi{pkEsh%Lp#9H-v_;f$g=*5*K3XqxqfN2W=4on)o3+-j zkNS*`SQWn6*3oJDMicesfX~+<#_+<KrFO%=@!fPRs@^tr9ybv`>=o4%RWEm}GWVD8 znQfLOt~|8R9&IJvEcW7g6!mu~hzE=33yhwKlRFxL^f?w1w-yq`bEEeZ14EEFeV1-G zShZ-c)f}~{;AbRde_*11qv;3BEKf;XqB-^%!6Tl&+aHO=3NV*0o9*1af1v*&ER6Hz z&it2`^aT*q&=qgzH&?@FMO8`$Dn8jf!1_prHf2O1M1f9I7MXsVdNll{?gWvj%8Cvr zcjd{Fs@yLbdDNVntCzs43&Z`>Y@bDw>K<RCSu_?Gf#Zkzp8kQkU1JjY=v8P4@pNAy zBsS{3_|3k@QttVk>IIhGEbE>S4v10pUC!<R&SZ1c$Rya1rbDurJP`~^gk$aJBX{B| zRhYg)53sK;lEu@mWg6(cs!;r99<5+EheK2TIXjYR5xhViwnP;BDV}DpUlox32K^Ro z7cAqQGlscC@FUDe728PcF**%gpE7Wj7S}PvP(`9)ajd(SDu@>!fjB;YHG2dLh=<<7 zAqU$K_y>a>WOrQX?j^BBM^aX~zh5T1V-!*%k-l-84eF)<uo3_msrR02cE?rj5N3B! zge>h9$nTVK3d{0f`M;0z)WFHJwknhs|8L_2ueLJIHDKcw<9vd|FwUoEe(E@7|0^Bm zakD;koSC4E$YE{079BaP{YxX)7xhhFo{he|$(MO7Hf2RN)Uou+FR#0SpWcf4C_=2x zr+93gEzg6$f^Vw)1f)`-si6;OdNZ|kG&4imvoE0Mf9P{5dRl>io_fx9K_+ARvk593 z)1Q0I6dKay>JKHA<6n|JNkXv{9iJ{r%kD&atJ0}nd?Sx-h3E;-GKbj@4c{XucxF=M z1NT?uLD}T~m>&qkO;fOTpxH*_oxfs|RJ-wl`KyX}f&YG)z884G`j<T~*i)3s2uA9c z;>L;o7WhVx2o{o8_%8Voe04+B2j$h2VX=NEuptf5z0OPaBruzJl$VCS4i;wqLj}2C zQ8afI|74Fc5?Pq#N_y_&&_d%^209+C4E<^n=2oL5IhH&3XOglkW6GUdqk0mdo@xBj zPvS-9V@C=<2EV8G&;Ap1g8B6@V_Zw;?`?QT=lB(UZDbt1eYnuMdl5%wHPI)YM1ari zT@2Cac6gW~WjOJq?kCE#l~fqjXGa~l>#qAv)^pvoa|%b{U+$O?eUGQNFFG&Zd4SF^ zlc95Mf@#8mQIU*q1%%qy)`)`>bmuo|u1XTvLVA>YK17T=(jvw+&SUIycl><sidla# zV7X&pQ@P)iL~8hI<YGvyhFN#|Y+qNlThbFYWzHW+U9c(jXzsz{unf=5EgcUma-@dS zkcZ!(@qDFdJOmE6;rw%kL9@_%SJL~PihJMhyLCNyo4dQXTWf-x)pQ(NZSn>D1UJAj z>o_u@sjG6eAO>4`O?KxBTVs1Q=WkpYe4R$ve(s!{EXOsyvx@(@-h$}Cc4f{vIQ_k& zi#$1jDtQ66@p(IQPdruTg{ar5qd82zm?*9btH{^+a>8GWZsTh@sp(`dAKR#elU%rS z@eVp-qy1=zZac7r1td4yt(KgU`5vg9T9{Duc($Co*H^n`myizWm64N$&9b;=NCaQ^ zj%vHhkT42Ms*ECjLFQz`JDtw$E;vJ(mryO$88Y4KPUL&;*ZKL1;ze^H$FQ_6-oPPm zyXEE%$RSDeg?M_mB)1-?4+k=DakG7L)F$qPs1Vo^4H$agi(R?DxSH<OPH`rG)TZz$ zcI9PML8#Zu_T_%8AYbT|yzZ&5a_6%c+I<g;tC*%u97ZqiT&=B47GbWuNj8kD)dg3R zYezz77A)cwcINyj@0qSqj;n=E=D%LiHgvyQU2dX7{dJs4jx-aFA=^rq88I|WGH{Pw ztvhw{^r!wn-1O&FEdaWIVk!OM<^}7I!mkkNf*?g{!YF8Bn1E4FC(~!s*c!Ylb|Th( zGR1+1PZ%rvhnxZeKWss`8Bl|RLP1eAIFf*}Up5vMwGVV+J-1ObZqz6Q0jRMnR|)vs zI52;0g>$ePn)MCk@vzX&*sZtIrUO2@Ue;h30uR^b^^;axw}iN2q^D!MQTSo_PDH0; zlqBe;#?`i!Zx(>7vOj^>;&75ZkDl5&#D63ykljeK@+Qik%U)pYc&Ym}^P6Z`-_fkO zgJX}(&)&w1z`@tt2C-FnhkxWcB^YsO!7hrgqPzw%b?hHL?=f^n{M$|BL0J7;E4<3( zRFd}}hxfgBSEvZw%Q;_2VYgE#aem1006DgT|IZY${z<w}I)2bh&i&lSMCfqWK*wi^ z>9NwKZ6Vi`_SZ?+sF8_{DRvjw2X2|k$Ik$R+7n#kGwP+H02!CD9Epz*dVydIb<nt* z3U}jvD8k1v7c<AETI<~zh%<@qH_JPp7c^=_{f8=-4lt2W&q<joglKoLY<KE~`?2gM z-HRp_<32mw#cm2jGanclkKOShqlxtnFfd%GAAlIj5`_yl;+b(N1^TG8D>c3k%s{<~ znU+6unx|qZ(wfeyQ~?aFPcpL3!1BXYCPcmZSl3SM;prTo%Z|_BJ1qfd5;+h^>u?OH zBMb39xK1OHVJr!*Y@s^X?IL&<Wx3z4P_Cw^9JenK0VjP@rJ4d9P*O)Vd;w;ns@-)M z5=C8HI~QHMaefDwA@WV8bfL!?0Jx&d2BB*=Ou5L67!L@-=;K^camAHDqi6<~F5MtR zkKN(o_uE0nGtb;cJ+926MhSV{-%X@q49SMo;Gu|r706rXhRC$pu%>gpyFncx>s+$x z@{68+8WDOvc_HXILtiz8!s5qmA7_>O0_$+RFW+Lr+p#MZr;CofVIjMZQ|tI~S5gx? z&_MRvzB{6&QEG-TDEXdDr&3)>vfh2pda}@+DM<>P+N@s=id2_%?2~NZm+~F^L?dWa zXBsBgR(Gz;eM!CBClp(%U(LVUl`M9j$Jgmyww`~KZ+OUeBt0n>zrcGRZ-^CJg2ZEx z+_QF3LAVDPoWKQ%Vdd#lkeOoZ?Jl)021u2F!QvHzuV`V4r8EsZ(<Ha7q@qwt)YQT0 zXTWWpT;8Y93E5SO;}dCLG9RBvV`}t5%6=DUh*&=&TW_-^BvGSD<z`c=KU-x7)%W4x z`lk8%UOV5{M{h;GAc(QubtH4weXMr}K$pmz%(+4v?<>TwaW#U!AMRUjdwVGwt{*nu zdOy>45Cbpj*;23~tha;uxBaK|uVqmGa=w3UQU6XC_QC1f8aBqdC#e#3)b=mg#t54$ zH?b-=5kZTAR3$RA(Cc4eCFMTUsPEbYn?WW(I5nQuf}L8`lsc@^b%vo*<3~n4i!jJ$ z2c)?XWa$LMt0%?(vwt>3f6}Hk+s;eVJkfxUx5RNDMcFo4D~h+Y8+kN|;xiV($i*Q$ z%_7n`fdR6g&`MK~j1{zryImJhV@V~Cs8yReSR>WI0$sUPqgU#x%Klz`DGAmzp`?n} zH5gw-z9)SF%R)~UDoYwcf6MEk6}n01b`DkOraK`rgTMQwS-V%ce<K0}R9WcekeFMQ zd%*%cMTP7lMoT$@Y9>%kR=0}h9?AW!Kpl$zRJegBfh@XGL3w0oF`-bAPK1!Im+A5A zSjOAUAkhR%+4o8JgA{tWlkJsbGB!iPY(P~xusohVM(E1<SP^Z*3&iy#hs~)EpH-lL z$pd+{C)WEV!(Zu0FK9iG%c3b2J?94cis<#nmcZdPHJ$cazqK@*1e<N&|3US?r|go} zeEq@m#hTdNYV^Ay8Y85Pe6km*P;ke1AfUzW7oGXVJOK<4B^j~%i2%Wp-<EneYq*qp zKKDl*dnU_1*#_aaP(u}bTNMyMs!%!(TV%zbR^^T`cxnP};SvVWL^D&g;uCR9gwS!B z36s%*x5qpMD58diQ>t=@O+$S46mSfvdz-ME3prGDzmlSF>x+%m<2||EwiFiSfV3+7 z1X)TBZ{?QQtI&*CejBov81;g%9#dSFCDmimDm}3b?I{UO2&2X0Q4$HHh(7-U>wCCA zK5V@ZmR$3r%Q!=5C?qsFi6t}V)g>C<i}lDF6wmb3c9Accxwu`VS`+7<Iz7}OpVQ1V zv8{yyATNzN;B~LP*x7BZ06?Z{V0kiqx^CS2UTr&4KgY~_erR<cQ#;=D{#M#4Ld?tc z(M0?=JO3rbY!_mp$`QWGy?%~B#*?aU<XpU=&IVFBqY~oy_(;yy(B9NlET<Q@qYL<o z+Ii4M>S>_MTG8snj5S&l8IpQ1MLq;LZ0KAo$$;BNeVoXgyVCUmYssbsiAR@;A%k7^ zji~)p&O}vtKd*A)SLx=}+{Wi33H0xP&Lq`m)heJJa5pFy$KJ)^YXpiqTLrES5TEAO zz9p8t!OMh8P&q+Nww8oz!~&<QMJOHhgSx78{O&}=Y|7>qKr7lv8=t+7a=e%hQfx_x z^`xjOLg#W!f!Ca<CV;+8O4Iklq-0x2E-{VNM5Qc@Wk#h0QujHEWG~~j*eLQ+;KtKj zjByD}#|M#)nO^8VWV_$EaU2%j1W|DGa#{9Vh(ha`=eHpyMnN7T5Mx-sLD3pxuCKUu zCe!o;S%y-t2%+6LrD08{do`NiDiOH}LmVswjrAdB3{A}Hva>bhU_s*>N#~H%+B493 zeIj$x22UTfhy3xfTm9Wox3%|{wfC6Pq^tb*_Hw@R&u!V>M^i(4gb=#u1a-Lv>A`hS zuS5q^88%u|--6F@H>z)osW(Ak9El8|P8~qTI2ry*4nHJD^Gj;aF4KH<FB%J)6d{sk zDH^&r9!?{(rt4O%!v1T3mjH7VUvrP=mSN{DD(T0ye<*n_B@3&k&F67VhJ$uImF3bd zRNxL_fQwzK-Nx&#1S||pqs;9V=GmJJPCCznygOILxXe>p3`z6xl51D7qPec8g19?S zsR1GoJ&Oa$W19w^6~n175_UT$D1|Kf@SL4z5@4*?&n2X_nx!mXQwdlPI|~SPFKUm# zxe&8OJaZ(>_a;az5_4p3yiv7{qz5D1tG;6+a&z*z(}Qw%DYyDN!rc{eXV13f0#V); zJ*+>B-Y|9knI3rs4okQ*BnV$E;U*<8kmt2RAy{N6oqM^+Y?%FasNBB%t@w*4$e^DT z;-SXFVuPf*L#@Ayo3#c*4r|TFj3$|xMc9zWG6TF2`8Gf$L=KoOsu}C9w?vQ1ObIwo za$P)KQ9H1_2)RbuDE@hdA14`&$iT%VB#DjxiWWml2pj8?quvwMx&xx>=YLWGp<shj ztFyMtjhq_?lf)@K25tUcK(BS>++WB#CGblq|F=F+#+nqN1@P1M1lmrfFpFWn!Zapk zT^Z{gAwYI7iboh>5&vY@NGsgtdiO4d2}<Rb1>&*6`0;&kx@L!XP~dv;*BTrBi{b0` zg|B>&MMy;X5MOh56i9Ba=<HePlJ5rd&C`&XuItX*$qM$`D$qk@2MIA4F-5c2G7Q9` zm3}0c)4Bf{HZKFi&UU8*jmI>4>%cfVAUngq-2&_ALiZ&tBMj#|P){U3Tc7CAd#2o4 zRNb?<|M@HkMz+2&{W5dxoS^0n68SC$#1^F3ghd@eu~5d+OW}ucI;>pZGQ2pEdy_$= z?wp|zY&tP&9hapN9(CPiyTQMiZ!OJCxU2GOLjpslX8Sd>RIPU(h=m7+F|vfrPdSaD zbe9IYO%L~1lG4Cyv0m{uU|oC<D;UR2>y}vAD#r<QsU?Z|uT`{_zuU2c@$<FrCjd+R z4g);MJRje3hrp?mnW=1za6&J&UU6FY67x=<gPn&Mu8R#0$%aolW&}9^TOz~ATN3~L z9od0D>2#d$^Fq+2N<roTWcwyl=Wu=TT6%)}<%Lz*8j$wLjFi}qV^>IY#yS^Wt2$~? zkp*`C$C&29^XzEj7wdDsEnWjWDt?28H1FSqbc8g21KMUhWmap<ZeK+XSf9V>Y|W|I zdakxIOWhUZ<xA)5#0#co_Z(BAx^@e7ooV0Kb=<)s$@YUmq2q3Bqnbi#C!&SFQln7O z<$fMF7EE6;9zP$u@+&+sOZkbz+IPIbS}+*BZw4ciujA;IiPZBU3^egjY{_DKV%_+o z<J_pohRRc)pag0MR4PQJ=}n1-RX=FPp!N$UIFZ?9iF$uCtD+`3VTMd^puBM{?QWsY z76@3}45j}qx9{s@l$p`^TU(}<orTxku9g~EJ;apI9=XAK_#jKq+jK7Ia{wp5z{Pr3 z^I>cDonxi|algbw0c%gSq!K&IPbj^0JBmfn(%!J*S{Lb|AD`muonoxj=4o5%<>2{n zd?Wl}YXR-`2x#XR?`B-0T5$x~b>pd=`;HC06}%w)<{RVV<;&wwZDLi+&el{CfBI^f zM)qc^2N^G}pwrQkY!Rn%SO&BjCesJ2Q#8aDVIt#4iIWZFpJXX9q;%|8QpM**2UJmC zR7H7d6^d(JVsStZEVf!?&$l|vdbiNM_AgZ^8^H^D0(-uU001pm?2z1B(f$bWs8h?i z$gtc;{Ln6+vDL^ZArS`vp$^s=lo%XxpCnx1Wy5_+k&A7l?5kv^n+_M0_!PTUna*<E zX?$d+cK-xY0iCM&MO)?vi^28H?pK@)pO~q5*LsS@dT|+!OvV{pw;dYSQSxBcs2Nz^ z#K%%YoEH&VYEOyAGuU4EM^onp<55gQsB(9lBwi*do`0YcT#=#s2S}A~o~gpP6x=Kn zmp$@_dKhHy8&X<-u|4BkR?lF2#)+i1_8{Fsipf|Dj5HBzc?naHK}6Ek1IEh_hs=qv zL%e8~5O<HDaS*2BnR{^!yV=5oqSy0J66?h&*{|B<hsH4c)Wre*`-phuy4IIp=9tKr z#i-t}GS>4fLrNl2NR?z>H@XpEi$H>2N#N6D>TMP}$s7BbTDZ|&wVIA>VHYVuZEtKU zLGKp=g-p@hB43I^z8omI(NoBMWHHG;iQFsCfEm69?vF?Aja{R&ftn#Ih^vA|KZP%y z?CC77S{iLKL%5I0JC|!iBA(gd7Y1FfD}NUBViA1Z9mhf}fdCl85F#MAGxltr%px-$ z@fr;UQw!ZSs~9}U?5@xQH1&i;259Py+y|w!$N^n%zca&1JcWh=pU1k_{bpR%Rk_~^ zkX|WS2BDiwa+-C84r<C5yh;Y^9u56YS>PtfDPmttIax7S{Zg4Qp&;u{X3mhQj?!Wl zYmz|%jt#yR+xI#T@wPYoAH-8@{E~j_w>=CIhP)5*eM-m+pYnjPN^{E*f^=<O$LJ#c zeb()Q=rN#m?l(3xEx2dA;sNw$aJg8QU!J!&*+R%7in+jcDU!(P(JqD9R<}S5q!6E9 zcNf`9v`h^=9T)+V9&JVFDo|0vKAu?@**5`H(RwwWd|R$ppG~H?uIlC!#11MT2IwW? z2Dgzoi0S+inh$2wxr6z^^`-nEZ$E9ZYTz=3b?aLs!3iXR3c+GMk^o#<kkhy^O1R7H zr7&*$z~J4mmwm1&?xUC3Fz$Ij*1M9@R*_cw)~FUiZ|v4;VUqeOY9-vgJW2n#mpUje zBU3ZB^6WLd`}Ntq6I!(Sc->yM(y#C5t31v3tMkl!pZ*%vppo6OwHoNt=zIlV_I>J= z!;;y4xo_uV9=8y7OfF%Z>UD-3ISfWmW_vfQm~qE_vemo<+by@EFsKsllvGwNzQ$5) z`H8299@YgJ<d=uac$y$&yIV!xl6yi)C4czD_*1xcLi7ofLP!R$##%kmMuw0H>02>u zC<3wgDcJW#z2N_a)M>mVf04wml>u~E=wjr_EzkX<=)T_Ezj6=e<`v|<+=|@oxhIO= z7g%KxGs{Y^EPO4}r{byq#7BMTHNBu!O^wg~@DI>S>}u)7qW#q4T%CeSUe~#O_GiKk z_LGVH^iv)c1!vUC_ybWejRanw1k<pcp;c^(&rjf5&9&d_2qIm)3V9a2(CJ1k;;Z`0 z5j2(GV97&ak?$uiA*rk|`3QP%*C%a=k9r~M-8IvNAw}0sperX*?+3Y3mzn2129U!s zz-}U5=H|pxA0v6(!sXKob6+e#B%WF;Ypc8EpK1x+aIO2`1*-Q`@Va}`UbqmE@mT=u z*EMPP>Zp;jFupoBm9l7aop(_>nK`E_@o)qb*JjmXnSHBH(CXfFWbEoDO-Urb=mZdL z_Np1Jyc^x0Cfn*jK<FwuWJbC_2v?#WeVeRod&qNLox&SJ*X^w$CQqEPCt`Oz?{+M7 z@2xub$V%0{*3IWP(f#p}v(kfrm&do8Le8Js?<%*7#Wwe<7QAfK-`v{;*qMDUxQdw& z*^Q4MmV%2}`x2>Vid`iLQ%XH6g(2X^f_dY?pm^+|{&@F>@!TIcYC*hwg+s1~+&>Zu zUUqmQ^Gh9WV_34lpnV@I&4&eVC$E=i#M0gB+|ORK51nr^EIbCACO4g=%ZGYs!pa*n zS?`9Zd?82Bf02j(SNa<3xVS~7^t8R=^VguIzm+Jr3HtzY_qsS{p8P7>bTVk^?Z5Du zx7?azq{zQ%#s;RcCTR2wf@;UQMSM01C9D^DlNN1a(`u=$&?;4<uOm%r9eT81#Oswr zI)dzmqfBV1&|%CIL?hPC*OTQ)BCFg{)=jE2fkJu^aXX7C6IEz8m4ZW&eGO=+$I@0a zG-1nSp(8U$%E2cV=3e*uZ?S$sXlmTxX1_T{^UW>+Yz^hYj2oz6Xc=QownMoPbP-}T zMl=k>Q9Vh+P&7~pK-2V*&>mV-d8*0{7yczu>j*-M%7IoQQv_fgmdKoEqht8-p_8>K zZrlH-0<q-K(`zeb^Cf>3wM-Y6iSxn39;q1J#($csF4XzG)hQ)1g^sI8T%J~vI*wG# zzuUHHW#S5+PZBsJCWqoPX1n?8-BXi*-9g{0t)YEc*<)9Y2i#s}-`N9oOPSquoG4Kb zNmpu@IoG)xG|$+u)W0N`uF{pU>NNwEd33tlQ-s9VX%h31hro?z+G%|DBF#gQiP6?3 z{2#wwZcc(&Z!)`-3o{etkBPj%gPrNM0SB}RDyLPfn@>w8Bs+%Tm`ES@BE7e-&LcHA z&&IA<9G2cwD4KLJ08clQb{j%z$sf_tl9InxNe#zJKI>6Enf;+vIJx!|*{5yD!FIjo zNa62#w=-xTzA=lI(HplHkRkV2vB~;GIvP;E2y#ESidMN5h;PNY&muSL>2dK<X5Ee) zK2f|jkBnXY7a=@eoeAwtp1he2srXYL83*J<MCN<LD|35zK1QFbFfyXM6m5Q*D%!n{ zsq5S%?p)<=VgBTPW(tD%hhXonR;p1&vbLs;r8-5#bePgwzSg;E5}!bhnj$>y{0bho zohgBe+9S?!?-2m0dr^Ia8VgG&L+%DelQHW-m5jOeZvnwOOE&tBx<AaeZS*w=plZZ@ zg{;}H8GLP;=+b2Q<@%{OK+Ri^Lc&*-z~r3_@)fHSe+s)0vE1_Fsn8Zj;OD_=9dxfc z54^LOLK%5Y{W8F{9!rW8E73=4mGrM~C<$1KJ$mTmC!}*Yz^Oa&q=hA8{bv4VzFDh1 zK*lp2xn}|j8F>B1*zs)|&MJ4!@ukCAEO{)!^&-c$5w1P&!u1|H5+a!_@1{J~yWay3 z>#jJX5&2m6Bc(AYhET6zn*F+I;5o)OLIbEt;%+ihGL6xH(u0_+(WK8OiF_kO=#;P5 zvhi<b+Kr{=uohW++8G_|z8v-8Q`-wooxNpK$AzY7qW3?>&uLGr_i-Ro+?3zmxsTMX z4$Ut|(U{7%Y-rs?zp?WkjZnYj$~VLeOP6KVDR=Z%TR!;HTFwJC46=uY1mz-lo==kC zsX^)-lmS(Pbo8@$kRF~Z1QU;frSs<rBpT$-TQ*clQlp&QzGMUiy$`sGt&LLqN19og z-cGYl$faEBp3P{Zm}rDS+7HIHY_w;rIL#Ur(6c-h#Cq<5*%p&PtY;hGoF{|WHF6y= z1atcVNYlw8e}kwWFVguYb8T0@tsnQp9P*Hm0~`IgMQNa2pvIDZ^iJ2f2T!S&_x$jj z4&V*S5y-M=!uk`QEH_D%3ZhO4(cGjAn&fCQt_~%Z_!5>mhs*84+{z+0m6exIE}LVQ zuoPjBq<HQxIajRDy_oASzCtrgVA3LmP4@@l!9QwK<VE%_;*?za-W(f0I0o=zS6>aP zu|LNBfT(n+XGt6dJ9o&+Y7L&7z9uJJ3FM<*kW#jRg#uLp2^J^5RhWZKNt^F5i7$vh z^<jMezc{n^g8L32G<%?KuM>*>`V~{q#De8y{<cv2B*Q?*ZD>+&tVgr10`R4GJHA)Y z8T>|-nBjs=T0e1ysS=LDh2L@y1D{ep{Y!D~h)<KPMx6QvvLQ+{F^GdKe5gPSN%#2t zO9NtPpjDka-~2d((CiuU6Nmc=rOAj3{+%SWqLHy{%$`2D>o$Rw-PdrHYM}Rvz|UxU zRhj>KE?;wx7e)(z-->>8me-HG5;Ury8gYU9AdP6VsCxECn&`_~(TH@Ax}Xu=ER!M{ z(T=kFMfy;cdxUu+`TwR5eMhCc^BPk`r_$j#os!znlv)-~J!SHGJ|^_Jn>n;bnSy?G zboZ>$!@$VYhKmnKA3u7a_SsFGFfKqKo@Q%_Q$DOM*NG>lr&n^>>-!`RwAZAMu1_63 zn#iG59MiUlMki)>o?z#|P7L?Q=F4|XDk)p#%jOnD{f^q{s4vM^le;;{S)m^tRVCl6 za$W9jbgxKXY&xcIGW~?g(uX5&e-uw2kE{|ek2e5{Bda^kiQPNBJah3)ja{2}j9qyy z^U)Z?8c_RQ-7|5szh>e?`lf574UfiC6RSH8?3zC0(pZn8bjL?MdOtq^;h=c;he&)E zR>xyUEWl!2{y-J!?#a8$%Yf9J7`X@r$ec<b%iaJxiTc;4vztP|ZW80&&DG`J?xBnv zjDp|ChlHlNoJNgi+K0wdM_0%0oi-%3p?}lxemAsyN%!j`M=jAr<bLkU_Yv;g>b3o1 z)tkFr`c)tC&n<oXsJ+~EmQFl3OaI6g9`c)C;@rN^hV(W0^i##r^8F_stCd@r|6XDb z>HAFh{@eWb-HXe=-@I3O$9DxuK+oXL;cD9z0;m9~wHa8dYp$CM?75~VcJ&J7OJ7=< zTH?;TTPHZ{;s;Hw#C#R&St`Kx5wTQ93>KHWeP}a*hE~~`H6Kpk*}cBCv1_3I;tbO~ zFi`u6W16uiv$fJ(oo*hzw0X2<G}T;hm#3G0Q4jTHih-_w2$?I?8H#4j21z}nap2RZ zjV<IO$*0w-i}Hs_H&@5{rVV7*(ntE$d8Qx{>;1AAFyAZ;tKc9Q#FbPd^i#;qZrNOp zSROBb)UI4}XaCKxEcJ70dSLa-T%C3mW9Yl#WMZhE#Z78%<)H<7P~D&qMm$icuRhC` zwDpI+lxI)0moDq9aJrwp2XLD4d3+xDt6G}grYM&2gC^E=4C`u`*>P+<^DTJi(bZj- z3{2)gXr^g%5x=0Ycn&+1UDL}abN(cAr~y0HcR_jf4Kx~0T~NSm7O1{UX*~P16rJw* z<wi3TtFsGv4}2l=zxH~8F}G8yxsSPqqa?AO&jEWbTWm_b*RgHaK_|z0P684r@SMuy z+P#X{HQKP&1$?oq*YG8oxo}9|ykQBZ2I~{{(-+)0)*?u@cM+d)TTXJ;v14a$yN~r; zMbWNHhs=!iUd|JiD#-98tP3+M-5<CrES?4=lZ1yIJ2RiLzI{=6$W`wC_@S^6yG7?4 zXU_F#o@di$RT4hT8%Cvl<=a?a+`V!2BAK~#SgiNwe6XI(tnL`4b1U0)T{>)L#}}=2 zDjL%tX?Yl^SbrC8<NMWG*)=^`7VDh>+Q!o?0_~NMSu%4f8f`x}PkuP`>=nBAvirlK z$yjoABE3tk^)l8o2^@^*yJ#G*evluBjlw+U0p{@7)qe!5E!s-o2OgU4T~<yTL1nB* zkwM7EZIIfUpC^vdw;|+vEXucStY@mv7mHneg7S%l_N@;2Zi({YB6O$Ew|(sDG0L}t z^7V&&KM46Q+#%MxD_=|JP@a!nm+rtE_VEO)zL1~8HHQ_?VXWt9GL+8as|Yw@9<$%H zuad`^VUJ+()G35^1<9`d1!R;J-=(~P9q2ba8ta`&k~`>*%}S4E6x{ka)>F@yu1hQF zm&GRQUbt=4udZ3ivd%~Qn2`b3MbQG90SA$50neHW{qytl6TWM8FTs#NN2Tqnrmjo3 zrTyPqnT6a+<8fQ<$9jRyfFL&DKK@H-A4aPW;BQes9^kA>1gFp1XW&%YUZb^FMSJ`E z_Be~>+l$W=PU_F(2Rk&o*YL>B4DTzy=(DyJuBV}yX#?)NgL<SWUIqSB)UVx(`lV}d zOpXYS^Cp5r%;!~i%`B^p^~PcBUQ}p>RU$bwEXPS4yd&Or`M5n}JxTaO>}m<+<EF%V z)YoyB8XS6#((_*ajEopK9MrF1^KbXkz-+OWG3&w_b{hwF3Ts%$Zef0km$9js|HCo{ z7(0fUn83sq->)~Wmi<Sy{MF7Mvi1$p9>RGHXjY|5l(w+M#$8;0Wug9}TD=?*&$J?c zuoNF&-LYNQOo={^(2P3&|2|a@-(Eb{SkG86YAfTNj-Vec+h4FOjYtOcBXh9_rOils zygTnUTaUKqK1i7F(KRsr17~`E<FSWT<sWb@Y4AGa5l@}NqG$4f+nz?Ue<LxB6PQI1 z^Ej`Idp+G%4(hhJSb;wl#EpJVpM-vI9gYBz=F8nr?X*kD{Atcg+g}5iJ<ZLz&4aBW zh&kn-(thKAX}?LxTb8{tqQ^1s+wrEk@l4xLlP{0tX4C`7(=~G_AZ*kecQ3A(8*e}p zMIQukJ=H$3yldvb%+A+2{$HsJL&P6cu#J7uv35GFmbYZX{G}DOG+7qw$@1@*_aA=X zk^_D<SKE}Rt1Ry5rQ5{k<J3~VJRa*qf+*jl$1zJN%KdF*nwK8`(dCP_Evt!dWH0QE zUE*i2cx&artoW$sGFMdX$(oWrpYz)d@zlT24=dcYKL<<=3(%cWX*<3|fNXh%PW;p6 zfv)LQWu2{zhwYwqop?tss?oV`o2yvQpT#h?HlG{*lb_G*9Ag-b+^4v%<Ka;C29`b6 z``lgP^AZAIC)54vSynP~f@2KNGgS{XzKBe=4?yuU*}0O*S{iV79M3ZEzD6wter5YB z1yu$3FX-48K`nFKOI;t1z4+|dy(`ekragyF=Jg;@yjq9cB-f>nW{YJ(=W_ZJ=?_Si zLt;G^e}FqaB^c9DcN}YQR3dky_?GfXve>Vzb5S2LoFo#t^=}tdY{ePmcNtotzb3Wz zysiRb31kxIp^2w&Ek@d{^0m2CAJI$bzU^;^{vZusOk3*6afnb+f3sO&nx8KlU+?G0 z*EfnzWLtU4kLLpQCwA{S`-O2YY2L5QZC6<sd*d9wiM2mYon2!`aReY5rt~r3*r%P% z?0Vm%)_aqkfuf1e?s1*aiu$h8mVI@~|1eJvbgg3AH}dMIeL3>DYdfIyK!ly&GT+iC zf@OhyhlizaBH-d3-TmftZL`&BSFOr6EL(W0b?>o)%3QIuv5~yQV$;9;G%`5*mGGqZ z>hN0=e$~CQC5`p^HdfC|8{<AHNtm|Ac0DIkmrk;%8O>7?^3>Ov_U5S_6&nT`D>2g4 zKCDVp&C}d@>P7m(NiFH-Y4Oa&DKrn3Q{@Q#B=81UT6X7Mx;A4H_8`Jgp3{y{j7NZb zZ{23Nawpqe8(r%9%>x^$mLe6gp0!$eyBD#M=ZfT7cEf5@o4%qf(0a9hl!bg3|5(Xm zjpkk3YP|!U-|4zkeCYzD>OL^Skf@0hs7l6dI@Y^}X7XS5<O^#s-t36Tj`3m$99DMO zuFQX|?^u74ka)?F5G`D!JSi^Xt6CN7{iS*gTrfm<!^pLk5J!{csB9{Ht&H_m^>F_7 z9aI$Y3-GLKY+2_<w!n5F#zpVWiWB5F{kUmIVAh=1>ylI)`%ahF-4F1bli77?ORa1g zW&BRj?~<0<)5`$BB-bY!AII`gZZA#xYhAW)>>1F__s_+8E>{!q)dwOGE2%5!N9leM z?c&dmXC~C6T+((8_t!5|3=gS7d$SPAO*^Jz8>tTvykb3bnP5Xxcg`Wg0Ybd&wSA#t z1p(PQN{(4aun75d#O`?1PU`=i+Hs@ilI;X`;za7asw4)&Wco904a+*3xG)#(QSj<r zfy$HST9ivF<Ed}NQ!^@K_nu$XIOl>Y7L)3D_k!v~!?I2sROVN=jartN?}kpuwDc1> z0TX$;d2C|o;YJGl)(B?&8Ywg_IlLZ>ID9Ob8ku<>8v~{{$FW?;37nSf>F2uaWM_>i zoeVHqE<s2gu6IH-99~DBdU9Z?Y9^q?;qClR;&&3iQ}~_2FHxdYcSJ?a({MbX`f0JA z^8kQRl&d+|yxv*8N(m`YQ8G2X%KOS6|KrUA+|PAnGLgQR-RO@J=^Z&--1CU$`9GXF zVsbRk4@dJ{nB%40n})=$mRnfQBk}Z%v7+2quWTM&Ga6Z{ZJ*<y8TB2rnl|>Al?^HD zyeO<Qka;pav0Y@2-;CSu4H0mx=XR>nu-Sza+mH2L${NTXWwoxB{5>Cod<O!xrT!i3 z*`3cK`s;qg{X{$1qS{3+>&~ThzB}fhH+xxGV_8}5%23{u2BC9OpBR0P9zLro`$dyx ztb7Tb{^6TNbei2jEBW<8ZCBH_x=3UsU4X5%TJ&3&G}_0@c^IPoL|aI>2CbL@96`k# zb>XgTPPk<2RPcVUt^8>_xfox$mZ8Kmqve*%6s&h`2eECkt8^S1sLaObifdr&+wI3c z)~IJVY@e#pq0p~~cTuzJ-ShkT@yH7NdiE6-!~A$enE%6|w0B?W4&h!%Ye@$#-aZiN z;<1})Y^nZn5bBw8-BNxYSp83yrXMluePfTuN;F#%$=~W}gksxKOxpu1UZl_`B!XJG z8(3^yyVzf9WiIV5Qib2L*M-XaRV%yFPHpD8-SK>;fM9+5Ts^LGr&FtHzugM0aviGu zCW>XhW$byO`_EYASmh2RXF<L=wly^$K?=)t*e9uuFCA{-Ow;=d$A=z<aJs<VgYGMt z+s-Lr<45h14WF$I1&I0shCt26DjF|TZSs?9&5bT3A_NfNqjZsXPV)z=Y-q0T_#cx; z<dCIh|DfiY&d0EA=VPdCp--9?+3;+vXEaoaa)|=9$&h2Y)ESE?C=^JKHziRDt~c(z z;jaCa*B9SWb~tR;j3mDkU}xVDp}!sLk#G?o^|s8H-3u`3d@%IvM?~`t^Do;DFRV;O zBlgoJT{Dn=$EVL3jrb!85EG@0P3~ITPw|70WRyB*Gz!$%17kgZP`#!4Whm<=4=U90 zJS93;P`g&NP_;OLz;qL05Vhv+D!?Zx=blK9OQz0(myUOTfa0+$;u(Vx@xYlKhf3d| z0u#R6+1}AB(sn(4xOaYOb`-TrP7^t0Mai~!x&<JlA6=bYK%&+Usfg)`%;BRQyQ_^| zFhrK;wzGA3`oPSN5%C7F3`LidU~eQjVAa$$6VuC2i3~OtH)|iAG|})(UaOI)Gv<+| z`=!<t#uwMN-7+)`^qbd%ezPGF>+7f;NS61<%QwWw%%>LO7J<~Cs^C18nJqOU4tuxF z8?WHpnSqw1;4Fys$Rodva6fHwB1z3>HJF)fOZ~HL)cgc!(CYDkr9WNXv29z!LVvU- zGi^vq!xJ+n_P#&;@c3z*Vc74YL}tGYU6+9%Uu7AUnX2>Aru2})cn|<mX9%um2RM== zmwPGCe>lrjlk4+JPaB|j=fLp_#pfQIKjT;FreG|J<IkR2#ZJY0ME=DRsr{;f)rA5` zyp<2sR42;j-H~Tc8&8EjZBJq5u_^UP>TOf*b2~`hi*H;W-+g%Z2jeqM<sG}G=Eoa8 z?BIyShWOK~TZ#6&I=*fA$SI`mrIlkIAw%b?LVGO@k9017XW`sP|0DjP{_^xZ_+9=T z$m>St$<*Sblc|5;4tMJ=Ojd?)>(Z<6f@=(i=<6iIjXgb{uCM^n@f1N?$w~<9TLg<x zf?&e$v8y2u+;oqxBXf6cnd*|ONA_#%uy=nvv?HEK$KvUO|M=~?vUzi{6dM@E^pAPb zeU&Ua@}kO1!cq5sjY^0aKzflht%m0kjnf^mx5}|CAEnH*?V)tNTO^K7wo3Mq+*;Nj zr1h^`*1q4+w66aEJ*ybW&uKec?y4$(L6zBQ;^|1X)QbnbyKgU5#uFpGl+90xhpbn~ zNpd}7tb!X(z2-FKJ{YA12>(`o)rBc0wk~nAThwHae-9(D5Nk_RS)58;9}N+UYfmeu z5iX&KNyfEx8Y#A#P|ybIUeUr3jk4TE8S8mhLnE<EzwBavAmD~~1~Bh)8h}le<p|y9 zj7qKVe}nqXYEvHiKP~iselx07`u19T58bfM-?!X01|UBvO-ow7KEVC9d#b}0%UlET z{oT8`zu(%|X5~!o`U5L|JgFEf+zyP_-;z09&0Bz$nv|r22WzMLlvvN<(6rl*)a=1L z#nWxT_uvVo75#&LjCnCfRK+Ne%`0wg7};DP1VnEAY&n3!%_TZ3<tLOg{T?87f<4Q@ z1`SDo3;?<FPyyr?{~iE>=YjkX-iumb=m2CF0P>x$`qFbLO(6BZgN5$gG$W$q%|30c z(!L$i?(}KTD(x_(fsg1<*VT5RBdgGznqMN5_mfe7dR|uayu9dnb<wjcdfrg<T!y9> z)l*sYTvha3Q}kR{^ju%`+*tJde|Y;A_^7ID{R{*N3QSZKs1Fj2@(`5~t3*XJFe4KU zg;p$DU%7&ch>AKvs0fiH%IRbz-f}A{?Tr?D(PB$mN&{lZgGT^`0LoJy;%g7XBY=eP z%>Vn=-e=}aGTz(v_Wtwx!JM=AT5GSh_S$Q&z0ZDd9@?fk-0__6cpl?;9`ATAbUaUY zJeN71>11sBX^!V~$8$HwbB5!&mwCo1@BR2l{S9#B=a^?C2jZZ4c$5R-%Yni`PGw8` zTA=F#^+IQ$kM5r;?#aHgXGvBSYL2U1=oL3!0Y5VueT0dZ<)C<d;T9{GM0i&Gsms}n z(j8~TKMNeT0+t^Lmx}GsEU1da6XS>P&|{n)aCS>Mp`xak_D5KZ%Ji}NIcfZ@1X;8K zm=l;(pWz%xvQZ_8E7TRz^z;$nYzm)A>n;^wi8`=wa#EV=EIp(?(Vu=%n<}LJI!hZr z3$CQispm`y^`?Z{=```#a<nl^(EdZ~OqZbM)61Zd3W}5ZE2JJ;kd+3@2;96ND;>Y? z;<e}FjmK|R@&S01EMT3*M}aJ=N~6H?>`*8hUUG#tBj`t`Je8UeNvJdR9#)w#Ww(*! z_$!oTfqr+i*9HQ2q%R3Wky6Nl*xg;<c{Ps&vQ1>Z)V;plz)qVjY4O@G`(9>$BFwr= z?z}`(rbXGe735$^0!F;<;?QL&=4kI1ILL$EUyuS44$~jatZ;EwVSDm+qH<UozVf0~ z@LfzOj1#^48|TRLp=D#r0ko?!K&0UJHU0u)CV%mVq*;7ar|A??AH))aK`QGcgH_cw z2V<k+tX_OZ@sbwCjkn!yawb3*MB;8lw^$i=%u2$7tO0@v<{BZCdtq@_jwGO!0RZE^ z0D3c_3cF(|)6rCsLrAZF{S#ino)2%}WP!;H=*$Yds<)^wa7U6j6A$ZO$ET^6O?jji zu;yj$20{SG>nr?1_6Gcj2Al9e4Wi(BJhEVxh}ZRaMZqi)1%GNXSt2sG;1$zQIF0lC z-0(1*B=&rU>|1J9R}U5d7C^PmW%<sQ@<686x2>T<0@5A%kP$hKS}^k!g-bM-oV0=k z5-b}+;@4fgI-N-92l1wUe<Li&0K1F-cqz5;yu@SWtl)8C@9<}UMX$G<z1hTK-C&51 zw1Z3=%``_NWS+AT!gzK=7%?|^(6-O3T<f@cYK!)8k9O7^Nuz`iDXI%+62N0W8WtvO zg+AIHiBKateV6)J92t55V}L1AE)>!~<8-rjnz{7viOy11ZX*W7RU&{_uNWd4*>>Wv zyQd^$K~^v0nEHuh>f#0ubWEqoHq<M4+A#^FaZK_|?Hit}<QKfX-h;J>Yc0vFghuTO zwfgRfr5u@x+2UBelrq4_6$CUu+hjQLaXKe%FR>;Drz<6)MSXAs@SrZ8psSo-x);SR zhl<26uuuTiY5vmGE6AWN*GqyS2lFo{Ab#ia7d2XeU)Cs^#C$x`w9D{I)b&8c>uY$0 z20q0bls(gAZqb>u@Tx-Bi~R|{yTs2KwS}|Ac4H=*_Cw6iZFiSoLA}fjH35a0!%^qr zs=iSLm+5xFBxx|@93|3hZ9gQsg_0zVey9v|DZfszZEHL}73@;QtfE*RzAS~ucT-Oz zk;089RnvgDKLRnN(11H)A&|QP<rDH5{dx$mP(u)JVCp-QIZ<ae;Z=1p<rN|gpX^Z{ z%&+-UT^_0BS#ym3=ZXGpojdEnp?{Vb*FQ^i=$|Dbllu2m<z;^zyeMV{Sa=%_p!tu7 zM_Q?VbE^Q(CsW{G2_I*8tyDge@^HmZn(zyouDw{-0FB-5?EZ+f$U0O>d^`)2Cbbmp zm&Bmpmv$q`U3?g8^=Q=H`a4Xb_+o_MG4`PJa$tkM0ct&*G~CZFxF2HeL4%2VpjbS` z4Nb|N&!LUl`8>zY6oli>=k-$UeDY~ca6aFXG#ZG0$N6#WGoTN7M|z5_gvyI-r}HVo z!~fptoM(t=WQWr^F1EZND`1??aB(^(rOSuYnZXAXE_mAM2&8d3@{DZOL%ijqf-VDZ z)K49m6{l17g18u|4|j2Ie4mKv8Lmbexx*Iz{g${bP+K6wk<y*l>2mZtO3-aU4MyFw zKgCjabt9hH8q!5i8aLjp&J(Z3N@_yB@h1&<q>a|&m#F9B7q6yU?SePhv)!$B)0tcF zqi*i!=+8>R;!oy@&Cy6cLauCem@P4p=>z`@sZ?niHGUOT%U^z!!t7IVEno1dOFrN5 z0l*r3i~-L#5b2U(<L#r}m$A@UXvW+bmo82V0Uz53rr)Y}V=f9GyTp`8BXn_{)T}(q ze(%0%>P@LPZ0N($<<^!!+rj8L59GDQkxIZ#%ga6*3}QPl78KVObdL-~p)#+`&xAZ1 z8q42$(~41J!%?!&z3`C~)m0cu$F~I>pRls|Co#sn)-pg`r5f?c0HYQF9Mu5c0n6;O zdTR0c@o2$+YT_jyQx}FfCW0=3QB&j#>=t4~fs9=+l{hFPaMhr0Mzz6bFrP-?iBg(T zJM@H8Do*5uxS&3CJ&@4OK;@25YCnX(-EjW-7PSx_0*6llcODvxROlhZ@-{3N#oZC= z0(eJ(*|pF9d!ly3KgX2p^=WDVI?2eNfX{haBa6BVgjv9yre{g0>>_+^#RMxX1gEW~ zyQf`<>5HYb3-!4KXz)I<I+Rb568EgsBQ<>HHW#8L|2ocos|uzJ-Y`A9B26i&E{A?> zy$DozVmCE`JsA|$i>1PVGx%#8qUS8Q`R&mwwOzD?f~vG2weF(!fTRKnS$eqd4%)NY zCiZ7&VpyaLovDFBsEpp?0W=m2NOgw_{Ka1dXObh~By@c*J{xxN!4yKBPoYp&72H{6 zm-ZNuAS@w-I*v70fe^lj(S4Ou5(7pTF&FPCPYjmuV?Lhq`3!{-PR&@N{d5(PIL8Ny zd<0${eutNO<++~EZ+LNEoq^vShnGjdD+hdo4S%h`FUcBj`h^*s5RVDAK&OY%ao=Dp zS^y!1Rw$hCuP=y8t#YOjeL>b37LQ@?c>KDH=k&oFqsy6mu&HZDFObI3%QLdmh<%l@ z4j5)XR{;Na!*OrgJo~w)4Z~+WYE;7d*lb<^)2t7$a-m+CW-UYv!li0kNKwE;1DE)m z(|TCPiy7AeUFaQVnt``28FPKu+|j$5AA#^)J$OqX)OQOn+dv#~P@Q!RDB^dDVA_^! zC;*Q}XmGRFJd3$a+-xXJ%oGD6@jCk>a!HjC-xedDYlvqWwlW0MPyn6~*NY6`13-MH z?pmR{9Dx4!obS6@bH40+%B(SB6q0dnsuQ63hB(%BV_Q6y9AF7SqFSE5N)vy~5GO{= zAgsfhbB&w5@!4hI6jhbaHgb1wLLzj9CEC%Jms9}Ij{w&j01nJ;fD8jrh|oZtPXIu3 zT0#A)o0hH|jmw5Ue4Zx9ut;4{z?OwJ4i44CX9x{W$gV^ZzauPCa$+enO-e>AWtvGz ziKUD;C2(?6T~4AXffFn0LQ_HoUUUgx;notCFgKR6!KBQJrBs=e={m(-{9*+2%kLvK z@*JLw|Fa`VTskXmE*2^BcqKC~-Ly)FhW`b9kg0fRIGJr0DLKXkd@PEw#|{fj`Yv^S zcWMOoLO5rL_}00IiATx8Hq8BzerVuGFB+K(KG1woQJc~=wjIQ!2&eEL4*=T{#9`$l zz63}3AKQ!}m)4TpE8j=1vmrN~^m*yXb6_mO|7>q8vrPX%|A9f#(p~_=@83YrzHH46 zVBER(BEQRW7E?G~BF$FyxE3Aj2`o_qz>oG30IEdwqkmVIqhUq-OoWys*2FkK0oz^D zg!P2%deeIXWF%yhemPE?R;Fsv>LXl4OMK#SeuH$}B^d{GQH6L@Ypw*`3NWeXX?gfT zAP^dXk3V3Bz7PXAb(YvBRxsI#_-><~>8vfX5LF0{3D=n}hIkmMRQ5oHsXRA1Fr8Hj zzH8gr>~zxbZg*Dcc(yw$!l^xf)s|F73&9{`5T_k6A1v?CWI3&veFyVVW;uQ_Kdjzl zU(cS=q%&VF$5Iq3f{Atm_PBK#3EF9wFwF>n`?1)jO68*ieHxoyf}_P18i<NytvKe; z*>0~g9?*_0u0#GE;lBGJCu5Au%E&|lq%*$wPB_7dqFFk$nCf(@*sao5H-9QSbo~}p z4;O{Qs%Q$!;h=CzRj{1Q=i?(`WnYF2ZRcr!v7!@ee1X2v)j)87k--W<MfAe2-TU|B zGkgDk<L)g0&j(kmfNC81L?V3mY+$L^njTmnSQRug&bDpBz5<&QHR<P6qfrd#^~096 z%3HwR9ifXe;KS2YPs3gg*)b3dPUIcz1sv=Rx7n-ti)K#>1$&nXdz!pz$1-CaL2ck! z)r-MmQlA1bQ+{#VAbw#vY;_MHaAp>h$O%Ezbki&A#0Bx;?7@!Of^34iaZ`Sip%vo5 z_((FGgUqX*q;`yP*~Z2d3d_w!pKW>3=d?FD9)lA3af?>Ao4>Y|@iU8Ozu)r}A;uUx z%;&ESaS2{x_Ll(Rw7+8@ih9MFP1^pNjb9W}+WuIsZGXeze~kV4(Y|8#mx5`(N-ymX zN8YrB?+1<=e2zB3d{f5+Vjasn>UfN!j>p?|yz@`Gj(4*<P{+4o)i0}u@7e_Cfd@)0 z5U~nJ72I`>HbIu78lR_<b;!YLttW@Z1bc}I&N*ANS7_KH1lf~!us7YoUYX6_ZH7JD z1pm`?eneK&SZ0hP%v92phO++Q#P}ka@(Zsoend=g8wcCKV^Yin+ld24U?_<WgBo|X zHbG4gX9p0Ie*G?!(aHpGk_@K_&K;|@<Fu_@u8=8OE>UuB_A>Xhx6On=8OHf)lj#p~ z$RJbX&R_=2x6oven9?0!!_aUTFn7WjhMhnT`tndV`tl#cIHWJv0dxBf6yhHVm_NG= z6cI2F70iEez})R}O}rsZvz5V?WQW}U+kp8)!}%|Txbcd1$o;<!m~YL{oZn!GOT)EC zP{{)3$cyK3Sf3+psF(2^lozqI_8kS+M0RtM$ei!RR^)_}7@Uw;!&LM)06P80QsV|i zfvx>VI`nM(2kkrNKg#j_pq2k<+g>-&a??Nw#0DzwXrOZ)4RpTUK!5WA+u)L{bT%9K zk26zro8-IpALCfpkVzn7trh;`{Px<AS&mxxoNgf^2<VN+R92$@7=4yzugb7T2(l;d zV6V=>UcJp;GdC`Qob5jz681ECHHc-#I6}k-o>eDSEc^#woc^O9-c1+wW?!AfBq2_} zvz#3=#MFrn|Izm>ok4<;4;ja@@nT3L-^<kp6Eue@^ixpa>Bp%E;EUgyX?lDpn1!U% zvtZ6!`X+GBL^jeUTgP~}1FZ$^bh#vCr<Efu;=v)Y<bktsT+|vxM8;U-OB0#p)45H+ zswavwoF&9`gj#!mWPvSXyx|5a!$1i?3{P$}P#oytVv0D=s4o<&x)PB*aA^0Yairx4 z;aFCg{DR7%R9%(~0J}V9suFESJwJ-VIR}965;kD~_)C)_CMAQ!mrP0uo1vsU%@ioG zC+T5a(ZkS<5Bv6y<_*YSCXW2JAdxBYk>3iFVn%+rlXrnhnMgHDVegofF|m{~ra%oG z1*lQ9Jn(Qcf+*C7tT)DEWDHj(Sy<AWWV(M{TS}c|u6?0oIQyV1Qx=<ox)B9N+?sH- z(onCG;4+x?q(qoOQUGr$gnta3O|%+t(S7{yZ)UMm1@dg$@)>wdAMlU`;fd;t$H*M^ zZF+$e^8?{v);KApGq9rEt`@B~T<8&JFzX4)KhOpmcvP@!BM+M2QTSc7yE~RhBA866 zOvCq=r53*dHvrm@>1Rxm><gti%uA-KkYqT&g&u!cSMNQ<m8$y|DQqLn=!qkzv4)*m z_!Itnv@H6W`XvXkx`u4&#!8v}NE$k<LNid812?*uh@!*!2BS$BbcFUNUAjFU=}OKq z>>~0vc!?D2f+<Cn(c<G$P90F98%Y{#Z^crGL@kez{JF@F+^(@Bx0>I<=63{s?d5z1 z>#_I(6WiIKIX-MtG0+WAzFqsbBTuwzr#bNY5U;Z-1z*tV0iqiWk$ThE<4#5c*e*lu zO96I0{H8&u0z&i?z8F$AWaRe%QsL%PHspLEZO<1ck`=YQM$*#^>6X;S(pBTS@HR$G z9rbTn<O2ObX|<=a7yCg)w~^vm2IGvTK)^!7iY%d_gS?P{2jc)b18yG<QFuEFIp__p zhI3T+unz$*RD)EoW7ViYuLN}D&xYe!{6!a1C`~|zkAcunao@A?$`WCIMb`)O$~hNJ zXdK59=tOhSN%2d8YCOXxU}hC|n=Y52gi?67XB8UoY|knXPL;l^ecEvLj_A<#Ne2fV znck8`sMk%W$VA(O+EQY}kow&dEFZI31}hc<t6Pi^I{rm;%1t<*V>*QKZ9Y9a^eqE0 zaGDQv{pADS%<X5h-;1Bt`rvy5Ho@Exy8bYWE(FMr!hMfIJS_jmH-cuv6EhY=ohg++ z#?mEq&ndDB4I`O&B&{wtkuno)nXWwpK=31c0WclGVC6&^nWy6G0yYJP$D}FiG*yPm zH(x&p#mNJChZJc@w<izM`OL|KtT`GfgGl;QgFFJhmjk|^4gcM5b-k34XVl9GnKwjl zYh=i$49(I*!mu4OJOO`4A<32MEF&3wh&EWP7qPA7#?>*QGM~=4$mmW|rb1@*j3Z_7 z1=Qv*nfwbU>U&HHH~=dbFy#iM@GQu-b{(G`2zfICS9$GkdG2Bc&7SRLG*Eg+srFDG za=x2duLYSv$lncfKU-8++;|Z)?;L8-fDt=@ciX&&<JmTE!l@75(Q3~p64gF0OCEtY z21#}`jps9~=|uxysNuPYLLLD>-2q=_!w(gBczr4u)%1Z0Qu)pv=mB=KuqerQ24>4n z>T05}>M;Zj6lwnXkbEr_c*RN0cRBemIe8Y!;X9a_>tJTS%}f>dXc5>jlVO;Vccjw_ z)EenOu>glaPL8fK9FYn28N)X;Xrhp0%y3HK37JrcQ%owqCaXU`p;@gmtTKnJ$~#!C zbFf-(vwDGHwaTzsz^Qm}Bkwk=8HQDzi1sVJDBSTYC$#cdl<M<+tbSq4ayV?avYD)| zJFZLFZCGUvS(SINsvN8~*sPA_<}k2SZ&+RZj3y%QHme1uL)D26RzE+kS!Gdb>Z3qS zrd75VmXUEGSnW=qm1S5>kv?AMkX3mHt7%BLtv8*|wBDuIz(g%(5Q%5x0gsP>@8y8+ zXT#4Bc*t)=J2+nB%eyVwo2+q|uugP{<}#v@X*CC%Zjy?2pYf?W1TyHHWMjWt+4SG~ z35=nqZD;ogUc@i$;KskLto;_fM{d!I`1Ifk_q44zMZ?BYbLkSHcIjqp_YR#jKy2|l zm<fn|ax?26Kwm~8W}1U@iPpM6@6B@MI=5HtgV(`K_Sg8~Od>Ym6!I}PFJcp*sPT`H zoE3NnVDJsGS;hC*J%KHjXQmQkolxkOUg|hpgqapN05jvXz#BF^WlTYUhAt8FcIX06 zL8Eq}qYJ$ID3j4=aWDfMimvST#YDRc?0XEM$&Iod#`J@>;;dsb2i99|ozKN7K+~|L zR?2Fi)n02B38#aY#3T<l(jrVul0!3Oxd0WXjrW+-#&gVR<5@M$rWwL^$t;}eJx^(~ zly{`F2-Viu6%%ddpKjE`vlMmSC~c91CN&z6Ov|ac5)VLeoRj+y=FK^|)rf{zc>*39 z_#HMt#i!*|0rZC{Ak-4`?edzbRisgyc3RY=jd!GNHfi~ev|5vv<4F4>(+sQXSuyis zi3@GwuL2;_lQROAj2p@v$j=&N>G&^rn8NEQ%0~XNDbdNrK$GU=qPHPLg{ggP<RHZ8 z)FzY$fJh-fnqdf2Y6ib|(S^0p#V*_$7%8AJX?9Z_x~oNAZ2ZHFKscE7w0MQN%=!z7 z|G^$Dn9)RRcElbYz=!;tg*>RaAp`xO6EStWx40Jo%*be&kz+D+zk<eLWAv1a*l^rk zj4rNOy*2_Lh8xT%{10G{^Mn|Vqr&v;R;~I?{+Z?|jwh{+RvD4gO`);AYt0c|$1;!h z6yPJ+7%G~?T@<*R1G6mbDn=lOOeeTay37#p<ysI^Kvl~E#+m}8bL>QhF#gx0SQ4Dy z68<IwFa7?GhXDVI6TZA9{MiOxB9{*U9~q%*SZ?}?3=!W^s)quhf%7g)Xh&BcW?lRv zGutOQR=}LkbAtIVp4q+?Uj|A1Lc^BR<<o1^d7JUaKfV;?3&Z)ML)!jwWVB-zll*UI zwnua13C`~~#Pfx?>En{lY|pSqqnIW{o!X80W)gtaakQv*K7i`nrvarp%OX4RW?CQT z3vIMiphX^!kF9sNG?OoJi~;FNbnr6iUajYYgf1<yz9q_hphV#HY<E%UU~?w(`e@D~ zm&HXP3_ZtF;yIooR4Q}PYc)ugBX+HKI<{Y$mnuxvRC-P4)enA1I<I$ef=;aS$~T=C zLD_kYadcke9i129)Xl#FCiO{|hR*9PnFz(uSX>-tV)3hPM=whiFwxfNpATw<u@rUp z{VX5b77SLr^OF7r^riDU1MiHDt`pdC3212G%{>wt+>!%!$HjcRtlLpm<Qm3E+A(K1 z^7<G)q!az*KJA9m9RMAOe6E~ugf(a_mHY&KC-{@z;~H_K|44K1NFNNlE(YJ!P>N|Z zY5YyrX#SCvU&9RXo<ck^!uwx0_rtUjaK3uKsoQ^Lb1z_Y0^&~^;{QW)|B#a(k+XEi z($dg!Ndq+`hPDq!R}#Q!9lZcxBXhR5R*o2#lV9-?*@t#)I{gP3E$+ZMg-oy0zfx;r z6^<VDvwd1A4PY#xb6#RHTJ^!dl?+E8JOSiYr=f5p<8(o?J}dej`TL0S=ugzOsyjrA zE@Sdi{6}_nn^I$)@a-hdM#K-(k$XV1o2D6!M0nh<!K-h{ZD+%6Rm+T{Q7vC9F+P_J zhZujv`XqIG9*TUItFXW&Ly0I(Vb)7E@S;Y7qbLp%sueLP!TgpI6q7DcxVA<0qy#@T z<RTID$+iULz_T0uj}4Dyj<kV>3>PS=-6KK9ZOE|Rv5rcvUy7XIx+$&8oR*@Wz@fO2 zA7kz<*(C4ruVpdU#Ls|FZqX*VtYi~DfJdHYq9!`NrFidxC=s~YR|UvdIw(;i5hjb8 zp{SkkFOf#vzZ5&)0p}mY&O(syxGUQapBG4hD8*<J7^+nz0JM6?X)T10q=Etc9T?~K z9E<R!koW-{<ATZANHLrs^UWzQ*swb!ja^XSrREIG$QEE5UBX3(R|SferQer$fyXVe zn+v9{XCLNPQ(#}w<%^^s+<VA{u~~5-bM48!1e)(S?>}1UeA(nwfRjJ0=8f~$6UV_M zFr5E)Fg!ZWOO<B$6WC95K?1{haUjF+TmmKD({g<r=oL+=2tbjEXnRgse&u}mgY#vD zsgJwm*g1V1s%l0(;mR7w^+K9D%t~A6PoF+G9Y5zzAAD}e-^Ci-1uxyE<GdF+F9z-* z@#vkt3MAlYM<XI+{qlmkQ#g&iXdkNh>5M?=A)KwcBRIjfr$Fd@=j}G5xOj%g9(|h| z;)O}_IjZ7YeB{7L7}LkG3UHUKMJ+ScSqtuxUr1^yuAz;A77P&E;Q{O5Ec$!r-8jL) zi=i@ez0uTZT9pIXBA-KYLcLsBVIXle&eRVyWM@D|-*#MO6J6v~@}>j=KXMRo&lm}6 zn#d|BIudAE+|>!t=f|MmB6KQVodqRS?Yg)DKU(&$ZC{t7@c*%W9ft}0GwsV+k^gM_ zXVL#-`~OGyL;KKo!Sd*F3+IWf9D*RoKEdrl#(F&L5GV6sw+XzkeHbFoa2voCYdB)C zWP8wU*XH0focM&}oQil5PA%@wkn?exho{E?Is%|zm!00t+(+~x$TZ_Sd!8Th20oOf zO35o#9z!v_&;05X&KLcfFSY7*1R&8h(!VF3pUyjNH=!-!u%&O+pKyFBb~(W%Uu1ST z<>FZMwl65|ak`&-obs|y7PzCM#gEG=XuE<VfvGn&4T3G`JxlhcChJ>!Khu@5yrY;$ z#fB&BXDYau!$Iz4`U}p&E9fjSR<wihL);bct@;tAfn%|@I8U!ZABVi_jHGAdH*Vo~ z#|{d^&ZQgB`>=BCN(#ge3`?zR!y~S!bUC;bU*|=irv_7>2h{?oO#GET>L>0Mb<cG3 zko4gF*q#;~76=8J0u~CJ3VTJLB^TWM0JrQm1$ytbw;i}~*e&*&9l(UAS}Y#%0hXR_ zOBKI=!_yqC5dGq)pWfJ_W;VesrxfAqvB<i?{qiSx!F?&YE0;H+-RJiHIJf!~F6zXs ziX(6a+%}1+@Pu<V?+mAYLoRV<1I{f2>-__k;@oR*+!!OIgXiOm5UC@MIEK?`)J0@3 zbZ6SIu<yz=0gc#uO1cA-WdjsnesJy39<`sY*s6lpAL?4BHTZ))r<#Ylj^<hY^Q=+W ze)vRs<Xo_6>J>Kzdp}}}F>K3uU4f+l;9rkG_8Ipp8F-?6)^dED6u7TbDWdGk>5a?? z7JZxb<l@h$`<q`#4_<~%{iwwb>h>=w1Uh8dt1~$5zF52>=MVFq9Cca#>E`=t%~4MO z!us9DW@P=})i2{iE};J>>-T19<$rJeb^>&Z`n_rQ|IhmU*VoTY;uQby>gQ+T>;CEb zc?*vF?{9xk0=h;0yt(uLYyIFnv~{c`9J`IPtK;pcTWDmLywH`{b9MjF?0vXTfkTo| zTWo2)B`Z)gQDL7*FHC|IzL1VRcV}UItKNpKVO7F^RB=fIw<;9A&<#-UBX33QUYtCf zcNh5^{D<);L$P~4kQe4TdANnsLA(|)g)f|&5*(;{#R=nVM-a#h=evNIXFZZqurf5b z3ra2d3*gz+BwUv8Xc=<zLXYqkpOPQK>9Dx1EyTzKgIbIkprN+GzDlZwTDy%TeUP1t zQwsAeKlUT%hT0G9y&JbeDBPfnQ9q8)n)Eqp93{)84R()!yF8@7#z}d{xRUgkI*fLQ z;~|?tHqt-l|Fn(<;~kW#CLUn~>d|t&-zLx6P5TIoat6qjW$hSI0|n2Ef-Y9=g=Nie z$(tDM#`{yqn#W_)SYuG{t?rT&qFC0NqPS65AjNGk=ogU{h&wbJ`-A;}!oqj)#lS}3 z4KhKCLIn`dr+GH0i{fHM3m+|`JS-54Q^a7%_reQ}!JHAJK%HLft~{ZBEG0{^!E=U& zABBb=Nx@wlL$i;%i@n5#)Vv#w`?QUDXb#*Z1%{Hl_;Ng{v*M)O#pfc0W=3twy*})Z zK__wrB+>Q3{^Q|Yx;_ZXI%%ff5Wms9a-_CFASH4Rk}>X&<MnBQw*}Kbaea&0U~EHx z7FmZZW9M=Fy=dRI9c;kluD!3yp{ataSg|<Jfn`HeJ<%P;S{BY_Z>DIJ=qXMiV{qrL zJdCO+Gn7UD|4|iPKh#nYe03!MiFUB?!h-u~^1<OGuh8Q=O`sMiP7^4Zii8N3N<%-+ zs?TspQY6KQo};y32O0)PXLcm$IQn*+*)L;RFczr)nCL2njtDX4TJH$IwG8g)Gc(}n zWgi<Go{Za9uiVZNBrXUDV-)G<Ro3`ew2QGpTPzeCa{w`5i}7VaXEf1Xa=ffuNS!c} z`*D2qy;YCl+M!MBWqO*<I37leo1E~$=?7aO6Gq8+<=M37;FYHx4n`fxj1NGgyPSi$ z_u|$;`@($5ZIKcfQDQvLA$10(QU(M<XXS;Sg26w9c<({njr7wD28Ly!u6d!`dj&#2 z>gNkRgfmtqXVqJqLL*agT;&qK^|{wt9~znF!%5>G^N9H>ueCWevZD`R%e>Ym3%g)d zhI_TU&IkB9ueH%ST)p}tA5JHq?hP;L^2VfTKl53K8Si^e_^c+<DfMNp_ExWI<MY({ zJclzIT$`)c;-$&w+T{(;Jc}q+Q+3@%KGz;sjSn}USMSeogY+h^`x6ktjdj&)F9PzA z@a&$N{<y4JnN8K}NO4HGv^NvIu3D?f)8Ka<$*lKVyQ){W@c?ffh=NkY=W2o+UiT`m zr<qdCzCB#pS<^b>wO0BvcY4lvtJkz4hSzl{01o`F<Ddf$Je$Kyt`#Q7WtID^Gk$Ab z<_ZE<*R}C%a-H$HKmxZDMl-zbb?!CR(Lv!QHwk=A^(Wwa8+A7a3Yr_!!#00-_C*A7 zZT4BKJvFX_nTMehPmRyD&1;<mC*XUV-`eN}z0U@PXLl2N4MMLjvk7v$YF$xiAh&vN zhSlVCul8CyJq=LCxrC&`GV4VLkl*KO@LMZz5;_=M>vh-ptwV#t^KKA8DA{x7_VAMS zeDhh2nLD8c=)&6Rg=`0`<t)-V=C#(k4rHzbzGt&_6oPwQ&BzH<M>4#wgP?YuFj(UO z)2H35L>eyuJln#v&(WlhxjwTF`&|1WWabH|uZ`EjGl5(i5yh7ITv4yJ1A?%`@Pc%W zg(}Td)t|63T`SlY%lxhbVuE$P@H}lh2YjA0!Z&_>t^<DSC~0_IM?=A^=|0alFjV}& zKs|X`)2s2X2Q&QPB{vGwJ3R+{nT=3c8$7sBy$7`w@I?O7{=uwSzW$@LW`jtn&od&c zl>cbeWuR0_N=VMjDhtp1q2{>J113E?kz3Zomw5oJwDI92ek8dL_^i|54E1@rz#@5; z>nO>?t{_FDFB4Wsvu<PwvwR>m%e9l}5C92Q6l7=hpm_-H5tyUTb0G5o3K<ffb0w*w z>X0N&#`TTg`pyRyXM0`W`5?+1mU0Hnt!cyNJKHlkYc}&C0^UG-b`Jp`0%_ikZheX` z<wTq-di~nymAK^)x}5oC#4QJIx!{%$2`{*jxM&kz&p~M~2T=*4)9R1g_*{*CFpW-s zj@Jb-zwzw!dv*!OpR_?+^Yx#cH4DH!U{nK1hgv&ID`9oc^?5d-@HtS-9K6m((Q{Dr zoF0D98b2(HtqkdNeArzqbv~C*<*fa=fScPRJiEUL21OtP<i3HjS@*7;Rum5AV&+0? zP_f^$&jkg4Lsgf0sA8XMr`Ou<_k79*>i3-Tx{i3OKkhLkJo5@IF}6k?MNRrGc#YG( z{^MBd{Fy_AyEgf)ZC*G_uj?=r3AEB{G#c6(glwcXQRh2-uC-oI9o>=NvqH4*x7Ndf z(lde89=C^!b?sO?JUeh{^l8s$C}TEM<8#3=t#0GDfL#ah2A}6^loVcal@@xV&$Auo zVb%IPYas%ivg-_P$zJ2B?N2pXt6ax?p7lOYwa*i+Uem)HUT~3SQGAl?kk7Rhl-u+l z0dH?@^m|VFJy5}#9)rURen3FKRpa-p_E{UeaBFDgt1p5%yU^@6_|V2ny{IDK&OyI` z<BIE0yw|fAP{co1Sj4F_(|!HXc3chCCU`N30Czo)Rgb!!hkBf6t@WHiUC!&_*#udA zz?e5AT%2a3mlAyzHDOgz3&fw#)-#{_05lBtexv}37C)a&cs_wj;Sfl~+T`<$LyfQ1 z&3y&r1zc$lczW~{AW#b5?>aUpyr6?!<}9n4^vXqbRFLbCb%vc5$V&StgX+krxC&5% zYryMl6kX=`91kzJPAFM0VDRp#LHV;hCq#ADT591inS=sn0e6<*&O-SjGjs`3FmWi9 zOw3^mnk(vC)kZXEttHt7ka__eBn2QF3()L9Z9xyhm%(<Bu>cBn>T-^5h)Zr0_F^ja zd%l1!p(l`?qxFOqN6uG}@*FCF$^!X0J=g~$Z?22}bWV7IM|4~*sxoSF9rAl3e$RKL zhXxBhQHLZYZwtJh{rUw?vBGN|2i>_)0;<%XSq-Xa#>jvcKVNdu4C{msZmq)Cp$7T` zWJQlmsC6973J6F>Pq~T>a22}P)lg!FAR$QjxC1naiuY!oq5(|zWmYk0>9CuKb6AA# zJVbINO^0$3EV&xInX6#GLdR>>dpp#5Gn@SQAAWW<I?4uX1s!H7?SU0ee_4uTGR{Zv zX!j#KyjC?>1;|Ek=6X0%;cX?9(P1-Ko0Yi^jFrL3&GL0vM@3aoFYJlRdZ6W^Af%PC z(vQKrEue{#g3qc(<<II+jXM;iAMs{ZXRZepOsT^viZ>77vrKJh`$dD++O$qWmA=ec zzvoLT@_srRbQ>MES!?J*OW7HL`fS%>5S-n^Yi)(zy{`3W@3Xzu8gJ%FK+T6UMW3!! z4Xt))@**zEtnzi(LLzfqP*EKktKYNH2TxQ+KSr-Ivl~(9&pIIBtP;ltr;*7Rr~^XN z23NhbaaR?4(YZ+AFP!KRQ~-FLN4HbqL&HM1J&)OBOJ4jSf?(t09$<SO^iYGattU$Z zKY$e9;k9aDd#)2cR}FB(OS&_k`hgx%Pvt(SG_!`bnz_n~`Z}z4t+Up{vRvy>4-7Y? z=P9?=qu<9%j}FzeuyS8!H4LV=5QAsWtVS&$D5G^OaIJ-XgTh+B=MbB7DSe#hq;;HX z>99WYGyKlWtcH%!3Ohs?>#XXLd77=3^q@7Ls~XH|wN(4U#iBy1p+ggTxy<?w3LMPw zxu87VNucYIAjehZN7#U#3q6cC^C&tQ-JDi;IGlOH*I_R?pUVb8U1-nhs_`TCv{w2( z$_sl$Cp6uMF*baGk9EI+@e3LbJpw&}-}5zd=Ae^g|A!LVlVzXP3>x0db(zPg$qsni z?9Ht4B4mf}@Vn3|*`Cp%deGlVcXkc&&_Aqh(_uyCT3-kBtTl+j(cPdDMXxY<>2Pa0 zK))MUWz_O|>4i{9hoE9V1}LCB&$Z64!;U##>oBTQ`@GTtQbq%m220DV_jRZzGCC*3 zs;+7ou()6aNP<k|Uh4#eo$k#%OxFQ%5oF>$JhP3E;b5ghgBZM!K_@i=4X#Fvo`W8A zj#N}B`c3J5yqPCJ1b)GnRq78HrwA2xm>rrj8^8;-i#p`c%Ow=cNO3j^m7z7lgTSeS z0y`QcLDv^<s(yGiUuLlbmA=!DHYiS=XmiD4;E>>RDJL2XqP`WNF&B**{kIPwp4F^1 zp=53L&@uU3D`VD%-Vqh=_w1$>%#ym65SC964{4yr?h8zS&bg$6dLo0K^`1jiHEkF5 z&cPtOl{klae$N(!cceKR%9YlOsC9${oeWr|%ujvj9LhnpjZi&IEh0XJQ$WlC-(4>K zDauEfN(-)IUb!ww+}b?gW(Y2V6PN}4(kxE{ecL<<Re%dW!G;5cBayg%>r<ov^HRZF z>$PgBTd(JH`XLz0XapH(z|=CVkWu3yD3O6AJkRYI&=SuFgSQTQR!Y3YvDHb~WvSnV zaBUqr=W;~DzVOU!DFPj*Xv*sX+E$n`9^h=|c(%e>lvzjc|2$7Ee1b1rdbVI-{0Tza z81IQ!p6f*r#}NVt0c)gP9Tq3P2Z5L`T%4|1+CtgkUD<_ILC3Sat}PH7?Kvtf-LnOB zF^KnUudV~yg0rNs#NZMUK71NRA4o<?8$AaQcf!4d=k+Hvf@z<1#1D2Ei_(^MP_yN( z9ez*LZ!PzF5Msh1u_u`Q17i5Cy%;w7J?OtN!V`npNK=@H(W7+Ue$Q#Yb<FSC>xViy zyj+bqd!AUD-#RX1k_aMs?O8rycd5fozYBOW@MCa;N`eM4qDs?j;!|0J*RzEYxoeqN zv)^@!&SS3MgPyDj77G4>Fk7@Bqi00)$NU&Qct90_0t<DW#Po!Y0mS86$2{wNn4Iuz z_Mp@3;X}zBA%$lSWU)RA&W_dV1LLl}aKE!X5r$2xz+1TV91Zg&>cetWF?bY%D2E}; zav@{8&-10H+S)=RK<{4<WN)~%6R}-&kbj;ie{~zz7EnKg>RRGC&N*2EVv>Y#)(T4C z!h8@)-|AT}7X1an1$SE?wy}=LTIR!lb-uRuXMJo9NwqkA#3>`pE)^}yaLi;o?o(OW z-gUYEv6X=S{U-<U?flH=i)XDI(s9Cw>(W;aNpJXKL#?@}ZRHSbMoLN1*RjNB!1VWP z%<*|gc&$${!H2K$_<kK4)+L;}KD*i)(&c$yXk<5^wYxgfwpv|M^u=widduI<8&1WC z^xK}t-A<D`UF>PZEIFp!eb$~l*MT^vy=x+O)^lbp1y^u}hr6PG`!EMgSao^ff{S~v z0dBjCaiA*f2_b7ouDrS!;CU9VygaC$!C_iZY{!bJK<QoQ&0h9==h!|Ls}`Nzo#Eg> zS$23kK*NJ`ifX6&vcG)xOP;ZGEb;`Vm*peu8EZ@ALA-F@SxboT^hNu6jSj@_k@02W zLk06a8*pQvRqg&&%`qI~SCd-wMcdGbU#3=n(RSnB=_6866SyC#s41;r6K)A~7e+gp z`DDIff*gyaWLFC(w6TS(8J|0@Xu|yWK(5Fu*hYYKxr>1Sg#hqW>G@`>#;UH~+veE% zP?uk#OjBMvd?=9ex)khe<VKxci|>ar3hvKoT-m1J5&WN8@T|4oQ-#WDtVul*_<itf z^NGG_Wolzho8Z~3n3ZiFwT7H2+T#kgUC|y>&yW_k+NA0`bZ`P}I%uX8;DY*Pz4-mU zXr*gK+mt`w$3lW{;ffy+DB24e!_Kh8;H$cbqP?leNsUZ~YE|lL^L-!Rua23IjCbKC zpENEE4PDAbaSix9<xn|}$Hi(p8~`?{22~#V;roYr^5AVAW(h^=EkJ=#r?-&IMa{%6 zd+`a}kHWV)Lg5bx>-mU#H5Jo&)Fc1+yxZ}t9M3%dl7D%YS%Ynrrpj7u;56am6901B zPEl%p9cGrpdi#v9fXs@*Ct~dE<}(l8-VEVmfH?R+5Uxn!XOO2I1Quf{Cu|k>QUKw~ zWk4vYii@cWaTg!wBHgwV6+UBKCq(t_GU~4%b0IaZJO>fEx~B5<C|opG{?Zc=y@&eM zO47sq30FZjn$~g_fWoXAfl&nn2(`QP0F)WZQGw8`vT0zRC<C!lzwm_t_`H!0WL&*C z*j?G6v7Sb$SYM)!0o$`Z!kZOsmeu8`HRNGA48I5UQlqNzZmP|*ftS`|pNTIkLv16V zU7r>%Ej^$ft7Vc=EcNkI7KAS<#Y0fbJkk#H>cOlGqH$9^DuzGe>2T^g9>v=gXU)Q+ zc)a4Q*?6Sav$g@c953SguoD%J{6p#-{gk5Ga|M2Qf!T0B8Fwb35sYUpA13kv;D!9f zpQ;16d!aAuIV{Y{;{{8Tv+}(ayRrOe5p-vEa`TDU`S|4xqGNc2C|36QvYy2QF4y#B zJ!7S2!QL0Gg0Mv=JG)=S)lJeGA?^KH8J_+4j(RwHp?rss^NwXb4=#E979<y=A*ECv zk~L4e)YqtylB$BOVpWxQ+{BeoyVN>Kbr(O3iYk1eQ%b?2p`mMsmh8uUyeJ7PTGR(@ zYxq)P+r<ORPc<*bKB|<;W1y^SJr`+W8M5jXWG6~h$Bn5M0YdH8N3}8Kh33+jq@4c( zm$>MS)^r|<#J5I&+?+CK(J-gE#OHZwM!pg*P%(Zq5SpBoAxoE3=2C#!R)YFq8*SD6 zke&jYsh?_^V#kE0IB}wSi-p0C2GFt$^!#F+NiYc2kc*|VkmSbwkc1`*n7CIc?$XjL zh!X$|{gAp$v`{KuEa8r@4Rm=gEu-g)_k{TRTnIHwCCsg4$^Mi|EFNY;^YDIhv9(^O z)NayV>XpkYSF(MFp3f*+>r$7mz`Dej(PP-(C)@ovDcni073mE)F3T1HC>UEV+=|dj zRhtR(AKb_iYIjajDt{%!8a5Nuf73@$VJP7WmaWVRp?T+pNB3$swB##y@gS6$8@e$N z9+7n$n@EnDZ(M?cCFF*#Rb@*^=aQF{IC?A?15;#<S_obJERv~ULdP9_6`}A4N54uC zuzrqE^(LLqTO7~a=fgjtWIy9vCn?0bR(&qs2%0f4{GEse(RRt@d=BHt<F>3`S|0(! z<FOd6q6v@cEeC<c*vE;6$M2A7>L;jG+ov;`>c_9UI2&vjpZ*}-GSrsO1xLMX;l<bG zTB%v8k~Ct4g6Kf{Z8}D-dSLXBL)8vf%h$1laX9sptvd>pF=ARrbVuu+iV9eaec~yV z>DhMcenKi`L{@$XhjG`WhF@wvbLPyk^_g{76yh%!v8u%jR7cX^D=Y;2zG_@!+$P}m ztxu^6gvol*wzk}kY^_i|NGsH??pqoxdlhj6!qRp$6YU4i26G8+pgSy?Zs2Xf_VMJ> z*ji$DNs#T-RskwEX$2vjm0?<an!1oAZKUwT@#<ZX5<3>C83Qe?K9AKJ8jQo{ZJU^v zs;f9|6Sf7~RX)Hl3f;#UE&d6bfb*-hUXo)kGsPli_l#@VN>FLTl^;zgk|FKspqjgw zJec;6dSm<F$rc-Lp+AI`Mb2=~M?5W)X_Z`I5Ndb#H&l5`AJGg(Wr2ikd@&1)Q`t_K zKZA<;Qw8fmwsg`zD34grF4ciXigqanOJTL^y;b_Xl?P1$pafo_PDg11tvqP!xQcaQ zM{;U69X$NYEQSMMB*YU3p|0DgXEkUM7<~vmgX7zM1Q(0jJhPVURx1wqHIR!g)-Ju% zXfnhrb7L`HYj1A&P2efd@RX`~inIj-pcCDoE|cy^Z)Zn}s-acj_TE?3n7_sNhb`Ou zPosK`d(-uQk)b79L}<T=k<<%925slAm`w`b^SaP1Bj*7px`)9ONVT%&DRf4(W@L&! zj8)^LtUSvYHZ*P<w0a6v9KrQq!dSj|jpb?*5~Jl#Qx0B{V8&0fr=VPF3M@DBAYN5) z;VEauL^qe|eu?ABT&vMs+xybKUi4c!{!d4F3Gsh7<T3sSsl3p@_rI2Ip#e|~@<W~8 zMgr@Gc&uQ%vXRg3;1B_GLqnuH;24X4gh>He`#H_=oNk`;u#N!hHS#c+L%hb|2d0bL zEQD707MH4EKLt0N!TfYP<RBZ2_*I1M1nS73)|skau@USbU-?=22=HOj7!B~M4Eje9 zcNcd?l#THIE}?>R!ce^0geJ!D{z_1572aQ}{`MiMAy$8m&Jiu<8)>@ni0oGc2(`Oy z54}QSc)yR1Si<|C<0&D$FJr@oBkl(Fc^3QkNlZ0l(ATOz7*`-ndyUlhNWOU2185_n z#!#m(ztkRq3QDGNN5!hm!hUHM4I&|w`hfDjw2VfS5K85s#<=e2H-8lgu+B$)xd4w$ z)PoNhm87W$U|W)k#nn9UdcS$kP+zh+vuE{!cy7@tgyUqDk$75e(Z0?+pLc)sTxXnG zj83;j9R2`wz&Ko@?Ttf2*GLpRLu5XvZi8cRM%xGB(&UEf%E=qd=uK@$n$+!eEFE=w zws@0x-7Y3TsNJaDx^A7(b|X+swEZbqON_SvOanvh-o)O<MBCnvfRTb5lH4WN!?9pq z#$UW2w<U$Jc2Ec1^ZtSsen{4S6#^6u>{8+Gal_p>D$p^oyqF>}465uJ3o+6($A8+@ z+8VzA8EuVW;3QaM8^iA}fE^ht-1#ItRujQf%Xs+$0e~HZ+T}_)E&IYFbXCjX>SFP7 zW>UB{gu@<aNVQ9KMoBFq-TP4x3i)a$g=tyHt3)o6K)Pi^H=*`8Lj0PYHpu_+&#lNm z4P*oA1!!4BF-Qot3nne^Qc??pS@qp~kfOP>D|%ikWtSQTYgF5qqq}u6XlFxvO8mwy zbtRiFVJ72<c(!h7z5S4CTJIIKHsjv@r`Fru5M7T}tWLpt)ktAZ`!@2|6%f&XXK5LH zoen9`bLNIdqTB1VnAO6bT7=2#68FlH0nmMPOPTZj=-7T6tV2A4`K2*vy@Aj*3H{1F zNW-*O#e_$meeUt6pL&Rb42R)iR6Ynr`Lg;2Djt98(Wf7J_>squmLX{akc114kelPc z<QU!nKl0RQ;&xN3{>c97>Jz9TbVL16n0TY%kmUet4GL#z@i7eD7ykh5;UjEWI;{aF zoftWe=YZpRxOvXQchcePw1%_3?jgC{wl6BxQ5+hBXe1A}`zn?no1MyL{UCBjY!aWE z`jnoNiKffq7$#l4`X{7vUJ7Fj_Fco>#ZPlIi|`R$RyjQrbXkYO)#a!}c3E6j+@j0E zh9{Lu`s}g}qr0Q+_owYU9EbSpP`lFYY*&e0mJdS~?Ib1xIl)Qnplg9sdj#a!Wl^f6 zf+I0MHYsq7SXu*^5wJw`B{F$L<a{yy{(zB+33ckVLmNM}m_+Z+3RV}BSg16MHkZ(K z{f%<Jw2b!Y=(<F+>f1kv6l@E9`ABuM+cNifr>Wn;#B?QC+ps-a-5?E0st~o*i{h~B zlEYw8O=*GfxNex#sSRW+_q3N$B(`|Ei|f#P=7nE4Px>_6&iQQDNE<4&hYtXldqEN| zzGoMUXa<gCmzsi36y4b#$*DpPHY{N?*|QyE^X_0VH$22uII%e;cm(}NUU<CATR5c| zifSl0oSVJVJ&o)47nMyOoU%9rhJriQmgc{V*x}#dTbDMWlTf`rK;`Ynq``+1k>M_W z8+wlKSA9V(&RCB7e{%tfR=l#^*BAE!9dNm_-Jba4uK45U@yD(4#{==lX#7#dACuF) zF%EEj{LvGCye9s5m3dURvwlJ^G<d2O=actg6w|}RqMIS$uOT3^n-=e0W-<}>o`>uT zN*dy}s?_jnW+1-$r9CndS6BiONk3LoSP1R-umL;3QFwLAhCtDlwt=gOnbWx3wW5$u z*Q_Ya#LvGKTnSoj@PXp;=PwSlV~+iOBIRoNlrYeTw1PvJz62|a^6{dzeK&h=u*rbD z+dMKZ^K%&zE3kXiRrloYDQGNOn1a{H1ax8OWQ$oxal5*cGQ+O=(XOsU<ELFkMoVM? z`>VVhz}T;$&e1L>hy!}ZxGEna3Cv_1rS7oN?ryIAmsISL%d;>=vK={jA#6a#Hcr?U zl!3MJIQzc(n|8S`ojQV2^Q=l5T)_In82sc}FOQeEm&Mp#A)7SQqI<#0P<$qmV_!ng zH7)LmoTXHYItF$lIGG5pW|ungK1EKL{d!XRXlaggl<~p!6e5n5c%a>%H_@}Tj2P}G z1W$lj%pEzE*ErPvHVTULB<VQ8s|h|GXPGR%0^C)OCpaes)f{+;#U7^3ilvp&Yp`<E zH}3)MbD~krmGv=@Cjo-H=NaTix{^=v^zcL1i%Z(2I>G~}8>xNc=;@^F{(KgQ#XY7A zpvGf1ZvOi{=3a6My}rX(3nS~_(QlzJdfNooT5SL)5fFUlla)LuL}G`#89Pj2xr`lj z=h!9QIY#G2x2tvkg@_8#gX4QC&R=Nxo^T#RsH=PRODFc9=~N%Q{-qP=xei}jfmxX5 zf*zqES?)U6T=%M?-N)nmODk|31><PY6~7u9(uH8|3E$w0C!fyiUUjU#Xm?{`e)<Hr z>u~m_sTo2xyXN_>p&@C3QH}08Y%X#&1YAu9p65Y0`S;@c+Gc!TGec~CuU*-O+g2B+ zqH@%)@x*o$@P&GL!w;r<SGGTjB<=txI^E%U54Hs~XDz=6-wTXiC>)UDv%U=a<*OyT z=Y#5AO~V%+<to^1_gxkIzJX0tQjCW4n6f?(rMT+`h41gzksr|c>DJf#u#z41;H0vs zwk=96`tp?5>S0rp-B^X72!F9Jt)vm_`cfyJmD9MQZLl+<706JuEDclUIdCB(vQiZe z>u=_^?Jv>UrAGHS>htfzUxBua@489w_4x_1uLVaalr$n9z=<XBxYOUn|LOr0TvCOw zucK8v@p{xV`RRx&a<Rh%=WK##o8bLLO&x+g!Cvrew5yKM&xLPX6_;A%Pr*lyW$Ajm zwa5bjI(`VEpgQTRqNXORwqQq~=(MZ*b^;cyX^O!be+oM96+M~an)F*CKHt<EKF2)+ zDrJx#6Aa+VW?c0V;&SZ5#I&NxSsh(&U%gdN^4Je=w(q1991SiddcLt+yq8o>=|(Xw z7lLe~oRx(5D<<tGx=adj>o5Gbh}D4ozIW%1IzT0UibE)H%!Rd?HKP1;Pc_4z2S)AB z?Y%$Owd1+;=nrFYM{f3xXL|;$y>#Cwq&va^bPivGB({5-o$2=X5+>SP2$3e|U3_=9 z-iD-x!Bl{GN$Aeh3V8Eo_p0p3RJXMnaV9IM91d0E#@nlW|Ci7IxOr2mk|zH<5Q2RK zJ*dipi!nFfv4YK}WP>|U0}i_3tGLm7QBx}GAy^~Iz|0(S$+Ml0Jw9y4tE~-zaO!o^ zjuYCi*+R8Ow8SIN$Ukm}qI*vXxYx=V2%#=lq{%BJIiDJc(+^<Dg3hZ$J1=Mp{}4Un zXb<*!4s0IH8})@lTE#=j5HyyQf^x}r+gv72@uQP=#ryBLQoevvtXdju$@Ym)msCxB zf=zH|__<W<OrqBMv9BtrLP!{_!~BZObgWc&ASM833x~KD-qO=w+#JLTk3E$+D3u=| zXTJmgjqKOGh0Qqyua)5jSkW&xfq5T{`vo=+t>Rq?`r|T{?<f{54F<PSZGV>?0zNBa zkHk0hFIIKr7|hnxS4;bZafY5wQx~9bgfcz}_COdK#AXi$6b?&^=>yvkXrp(F@+NMu z_UF0w2V7Bv&#A=h$jp1df=wZAz`9)}P=)=nk;wOF=<|FaTPyC1jDhXi@zZ@R`X_<! zs!O-w2mCkitoCo931ep`)pn6|Voz-6W#^LT+8uDoMV4uy;i<6GyJdI+^NstPbFk0U zw3{+dRg@JF>mzAjL#-8<-^CKw5xUJ|DGhhTrK=v|daUKzdHTaIx^hQhg@6w;YNKQ| zK(}aDQ!iSrml}kLPv%*Nb<)j9GDdZmFO;7ax~n6<k73*D$81$YM}3v+`ZU+|IUD%Y z-$L=(%M1R@&uO^(7NZy@*TMO~#AZYHz4ELkN2l{>*+)k}e`rZ#u#4Bah5)v65#wu> zP{#d_5H!)~r13tC!dbi8`0jfEO2__AtD2S^`AjTO{3N{LO1wd);CTqaI}#`EkD%WJ zPW`gp0@i9)yOh$`pkB-CLA!_U>=+uK=3WIqF{;s86~God*BX5|f+h?{q3sTI53(Qn ze*WJ<OB9A70C;DE?$MG@tvdQ$@=1DkFa8692kWR|5Ka^;wA8P3r3Krwzex>VC#j3) z5>lGa1mt@*Pz45pE84nQ^>M!zl9c-%Kpoek3B>KqEK56Dxe(N(HDuF)RZYACJF|V< zYP#22!B+S%S_Mn!bl(G1GfpESzxO@hslsEdJ?pLY@E*ss^&U}gzRgM6gE-woHN)xC zMJ_-IxvrgsH(%>6{u7=nuf=~X<H0%Ny<~06&Rn+-XLjI}kiCK4+tgiJ1@2-_Y~tf6 zo!tziVdo{jex?*x1s^0ow_J;FGX>pa{BRuZUU+`tiED%36>kXM6f5co%?nd8)^b!1 zi$XO?X^}wht;T<W_C%~KA@zdaVTqn?>6rZ9Q9+(De2<n?z<V@Dztnc2UFR_<l1t#y z)a-KGiW&Re_kdLsv0w!;{`B{pP5hq2gQigN7W=MVSg)6+)_te-m4-;7=%ma2>R>#S z>_^`sUsc@GZ^FB$+3&$z4QA85*{5H8%A0-AUA%-kLQjJQgJ;-cCm@Q>UXB%g?$R~L zLLE%6#V^J(-GDS@h2M%8zY!R<W@y;g`Hbzaa*LF!D2geFiLPr44tt9tE^qenf~{Wb zG!Q3a&T&N6#io!$JWmp&i+P4sU=%XK9na5(9PU>iW95xP^s++MA-axvG5l3!7(N6> z!M?$B_+FQHMQZ13-6cN2`m)Dmb$jt1PgT*$Htt_n^{&N4#i;E7xRikr7SYAJGjCCI z^NTm&|5FlCc-{V$Eg;ar;^dwLBnf7sf0al$`iI2+4`0{TvQeMb3pVePdQ4Y7_%%do z)ddgwu^3}|2qI!esVd&li{qPgdGtwb2Rir>D?N@{%&wjML$oOmLmzMUr*5CZ_3PW| zC);|h3l~9TINDF$Kl%imrdxHkfVE{fK;gw76g8b%#CXZ=$C0%5DLmL0@n9`xs$hGo zg#h-UBYwu>Qg{OK8vT%m2HRyZeX={i5EVWFQ1F{%#JnfSPYbkt<9xxNNbSK3@3OG) zG(5c7v&t-{DTEGK9gLn@*fTW9b<q;GatNgZLe-3GRlyKLE`)rsI%K=`Y|w+AkF}m_ zC;n*YsMFE&%k1<8cKQt>8$uopKN;OGz0ziyOvi$HtZ|j)tt-`K@W1G#DouS*cEpj6 zLWO_ti11J0L%yp3o#wlXPMp5$dBhy2)d<ZhWD`dR{we{`9Q}dazrrUTR6hb1*3Aab zv)Sxq*qpS>j5G97O@{9#rm~Kx>9bEYXK$H0+J^`p2fGg)wV%^}IzGUc*-;xwdgCnd zPr+NUmJAJ$hcf}Z_eO8_&Z&KPw+0V1`c~Zn?+Pi6#mJEyFpIc<*Al}=Kd9>+mAi5A zQn-2;ihMcksIqmt4Q8Q#hwKRTRw}<#y?bUAstSwjsyHeUeKA~R8saFiBWE3}9=N&} zb&)Ab)A_6@Q5D)Lh5*fzzXU)`T{}g~R_&xMMqOn^%_$YD!QPa!j-be#l#1PW2_7kG zZmfvnX>#P)uD~eF!gM)Zbu)x0*${C1YaH@cbh{-Ni?Cz*tjI`w$FU0I2LZy?_xHR< zQlWm9Z}KDGy{_NQ&<NTa<M<|mF9x2f!hx@*VJ5Yp^V0Mcm_fP@7^s=sW%74%4%!N8 zb%&|dG4u~OVnKRV^%klcE3xm1O>iU1Ef@hckBP+_0$<q^!Yr-Aq@r2?99_=hH!)MC zCSc-|8B0^{$-(&`Z(thgW%4hH>{`D>$<a5|l3$}Nt5%~fW#@#v=V3&w^{4UMVm>D> zZyMxl5BY*w_<Z&Vo@j%+D(g{b^YCt9Ru3+XT`X-Nm)HD?ItZ?nH_R{h0a`yV=5E`? zm?r+xejg1^Q9mY!zim<eOJ|CpIXDpaD}TZiNpseY9Oxikzl8&jp9QAe#qVITUj<<o zlVZ$X3kPo1`7Z;zVp@{?MLK^E^IuGo|Ax+QL;BAp$)DsX|Jfw@_v-v<IAOKonI!qy zrhL*Ln<T%x&aWXpzM!>|?|3_r|6$^fNs_-+=MN(O(@F9d>3q@O<4N-0(D}mu6G`$X z8GO=zEJ^;o1|QeTR6Lp_KU?QN>_&b@lKk#Ee-Mtvt{9Re|9Gm%e_1EwrzgqZs`K06 zRQ(Dr?r&)yi*)`T;8rlKYMK9r&aXjU1xjj_KS}4mL;2e$$-h_UPow+~C&|y&`6B<t zN%Fhve35@(lKkUs<MM-tR{U+%`6B;4N%9xze3749SX#-i^F{uwB>9s}`Lw^bN%HSC z<>MBUiqT2(vrYM|ze|(kcQ@s;{%%W>f4q&zFZu_KR{U?(`J(@yCCOi;^F{w$Xwgc3 zoiF;oGD-d<oqrkS$G6;8`1k7kHk6;AUs}@7*7<uV{|}Pnch~tfl>e$E`Nv&x`QgJ_ z(ch}`MgBXJ<S)|sB0qR+h5v@m7x^zsl0Ql3?}6=0_|a0ndv$&d+xH_$@UwNk)L)Mz z`Q3HC@IN?7{_zx%|6%%X?g438{#Kno2=^OQ+?OPOk<J(Y0Uy%}{|%il?Wbpw{7E`r z<mX!8mgV28^F{uDOOl_h^F{uPlH_;S`6B-<N%D_3gDdPwp!~4GR^@Ni`6B;_B>9VU zzQ_+B)e8R&oiFlVo+N*gDIc;|;LCI?{CiFLsGEvWN%FHz`D{OzB+2h?%4hqzHA(*Q zGa|p}pPv?5>VK=w7yaLxB!7|47yYA+wZeZx=ZpS1i`<g_B%S{-<xfqLf3MCTMEM^` zlAo>f#eZ~9lHXnDi~s18B>(v7xcq5J^0(@Ik^hb)`HOVE$d5MCO1?LAzQ~`MB!805 zf0$DdRYp0^`0R1!2k$^gyLh)mW;!%Hzm%b&yLb$yChYL=9DquA_{|JErj3V(*S(5w zt~U`nh2izakc5_V<qe_bu2Vfz${1R{AH!vFOEVZ+Him)wbBsWA*{=((ySSsH>>0q9 zvd6~o<7F=-{!R?RHU3D0zt2uV`NM4dK1uK=5WmufR$UE#o}B`Gw~fCSa_V?KUj7Zl zzto0Sn}4BoSBjY=TX*YD8vfr;g5L;bM;^4H)$0b|S^f+ge{2%`g~X4SKhiGW=7{p! z_<fS#PmuC$Xw}u=ceGO|zm2~avbK_+_&YI=qV>Po((*g`Uw6WmKM8&#6z<^vb%Q_7 zrik)q*!W|U;4dWptv0k8Y4GRSDU{#F?~??70`aHV(5kD!?`x+}ej9%;WNjrs@y}px z!N@;d%kSiW-Emv~B>0U`xP$-K4St@Z{24a>*d+K1iGQgLtwtLBj`%Qc+utx7zfThU z3B=!t5B-||t_J^OXZ_pwdm(Ep`HBA<8(M9C#n?Y)F6{ExHQDkf!Ec1ZBM;ip>UD#k zAis@2HVOVh;ydIw_zCjc_<fS#PawWSeuJMNzm2~avbK_+_zwABP9py?TmB^YjZnB# zeuMw<;kf>0*!W|U;4dWpZ)|8a(k|cOKZn`)eUji$kn(M4)z#oT_3yUv_d?cI@)JL< z|IH;@ey9G|HQMqg!Ec1Z9r}OW;3vp$<Bv^(zmWJ2`3-)lEfL$ljo&8;{siJbXhW;6 z20uZ58-FikZ6!bP9r70^k^iVIe-ivgDBLN(!7s&po!x$B*!W|U;4dWpgEq7pY4Dx= z53}+6B*C9R{5bzzZT@YGqW`n;_d?cI@(cf%EY$vEGnRxic5t?zb>G?YC&6!o!X54B zb%UQEzl}dO3I0OjJLEU`3G&<ceUji$AihI>gWu69zm2~avbK_+_?#>?@=r@5{}EgM zB>0U`xKn<E-x0Sa#_He3ADaY!A@O$}u*)B5m+#<zn2p~j3H}5r--cFQ4Zc(VZX16u zWNjrs@#Fg6{F0X6ssD9{ZTXYnH$veK{l9MT6Xdt?$0osFNPLI<2H)vFhS~UilHgAu ze%ya_HTVhg+xUASYb*JQ?~uPRiTpUnLE_i<li)W(;ZFGt{x}@#5vzY2e{2%`g~Y$r zhE^jDeqY-o(Er)^eUji$ApRNK+EiDAzi)rMe7B9i7qYgJpZJwFwAwsX%RkR<5h#CM zgDrm&{6;7|GR1~guN(XX`EC5MN$?jE-yy%jPmtfn?~??70`VR48~g<MZT!8EwUzwD zcgQ~_iTnp``IF!`Lg7yN4gS8pasAJ*@y8~?Ur78)8(NLD%eOrO>)*!jlLUW)ly5_; zt_I(!f47al7qYgJpZIb8Z+=nB@6`V~9KE6KKM8&#6z<Uf>jpnTej9&m68we4cgSz> z=h+fbejC3}68s6opJGF+t_D9rej9%;WNjrs@g4F{P9i_fSkUq(!Ec1Zo$?#}dAPML z*8Xk$u}Sb35`T&ftwtJrC;!82{60zWClEi*e^;A-+oGU9w~fCSvbK_6_>UNF)#ewp z{Lc2XZl5iG68uIe+|hnsH~0zi+xTOX;4dV;Lw<vwAis^@Ckg%p;ydIw_<f!7+xUAS zYb*JQe<m*f&y&cH(?WFpC&6!o!kzLP{J!5h>fgp6n*@I$@y~o?>wlzOzJvc^Hh!NZ z_!Fdj8(MWW_)h)1ZT!8EwUzwDkL!Q)BrU&F|LbthhL%4Gej^m_(EsZOKS6#Qe{2%` zg~WHrZ}6S|W0;NKCkg%p;>Z0*SA(A*zm2~avbK_+_zw9eCXqj4%bx_l5egUi%kVuE zfGNTD6`UQbEyIWGG(Dj<O^612+Y@T90<Me`YWKzn#wXO?1wo;}@4n9UWQ7ACH}pAs zW#~8HQC()!=NlUQr8dLIAzVv={iII{nttqaep##U_0|ci!STI65NgjQ4$Z?eaIRMN zU1_2I!H!r@6Z_te`>1AC>x4o~W@5@RkUb?Wm}c)U$i5JZ9-Q>_dV$Dy&ztkNu%_i> ztmV+FWMnmVhT05nWi44-cky-*<!%aDHQu>$%MfU=Jv1oG0Jvh~4)_PNZ=IW0<hn?A zNj=d*mt6e@HeBGowO*li@9?~q&;`H64?dv}SyXnH4_T{%1EG=(vn&Ol`a>|cN`7}+ ziGSE&bM@!|F56nBHliB>PZO^Rgzv$@W|wT7)iWjfURfagLU+{@RRPigmVmXW_@4hm zJVt-V_21a~gH;RtQ9-{3Mhd=)KKfxwdSo0XPr05zeaK~i*eG&7$_=r4GO%Ps*iq$@ zRYMYyT);0PL%3N??y-ztcIlpRJ~F8fw+f>r$ZdciX_SIwIiKPk?0e$kgl*_g97j|{ zD-+f$$tNdgeOb8O>=+hSMD~C|+&>X}-yrW?h64kU#d(3yt?F~CVkPwlH9U|KYIl_! zwsJvV{-7c*53KYvGey;4sTKI)nG#)5g`QPV)48}K9Lpf|8Yo#0qfWw_Lut`(%z7E_ zC&77bxz-tdWP`O4n`)a_n(W8LDiBl<H#uR8Mz_kjSek-Os95^<DHLN)`?;C`IjTld zu>5I6R$r#{Q}dCsG^G%{-Cn>7MH=oP<5_{~U1XKu2+)=8>DscmQ4E;*vIkB54!Xbq zy5vzz+Lvs{TCj=4&Z*>H{epIt)%XFCd_!c##22ubr<htuS<LdV5*?@Es(O~n_36vp zuXf?||MqBFz*U=<{pE{Wu<j=}9J~aZUygD0=GW*Hq=hV>w1cScK1T+axv~nz&>V0F zlqy4_XFF{6GOXbY9NUPyDsGEjsNO^C0uC%B)Ju&6jCGX<OXv0naar3zbrsrH@%Dlj z)HHyFx}nO(2e3*u4WGpR1N^FUusV~AYtpRl0n3|4BZDR!Ew2QeGc_k6Rqo?K>hOfr z)1Zh=r>sA{uu89L=5{X{%RAbT)azW7hKu#0ufhJ7N6vwO6ng%%Fm^9qmJT3iuhDD3 znjR-KIK%>LEb?Z%7@mt|&RDq*@$x1>=Vc>&DV6iz3BWcEsyAU^kRF&?0e$dpq`E%~ zt6zBno>HTsCoPppxXUEK(lo>%CV<}0VGC@1czj4W+7X=(;(;)zML)q4Zn3dnKS*fO zlVt-zgS%P|<M|4o7s!0Rs(@X{3he~w`x2nbW6-}K^lNxcfW9dK8n>Yv+V>M0mp~`D zghHo(c-#3>qZihGSGgQ5%e4KC=<|B9F?1F`tsaM?$qikPWlb-ps9U6E1ank>I0kI; z^25&hvu<-#HD<eg)>W)nY8EvWv!a3*;RAYUlR#JFgOvbft1*Y^K#bPuN}o-C1NRw3 znsf=MYQM$HwdhFT?(PdFR`@RU9-3im_gM4{Q+KHkQT+*;yQZj)_rXe?Jj$jejy5X@ zy~&-eJU4Kc3JM?5=zC6Wef%ia<8wvdca<r=@6}f}svxGXaiELtDMz(M2brj^*D&Az zPwDF(AlmvG2eQ<c4{1sDbrsfRIUC3>HA$=3)REnt+%;b7D+C+=JM{G(+p0rfKH=m0 z_0{Y9_0<6?is|d~Cyl-~LW_y|`ZvrE|5N(v1w>n4w@9y9tGXa9slHBP4O*hUa<z(E z=<D*QwZ86y_5B_CS_X4;>Z^<J@%{R`=lk`w6{?TvYu-4cuirw8iTd*3d(c0nuO@uR zvh~#w)j<3D3Ta98wPt)veRbC=ZlSLus8}|vt6+V9hrVXQ9G&|53gV&HOVS>3c5r1O zw52x)Ft|koQNfNV?!tZt?TgBgl%c!$S_p=Qd7BywKOgD^H|D2L`iVM$&xpyrnBKdF z{*Ba)GsBwT0l9RHcR?;hJo8Cpg>h_u1gYp>wPUN5?xa?|g*01{UOKi2LIEmf8WtZW z8eYA~+%oQaA2m++Jy7%aDpFdeIJP@srxD&h%}xqvZwVi*6lupVT-uMldvI~=4MbHu zM)w{G0wlQVr>2uH+_n}7&&;ZVDg+8PG9Kwxb%(75ytfq{cE3P&sQ?6@fzn7K)&of8 z;8b3m$WplrT@UtXbyO*+b3|Ks45mVrlNrOD>$T&{hcP{#%j=c_km2lG#-Owo<Z}?Q z+@CcdkUcxA4h$9)@-?5Y4S02zJV||oinFHUEs$ND)eXF1Tobt)=?LY}Ke6nA>Hwxh z$pErbqSF$zJ;l+DykNSK9%=`y+*2i^0bT7MOE*-j=718bJ%gc(1m*EAZTgcfYkm`& zxara$YA~yZ#4Pj2>Y7*3v!h#zOp4d;M^aogx;$2&BfU$(e2NLN<)H1m@A|M1Nz%=) zY(JpniInJ1ZFuh9D1I5aP=LFb=YgpRX0iRaiqTfSvtxIcYyvEiO8!8S&>EIGA5?!O zA1>Vayi2WqoLpmf4|d`$SD&++LFJB&x6aDBXuYcKQ`q>w6UOQbWq6BDUFI%%24b-q zE{>VNL*Rs5U|Uh-S>$3o#z*d+vH54=0cj!FuvEi)Hh+N<6D_HmArs@aJ-J1If-^)M zVe8Nm)Y!;$ckvuZmJn`rq{5|j?SBHT>omeGUEAcJ-f|(P@}-gEK=Oc9O*LHJs*(?Z zG2RfUW2O7K++9bWbz`U_qsb=#m1ljO8^T71opQtAd(4KIUx<<H;$U_K%8f2`+5|0` z#1W;sqklF5sykW{8=51=D;zj<E9W|H#sIeqp7d>=PqOHAyVdQ(q%6k3+}~2!kL!v) zWOYJUveC4*Y-v6dAAL-m>EGlHL*tq)JyU2`Y9REZ=Pro6GzWpYvOpnPYVW6l3rOdg z%y)5c44tMgm12C<WQ!=$T|5C&CA324sQKPlt&BuNiQK{0R-@)|;FQ%d2UYISSG3YG z9>w_vW;_Zvhzr%R%hZfXaZJQ+7=xNn09%Lu;ETAT&^_^~itSkCieA87oPl8?PR8M; z&@-&CLRK7I9yXq<{!^KWAt{Bw(!As_r#pz}Vvayxl3M&T48FC`E5c=~e9Cbbzf015 z2Ldh^B?x#cBX6q>t??xMk$D-;mnwwLRB;Aj%L#jc+CU0MaVDiN!XL7gk0}DRj@b~C zunv#wE}4eKl*G#?-h5J;V<?S}rR+gqz?VWIgV;1fjNl2xzQU@!KzO$F6g(AMBkWQ? z7Lw+aY*g86Bq&Ggs~Zfhs+P1qZ4Vf5EHvWd4|mC@Sbj*|f#cYy#9cDOq(Xj2YCn?- zSsbZRRx3!CwJ5VV7f#Y?l<wkN!G)uH=mh`@wi}r0L$DsX5GlH!VJIQTj@09qP3FTw zCh+Th8S5BwTcc^RbfB2MP;a3{F}q~1Sl3KZKlQvDc-oa#z|Pb!(FQ`jicVh^^r1cH zX#aF8k>Q^%jIyz5jw}qT#6!I_re!xY435-pr%r3PC*`tWcXX{X(NII$uI)0j6<^<I zjJO?D0QL9N?<MboS(q;U^Vml)4;7oh6#GulyBN2iI%{JzO&+Nk39yPfL27zJ>VGm- z&q^eEc<u+}HnC&sYv?#ygm=Dd!As;hxDV#TFj+OUb~IItCy@!x`Izz)(zQXp%Q}LJ zG-%vviu;00WG8%^tw&Q+Y>(rKWZv2E=c9`-^zJtFSgB4~ia&2L5r9LuV66^g`%tC= z76>QmN6>BLJ*FV|i`AfMYNogO*~7YjluA5J@9vZXXI5qdfbQ!V6L=o~H@@5Ucn&ep zp+CrIaK5nXw8g%U!WP@ZAhj)~A*v`DPgft~Ca$cKKRWH{SrT?_XHUWT0#gs1(i$UG z!2X@J@IHvgjBp^4=yGMZvUuG-GJTY!YMwzxV!Qnb%6F)8I5F*Z+ZKgJZf%9KH#Gqz z)u7N0RQ)KR9LB1;qSc&n7~X{QJZ5~%X;KiaBE%mEu^1_deC$Xhnj>AK@gFY`<r<_U zqP&@ia?F&no23MZ@^!0HUP(lm<wUuFC|IbHP)cyBLphk@jVtFHm`DVnuWe^#DAv{- z%~u_L2=#)7nZtnOY&+1|Wm3_wbmX(vBxKkLADM)7x!T&%VMiuP_l{{eZOxI}sU*(B znfKo2J!WV2M8{Z=jEpzfF;fq6whN5rG506Pb*eWw+#z@qD%6%u?MGXPe1nt(aOV`$ zU!35T1b-VT4oRZ#J6}FdAml7}gp*JK2@U%1%5^)zZzuR^OsP4GN-Woeh-XKhFz$jC z6?s}-b|F(eOkeUh&K6V4%p8SGO|WEx6=-tL$T2oiMXTG85BO`4;wUrnuGk2Mw03*c zRxPSu{{U<R4Y~up#qg%^9nBzW)khYAZ>Lspo*n2rYUCUM#A@U|7JHntVT}EXrJd1v zcak!mWEn^;1O*#KGDb*-#0L(RZZ)Zh4;-nzOe*37lWOe{B5q_vPPGvEXJTr#(dmgY zyqze+Ntut*<kagl!U$8e4BD-7_c2ZMz59_nyrqfW=1>S{%52`$9V9j^POMx+4`!Vs z#O^1t?jYvSc=SV*8^NXN&cw)16M-U~U<wYT$W$5}@IDrksf}!t-{p~ZE%fm~3%nn+ zcps1Vcs!ub6T(>;_9w-neY_D}!iZpRiKdl$9F=Lu0(qhQcqrZvVF!=N$wYTc(>eob zF?bmugBQnEcbrqQ6ly^rhS-5o7{-3?;=RE3E-6Ghze~2c&vg6<!&ay+>=YS>wPj>u z&opJ|0PIGnT%CtDhY2~Hdv;mS%W3jkbPTo_>Clt<_b*sUh{k=f2(0<RmJ!$|C`R{x zwtTTKqF0M-jSRkyDL>$by1t6sCB}xnULqsMm@@b?_L2s=E13rfdP(hfe~Mgo@vowj zOElBBP>RE{{>VxN)9LC64ToPTbR0`2>Zx5lp2NtyQKduDSegHiv^NioqDcRT6V8B0 zM?s8t)TrPAi6;?QCnkXzOf)K&3uwGp6c5xHKt&lgGs-wdqARY~D(k^|AFGR~7y<zT zsGRG41ay^Z2MAt~L(Tj7JXPJ(J;Cp~?~gyobax$3Jy$*T)KgDA&SA5rrdb%+lwUN2 zUb_r9OvqX9aeUuytfvsk0<gyhjGc(y-9>r_KcIaKp!sSz0qu%M?=0MCK3nQIets2? zC9g(F=7TQqlKBK^6Cv}#L~I6`t03;`IMCW5b2pILitop^Glme^*G0sGXcDAK-J^v^ zROgIMM2)2$!RS-(fm5k)zeUS+b`e|C8rQOic^^)|gI55#3FLkL5zhua;SnAhzQRVN zy8-CVeu9tGGr}^?ELk>2(*fjirp6+^f)HIn?m^<jjh@c9H%>u8z8{fQy@zc4u*uWJ zLrC=HtFthC_+8JD74n%Nno4{wBUGD!PNd;UOv*|0O6Jz=>R`o|qs5wCy@Rq!YHQ;; zzE|+d?}F9x0k^AV+^z$q!O|SKAO|Lp&NOR#R@Tg2Spm2@s_{3<W@2atzpMG1)(U>- z^Y_F0cP@YD13J8KK!<X2kN`w#5-W~s!&%MX;*I&iniV<rwcw1jzVd(VXrGI(k|#lX zjm7ildO^#06`i-W4))=uy#IY?yW1Y$cd@?(_0&JW!*KQ_vzQKWPR)+q;X18r&gM)7 zU32tjB)PMrSN{t<u2@T!CkqNxlA=$!L@pzwV=}vJ%Wx9Z2%N(aCys(E$FtMgtO_rL zzt;zUSNme&CQ(4bIyzRNb);sULj|4|bu`5aJEy5Sk6zD7j?PIA>k(fcK6VIEjo1Px ztP34a)Fq#iP3Zr{{-P66ko8k(F6Il~a~D2X*V+#S5K(~*;L@DPlGMMoeliolc(DrI z1`z*{9F~)MDNR2w|JJvG0pKOYgmZ?vLHIU;JXoJd5_^~1R((Raq{)E^WoU~|$zkB` zy&z+7X<}l@m*<D1cv%4^hM)Hd=X1N@JarphmL-mKni*TPHK8OG3o?_^Ujx<rIHpmi zkX&7~m38jcyk4|b4c}A$n*8TbnS%Vsut=KxE8uUXE1`}8-H!CDE@(&k(?(>H{uHWu zXeFqF;nGQqIuG2yS6WRwT=Vn!&}bj-8NbdxjZZ%$p?_Wda31x;6(1A9%hY0g$<PmU zK4<8MM!fnj`XNsmY^NWhV7bYV_W))8UNnQ>bNL(pxw_&x{X3uUX<eX<=!(JmcLO?i zb%hnD6TvSbIrc?(m&S+xYX=E``2G5#qrDGWV|jl&o$Q^E!}jkx+ncB_rh@Q$)E9>W z#blV)4}A>d)fZ!-2HG>toYC!=ro(xeOp^sw<A<}0eeNFN>}nV9QIEWEF5zod@5@xw zqCOYigC23^P4WrxHc@5^V_H=SWhyM0`4#CD&TDPTm;6eFj-%h?V{zqk_XllltxW-D z4eT4aLd1_|K>@5=grDRG7pwgE`p6YB)6WJou)$70Z8*F!dCK<1$G~wrxZv>5)sJTj z7vBdxWX0B?nCeKB0=2t=Kg5M4#^)fi%<N)d9&kJQgyyo_QTVTK=(x7^;ad9TkI~aK z3cvwhj%G$u7p4bO*R4@JS0evhrRA#Oqe(F6{`&2Zdt+P7fkb0^%&&m7V%r0o6!7P? zsMRCek#SI!pNuW47|7T9rG>lz$vg%)lg_AB4ipCQ^jDTFR7at|vc$KTVA7pkjLuSb z11A|OW92z)wMBg^tv9QknkiGM)P@OlsUI2MmX;sAK9F=|+_O9%>Utur_<Y%Z=>I;r zJ%PywZ{THyUp>);pORr$&kLdC)me*xf6R8{fsIHWG8VI-I+Cmg1Ao>XkZj_w3OJ&b z`waM+H|yYy74O^uAK})CJuIar^&;RaSe1T$@lb73IT#3T5!e^k6~q>z+~7`DjM=vb z=irDn8W`N&feCw%NG1i=%UOI`K~9Hc=eHI~bYss2nhUVrV1{unY4$B?>Qo?*hTh{= z59;ua5-g1Jpqe6tixyonxFf!D8fIaDqXrO@d>b9uKXM$`P`D3h7bFdqTztJ#s+(JC zT6TXcCilXClLEq`l)eQZ5b?&b_NYcjnt8q*gS2TtZc{n-#}IE>-kX0gW8)>59aj)# z29bT_K*^=3yRf;NZzZ>ryFyFT8x$aUt7PPBs0QdNug4>9m*|D)&0cCHcumrDjRVa< zoA_naCCOXzl?7e~o%0a0n9l~p2K_6)HkIe`h5BU!r4;#AL9(Ltn1?!+B=?68Vj2pG zo#`-=Los`de92Ocs9BQiYM-s2iQEoWoa+qxei$8&J;3_#GG?(p|Jr%FJgd$_Iey3Z z<vah{JESu73isO)2&q2CA`#fn2{o1DJAOBn3u{w7^jd)FfWF4^9OTNiVk__+%wol8 zvQ)q?dKkqtp!x`~`wQ2QELA0m-UVJF#4ZO|{*@qOAD!kUc#0P;k|zRcGqjz35*{bi zg_7g<02wyJdgHTGy;Pu!XS0E1N8r1yN+)*)<fXXQIopbVMMKSe%d<a_r*h8_z<Zub z<+>6lLtbo`9;p<|vv;5;{n9LSm@AmRl<{YgSDMuvF;GPl37=P)CQ#&b6hQ_-qT0mj zTCt;mPG>NJiwXh=TvVw~DuIh3c=XqJ3DtcyI=MBTW{n@A_Ko#KMZ*A3!uQs2eB(~0 zC|m(b-6)gbGIj1cXHeja!us5DYWK$S<T1#8r(Oj~wAKPtg|O{II$m<iIT!{gUMP&f zp4iPObmO({Ths_>InVk|c6GR)+^*_Ds0u7&i&_N$n0-2cH5<=?)Ysl7{tY5{pP6N{ z&du+cR^e|3h-#YMCO9FF`!L7{c>`G-JJBs_6j7kV3nqoAj0P8o#KVQKOocdfq|%GL zjWxFwOMq7DsI^3Iqq+sED~Va)!km&s7q_{tYz}Ur3deponV@A}9@iP-hJ?f`i&~lg zG+Cw8{y~&4{w(|_v|z>J1h*gPHKO1!-aFhJN_?tD04=!HE1T0>Z7?tV$6#WOOnuwb z>oAGA<u-G7K0HlUoQqucP?79dv|hTHtklWuLYIh~E#o*Fh%ITtW)FrlY7LP*G{-K+ zOD15QRhpN2VbMgefI1LLjuA;@$3xhCO-r7NusQJg^EArXM6i~Nr1jy8-#`o07`chH z@rD_5TqWO&Y=0Xc4<$KKw+L-iBsK#7l2Tc%<2((1$Vt@!50TBOL{lkjEPBh1Jac*3 zk$GA6QD_^hF=WL|oS&O|H1&bD8(t%YK#kd}IgI6MGbDiMJ5;8r`XGi;mK><IQ#b(t zJY+j76WdLk)UlPCgY)_6Fk#=n4)e1w<QcHpjPA56@t?<DkOjG6WKRnt(E`VK3n0T7 z?c-1jrBW&Fc?>3gmB6x^Esz@oEU0oyFP355lO5><yh|`@*4O#<4Bk^G5_)RwBr9|( zr`4d>73!x7SrbaEO%1CuT7W(db<4Zyg&<H12;GS>e7aww>_B<ft25&eV#8A7Aq}a0 zATO@L5W5URA(^lociV~_<yeh~#*LyOf)K7X{*xW=0B<*<n!m%p`Z}x^%BU@1iqt<f zSvO)>B<ljyCppCdkS_te;2N9w{aY~8!<i!OjaHU12t}6xT?S~!b^lMkLKELmggx5> zZ5e8%n&X9gs)6bh<)0C#QmMbm{LRn~H=A%U@vfY8n7L&;QGl)3wfL*<Kc5`t>`+Wo z70HQd>trE9AF$m>RgBP}=V`0ZE^JYc4F!BOvoN=)k(b~-=JG<Cq4-;kcC*x@Zxb;H zo1m1#Vw<Sm-NIEpX6ol)48S0-j<3Z2C>zy^7K)vUN3_o0OLYg6*+BsuG$k~9vQkIO zdXaL%?hBQTZDcZKHkzs9tI6u?%h4i+SBLVfJs;1wz6xW!A8&%ixO5zurlBbLiiJG9 zV#UXI%F2p;V#RrvluBN}ue`Gyf_tlU6@E~4M&>y8?L-YgY$7QExF&13)}5`(6w>AU z10$rM&i6}>%z_%~=`3@s_;B=sTMn!^PXe%dp#wR5Q|cY=GN9gGP?#L#0N_nG|7WgU zupy(tr=_&^T)Y7ut7J6Z5S_)H@dZK`uO_OUK3>AW)hA`dveS%-Zs}t{pR69f%)vX9 za%8AI2mK5FJ^bQYvUeH8)tg>`2-Dy)Dls9=S!mGVJd)-hJZsW?=#VDz7|F6x9%BVj z{I%|FOw|fM^UGYk2_lLyiof_`p9YC=>`jfE2}o=vw<^{l&%NQ-ec=?c&w?J4cGCLd z&!XBeuXV><Q$e1rz*+|hSwRV`gewx2V4;yY>Yrps&84nhvErwr65r<gIOsG9%kk?V zD;^>hW-i?hu%UC^1-ZaO6qJ#3JZ;w-bZ(@r1RijM)P}9V3%UjkjH(Y{vo8Yw)P=B0 zq71fcEf&CMzk+)RwDj3%hX@CnSc(o{3^}Tz@y?l_H<YPk**QCgJq|iU9h75BX0y8I zOqBlwq|kJ}^b#-Ql-rM^EbSW5k9_AF=)sUg3fy}6AOd89yK0f4P`B3$?K$j3zWMTE zhi^EMh)8R`X^=;kJ5sf2Qa2Kj06>e39;b^i+J%1zU<`|846h29RCG^suG|yYzk)vL z<~)RZ9UtU+Px~0t7JFn{<Iz@%cAAc~ycGlYQ6RpX_%jrU5~DZZjbpRuh>G>5&9!J# zjboVxd84&Cann@o;3h3oy$ER(RVX<d@fVWAS8T;cjHmH}#GprwbWRI#7ShFOV%$~@ zJzOjHyF*S1ssjpl|3PC*<Cx26V{?BYAIRh8#X9q%kfymC4Em;do9`5R#=OXNUOd1T zz~wqj#d=~i+wnt%eYq$ZS^}(`hDSf<ss+0&a1;xii%0Lwdb2^}OTYlp7`@0rW17W$ zXly`1gGSczpfPeZQP{zYLLx-H1$#iFuoR7_?)Jbx<6W2Vw}TB+^<K~}1m}8%H+-Cr zZSr?{*d|0K?#VYeYjzz#@HCWKr%jimAl$I`)cB>WD9#QY%~ZdCDVJ4ZNmK(#uT#WB zbYmfGPHy>m@JtK=x+>s+%VDcdL%b#_^+5;NFJ6$X*aK+F2lioJZolUYfXz*IVXMsc zpBPL-b+dYhnr=B%wzuhUp|9Edz1SGUW^dEj5Jt0KL~Soh-a&_{$31Usnp7H3zd*dw zfnKlz41O9_DX^?33)nRxCxW78byJDP59CJ6vEb)FgS_~mo%RJr;vIw)8<D9E9_Qrm zXoKs)_V(R;qc<J=?Z?nQTYZlDV4hxF+mB>&&CNbM9c98M$h)c+o9~4;MmdGY`O2Q) zCDmpS+dc?yoU%iFWtA8IZ?f$Bc;i8EYNq#LuJ>V)7bO{VeP)LT9hb7*`}qdwAP3uz z0w8Zwq^qs`{BJ*r=l1?o?LN<Nrf$MXR5ci6#(f%Cwb6qGM433&Q1bW!k014F_)+yz z^%D{Tmf9>Pz|<ZIZ7*K}fL%Z8d;Ca0YFJ8XKWY>_PUQgAhe$ufFQaeAk9sf4(T^(r zRQOT<jc34>cBPhB_coO*-V7h=jn8EIP`Mo)N=k$^ou#yE#b)t2OF7@mTd%WpKS%;_ zns%0c3a-_q#94ZXfIp5lEA4SGVDfY>$B&19qD3`x!k}}fMJ+A$IZMkDx4@cl9Hwj# zEqG?opB)f=Zy)Aczo(Qd3s9ztlu<7dIIcQhz?17AeHt3T=O1O7O!1Gl0M>T?Q3)t@ z{G*@MlfjzRDNu!uf3y$$qYtAAv5P<hhcWD#c&VO6jgn*+`z9#?aK$hBA)f3NP&_4z zU_+(7q1t;|22%-D7&cq72xClpL;FiB_^wZL(aK*H;?q@de;bE*2mt)1N0gV&i7KOv z6si*-<q!+i8Bod_@>@WBX_yYmll_4xHIXbVI{+YRpe$imiWfx9MY>^<Do{~-S;1ip z3Z~}oewtsiwWu5*+_A?)Nt}h=1Eg>O9E`C!dc$}~yWy4N1<mx3ZUuInZ+Uhzo@5=O zm0^{znf4*xcq*w1liY!DB42=rb0JT3m&(9p4B*W6Ue$L6h<3&DBx=Si-G$%bGzA_6 z37yeJ>JG2&vSJT`kk0tTX<EV&0HsxG-asg?6Y(f5U>6C1R3x^lZO{Pr@sK%hOW_lI zt$ao0F0E9vmG?#0H%dcxXDzNyC}C<1n{G$3F{c37T92x<FGM}PKZJ`~aB+|v`8^qy zfNUx9{+F3s?iZPIVk%T=G36Y7ND98X9H1b-fHh}XWV~;w^6;C0R-za(S3~+B)z)xj z(74g?SF^Ep%V4D>T{^e4IOnKwa8V6Kt5|-3x1nFkb5ehI_d_{aY!xmES}%@(PQi74 z@|)%a-yjkWe!#@}IjOmNf<IX1%|`XZ8yc&*p+v*$Y}a_-o-59D;2cXWtsOYI9K4SB z=ybB?vB3~9AMw1gv3mo}Qbj!pezAWgqmlN_>PKp#cE>%jUUFup#P{|0)8RdHi?%df zI=l(-%Q))!A;yHQoDpgUXe38HLv(jdR2ByLTSq+~!I%+5;-p_FgNp<dU}s#Y0{Jog z1iI1CLB?;^@H*iy%_-WNdeQlg-;Zm|E<xwOlX{S)fG1+sJ^VRxU?y5O2nI6uMxQ@X zqxCBw{WsCd%V{)P&jx4Pr}9yw^$~%g-QiD<e>5GvRo|fT+rUw}&RI2<%0o7zz)up_ zrKSN?;I}{>2Che}3;del{fU^6dLE)mlpweTH@F>ycpJQS;<W0_N0CTwsOAT2Z*n|s zk;{N?_AThvD4c=ziNevWNI3%v^%ZR7nSD;n#Nlj>a#4OPf0*c|D~dD@{|>eg4_dJH z9QeXp!zb$q!F}TEXVmE8+*MWG$jT6-9Q(>NCPxS;DcH%wchp|jmbiXLVpVE6@&hnZ zRifV{6cpPS7?jJLhk_oGMq%UtL0O5~0(2UbolM-6sGDB%xqu;4t{o7$8MA$UJO2C7 z@LvEmQ%xFGBOnGu)$w@8v5?!+sQUVpOjKQ_QOj|9r1%eo8dXz3;ooF8$IWM{W^ku{ zK^jQ|1c*JbTY5iNt5yY8Gk9b62`|c0Cux-NfXqex1#5%UeBjYwtv|6gNR`e1ZLCFH ztZDxH+~6x0byDwYd=-$bfv=zcwI_VdKRFX$Cu{s>;HxLdN>&^S#`{ftUE_-9i{M0Y zQyKAWBYU*ddj5Ea5jgScvREY-r!%)OP?20#O@~kvGNb-QJz<V$*Wra0)HN8S%t}im z*t$v!Vpk5DA#9FIB+YVG{O3+`z&A1yAD==~M=_joNLB#RH0K3t78W$%9ajAf5Ldz> z+?l2?y0K#2=qG#ZRm@S0mc|r?)GvS0^Q)=lT$5Y3s4ohruYuh~c`Vu_hvJ$7G7~lh zdPrnJAQzv|Ok-0(Oy*!yfQ3;ykS~7|#<kO=k9hN)x`z~N$|`)3X=2788sT9%{*9&y z6PnhbnM2{gj=Pzzjj`C@VTlsU*lK~By*_6sHhC(kOW?u|*4(79l9-1!$PzGzT%on% z=XB;<a}p9a&*jrXmjIPu?bQ5WO;es)2IS!SyhbZNiM=><(7_x-fj&`p?6_JLLkjq7 zGS@`M%Y&T6q@(|8=s<ph{kL4@@*AL;?1QER^yJ{97&Ti((Ps6YNEy}*#^z`$)tJ^B zdQGJo&E7%HBT#6(+Sm9%X&j^TEs|c7IRkI8ltKnD!J`L1ycQyu?7ZpWV_Y}3Lml!J zIp|T?hHpV`+7jPjuk!qynq7zyxP$g%vKN#zu4QX(J1-ZXCiTE&)&Q#qFsVPwr#!y0 zFTfkK-&K}8stEnb7Tj>y9a;+<D$^_C-(J>QpwOo^Un<Ph0{w|LZTo=a;v2*YAm=#Z zeWA`S5N`{2R#TF{h+gOq0oOgfDw9y7x>I_3Rj7f^#MCk|xFzknTcp8r*~9JezGGp* zKBD&__8d=9D#*~^^6XRaq~$N|489%jDw0oVs3ADy5B>{!gouGh`)KRC#9E9g5qnqR z=|=T%;Uq#a5PYXcxf=5a-D>k*()bKuh>4FdKDw?h9^geM-!yBakgWn~biUqCvvEFO zVT%|To`+ZV10WmXO*$2zs=I0tuyi!Y<zN^0bDo@EajEhf;|mJ4RwO_zz>sf`1Wvqq z+=>kZ^SZmP*6c6EwFAPdFF|zs-+W|PRruJNX*;r<h^p6&bmilg(Ee7ujY|~04*o$F zFGgucan?R{8%D#4=zB~h_IF|tixCJp!{Sp$|5RUm`bK}Uzi^7U{AR`O2H2_tMq!hv z-T{P*J;1{OBeub0bu@to)f{H7N@ITzJG&XE^sJ9ki+{7t$KZ4lNY#4qr2Q8@Y5{>3 zaxAdT$Kca3|7V+{J#ap2+MKLzWt$J<(bxZ>ZrK^#1#mSA<*1hJI0)he{8R74<7V2O zMLn5F*-vN$*jN_hS=J#}n@<PIt0wi9F^Km2`!C2>hGF;s8RP<D%|6ZrdL^0lU_5&I zwikggB=b8Y^BJI_=VNM7dj8b$2iT?Fz33WF_Arjrtm6SM-8!==o{8m@KP=*!)gl>o zNAgxyct5T?t4-Yd<%qQ41@omWtMhu*2RMP<$tv8-ilHs_>vM#PG4?P6o656#vjeZz zU&R+SOY_YEs>V7Acu`%@eCko^pG6TsslKKL<o4`^Ao8Lc`D%mn>MXvxm9HA`s{RU& z3VuMVe7k)TKVc=5rRH#m@XK6HfWSAh3>9b+AJcty6mI(R2P{2)f~XpSoF{;>fucja zZaNB0B?s}5kua0+NL}+d5bq=2DIVe-06^HSrFxM4yYrD(G%r=-09fil{E|LW^SoqR z#`P)BznEB&zBRvMXa6ybN1_F4euet|MF>!T8%7OR9rpb>+ODGEkVI%3fWu1aJoO&P zVhmiSB|@AiEDLqfv%hKNT5*Q;U^)v}_bvm4`Z}RZCcar3A-@>gw>O%i9mX4)Ujf`a zRj?k3i=f`nQR_4MtFIyP@2Rmsh%8|)(Xbw^`lVq#K)RtPL%o6~(5_tp+~F@ignOC3 z@5d*5hJMfdErs~$C52{24>=e{q{(s1(I7`3JZd(%hTID&8j2R(sTx~V6owA{{4CO} zqGZ8#o{B#n$+ykw9x#xR`l-@vD)pX+y6LcLwS(kBuWO%f-|L;QU%iakth%Gu)U4DK z?fgmfU$~2&nOjx>Yh(@+tNT4hnz7E#MN7u16d*pGb#xGLX!9L&mQP%HzKTZ=i(qE6 zeH!N_<Kes@J*?PD5~@3Dd+hQzj9m^5FwLVZ2y8{-GWwFxi5e-;=^(Rwwg2J5wnwT% z!5oHd`$!MpvWKUh61GkCGJN2`U5ED$+__%3V+`8zbHtGtiH9SOcR6BG0XX6imm|iJ zJwcn3*)}AYE&{JnwdLqc`dq20DHFb^8ku9uFeGxtbl}_%NdiOiK=L=vztm7_6Bx<9 z3y+#N*JE}dB+vZA6mS`o?OxUnjxRLiMu9ngw1xQ^jvs_2Wls7?8cs=AsFy*xuJk@L z-qJAiJY6OASe<j<G7m@mDCU|`R@Ednj99wVrvj(q80JJ0sVGaH(D`oK%E%)kRJ{>e zLam=is=DbOVKR73`Vy=TSRVO4mR4)7lN**b-~9>1G`iqUw4(LU*3<&<hqzF=pu##S zm+K@sj_a<I{sv?+Z|ia^&bV~XCe96j$&imhP`yb%y%5@_y2=AWH1zO-$FeBQRW6cJ zL@=1$5C3IYlE|(ND2rk(>Qykj3AA?O+hrAMc5T>1z=r|`hwv>r^&sX}^ETJB*OaU7 zlL-KW<pL@G5jad+k;j3a&R$cln(USmGxDFN7{bi|!Jm3NI)$m&z6Z}*j^Vww$Ab|Z ze`MO;XOKkY9`{X{O`|tlqlgQIIXzMqTd^<M1y}@w#EzUc^v^j0xT7NZCupG-KcPv< zK_g`IB;UBJQGy?Gy>DaO;qgn?29)zi*IP7`K!Yk(13K9+;89Cgm@EqEs$i!qAku{x zLrD_a<;YAakI@Ryx*wEwEa?jm;oD|)ALK*hO9F8{yC6V-2`*=xq5Cz@-Y!T5ll<m> z4!zrYt%Rs{9r4by7Qx?$c>mn<Eze$yCqHJ$6&}oRFIxtpt~d;snT<z(`3L;vXRvv} zWHHN6#-qmMu`>TPst%9q0@|tit-<8N!!t2?y2iXvSsEloRqum=Nlo9dNu`m^S3qtt zM8~U_3edIp`N9mnbts;V-r7b6gG1~dkS;aXy!=SNv<uOWm!x{*A$gDn1Y!s6FR)F+ zEBhj8wK4Uj7fa#c9*kaYFj}SdKNJ;4WneUXoTn^sX0Vw83)#K#=owP#CGW!;10*De z-WFo(Ypf?^LFxl0y^gVF&oIk}e02vqU{VBco1Z%J?AZ^QOG~=le#o;JOU8c43LsGS zL#~BPx%(kj>^*Rd+CBHT_eA<bIH4O#on4XtvLEsinxbyU9tccKE-(;3v^Dh)@l&MN zA%t6X0+?W*fyTQSg-bCu7v)90?2CTYC1@>er${(iJB1Qoh$?Xj9mL_Rks!I`5Y>!c zB2#IjI)Gq-6kJod8!-PqG?UNI6AK`71LpVxG*e#&4v=wB{e{tyna>tJYR3GDY$AH; zYsH=gbRH&pnG6g-EH#fD`WPO)<-^x|%5t@=%ihGYd3e;LngnSEgQ-$>Y)0kXu-kn| z=D=>GCOv}f={0UbT1eUZ;+2=jW_cdOj8Cn0^B;Tc)&-=J?+EV-a4eUnQGOwQo+JGp zdxX~VGPMg|lerc8n14>qP8{>^itj}YH9LD-v7b?gXSNpOFQb5Cd*K^au2$?=`GL~R zw<gW*!Vh&8nr-R`YYGz}JlMYEtQq!ZK8muCpU=Y6#hDGS3ECKvHJ6;nc!?od)%^Lk z{LJUi$>?uL7G`~%ualn*_&J9s_G-(rnBW|+5r@4P$Z`gLxk1gbB0Ocn7DdbYO5hY1 zX<9xcK|t!2^fT;*tkmP~GvX1rjSq|D5}X0Cd!Suem&w(-k`zhLW9f1q!xFZcd|a1< zFFH%I$2jFa;-M31aWVwMegh@dD5!4GiU|cklZogAnFXxaMfjn)?nlw>jq2Tp$#t$v zK_3)G+{D#5{{S5)4Cw?+$jp4zLF5*(0~{0gqy78=6V2)au!!-~E?^XqC(p<Np3b!E z0Hg-wDg#KF0YtB!>feG+A+tSCafMXmmn<NQR8rnInW=3b>=_UgOcGEA)XV9#P(A<$ z0zgh=)zTO8kBPu6OQk44z6R9ZD4N=k+T_wJ?Z1I)ZU6{${o@bzBOU_klCYATeN;Je ztd0}m316$O$9H-hRsoMmz4qeLi{=-cJ)f)f7?8#!t#ssMM5Ef<!`KH)owx{!+)-a1 z3$&5t^wz2lCBSkpkOph_gA@`34Paow^j=Toc0^=D_b+QIC-m^=NIAHQd`;B}vIRyB z#g;eq0f+d-;GN8m%^)N3M`gii|Fm&RPY}DiT;mse!+p`eIq@v6L$9W^V%)9wXv>35 zXN9Vw50st685mqRK`@v0(nNg-_|~j+xG=2Y<-+=jaF0>3Ub#Q;?;MpTwZJM|N`N6A zH5^nZV|7~YhL-&<fUZ#4US;ZRkz(xrs;l=EpkVT-@4>kyhv_nDo>yiB#J|L&?O3&a z4~}|@qzFDh%M=Ov37p>PE6>v^xR&4h;=8KB8|L7HJZ~hjet|rHfFB;|rBh1X4201i z_@kp`<J7WW-S1chSWsxL^R8-&P^PE>hroJ5@02m6;%4>T7Lah}QbOpu9RgYEA+&^X z_w`Qnx1)?v!py&7l<?o>XEoLBJo%Z=pPWOD5`GCk0nU)D2E>aY)Mi-iRVU=6_7Xi; zB1t+j2logi8J?4VX14ALV6=rIJcaq9<Slx@Qp+8EjO7!#CoRu!i9(*|d@p$mE5)qT zed%W^*wk(5=Pr0Q*(A#V=Ubw{E=8Mu4ko2M9Q*=AgM4PGJHSr%qprfc8SF^5JpZq{ zfX|BQ*(Y<dzY}CP_NVZzHj*dg3ZJP*$nx3>sF8Nz^Wut;;dx$$y;7rq@az0OKhh%& z{^R7I9G#mS)*If#lZHszmg5;q;hxQS_CBJRE@cE7Wz5cK&uBoCl>IKyhi>EB&@9E@ zZRK*)N)qYT6WhJKqvz)USz|3~8Q!5OYbJ26g@<J2v%qTkDHAx4RtV!@os0CX-SHSX zYv$L??DKL?;=9xt?zuR~!fW`dzL=x+@#%n(_RHltiIG`4<<1dBD=|?@OW{6X6^tu! zR&L__-gXxtPM(X_i&2)^Y}(aby-sF9Z|hwCGVjTRc>j8xc_!20`Dy35lYV}{d?t_K z^Bv}qESC6AtO1q8+62>x01CSW@W`Bg6@F;7cPwQBQ)LH?&m%A1oF9LpTH++><OmWU z{NH<#e7>2oXHUQCLw*3L6Y?Jnmcyl^X4P+xEV*HC%$y&Z^T50eh)Fz37~Y$u{pmBe z<lzBM^e}u*TFLyRY88N<xs+c#M~F%;a^tgfJi&cn?%xqlu<SSE3CggEj+uKJpn<*> zQJIJkf~yLqWyB9S0S5G*f`Q!_0&^h$7x7a0V+gwK!xdT|2_c9KOP=t+Er?e}_IXX7 zq|8%|>e9bxc`r1p798VhR)_AJDen)1+_Em=+(MhiJ&d*nycSF{Y+%nJ2xs0aAqdN? z_zG|v35$z@B$-4QKywPJmie2yeLjfg#F{YE+dSX%*XnENAsPXQEm*D+{OCk9cp*9k zd`cVwA_+riQD<YY|IN!*<r~$@GOEllgsbH32!tUF$8}e0kpW|0aa*Yq$c_?emRK7- z9l;38IaV)FM?$nT+m$S0(v8$*BEMqY*P>bV@!eEt%hZV=TN0<yk*;hnldkM`uwhXv z5)vg=Sh1V%Frg0X>~57vCKzWTJ&k@u6!#Ig7HAR5UaAs2n=WV=bi!vh9|Jx0layt` zhkFa6;5a>}Uk9a4<#-)Lmy?*|Mh^)<Sk~y%oL=SF1r3>rmFp;@9LLDdYHGys@-v@5 z8J}+^R{Cd)T17nutU1eT!>8)i&0zGL>}dBT0NR`ai|N<};!s)LiQVaBeMUV*uhdZw z1BEAJ7zj~N4y$SpQN~~YOe~m>$oL?SkS~heWU1-M-=5^ElyU`@&9?_&>cTu;k0E5) zJOQQkF^^zoNhqXwrbe}ocE1PV#{<|{!aWaH%UgKgmQYMbp&fVk<7Los+&N(;R(z)C zb)Fne;~B*)do_SC{eWe%?E3Vxm;;>M&37>e9&w*Vr(lFuY=5*}vWS3`C3c`otwG{h z(xrpM?Pb>DTY8k#v>_bk>s@{f;&DP<+N8z?0*1g*?g69iqn&C1H>ZPY3XTcvxTuF? zEB^>ZPb=izyU-}4R{}e*wi2y0Ywt|0)J5zKS&RgH9P?RMa*Ql%oY;<4cxBIrfM~gM zkiLMJAVG9+hb$-D{2=G!8}(;)xPS7@9k?OQY@+>v6BorjdQ&z+`PW);03s#fH1Eux z7~Evl^<6A{#ntREV6HaB;QB?1ocLoDSLain{TDoXjkmD(7J>%S#|VX5-3?=Tfo~`- zS}?4bLdWXTKOsEhbNuqyS*dzsjI~l_A|l~!@P&ExrFnH5p-wc~%kjwvM80c1&OokP zEtRSg0AOyhJAxU!9bp1*w9l2Mnjp9AtwjZ*2x|DG3m=43(6k=mK9L_lDlmlOK0gev z>>-(ec#{@SB~LoQG~}T8<#^+R+ZzymqPO_nEY6dBUcmiHi`Dac5n2Qy8CL~qDz1v3 zfpk5A4hPd>K<bD)#s8!yGK>SKg|V9<xezg>F-cVv$kIuwBti*3k!H0JmZ3XpnR-+| zbmCv%9V4{yP`C?vS2HgMg@5LVw3|Q>r<?e?6JcuRI&Uw4XKy5fF(0B}K2{JF;d8=e z7NE2orXkU8%tW`>E&aj{q8sE<BPd0W@)1M-6W|kfq!*KGM80_6&o4S;!Cg=8xP$9S zPCxE?@<*VCtMoYlOnr#&>LloTvz}CVDeK8*0o(Nky~p+BaiC)R_2e8hq4y3E06_fa z`X*s_J=q&s60@i1RV8i<Xi=a3h#~n_m0FLgQnZM6`g*6o+X0W6{_d5Zb2-sHAU~`5 zlWqgEHh5fq%G!WSR)FQKE0+#~?c=U1#Ul0C$uh{HRAZQu4>#+|`3WMPo^Sgws3xu} z7jgnhEpNA;T*!$i^@6)zT*wK8v3z>IELq42Bz0H%StgL1rPVT;Dl&mg!n0SZtk`d^ zCr=0ade)Q2fwJV0jszL3<E$seTUU?9{j5HiQ@mCWAerOB>(fE_S)DDiCcD%pNxQP1 z{Exj6OzYu238dF_!@aWZ-49~7Hg&CfE|}%o??v9rW`W1dXXFTCc{`k~?Ov=EYPMjp zc@Zs^@IG$=FP@1!oQwVFoU!B6{?>MrdgL?xDwqu9>B4Or(;y;WXjc!XMzR~dSP!Rn zaAtfBIPwHTYDGt2r)FthqXz}4Pxbh<=<P;fEGMol#Bd66BQ8xG%bD?H;t%)70vdtC z9dj{SF9Zl|YF4)q|20c<CHUIRn~sU#Hp7WC@_Kq6OZjiBJSjbYJg4E#1>C8*p~SyM zRV`E1V}3zSqov4c)DqrTT|xzr&cl*wQc>us-#wmFe`7qQ9M61ElYbv++x<Jo^|EJN zPx@%$8P^kfTmylv)cxsk%^K|;*BxM7|G1t49vt~2dx26H;lRiz;nT&bkzPF@J1mpa zdR|N<GkKm*;;2^qYDVQ}o{4D!EYN_?1{zY&`9_nTTxYzh3th=VPx%TBbX&4!Q&Z@I zB`7F2lX*vHvQSH=eg91aON5Wa&%+_ZqQ`KDdG++~9PUTI{LbOd&H5d~y_to6&v4H} z!T)8rMjmy3pitu7k`a}-$+|4Dj3`h`VNfI{!R>Qto^d3U>InX(jv}y4rG25N5iDI= z$iJ$9GlD+6fKv%MOhIDm1$0CUR*+dJQ<1#1(6|sFR?aDermV@-0txsS5|jEO>Kc<t zVR%0+%IV1KV}r??k-f83^`SkHEX8leJm#n_c=klyV4h&449uMNang}D-A{R`7jemu z`Un#Q%|WK;Q}1Bhe7Te_lQ%;_`3I_3diRZk<(Q2kb*WjfV^k~QNvITNf@R7U;80Z- zg_BT}LeOgj|F)=u#NJ$%`pnUXygwXyTZ!~@cK>fkf001`7o;a;bQ5#i`E4}DC-n^` zC&9U23UJ%$;O_rjzhd?<iZ?H{j)+SNDq7SluuRph7!Y4haZs{HYzD^yo3Dt{$x7Wx z6wc!e0(`=cwoE<12a-bYc@PQ{pN;2fe7-IHrSYlnbF54(9VyAKIMd{))}8+wVn?yj z|AN>PQRe@Nn-A99yiEnE{bimu(Te{k|E~1#?^{If0fMX+RYD`Y$1aWWP7c!ci1GJv zGDMYNTBu9iMiiea_Ke}*etdB8{Va+S-{+sJ@jX_0OXFLje~IP%U~+U{$!SmrUqmo@ zCTtHKmksl&W@)|?Laq5en4F5hn|}vuZsj>5M$jTYkMeOdSSF<R{3Hp&o179M>OrQ$ zZqiP}E1AVyT8~)N(W!^gsJ0(*x+wPznwa%J(Hg(Hm9=l~i-0;*Xv$TC1uvz2-=M#w ze!=BpTp+)llw&V}T$>TwZhN)UOncw6y+fqj4QTJyT(w;g)vm3bKk7d935?oF`Kl{A zWe7Eh^)Too+s_yr@;P&6q@5#yho!;f4SC7)G39W}GufrBN(?HDyG6yMugrA=cj!?G ziF_~ZYcp{{-5WH!>!+{hp|2Ko4M0gft^K3JbT3x?DwGQntjTE8fYsRt)-W$v;eGvW z9w@`pfa2(e22*dSH<OW}c)b?D(Hx&-b>;A{#w0~<`jI7Jg}(*rO5OwCe4f7BWyWI8 z<+&;X0Z#o3tg4&GEB2x8A~~QZo(R?~ftl6>Gwn_E;GOW_R390U_?Dc6zHgMim#Gpw z3*zFk8f{W*O@S4slhqqlK7r$*{nT8SzfyC2ka{hT8;Dn&+FZE<)h5V;Y?p(6I#a?% zVlJWN1_dvOOFZ^AegBjuT>id4WJuwtKx8jm_zH8HW_%qSyzuV!P$P)QB(f2qNNtY} z(Hq+agg*?{PRtGtx^nxJ61_1lo&t4&5Nt25I&*>@Luz?8%(h;^nY%biho5XZa|c)k z>~f`A-s#w^)V*Q{CC@`3=8OfY^>sXsnFi3azb_)+MGN^+!Q!9v`Hbkm0pT88H6$kk z_}0jw8Whz?<a*SA*%tyH5b)VU#rPSvBWu<6E{xuU@n9c#LUzTV>g`jzCIj$t-MX(x zPP4lG2Nv!X?0BA9-T{N@7#t#Fxwk1GW2s0~t238(%EukH$Yd$vq`ns{K!ALKsC!Gd zcuTP1+-_Dn2^1L&4?UgF9*(wRr$9gWxWMZV%X96|#b8dk$D;lE@%`_~31}aJ=H-NX z@BI*ct@&MI4Ph8P`v;5Pzu}a@2EvboU0c+-!u*K+hbn1SHQx$;5wHHCZ@mW`vGx)! z;l)dst7iQ~^br-_Xxk1V^j=iRy>%2nw%^hD>_J8NuHQt1IPJM!R&N0D_9ethyJhs6 z?=%{^!eaKJA<b{xTOH&Y<zTBplhqC8wB^3RL>TAQL$tTaI(UdqFU%eg-WQCPJ68A@ z>us|>3@8&9za-f2I~>1R7c5>r)nZ8uuW031y9gLuG#7TL>I(j<)Ai8x4!s0|IQ|hF z{YjXcEV9EwKb(4-2BU~pGB-N?K(K8O>D}!Y_^-Vl>2u$odKffR(Mp+lv}7*Y?$jl` zjk@zYz#HlDJMrsG^)8A56GP8n@(LA%2MQNL)%?<NO1Eh70HiPETmT#Hz@n{qmMxU< zX{jDY&hRRH5SG)D8&Jj!HqrUUB_1YFxHWoXwyE|(Fndif`(3AaaZC6eanZLxPw;4u z73|ki)QUS}nR)q-AYuq7e>jsM^Kay8=I1S$RaTG}n)$QN_`8w%CE2kOQ$x{uV4G5| z&cxuI60s}5ACjjxR9gmqV?fykRMH6wBvr39n`s_k@N++I0&rwg4C^G#Fud^F)OliS zE>0zc-W-e--vTWhy|DwZ!()R&e?6I<a9I!=sGC(K1+jRUb=xND>)L7Ap=1xFE?Q<Y za+&j{<QSGQtCuM@oPh>$*}=0_7U_p+b{J-u66`X-o5q-{lM70hmz|7sz&S3&G_p3e zU=CYcLcv3V;F83Mf?T_RV`!&ekx#*Be_n8N73YAd!KNiBtH)4J@Y(TQ00419NdC;z zf8n0^g%eo0<b>KW+4_)n{AmD1uVc;b4mi(HvzrWaI#99`@5#@Xq)tln8@@#L!tMdS z?~i8cqSHIH4M1aU;Rtr2Q&Fk;0BRPs;wN{@f<Jv8tUVuC{0?%Ltjvl|KLA27+KDHq z*_|Ek?%IBJoD#k*kNwAl)JBv9wx&LJ?5*hF13|Y+j8w~?-kP+}zzZ$MwL`PTo{58z zHiYLPPj>hr>5@Q1>QY}5_+Zm=RKPCeDEx1a$A3ki5c2p}Agcri$`Iqc$vS!y`Qv;1 z611k7ga|%?T2(iOo`Tk}?Y1SY*^FqZn@~roRB}xfC*$ENm{=9;w<K7+Vk)%La?vd6 z!!2Z!4;=x28hlXaj91Gy!b^V?`9`*XI3H9iRXnJw^Ct&+_ka=IY-n>8zEZ?-1;}8; zQSn?NFKVMiuGr?2$nd1JkemS91i82!xzm@JXG-Q%fY+3WoURq5S6M{StqV_vDyegY zKlPALp2HV;WO>FjMvfn$NFY(MPtHP|-F<TQ4?!UEiDAaulboFnTKMED^^op>Vs|Af zr~c{U+Z)d#W)`$*3A8B$4f)m^BDd~Q(2m-=8)@JmLzJ}2EO0bWg5Ok8TMa3@5vNc8 z#G~SWJTp4@@BuJV!qfD0o4pzwpz^3DV89tEz=1T6ycJX4psd1&XuUN(yKMlPg{J$$ ziciJBQcn^;MXjml_!o_*9*18Tz)<VQZ$b&lU2Wv8GV#@!(dqr#283$M+rmXW+VV~a zQ^l0doB@uD4tZnTG00?5RX-Q^lM}d4fF9W^G4mug@E<}XY3g+X6<L!O2UqDF0QRaV zR*_eT3BY6L0)|Cvc`y3e-|WV=N%%1tef@`+OBb;p)dzIeB@RYqeL*@u=nK*(5(Ikm zVIk;JrwR)+t8Mt}w?Cspc8=u$x-MY-#=7&Rf(Xqzo1I7YCdbOxv9OmjA-NO%>pt!Q zNi!k&JSCKJs=M&aGxpkrdw}Nx1JC^io(B9CcuKtR@M{{LSBV+EQa=NVMXaJaxbX0U z#?09cJi0pJk+OXZJgf27kDs(Z8qV{sGTY<!$OKluNyNrDnYLtM9u9IF{k8`o%|$C= z|5~ws;AeDj&VX>YV9ny}VDXx%-(tSzYE+G2kB%+)S28r`F^?^1#knnJn50?t#%RC^ z+)~JQw7>B2O3lZ5{jKLQ+;0T_@Rsz*$G`!?f>!K$Fi7D_NpcVVM`nQmFJr5E9NDI( ztwZ?I=(G+4UdA>z%>->@)egs+5X<S}o#C$0>A8@xVyy3>K$lFJyy!I=dWV8v<zO?7 zm-LzG(-ar!o7J^2ZJc=w>5g8IWT>`{slsRXp5<&gNR~I9H&-9XR&SvLdowFwGR?AI z!Y}DcaOXL+y=*heQI@@C@XMHA+?j#*LkJ}fL>uCC!#+QZL5>IU1mPnj9$?Br+Bh|q zet#O+EQiT2T;R+ho}^Q-2h8oD#$NS=6XdEE&VEuIb84i)rT;&GA9<g8#UKKH^7zW| zX<i-wr1rwU2`NZD(BAgn@HN_i{@DwCpwrr5TVnW*R1@PZOL(fqIV$`;WGTpz=c|0q ziZt|jaC1<V3d3E4q3Z=*Z(U}vfQ+|NimSRItWtY2cy$ExrnIO8iOz~X?k$GX2*?Ox zfvyc>n8onJF(Ej*nWjR?qG0x}Agng@JxW=z!x@4D&a-Z3d{K08A1MAck&}bTvsFdy znUJ1!R%|iG5h`9$ft5m`6?=(KwSnyD^e%0Xwu?~>RVoroggHcX)Iy?GW|?q7Un|B- zPlJe+OCnF047=ajU@@RrY~5bW{)HnJP<li*1x-6STV_gUj5qVpv0ghGY5ZfT>tkA` zMP(B`)m{L=z7LOjJ^*x~#CrfURI?SPC2xw3PVe*UfbdY6RmMdBFo1C;vFiaS<vWM~ zlIW0;qoAX?#=)p94uOEll%vK{*`MmRubbVCXG~lDVK{DMyHlS+qjFBa3@iWgbb!lv z4wbYcWlu810ZBj|i4>^gUAdHrM3V%Q)FFD%q~g^6!Q`|Z@ir%1#&TPOHi^8PoV+96 z>U{ei6NT;xdL=xE(JbHtQa@=$2k(QacPMd&>rrHIB?|_Cx<bgJR&^@0pACm8IDD6U z=A{N|?H71E2ygWSboiH4kyebS0y3wmub>ZfsTAZSbDBEsD>U>Jszq<*DrXjcNzdN3 z%^GzbYGR(Y;&%cv13Cs_-$e*S{T+sOjATL>oQo%l0T(6nI!;ZT)=@+~0kWmu_lhyH zYQO{61BFxdK6QAykF%a)&<&YWy-cVd;3EiFXs-tt9&Kkw{LiT+u#p2<u6?X;SgqL- z5PYiMJK2ut0*Ja+f`#FuwGuqcqXhF+Ka7LJ&zH4}++W;OE@`$r>Gyyo%2RT$isZ!# z7uj?OpMd|JwKb#bXy6^8%`RD7Td@v!o3gZ=&=`wJJP6l;oOc(<<O>}6ZfI`REk*W+ zt_irhM$U>yK_)FJJnqtQI|n!pS_-6?@E?){iFCzle19_s<X2$f7rivV31y7N-4&g2 zkEXx?G{aDR=rxa?hksf$h7KD8KYb<)8D`fl>P;}MU{8Yl>WBcxPXO8G?3=wNl>H8a z>}1###hYd1RxAr2fix?|bqX0gzoOq}aT}<k(Wv$rAa^r-2B8vbey4(xS>^B<{GxpZ z<ES>M#VWbML_G&ngnonW8@W0$r8+yM?0Wz->;k>ifmN!`r0tYgoO)i{)#48rNSP6T zK>zkKLqrb&JBNywTDP4-93**XI2{}I{uqn2qwgG=2l4dE0;XHYLKYxnst{46;vm>Y zN}<`KG3EH_!}uJRKGtj-%+G51DoG{rF&=$0>om{IYRzVvCQZ@tEIkyDX0cUH-%0pN zU+GUd6t>NHqT^X%72cFIl^b_OBn$3}Q{b+s#cQuba*3Osn&oaJwn25U9|mS~^<0uH z*WQegxpHdR@FnD3P_p%Nlw%HVRFbF|gSC7CUy7_k5#p!=3<YoRymAQkyJN)m3BnO4 zb}SrfiP5>nUUA%F(9K;dlEZSyA|Zw;e;4dHIyX4zTq&&cWe011?J(s?t>tsnzUU7c zL=4}dV516#GGO-wwW;4DC&;?6c!?FepZv=WhGK}{`ItU$7lytb6L}FQa{8Pr5>09M zfodfu$Si(C4zA5$ac2^TJ(`}wza;z09R342ifWRmpnezLCxYC7_68QNS=yKGT{ngZ zSAL@FpiIsTeTYuq=hp#|1EG|h{V-13j2@L$VYr2UL*p@AN4RRf!F>JX*)m^qY`gK& zT^znZg^`qbJw2}uL}TgpaqdDNwlwpr+`qUNNAWU;1O#Jlwc?EU1$E);mv3{NZ*<?Y z+jj*=H-iFZc9jD`m|cAnE1Uh8)5s5KPUI1Umbo?j3EncLfOh;bgO1FGY10a5QWsJl zi{ZjUm+@?r!QNnwT`G-f`1PcF8(QPkOs^0%SFUF*I~=strK-?c=G6S~XMkfNs*#<* zO7=@&V?Eoxj89%A5I)zV0FIQN<opvwhPMZ{S1^wPETZ58J#T9$y30eeT7thG`Qf%7 z^nA(aU}C#FiN0r?$ia%_4M24j<OIj)5*0|%UHm>$H-W>P^$t`oN(6F(#pPh(qi7v- zxt~0)B6*{#OkNJTS}n=|c}psbH&-UUth9zUSMa#*xPm<OD)bDq-Q#NoX0g1;sW`7v z(Qij^2(Uh5#__=+Ab9kae6ba%w_$oa4rv@`arq0T->1?j_Bqz53#HY_!Ik|shi0N7 zw1gQ02b!{?)}5OGJwnGpw^{GwXDHc|Ih;E};6w|M%Z6fB<m7JMei=%5#eA(5+e8-h ziuqc;sCC8sI#j`RoE|Z^K+&|Am*9J*n14W1{m(zqw1Aiws=YapL(B_F#;Q$tpe^JR z^EoUGO??Em^SRsUkct$F^O{Of1#8+;aPVk(@)9ckoV=>U!jP{A1yPE51B)8$2k{5@ zRVF^b7(z8I&<ZC4fm&Z2<l<X@$-@`e<Hgz@Z|g86SL~ZcjL_i^(HmC}clAa&zPWm1 z3S>m?U#TleR&ujMgnlk2S1?dX^p>mv;j{I)sBe4P*Aq4^&uKmL8eYP`|D8PvKhpYa zX>b9$GG{E!#f7jFlOtW_GSKY@R{i~$p%@`A5FF}$arDlANMk4gOdrv~xlmMxptDeN zWP81H38-aXDxg5FidKTTbTYV|@8bh=YHB?x<NyH#_bXuTf^Y({72hAaAjpHO$+4i| zg<!~$sFuO{TB<vJpf%9bEC3BOz@vdyKn>_pt3Ph9fe!p=cbiKHnSYr@hS(;ibMRZM z$kWksI~Dnp8iXb*ig#!g*@wMTMRr9slRFx-D)!`xd`7-=9cX{`4tkgCKn<U0)i?h` zzixUPx=oLuf-@y#p%Z06ZxBKp!Ug@sHh2N3<=3xKO7n-~-<r8)u28NE<*J%FJEM3O zlRNRM&gm)3Kz-Sh`ih5h=?B0%l!i2{)qpNMt{|uvj7W*3>RGII9FzXsDGd_!)lMz- zB7@txlJG1XB9(lD3T`HEE4~Jx@GWY3-qy(5driCUhsY4bchAK)3AQpwmIU26Bo0p3 zwj7gm-$%q8hE;VBbvY4=AE`h4D=;H*y23nGsFn&RI~DHnSD@~6D_FC|otF4qs$`og z_AqDzf34a6T66%jt9+@q60A$u<W6?u?E=Pl8Lx!vDfPj>wc-ol1ujw*Qa74+)g%wC z>3_-#b2h-ddxY<x8{fwq$(A*#&@wX6r1O&7OyIyB1b$Av>HRVv4DEgXAmf=A=lb{K z{QCucW%pI@7g(`HKm+y+^p&Q2+&9<?fW7+$W`~aJNq6tSijBsjtdzb+gU%iT{6%<8 zyou||3UV`{MZFE|Mu+@R2E`k`-pF~2`U-l6fILr#%vKR-AV#=rK=$Lz0t3>s4^aob zZuTFp7X2Ib?LQ0vB4zL1ogcK+PFPRv6pm6ndU`Zde*mXToD9j$w2h)bhFq+R`M#*t zJ{*nLMTZ<9L-|uZUECZXj%bVR#qC{#)B64#7QWS^UrxB#oaEPzGQtrB)a^WZ`64xO zCwxiU$K0P-0HQkchxVV(TPN@*3BOgJ_Qqd>26Tz=dk*|*Z+ycBG(Q5(1Ab@!g`O;% zi$$aF{QED(*nhEN(@-V72Xj(%$f>2I-WZ{+OTzQm`VrC+<`=S+<W%8a%=5Ar)0E-k zAwp__(opfT$g|E~%sWujngUDK$`~Ky829$j=njlbm#9PKOd5R(49ni8&r-eCW2wG@ z9w_WR)J8)5tkWU1x4IRRhgrCwfQWGlU{Hl0$w^E0Mo?}P%855g12T-&P^L}(Hl`MO z?bxJW9!L33<Vy^ayMt$z5fp@fiy-V_%X}<IzXyrD7qa1z$i49>63P5LX^Ff|N+H{b z7Rzi{z+aFIrvj7FAs3a9thcxnt%8q=u!#Qyst+T)8ol$#BLwr7^vZ6O_C4pjf|>RQ zrR6iS2l=E32}fqg=knFsdeBig8T1F$4E;gtcJv3i<W6hD&ydr-C{T|4M2B1vz$mda z0%Ba5ov=g8EHjm6%53*F7_!JLm8%}S(NMM1J0k;nixu0(FBFwpQH(^e8)5Q=+JP24 z-XbgBgueAgv&Ug{2DKZvvT=8{8)Wj?yQpfMMX?(6;`NhQv8zzW=PRj35vUA$N;-g4 zb`_ol@6;n5@SwHB1T;$lrQcfXz_boI7FgA#3ekebZ(4^;$5`y8(rOf=fL6l>fW)ud zgXtEl1-Xhjt-l;SQw=e*FT#I&)H5ZbXT~^sMh67VMDx)htNtM5dWL;*E^)c@3-E|N zOj>mG4V5bO&6DZ=P5cWJ?7R#nclPCRRxl+Vt{%XIEAe!fDYf$*mc#wom<;N)tr<bX zd(d8MNLWPQNaiv}gFOuWulX|z4H3&_<SJ;f9v&^W6nv^ntwJN2T-=9aV;&PBcd(Y* zQ|rUye56jIAL=nn<&h@S@wf+{*fUgbj@o(@s?+X?W;Kg2x}XPOlpR5=GI;Ix$Q`N2 z1TLz>YgwL72|U>E<FChCX4j%+yw`&$M@i!B7yNCf??Oxs;W)au{}43sU-~>d1t-q+ z>>ezTW;F=_y83P}CqyVNip&HrSg|g66m>`WORKx7QtC3=yYPX)0O6+Sa9}Gs<c7h* zR(qqoa1_5(|Dg39_rqL&Fqs4OJ$|gMXjQWebmDP{_oN%2TQ(AySG?T1y&v>p(Msau zZ!2B)^0dGk6_}b*$DR&H5>cMjK`Y#hxe_6;6SrHpok=LP)*Zcyt;qM~opN!q%mj=g z9*85<g^nNzYL;SUo(^`I;IWS!{fpR&irUM;0*KGJ8#J{W@t><7H93a@Y;vxSD)ZY& z-NBo>R4!yElXJ(t4VHNZEvEJFP2TpSL+sOm`S4WHy~O%A-)Y@@2a0)hFTdSI^oj13 zpl{eqLQ2S~B-L7u``6Lk1=3xN>IlgA+U6~6j=q=8RcrPucqP}&8vVCIkB{*w<PEP4 zbu5}R`VXwvPXB=vb^z7P_#FLqttg^EmW><=_=YIDui=1zdo@%$v@Hxfs?~~BqZ;M` z6U%a1bjY@1qGBwMIP2X-j=4K~7%QzfdX32h5gWzzdFpAgr5f95qh?hC)Q5_fNB+TG zAgX(`p$Rp$iNg*5l|%KKQfFX*Mt)H@lazM@`Er%0*OaniOMqpMIrW`ULp{{p1pG@p z`pYvJkEeVmKn3X3r7ZmuO6#c65u~&Uu*GLl#FGIwh3F~FLnbmBN30O#-8V}X^a48d zR1<A9EvJszcCx8^6%7_7Bi-mK!3R+|wa#OqNg$@H$!=y_==3C1^cEt`5zpYdBC($b z<E<k3C%9fNf)faiuG&d$!9inG_#}oZS~12gO1R?Q{3?F>7pOXrv?5*x4N-wm`gc%9 z=4TYlp3)SZo=54N)D~HYpT7>MOl-4a%b*Bc`6T~XxAj3gXb{12I1`QE>G>`?<bl(` zRKdhZcxN6*O~a?K@<h+6hdANY=v%2u#=}rU)8I1~MEb~z))U$}OM*Xr94dY<+>1e_ z(5n5gS3rAG{6sQDuBtJfU~MU46+hyGHyD82{M>Rxc&?`mJF5FW>b2Uc?26>&@aW*M z1uqyGiCu+tjES&rKa4n{e3MK524&4j4%-SXY9rXy%+(%c+5zQF*beTe7R43W*BhSG zqE2H)-<aL~2M$fVTjC)66hnv(M*L-Bi4`vd#qB@hKaQ8>QvYE*)|uHA$Z&gvgV*9l zE7k(-;>K`Vah{$=a3>HG*=XWK?Jw~zRI?3U%Vr1wR6`+lUgF%vODQda>l?LBI*+wE zUwN#B`=GCMsfWSWnS!d8L6i<cHRv6%gdA4ku7%O2R{VH;vroi-+L}2KV+xw>Gvv7f z{<3UpUyc!^XIS1?*7zf9$nHlFFf%@BLY);GjNjsS19{WC6RHt}HXS0;l*C1}=~{cC z)Z`AzCHR%0wa6ez)T7oqlvV5{)FzHmv7Kb2{F7y|PY15SIMIxD${mhjlY#6?wv0i5 zZRp%v>C5l22_LnY^exfEU3+w3*a+5>Xqqm-J$w2Cdh!T;s-E}5$)3Z^EgRVZ0{G>q zlLeobyf7&l%`uIDYc{BpK0-&BsKLC|!P<odQC5fBuG(?iO?2FLlhyu9Il!`liRAn0 zAa28&#nN~)nGbb%P&IU?qp<)Ro69$w2sAb*g2CcD-3nE~#GP{O7b`Mg$BHpR+0`Gx z<h@e60<pfKnw{Xs;at3-D}CH8GO9AZ(u)5<Ug`_PScNTBAgg8es$fDtg($4?N7w`P zhXWP;%Bv77@<aoWeH?l=a)Q1(M4qtbcaQEw7N;d>KDv_!9i(I0Jxn6|I(tR-k-2D9 zRDh}!k-t;FLBgb`1db4562R%Jf*mz1KA2)$G_pJE_5on+61v4B{X)qg0?iQ8^cTRS zcS+o#STWvXF9pN@LFA2xtG5!zP+r00tJ1d>JBjMa*$g$^r#D33>qf|*D`?;dpt3&0 zEa#wxLH>t8keORczI%<z%UCgKNN4D2#m|NWvN$;)h<opapm9b4@a<f_^)~XWNqz!J z;S!yk3g;Y=s!ha4IVqxIG_&Habk-D)X5DWu!jzdO|4#E3outdgwzQk~A455xlYJ#+ z8`Nz;@9MH8;E&hv#?hmR_kel54?G>?D?z{`qO_`HyZ4gx{8oaQDVP8q4@O=M=(}Kz z&Hdj(ne*;69N$738!^$d-jmQWa_O<|;XvI(U+xdF2gYlylX$J<b&R3f&#A4Rqg?{J z%mvWUjNx;LKXRc*D(w5ARLnReNf}KZu)2Lf`n@NvYZ>0U@|ZlA+dk?327CKs1oP}< z3AcaJB@XnJVC+8+p9GT&ePFr!K?A7pk_aO(`0(vVt4eT$9TPCM{TwW&LIJmH-LXwZ zO3hTf!koC^YJY{@0(HbBO;+q6A{!FyM7s6Tl6!-2I@OA-YI@}Ih@TZh_Es=~UgO|c z9HZH8?ISfP9@o4@Y*(O?bIy+q$l*8~fkBs<W+2ugz&!Mio*nO6sOQi&4jOZ)<(Wgz zTkOoCW1yQd=g=qWfe2o39UO$*c2;bN$e0;;yelzWjBCTJ7_;GXQ*RsgQldkS?+?bq z_HrjOoYy;XZxbfaxD1xo3-o%S3alkm+&sl&zB(LTQoQh(7Nq#*&O|2{Iz}tT5=1aB z(2G%@;TLSnqlCk`2r|k>)x1NvmK%lYTaI22Q4thlP3jcy^rr3{yW7<YOXu+MWmqbe zW2<w2O%12uvz*tdrD3z=lY-p{grnjdWert#p3u$+2PPl!8bVmeNSut;8dh@j(#P_= z2UR%7#efGdu~s-Ey^}nA2Po%LFdG<C2QJDXEtlf~`k^d22BZ2!k1F4RTfGNcK(NfU z_i<&I^UEQIGW2wzm)t^ff5)Ame4US050dPj3Ds_ZA5q)WRQ~y&0v=#MFfm9^>Lw(1 z5ID<{<2!_6GIcxgW5vHgC($AA9VcwnMdm}81X_tTe5w5tOeGc_^0F?I1UaY&!BW~c zrVdyJ)?;#d+O1{DY7Ff^nL~TeSRDD*{M_g+NHGs`B`5BPZ=H6aaHor@XMH6>|6ORA zylGz#X(9JWwBfNP+K^%Ri!l;<W8!CnLbAMbTe});2MvzsTgU<F6Dt1U`cDmWny7a@ zd#XzofQn4rMr~9_W+{HvAn7fDU^n2CSf{aR5Qd@#X%S~4BhT66@u@^xuAh=^@I5OX zTZ(x`?FU7HgGex73<-rxjSjVU|74nua}$S#uN6CvDu77NY|RmrB^a87-ihNzoE8Hq zrPxP>kX@qev1mc7sm-rxH3dzMHnl<K(Ns?XI9>1sw3(@?cD)X~%w|n(#^!T!hooS~ zpFHiD1y?axTz}|mK17K`S^}R*`F-TIB#0ZwEhxQhxf`&NCj-ulZ_EoU!E}j__yX*` z52o-sowsoi2%`C3!`;OUa01B(J?!0MTZJ*{QfuF6Ke~fCIz4AW=a9YZb!bFacyYeQ zn-ab1_hsDRHhbe9nq5X_dKuOHD&!ytm`{b=*h+w*qE#aSxe||NToQ2n0#OEE=p4#` z-k{yfmiTAV!qH`-;X#m>0IoQv1bUJSQ$!DS08L~1v%Ii`%Y1O`qAGKgEL7Slgyt*J zZ?bm5oS_XVq2w@j#Pl!TwaWru^GExdA0~|Fn5o;;`$W%)c<F86eb0maFs3_SgD3hL ztiWfDw<Mbyf=9pLhrtn^_EIpum)W<HJ$O<sRv^3y#OqDBDgQzv+%gazPvaH38F(GT zulqV&fg)--HGUS}ctNycaWK3O%w~9a9n7gs0LgwAZ@iVlm-#Ae_Eva_72eCN5b#xa z$6H|rE4+a>o{`&OYFbYouKT?Y3msNb-(xzppCSrieNsEw`}_!9ME#lzLfLNu#n7Lr z)jsHt^Z_%{3(R+9l2Sh~sgFFJ+oM_BaH$Q4pchO@eF^^;_PdY5+!VGJ)nUKe{^ez! zFoOMc{-T%gtoD9|5*pcOtp5BtK5O}@{~W1G<fZBc^6AoR0Meqh7X`Akj$@1JAbd5o z=b|>?(Ph7+#>Nu;A>gGhy&mwKFUpAyxut-xom9`3SolIT79H{@c{?7ePXmw#RRMQU zj(EzA|4Vmr_CE=Jc##L%v9CJN9u8>JfC}8|YJ5#0&_7Gp@2Tt0@zg)at-lGtWY#|c zUuC;m>T^S8H-Q7_8)UpK>RI_~knp+rcpqLGJA;`jM&|^(<u=NB1K9lmtG*Q{e&CnH zr$9c^;d%03B)ilGxAE?lu2XaMe7oU`nP2eQzep$K8mLR&RftJTJYqFF15>xKkqxS5 zW46JQ)MxEJQihuz8?c4EZssOwBge^Cpxa>+TZ0=m2D^1N^>O;AB(bVQCeg&V;Zw?E z4Y-UZyjSW1GaeoRUV$n+!1vSI;NjcRMljJeg8Y0<IWS<0cSYVtrN{+k#p}Wc*XhDi zvO~?zGipn+!|x{+<6Gpb?{NYOT;OT1o70%B8%w?H)bHk0en3}N&Nxa&ms#^aGG1TF z$ixF(6A?mY&O;@BK^ma)BJ5GEFA<cK7p+Wotl4phb^BUiGO?ts;Jv(2A;%BWTAJ6% zieCext+F<PNS4pb5(qUyNTa$0`a9N8hN%~KVgCyR!AHE8?<&p-2O)3)YyMX3-0)hI z7RCL9nnC-7dk1UYWZ)Ez^-6V|H^TXh<PEuUTM|p2ijoGuHA^RY;#9c{m7I2bye-nT zDR4ZXf{!Xth(G*0kbhaCHE=9$_SuClDiS+F9m{c&k1=KpT7jWZfh-n5bpuot@Xe*f zLxi%V+wlbuGH++JM`f2zwq5jS-o<DL;k_JSW^w2hL^{JTe_EVUV*mibi7u#<(cXYP z(QCotL7scInD{#Ya|<EA5aH1^0}qLO7fc3olSMePuLhl)8~GB!^*LpUk93!1I0|<# zv71+sz>2dBVZS}p-T<Qv@xDEHG%J_b%qxQdcQB9_BR0_f*qoA@hHUZTGs;;uyVClI zp^@c94XI}152(30_m{{j<Pg%el4EjGO9>}HtSAxVN%M|_Slm<){|?)sXj#V0V<Exh zS-GKZ?^hs@F+}JK1%SlcHt}fsDFdQ(dzF{&Dod;jEpF)&+VFK~@#c<l-dga^WpQgw z9+1~j2jALTg=)YvmOr?)oue;?Bkn%@U?&xc-C$=)8DL`7u#T<I8qQpIAFC{AJDK#6 z6hv4DYHQ2=+4$D1Mj(GW|31fOpb-X3xL|-x-w!;`)2YHo_5x0D+K%;<n2Hjt{37O0 z+6VY~nY4@aq-j)Zzax)SB&K3>7l*rez#`9cxB&dvKL6;jF{C5j>-sgfe~8DNV3Yga z+XG<#E59ect@$<^$%@d|urZPwEHMoEZO+V#HCW}V;ZMvj+CFRcMwARDqyk!x;wdW- zgD#dg5qLuU^-(P^vE8ZQ=yQPw3#?q6EGp!-Keageh5bF7pe!Koqj}AbXul#URjfFz zgi2Hlp?qcXL8^p`ejm0DyExy9Psg`l@|=mG<m9}{+Tl3Y4E<U=3Noi~$oQOzIFiyg zf<;_IzO-MF&~45i)mGA4wr^gC@HHW3M8oI>b8v4>LEXjKC9R!`I)o3X$o?>tsLBf^ z0@%~>mJ24{PyLm8IC)Nfu=t$5R(uMWcKNUyv+b+#qb{>Y2XBu4mGM2waa-}Z_&<~^ z&8t9LA*i=d^8B2N;uQd@Z}<!xo|#yYyss|?9qP9>Ew2oS2PcPWd*p_S5mz&;FNZtD z3KcI7cem!}w3hY6=st|rpG>?)j^X?3gT>NNI21~p51A`PHmjk|;0>JyNr@ZQqQ%10 zD!0E-O{0TBf!Y}l-&Z8`K;~z)mUYSN5P8NSCFGCaNhwn%+`VGZIRnF;h^W@v@&Fo6 zhEv>AZ+qD@;N>sm;}gvHP4n69QH&{A6UYM&e7xrFe@W82L8AlV2}KR9!!F5<oERK5 zIzK$wnm@cPx^r*bPQ5(3v%7U~Lm+2+_z1iS<6IF%fGjy|jEn%Za@&jU>=FK4h^P58 zdV2TBYGE1uoIIzxby;@gL6{($vLnlw*n%*EpU!L>+&%nwjp{Ktd+O@cgXX<~FF$;m z>>YGRJ}z``&7YiG)DVch_A07I_Vx5vTk^x;>?xnbRz~)29abF;ca^>a;6DIOUJ$^M z=+6P(13UFHQk5k~2ZF_;`-a6HLL;3b5aEm=yYeUH!P%bjIsaFA(~>ZgCVv`tZvO+* z?X~aOUmkJ=dXI)wCa*^-=oJ;m4GUCUy1KG>@r(nI*yhsKU^cD>Wf`q|9D+IegY8@M zt8!<Jp5~*e!?z}1vpe4Z_6&4;0c@v#|6jkG{_T_h!G#CtYVt`JWIXpyKfe^iVxXpJ zpdH0}LN@c7y2`uS83WZ-vc_m0YkxV94Wb~kQH#Rne3D$W7957eICyy;h&D?e6LnNb zsv3Jqf=@0c9Q&3@Bq>1`g42r{ep;NBm75hg-I{-5Ao?riC~_1&2g2tdL)_lTf3*k3 zilXhTnr%H$A$!VtTCva%NTjx*s9{2#Ll;VGb%*exRI}Dc(XX;2&jJ3_^Ir4^vT8Qv zM$Q70<Ul_{iw(;S^;;3_w*v0ua2Y(w;cMgTBPUiAFQ0KV&RGQ)t21C)9~7+ZR20g_ zv42!aAoi@^id0WW9-A7Vg|MaXj5m9GsJLOe;zD5YH)q7wBOiD63RGqc<1p;uqltbi zSXj$HyLvO-)k_tLhG4(#skfc)gcl-?6%FC##@hDjJvq5&L(^iKXL~LP7_ZE)GFQ<I zZh&0NgBC4(hs9Tc3$H3*2v#OL1TS43Z-qlD)Fo8gdu>Icdt~p*LBYJrL@*y0k_Gx= z^BCrS0AU@$yl|(I#Pz|7#PFQ5S!d>^9@BVs!q^BO2t6!6JR~|}8aU)y=)}=g*8Hr< zU|cX6o!&V&3pp*4rFachSyS2<(<~mqDFPb~K^psGX--jtJPF-{$$hQ*?Z}sa4)$+5 zFF*B9KRri6;UpyXBnJ$T6G1T8MSamTRM3X-Ags@CAuyEyq+{ePDAdD5p-#y|wc?M% z2eN<v`OBI{oD1C$X~G7(1~q}dJ}3=b`}p8OzOMY#qlky${y3R9v0F@*iFvSCrntyC zq^$OmHXsGZajHVuTcS5lBYq&a1Ix3*dyO4m)KD@Gh@gHh?aO((qWCM|sc(2dux1$m zE6opo%u1|}X2L7l;b*?4i;HO>*&rA#GhPQAA|cn5{EFmj+LY*w8MQJw0Vc#KNCnM_ zYhbvP;mBDrJX6EQfD0yq_o3CtTk|`Bk6a+)yq~OOAc8(0!w(I1DbiK~+|Z!s3TS^Y zx&;Sq`-ZTFz$|$d@OoDM4ZYEH*aCNDTl2TWs5%*D$I~Uzg#}`GSkkWSP_II}p<>;X z6?=$J2|$+^l}8960;SOQ&Kl0q2bp*wgs}@Dsll2W4p|!|ZY@_HLp94Cdqq&=mN4?} zjLE9uY7?U>lpA{8`cCt}62{ai4`#|J6ciFjNvA+->Bad-J5_uZt(wvsVK~ML^0ZyU z!>*}!H64G0UX0TOja+(xb`X$qhg|X#)T*eRm>Zq|SX}u0bc1AKV;Q>=I4cUIxYP?F zOMb<mC%wdj5T$9?i?r)$XxECv<{iTGqHh_(@g7=y*XN`wilr6A8Q^VYVuH|3f>$!h zruAVa-O>=of17&X$Nxq*Ga9Q#XRZX<E&!Ghzhu|}IBG5HOmbc1l8e8b?+&@nH{@!K z8)7jkDz(PNFNGgUcehqSYs1%48(Q^<@;#>twq$LPiDV!HeZxIT3afrHOt8|b$Z72b z*60Cz7vEJ|Rld+Cd47KCHMhTD5>#`(r{1W8BzO!CozD(7!AsYKU>Xd|om_=PgUK0r z%)O0ZldfnKGbvVkrFozaSEys{10KUFlcpi^?{-#$p5EQ2COq!?*J@gF?SEj*Mjnj) zP&N7YxBtLgZ~LD-h4#Drm-dGZoOLZb_#eih&igyMX(}C9harze#%gCkSF*!77^BQL z70LZW9dG)OYqF?d0OL#Dk)C7p_=XMad!6+E`^TyN`RJbe{|1(r+VA)Fuji9%5yrJO z4Bi?KXAbVVDp?2$;I5yI&JAB-Yb>^)kO0&^?r+*|L#S1v8R_zQ!`7uecnwYDQ^sHM zB~rUP_67BuhhZfDA#KRtO;5Gz5sZ_3^YX)9x_0C+`-2Ald}cUgkehli6TklpU2h^@ z*<XpTzrVm<RrO%4-_zg!A9{WP#5(*W{V#sVJKkRG{}1i@clhge4}W?6R1Sar@BDo| z@oxBA;3@LKQ}ZO?c>%cc<Kw@<<C+FE{Kc4jk<(@PFihy$QVS-Y<r{4|nFRL%1jD`9 zfVap}ct1=|{$x%8dO!EkTQKQcA9{z9w>(7!^qji&L2MU1NqdKZiwJ+*!~G8H+)sI_ zWl|OXF}XS*fZ7<jy8j8Xyq-T`ed+siATghW&kZKuoJI>o%IC6t^37_zP@UxWq<qR% z#!WTHGjp6&Xnuec=Eg|#*zxu{JYl}bynm-0TC?4KfRQ&b$LSBem4d10mgzQ=Y!eRN zFQM|Zy<U+t{v4u}@?MFnW<$xdV2E7=Lu?WZvB{X&5fzMOYhvmcE5`H4*8F`CcNE># zJv_avcK8n^(Vf{-uE%nt3zzv3Se&C^Wy3F9Gi+jZMQxA1mC3m>or}X~^q5dT+&eHi zr?U7RHaTS)^RC{E;0G9b>q}e9axtSnURk`!nYYgpuMZq)TyYq4OXeq(KRdT9Hd`DI zQIA(=?0B(x#GJ)??YI0u=r=-tSUZ1DaL`4@-&4{WHFNEB&b9MIZ+m)z9Sl<|i*xr_ z7Ko>{i{#t;Wl;e5624HsP-to+IdHsU(hJDsfQumtYq&qws2(A4lDA+<RjQ}TIB0cq zUKlyZFjaye<@s++eyuF4KI>{s2lV$N*MG7cWGU^NEXU;{9T$k=EY01n|H{09%Q)0h zt+lwLwNfigM|RC~i(1DCi)}7bQvgTm6Uv2_*Nyhc7#W|jzvms#340z-RaB2>_5IFx zI#x}`tN&wI+vj6g(JOyrSa~x2mgZLJzcL+jSX<3l0P}a$j{x7OB=g*&c5%Ab!&)T6 zqC#^0W6t;(Z^QAGjNt9y$btjK_`Q08@U!kVb%XTOq9#$x;c7C<Pz&0F`En$GpD*3x zj%NHmjbwzE5-Cb#egl7D3t|%}%n0j*21s3uzgVw@5<fVL*sA1haz<O{D3aXEC&H0$ z{rOU;3}%$Qv}Q*~BzeHo8xpq61i=gsW>_FhGVnPsr$r{U=>>tJ^|GCzPUjfl><?fd z>I6cGRZD<xbgcD*bMUHWX_Yyrgm8u_d29eCqjO_KA*+7J>CV|XKz(fdU&N}I)02qh z1sJho0Bq4#<_L#+=5q1f8;-(;Ha3hbwy>Q%sEZ>%*Q*7uVjO{iC-;rOHGwS0-=Ms8 z`#83Nvs!Yzb=zNDyU(OUW;c1DRnlBjiDn;=W_vMPa&&t4wyemJ!P@H(O|;s&{R;Hp zW=O|<^Jp&hFO4TQv<BNMzM=P9Cn-4Kx5E}{Fu7m<rAKEe8?|uFc3E;LBDatXhDR<q zoWrHxlajaY;8i0XuTe+@C|N;r^oLM#I+vT@i0r~A&?|X8Vp*+O5`KpIo5)dk%PV%@ z3wFFxIeAT1=ntV}xBzQjTcVuO!~lmitINrSvicOtk{Ig+%wG0pZs8ajLOD1z%xAU! zrdqyc2v&PYs&x$E$dwQT?h!@jQNQmHyJg+}I0mba&Rud3w#FmGm>#WtFvwsax2y15 z9~?S}Jb}0xOENWJ-a$YwQk$QQZpi#sfdMIJMeA{spUz5zcoQz8-GOu?L<s=Vr0xRG zDH}lBKg-6H6qSuB&48Z+CKOF=(0xC8FG9YUc~ux3FtB$Haz0_d1~8_c)+Hk-$te*f zJ-C={nv13N1MLxN1gh_Wf>x72%*{{7v64hSTr)6DHBb$(2T7{UV}XR_SagzZU&7Jg z42A&VWOplBt2Ug~fvEcSZdPaTEi*z}F$R_teFFI!2l>)b$R@V;uSPU;t@*w4u+R{} zM-x{4diAWxXl}`Zi&0&+`5D)pyj~TpSIuICpa%$RA{88Tfx2O|4uF;s<*GkO!zh4; z4~Xt+i_CfhNNjW3S7)Q~H!eZL@`e-}EZupVydDYj0vOee3K&qwb5O_;Yg8k1SBpGC z3c&tmJWax;h|?otm@yukP0X|&tep(GUOrU^C>z06D-nEWzlzVAv=0gqo78z2oO)hJ z0C4P^0k_%N^wZ<PI<mrtskcMP!7u@#cd%Fk$Nrh`$(at}u9Jez>S;9Wu75Ru{99iR z#T!7y+ynW8Bzm=+KN06P_(d;q@gpA?!(@otHk}`4i@&U3pz|icA8IT36x;FAOrfly zf3q3&?Op#Ld+!1tRdp_WCnP{bWXF57DC23gN%5_T+Lke1X2=Bg=nO_K8nsp|7O|+H z%m~OWI5Uuawj()JTYI+`tG(KbB2dKyAwg>uXjQxw#M|BsC|-boLcagA*4{G{pq}>p z&iB6G`F$@x&FstC>+-B;J?mM|l@7Ct=rA9ot4Bcm<X>01IwY6;O8gfZPFI`WJGpKy zx^5}D7Cu$}N#o5eBDCjXVyk!2BCnjdTI~;4*HP94XXnZE@_VYRFO^}bcP#qBGJMBk zwS=$#!0g=HPkc-6tb)#m&jGCmstcrW=}LWtIrT!S3!f7zOV+t*F2Q&1FnPF>n{!4} z^d5CVNeSzC&S*A8*&?H8v9q(vB?g^o?MeQbR>{t4*6x=`eT3Pg2v-!A&|6%U5?#Yk z=BoMml+HVfYdOoC{H>b))_$PUCjkn!2$DECW4}cXFwFSJS2uU|469#LtEfq{S=Q{> zBdb!IA4%=Q<xe(?)IK7f2_a3b?PrZtn=8BR+fJ)qnrJc{INm`2#MnQ{>N2x5(g)}Y z)(ZOV^Oy!{{aOLApqV_b6by6frP~Wv3j+Es$4|DK_HY?TO|*8qIULMO42jmRiIr|Q zt>O02>fBvwkZOdz%_DMew5QgF=%U*~KVnwr<n~zh`hF_lG<UL&xi51i%8f6NwD!4c z)vZ4N#IsZSyAo;3d!JfcA@xb-igTE^AMi%h)aOVN2lX2@nw}wBpew-?;@BY0(Z4k3 zN<dudD|N4vuf!0p&v?V%7F^rpoFKovnkYpCMFmJsBfCiMFWy%ZKLwo52~zT>Ogx31 zZOm%!nF4)oJ@2Xgr*ZxqxU9Wf;={}7?uiaAoj=&hHmz3Once+wqMR^gjs-pP?8+$j zL`h4i#CbmZaj&XD&Tqx?j%5?2+CqCp_H#APCWQ@bCE7B~>T=>N2S<k^Vl@%}gL)mA zEX6Q&J8{`NfkmY=j*>K1qmAl3IFPSQ9`oUw3ild>Ua(7I(xJmIWEoVkO^24pND2u_ z5$<<G7Ri$-dZJ?ysGhuWhs?%1&MQ2pUAPnyR7kTt>y~FUI*mpPLsfL2^JejhBH#>H z6y+bDkmgD=pMF9z?PQfiDDcllXqc=|J06+c<<&yWBt_&X@e308^)|z?u^-sivI}t- z*C((50)?1WU7Z+I5DJ*EdBsIyb~ORnIFs3P;NEn@nO;eV$mvZw)u*mWRekF^x4Nh` z6K1)rg=7+|`A|g>0GylTfYx8p*}`Gx5lf)|o^yo9*JS5Zav0Q7w8qL=90r}AxH?tZ zcV&vzT4IjYIIr~TdHXBBxo)21-uK$LSqgqviEj#%rq4@`8(~T6^U?wHH&tQaLG$OI z2p{`*fBycn6XB;#<Drg&{}ZS2d`N{r+ds3uyI4=-D8<7Na7<037M?d&ZiE4FUU^4P z<A(sUXc~{%ucvV^zkR3iX(@>LhNjO4%^&$Kcj7Ip<h&{&)GXP5V8=N^%3<=zF7B@3 z&yg(QRn9hL!tA+Fg`9bc2qx<l#~<!$5)M_il#tJPpDQCut)7+Nk$gEMjRd3-cEZ0? zdmzl8Q`p;3P|!?9HKWYb6k(Slbq)Nf&lmZc6u}lS6oE-p2QwvKqVZ<J>t}k6wkmeQ z`d2u0S+C(kr~>+joT-Yd<}>MLGd@;Gkg89F_f#xzvvZMp&#TBe)m29NXAp+$RlO-r zEh_G`*db!j@kUtl$zG+$`5&p*nO8;=e)<$GCyU#cBZhp%NPk^=vy0%e8)V%yol|~f zc6O-|c`nseYJCt3zI+R|y{vU9dX^MLr(eITJ#tQYT_iiUG;BmRq`FJVJ{SCO=2mf> zZKr2KdnV>)$$48Kk)2xF@D0aUA_*r=6v+)!9OKSUSgGC!GUxNclM~37YQp}6&jmo0 zQw(e`^X9Z=m@|QnKZ!GW;GRl7=&R&A8IyE28hj;jYoU_day3w!`ec~(9rTNFmJ;&R zh`hjVk2y?mql}X}umS)s8xk$Rq@(^RA3qtd5djGpZ>K=!{b=xM#=9zcS5sS4$)Dg5 zOWcbYMJ#x=lT3%(ZY&XZ>JqnsXZ0JDTR#Spf1t0@Jn=bJ*Kf$(Df<uuny82A9mIZ| zK46&b-h({yE|3T8TaOB7O%(#9+-vzOGCU*J6J6UA>P)X>w!>8=b4CamA9STVlw0Ws zS~0cX^`Vwiob5sml{`?=0nh~eOF(F)bC*m4yK@ah08!zACj)t6GVl_9<?xLto-Z|} zV5tbH@TrPy1X5#IYV;*=Ou-0wAyT;mg^aR%kv;IfQR}_bPD*=NS*smQP@}u7FA*;6 zp(792LrwdJJ{u$=Z__%RJ(LX*nu6>a!Din*RQ66mz{$om)fr5e)fW1pv7oSjs(Plf ze-_u%cmIUGAQU|iFwVEPKtp*KaDD?!RuqdKo$sj`k>fm@;}6xgy2<&ux4r&WF*%2% z%Z*YexN@bMH`T7z{T-tH<MZwRFG}Zrpg0a`Z%mIM+B?oDekIAtn)cidZ#OQJl0Wxu z2GF0}chvqX@gzOr!~hlKPeN4Lq0>d2@DP{S83iyxV_|>n+tgamTjM4g8Rf@n&oE7; zAOVFIXoGnPNh#8?HWpUQj*d{-2{3+643xAT#zT9|V7IYE^y%h`t7o&)_>#vxX7EL0 ziLz^5*nQuk(vn!P1L5`bxi`d(hdQFcbqgj%7k0>tWhJlg>>pj&qkfDrSi<zozZk@t zo{P3?P$(BQ(`36lU4hfvZvxKaG7(^g5*KOt<;$(IP-HUi!=DVCoi6pN5&Vb|*x?#$ zmDSm~^_bL_(%ow?wJvEJH_LL8XYcMTgPdr&inaFCvdWT@^Gf-H-8ExNy<TQH615=x z9qx|6;1dRMA~9t8A&ihm!kk&id%IKXxRZZeZq!#Lskc}{15*1+?bhjZ!b<&)7bkS= zUYF`9YfFi;f=zLRHtz8B?8OsdekZ!S$D4=DEI_R0K%J4i{nK(ZJ)vWzC8}5S&PZR! zWIWMK_0AhWifpuy4%H=;4Ha_1FGEznRo-tveqn5RrQ{J^I2?#>!h0Q(-|mniHeI0@ z+jC<@;_Nt!IwaY^Di!wZK)u#ffy6p-zKBtT`1N-J3$)CyieF3zDipXtIPbvNDiyO$ zJmpFhYX3Y5O+bE8tcPnFOufkm#nV8&smgs{%{S!I`AwTFm`%>HYJn;uUxXS@%-3&s zQ%ZFU0!z=fIg5Cad+VQCKL@TGe?9#VSwGtr%Ie6kpLvU9D*CLS@6MAFvVJCtKjZ&h zKYIQA6iEFaUO$`X==HOa-~X4^&y7M}SwGLK-vigr0%=(IAKvy^Kcjfzt)ENH;C`jF z7c)pB{e9MS4C6i1KG|IMt6%DW96GQ^s*GFPqP4HaYBxkXKPf{HSQfWlj~NfGHI0X` z{d_74SG)LCzNaj-;)Pi43ufnji0p0(^hASuW{zbSidh>j&Q@=kf2PmJmWe4n+%7vD zQgpkK4RhoUV`*bg+sGb?Mv{E>qHK9Io~>RLv%X$|nTmtSiHfu(>z}H-NO=8W%zA;{ zbN*OSm8ZJA`sP#L9O|2o5epSY+D1{MQ<@|S*IyDkAA&f99BY!x%brc2&or&uDvYJ! zN-R_nZ&A&vD#|8ba%Vx9r9Ih4XPC=8zzo8>Vdk`G=bH#f-*M^`>o^ZFW>+kjBaCOF zrd`z^lQcs3R#<~#)>!JlsIu)s>SxHR{@0Q(X@dLE?2minr60wtB$V>&l`7JzM^|Ik zi^xQpNc;FR=fT^BC)MXcZ|Zg`J{H-QGaOnBL&f$r0Uov^QNE)$gvstCnBs9Gpx_Yw zHxtK(AD3-EVmU(iG1C;vAF-QwZxTo~mhNb4j3tLr53?fP8d~zfFHCMDjyg?sZ3sk^ zX@eIX(c_Qva+S&*O-3i~*<m)(<o)@_Rk`mJgb^P99cp`YGiZ|=#J#cfk8*9=YAd!& z%+Af_rro}I68x~e%#okcO}kc=Vsj?$nByyZL&nlwy&EvIUTvo4w3J+F+*52ae-M0r z^_6}9li)-DCE6!Gk#LFXd|#2;e}rDArs!hZMa*y7ZByijm~W|0LTbI<W0tPRx?VlR z8bqYX;KFUDjX0KaIw`Fs`99W~_T!>8Fl(QS20yv=WOFz<Ou5afrx#|=KE<iH0r8)m zkuRgAt7F#vx(?x;G*c3>ur(ID7SEg~g0f<Cpj1U@@Z|;idr81_X8{4QFI-u9IVOdv zZFL3C(b;{QY-#yT??KrE`)+#o-zp_!)B6me&hzZVy9rJ3x`e0HXT~CSV!C_;Ied_} z{`zTM5GzS=;u#G-kyd>j62#hdsjhxzXHVJn9YO$uJLaE=_~AJ5{m7Qz%Kxj1<h^Eg zbN~hr_&_2@SL6_~w}QViq6%jiYpgI>Eib(+d}-9ef*Qq!$N5)CAB>D-%)?@bei+dw ze99|!)TaF<q=zWr>ahG5eKcKzUnjUzPnl^nZW2{*s;f>2GLK&*piNmcJ0ZZUcgeV7 zjCq<AX83h|)<}PwCNM)Vjf-D2?KAnFbf2Qv;0iwZNj2@W_T!=0RR0S8w;}?_ReN;W zTGcwQl5UE0Ac`zNldm<9$322qhew0YBu2*I@#4YNiA$o^({by`Xzd5l+7IKwm*<8S zT&i|JdqM?+h}Du2d0n!xbq+@T_e;Ilhgqv~51_AT_<Bk56!l_>yhz^VwV%f?mEwaA zhLtos7JM%81}!W&j%-W|j+76Re^oX9MZsI}60S35?b6sOU%TDP*T0pKlsF&vNT9w^ zAuQJm^fGE+6^dFDMno+LDRy8-Dsl<6G&&m<txSgPQD)d`GBJc01-T?uSqv9Y=9{{3 z+anIOJu1L223VtN_^pwGbre%nv(OiCNA+VRpNgi?nX1(Pb#TiS(czr0y~%cU=rVRw zWt3@jP8|$kH8Kf46FQ*GGF39vKGRoE?l3ll0urjTrnqplgmJ)GxYtmDapogK5~bdL zP{4b3=U9c0qfIP?i4KR2NJXr+)9l<+#?frSF!#^A7QC<RjAch*4;3b0cZYGO*o3gi zg|4henRj+a!=>d5UY`2~);KY1O|14wv-4wWcx66Y?M8~kvqL+=4dcq^pX44*C&)+B z8C}2U;_T41^3+%|n1|w%jz{vFvFum=0<LydfK*YcL0UDR-0M;e7HVDLhD*xlp5|`l zP*@nR^kw}XUOy|ZjqIzumCmX9Fpx->sbP{|!wv(M!$8AW?bEWBuHPVwuyr<TQzc}; zGcx%FHzr3;_y9tP4L9$F7=)tP^3K*-vNTNI;eW|mquyVETw%K;)zJ^UTn~H#xtA23 z7+u*qE2iLS+I3{s4Zd%rB@3Wg`+jOwKWy#-0_5wTQnY8ivE(OIgrz(dePbclm$hh0 z>*Gz#B1F~V4$7Dfi<j}UTo5TyW}ElYjYLhj0o~<8R8OMOirf+H)L+psi2Xxa48j|& zN^X<!u+o1hzt;NQ>lf}3tXMGDv>(+KKPnX`UJZ`9cNw1nkLk1lzTDm6rQZ#en3G5h zTt1fnyWBCn_30~c`rLtV3P^V}oDz%kFnV6W=rx~y+6ByO2J`TS+6&%nSa7O)7}Y}* zH2*_#b&Y=`HU4cA_QzUfTI+oL8}m=#-$jCd?=ZAJ_;(Tbw~>cM`1kw)_-EWXp9YI@ zFj_wMWOor?<>{umelPg<LbxGXKJQlP7`W#s<tX@|=#St9bgI~INdelepmJ6OOT`~= ztafcY%TYYr((67V@)E0)){F4Hc5O6!b45(vzpCEDHg9B4%Re0j_;j7cbx9IqnSaGE z`J4u4WypkCsS(0ha)BTX2LZV03u7_+3bv**cQt+uGIX0-7VP^?>8BEh#e#n~(h{^= zn$GWKsm^}5rU^lVY3~kp&YOzV{yKBg9=<WN=Puy?{ic0JVzByLmN9S%b{coIa0#az zAnFrq3yuHB^1#NysR3!?vC0o(DSg2W;w#3|2_+-eClo*8d-bUOIeS|`+M)hmQ-AUS z*P;@Uhl`&Swr=9n9Neb3+w`}ke({xBUQ~DDXHY_8<@*J933(Z|))*_3(i?)@^=HU^ z94aD~Yprr`C|VCN2~bq1O+RdS*bBSV5h=54!AWkIR@+SuO<9-`aU~auEHNZFONr&h zdQ!)pyRPA4h0jrVL2FI4_DP=*o=H|Tg=xpE3pZRS_<W?)7bSGT`aNT^$3Ran6ne@- ziS&t^BJ_0pP5|2tJ>46X<6LHg(9;bXVP6!4g`WO_NiV`L`m%mM_`F+Q8(Bq1=$zCi zIiftQ&=^8stlFJs=f1M*w+l6k20z6Ait3mMBeRM%LSjbf0P;g4{V@ApBzsA}Nbq^% zPO+ns2nuc6xrk5V#CXhD#_&S8^)`3~*pm%{c1;qu(&oDY(urgaq|46sQO)Dwdggx# z>%KG1N$`s0U|M-su2%5}2uj=TlPz}=I9MJvv&VF~cXRKrH#0jjAk>$*1et)8%kv>% z75H8>0*Tx$BM1k#&NC(aU1L$tn~bGnE1S~9f*1)l<ktG%bsOmweCK?GHcZxEEIT&f z9;*<hm9eP%+^PcnNh8>T88tgWALqxs9X&Q&ZbH$(7nn)#8x|}(8+tId*Bz>;$$Ai_ zsJ_~#quG(XzXE!qL8)Ds{0=fTCwK#6YUU4<ft~0LjA{9+o)RkkyAlIR|8qIP`w!d% z-}U8oHK#jE=s*08X<ras;d8oTa2`W)4L!?_hSS|6SkFcXOZ&8$lHbOTSnad0o^ZPR z<uP0@zu9DfSL-uRMXmQ^#>LM??aM(ZG=JZu739B&AEL&^ocs6S2=!%SQ4XMzWCI4W ze!DtRqr5_K)-O3MHwSuy>8RjXavBEWLKM6s`p1c{#%z)zzGS5TU1r5TDjIy5Sm9j9 zt!HA^^U>Omz;!5yafijj1!pLR$p*5uPsMB3#e$v5p~593eyC7*3hm^+U%x&47`+ra z7YlAmjDxt%J&vMtkCdYD$AazWDLfO7QS-4P`fyKuU(f~oGlM54mnrr`rNxjhj7+G2 zKR&1F^9#<ei0=Ha^Sf6bg5OR4^grcw^R4IiYbLjfsfZb4h$GakP{wCpE8(scSDXB% z|EMarxPYo^yk6v>aRiF5;XE8`xGt2K8nOQ<^7)uOwK;68BoJZ*jV!$MlFEJ9cUx-` zr^Om31rlfR^6YBw-3;{(?{VLym<4rZv20267rPoK1`=Yl`G(%l>$ekCqBQY*&er!{ zf9kgv^(c@qBle@ZN7JN7`9}8}UWYzMheC-n`}Fp8^-}W8vb4P=UeqJqp4~Wc*Xq(_ z*MpUb7lmG2S--uw(|&$zT)n0Ve9VSvfkb1(en|J`x@Os|BGy(BSKUl|X2aA_*y<uK zaJC7k$#b;@u1xkim+(G30^^{mHHk_+leiauRnxuVPAXodc&fom{2faZPv;&~XWXK` zTrC~2zb)OtkFeR<HpK4)r$*_7eV2YWr#at|wNi#&gzHz=cQmDO2|8r!bSzYY_lmfl zua<!&AM&8}K*ZXT`k?ed7?-9kxjz+9O8l+O;BF;aN!%bpxS3cRV$ol}OCYr5I^?E! zzOmDql9u{RyuisxZR!L<$t$iT2HILYR8WCSP8H{B%1c4Y=l2iE=d%SH31`)Gkv?>a zgaG(lxm;|`yzhnoBZuNLolN@j8%fWglQAO&EE(BVeo9I1ZjUbxBR@DmrZvS(t$a|( zh)D#dO3B_@Wn`3!3LA}(D7^tCI#kgKdzxBnYZv-nr<V;OhUzw;;!cU($OY(g$@mkq z_B$gn&BTBpX7xIc-ayweoB&HykuHjeL9lc3*G0&FZ8fLoxz*S{khNeOJ&`)AV#Co1 zM^n964esU{3TGK{6rqhHMhb6SOP#6JQ{ZiV)FIDnyR;B8E%Ky3D_vBqJbib@tFAuM zPE9J&U#3m!WLPyS6-bi1xatE2P{#q!h}FT-V`R+Q8Mkk(q)g(1s69Urv-XN9t3Az$ z2lqvdQO`S{VQetu8{(D|ukAsr3GH04pj*_NM5vzkD4$pHd9u?C-cVg*qz{*N?WC^h z9n&7;#DeTqvFaMr7`5JcW~!<V3o@R>tv%u=wGh1wb&{EOkJM@0Au7FywU+a8+hbg6 zm>}<JcK$L+Fh~NKZE`LFxb91gTk+-ChlnG_0ySSUDPOzEgMAp$SP%J8;$?|yhe019 zZzKNOc<>{bD_V)yzK!rm5PP??6yTHjf>h=Tv5m|;3Lv34Am{pGo~r3Jt;5}s^ki~- zJbU)JxnC7lkV3Egqz<9`ihat{do8!KT+hIKld-bWnc`!O`z{=ZrfY>f?cW9cStqW< zHByVjozK-FQZXq{Y=xCb`VK(M%+~~CK_%b#J0TAM>aPWr$zQVNAFrnoX6gxHQ9v)& zlacPHFb%eReDxPJPQE7@A~-|=yi|+AhwmwwsRTb$20)zxZ+o7DCLnjbTJJL3vqnY< z`6{_y5h-1OY62vBmyHZud<P-{I=<-KalJ;z7^)R`AP;rAxuD9{dCT}*nn-rW2%lY* zxH4+rN-gi1_E)jy*+djERm&({OI5UXlb;v4(#wlHw?^eeo^?u8GR}c?XE-g_d`u>) zQJjN(m9~<x6$*Tr0x|of%G7C~{z-doKMkzFCO?Md8x7RDW@m4?EdD!-&%OIOCn$sQ zE#+qE%R1ysKjeaAvgI5&R>gx)!vrvlj>H+p(s;>;in$F7J|pfj%ImO`$Q2!lD$Wu0 zkr8!s1E_LX!?kd8xt~cP!m3v$woxYej^=}EcbnNOP^!E~D7oGRtxfgYV^}wx==o=y z#XXw_2d=Gh1`V!C96!=7|IOwp=o9*mTC6Y!PEnKanz=C7dL1P?KQ4zGj7`erp3Y0* zWwSurq%cLU`#bMnEjXv$L*G)@hjb5RfA`!&JERcj3Gfp4&_8eozpl;~qD;~J2Pzlv zu%J&zO|R7HEAlU@a=(=tK}OY!sZuFpcoGzV4r=?R1xPWai(^!`uxnL!A$6xZQ*otx zrfR>~`(M!=>{G%84>x#r?Mpr&HLs*!;*u37fR-ycQ_{&z&c*K#QFTrg*K06SP)i84 z7jEXVWA}sE`KWMsmVH!>-O=RV(;vm`GorTAKt#31fCMaN?O&n|8Cht_laL-qwQ2%q zl2YeJwi|q~yt3*LZz)BES@ug=lBzfKL9(4#Q!DZ5=wC&Dl2u4zOHxghu=waLe4Qfk zO%Cd3u{AaD)cnjqSSveJb7~oR9?mPlFe5?yg~j&*hKR8;5Fy_Z(CCC<n)a{csYn<U zmxS}P+{=)CKI$QPU|)7E>`(<?f1RD-ZRh#^!YC#l$*n1nT7~Cgf9AU=E75e``B)34 zhhba|Goi8riAKh~@+yS~9$qm%PlT+^K9FZCbV4xV$&hm^RSnwGqQ5hg&t)(PSR26y z5lW<w1+v0~L?81{Z~n5VL1YAu5U8lO!xLSvX0;iM@8A;=0NW?T>`PdNJ6YM$N|6n4 zlG|nmw;HKV;1J7JkHvL>qk&SY*1jH<cyxbB)aBO$Lpx64zNiu`CgL&_s!f$`qgnfF zK&fst5>9d>I^%#@I9w`+&$R{d(<+2;^FJqiSIUJaIx?Da_|{=VL^N|r1+n+2^^(eP zTXSXd)oAHQgjG*e$@pW|$uUb@qr0jiZDY`Cf0Wz?Y-=<UfA}N>MnW)UaET<GD)@xj zjqG8#k~S0f$fT2Uq(rMtO0M#;QIWvzMz`G&vnHXZcwM{GNWaiCqnAd-DY|qx&`aph z=*qS*HFQ%$C&TPPZ=8+X2>(#N8fLlTkp0_H+&@nv2mi_0n|?-@`-<$is04fbDT6-8 zh+Db%Ze|Tl4PJs`Wo$G$(b|1c=FBWzW297m`@D^S*}Y~5`!x0d4&+C1p&mb)sIG91 zRa-vv*KSY_emwIiGu-M$Y7o|6)i{9H@yOu?OJWxP0XD%DA9m4H4*fkg3uK9sg=Ou* z6HUSE)4mf;K5!2{n|u-J8vObD=q*GI(CHvSh^@w_r+h5(@>urt&O{@-R?N50lKDF} zW)F%XefRo<@Uv3Qq?j#qRK+lEeM#9Ipoi<+S{BdV@VrN0H(k!YS^8GY`fSXa$}~=8 z@_bZr*9q^_9uuEg$wG~h-8L*DlV4C`3D*(gQ9QZsw<r&WxR(IsC#Fm?OPtM@u{Nh} zuX1e)d;H9Vg4Krjc4jZ_=LvIJnHK@`3ruTpwaiWh#@LkzFP`><e@q-wiVe5i1cw-W z4)KI(^(2oMDOoFUMgxI5Hb#&IVQhf}kT+Qc9aW*W>8ygz<lp&NFm?vx+=PvYX}#_| z2bZMwrfF5(jmiK`kH3%pR8*>w?mCGR$!cz7?ZFg0mmq8u|Mg(-aFpP+YTvYv(e10~ zorU&AHS_n}y;81Ne%<2S8DV?Kw)Yr<Day`It<1YNGNQzw?pApr|Li#vyHjt<RXHWQ z8>h(S?rv-ak*54YM5gv6$V8*L5G6r5L|{@4|Bq0D+_5H>6)ng<0|bboXm|xu;F7R1 zYc_4Bys$*{`D}c36|fJm1m_{~igTXniL<LA7iSJS;=y&sV%bsaF{lwC7}|$qRna`e z^hpjnMMb7nXNnr1iD)yi;OtKRoeB~|<0#r}apHhYie|?l1$)m4qxF>b=&FpRGHzW{ z)!n40g;=99Jky>6j=-O8H_{^+#*SW*(h-e7{mu%})(BDthBW_hANhtTiYW%Q-^GnR zW8%VR1!&fciMzX$sbyNuI=bp{0S!fHTL<}q6;xY7@$6JY;lukvi9wC89s!gfxCjbk z_5?7sGhRy=-aP`Pweg^9EN)g%iU-m5yco0AC6CH|w%u5YeZQC^*9m;+EdS-<Lu5UH zkDC}4ul=(RpE@5tr*KS@mKcQw5%x`AI~YQ``_Dib?O8R>(8f}cbyO|`aY~YyG7Au~ z-);5`S0-x1l_`fXT<P5ax44eaI5rG+CXwc%$QG5e%U~8uOMy8`Q&K>w+gH@U7VwSh z=iUQp@YX4sc<h&AvWdm)QdkI-F{_NUBnd=`hSm+~DZ0%MWaBoomjrOEL_E3<T!)Ln zlaaX`S0koEMq0(;BGQ`1d3AtG9^(yAO`%xE5&}BJNv2ZeQv-5txuQiS?7vsWv$4)P zS<4t6$DtX|DQpk!G16a<?pSMuZZk`IQ?!~L52c$i{~BK%Xln+cdy=oY7pdXt@rxXO zkZQNyw4*Q*?-#VCNPFiW-#R~3BJAdvIx{$CgpoN1a;e(6D4>FhwJE|nk{z|NMx~tB z=T8*nb-ZcU{T{!nPL>h<o=_3D)+ziGFt#xRV4BzOI<={I{T4h^{SMJ@IhVZVE~VeH zdfZL~;r@B^@d9;lC3mN@_f<++-OktGwER=D^VZ7}ygd1y6C1DjuBf%gZKN7iLS+|> zqgfg+6)cwuGTYf#^-4VK;ZN8oHs^i`8}8ij74`^?W==_{4~ogE{Q->@bC@M64?^Kd zyOuYpjKkUnDSHLy#BEcMnwgf0j{t><fWbo}ZISBF7-`xdNe<?1_VrbyKT0%Vvj)6c z8=$13KWv>_{TXIGQe8n*Gb1DNZ^8tTeTc;@aOI#y*~D&<YE*`CAqfY&Zs}AX@aa%C zf)dqG=6Y6K6NQcu-=WM%J`ao7iDPJbryvM!19c*CGM3V>`VBDzPiIVqtRN9ne=aPg z9&W@L!bXD!%ZV<XkyJXLdkl#3q7JhW^?Z%<Fk88FqFL3$m=KYf5)R-qW99J7!C#1) z#H-Nwq{h2I=>uazi^7~=>E=~DA!1&2HOdG;AR;-ie;u3DY)9IzaQ=LWZU~xwK(O~# zS^o-rA_J;OoS2&^=fx*Wqc|2xdud5|j$A8IX)HZFJi<t9LC=={yn+nF(&uCi-{fxj zP-SrQ<S)hbh`dhfSu2b-$2JZ(euy|~9?_XtFF}`7e>5vzczg7Sb((UBs!Ju-(+wKw ze`9$~Zg(Z$S7DxYKMuT?X>UTlag4Ee8)H`BRgT(<qZBxPPF67x1hN7_nTT&Tvr<-m zrTQ~rNXk%<8=32!J)f|QwEczxJ4h%&*){Ns0L)4*Mf@nwv1;=$hcNvCBOL@78i#g? zompry;rTTdfImtis`1D3e6t_-a7Sb-Y?xpb@pyz&qwbKx9v^i!Uo5B-1B2^#iNnS* zkSgXe$yPjGMmAD#CUL5=(@JB52ab}#;5}7`^W->@Q5bEKiMbelt#e8lBz_VsvSQ5p zsQ^+i&s%)y@lv69zk6)@3+_y)i4UdOTnlU=+dU%1Au2_bC2vGl9e|et?Er_ujHqh; zufI>H+%HiD2U=F2T1$ju`O*B-bO;NUk1R(II#n%54L|h9fv>=z)*#p{W+V!~{V|Ia z{TY@U!(Q@?>K_AiKS!|w!4hD3-`@?nY}X)j?$MtqZsg!~;Nx4Bu{gp<?oX(^Rbm_b zT*k3TdPWRc$mP4=>+Kcl<Kj=)i!6^v!*?kZ%aqa$mAFvDRD@WX-Fv|uMxCBDVqXN< z6xV10ozcYPS$V)|djJsezR;-V7x)bYa)jJ^5+6~S-gfu5^rSF+?eA?bsDTk@zuPTx ziAIwXRO2jonikWpa6S(kh~Y#{g81h0M7I3K8c#YguH{NCmykG+il6rN4ZckX#5y1K z^$DgtZqLUw=_YV?W<a8d#_efTi1I18GiFU|NnGR67rz@K&k=cLh4W)^S0HCtT1iN3 zvBMzntAq}XH#|@y*ePScU{!QKQFRU;*D~WsDozZR(4hqF8c3M2`@^kIoK5MH<P0-N zdgq@>r-G`2#B3cg^d_wFkPoPcp`fp4sH%mW2gGYV;5GQC43Pu!T){{)Wa?XikJr^1 zX*yZw&JkSn@JoM(Y(k=o(NP_5Ue%!j`1v(^kwF_~<O8`bu3|WpA5Cq!XA6@n?YV#6 z_et@5BM;i?%Y&3$dAvO&H?;7L@E>74xzLj1z#I-L!S!>|Tr}ck-vNb5ZYBQ<i7=9% zmEcJm3D|4Ix}ru5KXTT+KnwBu)fIYNe9>@q6>?_D?7GQ`$513#FLA1{2`>s-K2~U2 z!6AHE)Ot}=R<Z1~3WR5#_zLO8P9r^xaYpQaiy*_sKClT*MfMJ6FJ{l={jS7G$VQyp zMIZM@8YTveJEMXUsaaL5ONk>Qvh>U=o&r5Rm?uxv@v-wuI3}pTW_m-QOM756JCk$J zoEn@Uo&8jXn&Xq0WODgH=*b=I8fL1gMg)Njt5_GM`agd%(kyx>0*l}dXtZ>KZoLUX zk#5aPV0DhfQ%I$e9-`hpsj|G2)f&1S6;r6K^h=;MjOG=bpd3#|f?JF`{=yrLFIY;^ zgCgwm@n}H}*`cHp_Mo5{Fz%3e$wCgGJ-tE%F|)N^5G7b<JA{fM<d)KIT;RKeqD}Va zknIN|!OdagN2}e9ip+-S@Ku5?$$&e)FZ~2xbd({`<wPn6UBbb?X?&@FD(86nKBiO_ zBm1&Yy(<2Qro)!;TD$6BQK=|&|0C889_3nn`JJ9G_Y&3BZs$h8D3E!?Bo4;JsG@q# zGGT#uSi%;U*LMn%Lu8OXYqs-joYXj_%K0f~e?gQjxq$40=kcI*Zh59-b|bt=rRJy^ zO9*Z_hTbl2G5haD(U-v7#eyHlj8Si(d~uEj5m*b|vftHiG|yv93+DfxDymo&ydXOQ zJl~e6wJkYS)HdLN?BBdOBUbydiHW*=016S9>42G(bxQ%&F~izO*IoiR-g%Bmr&`}s zP0<yTrILTI*u;h@Rf#%goYtL}0hMVFCbY$L@RBi+i}|aL06<1#?L`gwSCwX+rD|<; z#Z<GfCgJDJ?C1)y%6UO-&~YvBmn0OMJr1x63yfVAY$L*O>J5micpNpA!n$t7rbdIW zl4l-W6MGS28iaVxhA{$-Fv3qZCN$9JNCno$SnXyFOhaYDQVWG|&{0NcsLJ`C`b=d8 zGBR(oemJ`1C%{<ps;nqAr$%<Iyrn-8tGqfMd@r$piFB@H5;%m?Np%`|IV#by#yBe8 zCH+uJ*)Mx-lvf*>52ZrsA$=2jdNt9;oqyx8%#-5y-*Yl*WtCS$yy9}Am>^%J&aE!- z=uO5EybGe?HquY=E^6a9Ig?IY?ZoWKu=2PVy$X2#=KP5r8zeb3R{MqoHPLutEP0Uc zJ)8(XTx#4Qd!V(k(-{`FR=Z+j@AKE**o6;{1#iTz=|Y;5fo~Wk1D{2kLYrvN>K0w1 z-)^IBcPJiP(S<M|y$g&b!}#Hbs#@nBjv53;$~s)0r4|TPJ)KK6$hh^MPgiAaYq~mC z01a@_45YdP2?IzuzoidQmkJmNfhiiny^w_nrW0pF>U_Fda|pUBtg9TjO&gJ7UMT8q zs}Zcx>6%DL-GOvK)^!Rx$SILeV)g<M|AlCFLBKhQ4oJ}^p36jKrbwM$Kp1iiw0rcR zLJ9?V7fsEpDoGG0?A&TsP9!lr*}XPefr~f4%ElNI0s!G&AT@G6Uj;ygDh-N2svhAF zkZ_Lh9!>zmy!}qwXXu!73%99xmScl+3mO-72JrHTpQq49`^}SzSP;xc;IKuV8}Oe+ zV_DDGSR_M@wuN-f%%-bF00F5jENEx=IdZ7yBqC>B7`+kDgr;;ak+)8v%Jz{QT^fRN zaKZFvouY<L%V?RKHKmlEhb<=PE%ugC(sWg{&KXgX{Id)*)kq<`jME<neS8k;ax0_* z?W!Y>Rk!lHaylN~o`puGGg4~JKCIqIdlQ{@0g^fesoV9yDh9H0TuTr?0s^{33P9i{ zN;0hJV2(P-JvEYYyuG;&A9Q{%zfel0b;Vwp`zaHpv4<I>SnBLt!O?}J$iGuyROfmx z$*mj>XHuHTS~3?!8?2fy3DSsK5ZjifY-TM5$Tla(N9nN_d{H_`R1_ku$>0UdY6cUx z2)*#bW2zB82REd~gUJ^x=MB}OyVyU{Sb6t(a*8Cn?n!c9mQ)^SbcyhZeD3g(ZE5wE z=`pj9sW$X9{l3YE4o7ISp~bo7n^C|3RM7a`turH7f0e!IxLiISsw_{5vdfNVL>i_9 z=D*7=>WGfy`;xF?K%`-6VBQp&f$6|j5NEnV9P8H#zRs%(u#Z&-1dz1S%8-RmI(wI_ z0_xT{C}tlQ_~AvW!n&i=3)2tK`^nQh#>{~Tc+!>Y)duFHl8-Qau`c8fIFCj=UEw|D zs9jX{XFLsO=ar^<k4sd931apkG_Li$ZGSio(wUyGV3e+Ikx?+l3P!;&kh(|dQL{Yd zrbhS`nSY^O72)Og5z0$XzQ%9nKayQ|I;HEMQb8`hU)?J8*i$)}!+R*}Py69&Q8dSx z?SR+`o#OtQGWq@8vqOp>V231bTpZ@@1<>pFl*z_jEFWeGJEWdyt@9~%NU;W5N?a(0 zuYxbqBj-3^jeW@%1^FuM@=WOZD3<9>5M{O8<~UB`0$`isEsQQ3<q#v&55np$lcOm+ zCu>pz*Lg*Od%OUJkS1_C;Js{4^3PehTR1%e<@vJ*8mTpVtW<An_$bSrC)P=fwK3-_ z@|>Oy4OLHwvv%C?y*O*9fNDC<ngCwMS-X+em8Fq~Ynt33a8a#1M0I&eASkS!en&l3 zYd%qZo_e%M9zn!b3aW7`fkinq>R#o23-Qs>J!4)Iy5SqD&-Y)P<&~W1KlnHAL9_qh zNFKN|WDlh=Ss%IkrS0E)x98{Z$b8ZrD+L7N$ZKQPTh1J{$_vzuKyE^^R-Z>@r>V+R zT*AI2^5?wG!GZg)67*A%Q2Er7m%o;m@`z0^PaME^?MkW+jaY}`cIoUz)C{#4!Y*7V z)X}p`Kr%E8Q#s$@>2EI(vv+!rT0;^9SCCu=8IW_xi$eNAy#V2uWLRYr9b7w(kXMiS zuTT;oOTrQoe<h>$5`~%p`%<xKn~|^RPE|TVMWd+bqgdHwM-1Aeq8a`xRmmo&k#4hw z2dj34o()rQyW?DrSXy`DkET^n*Xx#>1f)W@z1sEcNY@KhM5#iMXCb^ryXX_cINxG~ z;7dT1R{o!GyG7!Fx)sopFKWpYMRQh}!@n)mLTR6IsLP)Id2?a6qEgmYCsfZ?Zixo& z=!g}FX$uxK$4H2MnFUy^E7<+A7?Ota`pyr<;Z#hd>ToQr-=3#G_R*=mC(b;|THjm! zm*%li3}Q|#NemW;7ZPvE0r2lqxiSXPTcc-(Q#Q3S_bT|paWLE5kMvf?qSpaqs%Kvk zq!UFxnKz#xzineBE^Y|jX8x8qzGt+H0$8}yYZaQ$sDz!B+X>u;gR7I@gzJRKMYYiu z&X%8EG%%mv#XQcHkG=cU-lG!3vm>|Sp*nMpX{VH2s39fWlaUEiu9WWZNxk|c1aX$W z5q8Z+>lehCKQoj!c4caBe<MAQ5zN0NwRcG3n$%uH?f*tb;%hCd;*C|7`yu_8@7X{Z zpZhAW^8Gl$$gCGukOHl<PNj8;N9?ZT5qZDJFe}v@uc}c;YE?#M0PQXlBPsU+iZ44( z7dVS+eLiN&jC2=AC1dFjk=FlBotk!-yEmpb8%FvOZVy`zc-w{;i>go_R9spr&bo`L z)ir=GGZxjTYjWh48;ed?*X606{>Gv@b=^PJGr(AMwz?jW>KSM(8lkQSrg|!jMdzw( zd|D4P7KPOHVX2-$#-fP29+c`i+*o9)>%&t$gN;Qob&bu?5yqlsb$vvthrW$h*F%;| z*5dFoQL9fjZd&z33G-CjZFNjGCU%&mJHpo9aOc)?!a`NxyffLjrX$?>dU=@1m~2e% z;FH|i$;JXiP1DRu??x`BnF0Tfi)m(^f5*i%GvwcKG0klD@3@#|PW11%m}XA*@3@%O z)~Y(GTJ)}`wF%kx3VGMl+U_fQrmv^9{jTVlzMj_BQS?k-PgCjb{QB0Z_tV-o7nPIi zTPrEix<fr(pnfB@Pep>yHD=2ZDLue*tGnWu^YNO<&cc}bTRc#={j#(0+7=sKbz7F5 zRhF2mF3Sm`o48qB_Rr4hpO~yJ2V`drNL;Bd2WDptOf;*@itMb4M3cHaEIaG4#5wA6 zP<Ga!#2M=H@a(L^Ibli%24`mtPMn}FkI2qCA~8fRJBFn83`vw#95bMG2q_-D^|D-M z9{HlXlS3SIgtQRm@>1^~0yJaks_-%?gD+rbXjd0LgmPX9?doPNeNJDI*!h2P6(RbQ zTNX}j9{8d8s|1-YtxlxtkzhyLF~%()<}9_2m-hk(E$DP_S50d9%JTi{Im@WT{RYpM z?^E|+Yl(Y>+{<Y=thD#;g>o-qn((sz^8OsT->dEi$o=Q#UhHtg%LdB*iE`hg?uEg0 z2g&_zb$^)L?}fQqE=Q~IGVBCP+^urIQ{5jf_b<!+N9umC+&?Y%AFBH!<X#-ZmVcn` zhsgaexo;!9>HN~k;bpxgu7tmzYz+*j9NdPx`?*hXuWpH;++FUj=Jx-e`rGS%2%XNN z#VhD<KWfk{%0c?uE6)}Y29hWw1pgiS+rz0(vEl4(Q~I1XTbaZEtG}(T1ki`l-)=bb zVEyg0ERp}s`rAMM$ip3B2t%HRa%oUcYG3tTfFA#s^|xhTQb(izQTp3W6A!7sZ8_(k z*WV8Qq8j$Us=s}nRV52ltjQF;_v}Qp{lGu1zx~4egY>skH~!c4x5Mf*TIBV&L*xNR zhfzR8j(yOTzWUqkXZ$DnTam^;5n`00@0j9b!IFdGi%Pa3=d5~p^Do91)d8g;j1o~A zJ4Y{nQJJdob?JPc_@bW{SX3pnJ9J>tzB!EW;^LnK=l=g<V9`Dhan8Tf4=j2%!03~z z$r-7pLOIK=ahgD5ndrFs<$N<j?m2OD@;D%F_tvZqEV_lM7qMbp0qz_-`?kMQ%2Foa zJS>P(2rRnur&9kr&USuPV9|V(Z(9mJKwoIy`7O(&I6EHkmF&fD0)Er_n1kq8EZi-1 z?<7u;v*s#u;VK7aJ#m_8+Z&~v{YPO_yIbX{Fg>RAyB%DbR$H+Vt)(nz@fB&mQoJ}< z9!*L2nwLK5&BvQJZIw3|oB9d@lSrM$?N<o9M>hs2!&>T8Dsm1~Ed>z;?{(Z|8@C%3 z`m5yYpsKyBLVm<R;K2A_68p>ZceH0rH-j^#7)zGYp3<ui!N!3w5n`MBIM2FLoB3Ok zgX8w}Z^lyf$h6gn?4!(1+?DKq*YU<y`0>U%RlKp|krNIg`|gh3^&DW=NCVP&31F)m zNlcUOXGU<k^XpBmt`tKGKf%f-=kPy@WnW@b{=D1RQmlXA?ApBYDEcU}4QB|%Nu(L> z8C1zIu*wW_CHY?6I`2`!mfKv$ITC)46SA5{!0!Hs@P8t-h!!l6$pnBZ+3XrUn+RRE z0ayMDnI<{e7zwY$aD?+OXXl35Xvk&<#7N$nU1!`At}$y>TpY}AS3!8zFN<>cycL~m zE4`%}ygIN#?h1vNSg{gr#sG6i@*UHfQzt9s4VYuhP;LWqWG<aulEhYg9B+V}2P0Jv zme|;$20+Qph!W`0xIkCqZAdGIm<_aGT{5C8EG-;Kk1EA7wI4T^(#=b2x<=KNbd4gk z4s|9;3_R|(^oGQDt#uOEhW<4uh|YZ&X#f!Q^L!WEi;r-=dK|0bpRpHjoG7-;2iuGj zJ;<{SZ+*7)7h)?;s9qUF5~meq8Y~L{Zvt((n;ZP!VJ+Uux+=C7KQTAF2)|?hReSLx zpZS;U#s7^nR<XT!%$^w1m@q}h98^N4LcBpE-J$5g_QcWpjTeE|NIN{ol-RQ%&&Y|Z z06ZhTKwe{d{bSsa1hY;6vsh8*GQ|>K0{jMpjpS9L-OZB7J0%e#{Ag}E{MmYR<5)JE z!3#NItKdsTme?<0<8iPh_6Scr=Hojq2S0Sq|Gh8A`E+~dU(n@$-riZebEFxz=oKch z2!<nx6(Q)DUn749eet&z<91NV3-5R%peEiU;mRbY?=g8$tC+q<`fX~GLk<NbVp*h` zkYz+HOIAx|taAxhCNfYJuMEWq7ZR`xMnM9Wfw;;hURj=J7D86AmY&BC>ndvhgS?xZ z=P8kYUF9CdE&5o<jQhIK0-tU)F^LEHHyW9bDWi-_<z<z-O>WV`p3A<hZ916wCw}8u zNuTyPmC`99TFgVoAJ%fd{M#y5jAiO~IiEZv&5$cISRvu8KB5^hwXTrnifpPMS)^>L z-PuBP*=UcI&D=Aq{>4#!@I~fn6us2)JxP96Y<~fE($?sj#DMw^*%ydcP@eqAoq$oE z;%l{k;b=%Q$<+hSc|4a07DlF(DO3h=veyJZNX*yu8%qbZ?irM*Nx6e1gD2Qdp5h>; zP2*}3SCW*Pl=XvE%KDjvO9nn>_Cnrc+C>KGqm88_#fq+cd>Q$pt*3K;Q1fGo14HY0 zP!{|;URKznSn7$Y@^PLa9#ioPRMd$l+vWAW>UHvU;K=qNc8AX<f2Si?JSp}&QPNW& zM#o1`neZ?;`(g^Rop+3vXd0qasK9rk;bP1io}!6Zb~d?$=414ClfS>9CQF>vWdHVe zyvEE>qH28Ei(~PNXM}^tEOTI@UQD4WDjz4wQ5-74hh(5K-z6$$AM+{?|G@HLx*lWY zht5}3Rmr1@t9dQ=C&6>tU#8CWyUMG|l9jRGJ|lA-*pT~)f`=%o+j|r`4wY_W7Fm;f z*_o#w9VWN#|B|hn{*<~?xzcd-9VaVfTgKThVA_CYG@Ig@@zQ?@NqM}nv|?A}h>|k$ zbckK4IOH|fBwbAuE9*P#Z>rhakUU!p)QkPAn4ccBc5J(E==mAP{H#yl&K_1i5HOi2 z0GLL6MW3T!ffdvEsH05~PXrbLr`Kj|%cmcc*$`@*IcxqoyGDPlJb|;xuR53(v*B0E z_(}9{m~e06YFzjwq#iwOSte-Xi$Xm8LTc|Plt{eVxpi252mAD2bI)u1v@e3*!G=uw z04C$s0oElz<uD@rg0izKy26#ExpoB?yXihf8?(s=r42CxsCz)xa+5>o+s%2}r~;iw z#hoY$nkn*F6<!Jau|L`&yOBpC8`-|>CM48QNsKl>l9-Or$s`VEO&#(n#%E1y<$@_{ zS|=AZl-nq!Ad!mgirGI^fXGg{7hnj}E3MzxgckN*<94wVQhMW|T*Ry!E4!OYM6PEp z_q}L^s{bxJe0=qTV*Jq&vGCyPZmOaT8&Xri`>j#G5)My7BVjn6Ii3omC_<p)Lc*z= zbiI-4-^I~uKNt_LO@s;047V?Q5b=&-MR1-eig$c-WvJ~Iv`l`$<F(0+#969RUTIF* zh1m$clit>_nU0L`IuerKE<DJ1*(@7~*sF8hqIV_PaCTTt6V*lnJlmSC)f<kKsgv?+ zxfmfAAaqkmmD||XWcpy#iK3$j^6urV&_QEjQz5$d15++XCH}~R+AHlF0U^y7wYc-3 z;q8S`%_gDb7T-rDXx*OYhbef^nfG}_7viYxp9h%RL+wY&ALd_F<-RF!WL@3&f#92F zxS4Wy81>|L7#06GIXFy|4I}eY*;f3WsY*r2&^<;*pj`1E87AkuP0kVY$5~q=#zcDm z&qsT~>)ZZO2i-Osek9AxNY{h0kN}p!b*S%Wunb14Wl;Mw=~g4lVBEjH4DOa?(C9CN z#^Pnr=r4mte;G9T%b?L;2APclSo?m}(QFIL;0FgTgF(`5$&z!DS_V@qyUYHQRe(!r zccZro8Ur*SqKku9L6C~oDj;Arf(aC-2dside-+3+_+MTJjRC<})<L7U4jMz!r7j#? zX|`w`a57ZfnO+Btg>}$aSO<;%I%xFQL8HG88d(P#j@AzZs@^)tbjUTfTC9Ut3aqp8 z{wD&VPy&A~%yzzd5^3vrRG_~0WfNuh-PMI=R4j>hb+slZ?dl3~h;4{-yu6HOxI;mM z2bc|b*jnZYj&$r46~;ZG%7t6>fon{_w8j(;T-{AAv;ir&4O|~i4Vu`imQ}#05b;H+ zKajX5zYX~OAB(W%JwaH7I;P+Z$dQrbqWiI0n5|NGe)aTOS7ZCGt4419dJh@rz{qT( zO4E;Z;EF<5@52YsiSN>6F`bxj8g$}ERL?%B;<qNw$LJInON=s!o)xR@VrM3B>;AIq z_X{<TW~bMsdZEy<9cBZ@HuumF$}ma4tJ_l{b*ES4&|c3gao)baw|7_5HRZ%ESEkX< zTdd)}6ymPWXbO=#6$<h5YM;OK=!3sMo0F!nK{p@McG;}#g#IYKXAbGDe!ga0)VC*< z9oxu=e8eA#I_>L7v>zZPk=0rIK{ieVY(EBW@M+`D@AF(@B?^7;VkHu*0b34_{Fxig z23w1H7Dy31|32GYDySE=F{5Q;tFW#Iox+uh%vW-fuWAbipyj6JNuJ<qIq`#n@;&E$ zyx&oFm3NvJ*ochC;}3M~!@gKuU|JAoRHXJ16#i}?+sua&{Qhe+ED{c1Bo)Yuq<$ml z4x7uCIIgCf+%mE)OsojCO@W5+xfW6NZOrS3AIBG2iCrOae4o}wQxTJ7udmbi;DeBu z+~5Kv`CxD<Z&tunt-+=C8Dd*>hdraUFcaF8hnGlciUG!Ufa|shTdd{)OB5I)P<kPc zXWFA19%lrxbw;-&7DVic9#m#h)`!qH6oj1fx1m8qgfXLraB1PxC;RdDg7Lo$TB^A? z*P>?Ozl^2R=5&pogJ6dF$XBBQ?d;C=_J-P~&OsL9IWR*7^!zz<Ky?w=g{X+JG8&IT zbicrpcG(0?J}-ilD_JW2{m>a+^fKiH-1F5-7VE@-dlL)P`Q?xKnp*l570j9&-Rsrr z9a4x#i$Dp;T>>dv%TJvIpezz|!CVn<6)~5|IyM&FubK&gnEyb|rIPzhZZGEN5j^5L zVqe@szFQCr&sF@IORKDP>$avgmy*s1&<;yu47xTsLc!4og~!DUoE3A7yA*Lhcq=bF zWc1+a!^yrL{>`Z}8&s5oTS9`=M`@%km&Gn-MFoTwB+1<&_1phZ#S*aAt@pa*PJuJ_ z_?r&5Fb~w7`xVdg^hQ~afk_-y)F`Jh%8OaK#!?9ne8aI-P1d{Nb=$+Kw?U-0z!SB~ zQ$fsdcF>`SeZOo!ghHvy6OM_Ra1aAU-dIQ+v#D0fc9)7e9&dF*30=dKajLM@3n3?_ zb(fS82-(vsBf+=l&17^nW_LKiV>0&n%Z1!$c2>-X*y@5K5eQ3sT+<rK40$zN$jLk# zpoFnV=1XD??jodx1iQC*M<9YcvN91~NJMXc(`_5+XQb=0Ca~qqxwqucdG^g!-jL~{ zktyee*DleO8g8jHGVg<7#00KV7J@7m&Hv>)$BQ#%YL;fcNE2XA9Qkv3VnFMhIVFiO z9hadQizLz;-PZBPo6_5j%-5tx`7ub)9K8Peb{~F7il!gpW3Q%L$H?HL9(u*>uOr>f zqt}e1Wr6+poj&MMgmGfMAY`-;#_6RlE%zm-nl8|Of=z4!^Es}?l{CZpdBpyWAgCbI z`aCkZzhy1!_wW_|(8cthPLtGxw9;HFJ5n~?W?h*FPde_rUFdk$Tqo$_rm0b#E17A} zW~G%;FqaY;BLtCvP<V(Um?<bGll4RYJNr+<qyZ>+@yi^u;V#(>Z~21onXJQ$YP$Q$ zI*eIDBJqyb8Wg`qn?_scCSc`UIoKIh+{0!Eesgf{5q%!_{V{z<I-KQN!mTR>DcEX9 zVN*DzGI2FxmGb1csJ%$A0-1wRisKAIg`VEz<@6Ee_+x_3C2x+}-x7pZ$ITc)m==AX zY7`v$N=x$i*t%d&N%8?Imd~VOhO8@2Jizn?h-HKm!^aZ0q?TNlJ7PxT7FtSt%j3&h z=gk796Pk&nnVe%R?Z9K0#hrk7;m0mcMOW1%UxChe9Sd8pu?%bXN#7O=X~KiqC`n!u z5B^r+`{I@K*9=}2VCVp~2_hthK-4a5#(*l&&GV^S=Y+os)y2u%+rN(zpI-YmXvy)t zW0~8lYP>+*tyF*~^UAXYq=_TErfw~#Z$z`$nmE(vRoQ;bhK!o$q{9C0l7V~@gVx5Z z>2#+BVx`zxzjxA|KG?5(&Nb&-R9mxGn^*}QqBhl6@rw~r<7eI!WX@Ni43NY2B3U%+ z9R}>430~QmH>rv(;R?|JsvGB)eL${{1~4laY}${=i2kt#Pz~6$?oow_W-ps?Op&vB zS`p~9JdPGqcPY2Iz?y0Nolw64Q6TYhktT^ekke~R+`dCO97M$qUotGsCX85(X<ZD@ zwje;DtHgwu)sbreFS56M6l&dHdh3^QrWmlRabj!o9B)fj(k!7K)~ZPDD(iV7E6u1U zfC!?_mc+4aORakcB|D6z2s_e$6f&874C0Z;4{tvOZPL}6!X_J|4Zl`y7RK#Q15P>i zF{$jrviJ!-kH4qd@Ja;N%JaCkPQV_%O5<6?9yc+(dlibH5+gHB)$*8j-3acRaSIG@ z4H3PeE*G`PLE@6|!Y!?I&B*+kzwD#Oh3U1CKA8{0sjY*#!w|QUJBg1aqF%|d`n(Cl zW(N1g82pTrsYj|y>NvCE*2k(fBKN0MU3--1H$coIR#VwxFWc-9E8}+Y$5jNYyPqJk zX?+7k{u*9g-vE)7f>aoJV4!voZ((`k^!l2JG-a>&DBSvS>8<Aw?mW@>k2-3kZU$+* z&Kha)LiNX+e2lBhD<kRescBl4AA^xTPY?~!YwBz++|TpJqbq!Imz0jAFR4sC>%Iok zD}0mfk%YW@3y7elo-1V57uPX<wd^$0G{IYT!gveA#1_Wb<s_iEc2}t+JPQ4@&G~A~ zZ1ZNJ&`ORJ#x<g__I|+bV5`7V{@PPF&MtIXeb?T<u6>tG60-J23rIw3EJ}Fi)#bAG zRDW}ug<sQxceU0k?9me+Y&Dbw0Z-Z%W9bqB8RWPkeIW<02f1l|T<s)Dn5ajD#Mk3i zMbt)w#v<IO$=bEpaYu~No13gRiGF9?{_lJ>CVToRp)_7wQ)`Tj#0`oy+^^{K?c$d$ zY<@HdmNr732~Q#Gr3o4x=`U+WdE@(QrhV6Hj;9h=0B%WY@VfB?mnCkZFyHbayQLN< zxIY&qi>B)+KGd@IoczJgRz7819y!nV><>JZuzp|iz*U3^#_f;uvJXiYW@bt;Huz^3 z=|~Yt&$q`uX=Idpv?Mdm@1F-ZcFVb5Lt-<kxu!l15!D=4V_d)$3-fkBT<10w!2y1z z>hA?y1S4_}G4H~lmGph?4(BsFQ@~C+B^LQtYkDk*;UPiHzOf>4tzsphc^QwDsDPD# z+z2Z{O#DfKc<^nslgXRmt~D$1W_<_F^|9dV#v+k3c=M7cw93ab4-dsp{Dj&)exd@( zrfW~|be!-L0|=$4_z67N)*7kLg9@~nSQ58(Ykd`Kzi}3ECGaWcDDFfbMRr1p+jJ|f zD_WgxhPU_|WUEFz>1PD+>dkfOe&O5EMCg9qcREh57dHbZ_>78@<R!77#^c4SrLLeX z1I@=8X@h>CVDr)VAU4ArH*y8thU9P$72%<-S=fqkuobT#8V}o~Svku2tcAuy7;B#@ z`5ls-tOyT1Pg?w3{^nl6JQvOrS^`l-_Ad7t5F2D4|N1mAuEv$<CZLprG^ubNe5HVI zBG^%6=+Xm_>u?&?q)&as7_LsidwBHkBZegkBKdk@rx+V0FhTmGW<XR>v|<KinKnWC zT^|!9O))vU3lS8nm;w=ekqB7+LX#$PujKJ9kMIA8e+HRww*RWa`mu*(pj(O<=;?U| zTCkpo4vQ87MOlBJhVSIUJp}*!;HUA=-}dQP5&t|XJYr2^W}Z`iRXF8O=)}z1HJ3ai z9{joHl7*w|%OxMFu=i8B<W@dn{q*INX;RqFq*cVQ8=1*~UvZx8#eB1B+~=FO{1bfh z#Q!F~S*+~^lMmp+72muQycE9qjg5japTakv;}u-dw_xsj#T;#){dI(MGS>R$KVd%v zRXT+65E~?0Y~u*KaU$9F3id-uqF6VYI`Us)NX%{~>feR^as>1Wm4ugz%u?sVQ_&{j zCZWm_J2AlIC6RuLLQ8S35p<XZQ!s0HthSrT-J(V$VBK@Z;x=%iegiRSVYZWp=LnA* zg2EBrN%{68(1hlgj@(p9Y(C2*kakz{HHq*?n1Q{1Kt%#hj#U9C+y8*k1kJ~-iTN;! z%F2xRlZOa6Df+B`&4B1RIxO120}Y5Iep!(LQH2!CLr_PL5d)%$I4j9MS+!ma2*geA za8`eq%vR9~(+(09CpkrOB^6+ny*Xgk?v2@3BI;NA*L5bzYViLerQ!}D0AD?XJ(0D8 zW(rxxg;j()jL@u$&o2<`GkKTu?hJzaC_V;zqOoxluWSun5{Hl=m}Hd&m`sn6mf)gH zlF%8&kgKUVWc<V(#32-x*Qft|?TLQ)&L^lD{?FPI-9qoMC%Q>>l0()%v?me+qWtSB zw~SlQo@j#-!nCpwfX5;Aw?;-85cw~w+}HR-?1{D=USv;n@jZeFL|uHLpRZpj=$)29 z<9e0BfJDqbq&*QBljtuAF;7F_7QhL|LyhNTy_>;Ou`t>~!%=I83*>v9{Wr5w6`2{0 z`I<H}QmG9vGy3hIf|=3Ccl)4`(6CK(zL*-x`DSWgdn59jWO~J@d|YC@$}TEO!|-D= z7F;p&`7A4mf&L!OzwYU!qI(VjM=wq|sgpY=p~n8CH2I4EuqsCg%(Q@8Y5I!HP1+BV z4_{n?T~DQ0#y&;N5Ieeq17T0hIxI#+YoZ?Rzz&7D!bipI3*oSdcPjyaiNGUaJ;^EX z)Pg}0)`$M2-XocaQyH~E5mYXO&^E1s68)PzX4Y{rYYfkdWU`W5%6cYR`w6+K%Sm}` zWW+H`GOs>XDHmjU>D*tg(%lFTVx3*>+^m3o5lf#K)$DSF!cqK5mfVY-Z<ohQ-xcDk zB0<NkA#sTUE@7yZ1WMA15E_Yo!sz&=ym--=WFg+_s5FBwBsW7ZI6r?t+Cp`H+q@%6 zNcsR4Q;G9<9F<C1>0e2_sGhh*5K<ZQDnKChJWV~Ru1b~obqf%@;aCDbNPPdBdiRn* zdRxpIPB=0s#-vL3ZI%hdq&ga0ee21LKia)o;&gieaQE`swAQ${$uouGTo}YJo%vTO z-1%mIuOtIAGS5(YnZOT$q5BRu_?NAy;XZ2ZE}r>?+m`WAqGnaC6y?72#l^&Dv9GI$ z+Gj+qRZ$heg&m5RIS7ExBIHllzU*wX)*)$Q*cu6hK!F|HtarFQhUjf(bogj86^$J# zC3cPaJdVX9tHSo^5&Q-cA^V~!VQXFZl(iA8Jkkp}N=59(8^YH5rc*kbI5nhi;*quL zl&8s2p1zH1d)y6H=PBz&X*ZQywW-N;2iO4W+D2CMQ=i(wv0+==$Wvk0CdwYdHd;eq zl^uNG<G)TYFb8e=Euv0Ht?3tT8(kXi8r=^{y)7}9(Y4MiEsfhNr%(eGweS-^VS9{R zGpRLY(cqd}hsB4ll<K3|mGbhUY~s8U=WaL&@1uC>K0l2?-1@ClqmIuRm#c8wKyFYZ z(LNKW+V2`&Ds3mzVy=ep8Ucn9U<(gG><A9}$H6oB{3OB4*z|5hLDMMFN|KyfCt~<d zt^K&2SB7~LE22!IXoOVk6E0M&866$-`{h!WGO_Hn)pbbmVLZ+(iL@oE>mqG8RM&T< ztA7FlFt}KCzew9-)j#H@EnR&dKgs^`RJE+)t%zs8UFSr<!9ehAnJ5oK&N<~m167b1 z9nys)4%O3@v;U7i+1rbJOR9wJN~;SqdxvV#%-*dU!OF)pB5P%MQu(&)rE;R-5ZS`n zRHmz@wxVb;QEHV2LtdbsmjH)ETy2iqGaU)EmY%7eTr1gS_KSs=109J6i3zrqP#!Nh zYpE9X&s<1C3@kp6iCHjzGVzKWX-7uxy!El)hWA8`=Q*AtyjZweR*!Efp(NHIXkR|u z?Z@h4|3`@Jv_#>)7pgt5DE`@kJ1@@8{X)N(Jv?eZqLEMK&|qQ7%I1K)_&xBT38e3d zm+p>Rk4qtyb#Wk*s(`O1)#>RkfqNKk6RclP+<Gfs#+V82JL{ODQXBkIauToIVq~7D zc401@a98;N1|U&91gsHzR1X+Q1s(BhVnC_U)=f!0DS|{!8#Sro_I#p1?2MJ&<dD2k zwS_m8l$h+7kZ6*%9~hZ?r3QOc9>6Swa<5s?RRQ;wy@vw%SL7*~okRi0jw~INB@>F- zvrMt^Oiw~RA-E-2tPE9M0(FZ}L+^j}Px%<`Biv-`4mHQJNF_i^yL>2uZ4c{Zy>j_u z^;je2qmu+FeH47Gx|Mg%NOt0b1FigekBs7BRU~HLs_}6&eT><kjUo(=+ILs$$@Ze( zkolGD4P+!<yqsAj;0F6x+<I6QB5Z5hD{8L2HixLSrfX-G3L!X-m651!<<y$-I>3Sz z=>Jmc=nMUR;jV~44sob_re<JA&t3#G?;$#o^2C*qH$qdOkdU3<%T^@IG#f9K=I-OI z#K~dRehY@kUpx7poKm6zq{`)?M*x&I+Hqgh>qF@^he4X{{`EDdp#m}5F88o4q;cs) zj|hY?=mCEqIZejOE)@e&qDBk4%~Vq%6v2DFruemd*B$C%mG?Svza(L`yk~+^%{m7f zwii83nK%2O^7mjhRS^{`7aFBI(Oleuvr7$CVKQ`x{&g3>F7CiHlvKnj+&x-#Nr;wv zab7+e9sY>kYaW-qMh!1ky5Bi<n_v)2Jg#Yl`xajaKjW`<Z&9a*vq&U^8s^TO&`I@; zdmInF{lr_Z-nvXrQN?#V_b8eQ1#mA_WkC$2z$;P7`=O&{iz5@EAOP{3uqf9hb{<$l z((US<Nf-T%Y`fyd)VHG5`t3D}E=W_m3ne0L*AniD?32|r<Mms%jaET85Apco1?6X; zG2jtUs(^s9E&X(#EJVGL71l1;H)z*h)X;iPjm%-7VZ?4>+F$82?LYHp^wXxjcRz?M zW-$dOU-~B$g$Sng8&n6K6TH4DLL*z7Gtldsexlc^T7ft1lqvJJGB+qtral>WQGHMC z)?<~&3gMkc)$I8z*{4&C^<?UEH-l$+dbmv1v-^7{`S5YmW0)xh!q&K<9_N)=L=>^Z z8>b673|QfSo8exccTM|fSp@-exVWE`-LCm9d_~@+cJ{gG@Vix<ttkB!%)Kys_L<H! zSD2(<D_Z6gMfZe02Oy7x32OnRN?*!LvHR_>HUkYAH>_|y&2VMFWE%7KWaom9WIuMN z(gle+3R}9<T~3!x9Zl*!RsKMxWDp<uWDh1o!F|_<JVVm(1tv5EZ&cy_!mox!EzUg> zxM`h~0tm1b`oR<4XS-!SwL5WNR^^8j$o<KCHL(vGrsUOqUQb(#da9cGy1c#JdwUR? zjOML-jqsC)8YmP|)p3fHYM_)_PwtC5Re8moDa*~G+SNlJ814sr_p&0-$geJ2A?i%; z@SudU)`zASH<9zhh?U5OOPrmYPmHA()oDo<hoA>J{$Z)l5q?Dp-?zo8M;n<tVa#;| zkss+RbV<MF%EI4^5F)!)l}iMXLEWO<gjeq_-?ge=Vvywj?d~_(x_Cb(S&6c)fe@2O z^#~QJFs2fskmDz3r0?J(LU`te3SBgoo<&m8(1;Hb<0N9WMAf7liOX9FFNqAIB0-`* zAv>rR@`Q<3P#t6CSyI4Ae}kU&p<EGbuhm7B$=@_~MNX?!p|HJ*lMf(o?H3KcW@Ki| zyhsPhFswQIV5dZ24XERZk-l9BqL{Qvj8kGW$zvugQhkkS5o?n#t8zEy*Q>ghMHi4o zSqIB640%(D;_fp)XUO3ZuNt=p(1}U`Y!RQ-?pN8lrDDpt8iy3Z<xX1X{NX*2ln8TG z<+{$GI7p;F0xAL%V<~+FEK3+Mo;C%j7)v)6`k<j#)DOTUVU`YpC1IuVy-Z)BN;Fjv zR}u0zU6MRZZ2O9wAGk2>p$r<tdCA#vmDJQk9<FQsmmc-wt*{x-NdXprE5lY*Igh`; zSK<yVX#-{IUx{UZrigFutUUa58qYg#=L^l?C#tU&(YRB#18@-Zm+>3v)lwlX7xjt& zzU11a(JNH1=y%NaNV^;}$WSVW3kjnB0f&m`of%MN4i(>wTkpqfT|cL&?dKHDs=#wT zW2kgtF~Z=I>?Q^xR8Ylwr%qS#SxMfAaKI%swU=PhSaN~DP$!w3J4mG_U2?htE2qY; zNL6L2dy=}<n}AQCPL??bqo(^0j^Kg2YoEXw47FR%mRYjNlvh$hD(jQ&2~(_>^r<_+ z8Ook;gMa&VZV^q5lsJlnK7G^YuO&&6EF<e>r}JA%Ogn(ZacbYi@p5r1f~F%f9rooT zXs>CC_3|mJNU4-w+Mo8CZt!m(;8yI+EBRG@h2alzDls`2nHGV9)8)*ZKjA{ZZjM{~ zMc#-NU=iyY&5kJ*ZKs~gcP|qJ@^{p?o%!sKvKMFy>jx}!w(F+~%~G=*K@d3N`d4y8 z+kGUOsE}x-l+;L+n83*pga*{^WR^6WsK|uh0j0RCb7n}>V31VmV-o&kPPE}NC;1C- z$*HF^V9*a_xOz@=|G{|D`V;GIjt~75VK-?t7CgJ!$P8i5(It(hhwBt4B_!7iP4=WP z@j?<>XOnaM?r^0@MHlS^o~^Twlm|zuKxNOX2S>?+qg1rAN7RF(<-yS^WZ6CH!7=jS z7!|iHsU93F4~|vA%O<D?$H{}^R0Ojxst3o*gX2{gvt!i*$jsg0DizCYC%tQ(eS$nV zK?O8>UOhNb9-OG6nmwW(d`2F8Muj%JM?E0J%-!LkD!y4#Jvd1ooTP%BO;8U`E?FT_ z&UkwAa@m|rxSYzBve0Y0B+}V?PZ3?L|5+8~(2z(Of~p<iPDf&%kte6S^BuyS^$_kX zLHM&*))DQDSOn9W`ICPjH`AH}#ZS1I)?8Qogqvy2q2edpOlxi~e!|VP=845mxS7^G zz4!??)7o1ZMbSg=ep<VrZSiw`Kdt?~1D@;qY3;u|;JLn^*4}ZzbA3Opecb`i_5HN= z%?CV}`&+A|r#lXKBlo3yYWD_r>!ecbdomlXbISxLfj*H7adgDkSN5Tzr~R^Ff~S4V z=fzLUvf(l#{ni0b%d_Ef9h9QDZ2xQ+Tju2llpT-_4=~a{J>coUY<QrN&K~fzA{(wq z%qgz(ux$9S#P!8b24%y85|<S}IXoLaJkeDAWN<b-IB{0-lOwX>BNC?+KN*q@4-w-B zS+DHe0-VxHMF|cLj9j3>A&@&yf5ZQwv?GV2zwUDUl<PZke-!$`Uf}e1g>%mRRJAa9 zMK4QX){$MIO3j|7uYvo;G8?ulwH3~5=6<*~Ks=tunmJ2t)iKOQ^5pQVrVFK3I_67g z$0u2R*xkDwZzt;WbUsgE;7@>z!CblVd~N9$IQzIu_@mgz`lsA4ab)SkE&J5^9H|-J z{TA5PB9>MplrZD4?I%zm*X?f=sz}j}`0+dX^Ro({w}J=$hWRS5bI-0o+FP<*B;_if z%L)ksw_L2K-5+r_S%I}g$#OBzaNFf}r`)Otatq~lm)xoVbGOK?=sA|dT9&wz<hDm{ z;oeHz@p3D{6qXDB>o&=)M7LYc)?4Bd-KKYitcT^0(h?Vk`rZ{18&9N0C2p16?vq=# zffDyHxs}Lz%V9PNbjPeP$K0~YO57Z`{{Ee3?00$wpCBFa85%}cqK`tyF%T{mRWd>! z6D^D=Ursc$D3@!uDh;c$p6=X&F6v#gcAY5fF4`vWybAWcNZV6%KDG^s`#`)0QCOtc z&>u5<HpUM-j75Lph71bP?lmGAiPk=YZm3M;!^*1V7Gc=zv(SSnwNDgT1UaSAkE4%5 zf%3NWb^u~n6L+Lc@0e`0)LkOUUAKrd<d2LR8@Y;$vysy(B+|d6#oj|No=Tj6r<AnK zq{CYvCf?#?C>^yrP&LI%S8LtPAKnt(4g4PJ5Xl8QwNfS4$jene3O_E>=yltT2s`!! zf8^gV(L^l{a3$lj)~G^nmCN`fz-Z=p-o&lV!lhWxl5I+vf@ynP-@jW~e=#}#jJ}Rj z!ar8n9hMuW>|g$|zAn=C-=eSUd{;yKf3Uu8<s1Lo^>yP5?&e@=eFwT>mL|SWVvjxi zIMX{EcaIiiLrOckQvDXYo39l#1Z^#rWh0n62?Z`(F-i0=PDnIKc3tr`Z&e?PpKU&$ z@1U49mORF@@i)H>ooFWq)K#SV!QWgG=tj{@kdW8&Hy6=((+J#b1FD{G?eW{ySjXwM zk;89Oh!x3YNPF4ZwA(12`x4ruF_s)g3Cv8;yW341jj^$|n`-zKr~SINMjad)etwys z0U7`Bna8qHpO@xXDb6)e8uu7hj`L+!t2ds!{g_A22*QGg5n<SL*c#dIYB)wn#C<t< zbAEjgnppG%_1ic4KB*$}M&Bm^BaN~jHhxx>%0BW4H)v0}dDBQQ;zs=7X<~Z<TeKT_ zygfNcQUF9KX6=mHWRPRSl0?CATzR9}c>(8d3_%26vDd*k!qmUWhn1$hSs{drH)pCh z+Y|j`*7h70YMjHO9H#@$chslvI7d=I+C)LWP3w!v#-p-u%v2?Mo%c59OT6b^MDrqR zM9J$FYxat*^@<VK`vwtPIPOtiS;EkGWvjii-!Cr9upIYqNRFglOaZ*IJzHgLz0UOF zvIy%O_gh|B^v+({XS}kJ;<Dhrqx^5A-kN;b`@FJMUfDs?-x{}yO4)rp10HS8nh&wg zez%gr^h$D_eP(t+r4Hyav(j0`sW@uiSP~0vPo9vw&R-uue%U7G1ZD9!;=yC1hDQAB z*b%&vctavokfELE%%#Z}Oy45Id#dubvx8_m4M6jrGfh{Ne6+A1`dUQa&Pd}geUm`& zA5AbxH6&qKSZi0at>KlwL?Pa&irkUfp4uMA^9_kpOj1qY_kd+U*!VUXnme%cPd}C1 zgpn?oxFNZTJ4`ys%9Xs56>WUGgTIM6qL~(b6aWLt8|ydt9a3t|5SR={N*x3XTOT&Q z*~t&GE_=p^DES|&<Vo&c)5_)LEg&=m<L?-2S(|9fc}9lJqGJFi%lpZE)5#3GG2Zp! zuYl73n;r5ub0bqDI!UZ?8b|QZ{fc0o<jVS^T2|PC;H!f(#VVTa<|i?u$ynO^gvnc{ zS#g4F;W`7(>B8v7zzwO8!8L+8qGKo2p>6^)B^N?{LdXbA%T>v7dY$9n<RdTXm_Wsc z$qE2f0$^0H=?6gZ`(b3n_?>3}hVD!6T(J@gYs>g6xzy`lwtF%3CJUFOx-GW<hZK6d z`&Wf6f%OXam=?OW**y{aD3Z38V~j(8_KIN%lpTQsWIt-Hi|*dY6wg0S+naUs(fH0D z>~2dX&+YbzbzH<61HbOOS`qiMV0=@ijBmCuFgBX-W3sE5wfjtx$SZEdH@^Ak?fhmQ z%Z8Xu&-zA~nQUacva9jAFR{A$9reJNp=a{+2jJ*{xXo@f2pbu(m8rmTE{QB3ZWGvR zdmEMR{f0GQ#IuPn9%OGb0P7xXZRA^32X;0N`%;B~gT(IG**uS5r`XvHc=e!tdmq5| z?QC$h-ie)!aGBm%U4!eGwI-Lz8`%sKBbyhbWapdZUNPZWGye~DZvtLbbv67a5HKKe zf}qB!+)7jsTS?WL2-RFj<XpV55mB&CSclT8ZIl~D1q|LB$@O?KZLtntTX|n?)lO=) zh^Qe<32Iev#5#aDa1NKriAg2jZ>@dK9b!Pg_j%su`Tuz|_ndw9xb|9WueJ8tYkwfq zwm<+SUN*aV%aU_8zGCI;$$nU={!O;>XBRzr{YgZ*ga7Nr?JMM1P-OAi-rR5BBU;!N zwOUW>v<r9eXqQ7`ue08wDKB(R{o>|jeF{SM_H_*KF#G2(Z(iMblRa!zYF5e7vT6}| zW8~Bl*0G}4RdTriD1!+($+7&?1mT&ck=!{Rt5%V{@{QO?XVPbtlfImBJjh}0n{|o_ zlc1-tmLx}TWxP}0&#{Y=^+id$UkpD;x7e9fRQZ#l>94CmzjT2#oNlt&uVD#0MJ<VA ziqjk)OfXWYBj-E|`0T3^di?H6Yreg^8S%pIY_>6CgX<{yU^jQ=sc%bPLh4xa$Fp;w z7`|#(7PSuz>bIVlFm^W<<nZn+emD28Za#;jRvG+;4!8>Mzlbs?y2h#<R+H#pY<)`f z1SIqqBCEa<Jwo&fJBe%Afe?HKrBNDta2*B6a;4}L+-2EUdOg0dxsG1<#HZFb7$+B_ zDg^5U_$>#k3#*%D_cP2dcUZ?46Zv~d4+*%%Jq}{)-)`g7i}%zjw>EWUbx{<JBnq-u zB9sZOv<NTXV?B||XQiI@9+6=mM^<@1PF+bD2&PzZe*ZUFWeY!yCWoM#Ff8;F58Sj< zqtLE)Tzfdfw>y@Tf@UQEP}edR8gH7A0S+ARN{-aAO)`x>jO50yS17Vb;D$J=K4n>K z2hK)3RpkV1<0i+E*OkOhhBJYU1FZRH7c?Kp-$I!maUD<?a6tnO1+k*`G3ABrW9S}h z50_Y)^(?u;T>w_4-!^=st2}3C<+<^6svCK(NRu-X9`f9ReCZ8&?#lcW<hc+j8F}ta zMw^l6{!73S$aBBQ%5x_fex5JS;f_jB8^W_-eK=LE5C7*4BiK#lR|LBkMb0(CU65rO zpF}*U(=5J(_d8jdSg{cEvXz~om92M=k`jTacacmf=P^Yt%4Qv+Sv%b?Ue9FRqIdDC z%%}OXg{HY842Rs!WEM%S-7l1t0M~*AQnIw$lBMqBe#zT%OO}e<HrFp{`qs70688qb z<oMi@DjnK>N%#by>RPhct@2Bj=9UEWUGGaUNM*%6l<e)7eD^g29A9#jW9uNJ9jx~( z_5c6FzfeB@9m)_zvH0}WEdGV^@oxv81piiQmR$TpH^{@k7s(;2*Po?C7yMH_LgB4= zf1hUUbZ^XN?FRq+LIM8$(l2zHUuZA*mshgXJ;5*8FSlg(_?K6*#NG9Z!TFc@l`(0X z-Q!<g$zr$7FL_sP$?oy5OUYaOk{9|V_l$q2{wny#&fxe}i?FTKQ;qz%LnNZL^VnpQ zR3}Mwx*9(=!XybtbDt4=EDLqRJ2J&<&hs|DEUI!<0kNSCzm<!ZQxhc~MvS0yXB4Lo z(R2h@!fUj}#>z2R|H8TfM4TELJK$OZ6)JmeU<F+%H;N$F*jzJhS56yYCDy?&uXzV0 zM9OoZ+t?YR)DdMvTuzVUuX{Zr{7%|f!Vh72WOd;%@;FX&)H;z8GBvz~hjqgN>3KnU zE_<X3al8Ibgu@|P{7z)0ow38vY+`HpO66@0>!d?fu<r<g;4W{ebqKvf-y)T}Xl^k- z4J&y^N10Y33F##U4pHYq6xQoUL@K|KZt-I^;fe}ly}rV(oGAkR5^oX-!Fo>}jJLwN zc?(>M?eZX3n<r~5mHP6K9}hy5IW<Wb*NMg-Eg5qZP)iO%Mzo6re!U7w5dl-<?&?wd zXLht-K`?9?4?f_*G#o+93&#IkmGzr;jcOz~!0op&{Qu3oylc<;N{U*E2Ehd}tcb=3 zuvb`#YiKROeefFX+vzoRG_5)fRbqkFofWzHy*^sGJBmjQo0-$grrFMcR$@5CqLsU> z#1Znq8nF&cvK=w9I|tgccCXd;>SZXicF7APj#-Q3$$f&X;)zDqUOj2AwvynIHC3_e z!_NTG&h#N!kwUnOy%JVcxjS}NZSpf+d22=6fHc<;I|PMWBSJR3#<&2Bgr@bARpV~W zB$rBEU%sSuH9Ve~w_dZtGGdLaWXwPVMgBBaDu1&jN9XhPU}iW_R^Kpyf5U2;%}h%a zFvSE()c|5j4~s<Ta9c$tlhDA(e9PUoRT*6r%Bew<RdtlZ*F3<hYD(P;u-(}yJ<8jm zf1wPFd>RVQf3&Gs{&lFguso?K+f*S_oouR-pOo<=?r0L!&@3HI(}KsOQTUTh^(JdG zKOIf-*Uu?z#(#V;cuY3k#Uu64<HwzUD>7jzdEB>G@4}I?Sh96g$zk$>MML>xcNElL z9U=de5;VlEomIu|Kgr3d<gG;P@lR@R4R^|BeN~78WbJ5GWVuy&;}&<__c?nb1}*>? zb$;~xsYeyKGr<f2mP!O6`C27{OQ6`}NaKSN=LYvoGOK(jNIY55T9&6OkXH)X@@<4X z)yY$ZJWX;B^9$MR$S>Lo@=7ukAi21|v{8D>%OrVe_FpE;OA9aVDVs%$>~wp}SfzLF zmm;ajDBMrv$?0_{<A^%@eR+yc?45|KO6-f2*bfTu6qGS+*Ge1(SPjjus<Q5c<~bwr zHq8mmzaccAUY+4Liyo1C9k2bjy2T{q+`Xo7uj5Qw6ae#hqyN~^YZg!P&;RZ}I@#2E z9;IVsxXOQYi-D237*gt6G`XRsz@6|S#@Lf+F2k=makJZdUsI~h5KACUOeTw!?Ju^P zuH_?1#$qD;^|GAuPL-jzNaaeQEPkw}eU%|&cd{$%E0o@LLV@9@r5oNnsclxL;d>7$ z$i~9=g4PmOk+eX*64A@5?m!g@MeuQCO6L8Dxu_Jy8G4+0YScOM98&P?l6qsuDLos! zV)ZGO0CqbHW979@Sy_;0U%?61zoN2huow^xTn_haQT%ofIrhs=?|wRG0`0}hLK(a& z)%e5q$X@-W2cnH~Np$Rbdn6d%P@E2<UvY?D5b8wOSgUlN7k0kf*I*@xS&X2=y;~)` zPItibq{Y9tYSd8$7=B_@L8Q3#?th*Ynh_?YYNCUOuq40#oa9EjBV53xWu<ySpFN9H z^$NfyRSKOGuc9*Tu6v&gcsqJcCP8xWSj(f2FyphSKlW48ao=<}Hh0Qz)WvdacFKQ2 zg3gL}1y4$vOWh6;;*@-z@t;EOV=CZnai2d1wtz$vmoHr3nYNvO3B$5e&os(Ua;aOa z!N1jyn$$W{-4j0(RQuNmlQASo|NSvZNWDMNinh2f11G8Y7=7<>uMycSuWt9@?~BZp zSMl4Qey!q&UvZ&d@%2>fmI=7U<gnEBs5qU{ea)rrm&3r0GVofyTqH{>U3h>TJ{{%W z1kat-i-Zd!NX*)({6^%*MX~_|zco`)C3Y!Z*~*t+Dm_`oAsk4Sps!vqFZJ%H`ZR%L zvr*2)C+<Z=Fq5n!+#0`7otivbL&8+b7mG7S*(Ah@-lAhmxrM#7l`Za|?WSm*dotOi zl6towXxZJS1G}O$*ex<^$2?7)0$aEul)r{BoD#VKN4AAn_q(1SUJnqcYJ?8akMpWk za*THh-%NTuyZFT?Wm7ZjU`JdK#?Kopf9}3?D!(&wNm)n1%3n!;CZQOt7eIa{*up4z z|Hxg>3t=%t;D|UsbXWV|>fJf;VQ~sm-M3z6!QI8hAm(YU5;5N1IY9n5u~mE^ucB+2 z$*EFEyMGraUYf0QUm>GB)w_2~HSix6v<a+-@F)#y8*ygBP7aJDF$F5+|N3Z&x-gx5 z`g*gx$_U&^QUNTXj^7CWBoVgnBgw1$Vn305vz7_IaSkw0jf4FP8Qln}rmFQWZX0*s z2G7MCZ?eDCZgI!05E*ETyX1F>#VwM*O7f2|`Tv%ie}v>a#Lxd5lRqQmEf7&rq(A?7 zuPQsf1juy(yiyvwo%^g{Ht?XCm_QyEkOSLg9t3Q^=QyZ5)w@5Hm7b@NJ4v3BTjaLi z7nVy|-=fwgFOcH`{oUf0kk2RE%ltMNIt*Rg_^0I3HYzf0?1pU%v)#t8d@FG`$`dIc z=<gQy%OedtdtBd<@oxm<x$*rv2J5cjqbFM;;#jec6;}Awb4&U1ns#Yv`Ys0S9U(b% zV%hm%Zd2}`DVV;6QZ4RZwHWuiTuQM&YO&?+HoBkwt#F5pG7!dig0{cZJ40Jr?rj%F zom|@D4I@Ds=^%miD4mp-Z2Z6U`{eQ@Hlop^#9k6fzAoEqud%fjMDegIxut#-D=f<r zj#ki}&)?V^H5;xn&zV5$wW-TXqRDhkd1rLkr(Bec_=C8N$V>>1QjCkk&n}5{)F_J^ z*HJx0d7eBNrkA@HK8mIyg&pIPMMK6V$$3U{`ViR;XA`fsL_)7$76hG67*>G&^}uf# ze?1ebv~TUO6|ytV)jJ(opO46Q@k^Od#lA$*O53TmBdK#nXdme5@rHLLU3)lkM@RKQ z9YTBcz><P-$>{Nra%~-ZK=NEC<SZdIN0m9Tib<oBu_0`u$12W8{2SdI8xn0e3b(O} zq2wKc#XVMmOnbsWc|fF%4a9O?T~XCc&A@OnFvN3p`4rB!PLX4EoQu6dW*XZ$ry&F4 zR-MO(N7w!LQU3mWr~4kv&6`JQ_X&|a@SI0abw`rQS<Bc#g7=$2I^0&LNJ4L!)U@Xw zvQ#oJb+6GvYutqt$m)L?dz(3G@CqxPh}lu+SH;nh*f$LVwXp0c<{ZvL*r~az)~R{K zUKqsbuXSo4tQAKhgChKju2R5nNPY#OFx1Wygd$2qlsy9RN3tGXiS-?|9~UZoaLU^v zh3&PK?3g0j$)D0%8V|*4B;-Vr=xvQsmu%F5FT@-qQem=OE<v#7UxWX|)%Z^=!GB^g zhZB~Vc>Pf#59>Zv^~zGMP=w005f1DsHpoMT)XCAjvMM+*EM0QAuylD*M5rp(aOH9h z!Xyc6SLR26Kfhs^<kgI-4y}+Pst$3$kcu_4hJmk=jGP_h$gb0q=ys)9z_A^{5q406 zu7sp3TvdREhK40ClmLma;s-qzff>B{8U!aQ1aV%$3k3*DHlz<~i6$>C8$rxDAA;xw z|5NyBb#%s-&QwY7<iVB)pjXFIElQd*1}bWk=gGbo%9u&KOd%lE`FbVEl?_A4G*og_ z@Brz^y5Zoz!UJSB2Fl?8kc3xt#!RkFJzb{PdhxN|Ua<U(jmzY}Nb3BuyYN1b4u`uD zwm|s6R&4z@UE`gtoQ`pZoe9TojSyTQIk#6SiA=|YV?Rs0+&s6JTsP5hB74fm($l%U zT!tVoE5;?~{-{9M7cVR2MYL=!w|aE*+#i+jMyEKYzL_1fF_W!?l(ggNDbAR?^u7Tu zyTb*D8wkX{fv>X&D@A4QLt|vQ7~|T>ci7lp8y)sxMrI(^m3@Zuw;zdsJT95gU!}7j zu?m<4ICCRMldcTHwo|wW=(^ai3}Z|-n^~xP$O59-R9YIvxeC28XoIX7E%uXH|DNZp z*>`|B(bNgcWgf+AZwA7E(6&%CM(biv4lJrYjP<S<JT6JH=Lr_#tIFuc?l8klNpw$! z+B#Z>DreIXjV5J>DTOht))Ak=rW8o>^-%pU(*=r75ue=RWSD4t)n!+LG~x3bej#;& zBH^L(P{qRtd7!Frg=DL14ueE;!iCg&D(A!GtQ4ybBUa+SWV+~yEconMkH=PvoYhQf z4j<Omx%elrCw76?WeDQ<MEUSq@78u8a6r;R$lgp~C0o?y_@~d$122_8oEl?hNj!Y) zz*og9;?1n*L7G3Uc)OVV;80Hf6ZLH$dtrtohAoeX3xW0U2Em`E_hmlOGmDKsL}b`9 z_3gACUdJ};O_9{7+4kb~J>5CTY1oTMyEKw2O4Oz<T@IiBAU4eD$x(C>=B9#a+r!Bs z&J0N;5)@_k+0}~Ala-^%sW7H?2G~Qqxoz&1s+UY+774Y)?kne1&LzoEw1~M_7Tz{D z&l@|o+z=UGI>kNyLeRGI?S{=#nVF$Sp4ufY1UJDHslK6@F3ygms+SjFx-0P{V7d;G zWBuPN@JCo%`PH>IWI2W1(V@XT7G3+(qvgLI0BEh(3+S<0%Ds^t?ib5I1JLnToN0?4 zg0B}&U?uLKE?|stS+mm(n}KLd><jK-I^;gb9}x~%Q-uiJ8zd_d-A_f<dopM!A_1i2 z3=%D_6Q{MNIQ>Py5(K%8M}@DD+{u(r|6W$;mAX<Be~FshSL8*p)d-otcmHc4LgXFv zS&O=(>3F(ThETzi&iW+UOaC>yxFbJi)_30+ewPwK5cr?%WB)G7SP{g5D#Klr<_yPU zD-?yES|9~7c;<)xw3Ay2*x|3@ODJb0hQLYui;v`paHzaZ9ky)=1F@cChO83PId`yH z+u39#4wZ+FnqsP_97mM0tD-%e6K}w&qeebTE+c1l7_lOA^^dp{TMw^NA!52{$e;!P zmvZSz6h=@X=ekgFt|BDkir6Ve?v(xhZ!2&5Qf6@955k_Xr;ZvUOLmxhf7)xRq+#1< zJ#9Suf&;myNd#sX)O7e*&H1wSDc7n|J_a|eQ9g!ovqt&Y<mQ^Hz?<LL??rs{Z<7*i zO#ZbEfCz;ikYW3fq?|NLjMfQ2(KEy|b%EdyfoYw%lreFx#)HOK$Lr<=m8NDq==Nc; z5fKGBrOPFHELmr-rE^48*c9vbmZ&DcE&>vn2nEGR^&-8`vKQ&KNzEZXuaJkKJgn4w zT%@-emNLniQVPGCBWFqJ>1yd|>b^#KlSt&j6&iXaA(Gz(6d7v5-$#=dbAv{ySrp=0 zLZaWN#9_<4N(B76lFHX+_D>(4;pduSCBD+d9KR}dur>y<@ufdObbPS|JHKs{ju57m zx8&%%SS^Hn7Em^K$uN8@M{ZwY%|1%kiDP{)_bu*`i;>;W|4JCAPRF9UK?oYjb`g6@ z-F^6~SF>Y4gqN_&x@DgTcY92!&lHKIX4XY3x7x{~GWKcY{52!(u$sg{F-!7h@~@pQ zlP}9O9Hc}@HT8tFXeSLl$Jdf_>^^o<soX~^uUd|Lbg%z6a8w4#LnR3v@9EC;@0Xay z`p_6>ey2n$%h+5?3&?1i5KSM}4#WBO%3d&*O|ch)1<>p!ElS^^^|)6wD^O(S#rw&- zPHoca{L)9@1!uK$vIthl6<?q7%{v`F>gxsBxMW*vti{1SQx}sf^M#uPcn$Q3+&K0K z7G9@*L-^ZcytR7)Pv&!}*TO6El%o*!5_E;FVwo>F&+sRmzDvvMy&nruVbZ^CHT>KM z+N+Pl<8S&Ge>Nb8h`kurrPhRA?gGBaxJwq9A|uR~hL6&ocpytgw`d}){y*|`kH|6P zUPl9$`|-xGTw=70Z>&dWwVj6rxK`6pa1s^4`F&X%?~#$eFB2ATxHN{e<cDx+95P|l z=fh6+6LumFuqRUt<Dbu{CxBBKvw=MvQyZ$A#H-OvKA#>_>c5BdH`hM!r4U|HE^QeD zpC*DINGf3w5HqI2r&q^Li*oi@+~s}wN%-}*@RyIomzLHJTb=7KulyQ)CEsq@KBh`K zp!~WH^5;3ruO~@JX1JIrD`R|q4bMVhp`T0x3JVVvJSe}eY93Q136n{fECOg9&SFy{ zM3ZS_;N1ziVu?|jG^F$5KX-K!Z92lCQ!SBdC{5Pgh0z80)XfW~%1+(*pnJ(lLMJto z_$b{r>J_n&U37@Gw7+K_?a>!Z5y>%IarM7cM)sMW29WWzQKbxL1;17Nt|W`yJZ3d+ z*OQ{DtER{ptblS=j>hrPnc?qkSaiQO`L{AdyvyqIIHU1XD1VF7H4<|zpt~GC$^CO; z+(7^EZ5-R(uMn;xj)9-|DkN#|L4LkYC1Bsz+Y`?LBR^-TJ?~yDaYoI2DfKqz^k)zC zPZWC2$mbC$pL)7X$QxHox1D`Qop0|T{W633TI$xHMJkjyNyNl~NNWlyL)Giub&nvg ztu>RcX$>3GtB4nehdfdEjQx%feMI(OuCiKuBRIN`Q+F)R<UN!1$J$Q3MW9u=i3RR1 zo~#6c%?N|PdjKm{vnIUD-`doSzMKu?+;-IZ@eWvTL!W5n4lD5kGA|T~s&yrXW3d+1 z|AS>mVmjSHDvV6(5PR`=+PR~ifFj4)g<Ej)Eep9HMPy_m$;s*zat~A)SQd7)gu!Z# z9m4Py%Bj27e~&fQ51{&PYCSbtxW&DrONGl7T6q<|{4f>5dkR|L@GETlyHwbdPz*)f z!y3=?8_Vzu=`TmZtK|$jqRtj~A$OO_?-746zc<Kx*TST1>bsD}3T(^X;61>s8hlzf zN_tQlF+)0q9(d0RYA}Nke(w0`u1x-U9Q~B9v{<4ovwo43e!<iy=l|4Ht1Oz(9`TLv z6m)7lNgR5yz-F2XVpHr?%TVPNjk<>>682*0UGnw7Kc(H@ua5N}IVm)gLwd#+<r8kZ zH8VQ$!jN^F2v$*5<>Ku_buvZg=q<Q7MD==wmt-J$%l*>A2AjyLyv>5TRVvxyzRuuk zF`g15A-N&>t{{)xE$4#(Z?ajPA>!Of&~veRumupLi~!VnwkUjo+<Dakgp$%qrdb-J zNoj8Y?WO0)0b)K+WSxAL$c4NF?59Ul+f9#xg>JL-{s9Be-0ZPm=47>QuNM}<$Sijv z1+wv5{AsfkZLd_E(oV<9xMPjYi*qH3e*XFioyqiCr*21TTxZhWkz8q<cUjJ3e9TEt z&k6XOo*lVU=#y#1mD#Bu+PL$oScU(6<|&Okr^X_UJEt{FnDt@-tE!#Cae3ryp=~=k zTMEX;$pR=B8DG`#(yWg<k%-c7`sEvU{=DH(3Ko<Uq?e=L@p(;WCkZUQ>Blc`Y25j} z<kr~5K)qP~vbZ<|F;V+NaQ28(%xULPAtvqAXk*t&F7aE9I3s9Nyu2Hy_YV~|d}t59 zQ#e8^eJpURnQk@$OtsZAxZAbI(s|Qsb#{7+yn40BRk82QJic+))YvJFyQVcn=q6SG z+~N!Irttg2y&Fl^8}1>ws^JwzP{at{Y1}2_<GP<Mof1@4#>Z`ld=2q+5%{xJ`(TEp z(4qz%)&Pc8Mhgr}`j=ekH>2ai6M92-T(dLd0?_Wyk<d64Eo9w2w5){QMFqr=_x21g z?|Ev_<4x+GU2i)E4Zb$N+&_-MB%&E6ROXG|@=zK)FjA8;G<X;hJX8b^b-}}=;9;^n zs3Ds_;Q}fI3OEU&oB3a&g$>^oxBB>oP~)zN*6d0;Va<P;`w%B(??aRt3UmBhu)>lQ z6<ai?8gO4As0?S1A&>D-FrmVit`|u$u1iv(1Y!m^*!eR8&ZdW;Azp`?*LVF_h+9l> zFUf0sS-m;&qxkBKxir&WdJgcGHrexKNjicLg-q-gcl%13R_;#n(VFbOpPMFqE-Y|g zBF(28k?O)6zDkUOD`duS#$V7P5UhmRCj?B&nEduk#nRsF+`5l7bx+Mr8)DKfBF)!p za{4_~KT18P=9W3nlo_6zcB4r<h%|4UbSroK!!q@3e<^4D7nm~d=cdgtX)lrHi9I++ zKg5i;@UzP!1+827V|wXSxS#)`v$GFVOu48@Re*WVfzpPavhy%9(~n<C{r^ptocgo* z`eyQt&Fx!1)3@WL?B!CnYyD-Ja#n7+qfEIkUd$Q$F(z$&ZrX5@_DXKr_e|QN+_Z~K z+Fx_iMwzrbbJI>SX>roL`EWtMzr*9oL||H=<Qjjvm$--R(4%HM;VC{J^4Ef!*r(#~ zh$Z~DUl;zXv|~Fb<?!Er!hcn&qxRNbv{L?-yGVFwKD{9N$&%scZS}k3-a$@Iyj`Qp zrwSuIxfe&s_9@oF>~yu5V~?UMR&mn9O2}n3Yz5lMPt7=;p79-rT8So-<2w#-n8G2# z65=AssU++6d!crG6hw}2MsU_*Kl>8gJSB$kk$gcSQTxgVVmdH#>^>b;$BIaYzl_h* zstijbhlq9NzCg3za2|yTb8#c+%b2UgMvweJy!@uN>)+eH@<$e3NVd;>osDI@kIzJj zs;uQ`9&v=(T*NbZ=5g$laTtla(mO_8T{QDhuU$F?|6avKmi^u!&AMFzG{{nc8R$cN zm1BKIUPmV$BQ@+?e{54{LvgqxtX+<Dgtg23=6AVC&J~N;98!;i)=9{UZjEp@6}!aa zq5N4DWZmOhXiXB_JAOl4h(X%;7~^kjfMq3mQkz4Vmi=R8HyuK>7Vy9Twc%|&4dnB) z_=W?yL-o29PK(Hg@m&S6XRJBmGr&5RJgd}uS_!v`NvJ7EzJw=uF+q`PlPmO0xq%OE zb3T09M_ykv^B}!XECZj{NxO;tRfUZgsr=aPSWMS&mFP>=BWDsyu8;@&lK$RK5e4O% z)He9lu$6Y|YN8)kb;<=V3^xOq2L&+4KG+>#4#bFM05cr~G*2(j;mL@T$Z#r|ExHdm zP6Ec8*0inbwJlGtSFsQoZ<lk$dJC#Aqa%(6<!_?A(7+QS;mJIZ#r*~Cq+d@Hen{ko z^!hAu2p)zfW<z=V&K1)j6poxtEVYwz;_#o~GbYUy90;ySw$~(=)s#P5gWB5`eukMT zkZ5CJ=b-qm!>!pTk&s-~S@uHl#0Y_eq`mOAv88}=6@(j2T{aXSP7$u>Z{4kz!k$9` zlf<dpZSES92@%dz_A9GF5=vqK+Txzetc2sI4v1Ni_#)X!EQs~0LG3$?tR?wbzfV@5 zf5n$g%h~oKF+o8=`yZFcy~g72Dyw_bZS)MALqX%h7OnbP%&^?kHr~dP-mrg5`f|TM zXFT-!a%^J!<ii_2;VQ@y=M>1t9eGAc!~47zS2LAJqJ$>vhqV~TJgmXh$@9zDo+L0| zHO`nN?(HB{HAZM0MkEb`3foTP1CMH*n~KBn<%PPH@;CB%C(Bq`#6Yoc<Gw}J#Z&w8 z|9-YpgzGx%{GognpjGz~6(o183U~R0v5TIdDZ01(44eu|z9+rtGs1h5-xg*T4^zqK zUM!jNs}j$vIvnqHH+F(VuDleV<`vi%0(jc-QDuT2ug9L02KtnwAJz6V(`d~{|IvB; zwIH@w+$Pg7Lt+Ocy!}<5-kq~2V@;6IZ=bs>Yz_QYbXurvINk#UTl`A)tsCC*j-sTG zSMi%lzOtI+Y(&JFsGy7DGLhvA($IEVl!g*71CHxTxx)eGOqima^8vW+7TUTkZY5Tb zJzUY=kghH+>zV#=Pvdx279FYnF2DLcjiW%v(a_B}E~KOx2OXPOq7x4Sc)K&{IF2MZ z)L5Xw7iCwCJ>Ok+&$BD+rXO&zAmdQ%J&*C%a`KhKZ14fZQb9C>cT%bN0N06+%Ou4@ zLCO-h&!*kzy*m^K<xpFRBBJ2sP;Uku&~fVkpJ1d0epXY0&Xl*c*q5y23eSTG?gvVi z^~{2=;X|*P?BFpL(@ow9T2Yl439ZDh_z-Tq>Bs_tYLc#41<ov??qpFJ2G&TbhQ2~T z+);t?pSZvQepL(BvI0gKy==vTiPg=Q;&?X@n^?5cjTN0%d;*cMGa)$}UhoQNE+|j? zu>)x*pdWtwRTn=d>%Hv^f|P*sN)%ARSGx3~5P}VWyr)R4;jENSK;)7ysxjLx-qPEC z<s;cy*6T~8?xU%@ye-R9!`rI&Ded_+;Bc-SI<XSsksjVQTRb)hJT{Rxp&Fl#y|L1! z08B3R2v<JOWxnztY$5p)D%=|RUcSl54>d|Gc>zVu{i^%O<eXNVPdhJp8#uZ};WVfE z;mbL6MW{15)rCi#P+wk!LJhA;Rq2;xp^b>M_-EBl)v?5KZ}=u*CpLgd)43MB^%l^1 z^9G()wHAyMlhX$Gi+N_jtn!5j*@s>~Tb6|_?vJ@^P<|iaT^MDREOn>qQaShcV!Tm` z@Ghige=*F-aSb_SG5pJ)C8v5yUqn6VewpAM@ZHS*u`OY7P;6&y6t@^_{#b0lD6l5r zv#cEQ{GdGWPo5t!j|DjNoZ3+3{j-EpgU#ld{mR;h-j`aMn)thISr4n}ZG9+?9f1M5 zq*<cWh(GM67zfcCr6Qo4vbV%{?tASs{wMbBoWE&{w)1q^Jo0c7)z)3<B3%I<5WN&H zoUoF$Je{dDr1RT&;|S2rky7H6bp^K88!M{0HZtneS7ASNu<Q@pNsu(WJ)YA*^22bg z`pCNFuf!eGjY7`(6PjycF>%|FdGJQGQ-hWlQ=z-y?p=ged)hy*GFN}21OZCjSP>oe zUX5G_h$;1NWsQ>gbUAk84+N=V#@49QKrD$(D53u7I!vUWNJ=lUjii2ATHSnOX|3~1 zmQ&0Ivh$yq1^C2>FqA4q=T{Lm{4}YW9Fk=G_C$uaW}nv^F=PpP{|>~EjD9RIf84-x z<l{Pf(gT-*&55$L{8))a{i%+F<_F0pwItcjT+JaN5aj-scst$pD-rLZvoq_FUWNs> zoqu5`K{wf`w~{CD5#U!llOdN6_ChXd@wJ+YB!6nIX&7UC8y#pJ3YoZX{6T2M-*w@O zbS;p%pF*y&{WSMGLMXw@)$%2?^O6(AdlK^}Nap=cnRFwyG3-q-E8KWSX%T;pDCEzP zgd5<LM?s9mb&fEsLcuAvn{*DWM6;C2;+Atds5K4L+N`LxJNX=#^+_b&QHbjbH$q#t zczvV*ThL(E5eBmmjY3_q>nC?&c_f`{6;$(M3gkD+WkFpL40WTx-M|49kVS$VfHe$b z^0!8m|FDcIqHv{#FR$jqp@+bMkPCTm=n-~$$9L>+CDtkg@@X_In37ATO`@ZUvEfu~ zLJ&S?p#_YPy>{U<IU=f}$~SRVgDQzyB~r-2?m4C+N|a*l3a7?Qm)OhGt&D^suUq<I zuDq5%7FFDQi`V1}SZvJLn&b$HtTPcJh2i;+oXverl{lj|_2rAxH@=f#m`(daHFLuJ zjqmJlCH|-n*1}TYVpT8k<cz<LY7zwS);AJB;w{RnJp8RjHJZ37$jA9}Q>aHD{PDD$ zj~G2xal9aRoYN%zXgUYK&donr()Tg>!2>I?FVEq|8Alex9#qnhFn<nbv)D}#VXLY} z1JYC@k5sww$wIwR)+n5DdXH|59$AnV(7WB^mh8?Jf_0(ZApM7RGf{UV*0|TQovtn3 zO`f1B<>Oo@4d<4X`7`&CADMv2qZ=<hvS4?v%=4x<nS!d%#b+QFCvGohqYM%cBN(ac zR53&GWKYBAhkTT<%PsnG3G2W29cmDLgK-bc^df;{*J03Yd7EF($bSbQV)SZ^_9}o! z1oCsk2i{vO#6do(=Xu`EXcD5UT!jQamyRKUmuBR%OnEEud&yq0ydkYMr-=z&1yet} zM6NBFAh^U_hYDhYL{zQd;+k0Bkvv$5_0$QTH7+n3+(mpj5916PTw6m)y3WY6#{Li+ z9j{RR%|`0&!<9A-AB{Y-q~SfT)aYhf)@;SziTMI~DQw_s?~{eA*G8X2g}jXQCXD;P z@Ex&M6xgp^%5M54i(zjStek}9S<6nYPp-C8VmEQf#cEm$n9Z21ru~?jh*Mi^@5?8d zwWx`e7L~)ORGln|Bwz5(pv8>dFay1T*%e0q!%TX3TMhbl;sPvc!pepz_z_S8cq5<o zLO%W4<gGV^WF-y)7sA{0)?g&mK7tuv5;ip`-#z}$-{Rx%n`GT1{%$?l1eEO#f9Gi% zRnloI@qeTbLU)(9Sc#uxkf{6v@YB#A?#C!QS^BGUdtN{npuf5-{q@Ktk#?_!S~<V3 zc(2#-sT?is4cGQq`?$x$YI+>l?Frvm3v%%NQ|)vkGcFg+G;J&TpW#6dnh)^cIG(>5 z4>;u4EglTWr2BZVxu?N{@A`Pqk~{yogUQVQV41<p{14#GE7D;iP4G{U>M*U0Kfav6 zQyCJ&oImiLusq^IBWl$P*k}b^G)SyS;#=3CS3N;0d^ZP=ScDO6*_B=6{&JI#M|Wdp z)>hzAU*m%hR^;H(SGki6AEcmJw=#S-r~dvy{gr#G-`4ttiNj~R)L-D&uXy??V==wV z@V5#8z9;^+OtJ_3tw%n8J0BSP{B3_{IsxrF1Mc>TOksw*VR{Bb1iXg}*7#iRK+ob$ z@j0-w?xsTFb@&_GB~Cfk>kov}t;ykZIe_^*%{)IZeaM?%Bmc<!@}%>Ni9eX%&xx+A z^K0tCpX*)bcMYjBzl9x~PB;~FR>X>M?d%R>hz;t%?7-ux@WhkJ5RR`uH8QNjYBqA7 zI47QES0`_Tgt^UoC>3?De^jI}llBSPX^*5%qn&NE)1GZ-Yqp*CaQq|MX`dE04v^Bu zRMW;4a@w|A9p}~CXd}vJB-ko8SBt&#kb6*+^d<eTXzE6cnW#CPuJ@KPW<JXF`bh`A zEr!et2I`t%F#NU+;6Qvv!GPGnNc<UN&14<=z-sy<M~W$fq}5eAm_!-xCOL7;0y9*p zFj#5$t<VH9BYJ;e0&_Z6=Xb0i+p!rW<#a3u13vZk)Uo|IBbw8(oHC0j<8A&H9qR`V z$3IEM5xHW;n?jfJ5@IAk>mnF5%7AjH8Z}l=TaQsGsEd7KdBbZeYxPLKKyg_gy2)nj zBE1k=j9`|xFudR$OZC$BAi>+LB?<XY(4)Hwg^EqPg{Iw%Nuk^9UE9wS3}5i>NBWEJ z?6L45#w~L5gET8kyToN5DsvtZh<GP}@!ce!O!9&QB}2Vpb5?<zN20s$pJfcl2oJGF zH{Nh$!NP+{wrZAmVX`-mE%mO}ViU?Plr^<p4Kwa#w_`L3^a_kF^%?8TdN*>dXk+W$ zN2i(JKD>+AUY}J_@iO`JR#7s2na7*#w{gC-G1;_HNE>3%nJgM>8=VSNTDO4;{WSM< zS_xi)9=X4h98^A8e4xaqr75qq71EmVV4_oULyP3OSo8R%6y2XcPEuHQX3v%1rRn#y zP~fYWqcI;v#`MxavnH22h#sV02|6YzJ%T<-ix+5%TapyJO={)>HC)S<y6?o8Ck`>f zBF%c5u|N4faTqD~;r=jDm|_F5#+T-3h`O#3A1?W7D-vhHLM%=NwZk^LD+b6E50_&T zEWfEKup8Sk5nIIb=&}l;7IGutwcoXerzXqClwJlGNuAK&J#40A=6I(Tixj?C-iG^q zG^sa8+R1T<sd9d?y$H_)XJ0&IoL@^7Y#P!y(g5BPXWE$b5q-=${e#pQTjM+Tvu4Nn z&Q{RsbHxTz;GBL~>gvMe)Weduiim8dZa@PPt3EdYaJlj(xQe;S>3Q?Sp3y@*RVNp7 zkyChETi2VMNa_*m$5xbFDsXu<mpO&wYt3y=9XE@$LjKu><Bj4f9@R%kvmK++73k{x zF(Vj`1gm|Y*Y;VeIoQtCwxEN{V#tcCHw7?{6HFK7%1P73d(9JFyoRT|%ciWRsWihi zQ&!V>9=Kr2YO3TxO()Lqj;0B`$iIvorRf-kiS@{~Qz`jqr_P=bUO>IbL~Gm&K9H`U za)#*{2T@q}CAd}m<O8hP7n9rhL1)?L_D=-F2A_zR4Gy5IquLxF3|DKo+BU<)(7wj~ zaIMzsTz#x;ip!p?cRLyg{IihrCIt4C+nJxUn!bl(;RDNik>?iGmy>7KsaZVTAAYNw z;8sF{g*nCXod;X9Yj~8%l&`Gc-f_?15ChrS@W%Fzf`Yc5R@1-eb^JXXum?+lI+VNX zpW=4=_)ad9xmSj^i*22rQUf)o=e6%s;4P9)_~R2FExEjFtX$q@CGO`_`YrG)?~X4k zA%~IDuaLe_AgQsbjo!2nL@m%;%=~wtU!dXf%{x1P#TsJJUx&(H_WA>zjQ*tK)x#52 z#h$>;&u7{X$6a%eg}9R`J=EZfLx=ewSUPdH7t${U?W4IjEOo=dmxmX07I=ju`t7rs zEf)-IcE>xyln4pBRuA3<dNqE`dFI?yJ*r|CbFP|luf0^oojsdzKaPtTS5GcZkd2kD z2Ha!I+&QIUydAD5I~s2cVbK0LD|vh42~1+4cY&<xh2LKO;&P}!#`EQ`BAMrI<*x~J z&ifE`CL?m;F*s&~7a=MC%8==#v{y|4n$ym{oLecpi6j`lpqGvOc(<NW@ZqQTQxKOl z`JzS>c+F?KEECglTX?Yvm^(d<Ge=Q%a!TNp9FBh#cp+!JlXrkQghr318v3f2W+c9` zZ`88i!=MSb#W|TXyB~;iGJ(+4UqqV7dMLZAX5n;N`5Edi73DY*ABNKxqdDQYXyJM{ zdbmJ{+m*G0Vni6>PMagW6eC}Xov>gDycvjTrmUB;`%9Y0srhiJ8OP_7aC~+@In2~t zm8rSP{f=KVW?ZwbelJt0(205~y9aBf#!WdS{Rqio7dXUDWYMY*7OkZ%+C>>a2<O^r zS&r7b#lJLyLw&vZU2zp_>3kpm6-XJUWcP24;KA!qbDksYHSrY^x<fo>Tcq+jcLFn) zPO!vEhZs`ewteNz23GVjR(7a#)IC>{;DNtJ#P^rw)1(KhWubn>uL5|-%D$udhmk-1 zRIW2@b9M_U8<PT1sK2J|JRx@JC`)ZL`M_QBn0!Bda6rG@6=x^^Aj!64eu!?4X2K1D z^I3-RUmXzYN4)0LS-6t2HGhX>jn!c_0{?OG>=8PyVY!_eL+sxs`Q+Ej(b5=guod4* zY&!y%AV0dt5y>N3`F_I&<|L%{MwuA(LlnOi+=1EsZLOCrhL~c$Hf9gMqglF#F{MO3 zvt&<n8AK(ZEfKgFZ<PUp2UJ|%rnUNj%gL~nxf4JSg_8yRJL^AMWjhZmbesniUX>qm zr4!uRW+R+UGJY*<KK`@O0in1zpmFEX)@+GwX3c*VsbYsNdDY}jZdh=rg2AkR1W5qC z#%C<<dsV4k%noy;a#@CWOOc=?kg$5J4G3A>|0ZqYUh9{Zu+q4!iLY=!{BGgj%FksL zHpdh8<j>}VY>oRdUXE<qHpudk)elm%2?#@aM~_~J;7%drqquZTVr{Y=-&u}O+|n7^ z&2&h@MfX?yh~eArk2j}3{kf*a_%{m*eJE2521{t11*bE`zZP1~bElIj9+BzqdumXC ztw{d{E9!s$CcRJTpSl1y0%nD`h)~{dHBH~Ki57UW;(~uNA8bw(cvG|QdRNgU+4ueA z`&rp{?8^n-nCv^-00rLh{(F~s+sZ8E&)cCO1zSwUz@K_dP%0AtvhYcfjw99?uiAx6 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 WKU@Fa*V*RRudY)j$@*`jQvVCBRu%OC literal 0 HcmV?d00001 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_1024_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_1024_0_1066_UBT.ini new file mode 100755 index 000000000000..ec42b615bf5b --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_1024_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae1c +mau_reg_010 = 0x4550edd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x04 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x3c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_1024_0_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_1024_0_800_UBT.ini new file mode 100755 index 000000000000..eecfa80c6235 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_1024_0_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210305 +pllRatio = 0x00215556 +mau_reg_008 = 0x14c2ff04 +mau_reg_00C = 0x1cbc8b16 +mau_reg_010 = 0x4556b16c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0x13 +reg_013 = 0x03 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x2d +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_1024_0_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_1024_0_933_UBT.ini new file mode 100755 index 000000000000..72b535a27a66 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_1024_0_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d1a +mau_reg_010 = 0x4557cfae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x38 +reg_162 = 0x40 +reg_163 = 0x38 +reg_164 = 0x40 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8f +reg_012 = 0x93 +reg_013 = 0x03 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x35 +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_2048_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_2048_0_1066_UBT.ini new file mode 100755 index 000000000000..c2c095d24e26 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_2048_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae5c +mau_reg_010 = 0x455057d0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0xc4 +reg_013 = 0x05 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x57 +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_2048_0_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_2048_0_800_UBT.ini new file mode 100755 index 000000000000..d88f85cc9751 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_2048_0_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210406 +pllRatio = 0x00215556 +mau_reg_008 = 0x14c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556016c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0s +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0x53 +reg_013 = 0x04 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x41 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_2048_0_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_2048_0_933_UBT.ini new file mode 100755 index 000000000000..f9361d54f81c --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_2048_0_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x45572dae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x38 +reg_162 = 0x40 +reg_163 = 0x38 +reg_164 = 0x40 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8f +reg_012 = 0x13 +reg_013 = 0x05 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x4c +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_1066_FB.ini new file mode 100755 index 000000000000..a5e536ad88ab --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xdd +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x11 +reg_0C8 = 0xdd +reg_0C9 = 0xdd +reg_161 = 0x3c +reg_162 = 0x40 +reg_163 = 0x3c +reg_164 = 0x40 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x32 +reg_0D3 = 0x32 +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_1066_UBT.ini new file mode 100755 index 000000000000..04a4611b34de --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x80201201 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_800_UBT.ini new file mode 100755 index 000000000000..e443f889f2b5 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210406 +pllRatio = 0x00215556 +mau_reg_008 = 0x14c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556a16c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x69 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_933_UBT.ini new file mode 100755 index 000000000000..7fca3fbce153 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_4096_0_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x4557e7ae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x38 +reg_162 = 0x40 +reg_163 = 0x38 +reg_164 = 0x40 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8f +reg_012 = 0xf3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x7b +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_8192_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_8192_0_1066_UBT.ini new file mode 100755 index 000000000000..f5c610a77b7f --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR3_16_8192_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x30200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xef +reg_0C5 = 0xef +reg_0C6 = 0x23 +reg_0C7 = 0x23 +reg_0C8 = 0xef +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xf1 +reg_0D3 = 0xf1 +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR4_16_4096_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR4_16_4096_0_1200_FB.ini new file mode 100755 index 000000000000..8a5fdaf77f3b --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR4_16_4096_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x07220584 +mau_reg_010 = 0x45517052 +mau_reg_01C = 0x0131272c +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453e15 +mau_reg_32C = 0x03fc0000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xde00a2 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000a2 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0x9c0006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x974 +mau_reg_404 = 0x1 +mau_reg_408 = 0x228 +mau_reg_40C = 0x0 +mau_reg_410 = 0x1800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x24 +reg_117 = 0x24 +reg_113 = 0x24 +reg_0F4 = 0x24 +reg_101 = 0x24 +reg_145 = 0x24 +reg_0EF = 0x24 +reg_0F5 = 0x24 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xdd +reg_0C2 = 0x25 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x11 +reg_0C8 = 0xdd +reg_0C9 = 0xdd +reg_161 = 0x3f +reg_162 = 0x3f +reg_163 = 0x3f +reg_164 = 0x3f +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x66 +reg_000 = 0x88 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x96 +reg_011 = 0x00 +reg_012 = 0x10 +reg_013 = 0x05 +reg_015 = 0x74 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x18 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x05 +reg_004 = 0x05 +reg_005 = 0x83 +reg_006 = 0x06 +reg_007 = 0x02 +reg_009 = 0x10 +reg_00A = 0x0d +reg_00B = 0x12 +reg_020 = 0x24 +reg_021 = 0x09 +reg_022 = 0x4e +reg_023 = 0x03 +reg_027 = 0x00 +reg_028 = 0x01 +reg_02D = 0x2f +reg_28E = 0x95 +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR4_16_4096_0_1200_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR4_16_4096_0_1200_UBT.ini new file mode 100755 index 000000000000..cd8f691c2957 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR4_16_4096_0_1200_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x0712c482 +mau_reg_010 = 0x45517032 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xde00a2 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000a2 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0x9c0006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xbb +reg_0C6 = 0xef +reg_0C7 = 0xef +reg_0C8 = 0xab +reg_0C9 = 0xab +reg_161 = 0x28 +reg_162 = 0x30 +reg_163 = 0x28 +reg_164 = 0x30 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0x20 +reg_013 = 0x05 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x4f +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x10 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR4_16_8192_0_1200_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR4_16_8192_0_1200_UBT.ini new file mode 100755 index 000000000000..c5c7e5b96bfd --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/321/51068A_DDR4_16_8192_0_1200_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x0712c4c2 +mau_reg_010 = 0x45514832 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xa800d8 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000d8 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0xd20006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xbb +reg_0C6 = 0xef +reg_0C7 = 0xef +reg_0C8 = 0xab +reg_0C9 = 0xab +reg_161 = 0x28 +reg_162 = 0x30 +reg_163 = 0x28 +reg_164 = 0x30 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0xd0 +reg_013 = 0x06 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x6a +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x10 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_2048_0_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_2048_0_1066_FB.ini new file mode 100755 index 000000000000..8d925251edf3 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_2048_0_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x30210225 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae5c +mau_reg_010 = 0x455057d0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0xc4 +reg_013 = 0x05 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x57 +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_2048_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_2048_0_1200_FB.ini new file mode 100755 index 000000000000..debc21d517cc --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_2048_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210225 +pllRatio = 0x00320000 +mau_reg_008 = 0x15247f04 +mau_reg_00C = 0x0900c040 +mau_reg_010 = 0x45518012 +mau_reg_01C = 0x0131572a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x08443590 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x238 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x11 +reg_2BC = 0x11 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0xe1 +reg_011 = 0x93 +reg_012 = 0x74 +reg_013 = 0x06 +reg_015 = 0x44 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x38 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x09 +reg_004 = 0x09 +reg_005 = 0x07 +reg_006 = 0x10 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0a +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x61 +reg_023 = 0x06 +reg_027 = 0x81 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_2048_0_933_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_2048_0_933_FB.ini new file mode 100755 index 000000000000..eb707c195e9f --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_2048_0_933_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210225 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x45572dae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0xff +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0x13 +reg_013 = 0x05 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x4C +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_1066_FB.ini new file mode 100755 index 000000000000..411baa436c0d --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_1066_UBT.ini new file mode 100755 index 000000000000..43b201ecd518 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x34 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_1200_FB.ini new file mode 100755 index 000000000000..82380371e5ed --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210225 +pllRatio = 0x00320000 +mau_reg_008 = 0x15247f04 +mau_reg_00C = 0x0900c080 +mau_reg_010 = 0x45517012 +mau_reg_01C = 0x0131572a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x08443590 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x238 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x11 +reg_2BC = 0x11 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0xe1 +reg_011 = 0x93 +reg_012 = 0x34 +reg_013 = 0x0a +reg_015 = 0x44 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x38 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x09 +reg_004 = 0x09 +reg_005 = 0x07 +reg_006 = 0x10 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0a +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x9d +reg_023 = 0x06 +reg_027 = 0x81 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_933_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_933_FB.ini new file mode 100755 index 000000000000..6d3ebc28c6c1 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_16_4096_0_933_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210225 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x4557e7ae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0xff +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0xF3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x7B +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_1066_FB.ini new file mode 100755 index 000000000000..65de29139518 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20201125 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef04 +mau_reg_00C = 0x04e0ae5c +mau_reg_010 = 0x455057d0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0xc4 +reg_013 = 0x05 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x57 +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_800_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_800_FB.ini new file mode 100755 index 000000000000..15f4f73661ff --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_800_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x10210513 +pllRatio = 0x00215556 +mau_reg_008 = 0x04c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556016c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0x53 +reg_013 = 0x04 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x41 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_800_UBT.ini new file mode 100755 index 000000000000..ed466edbd74c --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210406 +pllRatio = 0x00215556 +mau_reg_008 = 0x04c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556016c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0x53 +reg_013 = 0x04 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x41 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_933_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_933_FB.ini new file mode 100755 index 000000000000..9e0da5af5eec --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_933_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200918 +pllRatio = 0x0026e000 +mau_reg_008 = 0x04e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x45572dae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0xff +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0x13 +reg_013 = 0x05 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x4C +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_933_UBT.ini new file mode 100755 index 000000000000..91fa3e5f20e0 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_2048_2048_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200918 +pllRatio = 0x0026e000 +mau_reg_008 = 0x04e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x45572dae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0x13 +reg_013 = 0x05 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x4C +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_2048_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_2048_1066_FB.ini new file mode 100755 index 000000000000..9c72ae17bd37 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_2048_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20201104 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef84 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd1000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_2048_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_2048_1066_UBT.ini new file mode 100755 index 000000000000..1d7b64286260 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_2048_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20201021 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef84 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd1000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x34 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_1066_FB.ini new file mode 100755 index 000000000000..84d94552ac81 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_1066_UBT.ini new file mode 100755 index 000000000000..deb12bc12527 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x34 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_800_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_800_FB.ini new file mode 100755 index 000000000000..e29cc5a28688 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_800_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x10210513 +pllRatio = 0x00215556 +mau_reg_008 = 0x04c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556a16c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x69 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_800_UBT.ini new file mode 100755 index 000000000000..18657b7666b1 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210406 +pllRatio = 0x00215556 +mau_reg_008 = 0x04c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556a16c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x69 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_933_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_933_FB.ini new file mode 100755 index 000000000000..0c993d16bc40 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_933_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200918 +pllRatio = 0x0026e000 +mau_reg_008 = 0x04e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x4557e7ae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0xff +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0xF3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x7B +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_933_UBT.ini new file mode 100755 index 000000000000..41e8d5465c76 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_4096_4096_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200918 +pllRatio = 0x0026e000 +mau_reg_008 = 0x04e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x4557e7ae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0xF3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x7B +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_8192_8192_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_8192_8192_1066_FB.ini new file mode 100755 index 000000000000..a1a6c9059c57 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR3_32_8192_8192_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x40210422 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x0f +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xff +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x54 +reg_0C3 = 0x06 +reg_0C4 = 0xdb +reg_0C5 = 0x1f +reg_0C6 = 0x1f +reg_0C7 = 0x53 +reg_0C8 = 0xdb +reg_0C9 = 0x1f +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x30 +reg_164 = 0x30 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x1e +reg_0D3 = 0x3e +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_16_4096_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_16_4096_0_1200_FB.ini new file mode 100755 index 000000000000..caaf19ffe98f --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_16_4096_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x90200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x0712c482 +mau_reg_010 = 0x45517032 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xde00a2 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000a2 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0x9c0006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xdd +reg_0C6 = 0xee +reg_0C7 = 0x00 +reg_0C8 = 0xaa +reg_0C9 = 0xcc +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0x20 +reg_013 = 0x05 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x4f +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_16_8192_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_16_8192_0_1200_FB.ini new file mode 100755 index 000000000000..5c0dd0fa2e6a --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_16_8192_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x0712c4c2 +mau_reg_010 = 0x45514832 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xa800d8 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000d8 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0xd20006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xdd +reg_0C6 = 0xee +reg_0C7 = 0x00 +reg_0C8 = 0xaa +reg_0C9 = 0xcc +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0xd0 +reg_013 = 0x06 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x6a +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_32_4096_4096_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_32_4096_4096_1200_FB.ini new file mode 100755 index 000000000000..98045718baf8 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_32_4096_4096_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x4d248f10 +mau_reg_00C = 0x0712c482 +mau_reg_010 = 0x45517032 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xde00a2 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000a2 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0x9c0006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xdd +reg_0C6 = 0xee +reg_0C7 = 0x00 +reg_0C8 = 0xaa +reg_0C9 = 0xcc +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0x20 +reg_013 = 0x05 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x4f +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_32_8192_8192_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_32_8192_8192_1200_FB.ini new file mode 100755 index 000000000000..d2ebf5cb766b --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/323/51068A_DDR4_32_8192_8192_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x4d248f10 +mau_reg_00C = 0x0712c4c2 +mau_reg_010 = 0x45514832 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xa800d8 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000d8 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0xd20006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xdd +reg_0C6 = 0xee +reg_0C7 = 0x00 +reg_0C8 = 0xaa +reg_0C9 = 0xcc +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0xd0 +reg_013 = 0x06 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x6a +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_1024_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_1024_0_1066_UBT.ini new file mode 100755 index 000000000000..ec42b615bf5b --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_1024_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae1c +mau_reg_010 = 0x4550edd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x04 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x3c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_1024_0_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_1024_0_800_UBT.ini new file mode 100755 index 000000000000..eecfa80c6235 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_1024_0_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210305 +pllRatio = 0x00215556 +mau_reg_008 = 0x14c2ff04 +mau_reg_00C = 0x1cbc8b16 +mau_reg_010 = 0x4556b16c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0x13 +reg_013 = 0x03 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x2d +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_1024_0_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_1024_0_933_UBT.ini new file mode 100755 index 000000000000..72b535a27a66 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_1024_0_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d1a +mau_reg_010 = 0x4557cfae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x38 +reg_162 = 0x40 +reg_163 = 0x38 +reg_164 = 0x40 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8f +reg_012 = 0x93 +reg_013 = 0x03 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x35 +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_2048_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_2048_0_1066_UBT.ini new file mode 100755 index 000000000000..c2c095d24e26 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_2048_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae5c +mau_reg_010 = 0x455057d0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0xc4 +reg_013 = 0x05 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x57 +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_2048_0_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_2048_0_800_UBT.ini new file mode 100755 index 000000000000..d88f85cc9751 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_2048_0_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210406 +pllRatio = 0x00215556 +mau_reg_008 = 0x14c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556016c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0s +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0x53 +reg_013 = 0x04 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x41 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_2048_0_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_2048_0_933_UBT.ini new file mode 100755 index 000000000000..f9361d54f81c --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_2048_0_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x45572dae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x38 +reg_162 = 0x40 +reg_163 = 0x38 +reg_164 = 0x40 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8f +reg_012 = 0x13 +reg_013 = 0x05 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x4c +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_1066_FB.ini new file mode 100755 index 000000000000..a5e536ad88ab --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xdd +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x11 +reg_0C8 = 0xdd +reg_0C9 = 0xdd +reg_161 = 0x3c +reg_162 = 0x40 +reg_163 = 0x3c +reg_164 = 0x40 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x32 +reg_0D3 = 0x32 +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_1066_UBT.ini new file mode 100755 index 000000000000..04a4611b34de --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x80201201 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_800_UBT.ini new file mode 100755 index 000000000000..e443f889f2b5 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210406 +pllRatio = 0x00215556 +mau_reg_008 = 0x14c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556a16c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x69 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_933_UBT.ini new file mode 100755 index 000000000000..7fca3fbce153 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_4096_0_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x4557e7ae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x38 +reg_162 = 0x40 +reg_163 = 0x38 +reg_164 = 0x40 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8f +reg_012 = 0xf3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x7b +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_8192_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_8192_0_1066_UBT.ini new file mode 100755 index 000000000000..f5c610a77b7f --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR3_16_8192_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x30200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xef +reg_0C5 = 0xef +reg_0C6 = 0x23 +reg_0C7 = 0x23 +reg_0C8 = 0xef +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xf1 +reg_0D3 = 0xf1 +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR4_16_4096_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR4_16_4096_0_1200_FB.ini new file mode 100755 index 000000000000..8a5fdaf77f3b --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR4_16_4096_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x07220584 +mau_reg_010 = 0x45517052 +mau_reg_01C = 0x0131272c +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453e15 +mau_reg_32C = 0x03fc0000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xde00a2 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000a2 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0x9c0006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x974 +mau_reg_404 = 0x1 +mau_reg_408 = 0x228 +mau_reg_40C = 0x0 +mau_reg_410 = 0x1800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x24 +reg_117 = 0x24 +reg_113 = 0x24 +reg_0F4 = 0x24 +reg_101 = 0x24 +reg_145 = 0x24 +reg_0EF = 0x24 +reg_0F5 = 0x24 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xdd +reg_0C2 = 0x25 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x11 +reg_0C8 = 0xdd +reg_0C9 = 0xdd +reg_161 = 0x3f +reg_162 = 0x3f +reg_163 = 0x3f +reg_164 = 0x3f +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x66 +reg_000 = 0x88 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x96 +reg_011 = 0x00 +reg_012 = 0x10 +reg_013 = 0x05 +reg_015 = 0x74 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x18 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x05 +reg_004 = 0x05 +reg_005 = 0x83 +reg_006 = 0x06 +reg_007 = 0x02 +reg_009 = 0x10 +reg_00A = 0x0d +reg_00B = 0x12 +reg_020 = 0x24 +reg_021 = 0x09 +reg_022 = 0x4e +reg_023 = 0x03 +reg_027 = 0x00 +reg_028 = 0x01 +reg_02D = 0x2f +reg_28E = 0x95 +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR4_16_4096_0_1200_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR4_16_4096_0_1200_UBT.ini new file mode 100755 index 000000000000..cd8f691c2957 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR4_16_4096_0_1200_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x0712c482 +mau_reg_010 = 0x45517032 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xde00a2 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000a2 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0x9c0006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xbb +reg_0C6 = 0xef +reg_0C7 = 0xef +reg_0C8 = 0xab +reg_0C9 = 0xab +reg_161 = 0x28 +reg_162 = 0x30 +reg_163 = 0x28 +reg_164 = 0x30 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0x20 +reg_013 = 0x05 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x4f +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x10 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR4_16_8192_0_1200_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR4_16_8192_0_1200_UBT.ini new file mode 100755 index 000000000000..c5c7e5b96bfd --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/621/51068A_DDR4_16_8192_0_1200_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x0712c4c2 +mau_reg_010 = 0x45514832 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xa800d8 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000d8 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0xd20006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xbb +reg_0C6 = 0xef +reg_0C7 = 0xef +reg_0C8 = 0xab +reg_0C9 = 0xab +reg_161 = 0x28 +reg_162 = 0x30 +reg_163 = 0x28 +reg_164 = 0x30 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0xd0 +reg_013 = 0x06 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x6a +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x10 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_2048_0_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_2048_0_1066_FB.ini new file mode 100755 index 000000000000..8d925251edf3 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_2048_0_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x30210225 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae5c +mau_reg_010 = 0x455057d0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0xc4 +reg_013 = 0x05 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x57 +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_2048_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_2048_0_1200_FB.ini new file mode 100755 index 000000000000..debc21d517cc --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_2048_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210225 +pllRatio = 0x00320000 +mau_reg_008 = 0x15247f04 +mau_reg_00C = 0x0900c040 +mau_reg_010 = 0x45518012 +mau_reg_01C = 0x0131572a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x08443590 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x238 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x11 +reg_2BC = 0x11 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0xe1 +reg_011 = 0x93 +reg_012 = 0x74 +reg_013 = 0x06 +reg_015 = 0x44 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x38 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x09 +reg_004 = 0x09 +reg_005 = 0x07 +reg_006 = 0x10 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0a +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x61 +reg_023 = 0x06 +reg_027 = 0x81 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_2048_0_933_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_2048_0_933_FB.ini new file mode 100755 index 000000000000..eb707c195e9f --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_2048_0_933_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210225 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x45572dae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0xff +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0x13 +reg_013 = 0x05 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x4C +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_1066_FB.ini new file mode 100755 index 000000000000..411baa436c0d --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_1066_UBT.ini new file mode 100755 index 000000000000..43b201ecd518 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x34 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_1200_FB.ini new file mode 100755 index 000000000000..82380371e5ed --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210225 +pllRatio = 0x00320000 +mau_reg_008 = 0x15247f04 +mau_reg_00C = 0x0900c080 +mau_reg_010 = 0x45517012 +mau_reg_01C = 0x0131572a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x08443590 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x238 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x11 +reg_2BC = 0x11 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0xe1 +reg_011 = 0x93 +reg_012 = 0x34 +reg_013 = 0x0a +reg_015 = 0x44 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x38 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x09 +reg_004 = 0x09 +reg_005 = 0x07 +reg_006 = 0x10 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0a +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x9d +reg_023 = 0x06 +reg_027 = 0x81 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_933_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_933_FB.ini new file mode 100755 index 000000000000..6d3ebc28c6c1 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_16_4096_0_933_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210225 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x4557e7ae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0xff +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0xF3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x7B +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_1066_FB.ini new file mode 100755 index 000000000000..65de29139518 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20201125 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef04 +mau_reg_00C = 0x04e0ae5c +mau_reg_010 = 0x455057d0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0xc4 +reg_013 = 0x05 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x57 +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_800_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_800_FB.ini new file mode 100755 index 000000000000..15f4f73661ff --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_800_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x10210513 +pllRatio = 0x00215556 +mau_reg_008 = 0x04c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556016c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0x53 +reg_013 = 0x04 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x41 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_800_UBT.ini new file mode 100755 index 000000000000..ed466edbd74c --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210406 +pllRatio = 0x00215556 +mau_reg_008 = 0x04c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556016c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0x53 +reg_013 = 0x04 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x41 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_933_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_933_FB.ini new file mode 100755 index 000000000000..9e0da5af5eec --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_933_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200918 +pllRatio = 0x0026e000 +mau_reg_008 = 0x04e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x45572dae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0xff +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0x13 +reg_013 = 0x05 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x4C +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_933_UBT.ini new file mode 100755 index 000000000000..91fa3e5f20e0 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_2048_2048_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200918 +pllRatio = 0x0026e000 +mau_reg_008 = 0x04e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x45572dae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0x13 +reg_013 = 0x05 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x4C +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_2048_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_2048_1066_FB.ini new file mode 100755 index 000000000000..9c72ae17bd37 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_2048_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20201104 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef84 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd1000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_2048_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_2048_1066_UBT.ini new file mode 100755 index 000000000000..1d7b64286260 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_2048_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20201021 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef84 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd1000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x34 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_1066_FB.ini new file mode 100755 index 000000000000..84d94552ac81 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_1066_UBT.ini new file mode 100755 index 000000000000..deb12bc12527 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x34 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_800_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_800_FB.ini new file mode 100755 index 000000000000..e29cc5a28688 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_800_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x10210513 +pllRatio = 0x00215556 +mau_reg_008 = 0x04c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556a16c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x69 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_800_UBT.ini new file mode 100755 index 000000000000..18657b7666b1 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210406 +pllRatio = 0x00215556 +mau_reg_008 = 0x04c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556a16c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x69 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_933_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_933_FB.ini new file mode 100755 index 000000000000..0c993d16bc40 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_933_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200918 +pllRatio = 0x0026e000 +mau_reg_008 = 0x04e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x4557e7ae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0xff +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0xF3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x7B +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_933_UBT.ini new file mode 100755 index 000000000000..41e8d5465c76 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_4096_4096_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200918 +pllRatio = 0x0026e000 +mau_reg_008 = 0x04e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x4557e7ae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0xF3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x7B +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_8192_8192_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_8192_8192_1066_FB.ini new file mode 100755 index 000000000000..a1a6c9059c57 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR3_32_8192_8192_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x40210422 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x0f +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xff +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x54 +reg_0C3 = 0x06 +reg_0C4 = 0xdb +reg_0C5 = 0x1f +reg_0C6 = 0x1f +reg_0C7 = 0x53 +reg_0C8 = 0xdb +reg_0C9 = 0x1f +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x30 +reg_164 = 0x30 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x1e +reg_0D3 = 0x3e +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_16_4096_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_16_4096_0_1200_FB.ini new file mode 100755 index 000000000000..caaf19ffe98f --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_16_4096_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x90200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x0712c482 +mau_reg_010 = 0x45517032 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xde00a2 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000a2 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0x9c0006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xdd +reg_0C6 = 0xee +reg_0C7 = 0x00 +reg_0C8 = 0xaa +reg_0C9 = 0xcc +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0x20 +reg_013 = 0x05 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x4f +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_16_8192_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_16_8192_0_1200_FB.ini new file mode 100755 index 000000000000..5c0dd0fa2e6a --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_16_8192_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x0712c4c2 +mau_reg_010 = 0x45514832 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xa800d8 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000d8 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0xd20006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xdd +reg_0C6 = 0xee +reg_0C7 = 0x00 +reg_0C8 = 0xaa +reg_0C9 = 0xcc +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0xd0 +reg_013 = 0x06 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x6a +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_32_4096_4096_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_32_4096_4096_1200_FB.ini new file mode 100755 index 000000000000..98045718baf8 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_32_4096_4096_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x4d248f10 +mau_reg_00C = 0x0712c482 +mau_reg_010 = 0x45517032 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xde00a2 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000a2 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0x9c0006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xdd +reg_0C6 = 0xee +reg_0C7 = 0x00 +reg_0C8 = 0xaa +reg_0C9 = 0xcc +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0x20 +reg_013 = 0x05 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x4f +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_32_8192_8192_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_32_8192_8192_1200_FB.ini new file mode 100755 index 000000000000..d2ebf5cb766b --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/623/51068A_DDR4_32_8192_8192_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x4d248f10 +mau_reg_00C = 0x0712c4c2 +mau_reg_010 = 0x45514832 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xa800d8 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000d8 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0xd20006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xdd +reg_0C6 = 0xee +reg_0C7 = 0x00 +reg_0C8 = 0xaa +reg_0C9 = 0xcc +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0xd0 +reg_013 = 0x06 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x6a +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_1024_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_1024_0_1066_UBT.ini new file mode 100755 index 000000000000..ec42b615bf5b --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_1024_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae1c +mau_reg_010 = 0x4550edd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x04 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x3c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_1024_0_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_1024_0_800_UBT.ini new file mode 100755 index 000000000000..eecfa80c6235 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_1024_0_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210305 +pllRatio = 0x00215556 +mau_reg_008 = 0x14c2ff04 +mau_reg_00C = 0x1cbc8b16 +mau_reg_010 = 0x4556b16c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0x13 +reg_013 = 0x03 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x2d +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_1024_0_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_1024_0_933_UBT.ini new file mode 100755 index 000000000000..72b535a27a66 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_1024_0_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d1a +mau_reg_010 = 0x4557cfae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x38 +reg_162 = 0x40 +reg_163 = 0x38 +reg_164 = 0x40 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8f +reg_012 = 0x93 +reg_013 = 0x03 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x35 +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_2048_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_2048_0_1066_UBT.ini new file mode 100755 index 000000000000..c2c095d24e26 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_2048_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae5c +mau_reg_010 = 0x455057d0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0xc4 +reg_013 = 0x05 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x57 +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_2048_0_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_2048_0_800_UBT.ini new file mode 100755 index 000000000000..d88f85cc9751 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_2048_0_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210406 +pllRatio = 0x00215556 +mau_reg_008 = 0x14c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556016c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0s +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0x53 +reg_013 = 0x04 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x41 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_2048_0_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_2048_0_933_UBT.ini new file mode 100755 index 000000000000..f9361d54f81c --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_2048_0_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x45572dae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x38 +reg_162 = 0x40 +reg_163 = 0x38 +reg_164 = 0x40 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8f +reg_012 = 0x13 +reg_013 = 0x05 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x4c +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_1066_FB.ini new file mode 100755 index 000000000000..a5e536ad88ab --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xdd +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x11 +reg_0C8 = 0xdd +reg_0C9 = 0xdd +reg_161 = 0x3c +reg_162 = 0x40 +reg_163 = 0x3c +reg_164 = 0x40 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x32 +reg_0D3 = 0x32 +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_1066_UBT.ini new file mode 100755 index 000000000000..04a4611b34de --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x80201201 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_800_UBT.ini new file mode 100755 index 000000000000..e443f889f2b5 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210406 +pllRatio = 0x00215556 +mau_reg_008 = 0x14c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556a16c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x69 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_933_UBT.ini new file mode 100755 index 000000000000..7fca3fbce153 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_4096_0_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x4557e7ae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x22 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x01 +reg_0C7 = 0x01 +reg_0C8 = 0xcd +reg_0C9 = 0xcd +reg_161 = 0x38 +reg_162 = 0x40 +reg_163 = 0x38 +reg_164 = 0x40 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x0f +reg_0D3 = 0x0f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8f +reg_012 = 0xf3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0f +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0e +reg_020 = 0x37 +reg_021 = 0x0e +reg_022 = 0x7b +reg_023 = 0x06 +reg_027 = 0x2c +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_8192_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_8192_0_1066_UBT.ini new file mode 100755 index 000000000000..f5c610a77b7f --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR3_16_8192_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x30200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xef +reg_0C5 = 0xef +reg_0C6 = 0x23 +reg_0C7 = 0x23 +reg_0C8 = 0xef +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xf1 +reg_0D3 = 0xf1 +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR4_16_4096_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR4_16_4096_0_1200_FB.ini new file mode 100755 index 000000000000..8a5fdaf77f3b --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR4_16_4096_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x07220584 +mau_reg_010 = 0x45517052 +mau_reg_01C = 0x0131272c +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453e15 +mau_reg_32C = 0x03fc0000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xde00a2 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000a2 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0x9c0006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x974 +mau_reg_404 = 0x1 +mau_reg_408 = 0x228 +mau_reg_40C = 0x0 +mau_reg_410 = 0x1800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x24 +reg_117 = 0x24 +reg_113 = 0x24 +reg_0F4 = 0x24 +reg_101 = 0x24 +reg_145 = 0x24 +reg_0EF = 0x24 +reg_0F5 = 0x24 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xdd +reg_0C2 = 0x25 +reg_0C3 = 0x08 +reg_0C4 = 0xdd +reg_0C5 = 0xdd +reg_0C6 = 0x11 +reg_0C7 = 0x11 +reg_0C8 = 0xdd +reg_0C9 = 0xdd +reg_161 = 0x3f +reg_162 = 0x3f +reg_163 = 0x3f +reg_164 = 0x3f +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x66 +reg_000 = 0x88 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x96 +reg_011 = 0x00 +reg_012 = 0x10 +reg_013 = 0x05 +reg_015 = 0x74 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x18 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x05 +reg_004 = 0x05 +reg_005 = 0x83 +reg_006 = 0x06 +reg_007 = 0x02 +reg_009 = 0x10 +reg_00A = 0x0d +reg_00B = 0x12 +reg_020 = 0x24 +reg_021 = 0x09 +reg_022 = 0x4e +reg_023 = 0x03 +reg_027 = 0x00 +reg_028 = 0x01 +reg_02D = 0x2f +reg_28E = 0x95 +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR4_16_4096_0_1200_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR4_16_4096_0_1200_UBT.ini new file mode 100755 index 000000000000..cd8f691c2957 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR4_16_4096_0_1200_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x0712c482 +mau_reg_010 = 0x45517032 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xde00a2 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000a2 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0x9c0006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xbb +reg_0C6 = 0xef +reg_0C7 = 0xef +reg_0C8 = 0xab +reg_0C9 = 0xab +reg_161 = 0x28 +reg_162 = 0x30 +reg_163 = 0x28 +reg_164 = 0x30 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0x20 +reg_013 = 0x05 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x4f +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x10 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR4_16_8192_0_1200_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR4_16_8192_0_1200_UBT.ini new file mode 100755 index 000000000000..c5c7e5b96bfd --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC321/51068A_DDR4_16_8192_0_1200_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x0712c4c2 +mau_reg_010 = 0x45514832 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xa800d8 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000d8 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0xd20006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xbb +reg_0C6 = 0xef +reg_0C7 = 0xef +reg_0C8 = 0xab +reg_0C9 = 0xab +reg_161 = 0x28 +reg_162 = 0x30 +reg_163 = 0x28 +reg_164 = 0x30 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0xd0 +reg_013 = 0x06 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x6a +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x10 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_2048_0_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_2048_0_1066_FB.ini new file mode 100755 index 000000000000..8d925251edf3 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_2048_0_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x30210225 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae5c +mau_reg_010 = 0x455057d0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0xc4 +reg_013 = 0x05 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x57 +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_2048_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_2048_0_1200_FB.ini new file mode 100755 index 000000000000..debc21d517cc --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_2048_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210225 +pllRatio = 0x00320000 +mau_reg_008 = 0x15247f04 +mau_reg_00C = 0x0900c040 +mau_reg_010 = 0x45518012 +mau_reg_01C = 0x0131572a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x08443590 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x238 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x11 +reg_2BC = 0x11 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0xe1 +reg_011 = 0x93 +reg_012 = 0x74 +reg_013 = 0x06 +reg_015 = 0x44 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x38 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x09 +reg_004 = 0x09 +reg_005 = 0x07 +reg_006 = 0x10 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0a +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x61 +reg_023 = 0x06 +reg_027 = 0x81 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_2048_0_933_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_2048_0_933_FB.ini new file mode 100755 index 000000000000..eb707c195e9f --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_2048_0_933_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210225 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x45572dae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0xff +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0x13 +reg_013 = 0x05 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x4C +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_1066_FB.ini new file mode 100755 index 000000000000..411baa436c0d --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_1066_UBT.ini new file mode 100755 index 000000000000..43b201ecd518 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x1503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x34 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_1200_FB.ini new file mode 100755 index 000000000000..82380371e5ed --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210225 +pllRatio = 0x00320000 +mau_reg_008 = 0x15247f04 +mau_reg_00C = 0x0900c080 +mau_reg_010 = 0x45517012 +mau_reg_01C = 0x0131572a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x08443590 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x238 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x11 +reg_2BC = 0x11 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0xe1 +reg_011 = 0x93 +reg_012 = 0x34 +reg_013 = 0x0a +reg_015 = 0x44 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x38 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x09 +reg_004 = 0x09 +reg_005 = 0x07 +reg_006 = 0x10 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0a +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x9d +reg_023 = 0x06 +reg_027 = 0x81 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_933_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_933_FB.ini new file mode 100755 index 000000000000..6d3ebc28c6c1 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_16_4096_0_933_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210225 +pllRatio = 0x0026e000 +mau_reg_008 = 0x14e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x4557e7ae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0xff +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0xF3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x7B +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_1066_FB.ini new file mode 100755 index 000000000000..65de29139518 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20201125 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef04 +mau_reg_00C = 0x04e0ae5c +mau_reg_010 = 0x455057d0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0xc4 +reg_013 = 0x05 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x57 +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_800_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_800_FB.ini new file mode 100755 index 000000000000..15f4f73661ff --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_800_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x10210513 +pllRatio = 0x00215556 +mau_reg_008 = 0x04c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556016c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0x53 +reg_013 = 0x04 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x41 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_800_UBT.ini new file mode 100755 index 000000000000..ed466edbd74c --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210406 +pllRatio = 0x00215556 +mau_reg_008 = 0x04c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556016c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0x53 +reg_013 = 0x04 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x41 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_933_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_933_FB.ini new file mode 100755 index 000000000000..9e0da5af5eec --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_933_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200918 +pllRatio = 0x0026e000 +mau_reg_008 = 0x04e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x45572dae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0xff +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0x13 +reg_013 = 0x05 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x4C +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_933_UBT.ini new file mode 100755 index 000000000000..91fa3e5f20e0 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_2048_2048_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200918 +pllRatio = 0x0026e000 +mau_reg_008 = 0x04e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x45572dae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0x13 +reg_013 = 0x05 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x4C +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_2048_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_2048_1066_FB.ini new file mode 100755 index 000000000000..9c72ae17bd37 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_2048_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20201104 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef84 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd1000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_2048_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_2048_1066_UBT.ini new file mode 100755 index 000000000000..1d7b64286260 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_2048_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20201021 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef84 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd1000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x34 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_1066_FB.ini new file mode 100755 index 000000000000..84d94552ac81 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x34 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_1066_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_1066_UBT.ini new file mode 100755 index 000000000000..deb12bc12527 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_1066_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x50200901 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x30 +reg_162 = 0x34 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_800_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_800_FB.ini new file mode 100755 index 000000000000..e29cc5a28688 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_800_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x10210513 +pllRatio = 0x00215556 +mau_reg_008 = 0x04c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556a16c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x33 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x10 +reg_0D3 = 0x2f +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x69 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_800_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_800_UBT.ini new file mode 100755 index 000000000000..18657b7666b1 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_800_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x20210406 +pllRatio = 0x00215556 +mau_reg_008 = 0x04c2ff04 +mau_reg_00C = 0x1cbc8b56 +mau_reg_010 = 0x4556a16c +mau_reg_01C = 0x012d04e9 +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844350b +mau_reg_32C = 0x00000000 +mau_reg_014 = 0xd70 +mau_reg_018 = 0x218 +mau_reg_324 = 0X40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x41 +reg_011 = 0x0d +reg_012 = 0xd3 +reg_013 = 0x06 +reg_015 = 0x70 +reg_016 = 0x0d +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x07 +reg_004 = 0x07 +reg_005 = 0x05 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x08 +reg_00A = 0x05 +reg_00B = 0x0c +reg_020 = 0x31 +reg_021 = 0x0c +reg_022 = 0x69 +reg_023 = 0x06 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x4f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_933_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_933_FB.ini new file mode 100755 index 000000000000..0c993d16bc40 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_933_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200918 +pllRatio = 0x0026e000 +mau_reg_008 = 0x04e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x4557e7ae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x44 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xef +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0xff +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0xF3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x7B +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_933_UBT.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_933_UBT.ini new file mode 100755 index 000000000000..41e8d5465c76 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_4096_4096_933_UBT.ini @@ -0,0 +1,147 @@ +ini_ver = 0x60200918 +pllRatio = 0x0026e000 +mau_reg_008 = 0x04e36f04 +mau_reg_00C = 0x00de9d5a +mau_reg_010 = 0x4557e7ae +mau_reg_01C = 0x012d0daa +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844352d +mau_reg_32C = 0x00100000 +mau_reg_014 = 0xf14 +mau_reg_018 = 0x220 +mau_reg_324 = 0x40000 +mau_reg_384 = 0x9 +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x00 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x08 +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xf8 +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x43 +reg_0C3 = 0x08 +reg_0C4 = 0xcc +reg_0C5 = 0xee +reg_0C6 = 0xf0 +reg_0C7 = 0x12 +reg_0C8 = 0xbc +reg_0C9 = 0xde +reg_161 = 0x40 +reg_162 = 0x48 +reg_163 = 0x40 +reg_164 = 0x44 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x06 +reg_091 = 0x55 +reg_0D2 = 0xfe +reg_0D3 = 0x0d +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x23 +reg_011 = 0x8F +reg_012 = 0xF3 +reg_013 = 0x07 +reg_015 = 0x14 +reg_016 = 0x0F +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x20 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x08 +reg_007 = 0x03 +reg_009 = 0x09 +reg_00A = 0x07 +reg_00B = 0x0E +reg_020 = 0x37 +reg_021 = 0x0E +reg_022 = 0x7B +reg_023 = 0x06 +reg_027 = 0x2C +reg_028 = 0x01 +reg_02D = 0x4F +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_8192_8192_1066_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_8192_8192_1066_FB.ini new file mode 100755 index 000000000000..a1a6c9059c57 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR3_32_8192_8192_1066_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x40210422 +pllRatio = 0x002c7000 +mau_reg_008 = 0x0503ef04 +mau_reg_00C = 0x04e0ae9c +mau_reg_010 = 0x45502dd0 +mau_reg_01C = 0x012f364a +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x500 +mau_reg_148 = 0x0844354e +mau_reg_32C = 0x01500000 +mau_reg_014 = 0x124 +mau_reg_018 = 0x228 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xa +mau_reg_3F4 = 0x0 +mau_reg_420 = 0x0 +mau_reg_424 = 0x0 +mau_reg_428 = 0x0 +mau_reg_42C = 0x0 +mau_reg_430 = 0x0 +mau_reg_434 = 0x0 +mau_reg_438 = 0x0 +mau_reg_400 = 0x0 +mau_reg_404 = 0x0 +mau_reg_408 = 0x0 +mau_reg_40C = 0x0 +mau_reg_410 = 0x0 +mau_reg_414 = 0x0 +mau_reg_418 = 0x0 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x04 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x0f +reg_117 = 0x0f +reg_113 = 0x0f +reg_0F4 = 0x0f +reg_101 = 0x0f +reg_145 = 0x0f +reg_0EF = 0x0f +reg_0F5 = 0x0f +reg_10F = 0x03 +reg_102 = 0x13 +reg_106 = 0x36 +reg_121 = 0x31 +reg_0EE = 0x03 +reg_13A = 0x3f +reg_108 = 0x03 +reg_0E7 = 0x30 +reg_0EC = 0x03 +reg_103 = 0x60 +reg_122 = 0xf3 +reg_0F3 = 0x03 +reg_0F2 = 0x08 +reg_11B = 0x08 +reg_0E8 = 0x08 +reg_11A = 0x18 +reg_112 = 0x0f +reg_14D = 0x80 +reg_14E = 0x80 +reg_0F0 = 0x08 +reg_115 = 0x08 +reg_100 = 0x80 +reg_104 = 0x80 +reg_141 = 0xff +reg_142 = 0x01 +reg_0F1 = 0x01 +reg_138 = 0x20 +reg_118 = 0x01 +reg_139 = 0x11 +reg_148 = 0x10 +reg_0C1 = 0xff +reg_0C2 = 0x54 +reg_0C3 = 0x06 +reg_0C4 = 0xdb +reg_0C5 = 0x1f +reg_0C6 = 0x1f +reg_0C7 = 0x53 +reg_0C8 = 0xdb +reg_0C9 = 0x1f +reg_161 = 0x30 +reg_162 = 0x30 +reg_163 = 0x30 +reg_164 = 0x30 +reg_092 = 0x44 +reg_093 = 0x44 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x07 +reg_091 = 0x55 +reg_0D2 = 0x1e +reg_0D3 = 0x3e +reg_000 = 0x00 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x82 +reg_011 = 0x11 +reg_012 = 0x14 +reg_013 = 0x09 +reg_015 = 0x24 +reg_016 = 0x01 +reg_017 = 0x00 +reg_018 = 0x00 +reg_019 = 0x28 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x00 +reg_062 = 0x00 +reg_063 = 0x00 +reg_064 = 0x00 +reg_065 = 0x00 +reg_001 = 0x02 +reg_002 = 0x08 +reg_004 = 0x08 +reg_005 = 0x06 +reg_006 = 0x09 +reg_007 = 0x03 +reg_009 = 0x0a +reg_00A = 0x08 +reg_00B = 0x10 +reg_020 = 0xff +reg_021 = 0x0f +reg_022 = 0x8c +reg_023 = 0x06 +reg_027 = 0x57 +reg_028 = 0x01 +reg_02D = 0x5f +reg_28E = 0x95 +reg_066 = 0x00 +reg_251 = 0x30 +reg_143 = 0x0f +reg_11C = 0xf0 +reg_0EA = 0x00 +reg_13B = 0x0f +reg_120 = 0xf0 +reg_144 = 0xff +reg_105 = 0xf0 +reg_10A = 0xf0 +reg_107 = 0xf0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_16_4096_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_16_4096_0_1200_FB.ini new file mode 100755 index 000000000000..caaf19ffe98f --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_16_4096_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x90200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x0712c482 +mau_reg_010 = 0x45517032 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xde00a2 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000a2 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0x9c0006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xdd +reg_0C6 = 0xee +reg_0C7 = 0x00 +reg_0C8 = 0xaa +reg_0C9 = 0xcc +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0x20 +reg_013 = 0x05 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x4f +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_16_8192_0_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_16_8192_0_1200_FB.ini new file mode 100755 index 000000000000..5c0dd0fa2e6a --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_16_8192_0_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x5d248f10 +mau_reg_00C = 0x0712c4c2 +mau_reg_010 = 0x45514832 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xa800d8 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000d8 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0xd20006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xdd +reg_0C6 = 0xee +reg_0C7 = 0x00 +reg_0C8 = 0xaa +reg_0C9 = 0xcc +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0xd0 +reg_013 = 0x06 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x6a +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_32_4096_4096_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_32_4096_4096_1200_FB.ini new file mode 100755 index 000000000000..98045718baf8 --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_32_4096_4096_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x4d248f10 +mau_reg_00C = 0x0712c482 +mau_reg_010 = 0x45517032 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xde00a2 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000a2 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0x9c0006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xdd +reg_0C6 = 0xee +reg_0C7 = 0x00 +reg_0C8 = 0xaa +reg_0C9 = 0xcc +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0x20 +reg_013 = 0x05 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x4f +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 diff --git a/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_32_8192_8192_1200_FB.ini b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_32_8192_8192_1200_FB.ini new file mode 100755 index 000000000000..d2ebf5cb766b --- /dev/null +++ b/board/novatek/na51068/loader/Tools/ConfigRam/NC323/51068A_DDR4_32_8192_8192_1200_FB.ini @@ -0,0 +1,147 @@ +ini_ver = 0x70200901 +pllRatio = 0x00320000 +mau_reg_008 = 0x4d248f10 +mau_reg_00C = 0x0712c4c2 +mau_reg_010 = 0x45514832 +mau_reg_01C = 0x0131270e +mau_reg_020 = 0xd0000000 +mau_reg_050 = 0x706 +mau_reg_148 = 0x08453d94 +mau_reg_32C = 0x03f80000 +mau_reg_014 = 0x144 +mau_reg_018 = 0x438 +mau_reg_324 = 0x40000 +mau_reg_384 = 0xf000 +mau_reg_3F4 = 0xa800d8 +mau_reg_420 = 0x1 +mau_reg_424 = 0xb0003 +mau_reg_428 = 0x20000d8 +mau_reg_42C = 0x1800100 +mau_reg_430 = 0x90006 +mau_reg_434 = 0xd20006 +mau_reg_438 = 0x31248 +mau_reg_400 = 0x944 +mau_reg_404 = 0x1 +mau_reg_408 = 0x218 +mau_reg_40C = 0x0 +mau_reg_410 = 0x800 +mau_reg_414 = 0x1400 +mau_reg_418 = 0x800 +mau_reg_640 = 0x0 +axic0_reg_440 = 0x1010 +axic2_reg_440 = 0x1010 +axic2_reg_444 = 0x1010 +axic2_reg_448 = 0x1010 +axic2_reg_44C = 0x1010 +reg_0BC = 0x08 +reg_14A = 0x00 +reg_14C = 0x00 +reg_146 = 0x18 +reg_117 = 0x18 +reg_113 = 0x18 +reg_0F4 = 0x18 +reg_101 = 0x18 +reg_145 = 0x18 +reg_0EF = 0x18 +reg_0F5 = 0x18 +reg_10F = 0x04 +reg_102 = 0x24 +reg_106 = 0x46 +reg_121 = 0x42 +reg_0EE = 0x04 +reg_13A = 0x4b +reg_108 = 0x00 +reg_0E7 = 0x00 +reg_0EC = 0x00 +reg_103 = 0x00 +reg_122 = 0xb0 +reg_0F3 = 0x00 +reg_0F2 = 0x09 +reg_11B = 0x09 +reg_0E8 = 0x09 +reg_11A = 0x29 +reg_112 = 0x09 +reg_14D = 0x90 +reg_14E = 0x90 +reg_0F0 = 0x09 +reg_115 = 0x09 +reg_100 = 0x90 +reg_104 = 0x90 +reg_141 = 0xb9 +reg_142 = 0x02 +reg_0F1 = 0x02 +reg_138 = 0x40 +reg_118 = 0x02 +reg_139 = 0x22 +reg_148 = 0x20 +reg_0C1 = 0xff +reg_0C2 = 0x55 +reg_0C3 = 0x08 +reg_0C4 = 0xbb +reg_0C5 = 0xdd +reg_0C6 = 0xee +reg_0C7 = 0x00 +reg_0C8 = 0xaa +reg_0C9 = 0xcc +reg_161 = 0x30 +reg_162 = 0x38 +reg_163 = 0x30 +reg_164 = 0x38 +reg_092 = 0x55 +reg_093 = 0x55 +reg_2BB = 0x22 +reg_2BC = 0x22 +reg_426 = 0x00 +reg_091 = 0xff +reg_0D2 = 0x99 +reg_0D3 = 0x88 +reg_000 = 0x80 +reg_00D = 0x20 +reg_00E = 0x00 +reg_00F = 0x00 +reg_010 = 0x97 +reg_011 = 0x00 +reg_012 = 0xd0 +reg_013 = 0x06 +reg_015 = 0x44 +reg_016 = 0x09 +reg_017 = 0x01 +reg_018 = 0x00 +reg_019 = 0x18 +reg_01A = 0x02 +reg_01B = 0x00 +reg_01C = 0x00 +reg_060 = 0x00 +reg_061 = 0x08 +reg_062 = 0x00 +reg_063 = 0x14 +reg_064 = 0x00 +reg_065 = 0x08 +reg_001 = 0x01 +reg_002 = 0x06 +reg_004 = 0x06 +reg_005 = 0x85 +reg_006 = 0x07 +reg_007 = 0x03 +reg_009 = 0x0c +reg_00A = 0x0c +reg_00B = 0x12 +reg_020 = 0x25 +reg_021 = 0x09 +reg_022 = 0x6a +reg_023 = 0x05 +reg_027 = 0x01 +reg_028 = 0x01 +reg_02D = 0x3f +reg_28E = 0x8d +reg_066 = 0x02 +reg_251 = 0x30 +reg_143 = 0x0b +reg_11C = 0xb0 +reg_0EA = 0x00 +reg_13B = 0x0b +reg_120 = 0xb0 +reg_144 = 0xbb +reg_105 = 0xb0 +reg_10A = 0xb0 +reg_107 = 0xb0 From 2e7824ce9a06ba2a279e353c20b9ddc7f1fc7331 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:23:39 +0000 Subject: [PATCH 06/38] novatek: build the NA51068 loader with a stock toolchain The NA51089 and NA51055 loaders' changes (cf320658df3, 38ec5add3a8), made again for the NT9832x one, so that a distribution's Arm toolchain builds it (arm-none-eabi, or arm-linux-gnueabi as U-Boot's): - target("thumb2") is not a GCC target attribute: target("thumb"); - two header guards defined a different name than they tested (bin_info.h, nvt_rdata_sys.h), which GCC 15 makes an error; - -fshort-enums: the vendor libraries are built with short enums; - the link asks for neither libstdc++ nor libm, which nothing uses and Ubuntu's arm-none-eabi does not have. Unlike the other two, no raise() is added: the DRAM remap libraries (Remap_*.a) define one already. Built with Ubuntu's arm-linux-gnueabi-gcc 15.2 (CHIP 323, SpiFlash): LD98323A.bin, 65536 bytes as always (the image is padded to its 64 KiB); the compressed part is 64464 bytes, 64664 with the SDK's Linaro 6.4 arm-eabi. --- board/novatek/na51068/loader/Include/global.h | 4 ++-- .../na51068/loader/Include/modelext/bin_info.h | 2 +- .../novatek/na51068/loader/Include/nvt_rdata_sys.h | 2 +- .../loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c | 2 +- .../loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c | 14 +++++++------- .../loader/LibExt/LIBExt_src/Ctrl_Flow/main.c | 4 ++-- .../loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c | 2 +- .../LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c | 2 +- .../na51068/loader/MakeCommon/MakeCommon.txt | 2 +- .../na51068/loader/MakeCommon/OutputImg.txt | 4 ++-- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/board/novatek/na51068/loader/Include/global.h b/board/novatek/na51068/loader/Include/global.h index c26677328728..873bda2d176e 100755 --- a/board/novatek/na51068/loader/Include/global.h +++ b/board/novatek/na51068/loader/Include/global.h @@ -58,8 +58,8 @@ extern void load_dram_scan(UINT32 addr, UINT32 size) __attribute__ ((section ( extern UINT32 dma_get_capacity(void); #endif -extern __attribute__((target("thumb2"))) void udelay(UINT32 US) __attribute__ ((section (".part1"))); -extern __attribute__((target("thumb2"))) void timer0_tm1_init(void) __attribute__ ((section (".part1"))); +extern __attribute__((target("thumb"))) void udelay(UINT32 US) __attribute__ ((section (".part1"))); +extern __attribute__((target("thumb"))) void timer0_tm1_init(void) __attribute__ ((section (".part1"))); #define timer_getSysTick() ((*(UINT32 volatile *)(REG_TMR010_BASE + 0x10)) / 16) //@} diff --git a/board/novatek/na51068/loader/Include/modelext/bin_info.h b/board/novatek/na51068/loader/Include/modelext/bin_info.h index c697c9416314..a3efa2ca6199 100755 --- a/board/novatek/na51068/loader/Include/modelext/bin_info.h +++ b/board/novatek/na51068/loader/Include/modelext/bin_info.h @@ -39,7 +39,7 @@ Copyright Novatek Microelectronics Corp. 2011. All rights reserved. */ #ifndef _BINI_NFO_H -#define _BIN_INFO_H +#define _BINI_NFO_H #define BIN_INFO_VER 0x19062115 ///< YYYY/MM/DD HH diff --git a/board/novatek/na51068/loader/Include/nvt_rdata_sys.h b/board/novatek/na51068/loader/Include/nvt_rdata_sys.h index 0c045271a0bf..676e734089a9 100755 --- a/board/novatek/na51068/loader/Include/nvt_rdata_sys.h +++ b/board/novatek/na51068/loader/Include/nvt_rdata_sys.h @@ -1,5 +1,5 @@ #ifndef __SYSTEM_H__ -#define __CUSTOM_SYSTEM_H__ +#define __SYSTEM_H__ typedef enum { SYS_SECURE_MODE = 0, diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c index 704d4ff7ca45..f9bb9ad7b951 100755 --- a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -33,7 +33,7 @@ #include "nor.h" PSTORAGE_OBJ int_strg_obj = NULL; -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) #define FW_PART1_SIZE_OFFSET (CODE_SECTION_OFFSET + 0x04) //ref to CodeInfo.S on rtos (addr of _section_01_size) static uint32_t global_timer_freq = 3000000; //3MHz = 3000000 Hz diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c index ae3c0eba200f..c01e4330710e 100755 --- a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c @@ -53,7 +53,7 @@ static int m_uboot_status = -2; static int m_fdt_status = -1; static SCSIOP_FLASH_OP m_flash_op = {0}; -__attribute__((target("thumb2"))) static int u2_check_firmware(unsigned int addr) +__attribute__((target("thumb"))) static int u2_check_firmware(unsigned int addr) { NVTPACK_FW_HDR2 *p_hdr = (NVTPACK_FW_HDR2 *)addr; unsigned int size = p_hdr->TotalSize; @@ -84,7 +84,7 @@ __attribute__((target("thumb2"))) static int u2_check_firmware(unsigned int addr return -1; } -__attribute__((target("thumb2"))) static int u2_boot_uboot(unsigned int addr, unsigned int size, U2_FW_TYPE fw_type) +__attribute__((target("thumb"))) static int u2_boot_uboot(unsigned int addr, unsigned int size, U2_FW_TYPE fw_type) { if (fw_type == U2_FW_TYPE_NVTPACK) { UINT32 comp_addr = 0; @@ -143,7 +143,7 @@ __attribute__((target("thumb2"))) static int u2_boot_uboot(unsigned int addr, un return 0; } -__attribute__((target("thumb2"))) static int u2_on_verify(unsigned int p_cmd, unsigned int *p_data, unsigned int *in_size) +__attribute__((target("thumb"))) static int u2_on_verify(unsigned int p_cmd, unsigned int *p_data, unsigned int *in_size) { NVT_SCSI_CBW *p_cbw = (NVT_SCSI_CBW *)p_cmd; int cmd_id = p_cbw->CBWCB[1]; @@ -195,7 +195,7 @@ __attribute__((target("thumb2"))) static int u2_on_verify(unsigned int p_cmd, un return 0; } -__attribute__((target("thumb2"))) static int u2_flash_open(unsigned int flash_type) +__attribute__((target("thumb"))) static int u2_flash_open(unsigned int flash_type) { static int is_opened[4] = {0}; @@ -244,7 +244,7 @@ __attribute__((target("thumb2"))) static int u2_flash_open(unsigned int flash_ty return 0; } -__attribute__((target("thumb2"))) static int u2_on_vendor(unsigned int p_cmd) +__attribute__((target("thumb"))) static int u2_on_vendor(unsigned int p_cmd) { int er; PSTORAGE_OBJ p_strg = NULL; @@ -339,7 +339,7 @@ __attribute__((target("thumb2"))) static int u2_on_vendor(unsigned int p_cmd) return 0; } -__attribute__((target("thumb2"))) int bl_usb(void) +__attribute__((target("thumb"))) int bl_usb(void) { typedef int (*MSDC_Verify_CB)(unsigned int pCmdBuf, unsigned int *pDataBuf, unsigned int *IN_size); @@ -354,7 +354,7 @@ __attribute__((target("thumb2"))) int bl_usb(void) return 0; } -__attribute__((target("thumb2"))) int bl_uart(void) +__attribute__((target("thumb"))) int bl_uart(void) { typedef int (*UART_Verify_CB)(unsigned int pCmdBuf, unsigned int *pDataBuf, unsigned int *IN_size); diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c index 18bea8a3a3ff..93dd5ee91681 100755 --- a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c @@ -36,7 +36,7 @@ //int __attribute__ ((section (".READ_CUSTOM_DATA"))) read_custom_data_if(unsigned int, struct buffer_info_t*, int, int); FLASH_TYPE_T flash_type = FLASH_SD; -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) #define VERSION "Version 1.0.00" // Specific test @@ -204,7 +204,7 @@ _THUMB2 void check_storage_type(void) } #if HVYLOAD_TEST -__attribute__((target("thumb2"))) void heavy_load_test(void) +__attribute__((target("thumb"))) void heavy_load_test(void) { //volatile int tt = 0; unsigned int test_addr1 = 0x30001000, test_addr2 = 0x30101000, test_addr3 = 0x30202000; diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c index e44c3cd8ea46..c0a27da5b555 100755 --- a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c @@ -16,7 +16,7 @@ #include "debug.h" #include "pll.h" -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) NAND_FLASH_DEV nvt_nand_ids[] = { diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c index e2b297f2c144..6436d4fb888c 100755 --- a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c @@ -16,7 +16,7 @@ #include "debug.h" #include "pll.h" -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) NOR_FLASH_DEV nvt_nor_ids[] = { diff --git a/board/novatek/na51068/loader/MakeCommon/MakeCommon.txt b/board/novatek/na51068/loader/MakeCommon/MakeCommon.txt index 13787b96665d..29b5304dad2e 100755 --- a/board/novatek/na51068/loader/MakeCommon/MakeCommon.txt +++ b/board/novatek/na51068/loader/MakeCommon/MakeCommon.txt @@ -127,7 +127,7 @@ endif # -fno-optimize-sibling-calls : Don't optimize sibling and tail recursive calls # -fno-omit-frame-pointer : Keep the frame pointer in a register for functions that don't need one #---------------------------------------------------------------------- -PLATFORM_CFLAGS += -fno-builtin -ffreestanding -fno-common -fshort-wchar -fno-strict-aliasing -fno-optimize-sibling-calls -fno-omit-frame-pointer +PLATFORM_CFLAGS += -fno-builtin -ffreestanding -fno-common -fshort-enums -fshort-wchar -fno-strict-aliasing -fno-optimize-sibling-calls -fno-omit-frame-pointer # C Language Options for eCos system ifeq "$(USE_ECOS_KERNEL)" "ON" diff --git a/board/novatek/na51068/loader/MakeCommon/OutputImg.txt b/board/novatek/na51068/loader/MakeCommon/OutputImg.txt index 7c49956d17d6..ee5327b90e75 100755 --- a/board/novatek/na51068/loader/MakeCommon/OutputImg.txt +++ b/board/novatek/na51068/loader/MakeCommon/OutputImg.txt @@ -307,7 +307,7 @@ $(LD_LIB_D): $(MODELEXT_D) $(IMAGE_D): $(SRC) $(ASM) $(CPP_SRC) $(ALL_OBJ_D) $(LIB_D) $(LD_LIB_D) $(MODELEXT_D) $(shell mv *.o $(IMG_BASE_DIR)/Debug/ObjectCode 2>>/dev/null) @echo '-o $@ $(ALL_OBJ_D)'> ld_d.tmp - @echo '--start-group $(LD_LIB_D) $(filter-out $(LD_LIB_BAN_D),$(LIB_D)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_D) -L "$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -L"$(libm_dir)" -lstdc++ -lgcc "$(libm_path)" $(LDMAP_D)' >> ld_d.tmp + @echo '--start-group $(LD_LIB_D) $(filter-out $(LD_LIB_BAN_D),$(LIB_D)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_D) -L "$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -L"$(libm_dir)" -lgcc $(LDMAP_D)' >> ld_d.tmp ifeq "$(SCATTER)" "EmuKit_cpu2.lds" @echo "Linking CA53_core2...$(LD_PATH_LDS_D)" \ && echo Creating image $@ ... \ @@ -416,7 +416,7 @@ $(LD_LIB_R): $(MODELEXT_R) $(IMAGE_R): $(SRC) $(ASM) $(CPP_SRC) $(ALL_OBJ_R) $(LIB_R) $(LD_LIB_R) $(MODELEXT_R) $(shell mv *.o $(IMG_BASE_DIR)/Release/ObjectCode 2>>/dev/null) @echo '-o $@ $(ALL_OBJ_R) '> ld_r.tmp - @echo '--start-group $(LD_LIB_R) $(filter-out $(LD_LIB_BAN_R),$(LIB_R)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_R) -L"$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -lstdc++ -lgcc "$(libm_path)" $(LDMAP_R)' >> ld_r.tmp + @echo '--start-group $(LD_LIB_R) $(filter-out $(LD_LIB_BAN_R),$(LIB_R)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_R) -L"$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -lgcc $(LDMAP_R)' >> ld_r.tmp ifeq "$(SCATTER)" "EmuKit_cpu2.lds" @echo "Linking CA53_core2...$(LD_PATH_LDS_R)" \ From 10932feb3564e63fc327a9da814d231f856e4f72 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:26:49 +0000 Subject: [PATCH 07/38] novatek: the NA51068 loader unpacks an LZMA U-Boot from the SPI NOR U-Boot, ~94 KiB in an LZMA BCL1 container on NA51089, has a 128 KiB slot in OpenIPC's 256 KiB boot partition. The NT9832x loader unpacks BCL1 with Novatek's LZ alone, whatever the algorithm field says, which leaves it far larger. Its library Compress.a has an LZMA decoder as well, lzma_inflate(), which only the bound-U-Boot flow (UBOOT_BIND_ON, bl_boot_bind_uboot()) calls, with the 64 KiB .lzma scratch area the linker script reserves after the heap for it. bl_load_uboot_from_flash() now takes BCL1 algorithm 11 to it, and anything else to LZ_Uncompress() as before; openipc/nvt-image.py's image is then the same as on NA51089 and NA51055. The decoder reads the stream's own header (properties, dictionary, the unpacked size) and returns the unpacked length, or -1. Two NOR models for OpenIPC, made from the SDK's NAND ones: - 323_DDR4_4GX1_NOR_EVB (the default MODEL now): 321_DDR4_8GX1_NAND_SYS with CHIP 323, SDRAM_SIZE 4096, DRAM_MUX FB, the SDK's cfg_98323_DDR4_4GX1_NOR_EVB board, as qemu-hisilicon's build-novatek-loader.sh derives its nt98323 loader; - 321_DDR3_4GX1_NOR_EVB: 321_DDR3_4Gx1_NAND_SYS. Both boot from the SPI NOR (STORAGEINT SpiFlash) and have no SD card update at boot (STORAGEEXT NONE): with the card code and the decoder the image does not fit its 64 KiB (65968 bytes compressed), without the card code it is 60816; U-Boot does OpenIPC's SD recovery instead. Verified under qemu-hisilicon (PR #222, -M nt98323,flash-file=, the mask ROM model running the loader): the 323 loader built with Ubuntu's arm-linux-gnueabi-gcc trains the DDR, reads the tree at 0x10000, finds partition_uboot through nvtpack/index, unpacks an 80 KiB LZMA BCL1 test image to 0x03900000 and starts it ("Single core ... jump 0x03900000"). --- .../LibExt/LIBExt_src/Ctrl_Flow/bl_func.c | 19 ++ .../loader/Project/Model/ModelConfig.txt | 3 +- .../ModelConfig_321_DDR3_4GX1_NOR_EVB.txt | 214 +++++++++++++++++ .../ModelConfig_323_DDR4_4GX1_NOR_EVB.txt | 216 ++++++++++++++++++ 4 files changed, 451 insertions(+), 1 deletion(-) create mode 100644 board/novatek/na51068/loader/Project/Model/ModelConfig_321_DDR3_4GX1_NOR_EVB.txt create mode 100644 board/novatek/na51068/loader/Project/Model/ModelConfig_323_DDR4_4GX1_NOR_EVB.txt diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c index f9bb9ad7b951..522c671d7b42 100755 --- a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -1219,6 +1219,25 @@ static _THUMB2 int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char debug_err_var("bl_load_uboot_from_flash_comp,er=", er); // read bfc-uboot failed bl_displayErrMsg(RWErrorMsg); } + /* + * OpenIPC: algorithm 11, LZMA, through the decoder + * Compress.a has for the bound U-Boot + * (bl_boot_bind_uboot()), as NA51089's loader takes it + * to its mask ROM + */ + if ((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF) == 11) { + extern char _lzma_tmp_start[]; + extern char _lzma_tmp_end[]; + + if (lzma_inflate(p_tmp + sizeof(NVTPACK_BFC_HDR), size_comp_le, + (UINT8 *)p_dram_partition->uboot_addr, + invertEndian(pBfc->uiSizeUnComp), + (UINT8 *)_lzma_tmp_start, + (UINT32)(_lzma_tmp_end - _lzma_tmp_start)) < 0) { + debug_err("lzma\r\n"); + return -1; + } + } else LZ_Uncompress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->uboot_addr, size_comp_le); } else diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig.txt index 03dc4ff4f243..1c9c0c0b901e 100755 --- a/board/novatek/na51068/loader/Project/Model/ModelConfig.txt +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig.txt @@ -15,4 +15,5 @@ # WRLD_USB_323_DDR4_8GX2_SYS # WRLD_USB_NC321_DDR3_4GX1_SYS # WRLD_USB_NC323_DDR3_4GX2_NAND_EVB_SYS -MODEL = EMU_EVB +# OpenIPC: 321_DDR3_4GX1_NOR_EVB, 323_DDR4_4GX1_NOR_EVB +MODEL = 323_DDR4_4GX1_NOR_EVB diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_321_DDR3_4GX1_NOR_EVB.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_321_DDR3_4GX1_NOR_EVB.txt new file mode 100644 index 000000000000..b6ba4008559e --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_321_DDR3_4GX1_NOR_EVB.txt @@ -0,0 +1,214 @@ +#---------------------------------------------------------------------- +# OpenIPC: 321_DDR3_4Gx1_NAND_SYS with the U-Boot on the SPI NOR +# (STORAGEINT SpiFlash), and no update from an SD card at boot +# (STORAGEEXT NONE): U-Boot recovers from the card instead. +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = 321 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1066 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 4096 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 0 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = UBT + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Enabled + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR3 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = SpiFlash + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = NONE + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin diff --git a/board/novatek/na51068/loader/Project/Model/ModelConfig_323_DDR4_4GX1_NOR_EVB.txt b/board/novatek/na51068/loader/Project/Model/ModelConfig_323_DDR4_4GX1_NOR_EVB.txt new file mode 100644 index 000000000000..d25a12628a50 --- /dev/null +++ b/board/novatek/na51068/loader/Project/Model/ModelConfig_323_DDR4_4GX1_NOR_EVB.txt @@ -0,0 +1,216 @@ +#---------------------------------------------------------------------- +# OpenIPC: 321_DDR4_8GX1_NAND_SYS with the U-Boot on the SPI NOR +# (STORAGEINT SpiFlash), and no update from an SD card at boot +# (STORAGEEXT NONE): U-Boot recovers from the card instead. +# NT98323 with one 4 Gb DDR4 die, as the SDK's cfg_98323_DDR4_4GX1_NOR_EVB: +# CHIP 323, SDRAM_SIZE 4096, DRAM_MUX FB. +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN +BL_RECOVERY_FWNAME = FW98$(CHIP_SHORT)R.BIN + +# [CHIP] : main chip ID +# 321 +# 323 +# 621 +# 623 +# NC321 +CHIP = 323 + +# [CHIP_VER] : chip version +# A +# B +#CHIP_VER = A + +# [DRAM1_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_CLK = 1200 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_SIZE = 4096 + +# [SDRAM2_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_SIZE = 0 + +# [DRAM_MUX] : Dram mux +# FB +# UBT +DRAM_MUX = FB + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +#DRAM1_POWEROFF_S3 = Enabled + +# [DRAM_WIDTH_DETECT] : enable DRAM1 width detect by P_GPIO16 (only valid with 98535) +# Normal +# Enabled +#DRAM_WIDTH_DETECT = Enabled + +# [DRAM1_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_16BIT_MODE = Enabled + +# [DRAM_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_TYPE = DDR4 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO. When gpio high, using 2nd ini table; when gpio low, using original table +# 0: Normal +# 1: GPIO0_4 +# 2: GPIO0_26 +# 3: GPIO1_0 +# 4: GPIO1_1 +# 5: GPIO1_10 +DRAM_2ND_TBL_DETECT = 0 + +# [DRAM1_2ND_CLK] : DRAM1 clock rate +# 800 +# 933 +# 1066 +# 1200 +# 1333 (DDR4 only) +# 1600 (DDR4 only) +DRAM1_2ND_CLK = 1333 + +# [SDRAM_2ND_SIZE] : DRAM Size (unit: Giga bit) +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM_2ND_SIZE = 8192 + +# [SDRAM2_2ND_SIZE] : DRAM2 Size (unit: Giga bit) +# 0 +# 1024 +# 2048 +# 4096 +# 8192 +SDRAM2_2ND_SIZE = 8192 + +# [DRAM_2ND_MUX] : Dram mux +# FB +# UBT +DRAM_2ND_MUX = FB + +# [DRAM1_2ND_16BIT_MODE] : DRAM1 only connect one ddr chip +# Normal +# Enabled +DRAM1_2ND_16BIT_MODE = Normal + +# [DRAM_2ND_TYPE] : DRAM Type +# DDR3 +# DDR3L +# DDR4 +DRAM_2ND_TYPE = DDR4 + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_HL_SWAP] : ddr high byte low byte swap (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb (original) when this option open will change to 2Gb+4Gb +# Normal: origin(big+small) +# Enabled: big+small --> small+big +DRAM_HL_SWAP = Normal + +# [DRAM_SA_SWAP] : ddr system address 0x0 mapping to 16bit ddr or 32bit ddr (only in heterogeneous mode) +# for example: ddr 4Gb+2Gb original mapping address 0x0 to 32bit ddr when this option open will change address 0x0 mapping to 16bit ddr +# Normal: origin(mapping to 32bit ddr) +# Enabled: mapping to 16bit ddr +DRAM_SA_SWAP = Normal + +# [STORAGEINT] : internal storage device +# NandSpi +# SpiFlash +STORAGEINT = SpiFlash + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth +# Uart +STORAGEEXT = NONE + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# RSA2048 +SIGNATUREMETHOD = RSA2048 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x20000 +LOADER_DRAM_ADDR = 0x00100000 +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader bind uboot # +#==============================================================================# +# [UBOOT_BIND] +# UBOOT_BIND_ON +# UBOOT_BIND_OFF +UBOOT_BIND = UBOOT_BIND_OFF + +# [UBOOT_PATH] (relative to Model/Makefile) +UBOOT_PATH = ../../u-boot.lzma.bin From a051a705a058d804b9569a2e8c2eda1c8861ab57 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:30:40 +0000 Subject: [PATCH 08/38] novatek: loader: LOADER_TYPE reaches bl_func.c 38ec5add3a8 passed -DLOADER_TYPE from Project/Model/Makefile, whose sources do not read it; bl_func.c, which does, is built by LibExt/LIBExt_src/Ctrl_Flow/Makefile, with its own C_DEFINE_EXT. So the 528 and 529 loaders took the 52x flow and stopped after the DDR training. With the 528 flow in, the 528 model's loader is 65800 bytes with the LZMA decoder, past its 64 KiB; build.sh builds it without the loader's own SD card update (STORAGEEXT=NONE), 62833 bytes. Verified under qemu-hisilicon's nt98528 (OpenIPC/qemu-hisilicon#222), whose mask ROM model runs the image's loader: DDR1 and DDR2 trained, U-Boot unpacked from its LZMA BCL1 container, the prompt reached twice, the second time with the environment the first saved. Built with arm-none-eabi 13.2 (Ubuntu 24.04, as CI) and with the SDK's Linaro 6.4 arm-eabi; arm-linux-gnueabi's build stops after the training (open). --- .../novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile | 1 + board/novatek/na51055/loader/Project/Model/Makefile | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile index 457fb97d9268..609176a22395 100755 --- a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile @@ -51,6 +51,7 @@ C_DEFINE_EXT = \ $(SECURE_DECRYPT_UBOOT_PARAM)\ $(SECURE_DECRYPT_OPTEE_PARAM)\ $(OPTEE_UBOOT_SIGNATURE_PARAM) \ + $(LOADER_TYPE_PARAM) \ $(CARDDET_PIN_PARAM)\ CFLAGS_R = $(C_DEFINE_EXT) diff --git a/board/novatek/na51055/loader/Project/Model/Makefile b/board/novatek/na51055/loader/Project/Model/Makefile index 3ec1b401180a..594475b03a7c 100755 --- a/board/novatek/na51055/loader/Project/Model/Makefile +++ b/board/novatek/na51055/loader/Project/Model/Makefile @@ -94,7 +94,6 @@ C_DEFINE_EXT = \ $(BL_DUTY_CALIBRATION_PARAM)\ $(BL_DUTY_CALIBRATION_TYPE_PARAM)\ $(BL_LOADER_FLOW_PARAM) \ - $(LOADER_TYPE_PARAM) \ $(BL_STORAGEINT_PARAM) \ $(SECURE_DECRYPT_UBOOT_PARAM) \ $(SECURE_DECRYPT_OPTEE_PARAM) \ From 5ab81398f2f97103242330aa7aa9282aab54085b Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:41:43 +0000 Subject: [PATCH 09/38] openipc: print totalmem with a 64-bit ram_size gd->ram_size is a phys_size_t, 64 bits on AArch64: "%ld" warned there. Print it as an unsigned long. Built for nt98562 (arm) and nt98332 (aarch64), no warning. --- common/openipc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/openipc.c b/common/openipc.c index 002a3206f14f..8abcd2ec7a7b 100644 --- a/common/openipc.c +++ b/common/openipc.c @@ -749,7 +749,7 @@ static void altbootcmd_migrate(void) { int openipc_helper(void) { char msize[16]; - sprintf(msize, "%ldM", gd->ram_size / 1024 / 1024); + sprintf(msize, "%luM", (ulong)(gd->ram_size >> 20)); env_set("totalmem", msize); firmware_recovery(); firmware_scan(); From 1b25536d2c212a0853e9ee7fff5ed0b336b2e43d Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:42:00 +0000 Subject: [PATCH 10/38] novatek: add the NT98332 (NA51103), AArch64 behind the board's BL31 NA51103 is Novatek's two Cortex-A53 NVR die. Its boards boot: mask ROM, the board's loader (Xiongmai's FW98332A on the NBD80N36RA; no loader source exists for this die), DDR training, a warm reset (RMR) of the A53s into AArch64, the board's BL31 (TF-A v2.2), then U-Boot. BL31 enters BL33 at the address in its own header (0x1E000000, the loader's /nvt_memory_cfg/uboot) with a fixed SPSR 0x3C9: AArch64 EL2h, so U-Boot is an AArch64 one. The vendor's _a32 configs for the die are template copies of NA51000's and cannot be entered from this BL31. - arch/arm/Kconfig: ARCH_NOVATEK selects CPU_V7A only without ARM64; NVT_NA511XX selects ARM64 (mach-novatek/Kconfig), TARGET_NT98332. - mach/na511xx.h: the blocks at 0x2_F000_0000 (vendor arch-nvt-na51103_a64/IOAddress.h, the dump's tree), SHMINFO at 0xA00000, BL31 at 0x1F00000, U-Boot's region 0x1E000000 + 32 MiB. mach/hardware.h picks a die's header for the drivers and the board. - soc.c: HEADINFO "ub51103 ", BinFlag 2 as the vendor's SMP builds; the vendor's watchdog reset (CG 0x9C bit 12, 0x7C bit 4); the MMU map (DDR normal, 0x2_F000_0000 device: with the MMU off every access is a device one and U-Boot's unaligned ones fault); nvt_loader_fdt(). - board/novatek/na511xx: the loader's tree to ${fdtaddr}, relocation inside the U-Boot region, mem=/hdal-memory/media split at ${osmem} (the media node's 4-cell addresses), and the first MAC's pins, clocks and PHY reset as eth_na51103.c (RGMII, RMII, embedded PHY). - novatek.h: UART at 48 MHz, the architected timer, osmem 0x15e00000 and staging at 0x2000000 as the board's firmware; ubwrite writes only U-Boot's slot (0x20000) and openipc-common.h lets a SoC say so. - MMC_NVT is NA51089's. Verified under qemu-hisilicon nt98332 (-smp 3) from the Xiongmai dump with U-Boot's slot replaced: ROM -> FW98332A -> BL31 -> U-Boot 2022.10 at EL2, "chip id 8b20", 1 GiB; and the dump's own kernel (4.19.148 arm64, repacked as an LZMA uImage) boots from it: PSCI CPU1, squashfs root, Xiongmai's userland. --- arch/arm/Kconfig | 12 +- arch/arm/mach-novatek/Kconfig | 21 ++ arch/arm/mach-novatek/include/mach/hardware.h | 21 ++ arch/arm/mach-novatek/include/mach/na511xx.h | 75 ++++ arch/arm/mach-novatek/soc.c | 66 +++- board/novatek/na511xx/Makefile | 3 + board/novatek/na511xx/na511xx.c | 326 ++++++++++++++++++ board/novatek/na511xx/u-boot.lds | 184 ++++++++++ drivers/mmc/Kconfig | 2 +- include/configs/novatek.h | 37 +- include/configs/openipc-common.h | 8 +- 11 files changed, 740 insertions(+), 15 deletions(-) create mode 100644 arch/arm/mach-novatek/include/mach/hardware.h create mode 100644 arch/arm/mach-novatek/include/mach/na511xx.h create mode 100644 board/novatek/na511xx/Makefile create mode 100644 board/novatek/na511xx/na511xx.c create mode 100644 board/novatek/na511xx/u-boot.lds diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 2eb661b2b4ee..b9f02bd88ac9 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -824,13 +824,15 @@ config ARCH_K3 select FIT config ARCH_NOVATEK - bool "Novatek NA51089 IP camera SoCs" - select CPU_V7A + bool "Novatek IP camera and NVR SoCs" + select CPU_V7A if !ARM64 select CREATE_ARCH_SYMLINK help - Novatek's NT98562 and NT98566: one Cortex-A9 with DDR in the - package. The mask ROM starts the vendor loader, which trains the - DDR, loads U-Boot as its device tree describes and starts it. + Novatek's NA51089 cameras (one Cortex-A9) and NA51103 / NA51090 + NVRs (Cortex-A53s, AArch64; the SoC selects ARM64). The mask ROM + starts the vendor loader, which trains the DDR, loads U-Boot as + its device tree describes and starts it, on the NVRs through the + board's BL31. config ARCH_OMAP2PLUS bool "TI OMAP2+" diff --git a/arch/arm/mach-novatek/Kconfig b/arch/arm/mach-novatek/Kconfig index 426391ca3256..37730ce3a05c 100644 --- a/arch/arm/mach-novatek/Kconfig +++ b/arch/arm/mach-novatek/Kconfig @@ -28,13 +28,33 @@ config TARGET_NT98566 help NA51089 with 128 MiB of DDR3 in the package. +config TARGET_NT98332 + bool "NT98332 (NA51103)" + select NVT_NA51103 + help + NA51103, the NVR die with two Cortex-A53s, 1 GiB of DDR on the + boards. U-Boot runs in AArch64 at EL2, started by the board's + BL31. + endchoice config NVT_NA51089 bool +# The NVR dies: the board's loader warm-resets the A53s into AArch64 and +# its BL31 (TF-A v2.2) enters U-Boot at EL2 with a fixed SPSR (0x3C9), so +# U-Boot is an AArch64 one. +config NVT_NA511XX + bool + select ARM64 + +config NVT_NA51103 + bool + select NVT_NA511XX + config NVT_DDR_SIZE hex + default 0x40000000 if TARGET_NT98332 default 0x20000000 if TARGET_NT98560 default 0x08000000 if TARGET_NT98566 default 0x04000000 @@ -49,6 +69,7 @@ config SYS_VENDOR default "novatek" config SYS_BOARD + default "na511xx" if NVT_NA511XX default "na51089" config SYS_CONFIG_NAME diff --git a/arch/arm/mach-novatek/include/mach/hardware.h b/arch/arm/mach-novatek/include/mach/hardware.h new file mode 100644 index 000000000000..ea650be2006e --- /dev/null +++ b/arch/arm/mach-novatek/include/mach/hardware.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * The memory map of the Novatek die U-Boot is built for: the drivers and + * the board code include this rather than a die's own header. + */ + +#ifndef __NVT_HARDWARE_H +#define __NVT_HARDWARE_H + +#if defined(CONFIG_NVT_NA511XX) +#include <asm/arch/na511xx.h> +#else +#include <asm/arch/na51089.h> +#endif + +#ifndef __ASSEMBLY__ +/* The device tree the loader left (SHMINFO), or NULL */ +const void *nvt_loader_fdt(void); +#endif + +#endif diff --git a/arch/arm/mach-novatek/include/mach/na511xx.h b/arch/arm/mach-novatek/include/mach/na511xx.h new file mode 100644 index 000000000000..b82bade5c53a --- /dev/null +++ b/arch/arm/mach-novatek/include/mach/na511xx.h @@ -0,0 +1,75 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Novatek NA51103 (NT98332) and NA51090 (NT98633), the NVR dies: memory + * map, after the vendor U-Boot 2019.04 (arch-nvt-na51103_a64/IOAddress.h, + * arch-nvt-na51090_a64/IOAddress.h) and the boards' device trees. The + * blocks sit above 4 GiB, at 0x2_F000_0000; most keep the NA51089 + * register layout at new offsets. + */ + +#ifndef __NA511XX_H +#define __NA511XX_H + +#include <linux/bitops.h> + +#define NVT_DDR_BASE 0x00000000 +#define NVT_IO(off) (0x2F0000000UL + (off)) + +#define NVT_TOP_BASE NVT_IO(0x010000) /* pinmux, chip ID */ +#define NVT_CG_BASE NVT_IO(0x020000) /* clocks, resets */ +#define NVT_PAD_BASE NVT_IO(0x030000) +#define NVT_GPIO_BASE NVT_IO(0x040000) +#define NVT_FLASH_BASE NVT_IO(0x180000) +#define NVT_UART0_BASE NVT_IO(0x280000) +#ifdef CONFIG_NVT_NA51090 +#define NVT_WDT_BASE NVT_IO(0x110000) +#define NVT_ETH_BASE NVT_IO(0x200000) /* the vendor's eth0 */ +#else +#define NVT_WDT_BASE NVT_IO(0x060000) +#define NVT_ETH_BASE NVT_IO(0x440000) +#endif +#define NVT_IO_SIZE 0x10000000 /* to 0x2_FFFF_FFFF */ + +/* TOP */ +#define NVT_TOP_CHIP_ID (NVT_TOP_BASE + 0xF0) /* [31:16] */ +#define NVT_CHIP_NA51103 0x8B20 +#define NVT_CHIP_NA51090 0xBC21 + +/* CG: per-module clock enables and resets (active low) */ +#define NVT_CG_WDT_CLKEN (NVT_CG_BASE + 0x7C) +#define NVT_CG_WDT_RSTN (NVT_CG_BASE + 0x9C) +#define NVT_CG_WDT_EN BIT(4) +#define NVT_CG_WDT_RST BIT(12) + +/* Watchdog: every CTRL write carries the key in [31:16] */ +#define NVT_WDT_CTRL (NVT_WDT_BASE + 0x00) +#define NVT_WDT_MANUAL (NVT_WDT_BASE + 0x0C) +#define NVT_WDT_KEY 0x5A960000 +#define NVT_WDT_EN BIT(0) + +/* The MAC's CSR clock is the 150 MHz APB: MDC divider CR 1 (/62) */ +#define NVT_ETH_MDIO_CR 1 + +/* UART0, a 16550 with 32-bit registers */ +#define NVT_UART_HZ 48000000 + +/* + * What the loader leaves in DDR (/nvt_memory_cfg of its device tree): + * the device tree at 0x100000, SHMINFO at 0xA00000, BL31 at 0x1F00000 + * (secure, kept out of reach: no-map in the kernel's tree too), and + * U-Boot where /nvt_memory_cfg/uboot says, 32 MiB below the end of the + * first 512 MiB / 1 GiB. + */ +#define NVT_SHMINFO (NVT_DDR_BASE + 0x00A00000) +#define NVT_SHM_LD_NVT 0x00 /* "LD_NVT" */ +#define NVT_SHM_FDT_ADDR 0x2C +#define NVT_BL31_BASE (NVT_DDR_BASE + 0x01F00000) +#define NVT_BL31_SIZE 0x00100000 +#ifdef CONFIG_NVT_NA51090 +#define NVT_UBOOT_BASE (NVT_DDR_BASE + 0x3E000000) +#else +#define NVT_UBOOT_BASE (NVT_DDR_BASE + 0x1E000000) +#endif +#define NVT_UBOOT_SIZE 0x02000000 + +#endif diff --git a/arch/arm/mach-novatek/soc.c b/arch/arm/mach-novatek/soc.c index 9cc80ef42561..b74190440406 100644 --- a/arch/arm/mach-novatek/soc.c +++ b/arch/arm/mach-novatek/soc.c @@ -1,16 +1,22 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * Novatek NA51089: the loader's HEADINFO, reset and DRAM size. The + * Novatek: the loader's HEADINFO, reset and DRAM size. On NA51089 the * timer is timer 0 of the timer block, which the loader leaves running - * (CONFIG_SYS_TIMER_COUNTER in include/configs/novatek.h). + * (CONFIG_SYS_TIMER_COUNTER in include/configs/novatek.h); on the AArch64 + * NVR dies (NA51103, NA51090) it is the architected timer, and the MMU + * maps the DDR and the blocks above 4 GiB. */ #include <common.h> #include <init.h> #include <asm/global_data.h> #include <asm/io.h> -#include <asm/arch/na51089.h> +#include <asm/arch/hardware.h> +#ifdef CONFIG_ARM64 +#include <asm/armv8/mmu.h> +#endif #include <linux/delay.h> +#include <linux/libfdt.h> DECLARE_GLOBAL_DATA_PTR; @@ -37,18 +43,44 @@ struct nvt_headinfo { static const struct nvt_headinfo headinfo __used __section(".nvt_headinfo") = { .code_entry = CONFIG_SYS_TEXT_BASE, +#if defined(CONFIG_NVT_NA51103) + .chip_name = "ub51103 ", +#elif defined(CONFIG_NVT_NA51090) + .chip_name = "ub51090 ", +#else .chip_name = "ub51089 ", +#endif .version = "OpenIPC ", .date = " ", .bin_length = 0xffffffff, .checksum = 0xffffffff, +#ifdef CONFIG_NVT_NA511XX + /* As the vendor's SMP builds: Linux brings up the other cores */ + .bin_ctrl = 2, +#endif }; +const void *nvt_loader_fdt(void) +{ + const void *shm = (const void *)NVT_SHMINFO; + const void *fdt; + + if (memcmp(shm + NVT_SHM_LD_NVT, "LD_NVT", 6)) + return NULL; + fdt = (const void *)(ulong)readl(shm + NVT_SHM_FDT_ADDR); + return fdt_check_header(fdt) ? NULL : fdt; +} + /* As the vendor U-Boot resets: the watchdog, then its manual trigger */ void reset_cpu(void) { +#ifdef CONFIG_NVT_NA511XX + setbits_le32(NVT_CG_WDT_RSTN, NVT_CG_WDT_RST); + setbits_le32(NVT_CG_WDT_CLKEN, NVT_CG_WDT_EN); +#else setbits_le32(NVT_CG_CLKEN0, NVT_CG_WDT); setbits_le32(NVT_CG_RSTN0, NVT_CG_WDT); +#endif writel(NVT_WDT_KEY | 0x112, NVT_WDT_CTRL); udelay(80); writel(NVT_WDT_KEY | 0x112 | NVT_WDT_EN, NVT_WDT_CTRL); @@ -57,7 +89,33 @@ void reset_cpu(void) ; } -/* The DDR is in the package: its size is the part's */ +#ifdef CONFIG_ARM64 +/* + * The DDR, cached, and the blocks at 0x2_F000_0000 as device memory. With + * the MMU off every access would be a device one, and the unaligned ones + * U-Boot makes would fault. + */ +static struct mm_region nvt_mem_map[] = { + { + .virt = NVT_DDR_BASE, + .phys = NVT_DDR_BASE, + .size = CONFIG_NVT_DDR_SIZE, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | PTE_BLOCK_INNER_SHARE, + }, { + .virt = NVT_IO(0), + .phys = NVT_IO(0), + .size = NVT_IO_SIZE, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | PTE_BLOCK_PXN | PTE_BLOCK_UXN, + }, { + 0, + } +}; + +struct mm_region *mem_map = nvt_mem_map; +#endif + +/* The DDR is in the package, or on the board: its size is the part's */ int dram_init(void) { gd->ram_size = PHYS_SDRAM_1_SIZE; diff --git a/board/novatek/na511xx/Makefile b/board/novatek/na511xx/Makefile new file mode 100644 index 000000000000..aaefc8cc89a1 --- /dev/null +++ b/board/novatek/na511xx/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0+ + +obj-y += na511xx.o diff --git a/board/novatek/na511xx/na511xx.c b/board/novatek/na511xx/na511xx.c new file mode 100644 index 000000000000..2f60b6e60493 --- /dev/null +++ b/board/novatek/na511xx/na511xx.c @@ -0,0 +1,326 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Novatek NA51103 (NT98332) / NA51090 (NT98633) NVR boards: the device + * tree the loader hands over, the memory split the vendor kernels expect + * in it, and the Ethernet set-up. + * + * The boot chain is the board's own up to here: the mask ROM, the board's + * loader (DDR training), its BL31 (TF-A v2.2), which enters U-Boot in + * AArch64 at EL2 and stays resident at 0x1F00000 for PSCI. + */ + +#include <common.h> +#include <env.h> +#include <fdt_support.h> +#include <init.h> +#include <lmb.h> +#include <malloc.h> +#include <netdev.h> +#include <openipc.h> +#include <phy_interface.h> +#include <asm/global_data.h> +#include <asm/io.h> +#include <asm/arch/hardware.h> +#include <linux/delay.h> +#include <linux/libfdt.h> + +DECLARE_GLOBAL_DATA_PTR; + +int board_init(void) +{ + return 0; +} + +/* + * The loader leaves its device tree, which describes the board for the + * vendor kernels, in DDR and its address in SHMINFO. OpenIPC uImages carry + * no device tree, so bootm passes this one (${fdtaddr}). It lies where the + * kernel is put (0x80000 on), so it is copied away first. + */ +static void nvt_fdt_init(void) +{ + const void *fdt = nvt_loader_fdt(); + void *copy; + + if (!fdt) { + printf("FDT: no device tree from the loader\n"); + return; + } + copy = malloc(fdt_totalsize(fdt)); + if (!copy) + return; + memcpy(copy, fdt, fdt_totalsize(fdt)); + env_set_hex("fdtaddr", (ulong)copy); +} + +int misc_init_r(void) +{ + int ret = openipc_helper(); + + /* After the helper's first saveenv: the address is this boot's */ + nvt_fdt_init(); + return ret; +} + +/* + * U-Boot relocates to the top of the loader's region for it + * (/nvt_memory_cfg/uboot), as the vendor U-Boot does, not to the top of + * the DDR. + */ +ulong board_get_usable_ram_top(ulong total_size) +{ + return NVT_UBOOT_BASE + NVT_UBOOT_SIZE; +} + +/* What Linux gets of the DDR (mem=); the vendor media modules get the rest */ +static ulong nvt_osmem(void) +{ + char *end; + ulong osmem = ustrtoul(env_get("osmem") ?: "", &end, 0); + + if (!osmem || osmem > gd->ram_size) + osmem = gd->ram_size; + return osmem; +} + +/* Reserve [lo, hi) where lmb has nothing yet: it refuses overlaps */ +static void nvt_lmb_reserve_gaps(struct lmb *lmb, phys_addr_t lo, + phys_addr_t hi) +{ + struct lmb_property rsv[8]; + unsigned long i, n = min_t(unsigned long, lmb->reserved.cnt, + ARRAY_SIZE(rsv)); + + /* A copy: the reservations below insert into the sorted list */ + memcpy(rsv, &lmb->reserved.region[0], n * sizeof(rsv[0])); + for (i = 0; i < n && lo < hi; i++) { + phys_addr_t base = rsv[i].base; + phys_addr_t end = base + rsv[i].size; + + if (end <= lo || base >= hi) + continue; + if (base > lo) + lmb_reserve(lmb, lo, base - lo); + lo = max(lo, end); + } + if (lo < hi) + lmb_reserve(lmb, lo, hi - lo); +} + +/* + * The device tree and initrd go where Linux can reach them: everything + * past ${osmem} is reserved. BL31's secure megabyte is the tree's + * /reserved-memory, which bootm reserves itself. + */ +void board_lmb_reserve(struct lmb *lmb) +{ + nvt_lmb_reserve_gaps(lmb, NVT_DDR_BASE + nvt_osmem(), + NVT_DDR_BASE + gd->ram_size); +} + +/* Write a <base size> reg in the cells of the node's parent */ +static int nvt_set_reg(void *blob, int node, u64 base, u64 size) +{ + int parent = fdt_parent_offset(blob, node); + int ac = fdt_address_cells(blob, parent); + int sc = fdt_size_cells(blob, parent); + fdt32_t reg[8]; + int i; + + if (ac < 1 || sc < 1 || ac + sc > ARRAY_SIZE(reg)) + return -FDT_ERR_BADNCELLS; + /* Values in the low cells; the vendor's 4-cell addresses lead with 0 */ + for (i = 0; i < ac; i++) + reg[i] = cpu_to_fdt32(i == ac - 1 ? (u32)base : + i == ac - 2 ? (u32)(base >> 32) : 0); + for (i = 0; i < sc; i++) + reg[ac + i] = cpu_to_fdt32(i == sc - 1 ? (u32)size : + i == sc - 2 ? (u32)(size >> 32) : 0); + return fdt_setprop(blob, node, "reg", reg, (ac + sc) * sizeof(reg[0])); +} + +/* + * As the vendor U-Boot's nvt_boot: Linux gets the first ${osmem} of the + * DDR, and the media pool of the vendor modules (/hdal-memory/media) the + * rest. The tree keeps BL31 out of Linux's reach itself + * (/reserved-memory, no-map). + */ +int ft_board_setup(void *blob, struct bd_info *bd) +{ + ulong osmem = nvt_osmem(); + int node, ret; + + ret = fdt_fixup_memory(blob, NVT_DDR_BASE, osmem); + if (ret) + return ret; + + node = fdt_path_offset(blob, "/hdal-memory/media"); + if (node < 0) + return 0; + return nvt_set_reg(blob, node, NVT_DDR_BASE + osmem, + gd->ram_size - osmem); +} + +#ifdef CONFIG_NVT_EQOS +static u32 nvt_fdt_u32(const void *fdt, const char *path, const char *prop, + u32 def) +{ + const fdt32_t *val = NULL; + int node; + + if (fdt) { + node = fdt_path_offset(fdt, path); + if (node >= 0) + val = fdt_getprop(fdt, node, prop, NULL); + } + return val ? fdt32_to_cpu(*val) : def; +} + +int nvt_eqos_initialize(phy_interface_t intf); + +/* + * /top/eth pinmux in the loader's tree (the vendor's PIN_ETH_CFG): how + * the first MAC is wired + */ +#define ETH_PIN_RGMII BIT(0) /* an RGMII PHY on the first pads */ +#define ETH_PIN_RMII BIT(4) /* an RMII PHY on the first pads */ +#define ETH_PIN_REFCLK BIT(8) /* the PHY's 25 MHz from the SoC */ +#define ETH_PIN_RST BIT(9) /* the PHY's reset on E_GPIO 1 */ + +#define TOP(off) (NVT_TOP_BASE + (off)) +#define CG(off) (NVT_CG_BASE + (off)) +#define PAD(off) (NVT_PAD_BASE + (off)) +#define GLUE(off) (NVT_ETH_BASE + 0x3000 + (off)) +#define EPHY(off) (NVT_ETH_BASE + 0x3800 + (off)) + +#define GPIO_DIR(n) (NVT_GPIO_BASE + 0x30 + ((n) >> 5) * 4) +#define GPIO_SET(n) (NVT_GPIO_BASE + 0x60 + ((n) >> 5) * 4) +#define GPIO_CLR(n) (NVT_GPIO_BASE + 0x90 + ((n) >> 5) * 4) +#define E_GPIO(n) (0x60 + (n)) + +#ifdef CONFIG_NVT_NA51103 +/* A GPIO as an output, at @val */ +static void nvt_gpio_out(unsigned int n, int val) +{ + writel(BIT(n & 31), val ? GPIO_SET(n) : GPIO_CLR(n)); + setbits_le32(GPIO_DIR(n), BIT(n & 31)); +} + +/* + * The embedded PHY's power-on, as eth_na51103.c's eth_phy_poweron() and + * its PHY reset, break-link timer and LED settings + */ +static void nvt_eth_phy_on(void) +{ + setbits_le32(EPHY(0xF8), BIT(7)); + udelay(20); + clrbits_le32(EPHY(0xC8), BIT(0)); + udelay(200); + clrbits_le32(EPHY(0xC8), BIT(1)); + udelay(250); + clrbits_le32(EPHY(0x2E8), BIT(0)); + clrbits_le32(EPHY(0xCC), BIT(0)); + setbits_le32(EPHY(0xDC), BIT(0)); + clrbits_le32(EPHY(0x9C), BIT(0)); + + setbits_le32(EPHY(0x000), BIT(1)); + writel(0x53, EPHY(0x288)); + writel(0x07, EPHY(0x28C)); + writel(0xC9, EPHY(0x284)); + writel(0x40, EPHY(0x100)); + mdelay(10); + clrbits_le32(EPHY(0x000), BIT(1)); +} + +/* + * The first MAC (0x2_F044_0000) as the vendor U-Boot's eth_na51103.c sets + * it up: mac0_pinmux_en(), mac0_clk_en(), extphy0_clk_en(), for its first + * pad set (the vendor's second one is compiled out). Xiongmai's + * NBD80N36RA says 0x701: an RGMII PHY with its clock and reset from the + * SoC. + */ +static phy_interface_t nvt_eth_setup(const void *fdt) +{ + u32 pins = nvt_fdt_u32(fdt, "/top/eth", "pinmux", 0); + bool ext_clk = pins & ETH_PIN_REFCLK || + nvt_fdt_u32(fdt, "/eth0", "sp-clk", 0); + phy_interface_t intf; + + if (pins & ETH_PIN_RMII) { + intf = PHY_INTERFACE_MODE_RMII; + clrsetbits_le32(TOP(0x0C), 7 << 0, 2 << 0); + clrsetbits_le32(TOP(0x0C), 3 << 12, 1 << 12); /* MDIO */ + clrbits_le32(TOP(0xB0), 0xCE3C); /* not GPIO */ + } else if (pins & ETH_PIN_RGMII) { + intf = PHY_INTERFACE_MODE_RGMII; + /* PHY clock, Tx clock, control and data at 8 mA */ + clrsetbits_le32(PAD(0x90), 0xf, 0x1); + clrsetbits_le32(PAD(0x94), 0xffffff, 0x111111); + clrsetbits_le32(TOP(0x0C), 7 << 0, 1 << 0); + clrsetbits_le32(TOP(0x0C), 3 << 12, 1 << 12); /* MDIO */ + clrbits_le32(TOP(0xB0), 0xFFFC); /* not GPIO */ + } else { + intf = PHY_INTERFACE_MODE_MII; + setbits_le32(TOP(0x0C), BIT(31)); /* the embedded PHY */ + } + + /* PLL7, the MAC's clock, out of reset */ + setbits_le32(CG(0x00), BIT(7)); + udelay(10); + setbits_le32(CG(0x70), BIT(27)); + udelay(10); + setbits_le32(CG(0x94), BIT(16)); + udelay(10); + + if (intf == PHY_INTERFACE_MODE_RMII) { + u32 v = readl(GLUE(0x14)); + + /* The reference clock: from the PHY, or out to it */ + v &= ~(BIT(2) | BIT(4) | 3 << 30); + v |= BIT(0) | BIT(5); + if (nvt_fdt_u32(fdt, "/eth0", "ref-clk-out", 0)) + v = (v & ~BIT(0)) | BIT(4); + writel(v, GLUE(0x14)); + } else if (intf == PHY_INTERFACE_MODE_RGMII) { + /* As the vendor: [31:30] kept, Tx data from RGMII */ + writel((readl(GLUE(0x14)) & (3 << 30)) | 1 << 30 | 3 << 4, + GLUE(0x14)); + } + if (intf == PHY_INTERFACE_MODE_MII) { + clrbits_le32(GLUE(0x04), 3 << 4); /* the embedded PHY */ + nvt_eth_phy_on(); + } else { + setbits_le32(GLUE(0x04), BIT(4)); /* an external one */ + writel(0x1FF, GLUE(0x0C)); + } + + if (intf != PHY_INTERFACE_MODE_MII && ext_clk) { + /* The PHY's 25 MHz out of the SoC */ + setbits_le32(CG(0x74), BIT(7)); + setbits_le32(TOP(0x0C), BIT(8)); + clrbits_le32(TOP(0xB0), BIT(0)); + } + if (intf != PHY_INTERFACE_MODE_MII) { + /* The PHY's reset, on E_GPIO 1 */ + nvt_gpio_out(E_GPIO(1), 0); + mdelay(10); + nvt_gpio_out(E_GPIO(1), 1); + mdelay(50); + } + return intf; +} +#endif /* CONFIG_NVT_NA51103 */ + +int board_eth_init(struct bd_info *bis) +{ + const void *fdt = nvt_loader_fdt(); + + /* + * phylib binds the PHY as the vendor does, as MII: the PHY keeps + * its strapped RGMII delays, and the MAC follows the speed it + * negotiates (1000, 100 or 10 Mb/s). + */ + nvt_eth_setup(fdt); + return nvt_eqos_initialize(PHY_INTERFACE_MODE_MII); +} +#endif /* CONFIG_NVT_EQOS */ diff --git a/board/novatek/na511xx/u-boot.lds b/board/novatek/na511xx/u-boot.lds new file mode 100644 index 000000000000..e0da09100ba2 --- /dev/null +++ b/board/novatek/na511xx/u-boot.lds @@ -0,0 +1,184 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * arch/arm/cpu/armv8/u-boot.lds with the HEADINFO of the Novatek NA51103 / + * NA51090 loader at 0x300. + * + * (C) Copyright 2013 + * David Feng <fenghua@phytium.com.cn> + * + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> + */ + +#include <config.h> +#include <asm/psci.h> + +OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", "elf64-littleaarch64") +OUTPUT_ARCH(aarch64) +ENTRY(_start) +SECTIONS +{ +#ifdef CONFIG_ARMV8_SECURE_BASE + /DISCARD/ : { *(.rela._secure*) } +#endif + . = 0x00000000; + + . = ALIGN(8); + .text : + { + *(.__image_copy_start) + CPUDIR/start.o (.text*) + /* + * The Novatek loader looks for the image's HEADINFO here: + * where to start it and how long it is, with a checksum. + */ + . = 0x300; + KEEP(*(.nvt_headinfo)) + } + + /* This needs to come before *(.text*) */ + .efi_runtime : { + __efi_runtime_start = .; + *(.text.efi_runtime*) + *(.rodata.efi_runtime*) + *(.data.efi_runtime*) + __efi_runtime_stop = .; + } + + .text_rest : + { + *(.text*) + } + +#ifdef CONFIG_ARMV8_PSCI + .__secure_start : +#ifndef CONFIG_ARMV8_SECURE_BASE + ALIGN(CONSTANT(COMMONPAGESIZE)) +#endif + { + KEEP(*(.__secure_start)) + } + +#ifndef CONFIG_ARMV8_SECURE_BASE +#define CONFIG_ARMV8_SECURE_BASE +#define __ARMV8_PSCI_STACK_IN_RAM +#endif + .secure_text CONFIG_ARMV8_SECURE_BASE : + AT(ADDR(.__secure_start) + SIZEOF(.__secure_start)) + { + *(._secure.text) + . = ALIGN(8); + __secure_svc_tbl_start = .; + KEEP(*(._secure_svc_tbl_entries)) + __secure_svc_tbl_end = .; + } + + .secure_data : AT(LOADADDR(.secure_text) + SIZEOF(.secure_text)) + { + *(._secure.data) + } + + .secure_stack ALIGN(ADDR(.secure_data) + SIZEOF(.secure_data), + CONSTANT(COMMONPAGESIZE)) (NOLOAD) : +#ifdef __ARMV8_PSCI_STACK_IN_RAM + AT(ADDR(.secure_stack)) +#else + AT(LOADADDR(.secure_data) + SIZEOF(.secure_data)) +#endif + { + KEEP(*(.__secure_stack_start)) + + . = . + CONFIG_ARMV8_PSCI_NR_CPUS * ARM_PSCI_STACK_SIZE; + + . = ALIGN(CONSTANT(COMMONPAGESIZE)); + + KEEP(*(.__secure_stack_end)) + } + +#ifndef __ARMV8_PSCI_STACK_IN_RAM + . = LOADADDR(.secure_stack); +#endif + + .__secure_end : AT(ADDR(.__secure_end)) { + KEEP(*(.__secure_end)) + LONG(0x1d1071c); /* Must output something to reset LMA */ + } +#endif + + . = ALIGN(8); + .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + + . = ALIGN(8); + .data : { + *(.data*) + } + + . = ALIGN(8); + + . = .; + + . = ALIGN(8); + __u_boot_list : { + KEEP(*(SORT(__u_boot_list*))); + } + + . = ALIGN(8); + + .efi_runtime_rel : { + __efi_runtime_rel_start = .; + *(.rel*.efi_runtime) + *(.rel*.efi_runtime.*) + __efi_runtime_rel_stop = .; + } + + . = ALIGN(8); + + .image_copy_end : + { + *(.__image_copy_end) + } + + . = ALIGN(8); + + .rel_dyn_start : + { + *(.__rel_dyn_start) + } + + .rela.dyn : { + *(.rela*) + } + + .rel_dyn_end : + { + *(.__rel_dyn_end) + } + + _end = .; + + . = ALIGN(8); + + .bss_start : { + KEEP(*(.__bss_start)); + } + + .bss : { + *(.bss*) + . = ALIGN(8); + } + + .bss_end : { + KEEP(*(.__bss_end)); + } + + /DISCARD/ : { *(.dynsym) } + /DISCARD/ : { *(.dynstr*) } + /DISCARD/ : { *(.dynamic*) } + /DISCARD/ : { *(.plt*) } + /DISCARD/ : { *(.interp*) } + /DISCARD/ : { *(.gnu*) } + +#ifdef CONFIG_LINUX_KERNEL_IMAGE_HEADER +#include "linux-kernel-image-header-vars.h" +#endif +} diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig index cf661a445cb3..1b17063e4faa 100644 --- a/drivers/mmc/Kconfig +++ b/drivers/mmc/Kconfig @@ -79,7 +79,7 @@ config MMC_SPI_CRC_ON config MMC_NVT bool "Novatek NA51089 SD card (SDIO1)" - depends on ARCH_NOVATEK && MMC && !DM_MMC + depends on NVT_NA51089 && MMC && !DM_MMC help SDIO1 of the Novatek NA51089 (NT98562, NT98566), 4-bit, PIO through its FIFO. diff --git a/include/configs/novatek.h b/include/configs/novatek.h index 87c592ff8ce0..080877a9d0c0 100644 --- a/include/configs/novatek.h +++ b/include/configs/novatek.h @@ -1,20 +1,43 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /* - * Novatek NA51089: memory map, console and timer. The environment and the + * Novatek NA51089, NA51103, NA51090: memory map, console and timer. The environment and the * rest of the OpenIPC configuration come from openipc-common.h. */ #ifndef __NOVATEK_H #define __NOVATEK_H -#include <asm/arch/na51089.h> +#include <asm/arch/hardware.h> #define CONFIG_SYS_SDRAM_BASE NVT_DDR_BASE /* The DDR in the package, or on the board */ #define PHYS_SDRAM_1_SIZE CONFIG_NVT_DDR_SIZE +#ifdef CONFIG_NVT_NA511XX +/* + * Linux's share of the NVRs' DDR (mem=), as their firmware sets osmem: + * Xiongmai's NT98332 NVR 0x15e00000, the NT98633 NVR's tree 0x57600000 + */ +#ifdef CONFIG_NVT_NA51090 +#define OPENIPC_OSMEM "0x57600000" +#else +#define OPENIPC_OSMEM "0x15e00000" +#endif +/* + * Staging buffer for kernels and images: past the loader's areas and + * BL31 (0x1F00000, secure), where the vendor U-Boot stages them + */ +#define OPENIPC_BASEADDR 0x02000000 +#ifdef CONFIG_NVT_NA51103 +/* + * The board's loader and device tree stay in the first 128 KiB of the + * NOR: ${ubfile} is U-Boot's slot alone, 0x20000..0x40000 + * (openipc/nvt-nvr-image.py) + */ +#define OPENIPC_UBWRITE "sf probe 0; sf erase 0x20000 0x20000; sf write ${baseaddr} 0x20000 ${filesize}" +#endif +#elif CONFIG_NVT_DDR_SIZE >= 0x20000000 /* Linux's share of a 512 MiB part, as on the SDK's boards (mem=) */ -#if CONFIG_NVT_DDR_SIZE >= 0x20000000 #define OPENIPC_OSMEM "256M" #endif @@ -25,16 +48,22 @@ #define CONFIG_SYS_INIT_RAM_ADDR (CONFIG_SYS_TEXT_BASE - 0x100000) #define CONFIG_SYS_INIT_RAM_SIZE 0x100000 -/* Console: UART0, a 16550 with 32-bit registers, at 24 MHz */ +/* Console: UART0, a 16550 with 32-bit registers */ #define CONFIG_SYS_NS16550_SERIAL #define CONFIG_SYS_NS16550_REG_SIZE (-4) #define CONFIG_SYS_NS16550_MEM32 +#ifdef CONFIG_NVT_NA511XX +#define CONFIG_SYS_NS16550_CLK NVT_UART_HZ +#else #define CONFIG_SYS_NS16550_CLK 24000000 +#endif #define CONFIG_SYS_NS16550_COM1 NVT_UART0_BASE +#ifndef CONFIG_ARM64 /* Timer 0 of the timer block, free running at 1 MHz */ #define CONFIG_SYS_TIMER_RATE NVT_TIMER_HZ #define CONFIG_SYS_TIMER_COUNTER NVT_TIMER0_COUNT +#endif #include "openipc-common.h" diff --git a/include/configs/openipc-common.h b/include/configs/openipc-common.h index eb3e77b1a7c8..cbc4cffc4120 100644 --- a/include/configs/openipc-common.h +++ b/include/configs/openipc-common.h @@ -34,7 +34,9 @@ #endif /* Clear of the kernel at 0x8000 as it unpacks, below U-Boot */ +#ifndef OPENIPC_BASEADDR #define OPENIPC_BASEADDR 0x01000000 +#endif /* NOR layout, shared with every OpenIPC NOR camera */ #define OPENIPC_KERNADDR 0x50000 @@ -105,6 +107,10 @@ #define OPENIPC_FWUPD "fwupd=run ur; run uk\0" #define OPENIPC_LOADKERNEL "sf probe 0; sf read ${baseaddr} ${kernaddr} ${kernsize}" +/* The boot image goes at 0, unless the SoC's config says otherwise */ +#ifndef OPENIPC_UBWRITE +#define OPENIPC_UBWRITE "sf probe 0; sf erase 0x0 ${kernaddr}; sf write ${baseaddr} 0x0 ${filesize}" +#endif #define OPENIPC_ENV_MEDIUM \ "ubfile=u-boot-" CONFIG_PRODUCT_SOC "-nor.bin\0" \ "urfile=rootfs.squashfs." CONFIG_PRODUCT_SOC "\0" \ @@ -114,7 +120,7 @@ "rootsize=" __stringify(OPENIPC_ROOTSIZE) "\0" \ "mtdslite=setenv kernsize 0x200000; setenv rootaddr 0x250000; setenv rootsize 0x500000\0" \ "mtdsultimate=setenv kernsize 0x300000; setenv rootaddr 0x350000; setenv rootsize 0xa00000\0" \ - "ubwrite=sf probe 0; sf erase 0x0 ${kernaddr}; sf write ${baseaddr} 0x0 ${filesize}\0" \ + "ubwrite=" OPENIPC_UBWRITE "\0" \ "ukwrite=sf probe 0; sf erase ${kernaddr} ${kernsize}; sf write ${baseaddr} ${kernaddr} ${filesize}\0" \ "urwrite=sf probe 0; if itest ${filesize} -gt 500000; then run mtdsultimate; fi; sf erase ${rootaddr} ${rootsize}; sf write ${baseaddr} ${rootaddr} ${filesize}\0" \ "fwwrite=sf probe 0; sf erase ${kernaddr} ${filesize}; sf write ${baseaddr} ${kernaddr} ${filesize}\0" \ From 7e7aacdb08f12e391669029af64bc8707b0100f0 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:42:12 +0000 Subject: [PATCH 11/38] nvt_sflash: the NA51103 / NA51090 flash controller The NVR dies keep NA51089's flash controller at 0x2_F018_0000; what differs is around it, as the vendor U-Boot's nvt_spinor_reset() and nand_phy_config() do it per chip: - clock CG 0x74 bit 10, reset CG 0x98 bit 1, divider CG 0x48 [21:16]; - pins TOP 0x04 [1:0] (bit 2 for the second chip select), TOP 0xA0; - pad drive PAD 0x50, by clock; no clock auto-gate to hold off; - TSLCH of 3 at least on NA51103, DLL input delay 0 (NA51090: 8); - the clock is the tree's /nor clock-frequency (Xiongmai: 12 MHz); - chip select 0 is SPI_CFG bit 3 clear. Their FIFO is 128 bytes: a PIO read now waits for the bytes it takes or a full FIFO, not for exactly 64 bytes, which a 128-byte FIFO holding the tail of a longer read would never show (the count field also tops out at 31 words). Same waits as before on NA51089's 64-byte FIFO. Verified under qemu-hisilicon nt98332, from the board's loader and BL31: JEDEC ef4018 16 MiB; sf erase 256 KiB, sf write from 0x3000001 to 0x800003 0x2fffd bytes and sf read back to 0x4000002, crc32 equal (c28efca1), the flash file holding the data and 0xff around it; saveenv, reset, env loaded. nt98562 and nt98566 still pass the two-boot smoke test. --- drivers/mtd/spi/Kconfig | 6 +- drivers/mtd/spi/nvt_sflash.c | 129 +++++++++++++++++++++++++++++++---- 2 files changed, 119 insertions(+), 16 deletions(-) diff --git a/drivers/mtd/spi/Kconfig b/drivers/mtd/spi/Kconfig index b59a15f9eae3..f446f0b8a987 100644 --- a/drivers/mtd/spi/Kconfig +++ b/drivers/mtd/spi/Kconfig @@ -37,11 +37,11 @@ config SPI_FLASH If unsure, say N config NVT_SFLASH - bool "Novatek NA51089 SPI NOR" + bool "Novatek NA51089 / NA51103 / NA51090 SPI NOR" depends on ARCH_NOVATEK && !SPI_FLASH && !DM_SPI_FLASH help - The SPI NOR the Novatek NA51089 boots from, on its flash - controller. The driver provides spi_flash_probe() directly, + The SPI NOR the Novatek NA51089 and NA51103 boot from, on their + flash controller (NA51090's too). The driver provides spi_flash_probe() directly, without the SPI and spi-nor layers. config SF_DEFAULT_BUS diff --git a/drivers/mtd/spi/nvt_sflash.c b/drivers/mtd/spi/nvt_sflash.c index c71617b0743d..301e61765914 100644 --- a/drivers/mtd/spi/nvt_sflash.c +++ b/drivers/mtd/spi/nvt_sflash.c @@ -1,6 +1,8 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * SPI NOR behind the flash controller of the Novatek NA51089. + * SPI NOR behind the flash controller of the Novatek NA51089, NA51103 and + * NA51090 (the same controller; only its clock, reset, pins and PHY + * timing differ, and the NVR dies' FIFO is 128 bytes, not 64). * * The controller runs one operation at a time: software loads COMMAND, * ROWADDR (sent MSB first, as many bytes as MODULE0 says) and DATALEN, @@ -10,8 +12,8 @@ * command with an address, a block erase that polls the status itself, * an automatic status poll, and N bytes in or out. Reads and programs * hold the chip selected by hand across the command-and-address operation - * and the data one. Data goes through a 64-byte FIFO, a word at a time, - * or by DMA. + * and the data one. Data goes through the FIFO, a word at a time, or by + * DMA. * * After the vendor U-Boot 2019.04 (drivers/mtd/nvt_flash_spi/ and * drivers/mtd/spiflash/spinor.c), single lane, as it reads at 48 MHz. @@ -28,9 +30,10 @@ #include <asm/cache.h> #include <asm/io.h> #include <asm/unaligned.h> -#include <asm/arch/na51089.h> +#include <asm/arch/hardware.h> #include <linux/delay.h> #include <linux/mtd/mtd.h> +#include <linux/libfdt.h> #include <linux/sizes.h> #define FL_MODULE0 (NVT_FLASH_BASE + 0x00) @@ -86,6 +89,7 @@ #define FIFO_CNT_MASK 0x1f /* words */ #define FIFO_EMPTY BIT(8) #define FIFO_FULL BIT(9) +/* What a PIO transfer moves per FIFO check: the smaller FIFO, NA51089's */ #define FIFO_BYTES 64 /* Operations */ @@ -98,17 +102,30 @@ #define OP_WRITE_N 0x19 #define OP_AUTO_STATUS 0x1D +#define NVT_FLASH_SRC_HZ 480000000 +#define NVT_TOP_FLASH_EN (NVT_TOP_BASE + 0x04) +#define NVT_TOP_GPIO_C (NVT_TOP_BASE + 0xA0) /* pads as GPIO */ +#ifdef CONFIG_NVT_NA511XX +#define NVT_CG_FLASH_CLKEN (NVT_CG_BASE + 0x74) +#define CG_FLASH_CLKEN BIT(10) +#define NVT_CG_FLASH_RSTN (NVT_CG_BASE + 0x98) +#define CG_FLASH_RSTN BIT(1) +#define NVT_CG_FLASH_DIV (NVT_CG_BASE + 0x48) /* [21:16] */ +#define CG_FLASH_DIV_SHIFT 16 +#define NVT_PAD_FLASH_DRV (NVT_PAD_BASE + 0x50) +/* The boards' trees ask for 12 MHz (/nor clock-frequency), as the vendor */ +#define SF_HZ 12000000 +#else /* The clock gate that would stop the controller with the chip selected */ #define NVT_CG_AUTOGATE (NVT_CG_BASE + 0xB0) #define CG_AUTOGATE_FLASH BIT(19) #define NVT_CG_FLASH_DIV (NVT_CG_BASE + 0x40) /* [17:12] */ -#define NVT_FLASH_SRC_HZ 480000000 -#define NVT_TOP_FLASH_EN (NVT_TOP_BASE + 0x04) -#define NVT_TOP_GPIO_C (NVT_TOP_BASE + 0xA0) /* pads as GPIO */ +#define CG_FLASH_DIV_SHIFT 12 #define NVT_TOP_SRAM_SD (NVT_TOP_BASE + 0x1000) /* SRAM shut down */ #define NVT_PAD_FLASH_DRV (NVT_PAD_BASE + 0x40) #define SF_HZ 48000000 +#endif #define SZ_PAGE 256 #define SZ_SECTOR SZ_64K /* The vendor U-Boot gives every operation this long */ @@ -198,6 +215,26 @@ static int fl_wait_fifo(u32 bits, u32 val) return 0; } +/* + * Wait for at least @n bytes in the FIFO. A full one counts: the count + * field holds 31 words, and the NVR dies' FIFO takes 32. + */ +static int fl_wait_fifo_in(unsigned int n) +{ + ulong start = get_timer(0); + u32 sts; + + for (;;) { + sts = readl(FL_FIFO_STS); + if (sts & FIFO_FULL || (sts & FIFO_CNT_MASK) >= DIV_ROUND_UP(n, 4)) + return 0; + if (get_timer(start) > OP_TIMEOUT_MS) { + printf("SF: the flash FIFO timed out\n"); + return -ETIMEDOUT; + } + } +} + /* The words of a PIO read, as the FIFO fills */ static int fl_pio_in(u8 *buf, unsigned int len) { @@ -207,10 +244,7 @@ static int fl_pio_in(u8 *buf, unsigned int len) unsigned int n = min_t(unsigned int, len, FIFO_BYTES); unsigned int i; - if (n == FIFO_BYTES) - ret = fl_wait_fifo(FIFO_FULL, FIFO_FULL); - else - ret = fl_wait_fifo(FIFO_CNT_MASK, DIV_ROUND_UP(n, 4)); + ret = fl_wait_fifo_in(n); if (ret) return ret; for (i = 0; i < n; i += 4) { @@ -264,14 +298,18 @@ static int fl_pio_out(const u8 *buf, unsigned int len) static void fl_cs_manual(bool on) { if (on) { +#ifdef NVT_CG_AUTOGATE clrbits_le32(NVT_CG_AUTOGATE, CG_AUTOGATE_FLASH); +#endif setbits_le32(FL_SPI_CFG, CFG_CS_HIGH); setbits_le32(FL_SPI_CFG, CFG_CS_MANUAL); clrbits_le32(FL_SPI_CFG, CFG_CS_HIGH); } else { setbits_le32(FL_SPI_CFG, CFG_CS_HIGH); clrbits_le32(FL_SPI_CFG, CFG_CS_MANUAL); +#ifdef NVT_CG_AUTOGATE setbits_le32(NVT_CG_AUTOGATE, CG_AUTOGATE_FLASH); +#endif } } @@ -506,6 +544,70 @@ static int nvt_sf_erase(struct mtd_info *mtd, struct erase_info *instr) return 0; } +#ifdef CONFIG_NVT_NA511XX +/* A u32 property of the loader's device tree */ +static u32 fl_fdt_u32(const char *path, const char *prop, u32 def) +{ + const void *fdt = nvt_loader_fdt(); + const fdt32_t *val = NULL; + int node; + + if (fdt) { + node = fdt_path_offset(fdt, path); + if (node >= 0) + val = fdt_getprop(fdt, node, prop, NULL); + } + return val ? fdt32_to_cpu(*val) : def; +} + +/* + * Clock, reset, pins, timing and PHY, as the vendor's nvt_spinor_reset() + * and nand_phy_config() do on the NVR dies, at the clock the board's + * tree asks for + */ +static void fl_hw_init(void) +{ + u32 hz = fl_fdt_u32("/nor", "clock-frequency", SF_HZ); + u32 pins = 3, drv = 0, time2 = 0x5f51; + + if (hz < NVT_FLASH_SRC_HZ / 64) + hz = NVT_FLASH_SRC_HZ / 64; + if (IS_ENABLED(CONFIG_NVT_NA51090) && hz > 80000000) + hz = 80000000; + setbits_le32(NVT_CG_FLASH_CLKEN, CG_FLASH_CLKEN); + setbits_le32(NVT_CG_FLASH_RSTN, CG_FLASH_RSTN); + writel(0x06002222, FL_TIME0); + writel(0x7f0f, FL_TIME1); + /* The pins, and the second chip select's if the tree says so */ + if (fl_fdt_u32("/top/spi", "pinmux", 0) & 0x20) + pins |= BIT(2); + setbits_le32(NVT_TOP_FLASH_EN, pins); + clrbits_le32(NVT_TOP_GPIO_C, 0x3f | (pins & BIT(2) ? BIT(6) : 0)); + clrsetbits_le32(NVT_CG_FLASH_DIV, 0x3f << CG_FLASH_DIV_SHIFT, + (NVT_FLASH_SRC_HZ / hz - 1) << CG_FLASH_DIV_SHIFT); + if (IS_ENABLED(CONFIG_NVT_NA51090)) + drv = hz <= 24000000 ? 0x0111101 : + hz <= 60000000 ? 0x0222202 : 0x0222203; + else if (hz > 48000000) + drv = 0x0111101; + clrsetbits_le32(NVT_PAD_FLASH_DRV, 0xfffffff, drv); + setbits_le32(FL_MODULE0, MOD_NOR); + /* NA51103 wants a CS low to clock time (TSLCH) of 3 at least */ + if (IS_ENABLED(CONFIG_NVT_NA51103)) + time2 = (time2 & ~0xf) | 3; + writel(time2, FL_TIME2); + + clrsetbits_le32(FL_DLL1, DLL1_SRC_CLK_SEL, + DLL1_SAMPCLK_INV | DLL1_PAD_CLK_SEL); + clrsetbits_le32(FL_DLL2, DLL2_INDLY_MASK, + DLL2_INDLY(IS_ENABLED(CONFIG_NVT_NA51090) ? 8 : 0)); + setbits_le32(FL_DLL1, DLL1_SW_RESET); + while (readl(FL_DLL1) & DLL1_SW_RESET) + ; + /* Chip select 0 (SPI_CFG bit 3 selects the second) */ + clrsetbits_le32(FL_SPI_CFG, CFG_BUS_WIDTH_MASK | BIT(3), CFG_PULL_WPHLD); +} +#else /* Clock, reset, pins, timing and PHY, as the vendor's nvt_spinor_reset() */ static void fl_hw_init(void) { @@ -515,8 +617,8 @@ static void fl_hw_init(void) writel(0x7f0f, FL_TIME1); setbits_le32(NVT_TOP_FLASH_EN, BIT(13)); clrbits_le32(NVT_TOP_GPIO_C, 0x50f); - clrsetbits_le32(NVT_CG_FLASH_DIV, 0x3f << 12, - (NVT_FLASH_SRC_HZ / SF_HZ - 1) << 12); + clrsetbits_le32(NVT_CG_FLASH_DIV, 0x3f << CG_FLASH_DIV_SHIFT, + (NVT_FLASH_SRC_HZ / SF_HZ - 1) << CG_FLASH_DIV_SHIFT); clrbits_le32(NVT_TOP_SRAM_SD, BIT(17)); clrsetbits_le32(NVT_PAD_FLASH_DRV, 0x3f00ff, 0x150055); setbits_le32(FL_MODULE0, MOD_NOR); @@ -530,6 +632,7 @@ static void fl_hw_init(void) ; clrsetbits_le32(FL_SPI_CFG, CFG_BUS_WIDTH_MASK, CFG_PULL_WPHLD); } +#endif static struct spi_flash nvt_flash; static int nvt_announced; From b43cc9fa00b819d1e30d4d76db927f9340fcaf90 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:42:12 +0000 Subject: [PATCH 12/38] net: nvt_eqos on the NVR dies The NA51103 / NA51090 MACs are the same Synopsys EQoS core with Novatek's glue at +0x3000. Its CSR clock is the 150 MHz APB there, so the MDC divider is fixed (CR 1, /62, as eth_na51103.c's mdc_div), not read from NA51089's CG. Gigabit needs nothing more: the MAC configuration already leaves PS/FES clear at 1000 Mb/s. Verified under qemu-hisilicon nt98332, from the board's loader and BL31, user networking: ping 192.168.1.107, dhcp (bound 192.168.1.15), tftpboot of a 3 MB file with crc32 equal to the host's (e7287026), and of a 2.8 MB kernel. --- drivers/net/Kconfig | 2 +- drivers/net/nvt_eqos.c | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 03687f02d12f..ac047ce13f43 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -226,7 +226,7 @@ config DWC_ETH_QOS_TEGRA186 configuration used in NVIDIA's Tegra186 chip. config NVT_EQOS - bool "Novatek NA51089 Ethernet" + bool "Novatek NA51089 / NA51103 / NA51090 Ethernet" depends on ARCH_NOVATEK && !DM_ETH select PHYLIB help diff --git a/drivers/net/nvt_eqos.c b/drivers/net/nvt_eqos.c index f0d5fcfefb14..680654a5f8d7 100644 --- a/drivers/net/nvt_eqos.c +++ b/drivers/net/nvt_eqos.c @@ -1,13 +1,14 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * Ethernet MAC of the Novatek NA51089: a Synopsys DWC Ethernet QoS - * (GMAC 4.x) core, run polled with one Tx and one Rx descriptor ring. + * Ethernet MAC of the Novatek NA51089, NA51103 and NA51090: a Synopsys DWC + * Ethernet QoS (GMAC 4.x) core, run polled with one Tx and one Rx + * descriptor ring. * * The block has the MAC at 0x0000, the MTL (the FIFOs) at 0x0D00 and the * DMA, channel 0 from 0x1100, at 0x1000; Novatek's glue (interface and * clock selection, LEDs) at 0x3000 and the embedded PHY's analog part at * 0x3800. Board code sets those last two up before this driver runs - * (board/novatek/na51089), and the order matters: the DMA software reset + * (board/novatek/na51089, na511xx), and the order matters: the DMA software reset * only completes once the PHY feeds the MAC its Rx clock. * * Descriptors are four words, OWN in DES3 bit 31, each padded to a cache @@ -30,7 +31,7 @@ #include <phy.h> #include <asm/cache.h> #include <asm/io.h> -#include <asm/arch/na51089.h> +#include <asm/arch/hardware.h> #include <linux/delay.h> #define EQ(off) (NVT_ETH_BASE + (off)) @@ -124,7 +125,7 @@ struct eqos_desc { /* What the CSR clock (CG+0x10 [9:8]) is, as an MDC divider (CR) */ #define NVT_CG_SYSCLK (NVT_CG_BASE + 0x10) -static const u8 mdio_cr[4] = { +static const u8 __maybe_unused mdio_cr[4] = { 3, /* 48 MHz: CR 35-60 MHz, /26 */ 0, /* 60 MHz: CR 60-100 MHz, /42 */ 0, /* 80 MHz */ @@ -360,7 +361,11 @@ int nvt_eqos_initialize(phy_interface_t intf) struct mii_dev *mii; eqos.intf = intf; +#ifdef NVT_ETH_MDIO_CR + eqos.cr = NVT_ETH_MDIO_CR; +#else eqos.cr = mdio_cr[(readl(NVT_CG_SYSCLK) >> 8) & 3]; +#endif mii = mdio_alloc(); if (!mii) From 1482915f56cb8fbf96cf37a3484527ec317cf143 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:42:26 +0000 Subject: [PATCH 13/38] openipc: build the NT98332 U-Boot slot The board's loader (DDR training, BL31) and device tree are the board's and stay: the image is U-Boot's slot alone, output/u-boot-nt98332-nor.bin, 128 KiB for flash 0x20000..0x40000 (${ubwrite} writes it there). Xiongmai's FW98332A reads its tree's partition_boot as a bare LZMA stream ("compress header 0x5D", 16 MiB dictionary, end marker) and unpacks it to 0x1E000000; the HEADINFO is filled in as for NA51089 (length, checksum). The OpenIPC NOR layout follows unchanged: env 0x40000, kernel 0x50000, rootfs 0x250000. - openipc/nvt-nvr-image.py: the slot (and, given a dump of the board's flash, a copy of it with the slot written, for a programmer). - openipc/nt98332_config: text base 0x1E000000, caches on, load and staging address 0x2000000, the boot counter at 0x1E20000 (the other families' 0x1F20000 is BL31's secure megabyte here), no SD. - openipc/nt98332.dts: what U-Boot reads of the board's tree, plain, for the emulator's stand-in loader; build.sh puts it with the slot into output/u-boot-nt98332-qemu.bin for CI's smoke test. - build.sh: nt98332 with CROSS_COMPILE_A64 (aarch64-linux-gnu-). U-Boot is 230 KiB, 90 KiB packed. Verified: the two-boot smoke test passes on qemu-hisilicon nt98332 -smp 2 (stand-in loader) with u-boot-nt98332-qemu.bin; the slot written into the Xiongmai dump boots on nt98332 -smp 3 through the board's own FW98332A and BL31. nt98562/nt98566/nt98560/nt98561 still build. --- build.sh | 40 ++++++++- openipc/nt98332.dts | 172 +++++++++++++++++++++++++++++++++++++++ openipc/nt98332_config | 16 ++++ openipc/nvt-nvr-image.py | 125 ++++++++++++++++++++++++++++ 4 files changed, 352 insertions(+), 1 deletion(-) create mode 100644 openipc/nt98332.dts create mode 100644 openipc/nt98332_config create mode 100644 openipc/nvt-nvr-image.py diff --git a/build.sh b/build.sh index e4b0b63f76a4..f9012ac81b50 100755 --- a/build.sh +++ b/build.sh @@ -9,6 +9,8 @@ cd "$(dirname "$0")" export ARCH=arm export CROSS_COMPILE=${CROSS_COMPILE:-arm-linux-gnueabi-} +# The NVR dies' U-Boot is an AArch64 one (Debian/Ubuntu: gcc-aarch64-linux-gnu) +CROSS_COMPILE_A64=${CROSS_COMPILE_A64:-aarch64-linux-gnu-} # The loader is bare-metal code linked against Novatek's libraries: # a bare-metal toolchain if there is one, else U-Boot's if [ -z "${LOADER_CROSS_COMPILE}" ]; then @@ -81,6 +83,40 @@ build_nvt() { "${builddir}/u-boot.bin" "${text}" "output/u-boot-${soc}-nor.bin" } +# Novatek NVR dies, AArch64: the board's loader and BL31 stay, the image +# is U-Boot's slot alone (openipc/nvt-nvr-image.py) +build_nvr() { + soc=$1 + builddir=${BOOT_SRCDIR}/output/build-${soc}-nor + make_opts="-C ${BOOT_SRCDIR} O=${builddir} -j$(nproc) CROSS_COMPILE=${CROSS_COMPILE_A64}" + + rm -rf "${builddir}" + mkconfig "${builddir}" openipc/openipc_config openipc/${soc}_config && \ + make ${make_opts} olddefconfig </dev/null >/dev/null && \ + make ${make_opts} </dev/null || return 1 + + text=$(sed -n 's/^CONFIG_SYS_TEXT_BASE=//p' "${builddir}/.config") + python3 openipc/nvt-nvr-image.py "${soc}" "${builddir}/u-boot.bin" \ + "${text}" "output/u-boot-${soc}-nor.bin" || return 1 + + # For the emulator's stand-in loader (CI): no loader, a plain tree at + # 0x10000 and the slot, as a 256 KiB boot image + [ -f "openipc/${soc}.dts" ] || return 0 + make ${make_opts} scripts_dtc </dev/null >/dev/null && + "${builddir}/scripts/dtc/dtc" -q -I dts -O dtb \ + -o "${builddir}/${soc}.dtb" "openipc/${soc}.dts" || return 1 + python3 - "${builddir}/${soc}.dtb" "output/u-boot-${soc}-nor.bin" \ + "output/u-boot-${soc}-qemu.bin" <<'EOF' +import sys +img = bytearray(b'\xff' * 0x40000) +dtb = open(sys.argv[1], 'rb').read() +slot = open(sys.argv[2], 'rb').read() +img[0x10000:0x10000 + len(dtb)] = dtb +img[0x20000:0x20000 + len(slot)] = slot +open(sys.argv[3], 'wb').write(img) +EOF +} + build_soc() { soc=$1 case "${soc}" in @@ -101,13 +137,15 @@ build_soc() { build_nvt "${soc}" 562 666 ;; nt98566) build_nvt "${soc}" 566 933 ;; + nt98332) + build_nvr "${soc}" ;; *) echo "unsupported SoC: ${soc}" >&2 return 1 ;; esac } -ALL_SOCS="nt98560 nt98561 nt98562 nt98566" +ALL_SOCS="nt98560 nt98561 nt98562 nt98566 nt98332" SOCS="$@" [ -z "${SOCS}" ] && SOCS="${ALL_SOCS}" diff --git a/openipc/nt98332.dts b/openipc/nt98332.dts new file mode 100644 index 000000000000..8f7616faed46 --- /dev/null +++ b/openipc/nt98332.dts @@ -0,0 +1,172 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * NT98332 (NA51103) NVR: the part of the board's device tree U-Boot + * reads, after Xiongmai's NBD80N36RA-KL (FW98332A). Not flashed to boards: + * there the board's own tree stays at 0x10000, behind its loader's + * "XMFDT32G" tag, LZMA-packed, and the vendor kernels need all of it. + * This one is for the emulator's stand-in loader (qemu-hisilicon + * nt98332 with -smp 2), which reads a plain tree at 0x10000 and unpacks + * U-Boot from partition_boot: CI's smoke test. + */ + +/dts-v1/; + +/ { + model = "Novatek NA51103"; + compatible = "novatek,na51103"; + #address-cells = <2>; + #size-cells = <2>; + + cpus { + #address-cells = <2>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a53", "arm,armv8"; + reg = <0x0 0x0>; + enable-method = "psci"; + }; + + cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a53", "arm,armv8"; + reg = <0x0 0x1>; + enable-method = "psci"; + }; + }; + + psci { + compatible = "arm,psci-1.0"; + method = "smc"; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x0 0x0 0x15e00000>; + }; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + atf@0x01F00000 { + reg = <0x0 0x1f00000 0x0 0x100000>; + no-map; + }; + }; + + hdal-memory { + #address-cells = <4>; + #size-cells = <2>; + + media { + reg = <0x0 0x0 0x0 0x15e00000 0x0 0x2a200000>; + }; + }; + + nvt_memory_cfg { + #address-cells = <1>; + #size-cells = <1>; + + dram { + reg = <0x00000000 0x40000000>; + }; + + fdt { + reg = <0x00100000 0x00100000>; + }; + + loader { + reg = <0x00200000 0x00800000>; + }; + + shmem { + reg = <0x00a00000 0x00100000>; + }; + + atf { + reg = <0x01f00000 0x00100000>; + }; + + linuxtmp { + reg = <0x02000000 0x1c000000>; + }; + + uboot { + reg = <0x1e000000 0x02000000>; + }; + }; + + uart@2,f0280000 { + compatible = "ns16550a"; + reg = <0x2 0xf0280000 0x0 0x1000>; + reg-shift = <2>; + reg-io-width = <4>; + clock-frequency = <48000000>; + }; + + top@2,f0010000 { + compatible = "nvt,nvt_top"; + reg = <0x2 0xf0010000 0x0 0x2000>; + + spi { + pinmux = <0x11>; + }; + + eth { + pinmux = <0x701>; + }; + }; + + eth0@2,f0440000 { + compatible = "nvt,synopsys_eth"; + reg = <0x2 0xf0440000 0x0 0x10000>; + sp-clk = <1>; + ref-clk-out = <1>; + }; + + nor@2,f0180000 { + #address-cells = <2>; + #size-cells = <2>; + compatible = "nvt,nvt_spinor"; + reg = <0x2 0xf0180000 0x0 0x1000>; + clock-frequency = <12000000>; + nvt-devname = "spi_nor.0"; + + /* OpenIPC's NOR layout; the loader reads only these two */ + partition_loader { + label = "loader"; + reg = <0x0 0x0 0x0 0x20000>; + }; + + partition_boot { + label = "boot"; + reg = <0x0 0x20000 0x0 0x20000>; + }; + + nvtpack { + ver = "NVTPACK_FW_INI_16072017"; + method = <1>; + + index { + id0 { + partition_name = "loader"; + source_file = ""; + }; + + id1 { + partition_name = "boot"; + source_file = "u-boot.bin"; + }; + }; + }; + }; + + nvt_info { + BIN_NAME = "FW98332A"; + EMBMEM = "EMBMEM_SPI_NOR"; + NVT_LINUX_SMP = "NVT_LINUX_SMP_ON"; + }; +}; diff --git a/openipc/nt98332_config b/openipc/nt98332_config new file mode 100644 index 000000000000..4ce9f0f57f60 --- /dev/null +++ b/openipc/nt98332_config @@ -0,0 +1,16 @@ +CONFIG_TARGET_NT98332=y +CONFIG_PRODUCT_SOC="nt98332" +# Where the loader's device tree (/nvt_memory_cfg/uboot) has U-Boot +# unpacked and BL31 starts it: the HEADINFO's CodeEntry says the same +CONFIG_SYS_TEXT_BASE=0x1E000000 +# AArch64 runs with the MMU and caches on (arch/arm/mach-novatek/soc.c) +# CONFIG_SYS_DCACHE_OFF is not set +# Past BL31 (0x1F00000, secure) and the loader's areas, as the vendor +CONFIG_SYS_LOAD_ADDR=0x02000000 +# DRAM + 0x1e20000: the other families' 0x1f20000 is in BL31 here +CONFIG_SYS_BOOTCOUNT_ADDR=0x01E20000 +# No SD slot on the NVRs (and no SDIO driver for these dies) +# CONFIG_MMC is not set +# CONFIG_CMD_MMC is not set +# CONFIG_CMD_FAT is not set +# CONFIG_FS_FAT is not set diff --git a/openipc/nvt-nvr-image.py b/openipc/nvt-nvr-image.py new file mode 100644 index 000000000000..beae714381ba --- /dev/null +++ b/openipc/nvt-nvr-image.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: GPL-2.0+ +# +# Build the U-Boot slot image of a Novatek NVR die, NA51103 (NT98332) or +# NA51090 (NT98633). The board's own loader (DDR training, BL31) and its +# device tree stay in the flash: only the U-Boot slot is OpenIPC's. +# +# nt98332 SPI NOR, Xiongmai's FW98332A loader: the device tree's +# partition_boot (0x20000) holds U-Boot as a bare LZMA stream +# ("compress header 0x5D"); OpenIPC's environment follows at +# 0x40000, so the slot is 128 KiB. +# nt98633 SPI NAND, the SDK's loader: partition_uboot (0xC0000, +# 0xE0000 long) holds a BCL1 LZMA container. +# +# The loader unpacks it to /nvt_memory_cfg/uboot and BL31 enters it at +# the HEADINFO's CodeEntry, in AArch64 at EL2. +# +# usage: nvt-nvr-image.py SOC U-BOOT.BIN TEXT_BASE OUTPUT [FLASH] +# +# With FLASH (a dump of the board's flash, NOR as read, or NAND data +# without OOB) the slot is also written into a copy of it, OUTPUT.flash, +# for an external programmer. + +import lzma +import struct +import sys + +HEADINFO = 0x300 +HI_CODE_ENTRY = HEADINFO + 0x00 +HI_BIN_LENGTH = HEADINFO + 0x68 +HI_CHECKSUM = HEADINFO + 0x6C + +BCL1_LZMA = 11 + +SOCS = { + # slot offset, slot size, container + 'nt98332': (0x20000, 0x20000, 'lzma'), + 'nt98633': (0xC0000, 0xE0000, 'bcl1'), +} + + +def nvt_sum(data): + """The Novatek checksum: sum of each 16-bit word plus its index""" + words = struct.unpack('<%dH' % (len(data) // 2), data[:len(data) & ~1]) + return (sum(words) + sum(range(len(words)))) & 0xffff + + +def headinfo(uboot, text_base): + """Fill in the length and the checksum, as for the NA51089 loader""" + img = bytearray(uboot) + if len(img) & 1: + img += b'\0' + entry = struct.unpack_from('<I', img, HI_CODE_ENTRY)[0] + if entry != text_base: + sys.exit('HEADINFO CodeEntry %#x is not the link address %#x' + % (entry, text_base)) + struct.pack_into('<II', img, HI_BIN_LENGTH, len(img), 0) + struct.pack_into('<I', img, HI_CHECKSUM, -nvt_sum(img) & 0xffff) + assert nvt_sum(img) == 0 + return bytes(img) + + +def lzma_alone(data, dict_size): + filters = [{'id': lzma.FILTER_LZMA1, 'preset': 9 | lzma.PRESET_EXTREME, + 'dict_size': dict_size, 'lc': 3, 'lp': 0, 'pb': 2}] + return bytearray(lzma.compress(data, format=lzma.FORMAT_ALONE, + filters=filters)) + + +def bare_lzma(data): + """ + What Xiongmai's vendor U-Boot slot holds: an .lzma stream with a + 16 MiB dictionary and an unknown size (an end marker), as LZMA Utils + write it. + """ + return bytes(lzma_alone(data, 1 << 24)) + + +def bcl1_lzma(data): + """ + BCL1 container, as the SDK's bfc writes it: the FourCC, the checksum + (u16 LE, over the whole container), the algorithm (u16 BE), the + unpacked and packed sizes (u32 BE), then an .lzma stream whose 64-bit + size field holds the 32-bit length twice (the board's own U-Boot is + packed that way). + """ + packed = lzma_alone(data, 1 << 18) + struct.pack_into('<II', packed, 5, len(data), len(data)) + bcl = bytearray(b'BCL1' + struct.pack('>HHII', 0, BCL1_LZMA, + len(data), len(packed))) + bcl += packed + struct.pack_into('<H', bcl, 4, -nvt_sum(bcl) & 0xffff) + return bytes(bcl) + + +def main(): + if len(sys.argv) not in (5, 6) or sys.argv[1] not in SOCS: + sys.exit('usage: nvt-nvr-image.py {%s} U-BOOT.BIN TEXT_BASE OUTPUT ' + '[FLASH]' % ','.join(SOCS)) + soc = sys.argv[1] + offset, size, kind = SOCS[soc] + uboot = open(sys.argv[2], 'rb').read() + text_base = int(sys.argv[3], 0) + + img = headinfo(uboot, text_base) + blob = bare_lzma(img) if kind == 'lzma' else bcl1_lzma(img) + if len(blob) > size: + sys.exit('U-Boot is %d bytes packed, %d too many for its %d KiB slot' + % (len(blob), len(blob) - size, size >> 10)) + slot = blob + b'\xff' * (size - len(blob)) + open(sys.argv[4], 'wb').write(slot) + print('%s: U-Boot %d packed (%d), for flash %#x..%#x' % + (sys.argv[4], len(blob), len(uboot), offset, offset + size)) + + if len(sys.argv) == 6: + flash = bytearray(open(sys.argv[5], 'rb').read()) + if len(flash) < offset + size: + sys.exit('%s is too small' % sys.argv[5]) + flash[offset:offset + size] = slot + open(sys.argv[4] + '.flash', 'wb').write(flash) + print('%s.flash: %s with this U-Boot' % (sys.argv[4], sys.argv[5])) + + +if __name__ == '__main__': + main() From 1efac0888147772f15c2f5de0275e9950baa8647 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:48:14 +0000 Subject: [PATCH 14/38] net: nvt_eqos: one instance per MAC, at the base the board gives The NA51068 (NT98321, NT98323) has two of NA51089's Ethernet QoS MACs, at 0xFCC00000 and 0xFCD00000, with the same glue and embedded PHY at +0x3000 / +0x3800. The driver's state, rings and buffers move into a per-MAC struct (two at most, in .bss as before), the registers are taken from its base, and nvt_eqos_register() registers a MAC by name, base, PHY interface and MDC divider. nvt_eqos_initialize() stays NA51089's entry point, its one MAC "eqos" at NVT_ETH_BASE with the divider from the CSR clock, so board/novatek/na51089 is unchanged. Verified: nt98562 and nt98566 build; under qemu-hisilicon both MACs of the nt98323 machine (-nic user twice) take a DHCP lease, answer ping and pass a 3 MB tftpboot with the host's CRC32. --- drivers/net/Kconfig | 8 ++- drivers/net/nvt_eqos.c | 151 ++++++++++++++++++++++++++--------------- 2 files changed, 100 insertions(+), 59 deletions(-) diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 03687f02d12f..457ef9e902ed 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -226,13 +226,15 @@ config DWC_ETH_QOS_TEGRA186 configuration used in NVIDIA's Tegra186 chip. config NVT_EQOS - bool "Novatek NA51089 Ethernet" + bool "Novatek NA51089 / NA51068 Ethernet" depends on ARCH_NOVATEK && !DM_ETH select PHYLIB help The Synopsys DWC Ethernet QoS MAC of the Novatek NA51089 - (NT98562, NT98566), non-DM. Board code brings up its clocks, pins - and the embedded PHY, and calls nvt_eqos_initialize(). + (NT98562, NT98566), and the two of the NA51068 (NT98321, + NT98323), non-DM. Board code brings up their clocks, pins and + the embedded PHY, and calls nvt_eqos_initialize() (NA51089) or + nvt_eqos_register(). config E1000 bool "Intel PRO/1000 Gigabit Ethernet support" diff --git a/drivers/net/nvt_eqos.c b/drivers/net/nvt_eqos.c index f0d5fcfefb14..48aa36aa6498 100644 --- a/drivers/net/nvt_eqos.c +++ b/drivers/net/nvt_eqos.c @@ -1,14 +1,15 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * Ethernet MAC of the Novatek NA51089: a Synopsys DWC Ethernet QoS - * (GMAC 4.x) core, run polled with one Tx and one Rx descriptor ring. + * Ethernet MACs of the Novatek NA51089 (one) and NA51068 (two, at + * 0xFCC00000 and 0xFCD00000): a Synopsys DWC Ethernet QoS (GMAC 4.x) + * core, run polled with one Tx and one Rx descriptor ring each. * * The block has the MAC at 0x0000, the MTL (the FIFOs) at 0x0D00 and the * DMA, channel 0 from 0x1100, at 0x1000; Novatek's glue (interface and * clock selection, LEDs) at 0x3000 and the embedded PHY's analog part at * 0x3800. Board code sets those last two up before this driver runs - * (board/novatek/na51089), and the order matters: the DMA software reset - * only completes once the PHY feeds the MAC its Rx clock. + * (board/novatek/na51089, na51068), and the order matters: the DMA + * software reset only completes once the PHY feeds the MAC its Rx clock. * * Descriptors are four words, OWN in DES3 bit 31, each padded to a cache * line; the DMA skips the padding (DSL). The DMA works through a ring up @@ -30,10 +31,12 @@ #include <phy.h> #include <asm/cache.h> #include <asm/io.h> -#include <asm/arch/na51089.h> #include <linux/delay.h> +#ifdef CONFIG_NVT_NA51089 +#include <asm/arch/na51089.h> +#endif -#define EQ(off) (NVT_ETH_BASE + (off)) +#define EQ(off) (eqos->base + (off)) /* MAC */ #define MAC_CFG EQ(0x000) @@ -122,28 +125,24 @@ struct eqos_desc { /* A frame with a VLAN tag fits, a cache-line multiple */ #define PKT_SIZE ALIGN(1568, ARCH_DMA_MINALIGN) -/* What the CSR clock (CG+0x10 [9:8]) is, as an MDC divider (CR) */ -#define NVT_CG_SYSCLK (NVT_CG_BASE + 0x10) -static const u8 mdio_cr[4] = { - 3, /* 48 MHz: CR 35-60 MHz, /26 */ - 0, /* 60 MHz: CR 60-100 MHz, /42 */ - 0, /* 80 MHz */ - 1, /* 120 MHz: CR 100-150 MHz, /62 */ -}; +#define NVT_EQOS_MAX 2 -static struct eqos_desc tx_descs[TX_DESCS] __aligned(ARCH_DMA_MINALIGN); -static struct eqos_desc rx_descs[RX_DESCS] __aligned(ARCH_DMA_MINALIGN); -static u8 tx_buf[PKT_SIZE] __aligned(ARCH_DMA_MINALIGN); -static u8 rx_bufs[RX_DESCS][PKT_SIZE] __aligned(ARCH_DMA_MINALIGN); - -static struct { +struct nvt_eqos { + struct eqos_desc tx_descs[TX_DESCS]; + struct eqos_desc rx_descs[RX_DESCS]; + u8 tx_buf[PKT_SIZE]; + u8 rx_bufs[RX_DESCS][PKT_SIZE]; struct eth_device dev; struct mii_dev *mii; struct phy_device *phy; phy_interface_t intf; + ulong base; u32 cr; int tx_idx, rx_idx; -} eqos; +} __aligned(ARCH_DMA_MINALIGN); + +static struct nvt_eqos eqos_devs[NVT_EQOS_MAX]; +static int eqos_count; static void eqos_flush(void *p, size_t len) { @@ -167,16 +166,18 @@ static int eqos_wait(ulong reg, u32 mask, ulong ms) return 0; } -static int eqos_mdio(int addr, int reg, u32 goc) +static int eqos_mdio(struct nvt_eqos *eqos, int addr, int reg, u32 goc) { - writel(MDIO_PA(addr) | MDIO_RDA(reg) | MDIO_CR(eqos.cr) | goc | MDIO_GB, + writel(MDIO_PA(addr) | MDIO_RDA(reg) | MDIO_CR(eqos->cr) | goc | MDIO_GB, MAC_MDIO_ADDR); return eqos_wait(MAC_MDIO_ADDR, MDIO_GB, 10); } static int eqos_mdio_read(struct mii_dev *bus, int addr, int devad, int reg) { - if (eqos_mdio(addr, reg, MDIO_GOC_READ)) + struct nvt_eqos *eqos = bus->priv; + + if (eqos_mdio(eqos, addr, reg, MDIO_GOC_READ)) return -ETIMEDOUT; return readl(MAC_MDIO_DATA) & 0xffff; } @@ -184,12 +185,15 @@ static int eqos_mdio_read(struct mii_dev *bus, int addr, int devad, int reg) static int eqos_mdio_write(struct mii_dev *bus, int addr, int devad, int reg, u16 val) { + struct nvt_eqos *eqos = bus->priv; + writel(val, MAC_MDIO_DATA); - return eqos_mdio(addr, reg, MDIO_GOC_WRITE); + return eqos_mdio(eqos, addr, reg, MDIO_GOC_WRITE); } static int eqos_write_hwaddr(struct eth_device *dev) { + struct nvt_eqos *eqos = dev->priv; const u8 *a = dev->enetaddr; writel(a[4] | a[5] << 8, MAC_ADDR0_HI); @@ -199,18 +203,21 @@ static int eqos_write_hwaddr(struct eth_device *dev) static int eqos_start(struct eth_device *dev, struct bd_info *bis) { + struct nvt_eqos *eqos = dev->priv; + struct eqos_desc *tx_descs = eqos->tx_descs; + struct eqos_desc *rx_descs = eqos->rx_descs; struct phy_device *phy; u32 cfg, hwf1; int i, ret; - if (!eqos.phy) { - phy = phy_connect(eqos.mii, -1, dev, eqos.intf); + if (!eqos->phy) { + phy = phy_connect(eqos->mii, -1, dev, eqos->intf); if (!phy) return -ENODEV; phy_config(phy); - eqos.phy = phy; + eqos->phy = phy; } - phy = eqos.phy; + phy = eqos->phy; ret = phy_startup(phy); if (ret) return ret; @@ -253,17 +260,17 @@ static int eqos_start(struct eth_device *dev, struct bd_info *bis) writel(CH_PBL(16) | CH_RBSZ(PKT_SIZE), DMA_CH_RX_CTRL); writel(SYSBUS_RD_OSR_LMT(2), DMA_SYSBUS_MODE); - memset(tx_descs, 0, sizeof(tx_descs)); - memset(rx_descs, 0, sizeof(rx_descs)); + memset(tx_descs, 0, sizeof(eqos->tx_descs)); + memset(rx_descs, 0, sizeof(eqos->rx_descs)); for (i = 0; i < RX_DESCS; i++) { - rx_descs[i].des0 = (ulong)rx_bufs[i]; + rx_descs[i].des0 = (ulong)eqos->rx_bufs[i]; rx_descs[i].des3 = DES3_OWN | DES3_BUF1V; } - eqos_flush(tx_descs, sizeof(tx_descs)); - eqos_flush(rx_descs, sizeof(rx_descs)); - eqos_inval(rx_bufs, sizeof(rx_bufs)); - eqos.tx_idx = 0; - eqos.rx_idx = 0; + eqos_flush(tx_descs, sizeof(eqos->tx_descs)); + eqos_flush(rx_descs, sizeof(eqos->rx_descs)); + eqos_inval(eqos->rx_bufs, sizeof(eqos->rx_bufs)); + eqos->tx_idx = 0; + eqos->rx_idx = 0; writel((ulong)tx_descs, DMA_CH_TXDESC_LIST); writel(TX_DESCS - 1, DMA_CH_TXDESC_RING_LEN); writel((ulong)rx_descs, DMA_CH_RXDESC_LIST); @@ -282,6 +289,8 @@ static int eqos_start(struct eth_device *dev, struct bd_info *bis) static void eqos_halt(struct eth_device *dev) { + struct nvt_eqos *eqos = dev->priv; + /* Let what is queued go out, and what came in drain */ clrbits_le32(DMA_CH_TX_CTRL, CH_ST_SR); eqos_wait(MTL_TXQ0_DEBUG, TXQ_BUSY, 10); @@ -292,21 +301,22 @@ static void eqos_halt(struct eth_device *dev) static int eqos_send(struct eth_device *dev, void *packet, int len) { - struct eqos_desc *d = &tx_descs[eqos.tx_idx]; + struct nvt_eqos *eqos = dev->priv; + struct eqos_desc *d = &eqos->tx_descs[eqos->tx_idx]; ulong start; - memcpy(tx_buf, packet, len); - eqos_flush(tx_buf, ALIGN(len, ARCH_DMA_MINALIGN)); + memcpy(eqos->tx_buf, packet, len); + eqos_flush(eqos->tx_buf, ALIGN(len, ARCH_DMA_MINALIGN)); - d->des0 = (ulong)tx_buf; + d->des0 = (ulong)eqos->tx_buf; d->des1 = 0; d->des2 = len; mb(); d->des3 = DES3_OWN | DES3_FD | DES3_LD | len; eqos_flush(d, sizeof(*d)); - eqos.tx_idx = (eqos.tx_idx + 1) % TX_DESCS; - writel((ulong)&tx_descs[eqos.tx_idx], DMA_CH_TXDESC_TAIL); + eqos->tx_idx = (eqos->tx_idx + 1) % TX_DESCS; + writel((ulong)&eqos->tx_descs[eqos->tx_idx], DMA_CH_TXDESC_TAIL); /* The buffer is reused: wait for the DMA to have read it */ start = get_timer(0); @@ -321,8 +331,9 @@ static int eqos_send(struct eth_device *dev, void *packet, int len) static int eqos_recv(struct eth_device *dev) { - struct eqos_desc *d = &rx_descs[eqos.rx_idx]; - u8 *buf = rx_bufs[eqos.rx_idx]; + struct nvt_eqos *eqos = dev->priv; + struct eqos_desc *d = &eqos->rx_descs[eqos->rx_idx]; + u8 *buf = eqos->rx_bufs[eqos->rx_idx]; u32 des3; int len; @@ -346,34 +357,44 @@ static int eqos_recv(struct eth_device *dev) d->des3 = DES3_OWN | DES3_BUF1V; eqos_flush(d, sizeof(*d)); writel((ulong)d, DMA_CH_RXDESC_TAIL); - eqos.rx_idx = (eqos.rx_idx + 1) % RX_DESCS; + eqos->rx_idx = (eqos->rx_idx + 1) % RX_DESCS; return len; } /* - * Register the MAC; the board has its clocks running, the pins muxed and - * the PHY powered, @intf says which PHY that is. + * Register the MAC at @base as @name; the board has its clocks running, + * the pins muxed and the PHY powered, @intf says which PHY that is, @cr + * is the MDC divider for the CSR clock (MAC_MDIO_ADDR CR). */ -int nvt_eqos_initialize(phy_interface_t intf) +int nvt_eqos_register(const char *name, ulong base, phy_interface_t intf, + u32 cr) { - struct eth_device *dev = &eqos.dev; + struct nvt_eqos *eqos; + struct eth_device *dev; struct mii_dev *mii; - eqos.intf = intf; - eqos.cr = mdio_cr[(readl(NVT_CG_SYSCLK) >> 8) & 3]; + if (eqos_count >= NVT_EQOS_MAX) + return -ENOSPC; + eqos = &eqos_devs[eqos_count++]; + dev = &eqos->dev; + eqos->base = base; + eqos->intf = intf; + eqos->cr = cr; mii = mdio_alloc(); if (!mii) return -ENOMEM; - strcpy(mii->name, "eqos"); + strlcpy(mii->name, name, sizeof(mii->name)); mii->read = eqos_mdio_read; mii->write = eqos_mdio_write; + mii->priv = eqos; if (mdio_register(mii)) return -EIO; - eqos.mii = mii; + eqos->mii = mii; - strcpy(dev->name, "eqos"); - dev->iobase = NVT_ETH_BASE; + strlcpy(dev->name, name, sizeof(dev->name)); + dev->iobase = base; + dev->priv = eqos; dev->init = eqos_start; dev->halt = eqos_halt; dev->send = eqos_send; @@ -381,3 +402,21 @@ int nvt_eqos_initialize(phy_interface_t intf) dev->write_hwaddr = eqos_write_hwaddr; return eth_register(dev); } + +#ifdef CONFIG_NVT_NA51089 +/* What the CSR clock (CG+0x10 [9:8]) is, as an MDC divider (CR) */ +#define NVT_CG_SYSCLK (NVT_CG_BASE + 0x10) +static const u8 mdio_cr[4] = { + 3, /* 48 MHz: CR 35-60 MHz, /26 */ + 0, /* 60 MHz: CR 60-100 MHz, /42 */ + 0, /* 80 MHz */ + 1, /* 120 MHz: CR 100-150 MHz, /62 */ +}; + +/* NA51089's one MAC */ +int nvt_eqos_initialize(phy_interface_t intf) +{ + return nvt_eqos_register("eqos", NVT_ETH_BASE, intf, + mdio_cr[(readl(NVT_CG_SYSCLK) >> 8) & 3]); +} +#endif From 609c21b5375a033082b80cd71258a01233c1bcc1 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:53:28 +0000 Subject: [PATCH 15/38] mtd: nand: raw: the SPI NAND of the Novatek NA51090 The NA51090 NVRs boot from SPI NAND (a W25N01GV on the N2032-8HDD) on the flash controller nvt_sflash runs for NOR. This driver runs it the same way, as a plain SPI master: a command and its address bytes, then the data, the chip held selected by hand. PAGE DATA READ, GET FEATURE polling, READ from the cache, PROGRAM LOAD/EXECUTE and BLOCK ERASE go out byte for byte, a page and its spare area by DMA through one buffer. The controller's own NAND mode, which the vendor U-Boot uses, is not needed for that. The chip's on-die ECC is on, as the vendor runs it; its status after a page read becomes the MTD layer's corrected/failed counts. The raw NAND framework drives it through cmdfunc (non-DM, SYS_NAND_SELF_INIT), with the parts' geometry from a table: W25N01GV, W25N02KV, GD5F1GQ4UB, GD5F1GQ5UE, MX35LF1GE4AB, XT26G01C. Clock, pins and PHY as the vendor's spinand.c does on NA51090, at the tree's /nand clock (24 MHz on the NVR). Verified under qemu-hisilicon nt98633, from the board's own FW98633A and BL31 on its NAND dump: "NAND: 128 MiB"; nand erase 256 KiB, nand write 192 KiB, nand read back, crc32 equal (23dc90b5) and the image file holding the data; saveenv, reset, env loaded; nand erase.part ubi, ubi part, ubi create/write/read of a 3 MB volume, crc32 equal to the host's, and the volume intact after a reset. Only the on-die ECC's "no error" path runs there: the model never reports ECC errors. --- drivers/mtd/nand/raw/Kconfig | 10 + drivers/mtd/nand/raw/Makefile | 1 + drivers/mtd/nand/raw/nvt_spinand.c | 651 +++++++++++++++++++++++++++++ 3 files changed, 662 insertions(+) create mode 100644 drivers/mtd/nand/raw/nvt_spinand.c diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig index ce67d1abde25..d78a04971810 100644 --- a/drivers/mtd/nand/raw/Kconfig +++ b/drivers/mtd/nand/raw/Kconfig @@ -412,6 +412,16 @@ config NAND_MXC This enables the NAND driver for the NAND flash controller on the i.MX27 / i.MX31 / i.MX5 processors. +config NAND_NVT_SPI + bool "Novatek NA51090 SPI NAND" + depends on ARCH_NOVATEK + select SYS_NAND_SELF_INIT + imply CMD_NAND + help + The SPI NAND the Novatek NA51090 boots from, on its flash + controller run as a plain SPI master, with the chip's on-die + ECC. Non-DM. + config NAND_MXS bool "MXS NAND support" depends on MX23 || MX28 || MX6 || MX7 || IMX8 || IMX8M diff --git a/drivers/mtd/nand/raw/Makefile b/drivers/mtd/nand/raw/Makefile index a398aa9d8864..7300aa0645da 100644 --- a/drivers/mtd/nand/raw/Makefile +++ b/drivers/mtd/nand/raw/Makefile @@ -65,6 +65,7 @@ obj-$(CONFIG_NAND_LPC32XX_SLC) += lpc32xx_nand_slc.o obj-$(CONFIG_NAND_VF610_NFC) += vf610_nfc.o obj-$(CONFIG_NAND_MXC) += mxc_nand.o obj-$(CONFIG_NAND_MXS) += mxs_nand.o +obj-$(CONFIG_NAND_NVT_SPI) += nvt_spinand.o obj-$(CONFIG_NAND_MXS_DT) += mxs_nand_dt.o obj-$(CONFIG_NAND_OCTEONTX) += octeontx_nand.o obj-$(CONFIG_NAND_OCTEONTX_HW_ECC) += octeontx_bch.o diff --git a/drivers/mtd/nand/raw/nvt_spinand.c b/drivers/mtd/nand/raw/nvt_spinand.c new file mode 100644 index 000000000000..ed21dcdd991b --- /dev/null +++ b/drivers/mtd/nand/raw/nvt_spinand.c @@ -0,0 +1,651 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * SPI NAND behind the flash controller of the Novatek NA51090 (and + * NA51103, NA51089: the same controller). + * + * The controller is run as for SPI NOR (drivers/mtd/spi/nvt_sflash.c): + * one operation at a time, a command with up to four address bytes, then + * N bytes in or out, the chip held selected by hand across the two. The + * SPI NAND commands go out that way, byte for byte: PAGE DATA READ (0x13) + * into the chip's cache, GET FEATURE (0x0F) for its status, READ (0x03) + * of the cache, PROGRAM LOAD (0x02) and PROGRAM EXECUTE (0x10), BLOCK + * ERASE (0xD8). The controller's NAND mode, which the vendor U-Boot + * uses (drivers/mtd/nvt_flash_spi), folds these into page operations of + * its own; the plain path needs nothing chip-specific from it. + * + * The chip's on-die ECC is on, as the vendor runs it: a page read reports + * corrected and uncorrectable errors in the status register (C0 [5:4]), + * which this driver hands to the MTD layer. A whole page and its spare + * area go through one buffer, by DMA. The raw NAND framework sees a + * large-page chip with hardware ECC; bad blocks are marked as on any + * large-page NAND (spare byte 0). + * + * Non-DM, SYS_NAND_SELF_INIT: board_nand_init() registers nand0. + */ + +#include <common.h> +#include <cpu_func.h> +#include <malloc.h> +#include <nand.h> +#include <asm/cache.h> +#include <asm/io.h> +#include <asm/arch/hardware.h> +#include <linux/bitops.h> +#include <linux/delay.h> +#include <linux/libfdt.h> +#include <linux/mtd/rawnand.h> +#include <linux/sizes.h> + +#define FL_MODULE0 (NVT_FLASH_BASE + 0x00) +#define FL_DLL1 (NVT_FLASH_BASE + 0x08) +#define FL_DLL2 (NVT_FLASH_BASE + 0x0C) +#define FL_SPI_CFG (NVT_FLASH_BASE + 0x14) +#define FL_CTRL0 (NVT_FLASH_BASE + 0x20) +#define FL_TIME2 (NVT_FLASH_BASE + 0x24) +#define FL_TIME0 (NVT_FLASH_BASE + 0x2C) +#define FL_TIME1 (NVT_FLASH_BASE + 0x30) +#define FL_COMMAND (NVT_FLASH_BASE + 0x34) +#define FL_COLADDR (NVT_FLASH_BASE + 0x38) +#define FL_ROWADDR (NVT_FLASH_BASE + 0x3C) +#define FL_INTMASK (NVT_FLASH_BASE + 0x44) +#define FL_CTRL_STS (NVT_FLASH_BASE + 0x48) +#define FL_DATAPORT (NVT_FLASH_BASE + 0x100) +#define FL_DATALEN (NVT_FLASH_BASE + 0x104) +#define FL_FIFO_STS (NVT_FLASH_BASE + 0x108) +#define FL_FIFO_CTRL (NVT_FLASH_BASE + 0x10C) +#define FL_DMASTART (NVT_FLASH_BASE + 0x110) + +#define MOD_CYC_MASK 0xf +#define MOD_ROW_CYC(n) (((n) - 1) << 2) +#define MOD_COL_CYC(n) ((n) - 1) +#define MOD_NOR (BIT(19) | BIT(20)) /* plain SPI */ +#define DLL1_SW_RESET BIT(0) +#define DLL1_SAMPCLK_INV BIT(2) +#define DLL1_SRC_CLK_SEL BIT(3) +#define DLL1_PAD_CLK_SEL BIT(20) +#define DLL2_INDLY(n) ((n) << 24) +#define DLL2_INDLY_MASK DLL2_INDLY(0x3f) +#define CFG_CS_MANUAL BIT(1) +#define CFG_CS_SEL BIT(3) +#define CFG_CS_HIGH BIT(4) +#define CFG_BUS_WIDTH_MASK (0x3 << 9) +#define CFG_PULL_WPHLD BIT(12) +#define CTRL0_OPER_EN BIT(12) +#define CTRL0_WP_EN BIT(13) +#define STS_COMP BIT(12) +#define FIFO_EN BIT(0) +#define FIFO_DMA BIT(1) +#define FIFO_WRITE BIT(2) +#define FIFO_CNT_MASK 0x1f +#define FIFO_EMPTY BIT(8) +#define FIFO_FULL BIT(9) +#define FIFO_BYTES 64 + +#define OP_CMD 0x07 +#define OP_CMD_ADDR 0x0C +#define OP_READ_N 0x18 +#define OP_WRITE_N 0x19 + +#define OP_TIMEOUT_MS 4500 + +#ifdef CONFIG_NVT_NA511XX +#define NVT_CG_FLASH_CLKEN (NVT_CG_BASE + 0x74) +#define CG_FLASH_CLKEN BIT(10) +#define NVT_CG_FLASH_RSTN (NVT_CG_BASE + 0x98) +#define CG_FLASH_RSTN BIT(1) +#define NVT_CG_FLASH_DIV (NVT_CG_BASE + 0x48) /* [21:16] */ +#define CG_FLASH_DIV_SHIFT 16 +#define NVT_PAD_FLASH_DRV (NVT_PAD_BASE + 0x50) +#define NVT_TOP_FLASH_EN (NVT_TOP_BASE + 0x04) +#define NVT_TOP_GPIO_C (NVT_TOP_BASE + 0xA0) +#endif +#define NVT_FLASH_SRC_HZ 480000000 +/* The NT98633 NVR's tree: /nand clock-frequency 24 MHz */ +#define SNAND_HZ 24000000 + +/* SPI NAND commands */ +#define SN_RESET 0xFF +#define SN_READ_ID 0x9F +#define SN_GET_FEATURE 0x0F +#define SN_SET_FEATURE 0x1F +#define SN_WREN 0x06 +#define SN_PAGE_READ 0x13 +#define SN_READ_CACHE 0x03 +#define SN_PROG_LOAD 0x02 +#define SN_PROG_EXEC 0x10 +#define SN_BLOCK_ERASE 0xD8 + +#define FEAT_PROT 0xA0 +#define FEAT_CFG 0xB0 +#define FEAT_STATUS 0xC0 +#define CFG_ECC_EN BIT(4) +#define CFG_BUF BIT(3) /* Winbond: buffer read mode */ +#define STS_OIP BIT(0) +#define STS_E_FAIL BIT(2) +#define STS_P_FAIL BIT(3) +#define STS_ECC_MASK (3 << 4) +#define STS_ECC_CORRECTED (1 << 4) +#define STS_ECC_FAILED (2 << 4) + +#define MFR_WINBOND 0xEF + +/* The parts the NVRs and their SDK list, 2 KiB pages, one plane */ +static struct nand_flash_dev nvt_spinand_ids[] = { + {"W25N01GV", {.id = {0xef, 0xaa, 0x21} }, SZ_2K, 128, SZ_128K, 0, 3, + 64, NAND_ECC_INFO(1, SZ_512) }, + {"W25N02KV", {.id = {0xef, 0xaa, 0x22} }, SZ_2K, 256, SZ_128K, 0, 3, + 128, NAND_ECC_INFO(8, SZ_512) }, + {"GD5F1GQ4UB", {.id = {0xc8, 0xd1} }, SZ_2K, 128, SZ_128K, 0, 2, + 128, NAND_ECC_INFO(8, SZ_512) }, + {"GD5F1GQ5UE", {.id = {0xc8, 0x51} }, SZ_2K, 128, SZ_128K, 0, 2, + 128, NAND_ECC_INFO(4, SZ_512) }, + {"MX35LF1GE4AB", {.id = {0xc2, 0x12} }, SZ_2K, 128, SZ_128K, 0, 2, + 64, NAND_ECC_INFO(4, SZ_512) }, + {"XT26G01C", {.id = {0x0b, 0x11} }, SZ_2K, 128, SZ_128K, 0, 2, + 128, NAND_ECC_INFO(8, SZ_512) }, + {NULL} +}; + +static struct { + struct nand_chip chip; + u8 *buf; /* a page and its spare area */ + unsigned int pos, len; /* what read_byte/read_buf/write_buf use */ + int page; /* in the chip's cache, or -1 */ + int prog_page; /* SEQIN's page */ + u8 status; /* NAND_CMD_STATUS: the last program/erase */ + u8 ecc; /* STS_ECC_* of the last page read */ + u8 id[8]; +} sn; + +/* ---- the controller, as nvt_sflash.c runs it ---- */ + +static void fl_addr_cycles(unsigned int n) +{ + clrsetbits_le32(FL_MODULE0, MOD_CYC_MASK, + MOD_ROW_CYC(n) | MOD_COL_CYC(1)); +} + +static void fl_setup(u32 op, u32 row, u32 len, u32 fifo) +{ + clrbits_le32(FL_INTMASK, STS_COMP); + writel(fifo, FL_FIFO_CTRL); + writel(0, FL_CTRL0); + writel(0, FL_COLADDR); + writel(row, FL_ROWADDR); + writel(len, FL_DATALEN); + writel(op | (fifo & FIFO_WRITE ? 0 : CTRL0_WP_EN), FL_CTRL0); + writel(STS_COMP, FL_CTRL_STS); + if (len) + writel(fifo | FIFO_EN, FL_FIFO_CTRL); + setbits_le32(FL_INTMASK, STS_COMP); +} + +static void fl_start(u32 cmd) +{ + writel(cmd, FL_COMMAND); + setbits_le32(FL_CTRL0, CTRL0_OPER_EN); +} + +static int fl_wait(void) +{ + ulong start = get_timer(0); + + while (!(readl(FL_CTRL_STS) & STS_COMP)) { + if (get_timer(start) > OP_TIMEOUT_MS) { + printf("NAND: the flash controller timed out\n"); + return -ETIMEDOUT; + } + } + writel(STS_COMP, FL_CTRL_STS); + return 0; +} + +/* A command and @n address bytes (MSB first), then nothing */ +static int fl_cmd(u8 cmd, unsigned int n, u32 addr) +{ + if (n) { + fl_addr_cycles(n); + fl_setup(OP_CMD_ADDR, addr, 0, 0); + } else { + fl_setup(OP_CMD, 0, 0, 0); + } + fl_start(cmd); + return fl_wait(); +} + +static int fl_fifo_wait(u32 bits, unsigned int words) +{ + ulong start = get_timer(0); + u32 sts; + + for (;;) { + sts = readl(FL_FIFO_STS); + if (bits ? sts & bits : sts & FIFO_FULL || + (sts & FIFO_CNT_MASK) >= words) + return 0; + if (get_timer(start) > OP_TIMEOUT_MS) { + printf("NAND: the flash FIFO timed out\n"); + return -ETIMEDOUT; + } + } +} + +static int fl_pio_in(u8 *buf, unsigned int len) +{ + while (len) { + unsigned int n = min_t(unsigned int, len, FIFO_BYTES), i; + + if (fl_fifo_wait(0, DIV_ROUND_UP(n, 4))) + return -ETIMEDOUT; + for (i = 0; i < n; i += 4) { + u32 w = readl(FL_DATAPORT); + + memcpy(buf + i, &w, min(4U, n - i)); + } + buf += n; + len -= n; + } + return fl_wait(); +} + +static int fl_pio_out(const u8 *buf, unsigned int len) +{ + bool tail = len % 4; + + while (len) { + unsigned int n = min_t(unsigned int, len, FIFO_BYTES), i; + + if (fl_fifo_wait(FIFO_EMPTY, 0)) + return -ETIMEDOUT; + for (i = 0; i < n; i += 4) { + u32 w = 0; + + memcpy(&w, buf + i, min(4U, n - i)); + writel(w, FL_DATAPORT); + } + buf += n; + len -= n; + } + if (tail) { + mdelay(1); + clrbits_le32(FL_FIFO_CTRL, FIFO_EN); + } + return fl_wait(); +} + +static void fl_cs(bool on) +{ + if (on) { + setbits_le32(FL_SPI_CFG, CFG_CS_HIGH); + setbits_le32(FL_SPI_CFG, CFG_CS_MANUAL); + clrbits_le32(FL_SPI_CFG, CFG_CS_HIGH); + } else { + setbits_le32(FL_SPI_CFG, CFG_CS_HIGH); + clrbits_le32(FL_SPI_CFG, CFG_CS_MANUAL); + } +} + +/* + * A command and @n address bytes, then @len bytes in (@out NULL) or out, + * the chip selected throughout. Whole cache lines go by DMA. + */ +static int fl_xfer(u8 cmd, unsigned int n, u32 addr, u8 *in, const u8 *out, + unsigned int len) +{ + bool dma = len >= ARCH_DMA_MINALIGN && !(len % ARCH_DMA_MINALIGN) && + !((ulong)(in ? in : out) % ARCH_DMA_MINALIGN); + ulong b = (ulong)(in ? in : out); + int ret; + + fl_cs(true); + ret = fl_cmd(cmd, n, addr); + if (!ret && in) { + if (dma) { + invalidate_dcache_range(b, b + len); + writel(b, FL_DMASTART); + fl_setup(OP_READ_N, 0, len, FIFO_DMA); + fl_start(cmd); + ret = fl_wait(); + invalidate_dcache_range(b, b + len); + } else { + fl_setup(OP_READ_N, 0, len, 0); + fl_start(cmd); + ret = fl_pio_in(in, len); + } + } else if (!ret && out) { + if (dma) { + flush_dcache_range(b, b + len); + writel(b, FL_DMASTART); + fl_setup(OP_WRITE_N, 0, len, FIFO_DMA | FIFO_WRITE); + fl_start(cmd); + ret = fl_wait(); + } else { + fl_setup(OP_WRITE_N, 0, len, FIFO_WRITE); + fl_start(cmd); + ret = fl_pio_out(out, len); + } + } + fl_cs(false); + return ret; +} + +/* ---- the SPI NAND chip ---- */ + +static u8 sn_get_feature(u8 reg) +{ + u8 v; + + if (fl_xfer(SN_GET_FEATURE, 1, reg, &v, NULL, 1)) + return 0xff; + return v; +} + +static int sn_set_feature(u8 reg, u8 val) +{ + return fl_cmd(SN_SET_FEATURE, 2, reg << 8 | val); +} + +/* Wait for the operation in progress; its status, or -ETIMEDOUT */ +static int sn_wait(void) +{ + ulong start = get_timer(0); + u8 sts; + + do { + sts = sn_get_feature(FEAT_STATUS); + if (sts != 0xff && !(sts & STS_OIP)) + return sts; + } while (get_timer(start) < OP_TIMEOUT_MS); + printf("NAND: the chip stays busy (status %02x)\n", sts); + return -ETIMEDOUT; +} + +/* PAGE DATA READ, then the cache: the page and its spare area */ +static int sn_read_page(int page) +{ + struct mtd_info *mtd = nand_to_mtd(&sn.chip); + unsigned int len = mtd->writesize + mtd->oobsize; + int sts; + + sn.page = -1; + if (fl_cmd(SN_PAGE_READ, 3, page)) + return -EIO; + sts = sn_wait(); + if (sts < 0) + return sts; + sn.ecc = sts & STS_ECC_MASK; + /* Column 0, then a dummy byte */ + if (fl_xfer(SN_READ_CACHE, 3, 0, sn.buf, NULL, len)) + return -EIO; + sn.page = page; + return 0; +} + +/* WRITE ENABLE, PROGRAM LOAD of the whole buffer, PROGRAM EXECUTE */ +static int sn_program(int page) +{ + struct mtd_info *mtd = nand_to_mtd(&sn.chip); + unsigned int len = mtd->writesize + mtd->oobsize; + int sts; + + sn.page = -1; + if (fl_cmd(SN_WREN, 0, 0) || + fl_xfer(SN_PROG_LOAD, 2, 0, NULL, sn.buf, len) || + fl_cmd(SN_PROG_EXEC, 3, page)) + return -EIO; + sts = sn_wait(); + if (sts < 0) + return sts; + return sts & STS_P_FAIL ? -EIO : 0; +} + +static int sn_erase(int page) +{ + int sts; + + sn.page = -1; + if (fl_cmd(SN_WREN, 0, 0) || fl_cmd(SN_BLOCK_ERASE, 3, page)) + return -EIO; + sts = sn_wait(); + if (sts < 0) + return sts; + return sts & STS_E_FAIL ? -EIO : 0; +} + +/* ---- the raw NAND framework's hooks ---- */ + +static void sn_cmdfunc(struct mtd_info *mtd, unsigned int cmd, int column, + int page) +{ + int ret; + + switch (cmd) { + case NAND_CMD_RESET: + fl_cmd(SN_RESET, 0, 0); + mdelay(1); + sn_wait(); + sn.page = -1; + break; + case NAND_CMD_READID: + /* No ONFI or JEDEC parameter page here: 0x20, 0x40 read 0 */ + memset(sn.id, 0, sizeof(sn.id)); + if (column == 0) + fl_xfer(SN_READ_ID, 1, 0, sn.id, NULL, sizeof(sn.id)); + sn.pos = 0; + sn.len = sizeof(sn.id); + break; + case NAND_CMD_READ0: + case NAND_CMD_READOOB: + if (cmd == NAND_CMD_READOOB) + column += mtd->writesize; + ret = page == sn.page ? 0 : sn_read_page(page); + if (ret) { + /* What a failed read leaves: an erased-looking page */ + memset(sn.buf, 0xff, mtd->writesize + mtd->oobsize); + sn.ecc = STS_ECC_FAILED; + } + sn.pos = column; + sn.len = mtd->writesize + mtd->oobsize; + break; + case NAND_CMD_SEQIN: + memset(sn.buf, 0xff, mtd->writesize + mtd->oobsize); + sn.prog_page = page; + sn.pos = column; + sn.len = mtd->writesize + mtd->oobsize; + break; + case NAND_CMD_PAGEPROG: + ret = sn_program(sn.prog_page); + sn.status = NAND_STATUS_READY | NAND_STATUS_WP | + (ret ? NAND_STATUS_FAIL : 0); + break; + case NAND_CMD_ERASE1: + ret = sn_erase(page); + sn.status = NAND_STATUS_READY | NAND_STATUS_WP | + (ret ? NAND_STATUS_FAIL : 0); + break; + case NAND_CMD_ERASE2: + break; + case NAND_CMD_STATUS: + sn.id[0] = sn.status; + sn.pos = 0; + sn.len = 1; + break; + default: + printf("NAND: command %#x not handled\n", cmd); + } +} + +/* Bytes come from the ID or status, else from the page buffer */ +static u8 *sn_src(void) +{ + return sn.len <= sizeof(sn.id) ? sn.id : sn.buf; +} + +static u8 sn_read_byte(struct mtd_info *mtd) +{ + if (sn.pos >= sn.len) + return 0xff; + return sn_src()[sn.pos++]; +} + +static void sn_read_buf(struct mtd_info *mtd, u8 *buf, int len) +{ + int n = min_t(int, len, sn.len - sn.pos); + + if (n > 0) { + memcpy(buf, sn_src() + sn.pos, n); + sn.pos += n; + } else { + n = 0; + } + memset(buf + n, 0xff, len - n); +} + +static void sn_write_buf(struct mtd_info *mtd, const u8 *buf, int len) +{ + int n = min_t(int, len, sn.len - sn.pos); + + if (n > 0) { + memcpy(sn.buf + sn.pos, buf, n); + sn.pos += n; + } +} + +static int sn_waitfunc(struct mtd_info *mtd, struct nand_chip *chip) +{ + return sn.status; +} + +static void sn_select_chip(struct mtd_info *mtd, int cs) +{ +} + +/* The page is in the buffer: what the on-die ECC said of it */ +static int sn_read_page_ecc(struct mtd_info *mtd, struct nand_chip *chip, + u8 *buf, int oob_required, int page) +{ + chip->read_buf(mtd, buf, mtd->writesize); + if (oob_required) + chip->read_buf(mtd, chip->oob_poi, mtd->oobsize); + if (sn.ecc == STS_ECC_FAILED) { + mtd->ecc_stats.failed++; + return 0; + } + if (sn.ecc) { + mtd->ecc_stats.corrected++; + return chip->ecc.strength; + } + return 0; +} + +static int sn_write_page_ecc(struct mtd_info *mtd, struct nand_chip *chip, + const u8 *buf, int oob_required, int page) +{ + chip->write_buf(mtd, buf, mtd->writesize); + chip->write_buf(mtd, chip->oob_poi, mtd->oobsize); + return 0; +} + +/* A u32 property of the loader's device tree */ +static u32 sn_fdt_u32(const char *path, const char *prop, u32 def) +{ + const void *fdt = nvt_loader_fdt(); + const fdt32_t *val = NULL; + int node; + + if (fdt) { + node = fdt_path_offset(fdt, path); + if (node >= 0) + val = fdt_getprop(fdt, node, prop, NULL); + } + return val ? fdt32_to_cpu(*val) : def; +} + +/* + * Clock, reset, pins and PHY, as the vendor's spinand.c drv_nand_reset() + * and nand_phy_config() do on NA51090, at the tree's clock + */ +static void sn_hw_init(void) +{ + u32 hz = sn_fdt_u32("/nand", "clock-frequency", SNAND_HZ); + u32 pins = 3, drv; + + hz = clamp_t(u32, hz, NVT_FLASH_SRC_HZ / 64, 80000000); + setbits_le32(NVT_CG_FLASH_CLKEN, CG_FLASH_CLKEN); + setbits_le32(NVT_CG_FLASH_RSTN, CG_FLASH_RSTN); + writel(0x06002222, FL_TIME0); + writel(0x7f0f, FL_TIME1); + if (sn_fdt_u32("/top/spi", "pinmux", 0) & 0x20) + pins |= BIT(2); + setbits_le32(NVT_TOP_FLASH_EN, pins); + clrbits_le32(NVT_TOP_GPIO_C, 0x3f | (pins & BIT(2) ? BIT(6) : 0)); + clrsetbits_le32(NVT_CG_FLASH_DIV, 0x3f << CG_FLASH_DIV_SHIFT, + (NVT_FLASH_SRC_HZ / hz - 1) << CG_FLASH_DIV_SHIFT); + drv = hz <= 24000000 ? 0x0111101 : hz <= 60000000 ? 0x0222202 : + 0x0222203; + clrsetbits_le32(NVT_PAD_FLASH_DRV, 0xfffffff, drv); + setbits_le32(FL_MODULE0, MOD_NOR); + writel(0x5f51, FL_TIME2); + + clrsetbits_le32(FL_DLL1, DLL1_SRC_CLK_SEL, + DLL1_SAMPCLK_INV | DLL1_PAD_CLK_SEL); + clrsetbits_le32(FL_DLL2, DLL2_INDLY_MASK, DLL2_INDLY(8)); + setbits_le32(FL_DLL1, DLL1_SW_RESET); + while (readl(FL_DLL1) & DLL1_SW_RESET) + ; + clrsetbits_le32(FL_SPI_CFG, CFG_BUS_WIDTH_MASK | CFG_CS_SEL, + CFG_PULL_WPHLD); +} + +void board_nand_init(void) +{ + struct nand_chip *chip = &sn.chip; + struct mtd_info *mtd = nand_to_mtd(chip); + u8 cfg; + int ret; + + sn_hw_init(); + sn.page = -1; + /* Nothing failed yet; the framework also reads WP from here */ + sn.status = NAND_STATUS_READY | NAND_STATUS_WP; + sn.buf = memalign(ARCH_DMA_MINALIGN, + ALIGN(SZ_4K + 256, ARCH_DMA_MINALIGN)); + if (!sn.buf) + return; + + chip->cmdfunc = sn_cmdfunc; + chip->read_byte = sn_read_byte; + chip->read_buf = sn_read_buf; + chip->write_buf = sn_write_buf; + chip->waitfunc = sn_waitfunc; + chip->select_chip = sn_select_chip; + chip->chip_delay = 0; + chip->options = NAND_NO_SUBPAGE_WRITE; + + ret = nand_scan_ident(mtd, 1, nvt_spinand_ids); + if (ret) { + printf("NAND: no SPI NAND known here (ID %02x %02x %02x)\n", + sn.id[0], sn.id[1], sn.id[2]); + return; + } + + /* Writable everywhere; the on-die ECC on, Winbond's buffer mode */ + sn_set_feature(FEAT_PROT, 0); + cfg = sn_get_feature(FEAT_CFG) | CFG_ECC_EN; + if (sn.id[0] == MFR_WINBOND) + cfg |= CFG_BUF; + sn_set_feature(FEAT_CFG, cfg); + + chip->ecc.mode = NAND_ECC_HW; + chip->ecc.size = mtd->writesize; + chip->ecc.bytes = 0; + chip->ecc.strength = chip->ecc_strength_ds ?: 1; + chip->ecc.read_page = sn_read_page_ecc; + chip->ecc.write_page = sn_write_page_ecc; + + ret = nand_scan_tail(mtd); + if (!ret) + ret = nand_register(0, mtd); + if (ret) + printf("NAND: cannot register (%d)\n", ret); +} From 807b53292d88087415551de13255edb148daa2ec Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:53:28 +0000 Subject: [PATCH 16/38] novatek: add the NT98633 (NA51090) NA51090 is the four Cortex-A53 NVR die, 2 GiB on the N2032-8HDD. Its boot chain is NA51103's: the board's loader (FW98633A), DDR training, the RMR warm reset, the board's BL31 v2.2, which enters BL33 at its header's address (0x3E000000 here) with SPSR 0x3C9, AArch64 EL2h. U-Boot shares NA51103's code: the map differs in the watchdog (0x110000), and the MAC is the one at 0x2_F021_0000, the boards' tree's and Linux's eth0 (the vendor U-Boot's MAC1), set up as eth_na51090.c's mac1_*: RGMII or RMII on either pad set, the PHY's clock from the SoC, its reset on E_GPIO 17 or S_GPIO 19. On SPI NAND the OpenIPC layer takes openipc-hisilicon's NAND medium: the environment in the board's uenv partition (0x1A0000, two blocks), UBI after it (0x1E0000), the kernel in the UBIFS rootfs; mtdparts spi_nand.0:1664k(boot),256k(env),-(ubi), where boot is the board's loader, tree, BL31 and U-Boot's slot (0xC0000, written alone by ${ubwrite}). openipc-common.h gains that medium under CONFIG_ENV_IS_IN_NAND; the NOR one is unchanged. Verified under qemu-hisilicon nt98633 -smp 5, the board's loader and BL31 from its NAND dump, U-Boot's slot and env replaced: U-Boot 2022.10 at EL2, "chip id bc21", 2 GiB; ping, dhcp, tftpboot of 3 MB with the host's crc32 on the first -nic; and the dump's own kernel (4.19.148, repacked as an LZMA uImage) with its initramfs: four CPUs through BL31's PSCI, the SPI NAND and eth0 probed. --- arch/arm/mach-novatek/Kconfig | 13 ++ arch/arm/mach-novatek/include/mach/na511xx.h | 3 +- board/novatek/na511xx/na511xx.c | 121 +++++++++++++++++-- include/configs/novatek.h | 11 ++ include/configs/openipc-common.h | 30 +++++ 5 files changed, 169 insertions(+), 9 deletions(-) diff --git a/arch/arm/mach-novatek/Kconfig b/arch/arm/mach-novatek/Kconfig index 37730ce3a05c..1b26caa93b73 100644 --- a/arch/arm/mach-novatek/Kconfig +++ b/arch/arm/mach-novatek/Kconfig @@ -36,6 +36,14 @@ config TARGET_NT98332 boards. U-Boot runs in AArch64 at EL2, started by the board's BL31. +config TARGET_NT98633 + bool "NT98633 (NA51090)" + select NVT_NA51090 + help + NA51090, the NVR die with four Cortex-A53s, 2 GiB of DDR on the + boards. U-Boot runs in AArch64 at EL2, started by the board's + BL31. + endchoice config NVT_NA51089 @@ -52,8 +60,13 @@ config NVT_NA51103 bool select NVT_NA511XX +config NVT_NA51090 + bool + select NVT_NA511XX + config NVT_DDR_SIZE hex + default 0x80000000 if TARGET_NT98633 default 0x40000000 if TARGET_NT98332 default 0x20000000 if TARGET_NT98560 default 0x08000000 if TARGET_NT98566 diff --git a/arch/arm/mach-novatek/include/mach/na511xx.h b/arch/arm/mach-novatek/include/mach/na511xx.h index b82bade5c53a..b434c972f1ac 100644 --- a/arch/arm/mach-novatek/include/mach/na511xx.h +++ b/arch/arm/mach-novatek/include/mach/na511xx.h @@ -23,7 +23,8 @@ #define NVT_UART0_BASE NVT_IO(0x280000) #ifdef CONFIG_NVT_NA51090 #define NVT_WDT_BASE NVT_IO(0x110000) -#define NVT_ETH_BASE NVT_IO(0x200000) /* the vendor's eth0 */ +/* The boards' tree's eth0, Linux's (the vendor U-Boot's MAC1) */ +#define NVT_ETH_BASE NVT_IO(0x210000) #else #define NVT_WDT_BASE NVT_IO(0x060000) #define NVT_ETH_BASE NVT_IO(0x440000) diff --git a/board/novatek/na511xx/na511xx.c b/board/novatek/na511xx/na511xx.c index 2f60b6e60493..d0705e4bf8eb 100644 --- a/board/novatek/na511xx/na511xx.c +++ b/board/novatek/na511xx/na511xx.c @@ -196,9 +196,13 @@ int nvt_eqos_initialize(phy_interface_t intf); #define GPIO_DIR(n) (NVT_GPIO_BASE + 0x30 + ((n) >> 5) * 4) #define GPIO_SET(n) (NVT_GPIO_BASE + 0x60 + ((n) >> 5) * 4) #define GPIO_CLR(n) (NVT_GPIO_BASE + 0x90 + ((n) >> 5) * 4) +#ifdef CONFIG_NVT_NA51090 +#define E_GPIO(n) (0x80 + (n)) +#define S_GPIO(n) (0xC0 + (n)) +#else #define E_GPIO(n) (0x60 + (n)) +#endif -#ifdef CONFIG_NVT_NA51103 /* A GPIO as an output, at @val */ static void nvt_gpio_out(unsigned int n, int val) { @@ -206,6 +210,17 @@ static void nvt_gpio_out(unsigned int n, int val) setbits_le32(GPIO_DIR(n), BIT(n & 31)); } +/* The PHY's reset: low for 10 ms, then 50 ms before MDIO, as the vendor */ +static void nvt_phy_reset(unsigned int gpio) +{ + nvt_gpio_out(gpio, 0); + mdelay(10); + nvt_gpio_out(gpio, 1); + mdelay(50); +} + +#ifdef CONFIG_NVT_NA51103 + /* * The embedded PHY's power-on, as eth_na51103.c's eth_phy_poweron() and * its PHY reset, break-link timer and LED settings @@ -300,17 +315,107 @@ static phy_interface_t nvt_eth_setup(const void *fdt) setbits_le32(TOP(0x0C), BIT(8)); clrbits_le32(TOP(0xB0), BIT(0)); } - if (intf != PHY_INTERFACE_MODE_MII) { - /* The PHY's reset, on E_GPIO 1 */ - nvt_gpio_out(E_GPIO(1), 0); - mdelay(10); - nvt_gpio_out(E_GPIO(1), 1); - mdelay(50); - } + /* The PHY's reset, on E_GPIO 1 */ + if (intf != PHY_INTERFACE_MODE_MII) + nvt_phy_reset(E_GPIO(1)); return intf; } #endif /* CONFIG_NVT_NA51103 */ +#ifdef CONFIG_NVT_NA51090 +#define ETH2_PIN_RGMII BIT(12) /* an RGMII PHY on the first pads */ +#define ETH2_PIN_RGMII_2 BIT(13) /* or on the second */ +#define ETH2_PIN_RMII BIT(16) +#define ETH2_PIN_RMII_2 BIT(17) +#define ETH2_PIN_REFCLK BIT(20) /* the PHY's 25 MHz from the SoC */ + +/* The tree's eth0 node: Xiongmai-style "eth0@2,f0210000", or the SDK's */ +static int nvt_eth_node(const void *fdt) +{ + int node = fdt_path_offset(fdt, "/eth0@2,f0210000"); + + return node >= 0 ? node : fdt_path_offset(fdt, "/eth1@2,f0210000"); +} + +/* + * The MAC at 0x2_F021_0000, which the boards' tree calls eth0 and Linux + * uses as eth0, as the vendor U-Boot's eth_na51090.c sets up its MAC1: + * mac1_pinmux_en(), mac1_clk_en(), extphy1_clk_en(). It has no embedded + * PHY. The NT98633 NVR says 0x502501: RGMII on the second pads, the PHY's + * clock from the SoC, its reset on S_GPIO 19. + */ +static phy_interface_t nvt_eth_setup(const void *fdt) +{ + u32 pins = nvt_fdt_u32(fdt, "/top/eth", "pinmux", ETH2_PIN_RGMII); + int node = fdt ? nvt_eth_node(fdt) : -1; + const fdt32_t *spclk = node >= 0 ? + fdt_getprop(fdt, node, "sp-clk", NULL) : NULL; + const fdt32_t *refout = node >= 0 ? + fdt_getprop(fdt, node, "ref-clk-out", NULL) : NULL; + bool ext_clk = pins & ETH2_PIN_REFCLK || + (spclk && fdt32_to_cpu(*spclk)); + int pad = pins & (ETH2_PIN_RGMII_2 | ETH2_PIN_RMII_2) ? 2 : 1; + phy_interface_t intf = pins & (ETH2_PIN_RMII | ETH2_PIN_RMII_2) ? + PHY_INTERFACE_MODE_RMII : + PHY_INTERFACE_MODE_RGMII; + + if (intf == PHY_INTERFACE_MODE_RMII) { + clrsetbits_le32(TOP(0x0C), 7 << 4, (pad == 1 ? 2 : 4) << 4); + } else if (pad == 1) { + clrsetbits_le32(PAD(0x98), 0xf, 0x1); + clrsetbits_le32(PAD(0x9C), 0xffffff, 0x111111); + clrsetbits_le32(TOP(0x0C), 7 << 4, 1 << 4); + } else { + clrsetbits_le32(PAD(0xA8), 0xf << 8, 0x1 << 8); + clrsetbits_le32(PAD(0xAC), 0xffffff << 8, 0x111111 << 8); + clrsetbits_le32(TOP(0x0C), 7 << 4, 3 << 4); + } + clrsetbits_le32(TOP(0x0C), 3 << 20, pad << 20); /* MDIO */ + if (pad == 1) { + clrbits_le32(TOP(0xB0), intf == PHY_INTERFACE_MODE_RMII ? + 0xCE3C0000 : 0xFFFC0000); + } else { + clrbits_le32(TOP(0xC0), intf == PHY_INTERFACE_MODE_RMII ? + 0x38F00000 : 0xFFF00000); + clrbits_le32(TOP(0xC4), 0x3); + } + + /* PLL7, the MAC's clock, out of reset */ + setbits_le32(CG(0x00), BIT(7)); + udelay(10); + setbits_le32(CG(0x70), BIT(28)); + udelay(10); + setbits_le32(CG(0x94), BIT(17)); + udelay(10); + + if (intf == PHY_INTERFACE_MODE_RMII) { + u32 v = readl(GLUE(0x14)); + + v &= ~(BIT(2) | BIT(4) | 3 << 30); + v |= BIT(0) | BIT(5); + if (refout && fdt32_to_cpu(*refout)) + v = (v & ~BIT(0)) | BIT(4); + writel(v, GLUE(0x14)); + } else { + writel((readl(GLUE(0x14)) & (3 << 30)) | 1 << 30 | 3 << 4, + GLUE(0x14)); + } + setbits_le32(GLUE(0x04), BIT(4)); /* an external PHY */ + writel(0x1FF, GLUE(0x0C)); + + if (ext_clk) { + setbits_le32(CG(0x74), BIT(8)); + setbits_le32(TOP(0x0C), BIT(16)); + if (pad == 1) + clrbits_le32(TOP(0xB0), BIT(16)); + else + clrbits_le32(TOP(0xC0), BIT(18)); + } + nvt_phy_reset(pad == 1 ? E_GPIO(17) : S_GPIO(19)); + return intf; +} +#endif /* CONFIG_NVT_NA51090 */ + int board_eth_init(struct bd_info *bis) { const void *fdt = nvt_loader_fdt(); diff --git a/include/configs/novatek.h b/include/configs/novatek.h index 080877a9d0c0..2d8ca6e30435 100644 --- a/include/configs/novatek.h +++ b/include/configs/novatek.h @@ -28,6 +28,17 @@ * BL31 (0x1F00000, secure), where the vendor U-Boot stages them */ #define OPENIPC_BASEADDR 0x02000000 +#ifdef CONFIG_NVT_NA51090 +/* + * The board's loader, tree and BL31 stay in the first 768 KiB of the NAND + * (loader 0, tree 0x40000, BL31 0x80000); ${ubfile} is U-Boot's slot + * alone, 0xC0000..0x1A0000. The environment is the board's uenv + * partition (0x1A0000), UBI follows (0x1E0000). + */ +#define OPENIPC_UBWRITE "nand erase 0xc0000 0xe0000; nand write ${baseaddr} 0xc0000 ${filesize}" +#define OPENIPC_NAND_MTDPARTS "1664k(boot),256k(env),-(ubi)" +#define CONFIG_SYS_MAX_NAND_DEVICE 1 +#endif #ifdef CONFIG_NVT_NA51103 /* * The board's loader and device tree stay in the first 128 KiB of the diff --git a/include/configs/openipc-common.h b/include/configs/openipc-common.h index cbc4cffc4120..165beaa24c30 100644 --- a/include/configs/openipc-common.h +++ b/include/configs/openipc-common.h @@ -95,6 +95,7 @@ "fwrecovery=if env exists bootfail; then run fwupd; sleep 5; reset; fi\0" \ "bootflash=run fwrecovery; setenv setargs setenv bootargs ${bootargs}; run setargs; run loadkernel; bootm ${baseaddr}; reset\0" +#ifndef CONFIG_ENV_IS_IN_NAND /* * The flash's MTD name in the vendor kernels: the nor node's * nvt-devname in the loader's device tree @@ -130,6 +131,35 @@ "mtdparts=" SFC ":" OPENIPC_MTDPARTS "\0" \ "bootargs=" CONFIG_BOOTARGS +#else /* CONFIG_ENV_IS_IN_NAND */ + +/* + * SPI NAND, as on openipc-hisilicon: one UBI device after the boot area + * and the environment (CONFIG_ENV_OFFSET), holding the UBIFS rootfs with + * the kernel inside it (/boot/fitImage or /boot/uImage) and rootfs_data + * on the rest. The boot area is the SoC's (OPENIPC_NAND_MTDPARTS), its + * MTD name the nand node's nvt-devname. + */ +#define SFC "spi_nand.0" + +#define CONFIG_BOOTARGS "mem=\\${osmem} console=ttyS0,115200 panic=20 init=/init root=ubi0:rootfs rootfstype=ubifs ubi.mtd=2,2048 mtdparts=\\${mtdparts} \\${extras}" + +#define OPENIPC_FWUPD "fwupd=run ur\0" + +#define OPENIPC_LOADKERNEL "ubi part ubi; ubifsmount ubi0:rootfs; ubifsload ${baseaddr} /boot/fitImage || ubifsload ${baseaddr} /boot/uImage" +#define OPENIPC_ENV_MEDIUM \ + "ubfile=u-boot-" CONFIG_PRODUCT_SOC "-nand.bin\0" \ + "urfile=rootfs.ubifs." CONFIG_PRODUCT_SOC "\0" \ + "ubwrite=" OPENIPC_UBWRITE "\0" \ + "urwrite=ubi part ubi; ubi check rootfs && ubi remove rootfs; if ubi create rootfs ${filesize} d; then ubi check rootfs; else ubi remove rootfs_data; ubi create rootfs ${filesize} d; fi; ubi check rootfs_data || ubi create rootfs_data 0 d; ubi write ${baseaddr} rootfs ${filesize}\0" \ + "loadkernel=" OPENIPC_LOADKERNEL "\0" \ + "mtdids=nand0=" SFC "\0" \ + "mtds=" OPENIPC_NAND_MTDPARTS "\0" \ + "mtdparts=" SFC ":" OPENIPC_NAND_MTDPARTS "\0" \ + "bootargs=" CONFIG_BOOTARGS + +#endif /* CONFIG_ENV_IS_IN_NAND */ + #define CONFIG_BOOTCOMMAND "run bootflash" #define CONFIG_EXTRA_ENV_SETTINGS \ From a17868a9ac93ba4d16fc995ea2c2a881afb0b1df Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:53:35 +0000 Subject: [PATCH 17/38] openipc: build the NT98633 U-Boot slot As for NT98332, the board's loader, tree and BL31 stay: the image is U-Boot's slot, output/u-boot-nt98633-nand.bin, 896 KiB for NAND 0xC0000..0x1A0000, a BCL1 LZMA container (algorithm 11, its 64-bit size field the 32-bit length twice, as the board's own U-Boot is packed). - openipc/nt98633_config: text base 0x3E000000, caches on, the boot counter at 0x1E20000, no SPI NOR, the NAND driver, the environment in NAND, UBI and UBIFS. - openipc/nt98633.dts: what U-Boot reads of the board's tree, for the emulator's stand-in loader; output/u-boot-nt98633-qemu.bin puts it at 0x40000 and the slot at 0xC0000. - build.sh: build_nvr takes the flash and the layout per SoC; nt98633. U-Boot is 444 KiB, 169 KiB packed. Verified: the two-boot smoke test passes on qemu-hisilicon nt98633 -smp 4 (stand-in) with a 128 MiB image holding u-boot-nt98633-qemu.bin, and on nt98332 -smp 2; the slot written into the NT98633 NAND dump boots on nt98633 -smp 5 through the board's own loader and BL31. --- build.sh | 35 ++++--- openipc/nt98633.dts | 206 +++++++++++++++++++++++++++++++++++++++++ openipc/nt98633_config | 39 ++++++++ 3 files changed, 266 insertions(+), 14 deletions(-) create mode 100644 openipc/nt98633.dts create mode 100644 openipc/nt98633_config diff --git a/build.sh b/build.sh index f9012ac81b50..b083ba911b34 100755 --- a/build.sh +++ b/build.sh @@ -84,10 +84,13 @@ build_nvt() { } # Novatek NVR dies, AArch64: the board's loader and BL31 stay, the image -# is U-Boot's slot alone (openipc/nvt-nvr-image.py) +# is U-Boot's slot alone (openipc/nvt-nvr-image.py). FLASH is nor or nand, +# LAYOUT where the boards have their tree and U-Boot, and the boot area. build_nvr() { soc=$1 - builddir=${BOOT_SRCDIR}/output/build-${soc}-nor + flash=$2 + layout=$3 + builddir=${BOOT_SRCDIR}/output/build-${soc}-${flash} make_opts="-C ${BOOT_SRCDIR} O=${builddir} -j$(nproc) CROSS_COMPILE=${CROSS_COMPILE_A64}" rm -rf "${builddir}" @@ -97,22 +100,22 @@ build_nvr() { text=$(sed -n 's/^CONFIG_SYS_TEXT_BASE=//p' "${builddir}/.config") python3 openipc/nvt-nvr-image.py "${soc}" "${builddir}/u-boot.bin" \ - "${text}" "output/u-boot-${soc}-nor.bin" || return 1 + "${text}" "output/u-boot-${soc}-${flash}.bin" || return 1 - # For the emulator's stand-in loader (CI): no loader, a plain tree at - # 0x10000 and the slot, as a 256 KiB boot image - [ -f "openipc/${soc}.dts" ] || return 0 + # For the emulator's stand-in loader (CI): no loader, a plain tree and + # the slot where the boards have theirs, as a boot area image make ${make_opts} scripts_dtc </dev/null >/dev/null && "${builddir}/scripts/dtc/dtc" -q -I dts -O dtb \ -o "${builddir}/${soc}.dtb" "openipc/${soc}.dts" || return 1 - python3 - "${builddir}/${soc}.dtb" "output/u-boot-${soc}-nor.bin" \ - "output/u-boot-${soc}-qemu.bin" <<'EOF' + python3 - "${builddir}/${soc}.dtb" "output/u-boot-${soc}-${flash}.bin" \ + "output/u-boot-${soc}-qemu.bin" ${layout} <<'EOF' import sys -img = bytearray(b'\xff' * 0x40000) +fdt, slot, size = (int(x, 0) for x in sys.argv[4:7]) +img = bytearray(b'\xff' * size) dtb = open(sys.argv[1], 'rb').read() -slot = open(sys.argv[2], 'rb').read() -img[0x10000:0x10000 + len(dtb)] = dtb -img[0x20000:0x20000 + len(slot)] = slot +ub = open(sys.argv[2], 'rb').read() +img[fdt:fdt + len(dtb)] = dtb +img[slot:slot + len(ub)] = ub open(sys.argv[3], 'wb').write(img) EOF } @@ -137,15 +140,19 @@ build_soc() { build_nvt "${soc}" 562 666 ;; nt98566) build_nvt "${soc}" 566 933 ;; + # The NVRs: NA51103 on SPI NOR (Xiongmai's layout, OpenIPC's from + # 0x40000), NA51090 on SPI NAND (the SDK's, env and UBI after it) nt98332) - build_nvr "${soc}" ;; + build_nvr "${soc}" nor "0x10000 0x20000 0x40000" ;; + nt98633) + build_nvr "${soc}" nand "0x40000 0xc0000 0x1a0000" ;; *) echo "unsupported SoC: ${soc}" >&2 return 1 ;; esac } -ALL_SOCS="nt98560 nt98561 nt98562 nt98566 nt98332" +ALL_SOCS="nt98560 nt98561 nt98562 nt98566 nt98332 nt98633" SOCS="$@" [ -z "${SOCS}" ] && SOCS="${ALL_SOCS}" diff --git a/openipc/nt98633.dts b/openipc/nt98633.dts new file mode 100644 index 000000000000..c5772b92d59e --- /dev/null +++ b/openipc/nt98633.dts @@ -0,0 +1,206 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * NT98633 (NA51090) NVR: the part of the board's device tree U-Boot + * reads, after the N2032-8HDD NVR (FW98633A). Not flashed to boards: + * there the board's own tree stays at 0x40000 (partition_fdt), and the + * vendor kernels need all of it. This one is for the emulator's stand-in + * loader (qemu-hisilicon nt98633 with -smp 4), which reads the tree from + * NAND block 2 (0x40000) and unpacks U-Boot from partition_uboot: CI's + * smoke test. + */ + +/dts-v1/; + +/ { + model = "Novatek NA51090"; + compatible = "novatek,na51090"; + #address-cells = <2>; + #size-cells = <2>; + + cpus { + #address-cells = <2>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a53", "arm,armv8"; + reg = <0x0 0x0>; + enable-method = "psci"; + }; + + cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a53", "arm,armv8"; + reg = <0x0 0x1>; + enable-method = "psci"; + }; + + cpu@2 { + device_type = "cpu"; + compatible = "arm,cortex-a53", "arm,armv8"; + reg = <0x0 0x2>; + enable-method = "psci"; + }; + + cpu@3 { + device_type = "cpu"; + compatible = "arm,cortex-a53", "arm,armv8"; + reg = <0x0 0x3>; + enable-method = "psci"; + }; + }; + + psci { + compatible = "arm,psci-1.0"; + method = "smc"; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x0 0x0 0x57600000>; + }; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + atf@0x01F00000 { + reg = <0x0 0x1f00000 0x0 0x100000>; + no-map; + }; + }; + + hdal-memory { + #address-cells = <4>; + #size-cells = <2>; + + media { + reg = <0x0 0x0 0x0 0x57600000 0x0 0x28a00000>; + }; + }; + + nvt_memory_cfg { + #address-cells = <1>; + #size-cells = <1>; + + dram { + reg = <0x00000000 0x80000000>; + }; + + fdt { + reg = <0x00100000 0x00100000>; + }; + + loader { + reg = <0x00200000 0x00800000>; + }; + + shmem { + reg = <0x00a00000 0x00100000>; + }; + + atf { + reg = <0x01f00000 0x00100000>; + }; + + linuxtmp { + reg = <0x02000000 0x3c000000>; + }; + + uboot { + reg = <0x3e000000 0x02000000>; + }; + }; + + uart@2,f0280000 { + compatible = "ns16550a"; + reg = <0x2 0xf0280000 0x0 0x1000>; + reg-shift = <2>; + reg-io-width = <4>; + clock-frequency = <48000000>; + }; + + top@f0010000 { + compatible = "nvt,nvt_top"; + reg = <0x2 0xf0010000 0x0 0x2000>; + + spi { + pinmux = <0x11>; + }; + + eth { + pinmux = <0x502501>; + }; + }; + + eth0@2,f0210000 { + compatible = "nvt,synopsys_eth"; + reg = <0x2 0xf0210000 0x0 0x10000>; + sp-clk = <1>; + ref-clk-out = <0>; + }; + + nand@f0180000 { + #address-cells = <2>; + #size-cells = <2>; + compatible = "nvt,nvt_spinand"; + reg = <0x2 0xf0180000 0x0 0x1000>; + clock-frequency = <24000000>; + nvt-devname = "spi_nand.0"; + + /* The board's boot area; OpenIPC's env and UBI follow */ + partition_loader { + label = "loader"; + reg = <0x0 0x0 0x0 0x40000>; + }; + + partition_fdt { + label = "fdt"; + reg = <0x0 0x40000 0x0 0x40000>; + }; + + partition_atf { + label = "atf"; + reg = <0x0 0x80000 0x0 0x40000>; + }; + + partition_uboot { + label = "uboot"; + reg = <0x0 0xc0000 0x0 0xe0000>; + }; + + nvtpack { + ver = "NVTPACK_FW_INI_16072017"; + method = <1>; + + index { + id0 { + partition_name = "loader"; + source_file = ""; + }; + + id1 { + partition_name = "fdt"; + source_file = ""; + }; + + id2 { + partition_name = "atf"; + source_file = ""; + }; + + id3 { + partition_name = "uboot"; + source_file = "u-boot.lz.bin"; + }; + }; + }; + }; + + nvt_info { + BIN_NAME = "FW98633A"; + EMBMEM = "EMBMEM_SPINAND"; + NVT_LINUX_SMP = "NVT_LINUX_SMP_ON"; + }; +}; diff --git a/openipc/nt98633_config b/openipc/nt98633_config new file mode 100644 index 000000000000..46e316ece1f8 --- /dev/null +++ b/openipc/nt98633_config @@ -0,0 +1,39 @@ +CONFIG_TARGET_NT98633=y +CONFIG_PRODUCT_SOC="nt98633" +# Where the loader's device tree (/nvt_memory_cfg/uboot) has U-Boot +# unpacked and BL31 starts it: the HEADINFO's CodeEntry says the same +CONFIG_SYS_TEXT_BASE=0x3E000000 +# AArch64 runs with the MMU and caches on (arch/arm/mach-novatek/soc.c) +# CONFIG_SYS_DCACHE_OFF is not set +# Past BL31 (0x1F00000, secure) and the loader's areas, as the vendor +CONFIG_SYS_LOAD_ADDR=0x02000000 +# DRAM + 0x1e20000: the other families' 0x1f20000 is in BL31 here +CONFIG_SYS_BOOTCOUNT_ADDR=0x01E20000 +CONFIG_SYS_MALLOC_LEN=0x1000000 +# No SD slot on the NVRs (and no SDIO driver for these dies) +# CONFIG_MMC is not set +# CONFIG_CMD_MMC is not set +# CONFIG_CMD_FAT is not set +# CONFIG_FS_FAT is not set + +# SPI NAND, not NOR: the environment in the board's uenv partition, two +# blocks for one bad, and UBI after it (include/configs/novatek.h) +# CONFIG_NVT_SFLASH is not set +# CONFIG_CMD_SF is not set +# CONFIG_ENV_IS_IN_SPI_FLASH is not set +CONFIG_MTD=y +CONFIG_MTD_RAW_NAND=y +CONFIG_NAND_NVT_SPI=y +CONFIG_CMD_NAND=y +CONFIG_CMD_NAND_TRIMFFS=y +CONFIG_ENV_IS_IN_NAND=y +CONFIG_ENV_OFFSET=0x1A0000 +CONFIG_ENV_SIZE=0x20000 +CONFIG_ENV_RANGE=0x40000 +CONFIG_MTD_PARTITIONS=y +CONFIG_CMD_MTDPARTS=y +CONFIG_CMD_UBI=y +CONFIG_CMD_UBIFS=y +CONFIG_MTD_UBI=y +# CONFIG_MTD_UBI_FASTMAP is not set +CONFIG_LZO=y From c6bade764c5a71ce4c3679a7fb49e1ad1308e53a Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:58:36 +0000 Subject: [PATCH 18/38] docs: the NT98332 and NT98633 NVR dies What the board's loader and BL31 expect of U-Boot and why only its slot is OpenIPC's, the two layouts, how to install, the peripherals, and what was verified under qemu-hisilicon and what was not. --- CLAUDE.md | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 81 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 299efebcf632..87d39a9740fe 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -31,8 +31,10 @@ Adding or dropping a SoC needs both branches: `openipc/<soc>.dts`, and `TARGET_*` in `arch/arm/mach-novatek/Kconfig`; - there: `build-novatek.yml`'s matrices and the README. -The other dies of the SDKs (NA51055, NA51068, NA51090, NA51102, NA51103, -the NS02xxx parts) are not supported. +The NVR dies NA51103 (NT98332) and NA51090 (NT98633) are supported as +AArch64 targets behind the board's own loader and BL31; see "The NVR +dies" below. The other dies of the SDKs (NA51055, NA51068, NA51102, the +NS02xxx parts) are not supported. ## Relationship to mainline @@ -183,6 +185,11 @@ bash build.sh nt98566 # one or more SoCs (CROSS_COMPILE defaults to arm-li - U-Boot is ~233 KiB, ~94 KiB packed, in the 128 KiB slot; `nvt-image.py` fails the build if a part does not fit. Check the packed size after enabling anything. +- nt98332 and nt98633 are AArch64: `CROSS_COMPILE_A64`, default + `aarch64-linux-gnu-` (Debian/Ubuntu `gcc-aarch64-linux-gnu`; CI must + install it). Their outputs are `output/u-boot-nt98332-nor.bin` / + `u-boot-nt98633-nand.bin` (U-Boot's slot alone) and + `u-boot-<soc>-qemu.bin` (the stand-in's boot area, for CI). ## Verification @@ -221,6 +228,78 @@ it. host's command and FIFO timing. - **On silicon:** nothing yet. +## The NVR dies: NT98332 (NA51103), NT98633 (NA51090) + +Two (NA51103) or four (NA51090) Cortex-A53s, 1 / 2 GiB, the blocks at +`0x2_F000_0000` (`arch/arm/mach-novatek/include/mach/na511xx.h`), board +code in `board/novatek/na511xx/`, `NVT_NA511XX` selects `ARM64` +(`ARCH_NOVATEK` selects `CPU_V7A` only without it). + +**Boot chain, and why only U-Boot is replaced.** Mask ROM (AArch32) -> +the board's loader (Xiongmai's FW98332A, the NVR's FW98633A; no source +for these dies in any SDK) -> DDR training -> RMR warm reset of the A53s +into AArch64 -> the board's BL31 (TF-A v2.2, TZASC over its own +megabyte at `0x1F00000`) -> U-Boot -> Linux, which brings the other cores +up through BL31's PSCI. BL31 enters BL33 at the address in its own +header (written from `/nvt_memory_cfg/uboot`: `0x1E000000` / +`0x3E000000`) with a fixed SPSR `0x3C9`, AArch64 EL2h: U-Boot is AArch64 +and runs at EL2. The vendor's `_a32` configs are template copies and +cannot be entered from it. So the OpenIPC image is U-Boot's slot alone; +the loader, its tree and BL31 stay as the board has them. + +| | NT98332 (Xiongmai NBD80N36RA, 16 MiB NOR) | NT98633 (N2032-8HDD, 128 MiB SPI NAND) | +| --- | --- | --- | +| loader / tree / BL31 | `0x0` / `0x10000` (`XMFDT32G` + LZMA) / in the loader | `0x0` / `0x40000` / `0x80000` | +| U-Boot slot | `0x20000`, 128 KiB, bare LZMA (`5D`, 16 MiB dict, end marker) | `0xC0000`, 896 KiB, BCL1 alg 11 (size field = length twice) | +| environment | `0x40000` (OpenIPC NOR layout from here: kernel `0x50000`, rootfs `0x250000`) | `0x1A0000`, the board's uenv, 2 blocks | +| then | | UBI `0x1E0000`..end (rootfs UBIFS with `/boot/uImage`) | +| mtdparts | `spi_nor.0:` OpenIPC NOR list | `spi_nand.0:1664k(boot),256k(env),-(ubi)` | + +`openipc/nvt-nvr-image.py` builds the slot (HEADINFO length and +checksum as for NA51089, `BinFlag` 2); given a dump of the board's +flash it also writes a copy with the slot in. `${ubwrite}` writes only +the slot. Installing from the vendor U-Boot: tftp the slot, then +`sf erase 0x20000 0x20000; sf write <addr> 0x20000 0x20000` (NOR) or +`nand erase 0xc0000 0xe0000; nand write <addr> 0xc0000 0xe0000` (NAND). + +**Peripherals.** +- Console UART0 `0x2_F028_0000`, 16550, 48 MHz; the architected timer; + reset by the watchdog (NA51103 `0x60000`, NA51090 `0x110000`). +- MMU on (`mem_map` in `soc.c`): with it off every access is a device one + and U-Boot's unaligned accesses fault. Caches on, so the drivers' cache + maintenance matters. +- Flash: the NA51089 controller at `0x2_F018_0000`. NOR through + `nvt_sflash.c` (per-die clock/pins/PHY; 128-byte FIFO); SPI NAND + through `drivers/mtd/nand/raw/nvt_spinand.c`, the controller run as a + plain SPI master (not its NAND mode), the chip's on-die ECC on. +- Ethernet: `nvt_eqos.c` (MDC divider fixed for the 150 MHz APB). NA51103 + uses the MAC at `0x440000`, NA51090 the one at `0x210000` (the tree's + and Linux's eth0). Pins, clocks and the external PHY's reset GPIO come + from the loader's tree (`/top/eth` pinmux), as eth_na51103.c / + eth_na51090.c. phylib binds the PHY as MII, as the vendor does (its + strapped RGMII delays stay). +- Memory: U-Boot stays in its 32 MiB region; staging at `0x2000000` + (past BL31); the boot counter at `0x1E20000` (`0x1F20000` is BL31's); + `mem=` and `/hdal-memory/media` (4-cell addresses) split at `${osmem}` + (the boards' firmware: `0x15e00000`, `0x57600000`). The tree's + `/reserved-memory` keeps BL31 out of the kernel's and bootm's way. +- Not supported: SD (no slot on the NVRs), USB/SATA/HDMI in U-Boot, the + second MAC, the CPU clock raise the vendor U-Boot does from the tree. + +**Verified under qemu-hisilicon** (`nt98332`, `nt98633`, the boards' +dumps with the slot and env replaced, the real loader and BL31): prompt +twice with the env kept; `sf`/`nand` erase/write/read + `crc32` +(unaligned on NOR); `saveenv` + `reset`; `ping`, `dhcp`, `tftpboot` 3 MB +with the host's crc32; UBI create/write/read across a reset; TFTP +recovery onto an empty flash then boot from it (NOR: squashfs layout; +NAND: UBIFS `/boot/uImage`); the boot limit's failsafe; the dumps' own +4.19 kernels boot (their uImages say "uncompressed" over LZMA data: +repack them with `-C lzma`). CI smoke: `u-boot-<soc>-qemu.bin` on the +stand-in loader (`-smp 2` / `-smp 4`). Not checked: the boards' DDR +contents across a watchdog reset (the boot counter), the controller's +timing and the NAND's ECC error paths, the PHYs. **On silicon:** +nothing yet. + ## Things to keep - `mem=` stays the first kernel argument, as on the other OpenIPC targets. From d96348dd7e6f822e8214bc68e232762d818d86a4 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 22:08:26 +0000 Subject: [PATCH 19/38] novatek: turn the loader's MMU and caches off at entry The loader starts U-Boot with its MMU, data and instruction caches on: SCTLR 0x00c5187d, its translation table at 0x1018000 (in its DRAM area, /nvt_memory_cfg/loader) mapping the DDR write-back write-allocate (sections 0x...5de6) and the registers as device memory. This U-Boot is built with SYS_DCACHE_OFF, so its cache maintenance is compiled out, and with SKIP_LOWLEVEL_INIT, which also skipped cpu_init_cp15: it ran with a live write-back cache and no flush or invalidate around the DMA of the Ethernet MAC and the flash controller, on a table anything loaded to 0x1000000-0x1100000 overwrites. SKIP_LOWLEVEL_INIT_ONLY instead: no lowlevel_init (the loader has the clocks and DDR up), but cpu_init_cp15 invalidates the TLBs and turns the MMU and the data cache off, as the vendor U-Boot's start does (it then builds its own tables; this one stays uncached). The loader cleans its caches before it jumps. Found under qemu-hisilicon's machines of OpenIPC/qemu-hisilicon#222, which run the image's own loader: a TFTP to 0x1000000, OpenIPC's ${baseaddr}, overwrote the table and the transfer died; on nt98562, `mw.l 0x1018000 0 0x2000` hung U-Boot. Now SCTLR reads 0x00c5187a at the prompt (M and C clear, A and I set), and the same TFTP and mw work on nt98562 and nt98525. qemu does not model caches, so what this changes on silicon it cannot show; a write-back cache with no maintenance fits OpenIPC/u-boot#95 (NT98566: no ping, TFTP timeouts, the PHY up and configured). --- openipc/openipc_config | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/openipc/openipc_config b/openipc/openipc_config index 5e5d216274f5..67d44654a7ca 100644 --- a/openipc/openipc_config +++ b/openipc/openipc_config @@ -6,7 +6,13 @@ CONFIG_ARCH_NOVATEK=y # Where the loader's device tree (/nvt_memory_cfg/uboot) has U-Boot # unpacked and started: the HEADINFO's CodeEntry must say the same CONFIG_SYS_TEXT_BASE=0x03900000 -CONFIG_SKIP_LOWLEVEL_INIT=y +# The loader has the clocks and the DDR up: no lowlevel_init. But it +# starts U-Boot with its MMU and caches on (its table at 0x1018000 maps +# the DDR write-back), and this U-Boot runs with the data cache off and +# no cache maintenance: cpu_init_cp15 turns them off, as the vendor +# U-Boot's start does. +# CONFIG_SKIP_LOWLEVEL_INIT is not set +CONFIG_SKIP_LOWLEVEL_INIT_ONLY=y CONFIG_CC_OPTIMIZE_FOR_SIZE=y # CONFIG_DM is not set CONFIG_SYS_DCACHE_OFF=y From 11ebc7fd677126e6c0f56ae43e19e3c815b712f7 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 22:08:47 +0000 Subject: [PATCH 20/38] novatek: the NT9852x dies in the SoC, board and drivers NA51055 (chip ID 0x4821) and NA51084 (0x5021), the two dies of the NT9852x SDK, have NA51089's blocks at NA51089's addresses; their vendor U-Boot 2019.04 tells them apart at run time by the chip ID, as this does now (nvt_chip_id()). What differs, from that U-Boot's nvt_na51055_a32/clock.c, eth_na51055.c and nvt_ivot_mmc.c: - CPU clock: PLL8's ratio is at CG+0x1188 on NA51055 and CG+0x47E0 on NA51084 (CG+0x4420 on NA51089). NA51084 runs 1000 MHz unless the tree asks for 1200 or 1350, which only the NT98529 is cleared for: the vendor reads that from the eFuse, here the target says it. The NT9852x trees spell apb-frequency right; both spellings are read. - Ethernet: their own pinmux and LED bits (one-LED flags in [9:8]), the external PHY selected by bit 8 of 0x3004 (bit 4 on NA51089), NA51084's RMII_2 and RGMII, PLL16 for its external PHYs, and no PHY PLL reset before the embedded PHY's power-on. - The MAC's DMA: the descriptor skip (DSL) counts in bus-width units, 4 bytes on NA51055, so no skip reaches a 64-byte line there. The NT9852x targets pack the descriptors (16 bytes, no skip), which the data cache being off allows (a build-time check says so). Their vendor driver also sets DMA_SYSBUS_MODE AALE. - SD: NA51055 samples on the internal clock after the pad (SRC_CLK_SEL), NA51089 and NA51084 on the pad's before it. - ft_board_setup(): a second DDR die's range in /hdal-memory/media (<0x40000000 0x20000000> on the SDK's boards) stays the pool's. - HEADINFO: the vendor's tag, "ub51055 ". Verified under qemu-hisilicon (OpenIPC/qemu-hisilicon#222) with the targets of the next commit: on nt98525 (0x4821) and nt98528 (0x5021) PLL8 reads 0xA00000 and 0x14D555 (0x190000 on nt98529); dhcp, ping, a 3 MB tftpboot with the host's crc32, an unaligned sf erase/write/read, mmc info, fatls and a 64 KiB mmc write/read compare; bootm prep of the SDK's 4.19.91 kernel leaves /memory <0 0x10000000> and media <0x10000000 0x10000000 0x40000000 0x20000000>, and that kernel boots with the tree. nt98562 and nt98566 still pass their smoke test. --- arch/arm/mach-novatek/include/mach/na51089.h | 22 +- arch/arm/mach-novatek/soc.c | 11 +- board/novatek/na51089/na51089.c | 219 ++++++++++++++++--- drivers/mmc/nvt_mmc.c | 18 +- drivers/net/nvt_eqos.c | 40 +++- 5 files changed, 267 insertions(+), 43 deletions(-) diff --git a/arch/arm/mach-novatek/include/mach/na51089.h b/arch/arm/mach-novatek/include/mach/na51089.h index da529981161d..1060cf0241f8 100644 --- a/arch/arm/mach-novatek/include/mach/na51089.h +++ b/arch/arm/mach-novatek/include/mach/na51089.h @@ -1,8 +1,9 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /* - * Novatek NA51089 (NT98562, NT98566): memory map, after the vendor - * U-Boot 2019.04 (arch-nvt-na51089_a32/IOAddress.h) and the SDK's - * device trees. + * Novatek NA51089 (NT98560/561/562/566), and NA51055 / NA51084 + * (NT98520/522/523/525/528/529), which share its map: after the vendor + * U-Boot 2019.04 (arch-nvt-na51089_a32/IOAddress.h, + * arch-nvt-na51055_a32/IOAddress.h) and the SDKs' device trees. */ #ifndef __NA51089_H @@ -25,9 +26,22 @@ #define NVT_SDIO1_BASE 0xF0420000 #define NVT_PL310_BASE 0xFFE00000 -/* TOP */ +/* + * TOP. NA51055 (NT98520/522/523/525) and NA51084 (NT98528/529), the + * NT9852x SDK's two dies, have NA51089's blocks at NA51089's addresses; + * the vendor's code tells them apart at run time by this ID. + */ #define NVT_TOP_CHIP_ID (NVT_TOP_BASE + 0xF0) /* [31:16] */ #define NVT_CHIP_NA51089 0x7021 +#define NVT_CHIP_NA51055 0x4821 +#define NVT_CHIP_NA51084 0x5021 + +#ifndef __ASSEMBLY__ +static inline unsigned int nvt_chip_id(void) +{ + return *(volatile unsigned int *)NVT_TOP_CHIP_ID >> 16; +} +#endif /* CG: per-module clock enables and resets (active low) */ #define NVT_CG_CLKEN0 (NVT_CG_BASE + 0x74) diff --git a/arch/arm/mach-novatek/soc.c b/arch/arm/mach-novatek/soc.c index 9cc80ef42561..e0c868a4f985 100644 --- a/arch/arm/mach-novatek/soc.c +++ b/arch/arm/mach-novatek/soc.c @@ -1,8 +1,8 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * Novatek NA51089: the loader's HEADINFO, reset and DRAM size. The - * timer is timer 0 of the timer block, which the loader leaves running - * (CONFIG_SYS_TIMER_COUNTER in include/configs/novatek.h). + * Novatek NA51089, NA51055 / NA51084: the loader's HEADINFO, reset and + * DRAM size. The timer is timer 0 of the timer block, which the loader + * leaves running (CONFIG_SYS_TIMER_COUNTER in include/configs/novatek.h). */ #include <common.h> @@ -37,7 +37,12 @@ struct nvt_headinfo { static const struct nvt_headinfo headinfo __used __section(".nvt_headinfo") = { .code_entry = CONFIG_SYS_TEXT_BASE, + /* The vendor U-Boot's tag; no loader checks it */ +#ifdef CONFIG_NVT_NA51055 + .chip_name = "ub51055 ", +#else .chip_name = "ub51089 ", +#endif .version = "OpenIPC ", .date = " ", .bin_length = 0xffffffff, diff --git a/board/novatek/na51089/na51089.c b/board/novatek/na51089/na51089.c index b507611259c6..8fde8df8da89 100644 --- a/board/novatek/na51089/na51089.c +++ b/board/novatek/na51089/na51089.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * Novatek NA51089 camera board: the device tree the loader hands over, - * and the memory split the vendor kernels expect in it. + * Novatek NA51089, NA51055 and NA51084 camera boards: the device tree the + * loader hands over, and the memory split the vendor kernels expect in it. */ #include <common.h> @@ -38,9 +38,25 @@ DECLARE_GLOBAL_DATA_PTR; #define CG_PLL8 BIT(8) /* the CPU's PLL */ #define CG_CLK_SWITCH (NVT_CG_BASE + 0xA0) #define CG_CLKEN_70 (NVT_CG_BASE + 0x70) -#define CG_PLL8_RATIO(n) (NVT_CG_BASE + 0x4420 + 4 * (n)) #define OTP_TIMING 0xF0660010 +/* + * PLL8's ratio, three bytes in three words: only where they are differs + * between the dies (NT9852x SDK: arch/arm/mach-novatek/nvt_na51055_a32/ + * clock.c, CPU_CLOCK_RATE_RATIO*_OFS and *_528_OFS). + */ +static ulong nvt_pll8_ratio(void) +{ + switch (nvt_chip_id()) { + case NVT_CHIP_NA51055: + return NVT_CG_BASE + 0x1188; + case NVT_CHIP_NA51084: + return NVT_CG_BASE + 0x47E0; + default: + return NVT_CG_BASE + 0x4420; + } +} + /* Wait 100 ms for (reg & mask) != 0; the vendor waits for ever */ static int nvt_wait_set(ulong reg, u32 mask) { @@ -64,12 +80,40 @@ static void nvt_cpu_clk_sel(u32 sel) writel(0x28, CG_CLK_SWITCH); } -/* The vendor's nvt_cpu_freq: 80, 480, or anything else as 960 MHz */ +/* + * PLL8's ratio for a CPU clock, 12 MHz * ratio / 2^17: NA51084's own + * rates (1000 MHz unless the tree asks for 1200 or 1350, which only the + * NT98529 is cleared for; the vendor checks that in the eFuse, here the + * target does), else 960 MHz. + */ +static u32 nvt_pll8_for(u32 mhz) +{ + if (nvt_chip_id() != NVT_CHIP_NA51084) + return 0xA00000; + if (!IS_ENABLED(CONFIG_TARGET_NT98529) && mhz > 1000) + mhz = 1000; + switch (mhz) { + case 1200: + return 0x190000; + case 1350: + return 0x1C2000; + default: + return 0x14D555; + } +} + +/* + * The vendor's nvt_cpu_freq: 480 MHz (and 80 on NA51089) from fixed + * sources, anything else from PLL8 (nvt_pll8_for()) + */ static void nvt_set_cpu_mhz(u32 mhz) { u32 sel = readl(CG_SYSCLK) & SYSCLK_CPU; + ulong ratio = nvt_pll8_ratio(); + u32 pll8; - if (mhz == 80 || mhz == 480) { + if (mhz == 480 || + (mhz == 80 && nvt_chip_id() == NVT_CHIP_NA51089)) { u32 want = mhz == 80 ? SYSCLK_CPU_80 : SYSCLK_CPU_480; if (sel == want) @@ -87,10 +131,10 @@ static void nvt_set_cpu_mhz(u32 mhz) } nvt_cpu_clk_sel(SYSCLK_CPU_PLL8); } - /* 960 MHz: 12 MHz * 0xA00000 / 2^17 */ - writel(0x00, CG_PLL8_RATIO(0)); - writel(0x00, CG_PLL8_RATIO(1)); - writel(0xA0, CG_PLL8_RATIO(2)); + pll8 = nvt_pll8_for(mhz); + writel(pll8 & 0xff, ratio); + writel((pll8 >> 8) & 0xff, ratio + 4); + writel(pll8 >> 16, ratio + 8); } /* The eFuse controller's timing for the APB clock it runs at */ @@ -134,8 +178,10 @@ static void nvt_set_clocks(void) val = fdt_getprop(fdt, node, "clock-frequency", NULL); if (val) nvt_set_cpu_mhz(fdt32_to_cpu(*val) / 1000000); - /* Sic, as the vendor spells it */ - val = fdt_getprop(fdt, node, "apb-frequenccy", NULL); + /* The NT9852x SDK's spelling, or NA51089's vendor U-Boot's */ + val = fdt_getprop(fdt, node, "apb-frequency", NULL); + if (!val) + val = fdt_getprop(fdt, node, "apb-frequenccy", NULL); if (val) nvt_set_apb_mhz(fdt32_to_cpu(*val) / 1000000); } @@ -262,13 +308,15 @@ void board_lmb_reserve(struct lmb *lmb) /* * As the vendor U-Boot's nvt_boot: Linux gets the first ${osmem} of the * DDR, and the media pool of the vendor modules (/hdal-memory/media) the - * rest. + * rest. A second DDR die the tree gives the pool (NA51055 / NA51084: + * <0x40000000 ...> after the first range) stays the pool's. */ int ft_board_setup(void *blob, struct bd_info *bd) { ulong osmem = nvt_osmem(); - fdt32_t media[2]; - int node, ret; + const fdt32_t *old; + fdt32_t media[8]; + int node, len, i, n = 2, ret; ret = fdt_fixup_memory(blob, NVT_DDR_BASE, osmem); if (ret) @@ -279,17 +327,25 @@ int ft_board_setup(void *blob, struct bd_info *bd) return 0; media[0] = cpu_to_fdt32(NVT_DDR_BASE + osmem); media[1] = cpu_to_fdt32(gd->ram_size - osmem); - return fdt_setprop(blob, node, "reg", media, sizeof(media)); + old = fdt_getprop(blob, node, "reg", &len); + for (i = 0; old && i + 2 <= len / 4 && n < ARRAY_SIZE(media); i += 2) { + if (fdt32_to_cpu(old[i]) < NVT_DDR_BASE + gd->ram_size) + continue; + media[n++] = old[i]; + media[n++] = old[i + 1]; + } + return fdt_setprop(blob, node, "reg", media, n * sizeof(media[0])); } #ifdef CONFIG_NVT_EQOS /* * Ethernet: the pins, clocks and embedded PHY around the MAC - * (drivers/net/nvt_eqos.c), set up as by the vendor U-Boot's - * eth_na51089.c. How the board is wired comes from the loader's device - * tree, which the vendor kernels read too: /top@f0010000/eth pinmux. - * Xiongmai boards say 0x22, the embedded PHY with its LEDs on the second - * pads. + * (drivers/net/nvt_eqos.c), set up as by the vendor U-Boots' + * eth_na51089.c and, on the NT9852x dies, eth_na51055.c. How the board is + * wired comes from the loader's device tree, which the vendor kernels + * read too: /top@f0010000/eth pinmux. Xiongmai NT98562 boards say 0x22, + * the embedded PHY with its LEDs on the second pads; the NT9852x SDK's + * boards 0x12, on the first. */ #define ETH_PIN_RMII BIT(0) /* an external PHY on the LCD pads */ #define ETH_PIN_INTERNAL BIT(1) /* the embedded PHY */ @@ -297,12 +353,17 @@ int ft_board_setup(void *blob, struct bd_info *bd) #define ETH_PIN_LED2 BIT(5) /* or the second */ #define ETH_PIN_RMII_2 BIT(6) /* an external PHY on the P pads */ #define ETH_PIN_LED_ONLY (3 << 10) /* one LED: the pair's 1st, 2nd */ +/* The NT9852x dies' bits where they differ (eth_na51055.c PIN_ETH_CFG_*) */ +#define ETH52X_RGMII BIT(7) /* NA51084 */ +#define ETH52X_LED_ONLY (3 << 8) +#define TOP_PINMUX_ETH84 (NVT_TOP_BASE + 0x10) /* NA51084 [9:8] */ #define TOP_PINMUX_ETH (NVT_TOP_BASE + 0x14) /* RMII [3:2] [31:30] */ #define TOP_PINMUX_MISC (NVT_TOP_BASE + 0x18) #define MISC_PHY_LED(n) ((n) << 13) /* LED pair 1, 2 */ #define MISC_PHY_CLK BIT(28) /* 25 MHz out to a PHY */ #define TOP_GPIO_P (NVT_TOP_BASE + 0xA8) /* pads as GPIO */ +#define TOP_GPIO_L (NVT_TOP_BASE + 0xB8) /* NT9852x: the MAC's */ #define TOP_GPIO_DSI (NVT_TOP_BASE + 0xD0) #define TOP_GPIO_LCD (NVT_TOP_BASE + 0xE8) #define TOP_SRAM_SD (NVT_TOP_BASE + 0x1000) @@ -317,6 +378,8 @@ int ft_board_setup(void *blob, struct bd_info *bd) #define ETH_PLL_RSTN (NVT_ETH_BASE + 0x84) /* [31:30] */ #define ETH_PHY_SEL (NVT_ETH_BASE + 0x3004) #define PHY_SEL_EXT BIT(4) +#define PHY_SEL_EXT_52X BIT(8) +#define CG_PLL16 BIT(16) #define ETH_LED_CTRL (NVT_ETH_BASE + 0x300C) #define LED_INV (3 << 8) #define ETH_RMII_CLK (NVT_ETH_BASE + 0x3014) @@ -324,6 +387,7 @@ int ft_board_setup(void *blob, struct bd_info *bd) #define RMII_REF_OUT BIT(4) #define RMII_REF_CLK_I BIT(5) #define RMII_TXD_SRC (3 << 30) +#define TXD_SRC_RGMII (1 << 30) #define PHY(off) (NVT_ETH_PHY_BASE + (off)) #define PHY_CTRL PHY(0x000) #define PHY_SW_RESET BIT(1) @@ -379,14 +443,19 @@ static void nvt_eth_rmii(const void *fdt, u32 pins) /* The vendor resets the PHY on an EVB GPIO here, not done */ } -/* The embedded PHY: PLL out of reset, power on, then its own reset */ +/* + * The embedded PHY: on NA51089 its PLL out of reset first; power on, then + * its own reset + */ static void nvt_eth_phy_on(u32 led) { - mdelay(20); - clrbits_le32(ETH_PLL_RSTN, 3 << 30); - mdelay(20); - setbits_le32(ETH_PLL_RSTN, 3 << 30); - mdelay(20); + if (nvt_chip_id() == NVT_CHIP_NA51089) { + mdelay(20); + clrbits_le32(ETH_PLL_RSTN, 3 << 30); + mdelay(20); + setbits_le32(ETH_PLL_RSTN, 3 << 30); + mdelay(20); + } setbits_le32(PHY(0xF8), BIT(7)); udelay(20); @@ -410,12 +479,110 @@ static void nvt_eth_phy_on(u32 led) clrsetbits_le32(PHY_CTRL, PHY_SW_RESET, PHY_PLLREGWR); } +/* The NT9852x dies' (eth_na51055.c: its pin, clock and PHY set-up) */ +static int nvt_eth_init_52x(const void *fdt, u32 pins) +{ + bool na51084 = nvt_chip_id() == NVT_CHIP_NA51084; + u32 ext = ETH_PIN_RMII | + (na51084 ? ETH_PIN_RMII_2 | ETH52X_RGMII : 0); + bool phy_clk = nvt_fdt_u32(fdt, "/eth@f02b0000", "sp-clk", 0); + u32 led = 0x312, pads = 3; /* both LEDs, blinking */ + int n = pins & ETH_PIN_LED1 ? 1 : pins & ETH_PIN_LED2 ? 2 : 0; + phy_interface_t intf = PHY_INTERFACE_MODE_MII; + + if (!(pins & (ext | ETH_PIN_INTERNAL))) + return 0; + + if (n) { + if (pins & ETH52X_LED_ONLY) { + pads = pins & BIT(8) ? 1 : 2; + led = 0x300; + } + clrbits_le32(TOP_GPIO_DSI, n == 1 ? pads : pads << 5); + clrsetbits_le32(TOP_PINMUX_MISC, MISC_PHY_LED(3), + MISC_PHY_LED(n)); + } + if (nvt_fdt_u32(fdt, "/phy@f02b3800", "led-inv", 0)) + led &= ~LED_INV; + + /* mac_pinmux_en() */ + if (!na51084) { + if (pins & ETH_PIN_RMII) { + setbits_le32(TOP_PINMUX_MISC, 0x3000); + clrbits_le32(TOP_GPIO_L, 0x40077f); + } + } else if (pins & ETH_PIN_RMII) { + setbits_le32(TOP_PINMUX_ETH84, 0x100); + clrbits_le32(TOP_GPIO_L, 0x40077f); + } else if (pins & ETH_PIN_RMII_2) { + setbits_le32(TOP_PINMUX_ETH84, 0x200); + clrbits_le32(TOP_GPIO_L, 0x18f3800); + } else if (pins & ETH52X_RGMII) { + setbits_le32(TOP_PINMUX_ETH84, 0x300); + clrbits_le32(TOP_GPIO_L, 0x1fff800); + } + if (pins & ETH_PIN_INTERNAL) { + clrbits_le32(TOP_PINMUX_MISC, MISC_PHY_CLK); + } else if (phy_clk) { + setbits_le32(TOP_PINMUX_MISC, MISC_PHY_CLK); + if (na51084 && !(pins & ETH_PIN_RMII)) + clrbits_le32(TOP_GPIO_DSI, BIT(0)); + else + clrbits_le32(TOP_GPIO_L, BIT(7)); + } + + /* mac_clk_en(): NA51084's embedded PHY runs from 480 MHz */ + if (!na51084) + setbits_le32(CG_PLL_EN, CG_PLL6); + else if (!(pins & ETH_PIN_INTERNAL)) + setbits_le32(CG_PLL_EN, CG_PLL16); + udelay(10); + setbits_le32(NVT_CG_CLKEN0, CG_ETH); + udelay(10); + setbits_le32(NVT_CG_RSTN0, CG_ETH); + udelay(10); + clrbits_le32(TOP_SRAM_SD, SRAM_SD_ETH); + + /* extphy_clk_en() */ + if (pins & ETH52X_RGMII & ext) { + clrsetbits_le32(ETH_RMII_CLK, RMII_TXD_SRC, + RMII_REF_OUT | TXD_SRC_RGMII); + intf = PHY_INTERFACE_MODE_RGMII; + } else if (pins & ext) { + clrsetbits_le32(ETH_RMII_CLK, + RMII_REF_IN | RMII_REF_OUT | + (na51084 ? RMII_TXD_SRC : 0), + RMII_REF_CLK_I | + (nvt_fdt_u32(fdt, "/eth@f02b0000", "ref-clk-out", + 0) ? RMII_REF_OUT : RMII_REF_IN)); + intf = PHY_INTERFACE_MODE_RMII; + } + if (pins & ext) { + setbits_le32(ETH_PHY_SEL, PHY_SEL_EXT_52X); + if (phy_clk) { + setbits_le32(CG_CLKEN2, CG_ETH_PHY_CLK); + setbits_le32(TOP_PINMUX_MISC, MISC_PHY_CLK); + clrbits_le32(TOP_GPIO_L, BIT(7)); + } + /* The vendor resets the PHY on an EVB GPIO here, not done */ + } else { + clrbits_le32(ETH_PHY_SEL, PHY_SEL_EXT_52X); + } + /* Powered either way, as by eqos_probe_hwinit() */ + nvt_eth_phy_on(led); + + return nvt_eqos_initialize(intf); +} + int board_eth_init(struct bd_info *bis) { const void *fdt = (const void *)env_get_hex("fdtaddr", 0); u32 pins = nvt_fdt_u32(fdt, "/top@f0010000/eth", "pinmux", ETH_PIN_INTERNAL); bool rmii = pins & (ETH_PIN_RMII | ETH_PIN_RMII_2); + + if (nvt_chip_id() != NVT_CHIP_NA51089) + return nvt_eth_init_52x(fdt, pins); u32 led = 0x312, pads = 3; /* both LEDs, blinking */ int n = pins & ETH_PIN_LED1 ? 1 : pins & ETH_PIN_LED2 ? 2 : 0; diff --git a/drivers/mmc/nvt_mmc.c b/drivers/mmc/nvt_mmc.c index 581ef686d555..88686727401b 100644 --- a/drivers/mmc/nvt_mmc.c +++ b/drivers/mmc/nvt_mmc.c @@ -1,6 +1,8 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * SD card on SDIO1 of the Novatek NA51089 (NT98562, NT98566), non-DM. + * SD card on SDIO1 of the Novatek NA51089, NA51055 and NA51084, non-DM. + * The three take the same set-up (the vendor driver's default branch), + * but for the sampling clock. * * Software sets a data phase up first (block size, DATA_LENGTH, DATA_EN, * the FIFO's direction, then FIFO_EN), then writes the command with @@ -81,6 +83,7 @@ #define BUS_READY BIT(0) /* card not busy */ #define PHY_SW_RST BIT(0) #define PHY_BLK_FIFO_EN BIT(4) +#define DLY0_SRC_CLK_SEL BIT(13) /* the internal clock */ #define DLY0_PAD_CLK_SEL BIT(14) /* sample before the pad */ #define DLY1_READ_DLY_MASK (0xf << 28) #define DLY1_READ_DLY (0xa << 28) /* DATA/DET_READ_DLY = 2 */ @@ -183,8 +186,17 @@ static int nvt_mmc_init(struct mmc *mmc) udelay(10); clrbits_le32(SDIO_CLK_CTRL, CLK_DIS); - /* Sample from the pad side, positive edge (neg-sample-edge = 0) */ - clrsetbits_le32(SDIO_DLY0, BIT(12) | BIT(13), DLY0_PAD_CLK_SEL); + /* + * Positive edge (neg-sample-edge = 0). The sampling clock: on + * NA51089 and NA51084 from the pad, before it; on NA51055 the + * internal one, after the pad (the vendor's setphysample()). + */ + if (nvt_chip_id() == NVT_CHIP_NA51055) + clrsetbits_le32(SDIO_DLY0, BIT(12) | DLY0_PAD_CLK_SEL, + DLY0_SRC_CLK_SEL); + else + clrsetbits_le32(SDIO_DLY0, BIT(12) | DLY0_SRC_CLK_SEL, + DLY0_PAD_CLK_SEL); nvt_mmc_reset_data(); nvt_mmc_clock = SDIO_F_MIN; nvt_mmc_set_clock(SDIO_F_MIN); diff --git a/drivers/net/nvt_eqos.c b/drivers/net/nvt_eqos.c index f0d5fcfefb14..94a40d8b9937 100644 --- a/drivers/net/nvt_eqos.c +++ b/drivers/net/nvt_eqos.c @@ -1,7 +1,8 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * Ethernet MAC of the Novatek NA51089: a Synopsys DWC Ethernet QoS - * (GMAC 4.x) core, run polled with one Tx and one Rx descriptor ring. + * Ethernet MAC of the Novatek NA51089, NA51055 and NA51084: a Synopsys DWC + * Ethernet QoS (GMAC 4.x) core, run polled with one Tx and one Rx + * descriptor ring. * * The block has the MAC at 0x0000, the MTL (the FIFOs) at 0x0D00 and the * DMA, channel 0 from 0x1100, at 0x1000; Novatek's glue (interface and @@ -95,6 +96,7 @@ #define DMA_SWR BIT(0) /* DMA_SYSBUS_MODE: outstanding AXI reads, as the vendor driver */ #define SYSBUS_RD_OSR_LMT(n) ((n) << 16) +#define SYSBUS_AALE BIT(10) /* automatic AXI low-power entry */ /* DMA_CH_CTRL */ #define CH_PBLX8 BIT(16) #define CH_DSL(n) ((n) << 18) /* skip, in 8-byte units */ @@ -111,10 +113,29 @@ #define DES3_ES BIT(15) /* write-back, Rx */ #define DES3_LEN(v) ((v) & 0x7fff) -/* The core's own descriptor, padded to a cache line */ +/* + * The core's own descriptor, padded to a cache line on NA51089. The DMA + * skips the padding (DSL) in units of its bus width, 3 bits' worth: 8 + * bytes on NA51089 and NA51084, but 4 on NA51055 (the vendor's + * eth_na51055.c), where no skip reaches a 64-byte line. The NT9852x + * targets therefore pack the descriptors, no skip: this port runs with + * the data cache off (SYS_DCACHE_OFF), so no cache line is shared with + * the DMA. + */ +#ifdef CONFIG_NVT_NA51055 +#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) +#error "packed descriptors need the data cache off" +#endif +#define DESC_SIZE 16 +#else +#define DESC_SIZE ARCH_DMA_MINALIGN +#endif + struct eqos_desc { u32 des0, des1, des2, des3; - u8 pad[ARCH_DMA_MINALIGN - 16]; +#if DESC_SIZE > 16 + u8 pad[DESC_SIZE - 16]; +#endif }; #define TX_DESCS 4 @@ -247,11 +268,16 @@ static int eqos_start(struct eth_device *dev, struct bd_info *bis) writel(RXQ0_EN, MAC_RXQ_CTRL0); eqos_write_hwaddr(dev); - /* Bursts of 16 x 8 beats, as the vendor driver */ - writel(CH_PBLX8 | CH_DSL((ARCH_DMA_MINALIGN - 16) / 8), DMA_CH_CTRL); + /* + * Bursts of 16 x 8 beats, as the vendor drivers; the NT9852x one + * also lets the AXI master idle into low power (AALE). + */ + writel(CH_PBLX8 | CH_DSL((DESC_SIZE - 16) / 8), DMA_CH_CTRL); writel(CH_PBL(16) | CH_TX_OSP, DMA_CH_TX_CTRL); writel(CH_PBL(16) | CH_RBSZ(PKT_SIZE), DMA_CH_RX_CTRL); - writel(SYSBUS_RD_OSR_LMT(2), DMA_SYSBUS_MODE); + writel(SYSBUS_RD_OSR_LMT(2) | + (nvt_chip_id() == NVT_CHIP_NA51089 ? 0 : SYSBUS_AALE), + DMA_SYSBUS_MODE); memset(tx_descs, 0, sizeof(tx_descs)); memset(rx_descs, 0, sizeof(rx_descs)); From e998466b8f7ae6bfff109790def1adf3b1888b9f Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 22:08:47 +0000 Subject: [PATCH 21/38] novatek: add the NT98520, NT98522, NT98523, NT98525, NT98528, NT98529 The NT9852x SDK's parts: NA51055 (NT98520/522/523/525) and NA51084 (NT98528/529), two Cortex-A9s each, booted by the NT9852x loader (board/novatek/na51055/loader) into the same image layout as NA51089's. - Kconfig: TARGET_NT985xx, NVT_NA51055 for both dies, NVT_DDR_SIZE as each loader is built, and NVT_OSMEM, what Linux gets by default: 32M as before, 64M on the NT98523 (its SDK board's; its CMA is at 48 MiB), 256M on the 512 MiB parts. - Device trees: openipc/na51055.dtsi and na51084.dtsi are the SDK's NT98525 and NT98528 NOR boards (cfg_IPCAM1_NOR_EVB, cfg_528_IPCAM1_NOR_EVB) flattened, with the OpenIPC chain in /nor, U-Boot at 0x03900000 and the loader's scratch below it. The parts' trees carry what their SDK boards change: the NT98523's DDR and split (cfg_IPCAM1_523_NOR_EVB), the NT98529's 1.2 GHz CPUs and PLL15 (cfg_529_IPCAM1_RAMDISK_EVB). The NT98520 and NT98522 have no SDK board: the NT98525's tree with one DDR die, the NT98523's with 64 MiB. The SDK's NA51055 boards describe one CPU, its NA51084 ones two. - build.sh: build_loader takes the die and the loader's make variables. DDR: the in-package 512 Mbit / 1 Gbit of the NT98522/523 with no DDR2; the SDK boards' external 4 Gbit dies otherwise (DDR3, 933 MHz; 1066 MHz on the NT98528/529). The 528 model's loader is built without its own SD card update to fit its 64 KiB, and needs a bare-metal toolchain (see a051a705a05). Verified under qemu-hisilicon's nt98523, nt98525, nt98528 and nt98529 (OpenIPC/qemu-hisilicon#222), which run the image's loader; the NT98520 and NT98522 images on nt98525 and nt98523, the same dies. Built as CI builds them (Ubuntu 24.04, arm-none-eabi 13.2, gcc-arm-linux-gnueabi), every image reaches the prompt twice, the second time with the environment the first saved; the loaders report 520_DRAM1_933_4096Mb, 522_DRAM1_933_512Mb, 523_DRAM1_933_1024Mb, 525_..._4096Mb and 528_DRAM1_1066_4096Mb_DRAM2_1066_4096Mb. Not on silicon: the external DDR's settings are the SDK boards', and must match a board's. --- arch/arm/mach-novatek/Kconfig | 64 +- build.sh | 73 +- include/configs/novatek.h | 6 +- include/configs/openipc-common.h | 4 +- openipc/na51055.dtsi | 1027 ++++++++++++++++++++++++++ openipc/na51084.dtsi | 1187 ++++++++++++++++++++++++++++++ openipc/nt98520.dts | 22 + openipc/nt98520_config | 2 + openipc/nt98522.dts | 49 ++ openipc/nt98522_config | 2 + openipc/nt98523.dts | 53 ++ openipc/nt98523_config | 2 + openipc/nt98525.dts | 8 + openipc/nt98525_config | 2 + openipc/nt98528.dts | 8 + openipc/nt98528_config | 2 + openipc/nt98529.dts | 32 + openipc/nt98529_config | 2 + 18 files changed, 2516 insertions(+), 29 deletions(-) create mode 100644 openipc/na51055.dtsi create mode 100644 openipc/na51084.dtsi create mode 100644 openipc/nt98520.dts create mode 100644 openipc/nt98520_config create mode 100644 openipc/nt98522.dts create mode 100644 openipc/nt98522_config create mode 100644 openipc/nt98523.dts create mode 100644 openipc/nt98523_config create mode 100644 openipc/nt98525.dts create mode 100644 openipc/nt98525_config create mode 100644 openipc/nt98528.dts create mode 100644 openipc/nt98528_config create mode 100644 openipc/nt98529.dts create mode 100644 openipc/nt98529_config diff --git a/arch/arm/mach-novatek/Kconfig b/arch/arm/mach-novatek/Kconfig index 426391ca3256..1bc0165c6ec2 100644 --- a/arch/arm/mach-novatek/Kconfig +++ b/arch/arm/mach-novatek/Kconfig @@ -28,19 +28,81 @@ config TARGET_NT98566 help NA51089 with 128 MiB of DDR3 in the package. +config TARGET_NT98520 + bool "NT98520" + select NVT_NA51055 + help + NA51055 (two Cortex-A9s) with external DDR3, one die, 512 MiB + as the loader is built. + +config TARGET_NT98522 + bool "NT98522" + select NVT_NA51055 + help + NA51055 with 64 MiB of DDR in the package. + +config TARGET_NT98523 + bool "NT98523" + select NVT_NA51055 + help + NA51055 with 128 MiB of DDR in the package. + +config TARGET_NT98525 + bool "NT98525" + select NVT_NA51055 + help + NA51055 with two external DDR3 dies, 512 MiB each on the SDK's + board; U-Boot uses the first. + +config TARGET_NT98528 + bool "NT98528" + select NVT_NA51055 + help + NA51084 (two Cortex-A9s, the NT9852x SDK's other die) with two + external DDR3 dies, 512 MiB each on the SDK's board. + +config TARGET_NT98529 + bool "NT98529" + select NVT_NA51055 + help + NA51084 as the NT98528, its CPU cleared for 1.2 GHz. + endchoice config NVT_NA51089 bool +config NVT_NA51055 + bool + help + The NT9852x SDK's dies, NA51055 and NA51084: NA51089's blocks at + NA51089's addresses, two Cortex-A9s, their own loader + (board/novatek/na51055/loader). The chip ID tells them apart. + config NVT_DDR_SIZE hex default 0x20000000 if TARGET_NT98560 default 0x08000000 if TARGET_NT98566 + default 0x20000000 if TARGET_NT98520 || TARGET_NT98525 + default 0x20000000 if TARGET_NT98528 || TARGET_NT98529 + default 0x08000000 if TARGET_NT98523 default 0x04000000 help The DDR at 0: the package's, or the board's for a part with - external DDR. + external DDR, as its loader is built. A second DDR die (at + 0x40000000 on NA51055 / NA51084) is the media pool's alone. + +config NVT_OSMEM + string + default "256M" if NVT_DDR_SIZE >= 0x20000000 + default "64M" if TARGET_NT98523 + default "32M" + help + What Linux gets of the DDR by default (osmem, mem=); the vendor + media modules get the rest. 32M is what OpenIPC's install guide + sets on the NT98562/566's vendor U-Boot; larger parts give Linux + what their SDK board does (the NT98523's tree keeps its CMA at + 48 MiB). config SYS_SOC default "novatek" diff --git a/build.sh b/build.sh index e4b0b63f76a4..199537de7aa5 100755 --- a/build.sh +++ b/build.sh @@ -20,7 +20,6 @@ if [ -z "${LOADER_CROSS_COMPILE}" ]; then fi BOOT_SRCDIR=$(pwd) -LOADER_SRCDIR=${BOOT_SRCDIR}/board/novatek/na51089/loader mkdir -p output @@ -33,33 +32,33 @@ mkconfig() { cat "$@" > "${builddir}/.config" } -# The SDK's loader, built in a copy: its make system writes into its tree +# The SDK's loader of a die (board/novatek/<die>/loader), built in a copy: +# its make system writes into its tree. The rest are its make variables +# (CHIP=, DRAM1_CLK=, ...). build_loader() { loaderdir=$1 - chip=$2 - dram_clk=$3 - dram_size=$4 + die=$2 + shift 2 rm -rf "${loaderdir}" - cp -a "${LOADER_SRCDIR}" "${loaderdir}" + cp -a "${BOOT_SRCDIR}/board/novatek/${die}/loader" "${loaderdir}" if ! make -C "${loaderdir}/MakeCommon" release \ - CROSS_COMPILE="${LOADER_CROSS_COMPILE}" \ - CHIP="${chip}" DRAM1_CLK="${dram_clk}" \ - ${dram_size:+SDRAM_SIZE="${dram_size}"} \ + CROSS_COMPILE="${LOADER_CROSS_COMPILE}" "$@" \ >"${loaderdir}.log" 2>&1 </dev/null; then tail -n 30 "${loaderdir}.log" >&2 return 1 fi } -# Novatek NA51089: the mask ROM starts the loader, which trains the DDR, -# reads the device tree at 0x10000 and unpacks U-Boot from 0x20000 to its -# link address. +# Novatek NA51089, NA51055 / NA51084: the mask ROM starts the loader, +# which trains the DDR, reads the device tree at 0x10000 and unpacks +# U-Boot from 0x20000 to its link address. +# build_nvt <soc> <loader die> <chip> [loader make variables...] build_nvt() { soc=$1 - chip=$2 - dram_clk=$3 - dram_size=$4 + die=$2 + chip=$3 + shift 3 builddir=${BOOT_SRCDIR}/output/build-${soc}-nor loaderdir=${BOOT_SRCDIR}/output/build-${soc}-loader loader=${loaderdir}/Project/Model/Loader${chip}_Data/Release/LD98${chip}A.bin @@ -73,8 +72,7 @@ build_nvt() { "${builddir}/scripts/dtc/dtc" -q -I dts -O dtb \ -o "${builddir}/${soc}.dtb" "openipc/${soc}.dts" || return 1 - build_loader "${loaderdir}" "${chip}" "${dram_clk}" "${dram_size}" || - return 1 + build_loader "${loaderdir}" "${die}" CHIP="${chip}" "$@" || return 1 text=$(sed -n 's/^CONFIG_SYS_TEXT_BASE=//p' "${builddir}/.config") python3 openipc/nvt-image.py "${loader}" "${builddir}/${soc}.dtb" \ @@ -94,20 +92,51 @@ build_soc() { # is ConfigRam/560/51089A_DRAM1_<clock>_<size in Mbit>.ini, the # SDK's 933 MHz, 4 Gbit. nt98560) - build_nvt "${soc}" 560 933 4096 ;; + build_nvt "${soc}" na51089 560 DRAM1_CLK=933 SDRAM_SIZE=4096 ;; nt98561) - build_nvt "${soc}" 561 522 ;; + build_nvt "${soc}" na51089 561 DRAM1_CLK=522 ;; nt98562) - build_nvt "${soc}" 562 666 ;; + build_nvt "${soc}" na51089 562 DRAM1_CLK=666 ;; nt98566) - build_nvt "${soc}" 566 933 ;; + build_nvt "${soc}" na51089 566 DRAM1_CLK=933 ;; + # The NT9852x loader (MakeConfig.txt's tables). The NT98522 and + # NT98523 have their DDR1 in the package (512 Mbit, 1 Gbit, at + # 933 MHz), and no DDR2 here: the SDK board's external one is not + # every board's. The others' DDR is on the board: the SDK + # boards' 4 Gbit dies, DDR3 at 933 MHz (NT98520: DDR1 only; + # NT98525: DDR1 and DDR2) or 1066 MHz (NT98528/529, the 528 model). + # The 528 model's loader fills its 64 KiB with the LZMA decoder + # only without its own SD card update (FW98528A.bin from a card); + # U-Boot's recovery from SD is OpenIPC's. + nt98520) + build_nvt "${soc}" na51055 520 DRAM1_CLK=933 SDRAM_SIZE=4096 ;; + nt98522|nt98523) + build_nvt "${soc}" na51055 "${soc#nt98}" DRAM2_CLK=0 \ + SDRAM2_SIZE=0 ;; + nt98525) + build_nvt "${soc}" na51055 525 DRAM1_CLK=933 SDRAM_SIZE=4096 \ + DRAM2_CLK=933 SDRAM2_SIZE=4096 ;; + nt98528|nt98529) + # A Linux toolchain's build of the 528 flow stops after the + # DDR training (arm-linux-gnueabi 12/13 under qemu-hisilicon's + # nt98528); a bare-metal one's (arm-none-eabi 13.2, the SDK's + # Linaro 6.4 arm-eabi) boots. + case "${LOADER_CROSS_COMPILE}" in + *-linux-*) + echo "${soc}: its loader needs a bare-metal toolchain" \ + "(arm-none-eabi-), not ${LOADER_CROSS_COMPILE}" >&2 + return 1 ;; + esac + build_nvt "${soc}" na51055 "${soc#nt98}" MODEL=EMU_EVB_528 \ + DRAM1_CLK=1066 SDRAM_SIZE=4096 DRAM2_CLK=1066 \ + SDRAM2_SIZE=4096 STORAGEEXT=NONE ;; *) echo "unsupported SoC: ${soc}" >&2 return 1 ;; esac } -ALL_SOCS="nt98560 nt98561 nt98562 nt98566" +ALL_SOCS="nt98560 nt98561 nt98562 nt98566 nt98520 nt98522 nt98523 nt98525 nt98528 nt98529" SOCS="$@" [ -z "${SOCS}" ] && SOCS="${ALL_SOCS}" diff --git a/include/configs/novatek.h b/include/configs/novatek.h index 87c592ff8ce0..b05c819cbb8f 100644 --- a/include/configs/novatek.h +++ b/include/configs/novatek.h @@ -13,10 +13,8 @@ /* The DDR in the package, or on the board */ #define PHYS_SDRAM_1_SIZE CONFIG_NVT_DDR_SIZE -/* Linux's share of a 512 MiB part, as on the SDK's boards (mem=) */ -#if CONFIG_NVT_DDR_SIZE >= 0x20000000 -#define OPENIPC_OSMEM "256M" -#endif +/* Linux's share of the DDR by default (mem=) */ +#define OPENIPC_OSMEM CONFIG_NVT_OSMEM /* The loader starts U-Boot at its link address */ #define CONFIG_SYS_UBOOT_BASE CONFIG_SYS_TEXT_BASE diff --git a/include/configs/openipc-common.h b/include/configs/openipc-common.h index eb3e77b1a7c8..0c032335eef1 100644 --- a/include/configs/openipc-common.h +++ b/include/configs/openipc-common.h @@ -26,8 +26,8 @@ /* * Kernel memory (mem=): the rest of the DDR is the media pool, which * ft_board_setup() hands to the vendor modules (/hdal-memory/media). - * What OpenIPC's install guide sets on the vendor U-Boot; a part with - * more DDR than the 128 MiB packages gives Linux what its SDK board does. + * What OpenIPC's install guide sets on the vendor U-Boot, unless the + * target says otherwise (NVT_OSMEM). */ #ifndef OPENIPC_OSMEM #define OPENIPC_OSMEM "32M" diff --git a/openipc/na51055.dtsi b/openipc/na51055.dtsi new file mode 100644 index 000000000000..340e1c6f1a3f --- /dev/null +++ b/openipc/na51055.dtsi @@ -0,0 +1,1027 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Novatek NA51055 (NT98520/522/523/525): the device tree of the NT9852x + * SDK's NT98525 NOR board (cfg_IPCAM1_NOR_EVB, flattened), with the + * OpenIPC boot chain in the nor node: the loader at 0, this tree at + * 0x10000, U-Boot at 0x20000. U-Boot runs at 0x03900000, below 64 MiB as + * on NA51089, and the loader's scratch (linuxtmp) ends there. + * + * The loader reads /nvt_memory_cfg (where U-Boot runs, where this tree + * and SHMINFO go) and /nor/partition_uboot. U-Boot hands the tree on to + * the kernel, with /memory and /hdal-memory/media split at ${osmem}; a + * second DDR die's range in media (0x40000000) stays the pool's + * (board/novatek/na51089/na51089.c). + */ + +/ { + model = "Novatek NA51055"; + compatible = "novatek,na51055", "nvt,ca9"; + interrupt-parent = <&gic>; + #address-cells = <0x01>; + #size-cells = <0x01>; + + cpus { + #address-cells = <0x01>; + #size-cells = <0x00>; + + cpu0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <0x00>; + next-level-cache = <&L2>; + clock-frequency = <0x39387000>; + apb-frequency = <0x7270e00>; + phandle = <0x04>; + }; + }; + + cg@f0020000 { + compatible = "nvt,core_clk"; + reg = <0xf0020000 0x1000>; + }; + + periph_clk: periph_clk { + compatible = "nvt,periph_clk"; + #clock-cells = <0x00>; + clock-output-names = "periph_clk"; + phandle = <0x03>; + }; + + global_timer@ffd00200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0xffd00200 0x20>; + interrupts = <0x01 0x0b 0xf01>; + clocks = <&periph_clk>; + }; + + private_timer@ffd00600 { + compatible = "arm,cortex-a9-twd-timer"; + reg = <0xffd00600 0x20>; + interrupts = <0x01 0x0d 0xf01>; + clocks = <&periph_clk>; + }; + + pmu { + compatible = "arm,cortex-a9-pmu"; + interrupts = <0x00 0x50 0x04>; + interrupt-affinity = <&cpu0>; + }; + + L2: cache-controller@ffe00000 { + compatible = "arm,pl310-cache"; + reg = <0xffe00000 0x1000>; + interrupts = <0x00 0x60 0x04>; + cache-unified; + arm,shared-override; + cache-level = <0x02>; + arm,data-latency = <0x02 0x02 0x02>; + arm,tag-latency = <0x02 0x02 0x02>; + phandle = <0x02>; + }; + + gic: interrupt-controller@0xffd00000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <0x03>; + interrupt-controller; + reg = <0xffd01000 0x1000>, <0xffd00100 0x1000>; + phandle = <0x01>; + }; + + chosen { + bootargs = " "; + }; + + aliases { + mmc0 = "/mmc@f0420000"; + mmc1 = "/mmc@f0500000"; + }; + + uart@f0290000 { + compatible = "ns16550a"; + reg = <0xf0290000 0x1000>; + interrupts = <0x00 0x2b 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x16e3600>; + fifo-size = <0x10>; + uart_id = <0x00>; + }; + + uart@f0300000 { + compatible = "ns16550a"; + reg = <0xf0300000 0x1000>; + interrupts = <0x00 0x2c 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x2dc6c00>; + fifo-size = <0x40>; + hw_flowctrl = <0x00>; + rx_trig_level = <0x03>; + uart_id = <0x01>; + }; + + uart@f0310000 { + compatible = "ns16550a"; + reg = <0xf0310000 0x1000>; + interrupts = <0x00 0x2d 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x2dc6c00>; + fifo-size = <0x40>; + hw_flowctrl = <0x00>; + rx_trig_level = <0x03>; + uart_id = <0x02>; + }; + + kdrv_rpc: cc@f0090000 { + compatible = "kdrv_rpc"; + reg = <0xf0090000 0x300>; + interrupts = <0x00 0x3b 0x04>; + }; + + mmc0: mmc@f0420000 { + compatible = "nvt,nvt_mmc"; + reg = <0xf0420000 0x1000>; + interrupts = <0x00 0x1e 0x04>; + max-frequency = <0x2dc6c00>; + voltage-switch = <0x00>; + max-voltage = <0xce4>; + bus-width = <0x04>; + neg-sample-edge = <0x00>; + driving = <0x0a 0x0a 0x0a 0x19 0x19 0x19 0x19 0x19 0x19 0x19 0x19 0x19>; + cd_gpio = <0x31 0x00 0x00>; + }; + + mmc1: mmc@f0500000 { + compatible = "nvt,nvt_mmc2"; + reg = <0xf0500000 0x1000>; + interrupts = <0x00 0x1f 0x04>; + max-frequency = <0x2dc6c00>; + voltage-switch = <0x00>; + max-voltage = <0xce4>; + bus-width = <0x04>; + neg-sample-edge = <0x00>; + driving = <0x0a 0x06 0x06 0x0f 0x06 0x06 0x0f 0x06 0x06 0x0f 0x06 0x06>; + cd_gpio = <0x00 0x00 0x01>; + }; + + nand: nand@f0400000 { + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "nvt,nvt_spinand"; + reg = <0xf0400000 0x1000>; + interrupts = <0x00 0x1d 0x04>; + clock-frequency = <0x4c4b400>; + nvt-devname = "spi_nand.0"; + }; + + nor: nor@f0400000 { + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "nvt,nvt_spinor"; + reg = <0xf0400000 0x1000>; + interrupts = <0x00 0x1d 0x04>; + clock-frequency = <0x2dc6c00>; + nvt-devname = "spi_nor.0"; + trace-stdtable = <0x01>; + + + partition_loader { + label = "loader"; + reg = <0x00 0x00 0x00 0x10000>; + }; + + partition_fdt { + label = "fdt"; + reg = <0x00 0x10000 0x00 0x10000>; + }; + + partition_uboot { + label = "uboot"; + reg = <0x00 0x20000 0x00 0x20000>; + }; + + /* The loader looks a partition up here by its label */ + nvtpack { + ver = "NVTPACK_FW_INI_16072017"; + method = <0x01>; + + index { + + id0 { + partition_name = "loader"; + }; + + id1 { + partition_name = "fdt"; + }; + + id2 { + partition_name = "uboot"; + }; + }; + }; + }; + + gpio: gpio@f0070000 { + compatible = "nvt,nvt_gpio"; + reg = <0xf0070000 0x10000>; + interrupts = <0x00 0x18 0x04>; + #gpio-cells = <0x02>; + }; + + eth@f02b0000 { + compatible = "nvt,synopsys_eth"; + reg = <0xf02b0000 0x200 0xf02b0208 0x35f8>; + interrupts = <0x00 0x22 0x04>; + sp-clk = <0x00>; + ref-clk-out = <0x00>; + }; + + mdio0: mdio@f02b0200 { + compatible = "nvt,eth_mdio"; + reg = <0xf02b0200 0x08>; + }; + + phy@f02b3800 { + compatible = "nvt,eth_phy"; + reg = <0xf02b3800 0x400>; + }; + + wdt@f0050000 { + compatible = "nvt,nvt_wdt"; + reg = <0xf0050000 0x10000>; + interrupts = <0x00 0x39 0x04>; + }; + + pwm: pwm@f0210000 { + compatible = "nvt,nvt_pwm"; + reg = <0xf0210000 0x2000>; + interrupts = <0x00 0x1a 0x04>; + }; + + adc@f0260000 { + compatible = "nvt,nvt_adc"; + reg = <0xf0260000 0x1000>; + interrupts = <0x00 0x2f 0x04>; + #io-channel-cells = <0x01>; + }; + + rtc@f0060000 { + compatible = "nvt,nvt_rtc"; + reg = <0xf0060000 0x100>; + interrupts = <0x00 0x38 0x04>; + }; + + drtc@f00b0000 { + compatible = "nvt,nvt_drtc"; + reg = <0xf00b0000 0x100>; + }; + + crypto: crypto@f0620000 { + compatible = "nvt,nvt_crypto"; + reg = <0xf0620000 0x100>; + interrupts = <0x00 0x26 0x04>; + mclk = <0x01>; + }; + + hash: hash@f0700000 { + compatible = "nvt,nvt_hash"; + reg = <0xf0700000 0x100>; + interrupts = <0x00 0x1c 0x04>; + mclk = <0x01>; + }; + + rsa: rsa@f06a0000 { + compatible = "nvt,nvt_rsa"; + reg = <0xf06a0000 0x100>; + interrupts = <0x00 0x14 0x04>; + mclk = <0x01>; + }; + + top: top@f0010000 { + compatible = "nvt,nvt_top"; + reg = <0xf0010000 0x2000 0xf0030000 0x2000 0xf0070000 0x10000>; + + sdio { + pinmux = <0x01>; + }; + + sdio2 { + pinmux = <0x01>; + }; + + sdio3 { + pinmux = <0x00>; + }; + + nand { + pinmux = <0x05>; + }; + + sensor { + pinmux = <0x00>; + }; + + sensor2 { + pinmux = <0x00>; + }; + + mipi_lvds { + pinmux = <0x00>; + }; + + i2c { + pinmux = <0x00>; + }; + + sif { + pinmux = <0x08>; + }; + + uart { + pinmux = <0x01>; + }; + + spi { + pinmux = <0x00>; + }; + + sdp { + pinmux = <0x00>; + }; + + remote { + pinmux = <0x00>; + }; + + pwm { + pinmux = <0x00>; + }; + + pwm2 { + pinmux = <0x00>; + }; + + ccnt { + pinmux = <0x00>; + }; + + audio { + pinmux = <0x00>; + }; + + lcd { + pinmux = <0x10000000>; + }; + + tv { + pinmux = <0x00>; + }; + + eth { + pinmux = <0x12>; + }; + + misc { + pinmux = <0x00>; + }; + }; + + sie@f0c00000 { + compatible = "nvt,drv_sie"; + reg = <0xf0c00000 0x900 0xf0d20000 0x900 0xf0d30000 0x900 0xf0d40000 0x900 0xf0d80000 0x900>; + interrupts = <0x00 0x01 0x04 0x00 0x02 0x04 0x00 0x03 0x04 0x00 0x3b 0x04 0x00 0x3d 0x04>; + power_saving = <0x00>; + }; + + tge@f0cc0000 { + compatible = "nvt,kdrv_tge"; + reg = <0xf0cc0000 0x150>; + interrupts = <0x00 0x16 0x04>; + }; + + rhe@f0ce0000 { + compatible = "nvt,kdrv_rhe"; + reg = <0xf0ce0000 0x900>; + interrupts = <0x00 0x0d 0x04>; + }; + + ime@f0c40000 { + compatible = "nvt,kdrv_ime"; + reg = <0xf0c40000 0x1000>; + interrupts = <0x00 0x06 0x04>; + }; + + ife2@f0d00000 { + compatible = "nvt,kdrv_ife2"; + reg = <0xf0d00000 0x100>; + interrupts = <0x00 0x09 0x04>; + }; + + ise@f0c90000 { + compatible = "nvt,kdrv_ise"; + reg = <0xf0c90000 0x100>; + interrupts = <0x00 0x15 0x04 0x00 0x55 0x04>; + }; + + ipe@f0c30000 { + compatible = "nvt,kdrv_ipe"; + reg = <0xf0c30000 0x900>; + interrupts = <0x00 0x05 0x04>; + }; + + ife@f0c70000 { + compatible = "nvt,kdrv_ife"; + reg = <0xf0c70000 0x800>; + interrupts = <0x00 0x08 0x04>; + }; + + vpe@f0cd0000 { + compatible = "nvt,kdrv_vpe"; + reg = <0xf0cd0000 0x1040>; + interrupts = <0x00 0x3e 0x04>; + }; + + ai@f0c60000 { + compatible = "nvt,kdrv_ai"; + reg = <0xf0c60000 0x1cc 0xf0d50000 0x94 0xf0d60000 0x200 0xf0cb0000 0x200>; + interrupts = <0x00 0x0e 0x04 0x00 0x0d 0x04 0x00 0x31 0x04 0x00 0x0b 0x04>; + }; + + md@f0c10000 { + compatible = "nvt,kdrv_md"; + reg = <0xf0c10000 0x150>; + interrupts = <0x00 0x2e 0x04>; + }; + + dis@f0c50000 { + compatible = "nvt,kdrv_dis"; + reg = <0xf0c50000 0x114>; + interrupts = <0x00 0x0a 0x04>; + }; + + coe@f0a11000 { + compatible = "nvt,nvt_coe"; + reg = <0xf0a11000 0x2c0>; + }; + + dce@f0c20000 { + compatible = "nvt,kdrv_dce"; + reg = <0xf0c20000 0x650>; + interrupts = <0x00 0x07 0x04>; + }; + + ive@f0d70000 { + compatible = "nvt,kdrv_ive"; + reg = <0xf0d70000 0x6c>; + interrupts = <0x00 0x35 0x04>; + }; + + sde@f0d90000 { + compatible = "nvt,kdrv_sde"; + reg = <0xf0d90000 0x90>; + interrupts = <0x00 0x4a 0x04>; + }; + + ide@f0800000 { + compatible = "nvt,nvt_ide"; + reg = <0xf0800000 0x1000>; + interrupts = <0x00 0x30 0x04>; + }; + + dsi@f0840000 { + compatible = "nvt,nvt_dsi"; + reg = <0xf0840000 0x1000>; + interrupts = <0x00 0x32 0x04>; + }; + + csi@f0280000 { + compatible = "nvt,nvt_csi"; + reg = <0xf0280000 0x100 0xf0330000 0x100>; + interrupts = <0x00 0x36 0x04 0x00 0x37 0x04>; + }; + + lvds@f0270000 { + compatible = "nvt,nvt_lvds"; + reg = <0xf0270000 0x200 0xf0370000 0x200>; + interrupts = <0x00 0x36 0x04 0x00 0x37 0x04>; + }; + + senphy@f06b0000 { + compatible = "nvt,nvt_senphy"; + reg = <0xf06b0000 0x100>; + }; + + ssenif@f0xx0000 { + compatible = "nvt,nvt_ssenif"; + reg = <0xf02c0000 0x2000>; + interrupts = <0x00 0x3d 0x04>; + }; + + sif@f0240000 { + compatible = "nvt,nvt_sif"; + reg = <0xf0240000 0x200>; + interrupts = <0x00 0x28 0x04>; + clock-frequency = <0xf4240>; + }; + + graphic@f0c80000 { + compatible = "nvt,nvt_graphic"; + reg = <0xf0c80000 0x300 0xf0d10000 0x100>; + interrupts = <0x00 0x12 0x04 0x00 0x13 0x04>; + }; + + affine@f0ca0000 { + compatible = "nvt,nvt_affine"; + reg = <0xf0ca0000 0x100>; + interrupts = <0x00 0x34 0x04>; + }; + + h26x@f0a10000 { + compatible = "nvt,nvt_h26x"; + reg = <0xf0a10000 0xa00>; + interrupts = <0x00 0x10 0x04>; + power_saving = <0x00>; + }; + + clocksource@f0040000 { + compatible = "nvt,nvt_clk_src"; + reg = <0xf0040000 0x300>; + interrupts = <0x00 0x00 0x04>; + clock-frequency1 = <0x2dc6c0>; + clock-frequency2 = <0x2dc6c0>; + clksrc = <0x01>; + bits = <0x20>; + clock-names = "f0040000.timer"; + }; + + ptp: ptp-dte@f0040000 { + compatible = "nvt,ptp-dte"; + reg = <0xf0040000 0x300>; + clock-frequency = <0x2dc6c0>; + interrupts = <0x00 0x00 0x04>; + }; + + timer@f0040000 { + compatible = "nvt,nvt_timer"; + reg = <0xf0040000 0x300>; + interrupts = <0x00 0x00 0x04>; + }; + + eac@f0640000 { + compatible = "nvt,nvt_eac"; + reg = <0xf0640000 0x200>; + }; + + jpg@f0a00000 { + compatible = "nvt,nvt_jpg"; + reg = <0xf0a00000 0x100>; + interrupts = <0x00 0x11 0x04>; + }; + + nvt_usb2host@f0600000 { + compatible = "nvt,ehci-nvtivot"; + reg = <0xf0600000 0x10000>; + interrupts = <0x00 0x1b 0x04>; + }; + + nvt_usb2dev@f0600000 { + compatible = "nvt,fotg200_udc"; + reg = <0xf0600000 0x10000>; + interrupts = <0x00 0x1b 0x04>; + }; + + nvt_usb_chrg@f0600000 { + compatible = "nvt,nvt_usb_chrgdet"; + reg = <0xf0600000 0x10000>; + }; + + dai@f0630000 { + compatible = "nvt,nvt_dai"; + reg = <0xf0630000 0xbc>; + interrupts = <0x00 0x0f 0x04>; + }; + + rotate@f0cf0000 { + compatible = "nvt,nvt_rotation"; + reg = <0xf0cf0000 0x100>; + interrupts = <0x00 0x51 0x04>; + }; + + drvdump@0 { + compatible = "nvt,nvt_drvdump"; + }; + + dsp@f1430000 { + compatible = "nvt,nvt_dsp"; + reg = <0xf1430000 0x200 0xf2000000 0x1000000 0xf1440000 0x200 0xf3000000 0x1000000>; + interrupts = <0x00 0x4c 0x04 0x00 0x4d 0x04>; + }; + + spi0: spi@f0230000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0230000 0x10000>; + interrupts = <0x00 0x23 0x04>; + dma-support = <0x00>; + nvt-devname = <0x00>; + status = "okay"; + #address-cells = <0x01>; + #size-cells = <0x00>; + }; + + spi1: spi@f0320000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0320000 0x10000>; + interrupts = <0x00 0x24 0x04>; + dma-support = <0x00>; + nvt-devname = <0x01>; + status = "okay"; + }; + + spi2: spi@f0340000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0340000 0x10000>; + interrupts = <0x00 0x25 0x04>; + dma-support = <0x00>; + nvt-devname = <0x02>; + status = "okay"; + }; + + sdp@f0390000 { + compatible = "nvt,nvt_sdp"; + reg = <0xf0390000 0x28>; + interrupts = <0x00 0x0c 0x04>; + }; + + tse@f0650000 { + compatible = "nvt,nvt_tse"; + reg = <0xf0650000 0x90>; + interrupts = <0x00 0x17 0x04>; + }; + + remote@f0250000 { + compatible = "nvt,nvt_remote"; + reg = <0xf0250000 0x28>; + interrupts = <0x00 0x19 0x04>; + }; + + rng: rng@f0680000 { + compatible = "nvt,nvt_rng"; + reg = <0xf0680000 0x100>; + }; + + nvt_arb@f0000000 { + compatible = "nvt,nvt_arb"; + reg = <0xf0000000 0xa000 0xf0100000 0xa000 0xf0fe0000 0x300 0xf0fd0000 0x300>; + interrupts = <0x00 0x21 0x04 0x00 0x33 0x04>; + }; + + nvt_otp@f0660000 { + compatible = "nvt,nvt_otp"; + reg = <0xf0660000 0x70>; + }; + + pll_preset@0 { + + pll3 { + pll_config = <0x03 0x00 0x00>; + }; + + pll4 { + pll_config = <0x04 0x00 0x00>; + }; + + pll5 { + pll_config = <0x05 0x00 0x01>; + }; + + pll6 { + pll_config = <0x06 0x00 0x00>; + }; + + pll7 { + pll_config = <0x07 0x00 0x00>; + }; + + pll8 { + pll_config = <0x08 0x00 0x00>; + }; + + pll9 { + pll_config = <0x09 0x00 0x00>; + }; + + pll10 { + pll_config = <0x0a 0x00 0x01>; + }; + + pll11 { + pll_config = <0x0b 0x00 0x00>; + }; + + pll12 { + pll_config = <0x0c 0x00 0x01>; + }; + + pll13 { + pll_config = <0x0d 0x10b07600 0x01>; + }; + + pll14 { + pll_config = <0x0e 0x00 0x00>; + }; + + pll15 { + pll_config = <0x0f 0x5b8d800 0x01>; + }; + + pll16 { + pll_config = <0x10 0x00 0x00>; + }; + + pll17 { + pll_config = <0x11 0x00 0x00>; + }; + + pll18 { + pll_config = <0x12 0x00 0x00>; + }; + + pllf320 { + pll_config = <0x18 0x1312d000 0x01>; + }; + }; + + i2c0: i2c@f0220000 { + compatible = "nvt,nvt_i2c"; + reg = <0xf0220000 0x100>; + interrupts = <0x00 0x29 0x04>; + clock-frequency = <0x61a80>; + id = <0x00>; + #address-cells = <0x01>; + #size-cells = <0x00>; + }; + + i2c1: i2c2@f0350000 { + compatible = "nvt,nvt_i2c"; + reg = <0xf0350000 0x100>; + interrupts = <0x00 0x2a 0x04>; + clock-frequency = <0x61a80>; + id = <0x01>; + #address-cells = <0x01>; + #size-cells = <0x00>; + }; + + i2c2: i2c3@f03a0000 { + compatible = "nvt,nvt_i2c"; + reg = <0xf03a0000 0x100>; + interrupts = <0x00 0x3c 0x04>; + clock-frequency = <0x61a80>; + id = <0x02>; + #address-cells = <0x01>; + #size-cells = <0x00>; + }; + + audio@1 { + type = "none"; + i2s_ctrl = <0x00>; + sif_channel = <0x00>; + gpio_cold_reset = <0x00>; + gpio_data = <0x00>; + gpio_clk = <0x00>; + gpio_cs = <0x00>; + adc_zero = <0x00>; + }; + + audio@2 { + type = "embedded"; + i2s_ctrl = <0x04>; + sif_channel = <0x00>; + gpio_cold_reset = <0x00>; + gpio_data = <0x00>; + gpio_clk = <0x00>; + gpio_cs = <0x00>; + adc_zero = <0x00>; + }; + + display { + type = "lcd"; + lcd_ctrl = <0x00>; + sif_channel = <0x02>; + gpio_cs = <0x76>; + gpio_clk = <0x77>; + gpio_data = <0x78>; + }; + + nvtmpp { + compatible = "nvt,nvtmpp"; + }; + + isf_stream { + compatible = "nvt,isf_stream"; + }; + + isf_flow { + compatible = "nvt,isf_flow"; + }; + + isf_vdocap { + compatible = "nvt,isf_vdocap"; + }; + + isf_vdoprc { + compatible = "nvt,isf_vdoprc"; + }; + + isf_dummy { + compatible = "nvt,isf_dummy"; + }; + + isf_vdoenc { + compatible = "nvt,isf_vdoenc"; + }; + + isf_vdodec { + compatible = "nvt,isf_vdodec"; + }; + + isf_vdoout { + compatible = "nvt,isf_vdoout"; + }; + + dispobj { + compatible = "nvt,nvt_dispobj"; + }; + + dispdev { + compatible = "nvt,nvt_dispdev"; + }; + + audio { + compatible = "nvt,nvt_audio"; + }; + + msdcnvt { + compatible = "nvt,msdcnvt"; + }; + + msdcnvt_adj { + compatible = "nvt,msdcnvt_adj"; + }; + + msdcnvt_custom_si { + compatible = "nvt,msdcnvt_custom_si"; + }; + + wavstudio { + compatible = "nvt,wavstudio"; + }; + + isf_audenc { + compatible = "nvt,isf_audenc"; + }; + + isf_auddec { + compatible = "nvt,isf_auddec"; + }; + + isf_audcap { + compatible = "nvt,isf_audcap"; + }; + + isf_audout { + compatible = "nvt,isf_audout"; + }; + + nvt_ipc { + compatible = "nvt,nvt_ipc"; + }; + + nvt_disflow { + compatible = "nvt,nvt_disflow"; + }; + + nvt_memory_cfg { + #address-cells = <0x01>; + #size-cells = <0x01>; + + dram { + reg = <0x00 0x20000000>; + }; + + core2entry1 { + reg = <0x00 0x100000>; + }; + + fdt { + reg = <0x100000 0x100000>; + }; + + shmem { + reg = <0x200000 0x100000>; + }; + + loader { + reg = <0x1000000 0x100000>; + }; + + linuxtmp { + reg = <0x1100000 0x2800000>; + }; + + uboot { + reg = <0x3900000 0x6c0000>; + }; + + core2entry2 { + reg = <0x1ffc0000 0x40000>; + }; + }; + + memory { + device_type = "memory"; + reg = <0x00 0x12800000>; + }; + + reserved-memory { + #address-cells = <0x01>; + #size-cells = <0x01>; + ranges; + + cma0: cma0@0x05000000 { + compatible = "shared-dma-pool"; + reusable; + reg = <0x5000000 0x3000000>; + alignment = <0x400000>; + status = "okay"; + phandle = <0x05>; + }; + }; + + nvt_cma { + compatible = "nvt,nvt_cma"; + memory-region = <&cma0>; + id = <0x00>; + }; + + hdal-memory { + #address-cells = <0x01>; + #size-cells = <0x01>; + + media { + reg = <0x12800000 0xd800000 0x40000000 0x20000000>; + }; + }; + + hdal-maxpath-cfg { + vdocap_active_list = <0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00>; + vdoprc_maxdevice = <0x02>; + vdoenc_maxpath = <0x04>; + vdodec_maxpath = <0x02>; + vdoout_maxdevice = <0x01>; + adocap_maxdevice = <0x01>; + adoout_maxdevice = <0x01>; + adoenc_maxpath = <0x01>; + adodec_maxpath = <0x01>; + gfx_maxjob = <0x02>; + stamp_maximg = <0x10>; + vdoprc_maxstamp = <0x04 0x10>; + vdoprc_maxmask = <0x08 0x40>; + vdoenc_maxstamp = <0x20 0x10>; + vdoenc_maxmask = <0x00 0x40>; + vdoout_maxstamp = <0x00 0x10>; + vdoout_maxmask = <0x00 0x40>; + }; + + nvt_info { + BIN_NAME = "FW98525A"; + BIN_NAME_T = "FW98525T"; + RTOS_APP_MAIN = "test"; + EMBMEM_BLK_SIZE = "0x10000"; + EMBMEM = "EMBMEM_SPI_NOR"; + NVT_CFG_APP_EXTERNAL = "dhd_priv iperf-3"; + NVT_CFG_APP = "hfs lviewd nvtrtspd nvtipcd nvteventd uctrl fslinux ugxstrg nvtsystem camctrlcgi nvtweb nvtrecordManagerd msdcnvt arm_neon_perf mem ucmd isp_demon mem_hotplug memcpy drystone-2.0"; + NVT_ROOTFS_ETC = ""; + NVT_BINARY_FILE_STRIP = "no"; + NVT_CFG_KERNEL_CFG = ""; + NVT_LINUX_SMP = "NVT_LINUX_SMP_OFF"; + NVT_DEFAULT_NETWORK_BOOT_PROTOCOL = "NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_STATIC_IP"; + NVT_ROOTFS_TYPE = "NVT_ROOTFS_TYPE_SQUASH"; + NVT_ETHERNET = "NVT_ETHERNET_EQOS"; + NVT_SDIO_WIFI = "NVT_SDIO_WIFI_NONE"; + NVT_USB_WIFI = "NVT_USB_WIFI_NONE"; + NVT_USB_4G = "NVT_USB_4G_NONE"; + WIFI_RTK_MDL = "WIFI_RTK_MDL_8189"; + WIFI_BRCM_MDL = "WIFI_BRCM_MDL_43438a1_ampk6212axtal26"; + WIFI_NVT_MDL = "WIFI_NVT_MDL_18211"; + NVT_CURL_SSL = "NVT_CURL_SSL_OPENSSL"; + NVT_UBOOT_ENV_IN_STORG_SUPPORT = "NVT_UBOOT_ENV_IN_STORG_SUPPORT_OFF"; + }; +}; diff --git a/openipc/na51084.dtsi b/openipc/na51084.dtsi new file mode 100644 index 000000000000..c85962f5f166 --- /dev/null +++ b/openipc/na51084.dtsi @@ -0,0 +1,1187 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Novatek NA51084 (NT98528/529): the device tree of the NT9852x SDK's + * NT98528 NOR board (cfg_528_IPCAM1_NOR_EVB, flattened), with the + * OpenIPC boot chain in the nor node: the loader at 0, this tree at + * 0x10000, U-Boot at 0x20000. U-Boot runs at 0x03900000, below 64 MiB as + * on NA51089, and the loader's scratch (linuxtmp) ends there. + * + * The loader reads /nvt_memory_cfg (where U-Boot runs, where this tree + * and SHMINFO go) and /nor/partition_uboot. U-Boot hands the tree on to + * the kernel, with /memory and /hdal-memory/media split at ${osmem}; a + * second DDR die's range in media (0x40000000) stays the pool's + * (board/novatek/na51089/na51089.c). + */ + +/ { + model = "Novatek NA51055"; + compatible = "novatek,na51055", "nvt,ca9"; + interrupt-parent = <&gic>; + #address-cells = <0x01>; + #size-cells = <0x01>; + + cpus { + #address-cells = <0x01>; + #size-cells = <0x00>; + + cpu0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <0x00>; + next-level-cache = <&L2>; + clock-frequency = <0x39387000>; + apb-frequency = <0x7270e00>; + phandle = <0x04>; + }; + + cpu1: cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <0x01>; + cpu-release-addr = <0xf07f8000>; + next-level-cache = <&L2>; + clock-frequency = <0x39387000>; + apb-frequency = <0x7270e00>; + phandle = <0x05>; + }; + }; + + cg@f0020000 { + compatible = "nvt,core_clk"; + reg = <0xf0020000 0x1000>; + }; + + periph_clk: periph_clk { + compatible = "nvt,periph_clk"; + #clock-cells = <0x00>; + clock-output-names = "periph_clk"; + phandle = <0x03>; + }; + + global_timer@ffd00200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0xffd00200 0x20>; + interrupts = <0x01 0x0b 0xf01>; + clocks = <&periph_clk>; + }; + + private_timer@ffd00600 { + compatible = "arm,cortex-a9-twd-timer"; + reg = <0xffd00600 0x20>; + interrupts = <0x01 0x0d 0xf01>; + clocks = <&periph_clk>; + }; + + pmu { + compatible = "arm,cortex-a9-pmu"; + interrupts = <0x00 0x70 0x04>, <0x00 0x71 0x04>; + interrupt-affinity = <&cpu0>, <&cpu1>; + }; + + L2: cache-controller@ffe00000 { + compatible = "arm,pl310-cache"; + reg = <0xffe00000 0x1000>; + interrupts = <0x00 0x60 0x04>; + cache-unified; + arm,shared-override; + cache-level = <0x02>; + arm,data-latency = <0x02 0x02 0x02>; + arm,tag-latency = <0x02 0x02 0x02>; + phandle = <0x02>; + }; + + gic: interrupt-controller@0xffd00000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <0x03>; + interrupt-controller; + reg = <0xffd01000 0x1000>, <0xffd00100 0x1000>; + phandle = <0x01>; + }; + + scu: snoop-control-unit@0xffd00000 { + compatible = "arm,cortex-a9-scu"; + reg = <0xffd00000 0x100>; + }; + + chosen { + bootargs = " "; + }; + + aliases { + mmc0 = "/mmc@f0420000"; + mmc1 = "/mmc@f0500000"; + }; + + uart@f0290000 { + compatible = "ns16550a"; + reg = <0xf0290000 0x1000>; + interrupts = <0x00 0x2b 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x16e3600>; + fifo-size = <0x40>; + uart_id = <0x00>; + }; + + uart@f0300000 { + compatible = "ns16550a"; + reg = <0xf0300000 0x1000>; + interrupts = <0x00 0x2c 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x2dc6c00>; + fifo-size = <0x40>; + hw_flowctrl = <0x00>; + rx_trig_level = <0x03>; + uart_id = <0x01>; + }; + + uart@f0310000 { + compatible = "ns16550a"; + reg = <0xf0310000 0x1000>; + interrupts = <0x00 0x2d 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x2dc6c00>; + fifo-size = <0x40>; + hw_flowctrl = <0x00>; + rx_trig_level = <0x03>; + uart_id = <0x02>; + }; + + uart@f0380000 { + compatible = "ns16550a"; + reg = <0xf0380000 0x1000>; + interrupts = <0x00 0x3f 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x2dc6c00>; + fifo-size = <0x40>; + hw_flowctrl = <0x00>; + rx_trig_level = <0x03>; + uart_id = <0x03>; + }; + + uart@f03e0000 { + compatible = "ns16550a"; + reg = <0xf03e0000 0x1000>; + interrupts = <0x00 0x40 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x2dc6c00>; + fifo-size = <0x40>; + hw_flowctrl = <0x00>; + rx_trig_level = <0x03>; + uart_id = <0x04>; + }; + + uart@f03f0000 { + compatible = "ns16550a"; + reg = <0xf03f0000 0x1000>; + interrupts = <0x00 0x41 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x2dc6c00>; + fifo-size = <0x40>; + hw_flowctrl = <0x00>; + rx_trig_level = <0x03>; + uart_id = <0x05>; + }; + + kdrv_rpc: cc@f0090000 { + compatible = "kdrv_rpc"; + reg = <0xf0090000 0x300>; + interrupts = <0x00 0x3b 0x04>; + }; + + mmc0: mmc@f0420000 { + compatible = "nvt,nvt_mmc"; + reg = <0xf0420000 0x1000>; + interrupts = <0x00 0x1e 0x04>; + max-frequency = <0x2dc6c00>; + voltage-switch = <0x00>; + max-voltage = <0xce4>; + bus-width = <0x04>; + neg-sample-edge = <0x00>; + driving = <0x0f 0x0f 0x0f 0x14 0x0f 0x0f 0x19 0x19 0x19 0x19 0x19 0x19>; + cd_gpio = <0x31 0x00 0x00>; + }; + + mmc1: mmc@f0500000 { + compatible = "nvt,nvt_mmc2"; + reg = <0xf0500000 0x1000>; + interrupts = <0x00 0x1f 0x04>; + max-frequency = <0x2dc6c00>; + voltage-switch = <0x00>; + max-voltage = <0xce4>; + bus-width = <0x04>; + neg-sample-edge = <0x00>; + driving = <0x0f 0x08 0x08 0x0f 0x08 0x08 0x0f 0x08 0x08 0x0f 0x08 0x08>; + cd_gpio = <0x00 0x00 0x01>; + }; + + nand: nand@f0400000 { + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "nvt,nvt_spinand"; + reg = <0xf0400000 0x1000>; + interrupts = <0x00 0x1d 0x04>; + clock-frequency = <0x4c4b400>; + nvt-devname = "spi_nand.0"; + }; + + nor: nor@f0400000 { + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "nvt,nvt_spinor"; + reg = <0xf0400000 0x1000>; + interrupts = <0x00 0x1d 0x04>; + clock-frequency = <0x2dc6c00>; + nvt-devname = "spi_nor.0"; + trace-stdtable = <0x01>; + + + partition_loader { + label = "loader"; + reg = <0x00 0x00 0x00 0x10000>; + }; + + partition_fdt { + label = "fdt"; + reg = <0x00 0x10000 0x00 0x10000>; + }; + + partition_uboot { + label = "uboot"; + reg = <0x00 0x20000 0x00 0x20000>; + }; + + /* The loader looks a partition up here by its label */ + nvtpack { + ver = "NVTPACK_FW_INI_16072017"; + method = <0x01>; + + index { + + id0 { + partition_name = "loader"; + }; + + id1 { + partition_name = "fdt"; + }; + + id2 { + partition_name = "uboot"; + }; + }; + }; + }; + + gpio: gpio@f0070000 { + compatible = "nvt,nvt_gpio"; + reg = <0xf0070000 0x10000>; + interrupts = <0x00 0x18 0x04>; + #gpio-cells = <0x02>; + }; + + eth@f02b0000 { + compatible = "nvt,synopsys_eth"; + reg = <0xf02b0000 0x200 0xf02b0208 0x35f8>; + interrupts = <0x00 0x22 0x04>; + sp-clk = <0x00>; + ref-clk-out = <0x00>; + }; + + mdio0: mdio@f02b0200 { + compatible = "nvt,eth_mdio"; + reg = <0xf02b0200 0x08>; + }; + + phy@f02b3800 { + compatible = "nvt,eth_phy"; + reg = <0xf02b3800 0x400>; + }; + + wdt@f0050000 { + compatible = "nvt,nvt_wdt"; + reg = <0xf0050000 0x10000>; + interrupts = <0x00 0x39 0x04>; + }; + + pwm: pwm@f0210000 { + compatible = "nvt,nvt_pwm"; + reg = <0xf0210000 0x2000>; + interrupts = <0x00 0x1a 0x04>; + }; + + adc@f0260000 { + compatible = "nvt,nvt_adc"; + reg = <0xf0260000 0x1000>; + interrupts = <0x00 0x2f 0x04>; + #io-channel-cells = <0x01>; + }; + + rtc@f0060000 { + compatible = "nvt,nvt_rtc"; + reg = <0xf0060000 0x100>; + interrupts = <0x00 0x38 0x04>; + }; + + drtc@f00b0000 { + compatible = "nvt,nvt_drtc"; + reg = <0xf00b0000 0x100>; + }; + + crypto: crypto@f0620000 { + compatible = "nvt,nvt_crypto"; + reg = <0xf0620000 0x100>; + interrupts = <0x00 0x26 0x04>; + mclk = <0x01>; + }; + + hash: hash@f0700000 { + compatible = "nvt,nvt_hash"; + reg = <0xf0700000 0x100>; + interrupts = <0x00 0x1c 0x04>; + mclk = <0x01>; + }; + + rsa: rsa@f06a0000 { + compatible = "nvt,nvt_rsa"; + reg = <0xf06a0000 0x100>; + interrupts = <0x00 0x14 0x04>; + mclk = <0x01>; + }; + + top: top@f0010000 { + compatible = "nvt,nvt_top"; + reg = <0xf0010000 0x2000 0xf0030000 0x2000 0xf0070000 0x10000>; + + sdio { + pinmux = <0x01>; + }; + + sdio2 { + pinmux = <0x01>; + }; + + sdio3 { + pinmux = <0x00>; + }; + + nand { + pinmux = <0x05>; + }; + + sensor { + pinmux = <0x00>; + }; + + sensor2 { + pinmux = <0x00>; + }; + + mipi_lvds { + pinmux = <0x00>; + }; + + i2c { + pinmux = <0x00>; + }; + + sif { + pinmux = <0x08>; + }; + + uart { + pinmux = <0x01>; + }; + + spi { + pinmux = <0x00>; + }; + + sdp { + pinmux = <0x00>; + }; + + remote { + pinmux = <0x00>; + }; + + pwm { + pinmux = <0x00>; + }; + + pwm2 { + pinmux = <0x00>; + }; + + ccnt { + pinmux = <0x00>; + }; + + audio { + pinmux = <0x00>; + }; + + lcd { + pinmux = <0x10000000>; + }; + + tv { + pinmux = <0x00>; + }; + + eth { + pinmux = <0x12>; + }; + + misc { + pinmux = <0x00>; + }; + }; + + sie@f0c00000 { + compatible = "nvt,drv_sie"; + reg = <0xf0c00000 0x900 0xf0d20000 0x900 0xf0d30000 0x900 0xf0d40000 0x900 0xf0d80000 0x900>; + interrupts = <0x00 0x01 0x04 0x00 0x02 0x04 0x00 0x03 0x04 0x00 0x3b 0x04 0x00 0x3d 0x04>; + power_saving = <0x00>; + }; + + tge@f0cc0000 { + compatible = "nvt,kdrv_tge"; + reg = <0xf0cc0000 0x150>; + interrupts = <0x00 0x16 0x04>; + }; + + rhe@f0ce0000 { + compatible = "nvt,kdrv_rhe"; + reg = <0xf0ce0000 0x900>; + interrupts = <0x00 0x0d 0x04>; + }; + + ime@f0c40000 { + compatible = "nvt,kdrv_ime"; + reg = <0xf0c40000 0x1000>; + interrupts = <0x00 0x06 0x04>; + }; + + ife2@f0d00000 { + compatible = "nvt,kdrv_ife2"; + reg = <0xf0d00000 0x100>; + interrupts = <0x00 0x09 0x04>; + }; + + ise@f0c90000 { + compatible = "nvt,kdrv_ise"; + reg = <0xf0c90000 0x100>; + interrupts = <0x00 0x15 0x04 0x00 0x55 0x04>; + }; + + ipe@f0c30000 { + compatible = "nvt,kdrv_ipe"; + reg = <0xf0c30000 0x900>; + interrupts = <0x00 0x05 0x04>; + }; + + ife@f0c70000 { + compatible = "nvt,kdrv_ife"; + reg = <0xf0c70000 0x800>; + interrupts = <0x00 0x08 0x04>; + }; + + vpe@f0cd0000 { + compatible = "nvt,kdrv_vpe"; + reg = <0xf0cd0000 0x1040>; + interrupts = <0x00 0x3e 0x04>; + }; + + ai@f0c60000 { + compatible = "nvt,kdrv_ai"; + reg = <0xf0c60000 0x1cc 0xf0d50000 0x94 0xf0d60000 0x200 0xf0cb0000 0x200>; + interrupts = <0x00 0x0e 0x04 0x00 0x0d 0x04 0x00 0x31 0x04 0x00 0x0b 0x04>; + }; + + md@f0c10000 { + compatible = "nvt,kdrv_md"; + reg = <0xf0c10000 0x150>; + interrupts = <0x00 0x2e 0x04>; + }; + + dis@f0c50000 { + compatible = "nvt,kdrv_dis"; + reg = <0xf0c50000 0x114>; + interrupts = <0x00 0x0a 0x04>; + }; + + coe@f0a11000 { + compatible = "nvt,nvt_coe"; + reg = <0xf0a11000 0x2c0>; + }; + + dce@f0c20000 { + compatible = "nvt,kdrv_dce"; + reg = <0xf0c20000 0x650>; + interrupts = <0x00 0x07 0x04>; + }; + + ive@f0d70000 { + compatible = "nvt,kdrv_ive"; + reg = <0xf0d70000 0x6c>; + interrupts = <0x00 0x35 0x04>; + }; + + sde@f0d90000 { + compatible = "nvt,kdrv_sde"; + reg = <0xf0d90000 0x90>; + interrupts = <0x00 0x4a 0x04>; + }; + + ide@f0800000 { + compatible = "nvt,nvt_ide"; + reg = <0xf0800000 0x1000>; + interrupts = <0x00 0x30 0x04>; + }; + + dsi@f0840000 { + compatible = "nvt,nvt_dsi"; + reg = <0xf0840000 0x1000>; + interrupts = <0x00 0x32 0x04>; + }; + + csi@f0280000 { + compatible = "nvt,nvt_csi"; + reg = <0xf0280000 0x100 0xf0330000 0x100>; + interrupts = <0x00 0x36 0x04 0x00 0x37 0x04>; + }; + + lvds@f0270000 { + compatible = "nvt,nvt_lvds"; + reg = <0xf0270000 0x200 0xf0370000 0x200>; + interrupts = <0x00 0x36 0x04 0x00 0x37 0x04>; + }; + + senphy@f06b0000 { + compatible = "nvt,nvt_senphy"; + reg = <0xf06b0000 0x100>; + }; + + ssenif@f0xx0000 { + compatible = "nvt,nvt_ssenif"; + reg = <0xf02c0000 0x2000>; + interrupts = <0x00 0x3d 0x04>; + }; + + sif@f0240000 { + compatible = "nvt,nvt_sif"; + reg = <0xf0240000 0x200>; + interrupts = <0x00 0x28 0x04>; + clock-frequency = <0xf4240>; + }; + + graphic@f0c80000 { + compatible = "nvt,nvt_graphic"; + reg = <0xf0c80000 0x300 0xf0d10000 0x100>; + interrupts = <0x00 0x12 0x04 0x00 0x13 0x04>; + }; + + affine@f0ca0000 { + compatible = "nvt,nvt_affine"; + reg = <0xf0ca0000 0x100>; + interrupts = <0x00 0x34 0x04>; + }; + + h26x@f0a10000 { + compatible = "nvt,nvt_h26x"; + reg = <0xf0a10000 0xa00>; + interrupts = <0x00 0x10 0x04>; + power_saving = <0x00>; + }; + + clocksource@f0040000 { + compatible = "nvt,nvt_clk_src"; + reg = <0xf0040000 0x300>; + interrupts = <0x00 0x00 0x04>; + clock-frequency1 = <0x2dc6c0>; + clock-frequency2 = <0x2dc6c0>; + clksrc = <0x01>; + bits = <0x20>; + clock-names = "f0040000.timer"; + }; + + ptp: ptp-dte@f0040000 { + compatible = "nvt,ptp-dte"; + reg = <0xf0040000 0x300>; + clock-frequency = <0x2dc6c0>; + interrupts = <0x00 0x00 0x04>; + }; + + timer@f0040000 { + compatible = "nvt,nvt_timer"; + reg = <0xf0040000 0x300>; + interrupts = <0x00 0x00 0x04>; + }; + + eac@f0640000 { + compatible = "nvt,nvt_eac"; + reg = <0xf0640000 0x200>; + }; + + jpg@f0a00000 { + compatible = "nvt,nvt_jpg"; + reg = <0xf0a00000 0x100>; + interrupts = <0x00 0x11 0x04>; + }; + + nvt_usb2host@f0600000 { + compatible = "nvt,ehci-nvtivot"; + reg = <0xf0600000 0x10000>; + interrupts = <0x00 0x1b 0x04>; + }; + + nvt_usb2dev@f0600000 { + compatible = "nvt,fotg200_udc"; + reg = <0xf0600000 0x10000>; + interrupts = <0x00 0x1b 0x04>; + }; + + nvt_usb_chrg@f0600000 { + compatible = "nvt,nvt_usb_chrgdet"; + reg = <0xf0600000 0x10000>; + }; + + dai@f0630000 { + compatible = "nvt,nvt_dai"; + reg = <0xf0630000 0xbc>; + interrupts = <0x00 0x0f 0x04>; + }; + + rotate@f0cf0000 { + compatible = "nvt,nvt_rotation"; + reg = <0xf0cf0000 0x100>; + interrupts = <0x00 0x51 0x04>; + }; + + drvdump@0 { + compatible = "nvt,nvt_drvdump"; + }; + + dsp@f1430000 { + compatible = "nvt,nvt_dsp"; + reg = <0xf1430000 0x200 0xf2000000 0x1000000 0xf1440000 0x200 0xf3000000 0x1000000>; + interrupts = <0x00 0x4c 0x04 0x00 0x4d 0x04>; + }; + + spi0: spi@f0230000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0230000 0x10000>; + interrupts = <0x00 0x23 0x04>; + dma-support = <0x00>; + nvt-devname = <0x00>; + status = "okay"; + #address-cells = <0x01>; + #size-cells = <0x00>; + }; + + spi1: spi@f0320000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0320000 0x10000>; + interrupts = <0x00 0x24 0x04>; + dma-support = <0x00>; + nvt-devname = <0x01>; + status = "okay"; + }; + + spi2: spi@f0340000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0340000 0x10000>; + interrupts = <0x00 0x25 0x04>; + dma-support = <0x00>; + nvt-devname = <0x02>; + status = "okay"; + }; + + spi3: spi@f0360000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0360000 0x10000>; + interrupts = <0x00 0x42 0x04>; + dma-support = <0x00>; + nvt-devname = <0x03>; + }; + + spi4: spi@f03d0000 { + compatible = "nvt,nvt_spi"; + reg = <0xf03d0000 0x10000>; + interrupts = <0x00 0x43 0x04>; + dma-support = <0x00>; + nvt-devname = <0x04>; + }; + + sdp@f0390000 { + compatible = "nvt,nvt_sdp"; + reg = <0xf0390000 0x28>; + interrupts = <0x00 0x0c 0x04>; + }; + + tse@f0650000 { + compatible = "nvt,nvt_tse"; + reg = <0xf0650000 0x90>; + interrupts = <0x00 0x17 0x04>; + }; + + remote@f0250000 { + compatible = "nvt,nvt_remote"; + reg = <0xf0250000 0x28>; + interrupts = <0x00 0x19 0x04>; + }; + + rng: rng@f0680000 { + compatible = "nvt,nvt_rng"; + reg = <0xf0680000 0x100>; + }; + + nvt_arb@f0000000 { + compatible = "nvt,nvt_arb"; + reg = <0xf0000000 0xa000 0xf0100000 0xa000 0xf0fe0000 0x300 0xf0fd0000 0x300>; + interrupts = <0x00 0x21 0x04 0x00 0x33 0x04>; + }; + + nvt_otp@f0660000 { + compatible = "nvt,nvt_otp"; + reg = <0xf0660000 0x70>; + }; + + pll_preset@0 { + + pll3 { + pll_config = <0x03 0x00 0x00>; + }; + + pll4 { + pll_config = <0x04 0x00 0x00>; + }; + + pll5 { + pll_config = <0x05 0x00 0x01>; + }; + + pll6 { + pll_config = <0x06 0x00 0x00>; + }; + + pll7 { + pll_config = <0x07 0x00 0x00>; + }; + + pll8 { + pll_config = <0x08 0x00 0x00>; + }; + + pll9 { + pll_config = <0x09 0x00 0x00>; + }; + + pll10 { + pll_config = <0x0a 0x00 0x01>; + }; + + pll11 { + pll_config = <0x0b 0x00 0x00>; + }; + + pll12 { + pll_config = <0x0c 0x00 0x01>; + }; + + pll13 { + pll_config = <0x0d 0x15752a00 0x01>; + }; + + pll14 { + pll_config = <0x0e 0x00 0x00>; + }; + + pll15 { + pll_config = <0x0f 0x5b8d800 0x01>; + }; + + pll16 { + pll_config = <0x10 0x00 0x00>; + }; + + pll17 { + pll_config = <0x11 0x17d78400 0x01>; + }; + + pll18 { + pll_config = <0x12 0x00 0x01>; + }; + + pllf320 { + pll_config = <0x18 0x1312d000 0x01>; + }; + }; + + i2c0: i2c@f0220000 { + compatible = "nvt,nvt_i2c"; + reg = <0xf0220000 0x100>; + interrupts = <0x00 0x29 0x04>; + clock-frequency = <0x61a80>; + id = <0x00>; + #address-cells = <0x01>; + #size-cells = <0x00>; + + sen_imx290@1 { + compatible = "nvt,sen_imx290"; + reg = <0x7f>; + path = <0x01>; + + PRESET { + expt_time = <0x2710>; + gain_ratio = <0x3e8>; + }; + + DIRECTION { + mirror = <0x00>; + flip = <0x00>; + }; + + POWER { + mclk = <0x00>; + pwdn_pin = <0xffffffff>; + rst_pin = <0x44>; + rst_time = <0x01>; + stable_time = <0x01>; + }; + + I2C { + i2c_id = <0x00>; + i2c_addr = <0x1a>; + }; + }; + }; + + i2c1: i2c2@f0350000 { + compatible = "nvt,nvt_i2c"; + reg = <0xf0350000 0x100>; + interrupts = <0x00 0x2a 0x04>; + clock-frequency = <0x61a80>; + id = <0x01>; + #address-cells = <0x01>; + #size-cells = <0x00>; + + sen_imx290@0 { + compatible = "nvt,sen_imx290"; + reg = <0x7f>; + path = <0x00>; + + PRESET { + expt_time = <0x2710>; + gain_ratio = <0x3e8>; + }; + + DIRECTION { + mirror = <0x00>; + flip = <0x00>; + }; + + POWER { + mclk = <0x00>; + pwdn_pin = <0xffffffff>; + rst_pin = <0x44>; + rst_time = <0x01>; + stable_time = <0x01>; + }; + + I2C { + i2c_id = <0x01>; + i2c_addr = <0x1a>; + }; + }; + }; + + i2c2: i2c3@f03a0000 { + compatible = "nvt,nvt_i2c"; + reg = <0xf03a0000 0x100>; + interrupts = <0x00 0x3c 0x04>; + clock-frequency = <0x61a80>; + id = <0x02>; + #address-cells = <0x01>; + #size-cells = <0x00>; + }; + + i2c3: i2c4@f03b0000 { + compatible = "nvt,nvt_i2c"; + reg = <0xf03b0000 0x100>; + interrupts = <0x00 0x44 0x04>; + clock-frequency = <0x61a80>; + id = <0x03>; + }; + + i2c4: i2c5@f03c0000 { + compatible = "nvt,nvt_i2c"; + reg = <0xf03c0000 0x100>; + interrupts = <0x00 0x45 0x04>; + clock-frequency = <0x61a80>; + id = <0x04>; + }; + + audio@1 { + type = "none"; + i2s_ctrl = <0x00>; + sif_channel = <0x00>; + gpio_cold_reset = <0x00>; + gpio_data = <0x00>; + gpio_clk = <0x00>; + gpio_cs = <0x00>; + adc_zero = <0x00>; + }; + + audio@2 { + type = "embedded"; + i2s_ctrl = <0x04>; + sif_channel = <0x00>; + gpio_cold_reset = <0x00>; + gpio_data = <0x00>; + gpio_clk = <0x00>; + gpio_cs = <0x00>; + adc_zero = <0x00>; + }; + + display { + type = "lcd"; + lcd_ctrl = <0x00>; + sif_channel = <0x02>; + gpio_cs = <0x76>; + gpio_clk = <0x77>; + gpio_data = <0x78>; + }; + + nvtmpp { + compatible = "nvt,nvtmpp"; + }; + + isf_stream { + compatible = "nvt,isf_stream"; + }; + + isf_flow { + compatible = "nvt,isf_flow"; + }; + + isf_vdocap { + compatible = "nvt,isf_vdocap"; + }; + + isf_vdoprc { + compatible = "nvt,isf_vdoprc"; + }; + + isf_dummy { + compatible = "nvt,isf_dummy"; + }; + + isf_vdoenc { + compatible = "nvt,isf_vdoenc"; + }; + + isf_vdodec { + compatible = "nvt,isf_vdodec"; + }; + + isf_vdoout { + compatible = "nvt,isf_vdoout"; + }; + + dispobj { + compatible = "nvt,nvt_dispobj"; + }; + + dispdev { + compatible = "nvt,nvt_dispdev"; + }; + + audio { + compatible = "nvt,nvt_audio"; + }; + + msdcnvt { + compatible = "nvt,msdcnvt"; + }; + + msdcnvt_adj { + compatible = "nvt,msdcnvt_adj"; + }; + + msdcnvt_custom_si { + compatible = "nvt,msdcnvt_custom_si"; + }; + + wavstudio { + compatible = "nvt,wavstudio"; + }; + + isf_audenc { + compatible = "nvt,isf_audenc"; + }; + + isf_auddec { + compatible = "nvt,isf_auddec"; + }; + + isf_audcap { + compatible = "nvt,isf_audcap"; + }; + + isf_audout { + compatible = "nvt,isf_audout"; + }; + + nvt_ipc { + compatible = "nvt,nvt_ipc"; + }; + + nvt_disflow { + compatible = "nvt,nvt_disflow"; + }; + + nvt_memory_cfg { + #address-cells = <0x01>; + #size-cells = <0x01>; + + dram { + reg = <0x00 0x20000000>; + }; + + core2entry1 { + reg = <0x00 0x100000>; + }; + + fdt { + reg = <0x100000 0x100000>; + }; + + shmem { + reg = <0x200000 0x100000>; + }; + + loader { + reg = <0x1000000 0x100000>; + }; + + linuxtmp { + reg = <0x1100000 0x2800000>; + }; + + uboot { + reg = <0x3900000 0x6c0000>; + }; + + core2entry2 { + reg = <0x1ffc0000 0x40000>; + }; + }; + + memory { + device_type = "memory"; + reg = <0x00 0x10000000>; + }; + + reserved-memory { + #address-cells = <0x01>; + #size-cells = <0x01>; + ranges; + + cma0: cma0@0x05000000 { + compatible = "shared-dma-pool"; + reusable; + reg = <0x5000000 0x3000000>; + alignment = <0x400000>; + status = "okay"; + phandle = <0x06>; + }; + }; + + nvt_cma { + compatible = "nvt,nvt_cma"; + memory-region = <&cma0>; + id = <0x00>; + }; + + hdal-memory { + #address-cells = <0x01>; + #size-cells = <0x01>; + + media { + reg = <0x10000000 0xd800000 0x40000000 0x20000000>; + }; + }; + + hdal-maxpath-cfg { + vdocap_active_list = <0x01 0x01 0x01 0x01 0x01 0x00 0x00 0x00>; + vdoprc_maxdevice = <0x04>; + vdoenc_maxpath = <0x08>; + vdodec_maxpath = <0x02>; + vdoout_maxdevice = <0x01>; + adocap_maxdevice = <0x01>; + adoout_maxdevice = <0x01>; + adoenc_maxpath = <0x01>; + adodec_maxpath = <0x01>; + gfx_maxjob = <0x02>; + stamp_maximg = <0x10>; + vdoprc_maxstamp = <0x04 0x10>; + vdoprc_maxmask = <0x08 0x40>; + vdoenc_maxstamp = <0x20 0x10>; + vdoenc_maxmask = <0x00 0x40>; + vdoout_maxstamp = <0x00 0x10>; + vdoout_maxmask = <0x00 0x40>; + }; + + ai-memory { + #address-cells = <0x01>; + #size-cells = <0x01>; + + dram1 { + reg = <0x1d800000 0x2800000>; + }; + }; + + nvt_info { + BIN_NAME = "FW98528A"; + BIN_NAME_T = "FW98528T"; + EMBMEM_BLK_SIZE = "0x10000"; + EMBMEM = "EMBMEM_SPI_NOR"; + NVT_CFG_APP_EXTERNAL = "dhd_priv iperf-3"; + NVT_CFG_APP = "hfs lviewd nvtrtspd msdcnvt arm_neon_perf mem mem_hotplug memcpy drystone-2.0"; + NVT_ROOTFS_ETC = "IPCAM1_NOR_EVB"; + NVT_BINARY_FILE_STRIP = "yes"; + NVT_CFG_KERNEL_CFG = ""; + NVT_LINUX_SMP = "NVT_LINUX_SMP_ON"; + NVT_CHIP_ID = "CHIP_NA51084"; + NVT_DEFAULT_NETWORK_BOOT_PROTOCOL = "NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_STATIC_IP"; + NVT_ROOTFS_TYPE = "NVT_ROOTFS_TYPE_SQUASH"; + NVT_ETHERNET = "NVT_ETHERNET_EQOS"; + NVT_SDIO_WIFI = "NVT_SDIO_WIFI_NONE"; + NVT_USB_WIFI = "NVT_USB_WIFI_NONE"; + NVT_USB_4G = "NVT_USB_4G_NONE"; + WIFI_RTK_MDL = "WIFI_RTK_MDL_8189"; + WIFI_BRCM_MDL = "WIFI_BRCM_MDL_43438a1_ampk6212axtal26"; + WIFI_NVT_MDL = "WIFI_NVT_MDL_18211"; + NVT_CURL_SSL = "NVT_CURL_SSL_OPENSSL"; + NVT_UBOOT_ENV_IN_STORG_SUPPORT = "NVT_UBOOT_ENV_IN_STORG_SUPPORT_OFF"; + }; +}; diff --git a/openipc/nt98520.dts b/openipc/nt98520.dts new file mode 100644 index 000000000000..e0f7d81160af --- /dev/null +++ b/openipc/nt98520.dts @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * NT98520: the NA51055 die with one external DDR3 die (the loader's + * table has no second), 512 MiB as the loader is built; otherwise the + * NT98525's tree. + */ +/dts-v1/; + +/include/ "na51055.dtsi" + +/ { + hdal-memory { + media { + reg = <0x12800000 0xd800000>; + }; + }; + + nvt_info { + BIN_NAME = "FW98520A"; + BIN_NAME_T = "FW98520T"; + }; +}; diff --git a/openipc/nt98520_config b/openipc/nt98520_config new file mode 100644 index 000000000000..26e52193f076 --- /dev/null +++ b/openipc/nt98520_config @@ -0,0 +1,2 @@ +CONFIG_TARGET_NT98520=y +CONFIG_PRODUCT_SOC="nt98520" diff --git a/openipc/nt98522.dts b/openipc/nt98522.dts new file mode 100644 index 000000000000..271d9c41ca26 --- /dev/null +++ b/openipc/nt98522.dts @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * NT98522: the NA51055 die with 64 MiB of DDR in the package (the + * loader's table: 512 Mbit), no SDK board. The NT98523's tree with the + * NT98562's split: Linux 32 MiB, its CMA at its top, the media pool the + * rest. + */ +/dts-v1/; + +/include/ "na51055.dtsi" + +/ { + top@f0010000 { + i2c { + pinmux = <0x51>; + }; + }; + + nvt_memory_cfg { + dram { + reg = <0x00 0x4000000>; + }; + + core2entry2 { + reg = <0x3fc0000 0x40000>; + }; + }; + + memory { + reg = <0x00 0x2000000>; + }; + + reserved-memory { + cma0@0x05000000 { + reg = <0x1c00000 0x400000>; + }; + }; + + hdal-memory { + media { + reg = <0x2000000 0x2000000>; + }; + }; + + nvt_info { + BIN_NAME = "FW98522A"; + BIN_NAME_T = "FW98522T"; + }; +}; diff --git a/openipc/nt98522_config b/openipc/nt98522_config new file mode 100644 index 000000000000..cdbd5694b549 --- /dev/null +++ b/openipc/nt98522_config @@ -0,0 +1,2 @@ +CONFIG_TARGET_NT98522=y +CONFIG_PRODUCT_SOC="nt98522" diff --git a/openipc/nt98523.dts b/openipc/nt98523.dts new file mode 100644 index 000000000000..db62c17c4dd1 --- /dev/null +++ b/openipc/nt98523.dts @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * NT98523: the NA51055 die with 128 MiB of DDR in the package, as the + * SDK's cfg_IPCAM1_523_NOR_EVB: Linux the first 64 MiB, its CMA at + * 48 MiB. That board also has an external DDR2 die; the loader here is + * built without one, so the media pool is the rest of the package's. + */ +/dts-v1/; + +/include/ "na51055.dtsi" + +/ { + top@f0010000 { + i2c { + pinmux = <0x51>; + }; + }; + + nvt_memory_cfg { + dram { + reg = <0x00 0x8000000>; + }; + + core2entry2 { + reg = <0x7fc0000 0x40000>; + }; + }; + + memory { + reg = <0x00 0x4000000>; + }; + + reserved-memory { + cma0@0x05000000 { + reg = <0x3000000 0x400000>; + }; + }; + + hdal-memory { + media { + reg = <0x4000000 0x4000000>; + }; + }; + + hdal-maxpath-cfg { + vdoenc_maxpath = <0x08>; + }; + + nvt_info { + BIN_NAME = "FW98523A"; + BIN_NAME_T = "FW98523T"; + }; +}; diff --git a/openipc/nt98523_config b/openipc/nt98523_config new file mode 100644 index 000000000000..06b333262829 --- /dev/null +++ b/openipc/nt98523_config @@ -0,0 +1,2 @@ +CONFIG_TARGET_NT98523=y +CONFIG_PRODUCT_SOC="nt98523" diff --git a/openipc/nt98525.dts b/openipc/nt98525.dts new file mode 100644 index 000000000000..2b58919bf268 --- /dev/null +++ b/openipc/nt98525.dts @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * NT98525: the NA51055 tree as the SDK's cfg_IPCAM1_NOR_EVB has it, two + * external DDR3 dies of 512 MiB, the second the media pool's. + */ +/dts-v1/; + +/include/ "na51055.dtsi" diff --git a/openipc/nt98525_config b/openipc/nt98525_config new file mode 100644 index 000000000000..22dc155aa9c8 --- /dev/null +++ b/openipc/nt98525_config @@ -0,0 +1,2 @@ +CONFIG_TARGET_NT98525=y +CONFIG_PRODUCT_SOC="nt98525" diff --git a/openipc/nt98528.dts b/openipc/nt98528.dts new file mode 100644 index 000000000000..67a824fc5695 --- /dev/null +++ b/openipc/nt98528.dts @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * NT98528: the NA51084 tree as the SDK's cfg_528_IPCAM1_NOR_EVB has it, + * two external DDR3 dies of 512 MiB, the second the media pool's. + */ +/dts-v1/; + +/include/ "na51084.dtsi" diff --git a/openipc/nt98528_config b/openipc/nt98528_config new file mode 100644 index 000000000000..591ea398cb40 --- /dev/null +++ b/openipc/nt98528_config @@ -0,0 +1,2 @@ +CONFIG_TARGET_NT98528=y +CONFIG_PRODUCT_SOC="nt98528" diff --git a/openipc/nt98529.dts b/openipc/nt98529.dts new file mode 100644 index 000000000000..fbfa008f32e0 --- /dev/null +++ b/openipc/nt98529.dts @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * NT98529: the NT98528's tree with what the SDK's NT98529 board + * (cfg_529_IPCAM1_RAMDISK_EVB) changes for the part: the CPUs at + * 1.2 GHz, PLL15 at 400 MHz. + */ +/dts-v1/; + +/include/ "na51084.dtsi" + +/ { + cpus { + cpu@0 { + clock-frequency = <0x47868c00>; + }; + + cpu@1 { + clock-frequency = <0x47868c00>; + }; + }; + + pll_preset@0 { + pll15 { + pll_config = <0x0f 0x17d78400 0x01>; + }; + }; + + nvt_info { + BIN_NAME = "FW98529A"; + BIN_NAME_T = "FW98529T"; + }; +}; diff --git a/openipc/nt98529_config b/openipc/nt98529_config new file mode 100644 index 000000000000..1810b3e69684 --- /dev/null +++ b/openipc/nt98529_config @@ -0,0 +1,2 @@ +CONFIG_TARGET_NT98529=y +CONFIG_PRODUCT_SOC="nt98529" From ad1d8a843ec9fdc0133d3e464478148f2163ff8f Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 22:22:31 +0000 Subject: [PATCH 22/38] docs: the NT9852x dies, the loader's MMU hand-off, the real loader in qemu CLAUDE.md: the SoCs this branch now builds, a section on the NT9852x dies (their loader and its LZMA decoder, DDR, trees, what differs from NA51089), the loader's hand-off with its MMU and caches on and why cpu_init_cp15 runs, and qemu-hisilicon#222's machines running the image's own loader. --- CLAUDE.md | 112 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 89 insertions(+), 23 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 87d39a9740fe..23bb930e9dac 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,18 +4,26 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## What this branch is -`openipc-novatek` is OpenIPC's U-Boot for Novatek's NA51089 camera SoCs: -the NT98562 (64 MiB of DDR in the package) and the NT98566 (128 MiB), one -Cortex-A9 each. The tree is **mainline U-Boot v2022.10**, the same release -as `openipc-hisilicon`, `openipc-xm`, `openipc-gk710x` and -`openipc-anyka`, plus: +`openipc-novatek` is OpenIPC's U-Boot for Novatek's camera SoCs: + +- NA51089, one Cortex-A9: the NT98560 (external DDR), NT98561 and NT98562 + (64 MiB of DDR in the package) and NT98566 (128 MiB); +- the NT9852x SDK's two dies, two Cortex-A9s each, NA51089's blocks at + NA51089's addresses: NA51055 (NT98520, NT98522, NT98523, NT98525) and + NA51084 (NT98528, NT98529); see "The NT9852x dies" below; + +and for two NVR dies, NA51103 and NA51090 (see "The NVR dies"). The tree +is **mainline U-Boot v2022.10**, the same release as `openipc-hisilicon`, +`openipc-xm`, `openipc-gk710x` and `openipc-anyka`, plus: - the OpenIPC boot layer, as on `openipc-anyka`; - the NA51089 support, written from the vendor sources: the NT9856x Linux SDK v1.01.007 (U-Boot 2019.04, kernel 4.19.91), and the device tree of a - Xiongmai NT98562 camera; -- the SDK's loader, which runs before U-Boot, as Novatek ships it - (`board/novatek/na51089/loader`), built from its sources. + Xiongmai NT98562 camera; the NT9852x support from that SDK's U-Boot + 2019.04 and board trees; +- the SDKs' loaders, which run before U-Boot, as Novatek ships them + (`board/novatek/na51089/loader`, `board/novatek/na51055/loader`), built + from their sources. CI and user docs live on the `openipc` branch: @@ -33,8 +41,8 @@ Adding or dropping a SoC needs both branches: The NVR dies NA51103 (NT98332) and NA51090 (NT98633) are supported as AArch64 targets behind the board's own loader and BL31; see "The NVR -dies" below. The other dies of the SDKs (NA51055, NA51068, NA51102, the -NS02xxx parts) are not supported. +dies" below. The other dies of the SDKs (NA51068, NA51102, the NS02xxx +parts) are not supported. ## Relationship to mainline @@ -90,6 +98,17 @@ DDR. Then, from `LibExt/LIBExt_src/Ctrl_Flow/bl_func.c`: `/nvt_memory_cfg/uboot`, and the 16-bit words plus their indices must sum to 0 over BinLength; then it calls CodeEntry. +**It calls CodeEntry with its MMU and caches on**: SCTLR 0x00c5187d, its +translation table at 0x1018000 (in its DRAM area, `/nvt_memory_cfg/loader`) +mapping the DDR write-back write-allocate and the registers as device +memory. This U-Boot runs with the data cache off and no cache maintenance +(`SYS_DCACHE_OFF`), so `cpu_init_cp15` has to run: `openipc_config` has +`SKIP_LOWLEVEL_INIT_ONLY` (no `lowlevel_init`, the loader has the clocks +and DDR up), not `SKIP_LOWLEVEL_INIT`, which skipped it too. Without it the +cache stayed live under the MAC's and the flash controller's DMA, and +anything loaded to 0x1000000 (`${baseaddr}`) overwrote the table. At the +prompt SCTLR reads 0x00c5187a. + `openipc/nvt-image.py` builds the 256 KiB image the programmer writes at offset 0: @@ -172,7 +191,7 @@ offset 0: ## Build ```sh -bash build.sh # both; continues past failures, exits non-zero if any failed +bash build.sh # every SoC; continues past failures, exits non-zero if any failed bash build.sh nt98566 # one or more SoCs (CROSS_COMPILE defaults to arm-linux-gnueabi-) ``` @@ -181,7 +200,7 @@ bash build.sh nt98566 # one or more SoCs (CROSS_COMPILE defaults to arm-li - `.config` is `openipc/openipc_config`, then `openipc/<soc>_config`, then `olddefconfig`. There are no `configs/*_defconfig` for these targets. - The loader uses `LOADER_CROSS_COMPILE`: `arm-none-eabi-` if there is one, - else `CROSS_COMPILE`. + else `CROSS_COMPILE` (refused for the NT98528/529). - U-Boot is ~233 KiB, ~94 KiB packed, in the 128 KiB slot; `nvt-image.py` fails the build if a part does not fit. Check the packed size after enabling anything. @@ -193,12 +212,13 @@ bash build.sh nt98566 # one or more SoCs (CROSS_COMPILE defaults to arm-li ## Verification -The emulator is OpenIPC/qemu-hisilicon, machines `nt98562`, `nt98566` -(`docs/novatek.md` there). `-M <soc>,flash-file=<image>` does the loader's -job (not the DDR training, so it does not run the loader): it reads the -device tree at 0x10000, unpacks U-Boot from its BCL1 container (LZMA -support is newer than the first NT9856x machines), fills SHMINFO and starts -it. +The emulator is OpenIPC/qemu-hisilicon (`docs/novatek.md` there), a +machine per SoC but the NT98520 and NT98522, which run on the NT98525's +and NT98523's (the same dies). Since OpenIPC/qemu-hisilicon#222, +`-M <soc>,flash-file=<image>` runs the image's own loader through a mask +ROM model: the DDR training, the device tree at 0x10000, U-Boot's BCL1 +container, SHMINFO, the jump. (Before, a stand-in did the loader's job +without running it.) - **CI smoke:** two boots of an 8 MiB image holding only the image. The second must load the environment the first saved. @@ -221,13 +241,59 @@ it. - SD (`-drive if=sd,index=0,format=raw,file=<image>`): `mmc info`, `fatls`, `fatload` and `mmc read/write` against the host's CRCs; recovery of a changed kernel, and nothing rewritten with the same one. -- **What qemu does not check:** the loader at all (the DDR parameters, its - flash and BCL1 handling: the build is the vendor's, the toolchain is - not), the pin, clock, reset and pad set-up of every block, the flash - controller's timing, the PHY's power-on order and MDIO clock, the SD - host's command and FIFO timing. +- **What qemu does not check:** the DDR parameters against real DDR (the + model's training succeeds), caches, the pin, clock, reset and pad set-up + of every block, the flash controller's timing, the PHY's power-on order + and MDIO clock, the SD host's command and FIFO timing. - **On silicon:** nothing yet. +## The NT9852x dies: NA51055, NA51084 + +The NT9852x Linux SDK's dies: NA51055 (chip ID 0x4821; NT98520, NT98522, +NT98523, NT98525) and NA51084 (0x5021; NT98528, NT98529). Two Cortex-A9s +each, NA51089's blocks at NA51089's addresses; one U-Boot code base with +NA51089 (`NVT_NA51055`, board `na51089`), told apart at run time by the +chip ID (`nvt_chip_id()`), as the vendor's U-Boot 2019.04 does. + +- **The loader** (`board/novatek/na51055/loader`) is + `nt9852x_loader_release_v2.05.013`, the SDK's `na51055_ldr`: the + NA51089 loader's toolchain changes, plus + - an LZMA decoder (`bl_lzma.c`, U-Boot's `lib/lzma` LzmaDec): its mask + ROM has none and its own LZ leaves U-Boot ~176 KiB, past its 128 KiB + slot. The image is then the same as NA51089's. + - `LOADER_TYPE` follows `CHIP` (the 528/529 flow), through + `LibExt/LIBExt_src/Ctrl_Flow/Makefile`, which builds `bl_func.c`. + - The image is limited to 32 KiB (64 KiB for the 528 model): the 52x + loaders end at ~32.73 KiB; the 528 one is built without its own SD + card update (`STORAGEEXT=NONE`). + - The 528 model needs a bare-metal toolchain: built with + arm-linux-gnueabi it stops after the DDR training (why is open); + arm-none-eabi and the SDK's Linaro arm-eabi work. `build.sh` refuses + a Linux toolchain for it. +- **DDR** (`build.sh`): the NT98522/523's in the package (512 Mbit, + 1 Gbit) with no DDR2; the others' on the board, the SDK boards' 4 Gbit + DDR3 dies (NT98520: one; NT98525/528/529: two, the second at + 0x40000000, the media pool's alone, which `ft_board_setup()` keeps). + A board with other DDR needs its own loader build. +- **Device trees:** `openipc/na51055.dtsi` and `na51084.dtsi` are the + SDK's NT98525 and NT98528 NOR boards, flattened, with the OpenIPC chain + in `/nor`, U-Boot at 0x03900000 and the loader's scratch below it; the + parts' trees change what their SDK boards change. The SDK's NA51055 + boards describe one CPU, its NA51084 ones two (`cpu-release-addr` + 0xF07F8000). `osmem`: 64M on the NT98523 (its CMA is at 48 MiB), 256M + on the 512 MiB parts. +- **What differs from NA51089** (vendor `nvt_na51055_a32/clock.c`, + `eth_na51055.c`, `nvt_ivot_mmc.c`): + - PLL8's ratio at CG+0x1188 (NA51055) / CG+0x47E0 (NA51084); NA51084 + runs 1000 MHz unless the tree asks for 1200/1350, which only the + NT98529 gets. + - Ethernet: own pin and LED bits, the external PHY selected by bit 8 of + 0x3004, NA51084's RMII_2 and RGMII, no PHY PLL reset; the DMA's + descriptor skip counts in 4-byte units on NA51055, so the NT9852x + targets pack the descriptors (16 bytes; the data cache is off, a + build-time check says so); AALE. + - SD: NA51055 samples on the internal clock (SRC_CLK_SEL). + ## The NVR dies: NT98332 (NA51103), NT98633 (NA51090) Two (NA51103) or four (NA51090) Cortex-A53s, 1 / 2 GiB, the blocks at From 8e106f4c76c15769b630251e6f2c6f81a28581e5 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 22:23:19 +0000 Subject: [PATCH 23/38] novatek: import the NS02501 loader from the NT98532/NT98533 SDK The loader of Novatek's NS02501 Linux SDK, release ns02501_loader_v3.07.101 (the same sources as the SDK tree's ns02501_ldr), as the SDK ships it: the boot flow sources (LibExt/ LIBExt_src/Ctrl_Flow, LibExt/LIBExt_src/compress, Project/Model/Src), the headers, the make system, and what Novatek ships as binaries: the driver and DRAM libraries (ARC/Lib/Release) and the Linux host tools the build runs (Tools/Bin: nvt-ld-op, bfc, Configram533, encrypt_boot, encrypt_boot_dump). The SDK has no Tools/ConfigRam: the DDR of every package is in Configram533's own tables. One loader serves every package of the die, NS02501 (chip ID 0x5521): NT98532 and NT98533 with 512 Mbit (QB), 1 or 2 Gbit (QC/QD) of DDR in the package, or 1, 2 or 4 Gbit (BC/BD/BE), picked by CHIP in ModelConfig_EMU_EVB.txt. The mask ROM loads it into SRAM; it trains the DDR, reads the device tree at flash block 1, loads U-Boot as the tree says and starts it, as NA51089's does. Left out: the documentation, the Windows tools and scripts, the ICE and debugger scripts, the sample AES/RSA/ECDSA keys and the key tools (gen_key, key_app_writer, rsa_genkey, ecdsa_genkey.sh; secure boot is off), and the host tools no build step runs (bch_8bit, bin2byte_linux). The archive carries no build output. 162 files in the SDK, 28 left out, .gitattributes and .gitignore added: 136; the other 134 match the SDK's byte for byte. .gitattributes keeps the vendor bytes as they are; .gitignore lets the libraries in. --- board/novatek/ns02501/loader/.gitattributes | 2 + board/novatek/ns02501/loader/.gitignore | 2 + .../ns02501/loader/ARC/Lib/Release/CA9.a | Bin 0 -> 3686 bytes .../loader/ARC/Lib/Release/Common_exFAT.a | Bin 0 -> 28258 bytes .../loader/ARC/Lib/Release/Common_normal.a | Bin 0 -> 27732 bytes .../ns02501/loader/ARC/Lib/Release/Debug.a | Bin 0 -> 3296 bytes .../ns02501/loader/ARC/Lib/Release/Driver.a | Bin 0 -> 31028 bytes .../loader/ARC/Lib/Release/Remap_LZ532.a | Bin 0 -> 5046 bytes .../ARC/Lib/Release/Remap_LZ532_FASTBOOT.a | Bin 0 -> 5046 bytes .../loader/ARC/Lib/Release/Remap_LZ533.a | Bin 0 -> 5046 bytes .../ARC/Lib/Release/Remap_LZ533_FASTBOOT.a | Bin 0 -> 5046 bytes .../loader/ARC/Lib/Release/Reset_533.a | Bin 0 -> 28374 bytes .../loader/ARC/Lib/Release/Reset_533_64K.a | Bin 0 -> 28374 bytes .../ARC/Lib/Release/Reset_533_FASTBOOT.a | Bin 0 -> 28394 bytes .../ARC/Lib/Release/Reset_533_FASTBOOT_64K.a | Bin 0 -> 28394 bytes .../ARC/Lib/Release/Reset_533_FASTBOOT_QUAD.a | Bin 0 -> 28394 bytes .../Lib/Release/Reset_533_FASTBOOT_QUAD_64K.a | Bin 0 -> 28394 bytes .../Lib/Release/Reset_533_FASTBOOT_SECURE.a | Bin 0 -> 28394 bytes .../Release/Reset_533_FASTBOOT_SECURE_64K.a | Bin 0 -> 28394 bytes .../Release/Reset_533_FASTBOOT_SECURE_QUAD.a | Bin 0 -> 28394 bytes .../Reset_533_FASTBOOT_SECURE_QUAD_64K.a | Bin 0 -> 28394 bytes .../loader/ARC/Lib/Release/Reset_533_dbg.a | Bin 0 -> 35474 bytes .../loader/ARC/Lib/Release/STRGEXT_Eth.a | Bin 0 -> 12840 bytes .../loader/ARC/Lib/Release/STRGEXT_NONE.a | Bin 0 -> 1548 bytes .../loader/ARC/Lib/Release/STRGEXT_Sdio1.a | Bin 0 -> 4156 bytes .../loader/ARC/Lib/Release/STRGEXT_Sdio2.a | Bin 0 -> 3724 bytes .../loader/ARC/Lib/Release/STRGEXT_Uart.a | Bin 0 -> 1340 bytes .../loader/ARC/Lib/Release/STRGEXT_Usb.a | Bin 0 -> 1340 bytes .../loader/ARC/Lib/Release/STRGINT_EMMC.a | Bin 0 -> 18164 bytes .../ARC/Lib/Release/STRGINT_NandEccBCH.a | Bin 0 -> 14950 bytes .../loader/ARC/Lib/Release/STRGINT_NandSpi.a | Bin 0 -> 14758 bytes .../loader/ARC/Lib/Release/STRGINT_SpiFlash.a | Bin 0 -> 14980 bytes .../ns02501/loader/ARC/Lib/Release/fdt.a | Bin 0 -> 38872 bytes .../ns02501/loader/ARC/Lib/Release/nvtpack.a | Bin 0 -> 6848 bytes board/novatek/ns02501/loader/Include/CMacro.h | 35 + .../ns02501/loader/Include/Driver/CC.h | 65 + .../ns02501/loader/Include/Driver/Cache.h | 535 +++ .../ns02501/loader/Include/Driver/Clock.h | 34 + .../ns02501/loader/Include/Driver/GPIO.h | 371 ++ .../ns02501/loader/Include/Driver/Memory.h | 470 +++ .../ns02501/loader/Include/Driver/cfe.h | 116 + .../ns02501/loader/Include/Driver/crypto.h | 103 + .../loader/Include/Driver/kdrv_videoydcc.h | 193 + .../ns02501/loader/Include/Driver/nand.h | 122 + .../ns02501/loader/Include/Driver/nor.h | 50 + .../ns02501/loader/Include/Driver/pad.h | 898 +++++ .../ns02501/loader/Include/Driver/regdef.h | 199 + .../ns02501/loader/Include/Driver/sie_base.h | 808 ++++ .../ns02501/loader/Include/Driver/sie_eng.h | 106 + .../ns02501/loader/Include/Driver/sie_limit.h | 211 + board/novatek/ns02501/loader/Include/IOReg.h | 190 + board/novatek/ns02501/loader/Include/SMacro.h | 129 + .../ns02501/loader/Include/StorageDef.h | 481 +++ board/novatek/ns02501/loader/Include/Type.h | 9 + .../novatek/ns02501/loader/Include/at80c51.h | 30 + .../novatek/ns02501/loader/Include/constant.h | 115 + board/novatek/ns02501/loader/Include/ctype.h | 36 + board/novatek/ns02501/loader/Include/debug.h | 35 + board/novatek/ns02501/loader/Include/fat.h | 50 + .../ns02501/loader/Include/fdt/compiler.h | 50 + .../novatek/ns02501/loader/Include/fdt/fdt.h | 111 + .../ns02501/loader/Include/fdt/libfdt.h | 1970 +++++++++ .../ns02501/loader/Include/fdt/libfdt_env.h | 178 + board/novatek/ns02501/loader/Include/fuart.h | 85 + board/novatek/ns02501/loader/Include/gic.h | 195 + board/novatek/ns02501/loader/Include/global.h | 73 + board/novatek/ns02501/loader/Include/limits.h | 31 + board/novatek/ns02501/loader/Include/loader.h | 83 + board/novatek/ns02501/loader/Include/lz.h | 36 + .../loader/Include/modelext/bin_info.h | 209 + .../Include/modelext/dram_partition_info.h | 58 + .../Include/modelext/emb_partition_info.h | 57 + .../loader/Include/modelext/gpio_info.h | 42 + .../loader/Include/modelext/interrupt.h | 764 ++++ .../loader/Include/modelext/model_cfg.h | 8 + .../loader/Include/modelext/modelext_info.h | 35 + .../loader/Include/modelext/modelext_parser.h | 78 + .../loader/Include/modelext/shm_info.h | 135 + .../ns02501/loader/Include/modelext/top.h | 1382 +++++++ .../ns02501/loader/Include/nvtpack/nvtpack.h | 193 + .../ns02501/loader/Include/rcw_macro.h | 160 + board/novatek/ns02501/loader/Include/rtc.h | 76 + .../novatek/ns02501/loader/Include/scsi_op.h | 205 + board/novatek/ns02501/loader/Include/signal.h | 4 + board/novatek/ns02501/loader/Include/stdarg.h | 19 + board/novatek/ns02501/loader/Include/stdio.h | 24 + board/novatek/ns02501/loader/Include/stdlib.h | 4 + board/novatek/ns02501/loader/Include/string.h | 47 + board/novatek/ns02501/loader/Include/timer.h | 31 + .../LibExt/LIBExt_src/Ctrl_Flow/Makefile | 80 + .../LibExt/LIBExt_src/Ctrl_Flow/arch_timer.c | 110 + .../LibExt/LIBExt_src/Ctrl_Flow/arch_timer.h | 77 + .../LibExt/LIBExt_src/Ctrl_Flow/bl_func.c | 3578 +++++++++++++++++ .../LibExt/LIBExt_src/Ctrl_Flow/bl_func.h | 299 ++ .../LibExt/LIBExt_src/Ctrl_Flow/bl_linux.c | 908 +++++ .../LibExt/LIBExt_src/Ctrl_Flow/bl_linux.h | 9 + .../LIBExt_src/Ctrl_Flow/bl_lowlevel_init.c | 368 ++ .../LIBExt_src/Ctrl_Flow/bl_lowlevel_init.h | 14 + .../LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c | 404 ++ .../LibExt/LIBExt_src/Ctrl_Flow/bl_u2.h | 7 + .../loader/LibExt/LIBExt_src/Ctrl_Flow/main.c | 181 + .../loader/LibExt/LIBExt_src/Ctrl_Flow/main.h | 55 + .../LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c | 44 + .../LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c | 38 + .../LibExt/LIBExt_src/Ctrl_Flow/time_util.c | 69 + .../LibExt/LIBExt_src/Ctrl_Flow/time_util.h | 8 + .../LibExt/LIBExt_src/compress/Makefile | 36 + .../loader/LibExt/LIBExt_src/compress/lz.c | 682 ++++ board/novatek/ns02501/loader/LibExt/Makefile | 62 + .../ns02501/loader/MakeCommon/InputSource.txt | 177 + .../ns02501/loader/MakeCommon/MakeCommon.txt | 680 ++++ .../ns02501/loader/MakeCommon/MakeOption.txt | 307 ++ .../ns02501/loader/MakeCommon/Makefile | 126 + .../ns02501/loader/MakeCommon/OutputImg.txt | 598 +++ .../ns02501/loader/MakeCommon/OutputLib.txt | 155 + .../ns02501/loader/MakeCommon/dump_tmp | 0 .../ns02501/loader/Project/Model/LDS_LZ.lds | 182 + .../loader/Project/Model/LDS_LZ_FASTBOOT.lds | 188 + .../Project/Model/LDS_LZ_FASTBOOT_EMMC.lds | 187 + .../loader/Project/Model/LDS_LZ_HDR_SIGN.lds | 178 + .../ns02501/loader/Project/Model/LDS_NM.lds | 161 + .../loader/Project/Model/MakeConfig.txt | 1254 ++++++ .../ns02501/loader/Project/Model/Makefile | 135 + .../loader/Project/Model/ModelConfig.txt | 5 + .../Project/Model/ModelConfig_EMU_EVB.txt | 349 ++ .../Project/Model/Src/UART/uart_upgrade.c | 212 + .../Project/Model/Src/UART/uart_upgrade.h | 101 + .../loader/Project/Model/Src/USB/usb_update.c | 1231 ++++++ .../loader/Project/Model/Src/USB/usb_update.h | 323 ++ .../loader/Project/Model/Src/prj_main.c | 251 ++ .../loader/Project/Model/Src/prj_main.h | 80 + .../ns02501/loader/Tools/Bin/Configram533 | Bin 0 -> 1987632 bytes board/novatek/ns02501/loader/Tools/Bin/bfc | Bin 0 -> 893344 bytes .../ns02501/loader/Tools/Bin/encrypt_boot | Bin 0 -> 75800 bytes .../loader/Tools/Bin/encrypt_boot_dump | Bin 0 -> 202856 bytes .../ns02501/loader/Tools/Bin/nvt-ld-op | Bin 0 -> 754576 bytes 136 files changed, 25647 insertions(+) create mode 100644 board/novatek/ns02501/loader/.gitattributes create mode 100644 board/novatek/ns02501/loader/.gitignore create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/CA9.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Common_exFAT.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Common_normal.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Debug.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Driver.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Remap_LZ532.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Remap_LZ532_FASTBOOT.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Remap_LZ533.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Remap_LZ533_FASTBOOT.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_64K.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_64K.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_QUAD.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_QUAD_64K.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_SECURE.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_SECURE_64K.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_SECURE_QUAD.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_SECURE_QUAD_64K.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_dbg.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Eth.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_NONE.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Sdio1.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Sdio2.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Uart.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Usb.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/STRGINT_EMMC.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/STRGINT_NandEccBCH.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/STRGINT_NandSpi.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/STRGINT_SpiFlash.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/fdt.a create mode 100644 board/novatek/ns02501/loader/ARC/Lib/Release/nvtpack.a create mode 100755 board/novatek/ns02501/loader/Include/CMacro.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/CC.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/Cache.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/Clock.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/GPIO.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/Memory.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/cfe.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/crypto.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/kdrv_videoydcc.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/nand.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/nor.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/pad.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/regdef.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/sie_base.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/sie_eng.h create mode 100755 board/novatek/ns02501/loader/Include/Driver/sie_limit.h create mode 100755 board/novatek/ns02501/loader/Include/IOReg.h create mode 100755 board/novatek/ns02501/loader/Include/SMacro.h create mode 100755 board/novatek/ns02501/loader/Include/StorageDef.h create mode 100755 board/novatek/ns02501/loader/Include/Type.h create mode 100755 board/novatek/ns02501/loader/Include/at80c51.h create mode 100755 board/novatek/ns02501/loader/Include/constant.h create mode 100755 board/novatek/ns02501/loader/Include/ctype.h create mode 100755 board/novatek/ns02501/loader/Include/debug.h create mode 100755 board/novatek/ns02501/loader/Include/fat.h create mode 100755 board/novatek/ns02501/loader/Include/fdt/compiler.h create mode 100755 board/novatek/ns02501/loader/Include/fdt/fdt.h create mode 100755 board/novatek/ns02501/loader/Include/fdt/libfdt.h create mode 100755 board/novatek/ns02501/loader/Include/fdt/libfdt_env.h create mode 100755 board/novatek/ns02501/loader/Include/fuart.h create mode 100755 board/novatek/ns02501/loader/Include/gic.h create mode 100755 board/novatek/ns02501/loader/Include/global.h create mode 100755 board/novatek/ns02501/loader/Include/limits.h create mode 100755 board/novatek/ns02501/loader/Include/loader.h create mode 100755 board/novatek/ns02501/loader/Include/lz.h create mode 100755 board/novatek/ns02501/loader/Include/modelext/bin_info.h create mode 100755 board/novatek/ns02501/loader/Include/modelext/dram_partition_info.h create mode 100755 board/novatek/ns02501/loader/Include/modelext/emb_partition_info.h create mode 100755 board/novatek/ns02501/loader/Include/modelext/gpio_info.h create mode 100755 board/novatek/ns02501/loader/Include/modelext/interrupt.h create mode 100755 board/novatek/ns02501/loader/Include/modelext/model_cfg.h create mode 100755 board/novatek/ns02501/loader/Include/modelext/modelext_info.h create mode 100755 board/novatek/ns02501/loader/Include/modelext/modelext_parser.h create mode 100755 board/novatek/ns02501/loader/Include/modelext/shm_info.h create mode 100755 board/novatek/ns02501/loader/Include/modelext/top.h create mode 100755 board/novatek/ns02501/loader/Include/nvtpack/nvtpack.h create mode 100755 board/novatek/ns02501/loader/Include/rcw_macro.h create mode 100755 board/novatek/ns02501/loader/Include/rtc.h create mode 100755 board/novatek/ns02501/loader/Include/scsi_op.h create mode 100755 board/novatek/ns02501/loader/Include/signal.h create mode 100755 board/novatek/ns02501/loader/Include/stdarg.h create mode 100755 board/novatek/ns02501/loader/Include/stdio.h create mode 100755 board/novatek/ns02501/loader/Include/stdlib.h create mode 100755 board/novatek/ns02501/loader/Include/string.h create mode 100755 board/novatek/ns02501/loader/Include/timer.h create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/arch_timer.c create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/arch_timer.h create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_linux.c create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_linux.h create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lowlevel_init.c create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lowlevel_init.h create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.h create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/main.h create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/time_util.c create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/time_util.h create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/compress/Makefile create mode 100755 board/novatek/ns02501/loader/LibExt/LIBExt_src/compress/lz.c create mode 100755 board/novatek/ns02501/loader/LibExt/Makefile create mode 100755 board/novatek/ns02501/loader/MakeCommon/InputSource.txt create mode 100755 board/novatek/ns02501/loader/MakeCommon/MakeCommon.txt create mode 100755 board/novatek/ns02501/loader/MakeCommon/MakeOption.txt create mode 100755 board/novatek/ns02501/loader/MakeCommon/Makefile create mode 100755 board/novatek/ns02501/loader/MakeCommon/OutputImg.txt create mode 100755 board/novatek/ns02501/loader/MakeCommon/OutputLib.txt create mode 100755 board/novatek/ns02501/loader/MakeCommon/dump_tmp create mode 100755 board/novatek/ns02501/loader/Project/Model/LDS_LZ.lds create mode 100755 board/novatek/ns02501/loader/Project/Model/LDS_LZ_FASTBOOT.lds create mode 100755 board/novatek/ns02501/loader/Project/Model/LDS_LZ_FASTBOOT_EMMC.lds create mode 100755 board/novatek/ns02501/loader/Project/Model/LDS_LZ_HDR_SIGN.lds create mode 100755 board/novatek/ns02501/loader/Project/Model/LDS_NM.lds create mode 100755 board/novatek/ns02501/loader/Project/Model/MakeConfig.txt create mode 100755 board/novatek/ns02501/loader/Project/Model/Makefile create mode 100755 board/novatek/ns02501/loader/Project/Model/ModelConfig.txt create mode 100755 board/novatek/ns02501/loader/Project/Model/ModelConfig_EMU_EVB.txt create mode 100755 board/novatek/ns02501/loader/Project/Model/Src/UART/uart_upgrade.c create mode 100755 board/novatek/ns02501/loader/Project/Model/Src/UART/uart_upgrade.h create mode 100755 board/novatek/ns02501/loader/Project/Model/Src/USB/usb_update.c create mode 100755 board/novatek/ns02501/loader/Project/Model/Src/USB/usb_update.h create mode 100755 board/novatek/ns02501/loader/Project/Model/Src/prj_main.c create mode 100755 board/novatek/ns02501/loader/Project/Model/Src/prj_main.h create mode 100755 board/novatek/ns02501/loader/Tools/Bin/Configram533 create mode 100755 board/novatek/ns02501/loader/Tools/Bin/bfc create mode 100755 board/novatek/ns02501/loader/Tools/Bin/encrypt_boot create mode 100755 board/novatek/ns02501/loader/Tools/Bin/encrypt_boot_dump create mode 100755 board/novatek/ns02501/loader/Tools/Bin/nvt-ld-op diff --git a/board/novatek/ns02501/loader/.gitattributes b/board/novatek/ns02501/loader/.gitattributes new file mode 100644 index 000000000000..1c5b20e00b05 --- /dev/null +++ b/board/novatek/ns02501/loader/.gitattributes @@ -0,0 +1,2 @@ +# The vendor loader, as the SDK ships it: no line-ending conversion +* -text diff --git a/board/novatek/ns02501/loader/.gitignore b/board/novatek/ns02501/loader/.gitignore new file mode 100644 index 000000000000..f84d41d3cbe0 --- /dev/null +++ b/board/novatek/ns02501/loader/.gitignore @@ -0,0 +1,2 @@ +# The vendor libraries the loader links against +!*.a diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/CA9.a b/board/novatek/ns02501/loader/ARC/Lib/Release/CA9.a new file mode 100644 index 0000000000000000000000000000000000000000..a647a8aad25c3acd6f9a383d30ea73be8302b49a GIT binary patch literal 3686 zcmd^BO>7fK6n^71UdIFyOrXa6WSs<>Mqt+QA5N?MIiw<?N<~|W`j@QjMYd|<)OHZ4 zho+PRs*s?Cs%cNCmsYe=pcOZ)AXU9oJpdIF5*IF2Bo3BoR7#;DeQ$SXy|xkwRqCmu zef!Nf@6DSxZ)SJK_kxm7rh8qxrP>mRMgq}TBpe7!lB}t$Z%GOT_ZS@}TmaAnz#jcu ziNE~XzR9CXHj`3{>b|&=OsfOgEF`C<$CFuAnH<uZ2D7>3yD*+4wcb9SGMIwaMm1wP z8b@!6#em#ZwYpClrp9B{z;s>{N;S@^12fKgWpxJi8htJ}@59;YLi+W5rl@Ljgk@5p z+b$Qq=D!-THBH?00aZ!qp3NwAGXSmGpEDQUy5fOYI1~vOZ&{9nLXs2=bn9C{ns9xv zcmFVB3>RK63_7980B$#E?W;l>bmI1CgqbVQ4s&98L!Vf_)i=L5c4mGtcV?y}Ra&7n zfZ91<rIno;wEarDnUYxUX_Djz3ztxnzHIAkxzRj2_FyURo$#hV{T{j=-&ixs+Po91 z?lz8YNjHveO<x!k?lfGc-j_-zL}>qZklkVO;zED7Sbk$S3qDx5D&Ad^QH-#mg1!%- z@75a|N4;riZy7$|WI@*T`1bk{=iT+#CJa~Gnn!Lvglj+Emju>kdn7DE+gIj@m6Br^ zwyS$>cRWL^`}c+Zh*&<DW8ps*_*figt}q|Wfwc7JlO^!kG}LGO-$wI}9?d+DgX7Ba z(3;Tdh~?fUJ;IgOs#ja9HKWwWi>twgHm9XZAG{L(*x{M?Rr=W2y^q#==KBLK@3}$S zO`82oNq>VGlY3<L3T8YFbL&RfkUO1-pLC4fJK<*6$#Pw#&u+W!9HzQ(zYoZN<7M)_ z+WV#9b5`>?TdMlxv#9Pa+I3<%tVK*(u^chx$8BlGWRKWt-H{PXpB|$Rycm!7NS*sL zlS)1(A(0~f(5`Mdu*WZlpCjTANJQmOcUXEetJ&?c*hqQxXr_?KO-j*3Ae@r-L}E!f z7CEd2V-Y#1q$0soG7wV|(d1z{7*-Qe`E3~J!R1p_C6NIpV|7(LmoKWvb`3<q;SvX& ztik5CwXhBB8NtIgF)!O@Z)06-r)@~!>(0^o-P+;4`E8J1sQIdi+jut(1#Gbv0qmfE z`n=VSUp~M|P7VEe3n%?U3#a~0Gbp|PDGMk4tc6qmEoNAD(-Tz$aMZ=)sMCveda+LL ztkdhf!!jO?KV{)o2Lkr4%||U0fDX@U5nwePrCQcKh;Gc+4#Z6;lEI%xjG??`@K+Ie zX~v4m2_o^MD4(GeQOMuth`f;gA}5H%ODGMPUoRrr-$HChPJW30h4_U<zY*&{ptuda zjP;*TB!iD({Wp|;gD0?#4{X!81Kv0IT8)cv*5EX6H#p%U^6i*knkS8awZ<OvsUKuX z=qN%*YPl1%<^;E%k~K%a^)gX7UKmd$wVQ@gDCCl0X}}LyE$~}I_4KX3ZcvYGH@|<F zPRu6V&2q>3|M*gJ8rRsi72qr(ZV>t}*d&0z34Qp&wI{uu5cSQ7u2uk#f%Kms`_qIz z^h1dD=LymN0-~!O;2Q(i;=Xcq0JIQp*8d}9Cn2YPz0|%PV8p-#A=;-2yY%m#?2E|B z9{h#lM~X@Uv6$B}&1?93E`pyfrQlB#3gFMHS^t!hF9yI*I{%7yKV7}tRxx@mr_!&D z)vlJCH29ObBS+Lp3}@iLOMazT%x4nQMcma-TQF7HH_ZR0p}LNkUak1>O?7@stYr5r z+Bl!WPB#2m$32F*=Y{|McVYwmY5NVuA#{EX>uXTRhJ?n8qELL?-*@N>m(wiV^+9a0 z+Wm|Q`d{(F?cT!%tKDr>?BGU--0qV)yC*C7``WOhc~fb`L{95f?M-8mTtY$Bl-7u^ z50TJ0!3)_?S%<>cg185hbd4%T;dX>PR#IKXPS=eX>0F@vHKS0Dt^Q79B7fmdP{*tP E0J+~91poj5 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Common_exFAT.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Common_exFAT.a new file mode 100644 index 0000000000000000000000000000000000000000..acfc1767f6588206f9e927d564bc8027a9ff16a1 GIT binary patch literal 28258 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 AdjJ3c literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Common_normal.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Common_normal.a new file mode 100644 index 0000000000000000000000000000000000000000..9bf53325a0c2c26ced3f69aa68b7d35be1d96334 GIT binary patch literal 27732 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Debug.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Debug.a new file mode 100644 index 0000000000000000000000000000000000000000..c05bf3b09512ab984b64ba118915375f9549548d GIT binary patch literal 3296 zcmb_eO>7%Q6n^V<+{AU$5L_BcflVn8O0%rvza~_up{Z+VE2{FNN-c8M_BM|2Pqem6 zkdWvF2_Xa=BY^<*jMO4gq#^}+;J|@H5l4`EY!O^4f$9_GeX}#pcuOTDc+&XI_vV{# z{@%=ba=+_WYR|-<vIZ@c&!zISxoj$HS&nGZe=RGOo{=3E<3zNH%lCIHRj=G#DmB_m z)UTD!y1qnhuT!eDn(bEIlaZx6BA&0<T+{kiyN#8STdm4gyVYNYKL6BgHj_)qU&qO1 zGM1Hg(z##(i}AM(9W5A!!P5`SpefowL_3E?d?+K_6iv`J>RqA>(ZcOpf89<Ti4{J& zy!n_h3ACrS>#{NFh?d^Eu|L@}w$jv}SD&n%s;wQqb-lMv-^yX=9BZJ@x%D-!B}AX0 zA|jTkqZSc(Z5@50T+AcrHL*DSg~@v7L_8A2YK(;T+NEg0EC$+v(%L!>=;EcJ!U)HM zk*35LvCw#?z!wEyjXC{m?}b?5TJQ8{bm3a><i&Ri(L(IEVe{i>ji1(U^gb9ZKKgL< zW@2P;=EsHp%f0AU#8FO)$gx9z{Ad=(GKl<q9m#`rZQ(M;#d20@OPmhP5m)9cvMi#* z2M^9!Q%9GZuHUj4SUEd0J>#VI*-rKe06S#?I+>ZQb*e6S(;CO}y|c^h<yO<mms8oQ zvoAMWab|O8y!33&NxRitx>`xiy5)T3jFZlK<-GGM&Cl^<T+b~pli_f6=wQq5c&pR% zd5Xn1%?}$Rk?}~<*k)`uCye`z9mYe^UB(_`Z)Cw__Mqvx6s4QD^;UBr)A)QTqBk=h z)H8XvMwkK31uhZBI|h10=|RT(`!Ve9hM5!#@neF&w@-=nYp9qs9O4fPKF%tz;BqKr zQar?u3w}ZoxLr4s5+Qy<@RNPgMo)xH8V&JBL-QZ)_YC-BA^w=)pYF2)+=o1ZB>{HM zxMTmvH>g}Q>D~}d(jF~>eaeS$F@#TP*y4JF3(gliHO}YtI{VFBpbPvqdu7o7kPG<O zvvEGJ^Ae+NoK?P*ctYR=eIxNcfk){FiR%J$FY!#<75N;mbUUSX$6szP(e4iIu2Q4_ zURNq5eysUwc+XXdLA_OZt>k;{R@bk12y~l+q2L2hU2ePOx;OYqkfZTuLOk#bUS+1} zt-jb%FaQ7Zoj`WStzfU>lO)bMzALydkw=IQaC?Lg9%mnCGWHPuKIwPDKPLNeoU5XJ zFZ&2zJV$!;gATG69=8NK$WC~i75F&g|1wTS>P$%;8=faMBQeex`UhluLE`77e?@xS z2h3+t`l|Fb>B(-t(df8k_8mX)HC5wxu|sy%?YLx@+ikLauWln~2gj`?kZ4+Q{Z8r* zmVUlr1^pjExDEde{vjrkC>-DTzhL_<Oc<+4**uv_tI_b9yo~u1$85L5>0a)3yf&}? z-`N99!yV+U7KU@t4Q((^Il)t}`rUYsGY>hV^Ei$Ars~MI@VGc*Wr~OV#CPL>Z1{bM z_+L(t*WjRFydzw6y;a8g9F^W-j_Z0!nPa#o*aM}9{L=M4XPo4sOzEBAfUfrvi(o#` zgI9V!*LA%sjB(eLDZM5KbiLD>9`2mdd!OsN-c`nUCzUC^cR8TzRap-_%nx^5>7D1g zu6Khm?w~TI_X!7dy*F8}$T8^QjZk`Db6wZ77}PnYOzC~a0bTDq)?4Hl^sqll59@;- z-Urxw4D>G;+EA`Z@34n`%E4|>6~Bsy^>L1_sHS9u=xGJmg9p2Zi^^r--Ta5Nhl(`C hgJ+4p9cOTb%XW@fT(AzT2W!>!#yFpU;g~X|_cz%q`FQ{U literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Driver.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Driver.a new file mode 100644 index 0000000000000000000000000000000000000000..246a76b407ed1edd17bcd8840dce468ffd1510fa GIT binary patch literal 31028 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 Tqp~7hgWg1=rwApGis1hRtqqkF literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Remap_LZ532.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Remap_LZ532.a new file mode 100644 index 0000000000000000000000000000000000000000..ee711c8f1a03834e103e06dae794c052d21ebbf0 GIT binary patch literal 5046 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Remap_LZ532_FASTBOOT.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Remap_LZ532_FASTBOOT.a new file mode 100644 index 0000000000000000000000000000000000000000..ee711c8f1a03834e103e06dae794c052d21ebbf0 GIT binary patch literal 5046 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Remap_LZ533.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Remap_LZ533.a new file mode 100644 index 0000000000000000000000000000000000000000..a353136039cc9a721d8cb9b0a8d58bfb7e488593 GIT binary patch literal 5046 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Remap_LZ533_FASTBOOT.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Remap_LZ533_FASTBOOT.a new file mode 100644 index 0000000000000000000000000000000000000000..a353136039cc9a721d8cb9b0a8d58bfb7e488593 GIT binary patch literal 5046 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533.a new file mode 100644 index 0000000000000000000000000000000000000000..438ce47545e2b12cd08ec3493bfbe329457bc980 GIT binary patch literal 28374 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 Xc67*7J}mIja|?Pey9RRMguVX{;6RDI literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_64K.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_64K.a new file mode 100644 index 0000000000000000000000000000000000000000..392758ef504cd16b32c6603755b2afb724b118b0 GIT binary patch literal 28374 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 UPx-LGN6#(jz3ghpg%kGv4?RGM8UO$Q literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT.a new file mode 100644 index 0000000000000000000000000000000000000000..95b86543140d829bd38dde39bd44de27ba069944 GIT binary patch literal 28394 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_64K.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_64K.a new file mode 100644 index 0000000000000000000000000000000000000000..f296973c248c8967c5de36910b691f1700c51b19 GIT binary patch literal 28394 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_QUAD.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_QUAD.a new file mode 100644 index 0000000000000000000000000000000000000000..275e85fd1f23e6959c0e812e5c446882df2ba6ae GIT binary patch literal 28394 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_QUAD_64K.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_QUAD_64K.a new file mode 100644 index 0000000000000000000000000000000000000000..a2be6c50f648c312ddf139fcacf534caebd43a36 GIT binary patch literal 28394 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_SECURE.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_SECURE.a new file mode 100644 index 0000000000000000000000000000000000000000..edc51bae176ff278e3ae915b60e360777786e5b7 GIT binary patch literal 28394 zcmeHw3wTu3wf{adlVmapVe(LufN(Man-GYT7lcQ3@)|-CNerMAk<26+n8A<?d1$b< zOe|WowpB~LXl<Kn+dnFm$1T<uCRMNX_S!c1YP9{@074YKb`k<NBDeYf);W8hIWtDV zTHCMRcQ@?$t+n<#Yd_9@pM6d;mblxSyq8%nmBU@$g86w17S1oqTOiAJB}o4(%SFZW z`2{WuV=RL)BQUO%v6LB%U3BK-ed%$=mZmdST_5gO|CO=N;@5wxp`oMG-QLM6R@XID zx?7uDJngKe&E4#2U)I{`X>WD6ENflg#@gF9HI#dr@+&>vD>~a*v#-P5*y3p*@eR$L zO0Z{rR|g~>cQb2hYhCZ#(9pce-Ef23*V)kA*6Ps-S%;^yp{t{@p`)wA?`dsj<>mDa zo%PN#q@}Ih!_+Ie5$JaMS~pB8Y{+N+c3*4fdgk}EuW#7oZof{YHXwq=E-r5F+T>@x zHYI5V`9$5&?(6h`Y-+h~gQryl_`O>i{O%1NMg;QF($KbkJ)#$UvqC7>D%2)-$8`;e zDZ~h6C4@4W$6#nf0~yq`!zFY{lh@O9ouah4%ctj=a?$nfmM#x#^mPietlZP$-qPZ0 z^)ys7c4=fa46l?Q;pP_#k;|f%al3nyv)!|~&J7~B?NTmnXa<|t(An7X5m~;FwtJ9% z1PhD$7Ld2FsBnHB|Fzra7b4!g`~uztT$ZgBHBL#A&=6E7u`Cwi7%Mj_@~A=uvY3U% zu)j`BoZ#vzL<PcFjp=8sBnzC|<8JgZ3C)W|m9@2Zdb;P8EMU==m=d!TYnUU=HSlP( zD?dUQ!%~Gdi+_4&WKkc{NPvP#Q!=uPK$~^^EYR^fegSB!jz^ckQgr+kpi_1HYS7bl zd=qF{$G3u}I8<k3HwscgeJN9ZqS;q;;a244mN1^N??v!WMex6k;J+Kev%0n$Jnglu z^;BP2O?iDui*G|KD{I^2M-}QQb$57JnY+c;*zWH1wY8Rab#AHmY*6}zx{~^mE9@aM zFGS{t$bt}A$ZBd!$}8#{RxDdn!DhLc=;9h$(62R=*4D0Us90S=oegz-iqzBI;OX`> zH8k-Asj7{XtVue<Newk9+C1MEU!W2O+*GOu2HZ@#|Ar*>J{yw3<aTV?)ah;ncDAeN z6;!*YB^PzIljRcC?Cx~4+{TU$mRnMPMXtNEv)$L&)#>R_BRP-Xnb4uT9?f;BO@-=b zh@J*{EW87r+@L{CH>I7fr)!AL=DcVL#o)8xg%dSwHUxTmL$D`9MmFeLVee9%3?y^W zkIo5ulx|$-7eOu%losKHULph{ZAuuJa-jqidW1-l=I#LHf{@Zo?UB+)NW9+Od(e3Y zGU0?hUq`#HH$;D@n-NUbA1){?=3VEx`@?N&BwBwMOLsFU9~Ehs6weW^^rz4%p_}&) z=_^fI*{kW5(0l5gC`naDeJj-!;pkp46f!mIWy@D;GZqKL7sue|yxP>~)1E33y>L`- z$VIlNCCDD-hmuM;74@Im3Gt$i-2__iM5*LJNY|fB&#vnDg$=TIKJBC&5jn&~KoKvY zzMbp>AAlEm`M7qHg$qODSje8I+yANB$^1ffCN0b7ZYK^k(ONq(Qw>8M|6j}<O0tmX z&!wL0ONZ`H<g7u${6+6X$*M9VYQhv<Fpa^=l)R?4wvH;hetP~%m0TS(K6?d6TBz<) zD)nOq-EZMU9nXM(^hBLpA{01M7`ZRN)Ai@lo2%+*b(id&Pu-=dq&{vDFQNYKc)<tY zsST3<xVrl`!qVV{6ZV?0M9FXPw05>{QR?uy`uO7F^Y7z})r5xC-G27NW3#NiN0~Kn z>~ZT4k1=)^eBDu`-Ll*9!(-Okg!gyJkX!FQCRux+ck?k8>^)3%eh02));qa8aBMsH zAh%^y#)hef`&r;93uYhoBTV99Yqjfssl>b5p~mCT<P=W;aVNeX<#_(6RQ3E(YpwMD z%-U7&Il#}XtpILQP^5)1doWds4YFy!K#`V?Fu88T1RqGM8)5TXrGIAIq&g6)I})Sm z*>rK^QM+mV@S={_ND$O^sfj8pT`WdD?d@IuPS)w$gjuDp)z`^pHGks3^f|X#s>i}n zKFMXkQ+*a~ak{A76bL8SFMu|~pGz;Y&62(IX|o?dFI4WKcqx8;o2`W4PROXe#==uR zteh5U1Iq@Xmq7$~WQUyEW;bFZKpl3@)n<$4pZ|ChRHF!Mv;WAttVXZ?Ds}OnI6mmp zBFdib2hrj_(HvgygkEG_`#8PGx<-2EQ`h!E?|kZ-3wm|%RM#+b_}IF(7hxjpAT|0@ zQFZvt{#<o!VgBDfJ}7GdmQji5lUC8>Fx(ArmYUM}`=w=Ni{z{tU#q*lO$H;+&n=vn zZ_g{vwHIX*lba_KYcI?%lCQxw6!hllbmVr=^}Y@)<K+d7c}30k;`s}k><j0w_Y^Fg zZ!d5+&o5|h%3J7eT+p=MUQpy|TwuSJl`KLM`NYf)a+1xOBtwdHfpn2ERZ5f6r5Prh zH2L<8{+^iF$OJC~1tMo<#;{(7>Zp-jsK4MN;i3msm1un;<_J`05=noOO|>Q(118x? z_*6|5n-iNb?f9EF0g%4Q=5+e(in7aqkZ66IrThseN+Gh%ZW9U|g*|GsMANM$M|xcf zrT$PD`6774=~tzUeE?#yV1UA2<oZ5{fQm`<NMApW6hd$(WHhFcr+ir9X-pA$1<9U= z9;I10vO`Y2wb-uatCw@N?L50^-RH4xp~6JXSNpvz)Wc+!7?h_<!I@Iv0NZ06aHPv8 zhWvqp=JJ_YyZUCzfrBJxMpLyT7{yXu>E8O7v#$mYvOeT1IDR17$@Wa2RU7nIM4yOa z^J0e_rX{gicl0f=+wJ}PC;sQJ6PXu}92!4}iDVU7O7^afp7NTxI?Y=$#xl}eG0PHN ziQfN&&2+DAjM>s%WE)8gb}~bdO}%GLN;L~&Z^`Bu>#qwOuosk#+vl=9W#e<>rHpiM zx@$^RqAQIoyq4%K30kE@*Nf5ducmo#gCu5|*~>B#k?NO~7|42}_x)kU)(2&HGd!ir zP?hXuIcEpdxEY)GPO$dtd)c0DH|4<Oq~D9GE2dvmmFB&x)YM1myr6oTH$Er6Pm-BT z;p7vmDHo2UbeFa2Ls!*4X<p15g-=LI`1Az_od@3ze%n$>nwIJr-V1|rbn<{%;r}x1 zz`V7-V#O6q{z}kFdFPJGnd;82nyk#LYz8^g^&{s`tJ7VpY-?P%*zR*VPMeb+1W#72 zV}V-Z0E@3cr}Q5^)-mQ}!C&_DpS<Nl7QEc@J*0TLRN7ZN=Fhknr8dYETDk}Hy+jB7 z?(cwJqtYdJf@V3-kbcQGL0@Z7ul)w-=_)O42R%qOaqTUj?^WrNn?bKp<0{>X)NQR^ z<9o`LG!~f2f;aX&d(u$w?8)czjU)aQTWXA_h6=vN(!5fp@r+^g`f5vQYTtCHZA({m z*Rph1;}(mnv#NKC)pfBq)|>2Y^iDICoscs9%W}$YFLeZ0^|VzPaE~v@cy>IHQitE2 zDeLfie@YpCdsF^AKC~}&_O)dXdN;-YA*!aYxzeMQxQ{g}nBi?wP`!(8)Px&d$tcIv zzG?BvV?&LL+$`wsS-Z>_>^C^(ID&aSao*=n8j__PtY~`X_FYwZb!BaknW_Ar8evms z3>-N1;#S9KRnLJ_f8E+2T-M_ly)X0orH;|1pwbG6ssQy9g(?Fzr~2B89Vo%5IM|6R zM;%H+-F?b?jW0RqpPDvMQZ<o5F($gAaxSlYV8mqD-WQdb?E0>43BT`8c~|@TPa3S0 zhGHc*#mGll(6J)fWyf9rL)3?_6)N%%y=T1ByqQ6xu`DPVlU;9&Gkaz*+4!G8qRWD^ zj!x0&)R+%nqj1TVS()f83!0S>mPs*w*~fCO8@OzU_4T6O%H>pd4Z%XRtxEVhcu|)L zT?lW6_rkAQmBGvoLy*RdOn91J<iQu?nkDdSK$pXtU~dQX+d<y}ya~7+vaLWr5I{Y| z=rxH}rL8hs?bxH61??EUmdg#9MuhCytln!Wvv%xfo70^t=g3UU5H!m)*sjb-RctM) zzHT4gQOjV8EjL5e{Wh$8k6Y>WqSb9-!8P0RloCF0>hRXqmnGX6*G;u`4efV2j?bz2 z?(sRxZZF+B_SmD@x*D6M)Yv^rjm^mT$??p}-ycs72Fw=@P;E*acwnTT4U8~z<-5$x zYu@7MoGF8Ue%lzdCZ&*LgU*p*(oRJ!GML{TPF7O#i{nX^XNHq1$Kg*8|9;#Wc=R~c zu;1WUiu*Nw4ROE1uQBd<{F>r^i6_8RuBv<ZVXJa)mVu>v;Dz4=Pxr(zIvX{bjlTM| zL@l2OPF=cn`zu!4DV}eW?KGz>O8>Vlf;ZaU=iv;LdapvVDCHWmSsOeh%|(xEwy9;` ztb{!1eIqLRwHN1^1|{32nw@BFXUG<-$x^s1({=%uDR<0&ao@LWsgOKlGxw!tD7~jG zjce=}pDW86Jx|Wyw83W6s7y{V+bkYK&{oG~lC53~UByG0?J7>4wXNl$2{xCex1NVO zY#X?&+~(CnZ_%vWs!?CpsO_9ewB5$9NVMIqQQy$0J2;hM+rcT5?Yo?E+V0_$*LE+b zL`el~_dz0|r0!EnirMbxF~-<_#&u(Ck8;Xkds34<%_*zxAg7q^8SUCWE;HJG$*Bq3 zvz+>!?FEhcl}7!RQx@BRMjhf5%am-X&L5~L%$y0jcI>{*bZ4i6bBq=wsx|0AFZy@1 z*j+bI*p7&6ZAW>ksLlm~Kf4*Dku8pg?ikOOr)cyXd8$U|$QNn!<aK7pcrLqA=}Dg5 zU##g~%JR5up(e9ydJavNr|FewvV2XiRFf5GdS#ldP}3{dWJQ`@g(jP?={Yso0!?qJ zCM(utD>T_cO}0{#Et1i#E3I_L_+t4gjb5U~bG0V>q9$9d$u84ueo2#EuIa7OWDeP_ z(Is-TMwiOBXmpu;t45d0qIK*TuaHIi*fH+3&(!Mfj`5}7_Gs5sg4?Tc%fRi^xGHe_ zHLe=mziV6#xL;`874qX6y<C1xqif~YHM&mz6Q={VW193znPr%jnzCcOUY0cZ3fZ91 zD`lfbuaZp~eU%)g(O1jS8ogSM(daM9W{qAWi(Yfb_%*UcldqLS?ciEDUX!oWwTT8f zL6f_5?ZYiwHF=|)$Z3Wg^3gdnfbvyG+5@NVLCgE!0JUR@%V;FuCq{CmO*=-L5~)p3 zAY}h$wVut)bc}iu#ppeOww}k^`b>=R_iAJOR)iGs5W0S!?)oO}ddYT@r}IJYm7x9* zRnpf$^Qo~wL9(mIMzJ3_bs^?>#Wx#ZzeltGsMenwZO?HVMy<E+!JI-(Z<<Z?V`ke+ zTy~M|H=JU&YkBDm+17E{RQ>G4_B$RP0Hs=disP-(AH3Ge=|Hsi)qG_p@Yi9-=xrFW zrNIo_C2t)#Rk*cp><hc|Z1P(<+MH!#>?e<?<NDUqDZ5qu;WtS4#486*xwlG~)0p3K zj8>O@zjW(qBQ%m%e82SdHyoo60WUv2@yP4LR+}NCQmL(y&B&=L=Mhd#ppUI|)*Mr< z88Vk2Q>|Toy7p(r%yj3{V{K#iv_F#Cl!IA{G2OZK^w~$#oM(=+K0DSx_h8=fZFoP= zoxv$;@n%gT>T<g#xsX#Gnk0o&og7()!Kt<|rj;wh-3!%E7uQ_u`}ciMD&<9U%_2Uh zbYyNtO}d}gq^+olMOsZ_nNu+eIYwiZ8oRqvvL!mzIrBr65^|iTl+}aYpH{wsI`&ho zj)lS=fQ;tXiw}L-+q-O$dzv@S`@`j#L040p>j%|8s7&)_1Orl<D-UbmfRyKw6qH;q z%UEG6Ayiunyf4c;mSqM5#sb$><MB(%f~>;{jKdm%b;P+y=bOujvl`<RjZChw$oHW4 zxcB98)^8jOY+mTbI<I6~<qIcGS3P&qm=--ES>jy9`^;WB7?WTgF*3)A1ZH*}_TE$} zxlHyiFI(nI91CpC@TK(Cp15my?TIUw-?qQxL_&$=YF~EOzD}&1q7xE6G(V12+F{AN zZaix!V{EHCBREz1?a8==<tK1@%jNc62Wvm_mADT3q$c;q689Eg_7jQTAH5qd?K?HG z^@CTMt0b%d?{p51Gx=q#br$*9oUab3>u$*GYpcqF2IGsMlD#{z6Hq(G?3Cx)F^7VS zeYIl&JIm=BAnB7M=BYOgUT<&)jnPklHVvlqIZwo1=nPt;onrw%=~QBsRvI)I(y_O2 zx3afT8Z?6|t={QO_gZxlia#yp!&mLfy;f(h3zb?#agr_D#`##s-RL7tHirdoLl5Xc zy-DLUnb2Bf>(IQ9)IWw^v3Bg>X0;C$_3tOgaewSh8>6y{`=aD~V|quTSnY{^7T@PU z-W_9-{j0+i_Y)&=Qw!dBXe2(iWYlDJoQSpN4H+-_+A!;T0&OjTwH2+esQsBGQ!tfD z!D1E@+zadmw!q5>gDUNHDHsp5!qdJ*z$no^cW^f;z&$hqspJ^jUPoozHfX%eal)z0 z6sV4GIdr*Fsz#+$X~$+swQXa~;y0V8c^Bgj%2=;1s=j95BHm}cxHW3fnt4iFwG~xM zvx=&wyNardD$`x2f}*N)S5eg(S8Z@r{(Y{3syE@&-9Y&CM#tzx`*Y)GFExzZRge0x z!f@(=B*W<~jp@)|lRwQ1SyQ@eP8Css73r=lh3W@2%}XUWyXun4WUQnESYs2PSv}pA zS<P}T8?)>o{;&TN-S^~(WvXG&F($k27=CgjUZEYXTR|sG-HAKlas`HsS{{wVGRlg| zi^`75>sfdiWsT?K4%WkhFM(fm;K?WJSFKvbcFl3DS|#B@0+>}%aSuPdYSsJiPfQH5 zZNb;*V(wzF@Akl{AGg0eUYUn|Gqi(eLDB92m1p3f)#wV&fiCTfE`?tO-waPDzb=Qb zg{QS2o!|Qo{4RJOd=LC1@V|jS37?FlG_Bu&1G)1WS;uugzYJ1VcQdD0m@H#UGrvK_ zf(ACbS(asnXO|7vd)gPt_U_sC;%*Y%&<Jf$huqrMDR*@F{WwtxK?Ju&(ZLVm$dfxd znq&rMIi3fsC?IKbd%g<9(NVu@dA-}$l93@-x?4IkG9Yc-;&*p+$nNHiVCu`u<eEAV zHElP@bvLwwqSUut2ZCqHgW~zuergfg+s5s}p30|xZb8=xC(e`Lwlf*t0E_DOvd};+ z);W5P5gs0e&Q47eJqI@++zAYwL8T{SAxCFO!>>oH&^aS|pzv_BVsEadgC0ufjM$M6 z*N;{7S86)6>l$)KoURGiw<!8nO(p#FjS;7B!}a48{Z36^4d0>TDgVXVLjpDY=Q^Ik zcWK3{+8fvL6rZdWn;L$ncIZd7cfXD&dnS6&p*S^swT`FoZk#7o9eQ@1GqQw;{3R&) zlQo?LjUvLxrYhkfVI*&4wAVzAvLxY(FL7G%6egSzPgN*=dm{3`SH}xoLL;7>>79`! zDg7ALU#f>ms9)VW1-h@_fTwUedzys$^*zqJ6h4+c%=r|Bx6p$NMgJv~SrYF5ufYpP z_I@uIAo0Ty{QpGou@pIXq<>)qFGuimbi54xMLM3YFNxr<h~Qljd{+d2hmI%vKh*JL z|Dg!}F&$6(&**s4|8)fadIbOH2>vv963v27Lj8;858f)lC!&7o9-cKZx8L8g1#cMm zuE)C_4Nak=-)vSV4tRESdDKJJo7$Q^xfrK9I{oc!{#-jfM^%R{<?RyX#S-;(5qevp z;fA*M=E!$d*4OwN8|u0`S9sce?v^sI`!m13($qw+ec*Kh&oZP&W6IjP@N|}5J?X;1 z@`kp?jh?1X*6eBQ+R#8RgHSfwTJR!FlX~==4Cr25Q583JY+#$ZS~`7DZ}&8;Z)v+h zyyK#O17wnC$)Dz}8G7M{j>k8Y)YLRATi#H+e6n|2l(YJ6H#GQfXy?b7n(4)pu-8xc zyE4tJu?2VRh8EBDo)#tP`3-d3=3KA(pl-<UmIAfS8PGpaPi;Y?raEX@s6I2c;CMhG z@pu?qM~H(Q>j=NdSS#UW>N8~nCPmx98|JCcc?o|`;g~=Tp>kRrjJ?e<$dT$Tg%_f} zlAYZgA1BO5yWsrm9Ot0Vx0E0qKtm~GD+$Z+9u{Fa*1&{_x07Qx$D25A=XeLlog8~P z?&7$Y5D&GV23pXWzR2-ajz<WWVlv9{EJrhyA>`8uaa|V2VnXDvlJn1Up2jEx8tGX= zq#HxMlAm}&@K%l~98)<?=V%8~JPwXk9P0=%XsqG9i}M>f-^uZ-9JlfCot*yx=l65| zX^t;&9N_pS$5D=FIhv!@bfs{d!7+<tKF1{-ogC{puHo3sv6W*t$D29c!SNoBy&NCr z_;ZfWaD0*D%N+m6@i<3XP*8cE;b@9c`RN=l;b`Z$h+{d&<s4UYY~<L&@p_H{j<<8% z!SM$icX8a$@fpIUjJ?G1O^)vqBE91r<ISpGDk0>vINCWb;aJJBo)CFm%lY-3_jCS6 z&Tr%Vw>ZC(^AB)-H|HPYd_U)Z&G}b3|0mAB&G}KzpXGcsrk0c*D<RUK&iPrK&*gkE z=gT?Paa_a0n>pXg`EJhN%=tSwe-Gz-Ilr6Z;~byoIKc6b9N*@6ns6!RW#~8wlQ_y8 zb2%>ISjF)wLgcTJV=KoSId0>4C&&9a?&A1!j{O{8;yB3hEsjBsXE~bV)Ob@k${go% zEaq6wv5w<fj_WzL6C%I25>_#GH<$Nv`EJfX$@v#J|0?H)IR75UGhA-MRGP|V2FF4| z#B&+vD>>G4T+4AiM?c3KId0?lEspmQ!rqTL|0u`D2&=KL!0{zQj92dwqTjx33J~e4 z<XF#f2ax*dog8~f4m%GMLVrK!pXU7Yoc}H7U+4S~=ilc1DCf^|jK-3I>?IK*{nH7N zt}HH}&*kMD>p89?#CW-p<E<QDB3y>?i{p!!A`<@=A?nI|9M5o^fe8W0uj06t5c-Xr z-^g)0A=0;l<Nbt4=Pp8||1mB<P6&In#-j4G6INh7L5Oj^j>}gPW?`NIB>i4O+?V}? zh)2eHg6!J~F&}Xd)?hvYq;YjSA?)wu*w68KLX5dD64GYQC%n7#kt5<H$o=?9wDR&` z?kCNol@|;Bn5X73RXOsNZdFPzc<Wy5R<2Uw)=k1guXs-u%+1pTSpUj*ZhM>hmWqn> z4rE>~((>64InsF*OzFbjTLG&%3L}>RPc)`Yilh0Z-U+=gKxl^7>k%&;ZlU7l;+L+8 zR#|1fDs!3u(?`XjYJ};n1W$V`!U=or5a{js!Osy&Kw+;HG=>1?fG3xFv6|i#(3BRk zN9o-HueWzUcv?FPC*u7!1bV$!!MlVKQ0VOft=B6ALvacx^nMJ1K7Fz-eP~Wv`hEpk zZ?6&zt<{AS_MU@4Z!Zh>#*sma8(pPlZxFQJ9**MZ-iZ$7<9)6t%Ci`Hm5>Q1;yn!k z*~{kv0qFfnDDf}~kHQb3orkTvVDhuB2~a|vqT8ytSD=UGjpoP(Idn5x-6LMU1Y?s3 z1TRQJkq6SV;vh3^R>Q24X37V;Jf-YJT?VTh3cf&hp|E#pem=H*L+;#XUGwIv+UGv& z>Q&>@&brdO{fg_qg1vI5#Nz*Bz`lVsPM<4JXHjZ{GGt82V#$e#(hKnk%wVustk!hJ zSulPiSP~MX@~57{Y>joSNN36A@$o5NCU>K7#Hexni|-VR`$L)ed+ZZay9qf_+f@ne z3+o;2^IpUSUSJ}%HZc@vpNmjVyHC0u@u|i*F+zOyA>lKfd)Mb*l>KC5!en}4Oc2eh z5K2^T!imx*IoTF{2KCKdLWze_IHnh2eMTaL=hJ7TA^}%K*dvx~inI}513@p4`d9KF z*Jr#3J<6MKWQW|Pg`c+1$hV(wpV9I$eZ~abYrM}G`J4KTn5nLHF;i!t&oJFY?kmC( zqh{>?`V6%k@Jr8@!rze*wOCb|tj|c}S5Mw&sGpPh*j@u)`T4(o<Db)SO#dAE4bjI@ zl@R>~o(a?UQ+!S5`Cd&yq4*%cx#t?nhBBsQ)W_0SO6a|salBVjyidxO4jH?r?W;&N zId_*bya{uOat@@-n=&rN?Oa;WZOIuuMCS#{yi??zOWzyzSI&FKy7!w$Sby(fX(({S z<oLreQ=REZ;;4Q2ZmWAJ!PR?sv-K~>W7(BQ?be>VQGEB|sr}If)}ExRtvv?Gx*YFg z*Bz0DzI9||Vj|tZQjQvjOh@L)y~#{|;R4BZYf`-I95S-{!$#Jd7i%{iF|ghYGh1=g zZtpe9_TFRzTX)pXRv0CFsX-cY80>YuMof_`@k7p`1Xgz#GpYL|`wMTK!S@b~buSG| z_OBgDU@H!PI5Dwkp1t>If*mr%E7@y~NOEbCBs&a-{yT=Gp;BCb<zW=kBLDV-Z%ae3 z(0k)YnB$MfB*)QX(ooG?r(kpH&+!IM*@Jrx%1Mgbs-vCB`?ljfhIjYHjP#o9PAQ`{ zXfac%tsFPS^*FC^UN9~#e&mUV-enR=@5M=)?>zC9N=Z3EBW0*(Z<xGIeFvw^wAa6M zcFyp?L(ap)_l`^Uc{$O2u_J~k$;NCs-S!+)pHxKWc|b3Y%~>><g;QHmPV2Zd?MEZ_ z_@_r=r_OyNyE`}Aa>(25n{F?T&6+bf#VO@wbrbyo!dkM;u#w%}m|Z_Gd$2Zp-N3X# zyh0j$I8dIQen|G3MojU|&R<@{vNn&fc*C2HQaVk<?zY$*L*@^S$@axB471FahNn0O zhgW4g2Ucg-4M-VT&ILnl*~J6K!KUomf#&QthP%LZXD=S;$o|VA*o>X!&2awcT~mA_ zY8T7;;80UVabJ@&DJU7zoYx$ZGjV2$-CWxA%I<fi_~!DS(uy}S*DhWu**_Ro)5Pv> zb{cGwvzTh>UpP+89}0z<ZGYjq&CZ`{6uaAMJF0P|L6hOsu-wgZPzsq8JEbl5(3fV& zvu-a<c_n5fU`Q;N#sl%Dp<=&elQZrsjeaE!vDPT9!#h1?_=%NL{>kB|@q298;B2gj zLhA1-{qHxPg5=EbgKG&-4%6?BVd;y<hLxtrf9T8$+q1$uH7DkehIgNnq=M}(V<q#h zaJ|UiFT;8j=b22^fdj@7v*8*q-T`yPX<_r;884GEldr)0YL)DgKabZ0<~sj8UU_Hv zxM?xfFSj@EiFoxSR%VXt;M?P0b3Spx%TGSeHy2uS|NGGU!w+~J&P?ws>2$?OEq&Mm zr1=#b&X&yXSR~JG7AR-s%x=!cg7sf~Dxmebl*_-z`T^U6icQ)}pmQc-eL(g@t8A5{ z^+UQ!G7~y~1Na=ytDr9Sgvf|>VYs~*mWx1oR;N1jb~;DrM#A-D6@6LLp;>Ln8ChI} zew?BoS`$%?2stCZ(h_ceilV<#Q=!rbIXYKC=?yuf@(va8G;5-B6f}P)TJTQLX7~U+ zh3g%itI)g2&P~+m6iB-fp2k@R$}9=x>5B-zK7#*x1djnsb26yi@MJFwJ_+Uh80S+J zK8`)d`DTSjd4vY{Ce~0#-)pSx!bdUi={1E}-nA*0HX`ZazMG!!E8lYL@X~{C`l_R^ zwb|3HlAZ1i9sGehJ!TgV)cH3cLr>z>$MP+0P1oULiyduU?M=#4_pa7(k^014Y<$v_ z_j7(m5_zKfYniF8e+X$03+M6KC4@Hh8w2$GsET-CJz*yHgHdP}R6jbWLGrU4sV*C4 zVK0slm0$@WDw&Myh^M+pNPC192$gt%)ZU0+&XMXM>8&P&@>-5Aj-PH0%|Aew8@gfY zhVV!3S!mCf-v*sP`zU9GjBXx%o-;zMe5mtt+ZdjPazK%z$5CA&M*$Q@E(4xu(ege{ z?+ehOcB<Fg4qiCi3dPZUH!@zjcf#RzD~{IF)H^v84jY3oPVJZOKiMKr@j2l2_FBMG zUn-o4_ZkTFdVVm}2M8zhu7*G#Zvc@{9in)tcNOtcJbHU{J|PP-;e<Ue1bTaeu!sMO zJ(3H10nmDTgRqwhnQ+1$t-$s6hIIC*cNX^k4Yb}Kor`D|#<(7_bWT=pkDdcNAfx<J z?=9^8KhR`P6xm7y2pVD~jBpR9#lG-W&=c!j3MU)npW#ULfm|E(Cfnor6~d5ozoLYn zx1e`Edpudl)bGVbK#G%`J`cpp*wPCiBeXA!?n}up)iWv+#H+bp-2C5YT*w}E=e{<+ zP{ZcUx%Pz%3iJ4;(7D%YKc<SJTdU2$&Ykj&1F!n61BqsVBYp=v#q4@{|4E}v8vXm( zp1{G|m^9)qkxm7!BptK2e}AOR0y~jfRtL$F9pTr?Ck!mLtbe~5R|F0u<BJM3W1Q^j z)DntkCt_T3lj)4{<R6qTEbN3$td~k)wSw)r(7DqYbt<sRGRvTxtk3r5IZ7%_1JaVy zhh+K!L60QUFRf3fIA<vHZIg5L6OXWbXH+HL$S*UV3arR>;;nJTy6mK{H{fep4vT~G zT8BLBJs{;pd8Ju6e0fG1+2Nq~_G71QbR;@_4#~Cmpz^h09NUtwp>y2@-Pe9`wmrXF z#%HVAaMqjXfBi|WsQXkle~&pXjqxFe2B~wj-xVJI(LM9<a4`a@Mre*39!|Y($kEy9 z@Nl(}2o0L^hKEy24mmm-9UdOe(HuBj5;^CMj|h(s83#pk;_&M~ItLC9#{+$xqd9GO zIQ2#$M`wY<!;?aRpp59b!^2aQew@Zr)lttLa`c6taQ*PzO!``LcsM3wI%f<Ur6_)V zZ%=%>GHz2Hq&t;_8c1`-5Ff>6bDnZ)!;A#SAC+*5m*(h8IImuBW;L9roY0(m73ZlW zsB}8Q!sC?hH&c8wl<;`gz{BazC82a$IZxwl64odI&a3vU>~78%D&a}&0ibY{=11Yl zz8yXZ<^MQPI12BBr*JjC3zf6h#LMtWw1VP;2=;uH&*ObwUuUON2Y=f)*wxSXspnm_ z@3V`OxF7Rbc6DxP$y4)9Nabspuhs)PV>*lYVs-6cpo#paKJyVODSpNy^fh}`5dKYj zRYr$&l`q?eSpE0y!=%mpzy@8Te(OFItmGS$cb$s%O?us2UVQCdEq(R!@UPx0HpEA+ zbHl^v)N#m|R`w0*xA7+l;i=Kx6g5iyd1=0?_&Xjm`KLcq6r%{WQT>P@=BT0%5qiW= zrgsJ8)Ha1)IcRFb!U=nB2=sa@!Rz};q34g#TL*r!cyEo+TMwT4H{pc6??RxD_eSvg z5kTnuBtq{F@RQl2zDjSe7d-Wo!U=o7gFvrG^LOgcgcExI1%ZA&F@%Do{7#40uP5FD zuebMW@YFvDC+v}uUhfDLCd=<x$o28Qt&5lLp9x+`M})mG$P3|x6Y-`(Pj8RTA&Y!a z{KDS+2zy!J?ZOz>BQ`(6-Z<=0eyLpOz6g8H2z#r+Pgc%XN9Z+!mtjXZkq;l&%jW^K z?=nj$0l_N1o9l_R?*iX7iCz!n`t{hwi0FLQV^&P#?xM)J6C|NXD+R3vLu+XqV^Y3j zN##QKkM4zjJ!VGvy$+dh!k+GrfhdczbFIhn?ZxN)%-w-F;k0LG@ko`FjrGjZ`}Uf! z7P=E_6w@K~i%YaFdVEBhnsDgmYJ&~mV6#0p9+*{!-<`A8;rISoW%%u#HKDwpFFR|4 zES9dZ;SK4)W?5P5l!Cs6(-P<&PSZ8UL{*30sJ@xY9ivfP%CZ^;$YSl-*LavUI5TSF z0GsU?jnQ;AAL_w(XSV4yu0QnXe%Tp)s&{krXma{(`)8iH{Y><!+qY2449+W^vUBE{ z+dd#Jdb9*~Zd2A>{U?8wEZLSJltM_0aOwDLCS)=1-eNQqrO#t{&1ALfr9)IQbpw=- zc|0{UGi7HwQuA-hS8ybG$`H%FXJB8&ltZChNlv@^Bt!P9PshF<J0iv64e;FCp&4^1 zlv~MpN##4k6#5l}ZW}mI8Us5b=aN&dd~;YT>PFb*V_)5)UMtE$a;8=OmvXItI2rej z%@%hrOSyY{l)IOq+`Ws&XUmW7M_FlQK{-W<ZI*1e?Vq+qb{dMPEYjz_bLi{C^!+fZ zKr`TJ{8<C9tFOv?zj(bk&t4>dkzO<Io;-B^Cx$Ng#L!|9`mg@rMznVnA^OhG{(f-y zD$JyeF>|$!iF%=sqvtkyM{8ESqc!RU5KtN&ut95{44ne?XE_nPehi}Ul8A79Rmc?! z1zqKdcw<fZ!&5YA)n=r8KbpoI3kH-Lj;lE~bM$k(iQ{&TcN1a&|1n2;&O!VO9FKFP z@s#XS<|&-cb<&x{3psD&SWXDNdLHiOa@v=*;AY&-`Mn%}%P}71N!Qs3Vb=~cU|?3B z8vvE(20-Px0q|3;DYQAbzF`0UljVQJ-aB%xITW4Z?D!>G)LyD{R6m6iwR|oF`neD7 zxdtJl`7P;?r=l%|CwpRU(Ft4K;Dw_w@>g=C_{qHoy~*Yl)F0~S7H%--Gq-pZTTB}j m%jyrsNsdsLJ$64$ARwe29rBb9D}3bK;(i2FLN1)J_x}OZ{gzSy literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_SECURE_64K.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_SECURE_64K.a new file mode 100644 index 0000000000000000000000000000000000000000..a2be6c50f648c312ddf139fcacf534caebd43a36 GIT binary patch literal 28394 zcmeHw3wTu3wf{adlVmapVe(KzKscFzO$fxv3&Nv1c?}_nBnD85$jl@en8A<?d1$b< zOe|WowpB~LXl<Kn+dnFm$1T<uhN{<kdu<zhHQIh{03nKAI|+dsk=y)#>zuvMoEf8F zt?k$EyBqfW)>?a=wI64{&ps!ai#_d4zRN6^%8@RA{=EG83+5H)&zEJp5~Tl?<>Hcg z`~tUyF_y`g5tvZMSlV>PE;{q^zU(+-OEMU%X^8Zz{>s>A@$0_ja&>fi+B;e0s(M$I zr?t7o+s<m+Jk8$rrLCRb_Et~J($;ltti5fctHRq<Q047j-r3HY{T-gh7O#uMH#B!D z!QORU9guiE&8(@db)A2`t9hfxb%V#>>1u9k_3DJI!`tcV>S%Ozbae#0t<9{WqQTYK z;4DX4+S<KLy^<S&Zl}L>{e(hS0SmPITRYdWfVX{}Yon+AI+a?F2pYS%xVdX%fce{$ zq!ktrbwj(q(+jex<+}CWRuK^JZFU7b>%EK!<fFyawr(Aw7kslqDAy{~Mo-6eF2odO zgt8JsnapP}wBAJqHSI_VUDD+9HeIJEZR+ytd8S-+y{Dzi%NqTi!Yr%sws<zT_*=cM z8pbY-u7;77@*~{5A|Y~H)G}`OY;?AJH`RMU<h5POrLJbM`L52!mXF8^gtXm@^dneU z)VF~A1;s`4^7*gbKCcMz<`)$5Cg8SgsjPKMl7xn!I*DboFvnPhQIW?KDUi)9EROwk zeEbAgS0N@C!G;-$m1cwUcs-4NCZTz;nDVyvPH*?z()ldb5?5-L;tjK<IR+k0_{wO? z7?CQpS^U#GBa8WnMiLZEnv#)S1lp|QXM#@D@$*4jbv(KRmZsyc0G+PmSAm|U<C{Rs zI=&S&#i2SQyHSt|>PwmO6U)A$3%4RSw?y!aeJ_fCDvJMY6#v~Qp4GSA;BBvKZJ_$X zYAYH_Tm0)=S$W&W0IE<&nWw|c$~`Uq#&%Dqzpb^Rt8;UMcfHat)R#7tUSSWD`C+mk zOcsX8B34^hT2a~HTE293C7bDCqKk92pkH&9)zz(VRj#U}&W1WZMe1#LdAq$$t|p!! zRke|lH9==Mp&^%|&GUWn1u9{{O{IEZz|ExlZ%9$^vmq5sUdQH*ot{QuXS<3%LA85Z z@=#YhSsqc%o=y+TYwYM?d8G|k<as(f+x?AQo!$;LlJoeT0Uf&Qv0RthRJeYI>8X&% z!#m)~4H(pPQ`+fzx`yZ+&Wn~%0zMmFI8no9L7=xc2zxSQWP`31_Ab@QKr%P|=$x=e z>Be;d5#$CzX%SB7B|{+6ri6j15K2IyM~Eb8?ha6H2r13f9w~i<#Ov+72c35y6HeIk zceLwzL-cpL8No#T;ryZ!-gTb4KisNDqV<RIbT>otQIUoT@f_hwe+r#ax_SSQzS5+X zy_#MLy{F!Zl2m2Xw^CgZj_w6RAycznx@?6uV{t%yaU6cmt4)1A?WqdU3rF>aTy%R{ zjO<Z<D5;cFQU9r(5HIT3O`!Eolu9mybp5&X?5a*c*dTl7(@rW7kwaVr6!8-3+sRJw zL3ojuk83B{xG+49h3$E}1D~p$%qvo7(z1N+cH&SIt+f*~)iBiY|Ha&)G#iQjT<W>L zbm;y>&l)7mU-V9ttSU32CQQ-=(-^Ew$!qKC>Z!8pr{|wk$<;yQvsZAWh3YP)Qa@(U z{T5Et@k|IvPt?i9LV+WNk^2HXU4JgUIjW9Ucgf!Q)LoiN>f;vi66)`c4}1`w+93Il ztGjO_Yzn+^!d?@WC<QKWYiIjrr4FB~k1r`X|31D%O=v{jJ;;7|Y^JsMD6<BSJ#PKs zF~;tKuRn^kTXs2qc+6Ut^!`p6a_im4Bx?`!Za&6By@#pJZ^yOFdMB3$k8J}V;<k*+ z*f9C<K^8p9LOF*62$Oi&8tuAYD)FvzsPQ;7ImHu1+{y39IG#T$RX=~!S|`0fqi*GU z4)8PTDuG)S6lr119!i(uLu~3VP^4wUOs*d`!3R_7huOSV>7Us)sSbqej>KqsHci}k z)NWcoyr|<f5(KqfYNE<Y7mHDEdwW-)lXdzxVpi#I^>?zF&7U|hea>x`>alQ?PjZ>? zRG&p#oF*za1;PpT3!u&L=hBOAvt;jl+Uy6=3zvI1UW#AeW~(5$6EbSA@$i%nE2l-; zz_J18WfH+1*&(O4*$vnTP=}p!wb|l%=Re+r)F>j_>_4(DtI?~!N?rUXjt}~@h_a{q zLA1C}G>6wap%-1(K29&Xu94pP)V00PJD<AdhF(29)iul<KDMsyL6}H8NR7T!R2@FE zKUZB_Q1G{p56T*VWmX~jl$A6&jCB2+rKWWLeo1-xLOHwE-|A^^lflUI@`~mb*z-&B z?8Q06<mJo6+KUQ`<!i7F1--dC9l70my}tv?czJ$fesQzCWZr@%`+|AvyoC$q*$X|* z^9q}r@)vj-=Qpjh7Z!UP=i9Gkr3;ZnJ~6X{oM5vi#gHalAYEikm!?P=(sYwent1z0 ze@{$oc$}Ak0@1TFV?-}Qb=1f%)L-zCaM6RRO0+%^a|Eh0$)rEQrdkt?0Tb*be5$63 z&54becKpqo07&0Nb2@!?McHLSNVLAqQvQS!r4Zd_w+aQ0!XC9*qUqL>BfTz#Qhz9n zd@(%Y45(7ZJ^-;uFhF51dVL>4K;;B_q^}=GiXgZXG8)s!Q$DQlG^U8Wf@IG_kJ2n0 z*&(OiT5MPI)yuiscD`M-?(<l;P+_9xtNmU!>R~EN4#|_H&<rWKpY1mGJ2K=GgMr`y zbH$A8oqaRp-~o~|qp8Lbiec&Q3|~Xs*;j)HSRe8g8rvW1WV@%$tP2GyV^74ex$%Pz z)8hE-JNo9^?e>HF#{cK9<5?FE9~wJ=iDWfdO7*RZo%EWyW{R(Llx0qF$1P2EC;R>r zHZy#-QD)0<lWin1)X5AXHu;{_X*Dc_y(ODt^k98(zrC=0%sz+hE+3ndC}n2&GTf7@ zligFu!fVOC(vVe3cE1>#`05njZIHw*HTzg*GE)7r5(8OJ_PsyE*t(DmZ-%E-8LCr# zEca}`8aHEe-wD-yeGl8+?V%i)ob-E9P35$Us;BtwDl_#_Ixnc1>PyT`?2}|BQ#kqL z8p?$uCBtp4{?J{$SDG95M$r?J5<YGI0q23YL*KSkk*1|)y6?h}9Glv2R`|aRIWTW+ zs9b&plfM$OQr@|va;Cbovo<^HDw{#ha{tKr)0zzTO51ApEw=mIj??Cp2f>q7>u9jf z*v}Fx(JB2$k9CweS?HHN2T$H|Aq!n@`5sa{O)BfF8x3UMi&7h43N76O`d*?#0nc|p zuU6^OJ3+JDXGp*Fo1m{XsMmf2^fZ;0wt*fXo4EEC(D$lz>CK>5t8tZWLF%^DtoA?U zP8ki(V4)j(o;_(OeD>t?1;*jP^3AozQ-g)yV^e%mmhp^X<oX&*S$f|zr)_grP1n*4 zcjIP@yR*7?v(<gEFW#5xYxGSum7kEZ0!wqtZ!dF%R`#@28*q;=$b5Dzm{yP99cgRv zdw*IvetXmYJT|yDeb%+*5BfGH{voEeuer*rl(?TYE12nPQc%5%9@K;z-Ki+Y^uDQy zsiT993q364=~=VX7&>Th%yxwGdlG!loiwCMxmeNk%;~$T>guYx5HnNxKQ+uIPw(G< z>cuUNk?NlPr~bO-U}$NNW8}W9@0U47mVla4NK_@LpD0v0sM$5wR&GZL#w5T_LIvtj z3hM4tzH9ucp}^!R{iW68nG|EPJ0|z?st1NmhHZT@S*h;t+7|Qs{*-T(|KLf3mC{h6 z<fa7qC=WT7r@HO9>wk#(@U<dE{-N)TZ>ldVWHgqCBx9=kjWK4=3Z)wV6G(J<NY>G5 z8l4{Z;cFBw*|MsVo#i3362h`5#xMI>?sff_4YIyo)LXfN>aHPFgtk=$Uk@+pGNBvc z&G0_>l`Auu*<lFLn2`lf(~Erg5?r$wel_R{coXbxhkiTgJAgL<w?VcA7ytsOhZwmg z*{ZZvW~&>0bd#VRBiC}dA<Kx6-J8^VEoIe>{%li*Q{^04Q!)k3vJAE>Gt(7Y3u~_1 zOLx>VkY>xvRCT`%E8pW*dVOehn^|b})_kRe_n$hvrS)aWHp+F=ZC!)=oQ~tOYrlJZ z_R`zSwv0aZXpXMNW-B#zw^Cy>Gk<bCtLpd1Q$s=Xh5b~UlKUSRKFIoqnYrp+X67|- zQEcv{fj_@(3|Ujs$gu(E@DORIqZS#=?+&FZDfz|ml&UjBDOF?er-yz&W(_`ioNCx_ z@GB+!8o!2wU*Xr7@H~D^3BSY>U@BMDJ^Zj$xi?F}(mn9OZ-l3N;ux8Q8qG#t{aUh? z&;6$^-LmZ!tL+rex5;*zQx>KF+Zx3iZSV7N21>nGVOflF4cV*<os#CD$2Hs3vTs&G z9`wBt6Z_hWb4>%1?NZH7EVnagi`QgnT$W|KfXkFS7Pz?YTefsap0Szx(leFb(>8@` zY#*B=%Njjb&g8VgX49xFPBGg|9z)1h&t;OWK?_~ULz(R=PMx)_;h{-3x2Cs_hdONQ zxvawG(?W02tlX+mU)QK@oJzLc#;-`W-L6sJ(5O2&m1f({DU<EHoO0Uk;grvIFQ-IF z1#S01BB7-2Q%Z{2?&mSa*?z`#<7|&|%3*s_lReETtL*@%nC%(u+CDBb+J4EYaoe+; z`kn0sjrx^F{gzV}Tfasf;uOo0Z0XJ)s42{v0lIGVzD;yzCxdg06eg=R=s_R)ceL1@ zH;>znh-+;}d8(++1w%i(8KaRcfroA%%aJE(^lW*uM(4^GY4pT(X8TwkyHe>%p50fX z>0Zk6xom+Zvuk<|O_s0em1?pAO|MLo6>56rnyg6EtI%Y{nqH+Qo2ThHHQ9VkZ;2)= z(PYat*#b?rLX$0&(XA`3bo<yM`6`WGti^M+Ci|i$Tcyb^(`<f8lU=Uqt=41?*`v{= za<fL4$+u{9xqPceSIDAuY#*zXMf=!3=Csey>hAWjCE#{z*HnSqqj5{Y?bWzyaQif_ z2Hd}ETrId?XxtU@;~Kq8eodq6<kvO2Uj7rOgSKOu^h%j!nw6TeeXK#2H2HGbpwTO2 zqeickO&Wcb9HY@!%dr~0N{-X$FUe+&UM-7WbNkpevPF}xk;CoaS~*dZuhq2)mz<=@ z-MaSSk*%7%QBLMGLk{`qoE1d*sw3_GQ}>|d{cn)kvBYIGlJ6BGxzeT`BTdQFrpFPo zZ<AWjW@I@=yvbtp9!Fcx=WTrk#`t@+F@6g|ig^fKzgKsClXksiJIT}epzlghe~2mV zbJ2WiG+3DG?y*tq`%hhnIbO-l2H5Y>>_4jY=SJIe+=fx>?Rzk%P}4ibCi*e6?IkX| z$o3mfG26AgbOvo}xoon2c4GS-4-bM;Ek4EZ*4PhTYvpt>*7s_GG86dgkYnUFjM&mZ zrtOlq_Ma-+(l`2rUHLZotz2!+GCul~N7QkB%jvXTs{YU$q<i9({ii%zB+O~dZ#hP4 z%D-Q><+KqRsms4#_WB!+k%xenpB{hY^&zXxkXfbFR>@}MRJHR6r^eC8Ryk{rsn!fx z%Z{nmE<auOGh<eUbIGx`(R<n-NpH%<EXA1N+;aNtqf?w`j<Y^H)<E}Q-tlet0MDJl zDQfX1O(N=YyC%7iQyrQljZ>W*S*F3MwlJoZE5qFj*H1UsT;%`vy-zCTMRUz!KBshK zZ9z@CpVy=<sENf|O=4M-F$y_G;*}b^t4gvZJJmV!Lsb%TJVhz12Yo-SdINRrr&=8g zhdlrp&94_7`m(Qg=|ay`UxM$4%d$f5rUds7YJN~P#g`chN>kkVSo;R0e7B^a<bGMk z3R?-G+FIy)S>C=hD-<*qy002bTwESv9Zp~Z)(EU4!A&~fTuPkPn4oB6agBxk2YttV zFORW<#?j!W1s<&PO1D<MaME<ub0>{cVuvM5g1cm|*(ZnMlFY+K<~WhW%<jX!o2n$Y z$^PY~OZ~~C!7Z8ow7$9%cP*<sapkhx_LZJUDwW*rOYhp-iIr1qQqqU!$FWK~Ecw=s zWe;YKZt-M>CQH9PnUJ*X1Ws?cJ^t%p?MMDn_hG-(<k?W_+3e4GBH8z&cN3+(r^dH@ z@Je&FgcabO&Vex|zl^ocLO+}R)qZu|4VisSb$Q5Od=XTtZwGb)>PDHJ@?1CSP;imI zZZv3Txn2DveR9}5`KE#E4bG4;_6g9YfwVs7iTDehA#1F2G#DVADy-7VLIy(y_7?6| z_7=)QW^iRSJDeFlt4>1kPl@~RRl9Pp)!FL;r4~_~WXrZ;9@cR;`bm?`W}(~A13FM| zrtq0ecrCJJaPCLyA49KLH+o=`+J}nz_mkteKlY{#G1(=3G4j1}y~8oA?!-Zs*yljr z9ix){t3wp`6T=CU3*UHXI5EC-#AJ1xh_~hs8ZY_U5bJvaZ7qnk6|JwR{h1|GD4j{6 z5*8QQ1MCL2z{?1OD(!VCm<Y7O)4oN}DA7K5XcsBKJv0od<QUynPi5RTV7$z6!l}#@ zsE%(wbh%QhMx|6~$7XSjZA0y%H=C#W7U2%cSg$Uuxn}P|-e<kIC1${ybxK>c71u~J zi>s%(i))IjGTf%Z;_3`{arJ6<U1(*&eeS~QH{mlpK=_PC$H;j5b7N;OH4NX?fcmi9 zaO!~+!|Bb98PH!{Fx3ZHQ-*tXHBrIk8SZR_ItXg2k4kP<^(9rQSV;%5#wI?iW|}*z zhUH#1YS~TvU;ihz@5y1yWW#`CRCeDn^yF}&LOa~If=-&e19!sh4h|W$JQ{~&logd1 zl^vDWv+y#?8qdcatcQhO0>5(qlTS9RT)C3%ob6b-Qo@4-Fe_sc9)5V`%J<(NA0J>_ zL$A@r+{Izv?SWH2Zhv{KDj)l1Xa~=NqTK;1&)@;8(H)u%UD_920>2Wz8J<plT@GId zPisFqzxN&Zo$!A69{5M#e*=FKJ{3u6TDKkta_2U(j_dpZ8KkW4W=^s&S;m%TflI|g z7n{{A%QC~WOV{<@_Jy*&dzQVVn?yG>LfhLRx3+c49bJI{PE<k=#cft}@Pjz=<&KUf znSoh`=K;$LN!r|ApaOAp)UQTf=kd2>X3ABbmd?yfNE<f?JRKdfr+EXIhKh2zwjM-n z+YNI44eg*P^=;RI;F<EGc>cAYT7>tual5dm^68&j&~?Iz^CY<KOolhWqPo2-G*F9m zj-F#ghR2|@Q`1Dx!3_v^0>fue>B(5w(HYXn>(MH7&WIi;GTf}#o1^KVhtfGCcH|@V z;}!iCnhx!{hMf_oYa;b6ioR7-i9CH{#Od2e{X|8-Q`1+&x9fPye~I>xKn?%7j;HXQ zTCuA3#&kTzCu_x~hTo|j`cduOuj9#{i5_$)P7PnB<0-rw=SfwEo?YjREGa5~NlN}? zO(#jCh%mCrN_bcp%^Ml*HIbt%Nx0%moEAKV31`Gp6-wXksQmBI@j{o-h$m-yXJjc# zKSuSJ>R}4%SGP`q?&~+;DV)xprl5X(kMnMYk7o~aK26~*^x#6#e+gxlg8Tn#@WPS3 z-wOsv{7@ACKT&)<Ma~`RUl_&9QT%KjFGGK!j;HHOqxdVLcy|=v6~*77<H`OHbv)UB zD2jhf$CLguI-c}@9mT&M#s4{qKMkHlGvQNE|6=)rw<_?-s9(B=XHCo#2()a*8wURC z@otB!DSY&s&FsVh&yFsyddPZXTeCM0<5WjypuH`SXQ$_=>aeA}U81~LqP{LdZ!5TN zXlrkdeph8(t-sM#-_^O?+wS+Yl>0oN`Sq2iCVK4yuM>EeA~hOQ-qwYuv-Ijo7Y>%Y z+8Q@_n>tyux3O!zi(UqyY_zrDMVKb_=s6kCy||((ZtPgkHg>gi`k~(Lb**b@yFt9; zqJINqf@jH}=B*ie;f9XKyGm<oT}zj_>XuFPZi{kOzwHKB;D&a7oT-^!Jc)Sygug4( z%o<y8$8KoxUhi#Dl3w7V<2L7d)dzJ$hPM=|ZO(xHfqH5S8a35H%L4V8u?5EiiipR< z;CezF<XB7iMaEhQFH@f>8!#!_2Hr4Nea=hxa|*`<Y7mvv;$ZA;jv<azZz;S8^_A@G z;`lgW0on!UU*|X*eZHj>=>Qta7+XPDj`y$#E3gJ8M7*6GyE)#(aT~`wIPT!s%W)^i zJ%o6u{WQ>m&h$l&uW~#>xCE0?j%PWVsSF{XMu_XOIhGJ2e^s1+mh&`58PG`25+dCg z>XrN?5`wpKOyii&aT-TEkm7N0tmarxh(TjD=iQv&!1+#&U*))!hwtG04>-S%^G|bp zfnz_%H#v@QJj>A>tEMZB<8+SM91A!u=IG>D&v7-!W{#~KyE)#>@eYpnaO~yyFvp*B ze1_wT9AD=6M~=ri(t?7@^9)B*oXSt*cnL>4$Aug#I4<M3ien?k7LM0*4061k<93ce z;JB0HK90{2E@A8?j&E{&pAhLC<Cthx_0kC;pUKhAaWTg#jtzv!>l)6l<9vYgH*$U} z=fB1I9h`rF^Se0z80Qai{@0v;mGgh%{M(!#;rv<7$6{(p>9G<b{TZB}$@x6amvFv< zV?D>!JiM9nt(@=X{LP%dgY)-rzL)d6I6lttd5--Y|H$!ej;9HiU|xoflQ4y&%rTGS zVvf}uuOdYL8acLdypiKpj(2jrpW{xBKj(Om<4YU|IKIU(#PKXgbAlRg8b_Jq9F8R% zD>&A3T*Gl4$96*G_g2Dc#_s0wUM}Co`6oI50_R`l{2=Gw<9LS4O_)kkxlHF+M2L7U z<9rpz299euuHzWscq7NH9KXf!K0?_0G3OuU_!wag_7yn3M2PX~Jwo)`mrVj9T~!<# zIBo}0KfQxvFUeu&VM6Hd<NVW{f1dNd<^1cMALRVooFC!*S&p$-GLXF#LZp8hA<~u2 z<@30_f@1^6wS*WiH*ma_<4c4~F@AA;5mQ9s-y%d^d5_~6j?*zAAo*1s*APO#k@Fik zZX-ncwsX9n5b4}Wi1a_k<;MwOkJeaJes;o2tS1ODuGe$<3c_s6Gk~PuONjfjj}Y<5 zSWl3BJ0a#H4#HZ@M}Rc0ZX<;K9UKpGe4Y?v?u&%9nez$nE`8*PI0^DTeiE&`Jec=M z^JwM8!T{!}`Ak)gex+NL(hJ_Y7rT|Kl(==1@bD|%69segGy&GX@}1Y-roN@3BE18d zpNF)3_Ct<zUIkOSi1${&YL3FlWx^AUX_Mk;eyMjt?+Xx`;q`jN3x`{%xH<TxYhqPa znXk&6CcyMjai|&*dMm)w9*c0oUONPOdjasXg%VKMYXyxVfH~mFrC+S3Hw`qUh3rv! zH^b}g-4CAD&cca!zYT$2?^W<_p#&6qJ3;I9ioj5u!U??}L!eKetV<u7la{_;f!5or z0z+$c;e@^CAkf>(hP^Rlkm5#Hso5I<t+$7xIJ$SD!})lh>xuF#fnF74!ijiKLqPTl zct8+(e-cVOjKX8^Lult=YcH7itZNdKP^aj&D()5NVR@rDvOx~rj8^xEmoLHCBm%(; zl2GJ<^sG3@Oq<m(tE8Fofi6!eJ5iUxDu;qE&|N6(U0P6pE#I&^_gUBcd8+og&${~5 z__VXG^lrc64qm}txl>|^|Iu$>&l;!Ak*Bd3wLuv&CuOtL<YeiE#3W`gSS(g+hT<$3 zKawm-Nm9jAPhqykI+ka!)QZH!v@espQ8;4MIR3?VipBk*%=|s}iK*R$ov7`qg!YB? zj`n#k;sPHqnOd6|3bfBfD5u>g+>ZEEW1JWvKKqdHna;iI^DoMNqA_72JuxPT=2ZkG zDmURoX_K66i#~(;<}RVc!zdini-<lW8N&1FGt!ZOE28WXOEyK?h_8j97fAgp`H$-} z-h&?HO*pbc?$V-9+h-Km&$rKL`ItUq9PTyVXAJ*MeMa15_u9D0)6r*`ZX)*;;fPT) z_J4hbS`PT7XG@Xq$cS33s!Y^pOyO5g+-Intllj<Q17G?1zkcJN({D`s9QqB>$5E9K z{RW;1)Av*SP3QSuO<|GvAi%lj8p?(;re)N}(pO68y_zw+S5mT9%8?EkyQl80OgA}q zl`*^tbBS^eq}-P_CME1xQrK<D9XUkj1<HMs<Q+@i8wym-eaE`zn@8Be-ow&h@QBIr zhhwIC(~;y6`_SE1&tQ_f_wXj`UyjGKE05Z(J$Iw{?!#02qw}pjDOX#243c#j-p8&# zA`O1)$nf}hhJmFWH4d7N%$0jnnf$^9lKa+_MA<oLWDSRntT#X2ZaQLMy_sgV{HWdD zYn1K1sRp+8sGTi0O7=2?H0Utc>wAruB3Tj#or6iN{xD`z_eu5_-a3Qt9T@9h8j|c^ zJCekfAO3KBeBoSs@6jYXWQbR?*B+7NvJ^>n7z_vR7?cLfaQ&5sQAi5|+YY=f4ZcF} zjUQo-KOU1DM~_K^wQrq*&B;H<8#v_;?lCAQDQ>HYb*Ap!hW8lW-5WRDYqC3~%({@p zOr^GB%#_gMyux|Gn6&7TCmwp2NhG}&CuzR(#8;{$<phnCsh+)I@>ca7oO08iz>-<H zL;Vjq4-eftCfVoa#`eVz8)76Iv*mW%b4`6xF`efDy(m6+;XpP{ZN)gPW75<g4cil+ z9*&<p=Z&21yd29RU$=jny(B(+_P`{kl%L&A^aluQ$uYx5PIqHYL;tLSx}3HBQwQ)0 zY3Si#MNY;c*=HIyB{n;Mc@fLrG|UnWZ#v58G!eVoVsi|dKQyM=7rijVvR)dR<Qy1U znd9tVl~dm@WoA3)54Po$^cx47a_ah<bKV&00@t0hsJ|oUFNa_=ex@(e`J;DDiOHy4 zEc=5)O_e2mP0o~%WSHW-=8&9)GgIv5vZhydy(=X)SM-!szLB+N(F)1_!H}9Jc6YPW zV3V9BR7?NDaeUrjIMi(W3)gLS{#2vb-B#OCjVlY845x<VZkCHu$fDROZSjY`G+mx~ zds*5mal=7Fa)mS&Of(Ia1SFfBd0$!VD^n0_t<pMt)6#~XSRoah9C{kR$A%2f#>yC^ z{;snBe&Z=f&I~=chVbMN{cazUzIbd%X?pyJ&b+YQ%YBn`<Nj!P_c=)_+~zh`G2e3c zi~RjEtXFZK$y5{EZyYuouJPd=Fn59$Hus&eaw#kI3cRmY#V+~tSZ#2Q^Uq^dcUFv< z7E%53`0}4fR8L}M<+=~NJ@z%{6DNH9<l{VZku~qX54}J1fY0H~^1YHlSDe(+hb=&w zU%}yQ$*hir@~mcoa(3>l<{T_o|HY>QTAxd~{Clh)usx{Qq`d?>XCl@IWIw#hRykTf zWT+%Fq4PI@&*i)d>S9lbj93>&+KXd(2&89qszYz5b98PbQa@hNmo*)l)rOssB}C~b zDEi?w5!HyWGvX^Pk@hDk`YSXQDvhwCa}|`{urn&}P!UhFCOSt!^LL^J?*wgz55iNp z-qE=Vy_@LVM7>Udv>V}RoOPhgQc#}$sPOBf_^(It7{D|qgW3g8_OjtqP~MMmK3(Ax z*mIn3R(O<0cyMoGu6p`jV_g?Mih)nBDa^92jd`>YNe}lu^n73WmScyH9(>bR9sRA% z-forb^sMjT57g-~yLh0^zX2J360bg%Z)t0~4j)_WXzOZkQl7eZwML56C+=e7lb*bv z^D~mj6V+eK40ZiONPAc~kIyb4w5i`1pyx-`!~+`$v#=kGLbIUy(K!v0pXEq(*)S7( zafGM@iwRN5WL!r))kQ+uBeX!M!~>-EM*K34R0m0K6(N+@aCCG0baQC_0lK{K4O2IS zKXT8)d%pZO=mgqFIiqBB^XT)OQDWsoouAvr@KlroiX1(T>WVlDpfGZo@I;H2_i=h( zfDW}&z1}wP!r@jZj^?}3@zT8$4!2uzw4SEk$)RxA7=&?ZzjXh}7I})#0k5~$0-pL( z;Y7UGK%mzPfT2D>IH7kn1p0V`h=l48#Y?@bh?nBg+oSUd*^mh*?D-(j+Z%vA{8#Le zT-XbO*4rC^y>!Tg6ZU8YuD3U+vq!zNu=j7E_4epoM6)o)^@yc&vU+>;9M}OF<(GPI zVekKeCVQgDRv<vo5G!GXyE!fPg|C91SnpCe*&zQ6N2(9x+MqYl9?!23hNK4+CH%Yv zz4O`Q$wsDrFD?R7oaFR*AYR6nUJx0fePMK8N`9%HQJElK&Gq8u|3>4&_NY7exABD< zHgC?gFI-rZ&o_n6y;l1%RTSM?Z8~=Dly4mP)NdU~Gz%OKIM^v>*UJx{G|HrLa39+p zJa8M6h6AP2so<5QWA+`~7cH~EPPCTQL9$dw<hAk%14}PIxX+9$g8NhPMFpBMPIPs8 zDaEq`F)qHzbjEn{56Tx7cEBdqOQo<{$#!4p+~JHl6<leVX;4nq=lJp+rIn_BY4Pbp zGJS!dN0RB6)~A!4)0O$Q$+_x@M_7R~rV4N5mm5z7m*+U~*0^F_cGA}y@HH)m#X)(k zM;`X<m-1tL(o7t_JR=QnchGzL@l!WAk{y1B<lb{Y`Pwj!ZOPZrx$eU5Yri<lUeGP$ zvsG<4>rM2({v=n_eJY#3#~hc&_^?BR)H&MkiVXkgo_S=r7=ctHG{=n$r(QSg=<IZ4 zxY|gB2F-aR!>J{Q9i5Gi43Fe!4jd_op7SO~g(rrMgQ7Wc<n<q&14oAAfxgbsoHjC? zdZVzTv%rzzDd9j+M)cf~;b}@gPUETSsAms5`od47e&lW@eXTh%9FsAfGe(S36u-W= zCq6?Nx2X=&ok~Fsq&Z`lk72VoPdT+=MuOvyN;t(!bM(cWSFbm-TFz5WXwJQo^HdU4 zIvo+=3Cj1IDZc4Scp`K0aJq9TD4kZ$(|DVLHA;~4sy!>aoAX6VcnW&}C>*8vQFyX% zhfhKIKMoX*!u#MUT#fHS<*YUFGJFcHp!gtyJzwSXc%RqT+3D25-}Vi5_49q|c~|ZG z?BXQu$9$Guom*P+)qE3D`C8_w^?=Tp&LqA>T{{?PBLAt+e1uDipYaHP&0ZBme$!r+ z(IH*s%l2Vb|9$%iX)`~tLD#6?x(^2{`Nrg3r=oq6UN@H)U%OXJU%fo?tM`fx@saDi z$S^u}95$wvy-WQz{sbXBHM*OkMyWq9%~utF$73e{^k<4<6rnb%9}&bHRrDc3kNAo7 zu7I4{rqHVZO>I~>Vb24BUT+0>eLpGm0#SNv!A}(Ltx<aGz*GMwoUr#@2=wvZ2wpz| z2)&;~>D>W-B74+V>FxD`r+!j6VefYk==Es+PW_p1LhrvI(61*3QIM41Y4G~>#9QF? z_I?eX`Ul~JJyO!^9f86``8^A{KHj%=@zVV>!7J&AvNsBO5xj6B-gM~c?a?`8kq?Sr z*qaw+FB`mF7~^`x7DU+_gFVVGl?&Y$Vb2+5Zx#57%K7Rjy=L$-><B0F;pch<Jb?CH zW(p-BSjBg9J(2dE;JYT!>w#Rq9=jM3ozHsAifP<k6d8AdBot|-pjBXKEsbML%6BZO zT<HGMz0j}6%qYLtArns6)BQ0JWl?sn^;m(u<h-A`I}j(F_UtSXsgiQAo>_9=9uw9= zcVdlVI;4JaiPlAr4@;Ai4&7X1u;CkQw&%uzGwboYW9C}?-aoS(zr8cZmG|>yXI+TJ z(=|4{AsyT#D{GxH(6?|}0^P%Dy2hBS>d+h2H*>jTB!){_wyU2k){TCRhgm~2Vm9=% zS&or7O=r`g9(;FZt4`zkLyzv0ow28SH^q*mX56-K#+lpC#Gbl+Go{SnywWK<XPmk1 z1L9&wN@3?VW!-h~<gZdC+fsy52x$>68Jop~EbiS~jE3TjxeTwFta86}h)SlupYk!6 zr)EZ$?94!F{!RG`jwDYSWO?`W@2#A4D4Z+FX;+_Q$UgPy*w^ESrFgsno_9Mm;|_&$ zD>*NzdS{42zk<-M{rk(}U`OO!a>`Y24oSt`2)lgrtGm@}ML9^$DOLZaTpJil#l2&* z#NEqQ?%r<Y?qw=>@1n6;@}v7uR$5t5PElf;B-?HKrf!y<hGHs<jJfX|`uY%kKa48S zba)znR>SM+tMcA2UN6qK7t3Fy*NnR-4xRUjq4Pg6v_ypdt3S9A?HxskzVoxc9~`*~ zGbv-t9Ia!bUMTG7xsBe@npN*;jd}qDltu?^(3&Sxr$GH#ZWON{gDAW-DqLR`^29<x zS9zk|SX2J+6ir&S87be7rZLBY0i~AXDvr$@0~~MSxQ*l8gc!ho%#ogR5dQ+l;~Z%` zCHs_l3a4|ObSCja&f7Rv5JInkhx@pk_GK-&8FzDj569nfOhkFobv8oSwF3<pn3d-S zK;^jsP<d_u{8VcSZ4Rz4*uVc|`5&?Oj+|=_MW;ABeu);fm+BnVPvJx@p96t@?n8U7 zA;@TcOFHDKXv^Tqo|s#7!d5qU;V6v!l^iL4a_>QJqPYe2hx)mN2h91*EndYI(+0(| k`a^M&Bh+P&-A@w;2x&)$Jmtd*A3e9Y9|2X63n%RTf5uallK=n! literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_SECURE_QUAD.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_SECURE_QUAD.a new file mode 100644 index 0000000000000000000000000000000000000000..618ea5c855c8c360733fb78aaf62e156d1df76f6 GIT binary patch literal 28394 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_SECURE_QUAD_64K.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_FASTBOOT_SECURE_QUAD_64K.a new file mode 100644 index 0000000000000000000000000000000000000000..bf396f63b0a66630eaeb9c47dd132ccaf2fb4c63 GIT binary patch literal 28394 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_dbg.a b/board/novatek/ns02501/loader/ARC/Lib/Release/Reset_533_dbg.a new file mode 100644 index 0000000000000000000000000000000000000000..17aea8b39ab91d17bf9e03090837473cf6b84813 GIT binary patch literal 35474 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 Ow%7`R2jRNY?fpLob$^xs literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Eth.a b/board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Eth.a new file mode 100644 index 0000000000000000000000000000000000000000..a5e1f70cae69be9e1e707af50ed1f6fc50409a96 GIT binary patch literal 12840 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_NONE.a b/board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_NONE.a new file mode 100644 index 0000000000000000000000000000000000000000..5367b8deb2ebc10c9dc33261ecf4d9c045258fa7 GIT binary patch literal 1548 zcma)6OK;Oa5S~raSD-wiA}B~`iz*SIUDiqL)CHkNEssM%KqW2+wSJXaO5)1dp!R_1 zkqdYJ1t*RbKZD=Fi5q3c_PS1_3PzfpnVoNEX2-K$c<995-lOV$K1xR0GTOFf8aC%L zaTQn2&4$MBQ~{uje4yELVt+f@5BiX3UN;&9sro)p+v;#X0Pu&s-l2%{w8eaeZMG~U zTcxyGEzXUmwUTDsseXFA`Ghfs=~7})hf@onPSpTRv=UK=3vdpOzQecDvy<O{PJkaB z!w+)N-qA6xoMc}0EMDm8`uZxbZ-#v*jyM|J60PNiG**N(?~ox3PNr-%O#Zf;;Fb#* z9tR)7K^XOU+civIu2{AwZEH7Z+LmlOzSZ<S!*<-Zw=0`w;I`#E=&WK*PT;s9Fp28K zdK9bRV7b$V$?8;Rn$47Ir8#zmT`gZ@^XxjiS-HjTvZc~SdSALyPQ`vy;MYm+K&3p= zEwW2RH`=2C%TR%t5kv*fqkSpgtK=FfWtbepPmcMg#{5%b{^>D$G<zAUa1jx7$2sI0 z);C``L3Q0jCO>7a;c8_zMXmwnO9#+{MFop~I-SYL?rw(e_RFE#3gXb|ZmIa}A*R?> zOh)-i)DST^>?y}Zsp3@bX$?Q50^vK#0pSh?AmX4aXj9~K2L(HQGlh-(<%l?<D3rnw z1_&?e^@2Xe?!1039HrvW9jah})%-WzK&0*!9ZKKL>2W<v3mHyN$62`Bh@(FL3n#O9 zdO9c`eNRn#s+MqrCSWade8zF5o>R*SLrnSBkc;<thPIB4YCh$!#&9ptrt_NgYrx-B z60eat-k_wMnkW~s$|T)~$VDC|TDoZ5M>Me~``Yyrl?U2DNjRd*$hvoAf5n2nkdl$c hk<_)4YYsOg@+|7~KBzC$C+b}>-Uc4pz&%Ym-d~BBw-NvV literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Sdio1.a b/board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Sdio1.a new file mode 100644 index 0000000000000000000000000000000000000000..c9c779c43770e8a1f7b438928d82c0910ddb3e0f GIT binary patch literal 4156 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 OYh3J8Ruc4C;{O2BGHh!A literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Sdio2.a b/board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Sdio2.a new file mode 100644 index 0000000000000000000000000000000000000000..cccf5c077c93b3be28eb96fa154cf3f7bf95f989 GIT binary patch literal 3724 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 K(hmZgzx)q<msKVJ literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Uart.a b/board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Uart.a new file mode 100644 index 0000000000000000000000000000000000000000..0b9ea3dfc868e62b6a45103564d2b87fb62f9155 GIT binary patch literal 1340 zcma)5OK;Oa5T4DeX#fc#-biSRkO<Ih?Zl6|R7fE_B-CDdMW|gnE)8np$aYY}h5j6F zoH!zW6Zc9m<IOgX1u7%W&U`c9?yP6WYuhpoj-EF*__CO;W4fMWn;z#zmddZ3+a1k6 zXaGPN^+anR<H3G33CECm!Euy?%KZ?g`{`^F0t}|3(M&|=W%Kn+&$b+Mz8Z#OS)7}u zqb|S?8ed-Ryk?AHIVB8Qus{G`OIf^XWu^s}VHHll1BY*?KhUZ*L-3~G-{P&E;aJ8I zN5CCnwL6BnDGd8D0bz22hSjn8yW@=4&T)7gei|mjXv|&Tv<Jqf;{}H29EM%bF}iZ# zbO(XyN#6|)jjkQ~uJImvTX-)SN`DB<K)2eD;xs&I_gttoR(f@|T56WAvm5MI`8K=5 z?y~!p2kZ%3FTJEL7bO4P75Mc#pDr(Tg&s*YMsv#9vuQ;63U(?ll{~<FwUDnC^0h*~ zR>-dua2?+UvRl^CHnINAIi{UWthct5$EX^d03N1lq%N2<k<3P^^g$$Ptn88Yu;(d= zflMU`KS@APKrDtght&w@0_TG)f@m}f$9Pb0Z&%1Pjfeg;4HLZff6F~&(mU#IskvQj z*Ke$Qp~v7~yhpf|`gsv=9XZ9iv`>qkmTe5=d4%;{iK}_L1>Ot9e>+dkc{KbaZ&9b2 zrxvP3`VkesVWOe{Khb%n0b1gaTtn60O86;W=rcKU(LA#Hu9P~X1%sE+TtTI2zluu# PK>oZl<ZNI}i$3oURm7gJ literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Usb.a b/board/novatek/ns02501/loader/ARC/Lib/Release/STRGEXT_Usb.a new file mode 100644 index 0000000000000000000000000000000000000000..0b9ea3dfc868e62b6a45103564d2b87fb62f9155 GIT binary patch literal 1340 zcma)5OK;Oa5T4DeX#fc#-biSRkO<Ih?Zl6|R7fE_B-CDdMW|gnE)8np$aYY}h5j6F zoH!zW6Zc9m<IOgX1u7%W&U`c9?yP6WYuhpoj-EF*__CO;W4fMWn;z#zmddZ3+a1k6 zXaGPN^+anR<H3G33CECm!Euy?%KZ?g`{`^F0t}|3(M&|=W%Kn+&$b+Mz8Z#OS)7}u zqb|S?8ed-Ryk?AHIVB8Qus{G`OIf^XWu^s}VHHll1BY*?KhUZ*L-3~G-{P&E;aJ8I zN5CCnwL6BnDGd8D0bz22hSjn8yW@=4&T)7gei|mjXv|&Tv<Jqf;{}H29EM%bF}iZ# zbO(XyN#6|)jjkQ~uJImvTX-)SN`DB<K)2eD;xs&I_gttoR(f@|T56WAvm5MI`8K=5 z?y~!p2kZ%3FTJEL7bO4P75Mc#pDr(Tg&s*YMsv#9vuQ;63U(?ll{~<FwUDnC^0h*~ zR>-dua2?+UvRl^CHnINAIi{UWthct5$EX^d03N1lq%N2<k<3P^^g$$Ptn88Yu;(d= zflMU`KS@APKrDtght&w@0_TG)f@m}f$9Pb0Z&%1Pjfeg;4HLZff6F~&(mU#IskvQj z*Ke$Qp~v7~yhpf|`gsv=9XZ9iv`>qkmTe5=d4%;{iK}_L1>Ot9e>+dkc{KbaZ&9b2 zrxvP3`VkesVWOe{Khb%n0b1gaTtn60O86;W=rcKU(LA#Hu9P~X1%sE+TtTI2zluu# PK>oZl<ZNI}i$3oURm7gJ literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/STRGINT_EMMC.a b/board/novatek/ns02501/loader/ARC/Lib/Release/STRGINT_EMMC.a new file mode 100644 index 0000000000000000000000000000000000000000..6030a1e758ddabe9aa0a376e052f2329bac429c9 GIT binary patch literal 18164 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/STRGINT_NandEccBCH.a b/board/novatek/ns02501/loader/ARC/Lib/Release/STRGINT_NandEccBCH.a new file mode 100644 index 0000000000000000000000000000000000000000..7dd1dcd991a3a56153000d3f5b0ee7f3b14de220 GIT binary patch literal 14950 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/STRGINT_NandSpi.a b/board/novatek/ns02501/loader/ARC/Lib/Release/STRGINT_NandSpi.a new file mode 100644 index 0000000000000000000000000000000000000000..4ddd447649691800b503d1fbc48a20a3e63c9f1a GIT binary patch literal 14758 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/STRGINT_SpiFlash.a b/board/novatek/ns02501/loader/ARC/Lib/Release/STRGINT_SpiFlash.a new file mode 100644 index 0000000000000000000000000000000000000000..4866691ed3c25b655ce63bae58283290ff212b32 GIT binary patch literal 14980 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 W(m0AxX)R3ROs>FqjmZGb(Dz?y16^_e literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/fdt.a b/board/novatek/ns02501/loader/ARC/Lib/Release/fdt.a new file mode 100644 index 0000000000000000000000000000000000000000..6f84104451245fdf18090710665ce7fc1ce5bad3 GIT binary patch literal 38872 zcmeHw4R}@6neIA22`7gDAqI^Q=t+or_&*5&BTyR-C%X|TAYw1IPICeTPxwhPA!r0| z8$esyu`RZ?gHzj~j_u%FJA`(aY19nPeVksWV>^j-DiG{Y+c9WtO{}fanJM>u*Uvs{ zZ-VIPb8q`RU9htDx4v(^>sxEDpS`}l*E*$38rn8wu8q!%d0oZT3oEX^X5oU$L@b8? zaQ5F=tm5iKrAm>G3L#bqF{b*R`Qj&q_+9YV6$|0_YYqu<F~2Dz#5?hKZ4}~9P785w zEB&U8?e%Rf^{s6!>l^C@sZ3+T#>Te#?M*v%#D+}chAlc;O0;a+w7s#tzO}tglFf}B z?e*;qw@N|@H@9qTtk+^zG;(S6M9ZWUmO`7F+P1gXZ{M-rjgfpiVpCJ|#`^8;ZB5O$ zDs8v5+@=!W3XK#)Vp*5uY-`+B-?sfW$!gxQ%|nyl+^|i-=**0kjNjVWtRR(Qnq_Is zVl}q4-(hp4=A$u~n;XC0lg7icbG8{WUqr~d^a;th^Dr4}Qq{L+8k#q5%~sjAhK}>% z8n!kyY?oDHir(7Lp0P`3(H=P}DpP0kLrO_(-+?-k?V_Q5V`HlqPsYnwDcjo6*4W%` zXD9`9gF*piL2ql=x<eJj&$Y^^+QHT)G^`CR&Fu|M&D)havJL6@9nJ0j$nA|BkNmMH zpNx_js;0i7WgBXvX}zvfpDI4CO0sFk)~yOz-^Qlq)~yX28ckK!qx|hn4Wr8F>|5P7 zl+~vZUBm8k&FE}YM@npHYiwv&mu-#g+cLIc<HmZBjcvCzZfj_*N2RyjAsOgrP1`dT zPsXlqytS!0i^&Y#40uaqCy+(Sv~0y7A`=;gg)1+ax7{r_Hg5IM9AdKFQrDCp971mM zZfI?VMlK0F_nLW`o^AITD_-hE9o!P3Jk9k@&Fw9!7!4b?$P2Wn#<sQ=RXA0x^^MzF z(fz@2s};4ny?#UE)~&j^aWqxrJpUA@rmqYBt*ADvbd=+BHm|uY^B9A`NN_$>^JT>~ zxV~mV)xrw>H<4IaRTYa>Rn2$j%TLs<Z~}n<rcLDnA}+F&5b=B&pHn4+xF{9Vgs7YI zVz}$G&nG4vdm+;Mq36TB*FP`z^_=ZI8gfKN96tB@Z(o_Xe1CFW-?}DV2jWF156G*D z@%xU6Sj$kJ=<JC?Vr<{K&6E)FA{n2Hc*SiQir`ut`^9g^^%e$Rofn9A9u<dkPX^<; zy%XbA$I4^zSZ7ZOd<<TQ16JO%f&6}xw*&lhff-@vYFCHK6Z?{h6YDa}`Cu~WM2?Gi zZhx`V@L)1<d{46cnU<k3;y}*<E%Q3!etrCeqykQ{)cNblmydrY`O@*c;<L}(lYHUC zXOdONm`cPBpbQbDW=Rh86wK&9sc-_0D(%;k|ALf1K+1nc%6~%2-T{`g3uWlk^_MFC zdh*iK-za`0dC6&|>D|fkCschF#K)YBrtVGVo>q8!l7SP&mv{AuSXa-S7e|&si_j%$ zarj;*T$bzXlQj_O&b#88GeVZ2WhffTasFvUB$iFfpBkApd?N7Rnvv;44Y<d5z~8UK zDF|&(Ua1o(OE`fl)~bmAs5jJ6>WEpd^*uBg2`+UKGA|K-sy9?sJ`@TgkD9pCb9Q8J zxUAIWcK0ehBE$Kipi@%ZDr<g1{Pc-2Gf$oT=$PVT;i?}Gh+~~c_jHY&CJx_`4xefn z3W><oJx*uOSH_I=Et)FtYW!Dy9hqMZTud&c<%W)m>Gvo1cA*_Plbl`YoPMHoq(waJ zOz6KevuJ9<DU~G%#>e*N#S41_NIB`qtW043taQxDNB%=SV$O@bh*>-<EoS}v)Sa1E z2ky*>*<(%>4M!%t+$ZKlj;$IxS2Zxezdx6{iNj+0nBhn;ITC)qs<$!yyE1`U#gt5_ zQt|4Ifi9F-9L{kd9S%%SLB7n1s}?*hf;3`Q&T|3OcEn+-t{$YS7#W!J;?UBtBMuih z<DC6c+9~<glq*t?Bts`fc?|VGw7b$->csTj`E_rgYG_~t{VB&8?@W}jVW+M;BU{Hl z^oX3(GxXhxIU{Jt!SI^{;)BbUEsDigG&MK0wZuTg7S64jQ<<o!o|{-OgT&m57|BFc z<$~Bpw@SG=mQ1Xz@wTSzO)br_tJha7*qEqZc+G~yH48U2&c9}1Vt&KMh4VLVsJNzK z{nZ;bCFU<^Tz_@qkHpeNXmbsX4eOgkAc4!AWi4&(jU98AUM+H?W0pn&dBMV9QD9Qw zvQTm0^1$T4v~XEqW?*(O6@s+S+2dMR44<>vA<w8ML`Vc}HfS$kNQ4FYy5+)xiw`<H z#3OZBUYkE5ks~fMgbZ`UWQ1$oxE%M27a^c~<-NI~H~9DwiT8wy5^=A15rTGJJfp1= z3yFLmKVRZ4aZwaMZPD%}E<$3wFa3C%4Ss=-U*O{x`uK%Devyw~<l|rJ<6r9I7yJ0U zOIa5}X}$HsyOVVxQIaKa6%teNPsmnt3&KL&-&vZ*3<-LSVBN9JVQ~pMB0i+)l%%7A z>B#@Sr1M3SrsI+xFFHMRf%sERw@ZGZ_=cwEO1en=ou(H``cm<fhb|T;K^w=~KVt}l zqzB-s4?9{R>SG9@apd#SXYK}3-oT6bmG$i{^&47ui1Kz(zEM6F{k|?D@i@m-4xU6e zY*Wi5xugUwL-wR7x*uB{L*8G8tY?OPK3h)oDj}}a{3;#tzEggk4matrS%(L8cu0o^ zSK=XExsEq@QlA+@#B@B{TM*r*Mu*Igbe#@i7?Jd99j?_O^`RWwBf|{BC~!M<_%$6G zz5bRo^eJIDGaDkQh@un7awDE?COSt5_C$sp5uz1BfF+`p@C+d=%K^MH(k$HE?RRWz zZ&;78y-kG~bA`dbUCiCs(B2^CuHU|0%w@z}PkWr(*0|M;whSBDIFEV5EABCLcv+Uo z!^?1uAKvIu%pju)aDn2k*}MW-(}*|TYb5dVJmwNF%VRk4vSd4-i<Rm&tpCK^rE5Mk zx1k-&<Mlh*8@J<*yluzlMUEl4It6d1?Z~4mh3B=IRWBrW6=c{CE+#iy<JtMzBYYTq zx@GXTe(V!$_r@8y4<I5BzD6_3LBw$VK6uX5l%rn%1K!4CAL005oOz09Lxe5&6zC_7 z5JHnL#{xUw6bSZD=F9v{zMsXljdu@-6yl6C`F<J^Hr@juVu&Li`=7!4Ca!I~UJy?s z&N!prgNU&49tY8hIO65Q8$2w@Ja`X4p*Z4<Gx~KS!p2(yrC3hlal9~iKf$%F-;)=> zI|Vr#FJ<9zJTiFae0VPduN`s58U6kP5jNfm;1P%ValA8lmq9sOzcd=`T=0!Ec$YxP z#=FJRuL!~hZ@v%jbHL+#W1PX8=fm4*;c?tGcq@H)PhJ3TxesrvRbKWdgV*H4dlPsG zqZ~q`U!xE2PT&!T^~ZV5;B{y`gE13~9pD=WwyfXXxIk8|CjQSMx7ZL`hU7$e$hq!5 z<a;kcv@@3sjjm*!2Ht8UjNuwnlhlv*oA=Ddn~g>~f;i(09%dp;IazazvBmJ+#b~ye zipu#F${3T5Ud$G=u1x0U+G5s;n=WXJF*X|7XZ}-M|I@_#V5<>R{+%`(kG-Zz*=xjL zVB+rNn0{qzD5&0@44ht949g0vD_oW4V11eIESg%X*P|iWVeZW2#mDrC*@s~Fh=yZ& zO&X35_Hym}8@a*^V}&_MuRBAha*o8)A~w=<P_8r+sc>rQk+i&yV|_h>K|`%&pMVu) zoO3DDz0&EfTdVuhnL{ZVSG(|;gRnTnWZIJJ_9dra<vqJUEiDNJ@yN-Tw9(w1EIU;@ z<*$;5j?HvZDN(9cz$cE3KO&|ikRw;d<B>WKsmGmCX=;*pqaL;;e>TuElrNkkiL@wx z5!WFxg1=+LuLr7}pGtcT?NYExmB|`B*9qIp&{A=Dl0%zIi7a!_+1G8XA|a>sNbidx zK>hy_;qe!P^7=_!7f4NzNAQh-0}?Teb-B{ExEr|!3!DQzy*kC}mja>R^ad(_Ay@vn z(q@#eY8kbqY%oLJS$j)ye``}p)>~C-LOeVi4(FVhr|Y8TNUCJ&5tS3~0c!+zQ%vHW zD*w&EZ09xRvP@Y`J`MZARBbP)>8?(%a2CV%5jiDheOFpNl#K)!dtnpm56miorN-#7 z+c|V(SLUn9!qYQhi=Z7O(|!3!PD0H3S?^4zrnE-J70bAqStol-okhAVVdtOGme>Ld z(3*;*T*xVNDs)>M=|P<x4$F8E5A_Fh&B1<mfq0Z?6-(6Ve9^hzxpvF5BUJ~f5v(Y) zr}tOF3Z%5jae9w*$~G22+gEYlMJevDE$UnDd_?Bh(f#PKm=NgwzO;4GMuhTz9&IO_ zd!#BYu6S+0p#2N1K_RC`_qYl1oD+pdU?Zfh4!x{cqM6<nJY3VXMBBwy4dI#N#9Apk zJx#k$V1L{Z_fg~52V%~zWjkOW4Wfn)xOMb{5z%SalhkZ?*U`JWf~c+cPYryjr%8N? zC?VV%)psVu$DP=j$*){9Ca+hG1!LmjlcC`PX?^SJ2@U6qHwL8532owD+>^;pC+tqs zr1r2PeWx3>QP}IRwd(HisJHnjsji{Dunme6BSixFzcL{nJ(0g)%a}2}YBU%V51tGo z&$9zz<oE9bKYxcM+|xCFxj4LdY8aZad<DomJS(p^x_t4}8M<}EWn505koQ;F(?kq* zu45c!`3wRJ8TvMDY`MC0;)?Ypm-LF+6Z%c7URDz9y*pWbEC+2yz%t6*!p<PAe+%Lm z(T0xh?HY&s61gs{#<O#QY4U#di~aMRnOc{yv@CMIru|kN-tFlAd@k4NdTe?}crYh2 zZ&nfdiRrhrnCCdP$aUtFI+-h4{dek|+44HqN!3n%<_afxW`FG@XHxI1j?E?WW{vb7 z8q5jKD^(UnB7~h3deMd{GaZGIJMH;X3AEply)8rGT-qbq>mtyG<q9G<m9`6W!i6~O zTX&;xeFkI2SDcQts*zatW5a<7xu<DMj5$TRmwY#!>*P4Qop0AJr-e5>Jn-OPB&TpB zFm7J_jlR6$bJu*jHuPNJ{SoLrJTSSxBQs_=KUg8Pc{3AmBHcyKvjc~U_txe=2N{t! z9LQsSZ)R2v%?r&;-Bc182`0W>JGSr9%)PZwJQtXQx(_{dENA%Kf(XW*?tzX>1+A?? zrplf6=&81nM|<Z_Ejm`^a87%8pgYsUw)a8WW%poQpM>#(vS+$E-ymf!d%80c9@kkL zlve5qXE@45P`916<NDYe0==}ge>M4|V=)KqLRx$=MtmyZR646Anu!0~sbtB&^@gTK zIG2iFu>B-nGS=g=#nRp_;yJy6e$GnDX55i^6L*LspK9gc_a~=`>86GAZGh4|$Kl=h z`^`%Cuv6U~bZ*f1lGg9=DK&djtHo23?tL!k7O>mDG_Wi4o#Y#RmCkiq+h6s)fD!rn zX`%VbhJ4uxb(d>^%l=|oSl9^wd8Eg*n@=WR?<L|dF_Y%tZnL#}E!Vk@z&$*g9NWJf zTBs2>b7ZDt=5A;dlkXFz1ghptNtL`f5Rf$c8GAhSxHFUE6d%dGT$CS8hK?J%{U1+J zS_Kk0slQHkqyxtTRn%jASk9wzhP&TU2w^AQ{Xa8tY4PW5R_BN-i2U&kw2NGs`kQ3% zID7an1}dh+WSs;O(~G|b)N#i<YeT)T?k^}w4GttxV~Q{0ul4<yx#b+!W0^R70J*)N z&nXx&>bl2ui}C>44&OBJ{vzMqAJ60>ukdj(XNb>K^YhP`{FasMN>5LHEt&I-nDcxu za6_}wKN<KgT3ZOuGSBtK)BOXH;d9j`&QAvR%epCYA{hOcTXA<shNJNQo;xySQv0qq zJBMoWUc=bO=W?_fJjdjqwaX_kXvg-l)M_t5+*RtwnNrp2vXXGWi2q97-IoT!xWfwP zuC6IFIEIQ)uJc%WoRfP3Pcs++3UmpnPe&SU0QJ)<N8-Dazc{YOQ4wF#e}(hxNTicJ zG@+jw9>ZIZ%KkugBwleM@E13Z#D-`W{W|=^@E?T#KR(a3vY1mWpHlx}Ah6(H|CN3F z@c}XC&ECNKe>kvsDo2&2?)#~K?7K7bEtKJZ4U{+!<DTV*zd2yOnZRp}9UZd`HBWx% z01Jurj{gtuNm$*+@jVHaUX}}sahl>faJ2U%UU~JNgh|S!y#GB(uDA;ETz}EN5QODv zKEkXs79kbG_a<I`M6Rouz8XF#XZ~zzzBlp8M@0?Tl!plu@?LHE9>pu4FYQZ*Agdg$ zBw5GzCSG}3J+hAPO}u=rMzbyiD}<L%t3=j?U|sd{X=TW|5UjIaKA%FeE`-&(m(RPF zb$oB)<#Sb^b$oB)<<n}Mbs<>Gy!>gR9&FZc2Yk?DP2(Co=97;>D(gacWb@*wMYE9z zp%r=gY*kqo!m8iPrxhUULTF`PK3iSZg<#$G@@Hn5xC)8cKK^XkK5AU4+3poDLa-uv z@ocLS`3WCCA@Q;(2_IgiPoAwf>q4T+$M;%hL+CADeQc`~^{Mvp*{iZHBo_Jji?U2y zh49wQi@(Ijzt+dU*2k~$@oRkiq>rEU@l!s2%Exzne8<PH^YQC^{N+CWavy(%kH5lq zKUetVSNh~v`uMAT{M8aK<4P(1Jr?a=;vyv0*d*v1ee_!S&4`KQ==4cLASC@&c=qQm z_(F`2k03OT{6`Iekn}&mQ$8QQ5aZ+1nr2NGLgKWhXG^+JysYU>k}eW&AT*A61q9QM zbg_?qA81D11z(8qaFLI{)JLz<^0f08Vtib$X^xD1Z+fSPE)ieSG)J035ffdSX3r|b zc=b=3R^=%dr!=j~d!_iLrdy?aT!e#4UnM_N6lj_)tq|i&Ow(++g&04oG@X!iLM+!b zN9scK_nS5SIZ0QFHV=QH=+yKxl3y)83)(o==K;;%iR(i2@1vS7lk^fnTRn;(NAf~( zt@yE~`QD{a)QHzKt@KUe5mw2wXB6VC##NeTPcIaXSYjDsnLoevAbzvt*NK}ot?FyJ z*rsV!{uSa=npX9@QhY<xPs{YH#ovH7j`;fB_9(BuVeMU5W!{6+^lLt5#5-}mh?DR3 zWODoS-Fo-)+<Noo+{4yiC#sK|-It4mSFaR3ZwwjD)ObOP52Agq;rT{8qrOtK_!Kva zGWlD63_Z$QOhDng*fxRCd>m{(tkmyF&G(heU%ye$zRP5mUU{jtda22>{oy-mb5lq8 zj(SJC{6uy`tNKXycm0!Uw2@}Fkz~KO{(tgmwdY+vx^V=a-!1S7mm&LhbfbC?8g10y zF(5v!`QvT*TlMz|;By>d`WhW_oFbiOh>7*%n$Bg2NlD@$J;&Q<zWzQUs@4xtgou*y zoKHym^Nlfno50A95czN%jAF2p`L^hC06)q2t?HYy=pXCvIH1p+jBnHVK%Vndv{k*M zCvG8WREE?S^<ZeO6r%0=yOT@Q`%LD~Cpwm^jv?{^w20zmU4$X{vK)|?<pMpE@iR0o z@-HKOyVe`=vR)u($|v(jdMRh(k)JFt=$myuQqJJv<5XF1yL38)_I(OAsQ2RxrCv}v zMjTWQ=V8{5O#ca;9(dHpmA_Tj1L~7cyiwd_S>KR{YVy8w{$su37K$kJlJ(c=qmd3( zEuz3f)06iLA|kq1h`(hBJq-V2nwEHX>H57}-#^f@{J@E6xg`uy?llZ?Uu1c}m-hp> zvOZ8=8E@(ha&sw<a>@IL^jDJp6J1ZB%Sl82S{*O-GWg)v_~d1NpFY3-<b5`Jd`{!u ztNXziA-|W4ZqfRqa-fn3{*e${b%?5!G@7IgJ9NnQO}S1TqG}|)Plw+|80F1*m){kc zPmQuuzV9O%y}>9On|%hz#+k9*o$0Knf%B#GwC!b#8fnk!UU7SV_i~s<?yvAhduL~} zB}KfIkdHa~WbOr!PXul)s3!*>4E1v*+{Yp>j7P?;%eMja79!`fsKo^;0t!g(TjWjt z`IzpetMdzFZ^=5J>)o8?<&U;4>w*%a=%gMwyeVWAa}$?0`hw3MUNN~HN^R`&GQ3;7 zygZpmKTV=yWd*CvUT-a@w|#kqRDbbq0DB7wZUws_TR*v6kdM0ZC6+}|&mxwY*bCq* z?gix(jNCjnx2=VrLGl~Pin$fyJ@|NU3Wmr4d@ej4=SAC*M^_5ZYqLzckla;};hb_Y zInJ~GeEE!GTv%Ux0HH0n0(7|%LTKbZ?33fX5x3-m`kM1(9(;|a)0eBcm+4st#H0S4 zf9!k@faWuhaRx7g2pg{zcuY?`h6b+_*EU`+=t_9w3?An-8?OU+tQX?(nZV$E6W2Cg z7(^H1j5GD}AR=tM{lKe19P#qu4c;+a+jxHif_&qQevcu-#_P4p%V!LO_aj`}cu#<E z3>ZR#$9k~wP5>{4IO<mbZ}5JJYa1^Y0J9NioWXku5jNfk@Q6daLU@B00ho<f34l%D z8)xuXuQpx;4>Sn~5w8f|;2C=o+YlY?BX_Aw`Pbl0@!?eiFAfRfT?%jTQa=4k(4qK@ zWt_pQ@!_R`XUfZVWAGY$c#D8XzHtWck9>Ho79K8Lyt{pPYc7Dd+lSX_;gwi;hkSUO zf!AS_LumAS$cMKdc;<eveoT3v_TfDbyz)`-p7P;6Vd)pM@P>VOxyZ;K1C4&a@Zt4Z zcx4t|5fVVu9d{Q2Z?yJIJD=VD&RBRX50c4oW}Xjk6BwiQw^=^CA>f(u<w^_hLq5Dm zfY%DXabQb#oewX93B|N$hDN__KD-jV(i^S3O+LH?@JxH2Y2oel;ne}JPN^jSGGDq+ z`0#2h{g}Ve@2ft%{lH5}1oa1O>F)R8Wq@buk83J}_m~gwN5Eq{HO}bwcRsvM3y<;! zuiu9k#z2GRl<UBj?pYt+0pJmb;|u2-gZE!Pye|L`O~G{r?+qW`Q@}I#gYDnoU55T; zx93MLfOiSx?Dl-Z!dqzJ&GX@X4|vbG+GWRsSw6h8z>7hS<*kM{`Z+$l16X_R1m8GQ z-lPvNf<elZcM*gQp0O`OE$Ip)%7&mxcf4xy;S~c9qEf#l2o2sRefm{FXteQuj}I?q z>36M#_n;4N4e)L;${{r6{hALi0lXOatiKv~qu=*^cz+GN6!^v&yzlw&Rs+xUk0gW* z-YY)5SAn<OfFU$^gFd{Bg~$92-b7s3?QaPh8SBG1gEtOxcKhoDp1HpcgbiN8hqn`n znhh92gE!lUx8JJ2Ity>L5AQ7ST1UZK;lt~)^ke;iE!)pFAKtp?=;KS15AO-9{#ICc z_xkYm0gv@zoGI^TeRwA<yp<3JTk6;C!|Mg!(*{h-kv!_d8v-8dh3#)OyutgS#xu{% z4~$hdMu<qqdr$wImP@E;@jb|mwx{3)$f0Suw_tJp+uKu+o+`v|sFZfhla8UOBhnqf zi{Tz~uh2$#CMket+e5ytJ1|Lzf3zYD9xX<<H?_K(3NE&%pmKh-J}=_pdkU)5pylo< zD8kN(&ZDb_IyVGT;_$wtINsS)GZJ3>#=y|gyYb!dwNu5Hmu&8lU#;!R6n7WvUGXz7 z|1+FNaK~nR(aJB)&xzQp_;M;JUg6hn%Rbc=KFn|H_+`A>4RB{B)}8%Y{ISgsB**uu zFUf-UiRt2tGo2rdg!hN=&6oNXj9=gf#S8k2NcA1t9mrqpgzxOhuTZ(Z?%6{x<Q{r4 zBPjRIhfbM&^X{&CN9}{p)n8DCvCCeRnZ54~Q$#sY<<5lP^WE>JEwQn^7kl5)m1H}= z6d}Li!c=QHt5YDBd*8i$JOEjad)>W!OvsiCp{IEH>^WH%5@UUQYL|5(d~xPYZ@xfN zG9fV`D~v0CbH(|Vb;jog?(I$@G>(0jW0G;C8{jF=agTey?Qw?u-SEbd-Um<lGWbH2 z?|y{Fk^fil<R{<@Q9iE8jU)dD@Z?_!Ux@OZLTDWM@|7wFjScdO=K!_g<ervhymHnD z9lec%hm2{{ywCN&eDp%doOBZV<uEg+0gvx>jf^)!n!nCFyNG9sk>i%YC9JKuDC&6l zD8|m24ACIDwvXaLV>Uyq`FZc6SfJyvLPXIJ_-q@+xEE)LF<i!Du3=k_zE8g|;kfwU zd0zmHvsLXi^67($aGucUM?Jlz^m#@_t4_TM&#O#7TOSGat}TY_Q*4833h}Oi5iNNP zOZByx+U&J5`NW`mH}*o_JLAmU>mb6`Z#ii8XXA_<+XqLK8qN4QhA;LZwj+*I9L?B9 z+Tm@yJ)qg&jWc+yh_LZq0|1|UiN}%6;C%ttHeN62GI-+*-sccu<K;ssqaWi9-nVdV z<Gl(x0dJhadl(Tm9@pP2ANAwNY4G@rX5*ECxDs*38N8<uVdIqp&y<%Vt-<>@Tocde zR0qNyC&{Bf3vWM<^&oOF;*6sV-9&iPrbsVAz9YQQ&d4z|x{@`bBk+pZwcD{iSq2+# z1jLJoGtS`24_Iz@AIIGDwl1{Cv+9~_7RID|8_#1L%+TyqABm$qU_iRyd0RMHNPaV) zd;NiAZf_3$7U3&*+)L~yYZ=NFojvCKES{bfl;8S?oYmdEdQaPG8SYN<+xXm2F-}+F z8B{f!)t=CxqjrFOHG};SO#4dtWOepc`Q+8bdy>)9cO@e{L+O=u>lMEsRh&}iP|cgs zb(A|h#yMrrMX`H>&rt<+l#Qh)#u%m>f-*eVpwgz(2}#Eq$fZA+7Bc1x!Y-adB)WRI z=Mqnpa`zthy?jxYX^(U0v4gTKolaWr{OnAr-JFp@5!&sjU1fW5>em;O6{qh>9vsXQ z4-V#q!h<4rY^vn=u5@<K%dX6F?1@sl@z%*wXVPaScJUEKpG~heJ3~I7l~o9G*Jzac zN`lcrxpPPy4q$iOvm>!il<C~FBjx+U&Y|w7B;rBr>B|j|KXd)%g^w<Lbma~AzxnB* zo6`s0-1q7M<Z&v^TG*#{WqxX(Od*B~qB%~Tyxvp${7K{!{-xUCF<q4X;6*W=d;6GE z2zyvmxruTnUF>j|*?zrCwNvlu!u~Qmhf}_`B%Fv1g#tBBSUyXKob-`^tp8;r;juHZ z(?it>_lI$hXi)AC<316l<_?yy-dTp6kEnZF4Bh3O!}(F>u5mBY&h%oI?OZ4JeSEMl zBTJJrDDvX+-sS3DQG1;=&clPbLhbiDdjxka-2R<i*q3v%q!gN}XZ{fOy@jNn%#CF| zknWI(i!%B1myJa7FG){2b0{-*I54(7N&Z8FW5YowBl8M4D)(qAmfDldeGcV{)VOyy zZ!j!w#!e~fnmagFFm-(W<5&yr?V5_#eJR#7Gj;i6*i|zVEr+sZ&ym^#!@Xnbo?v%V zd{JMxRMmJ0)QaA`*aE3_aa!Fi?BkP~<xLJc{x)5j3J*r8#km@p=1h8#yPt6vc4JTM z6SJ=D*ZY{|j^A{8VjZ=Pr4#P1qELK7pF++_U6DE@>nf;oEs&`WrKdW5Y{R)f8<>XO z&gvY#-}jv@X8h&=`(CVpV8*cA`TJV<oJq&IaI}3ceBPl>d`=DGNn-)Rtjm$lD&=kj zCO6A*&E%CIBj-rs#o>eUNh6zpYbdXLp0ue@zD~+>_RBi1sl4)Ir9SIik@MGBUitIa zSYEz=%{9@NA7}Th3yDj7e9qok7ZQ_v{7G3Ru0lB7%bWjYKK|uCJ{As^3t<K6O+Q7} z$5XD1cZJFG!EDEUE@?!tzHfo&nr;h1<M{k>8$9`3`*BUT8=-OJe;S_r416KhtPg6M z?WYh=L*Lc(3Q1og_rc*(I;Q`jzGguBBs}p{`bpviO+Ss0r?H(wXdLDF9X;jQz6!<V zVydQ<{1g!<Q#;Dbb=&sa)pyf4DU2UV<JoC`B^lZC!_?yx7lb^1I(wSf_S<zFzHr#F zp<R6reQR68`ugpyJSkVg>oaZj!W1hk8LN-C#plQF+0g&}V{VZ>zhL#Pec#@}x1J-H zSWwS8Se>vdHFiJqMzwK06^-Z+gAD7EG{+H!_%A~fFW0k(EYtCo46)EyWXsLWe)me- z2KjuJXE;}f3w5}JA@FK6U8h4nn)3TpqeqN1<l;KyGb`zv8KO~b(&1Ky$cO7E^6%6% z*FTgqxLAUF@?EKEiHCHuymR#W9keM2R1#4PCq)bs`ny6bW=y$cc`9^$LXPX4DE`R& zpqIo&yvbkI3-D!n;K}qT+*+OPV+@f_mJeaGra#FL>14SO{+Xs9XNdft)N<n)&e!=N z-smsu6?)11fh+R|j=V1jYnTpUoerfws6SahMxU$IIAYiHU6cpk=<|?H|A-F1t@-cV z-r?!gUNeK+dwqrrH{SGWZ!)`odpWwNdn0v6_ePG|)x9F;pKa~sTc=!m8E&`tMw@P3 zZy!!Qx`?kn^ce82jWM`~zf1NQwq@hO`eGSEP7%49UV#wJ*L6nj1Bl_%NR8%{ql2K? zix@ngf+$D&qwqFf2k1DwaY22-_bxWxY(0j>5RY!*;_bw>jdu_<`<ihEkMp#R$1}z- zOi2A0Z}htl*EZf+(6_)FXUe-D5jI{s@R)B5-nPd)4BE!ycR_!JIOB|d-#~<o_c-v@ zAua}Q+hhJ7w2jAoW*Nj8XYd|HgpF4OrQ(Q-!SgB3l=r8&w(&j;0Q>$LyyqZi<1GOm z+e-|dPkjb205BVG4*=L^j5B!ug$NsOt)(BI5)IyDAKniypx>pCv+?e<^y5>d!K?7$ zy$QUhjdBQ$esg?y_W`dJ{1`l+LJi(pA0FSIv!0DJc&mMQ;e0iR#URM1R)e?2hleAq zJo-_N?p7aO5%BgQJ_gS*#o(EJjcn_5kAty8UCO_Jk@t(=gCQ#xQMw9r+Qo)INI5#* zYsk6o0p!cQlE#@!hNkS~Z3SK@5|-k620ZmEfag84@m`JyvA}?UXD<01*7gqUcQ{V} zZQJi^E=5L`{VpN!z;XfmowShY)1a=3=Qxv3s#W=nRLI$vyyW;9xiX)e3OM_d`Nz|e zg0(|h2O_Dx$=NtFKLE=ZJx@}>i9A3H4#y+;PGm5YC(mShWkzv$I4*4lacL!qH5|&o ziV&hzU`BDJw(2N*!a-OG7@uB$7BYESMp<QoTCz@C9#pKfEv)B>Eb1g0&^%45+nmIf z<4io6mKq100@v=bx_jcBP_MBA7E2pZUg%9&9L9!Tm*=D8I6MPxyvz&MM~M(liJ7xg zm-SCf-IFXj{@2OE<9{(2j2ukW){Z-&tT^#hXYJS%4^4S+@=!4~;aM@XRfUAMS;=tZ z=%ujTlsJWf9A^s8V1vdT-49JUlqr`dvdK5tuN=}=KSiB|{cNNMCqlvI6V_*-1)bLJ z^yY6(VI9PkwPn4!XNo$LE<hS%_X@*Sxhu`wa;7cnS8}jFMx{*=mN0c+1J2Fb`W1B2 z-#Ivl_f&J2_aBt^KAsX~i?@^($DGU4yE38q(}zN#{P_|Q=gckM5{gZca>cldi?^uj z1L?(EIx^~dUD`d-=JT=55u9X0&38LWm%Kp{Smu<blx>QZs(<K<ZC)wwK#eS2Y<<#+ z!g8w4J^S{+0_VrBRqqR^m9N0cndrn>YWt~E&>8CPP!>6yVil8TnTf&NO9Rutae2(y znVCUkNUiJsvo}BUtFOHIC&ORAVM`ho&|%m=fAw&B5VdDcQ$rmtRjqrU)F)S;Iumv> z-O_q|4)^_3?qFo%bZ15?P^RL-ID3cp9Vh2hy+KXo89%#WHO`)EGXv+k$rgPs2li5Y zm0<GRtG+wfnF&p0J$E|c${9`>PUut8JhA3%AL<aNQK{U1D%-6(TWvf}TT<ub9q3NN zMp&Uw0jf^#%(QkFIDyLCKJllsoFwdps=f~%F=ze^mV_#qqZrN)Fh9j#-MtugPu{O} zX`HziTeLZU{w3+34=gKrzVD>|He(ucTC!Puak{KomZ$tk2Tu4=Hc55whvb=1)N(hz z#rT5Lv)P>77JF>*)HV3tLY1#N9r?~qoOYBSsB?lieJoT-T_VGw5Ow373**i$&Zu!? zT{?fhvVIn`rNI8FOY<p~GK<Pu8|tf;cGCRBi?YUO9p&#3?3Y^8j?7wFJXO`|PMq=; z$0=Vf;%?NAybmZ(rP5=_ZH4(bP3#N$gsuScO7@jH*CT(06`1ycQ`eVN%QFd8%*XMY z4{=>Tq3S^VHzyBe@^C&Pf4hQpojWMThKD1eoWZdXQD#m+3czNrEaSB!V?|^*oWt)) z!tysUZg7_C+>`~pZX^u*b;PtPoC_ETynd0>4DB<$f=*|*InOINEviR?8O37y8k{^; zDr*}fD@IUhYsSfIJeRE|laG3kCD7V*I;$VkwUAi#l9-awCuNqORCe%@^nYYN0@+>Z z$?`tz%2YqL#y#Ds6ZhJT)+2I^Nv~fm@zd!V_cXUL!v%TQjf6k@2Hv2kyz=5BegA>; zntD$iz$s$!&2s#E1!LE6Jnv*`ck27K^ZGH*1izG=@yy)RH<MSM%mo!5j0QfFEIV;C z?u^3WTNc$1#?`S@F}xjN2<x_-)6xwEGCbIDR+fvrGYv-uu5?b*iXC}G|GtW`!((>Q zZ#^)|%DE*_8A54em=lopoEj0$Tr1l&@`|&T|L`4<e8AzKw{y1BWG&6-`?s=zuaNv4 z&v%+?wWk3P(B^$@mc-Q<u@ry#T(<{)G@G|qK2O}B<(Er&J~3t;ZQfq_vF=$!X@~{o zYRr}&=aU~NZMxKFk(58*2JXe5AU**(%EP<_e6FUlE`%p!ulz)5TcZ3=;DhoB+Lph> zCx5<;+>6K6OxDpx?&Y6vBlq&pw~>4KTs>qRZQ@@3)GQNMA-wDM^6~E5av?nNd-<gn zm+7bb_|tv-D}4MbeEh3?{Hw%6kSJk=OLvvIkYNa`53fF4jbvR&{vwD?&lZ1~CFPps zu#d(t?mDh%e&kYWjnnU=U-r?jgQmK)O%~#v$rx96mEN3Fo|61Y;wtbdvR=}ci7KD` zQq8Argf{<=`1qSOf41aL5w~gj9!XCXW^YiPq~9mc;3h<uq)WxaKD;M=bf1qt4VqEY zWcumiWlhsYS}3j%Z}{ZLW8uiC82%LE3!@TiA<6o^Li1I9;Qr~wq5PQ>k9iXe?>me2 zTU$14*<Qb`X?sf>e(0`oqx)$cUQcY%T#aYmZV-KY>((ao`a)mp(^%9i4IO9fqfA1J zrfXv4nKAa84ezh6jDB8=IfBFUKEn4#gPCYW)GG<!Z)CpZkMnVhu-r*5OQ^pKw2h&R zr;sUz%;H`Cbl(N`sWU70eTwhR5DTf3New)|_IKWwb42p~1fcsqiT4=o2POt-lP}U? znGO>=tkxmT0<_7;7+#aL@mK12`HlhcNz!AoXI*?)^FO9T_G_l!s^!{se21oKTa9A! zVcTYYB|5y4A?$#hXNaG#<Bi_zKa_VE0$;wP0Mn$G<wCldT27V^G$7@-m8N`B9`WT` zPRfIpcrXI-Ie_^{JQUjCNxj~$^9MgoIXpZxGemlhKMX&q!v`2bj^i^!`3?j6KB4LF zF@*e&7-Eo?`oZ8N^R3C|3l&5Z)10S1Ajk0~3ORXyz?b?XUY2i}jz{9<l!KnPFhoAG z-c9;i^}Qj#F<qzS)-!}&QVxSoOs6YkX!Jumjz`2@%@FcwhQOEi8F)q?sVC%X$cMbi zUzQWf$$GtB^AWD49O`ScmTzZh>UD(>`$;38FY9<&FDR$HZ`bMe4n2#=U#05_c(X~H z{6S0kMcMkEOFrVOby&wRs=lL+-k{3|Ju-|(*s8<NF@)acKL40B3V((n+UW}nA^%Gq z{ziwt)nP8iedZfw2)SIwLw{LMHQDxfCF6lB%K>>=ZwOHYneIJ(H#W-5;d@tPO(0%Q zn|UejdyQl!6|b~^dKr~#CK@l(JLR0uGc$#kW6u#@4u<+sj~W?esyHtp=L}zYtsi>z zibI3Z#IwWx1y1p>Cx-J7)o1A5=<K}Ujh7R{yMCR=CucNS_gxv=qwUC}D~0EEhy>h) z<gNk_&H18oZ2$gz*_VwA>kABl9=R2u>5U8O3;(;k0(87Mcyr-%;E6}QHp1Ka9ss=u z-Z+DoMg&)FHSl!Rz{?;c9=f-S_i<d?czpN6vD!F;w-XUI-a$)0#vA=O9@=;tL8K99 zoWc77B5b^;fEPm?^&1Os@E*anjmPI+jy1*^yhDhv@y=TM+3)hc4>=p}w;=4cVDLCE z+IR&R3(fto-{lSX@OUP|PY`FE!TT8^Y`kjVbs~=C#id)`5cIM2D?o$Y1io<w?;Ij* zyzc@ehB)Hc@AAyIM;y=TZUbIQUCO@(?{Z{n<DIbZ?00!r`}BJhc<V>O<L@%rcq70w z^~cq+xxfD3TPgvAZOu5Npa1ukVt5cRc$Y)i;I;bn`!X2ptHv3;tv>zgfQKd{>yKlK z!TY2S?|*}Fj{!qy@b>ud)&Vb}@$eYp;{CY~ZzVc+-6(ip@!{<Q9>*8nU#|9zen)+H zUj|;+D0oMFcn5*ETH}>kc+dLq95kG1qu?F);SE{!H{HVXp8>HEcne3t^Pd61MjV42 z%X<a9DQ^T7j;!7B{sG{{7@-~I=y>+4-Tq?0JBWDVaf~;3F(2OJ7#vgJ8)xn>*TXj6 z6Tss$8u4bp8$5HS1n<3ck<s7%Rs#=Rr`3q<fE*tCU1y5Ku>o?f8$rHxMk&M^IfhoW z=mK5>ZDAhb@%Sh8D?rFH*m!3!IL@^a8a%l?)xX}(9UK?iOIuOBK>a*d?BaVjxGx9J z-McZKBfk9I^8C}|dJBdpPRQ>cbA3$`zgZx1uNU#iG48m?sZ&0PP;K)ol`v|}!pjQy zB>WBV4e;CH_rh~d`b+q3c#i+i!M_S0Mqwwx)3#F$e?9yX9G=y*F{U=o&4W4M*7nS` zVo7sLO#YBPE_XC<X>Pf_+0agEZGG*UHT5f3t#wx2v@#`3MD4okZd`k#ORijX<Laf$ zYF#?HG_}fcZmeBv$E;quw$4M>EnS&f;YoDk+NEo=5o_1nv~n3Dve^RnLrXt+-7*{I z!?kN}yl&M>JL*QHT(<V6HCZSmT(R^ct8U6Fblu9ewQE)`U16tNxvX}@ifpNn=)+4_ z+~h%7h3tUjrdqjbwJOGq_}Pg+{5Ccko_2gMz&@FEVL5lZV~6auS#AiU9=gBfa^-rR z5u8H;?x?6l_!|zk<G1a$<8L-hM+BO^sDUqJex8mG>z@0g#c2QdjoGbgmnqglvOmZ< zE{JUS3>8E-=9tJ3OJNyuTqI3R80PDc<tAOEL(XlaOLQ31VYv?DI^<kVIo1)w3*}p* z`6(T~qjjn0hjHDa%H@kXOb&~z_xMn`|6l7E)+6t~c|K%)*1#Lb`$xxmx97i?F^R+w z$NNbcdfwv?!V}L-DebtfgE!9LEklHjmk-81#1W6W7(AFxBwi&#y2s%^#tgLMCH=>A zX!_1%C@|VLSGPhAs<$GL?(>j)JM->+Q0R7(2%%Adp(!ibPlFgj$Ti1!c$T98-aqd? z4ke7PV7qwp5;2dv=)60B;oCmLq62xtx$|y5w6fo!AJXr7_jTu8r`{r`bxe&8W8K`} zrg(glPWO91q`P&`(!3Y@o$x4ZxiEIzsPRxmvPEPa$8_8A-L367hI4FWJF9``7|mx+ z<Jh+Nd}kbK_8H?yvu_wjdW#_tlD^GH%Q>KNTWk9r^%&+Gxi7_?1=QE&^;xbI*590S z?l}L8amHHTiIa4{4$r2LI9Xc}#}b|aPW__jOp_U+LzOYa0(>SzFu9hXol?#>O!Q99 zBJhm!=a=lg9^`-D#(0ipoX?~1Y_;^P;uY|0k7i8f7;nZyT*_<GAJx|hM#6DC9&JqC zh<JNUehKv38I!|E#Jr6&IxvLluH$~I7(5;qT-y@cm48g;y6P@BRkloQq%eD855@Mz z?N|(5bWC1Qtw-^TuZ14*jmZU=IXdw>!sa*n((>0g$KuyF#iPrng=fXF1AUzSUBe)L zg_G3l0|IHVe|kB;$-(Lf&Zf~_#B^PNIU5?cZrv`XZ*SV!sIPzTM{slBS?>2@{N|dQ zm~7t{KeH#-cV<qmw3qNXMmhiZj$fBHEEz_8^6X(*$7gig@!K2Q@psfptq8X3Iq=k< z*M*p0Xj{(G!1p$2b@GjB7ukUx@1W)T0ZX=C$uNe^N0Vwy;26x3^1K+9J&3W|Prr+? zSvFel`vcvewH98UrQUlzh@))3OXIj1gQ1o?=FP^n{cQbnjB9LF=6TeN<0-_kU6>Y{ z!8O~Aag?L0fw%Eq1|H>z$Fv47jcXgP1N3Nkw;<le`%epxdKx^=6~r@T+=pws?~q4- zmktvM>HY$Kw0Y*Uh_~k%{=U`QnP>8m=&J<Qj(O5CgzB#2zLXkxj<*~`SPquoKhNBU LL@N<*oWc9Q6j`E} literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/ARC/Lib/Release/nvtpack.a b/board/novatek/ns02501/loader/ARC/Lib/Release/nvtpack.a new file mode 100644 index 0000000000000000000000000000000000000000..24bfb85547a817f113e9186cff9e55570bd47c0a GIT binary patch literal 6848 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 P&R0L55Zoh5QL6t28vcHZ literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/Include/CMacro.h b/board/novatek/ns02501/loader/Include/CMacro.h new file mode 100755 index 000000000000..8d4bcd2f4a15 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/CMacro.h @@ -0,0 +1,35 @@ +/*++ + +Copyright (c) 2005 Novatek Microelectronics Corporation + +Module Name: + StdCMac.h + +Abstract: + Standard C Macros for shared header file of ARM ASM and C + You should include this file first and then include the shared header file + For more information, please refer to http://www.arm.com/support/faqdev/1208.html + +Environment: + For nt96610 + +Notes: + Copyright (c) 2005 Novatek Microelectronics Corporation. All Rights Reserved. + +Revision History: + ??/??/??: Created by ARM + 03/17/05: Modify by Chris Hsu for NT96610 uITRON project +--*/ + +#ifndef __C_MACRO_H +#define __C_MACRO_H + + +/* Comment */ +#define COMMENT + +/* end */ +#define END + +#endif // __C_MACRO_H + diff --git a/board/novatek/ns02501/loader/Include/Driver/CC.h b/board/novatek/ns02501/loader/Include/Driver/CC.h new file mode 100755 index 000000000000..7a1bd23aacd6 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/CC.h @@ -0,0 +1,65 @@ +/** + Header file for CC (Core Communicator) module. + + This file is the header file that define the API and data type + for CC module. + + @file CC.h + @ingroup mIDrvSys_CC + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2015. All rights reserved. +*/ + +#ifndef _CC_H +#define _CC_H + +#define ENUM_DUMMY4WORD(name) E_##name = 0x10000000 + +#define CC_CORE_CA53_CORE1 0 +#define CC_CORE_CA53_CORE2 1 +#define CC_CORE_DSP 2 +#define CC_CORE_DSP2 3 + +typedef enum +{ + DMA_ID_1, ///< DMA Controller + DMA_ID_2, ///< DMA Controller 2 + + DMA_ID_COUNT, //< DMA controller count + + ENUM_DUMMY4WORD(DMA_ID) +} DMA_ID; + +typedef enum +{ + CC_RESOURCE_UART, + + CC_RESOURCE_COUNT, //< DMA controller count + + ENUM_DUMMY4WORD(CC_RESOURCE_ID) +} CC_RESOURCE_ID; + +typedef enum { + CC_CORE_CPU1 = 0x1, ///< 1st Core CPU + CC_CORE_CPU2 = 0x2, ///< 2nd Core CPU + CC_CORE_MCU = 0x3, ///< MCU + CC_CORE_MAX = 0x3, + CC_CORE_DUMMY = 0xFFFFFFFF, +} CC_CORE_ID; + +typedef struct { + UINT32 cmd_buf[3]; +} CC_CMD, *PCC_CMD; + +extern void cc_setCore2Base(UINT32 uiBaseAddr); +extern ER cc_startCore(UINT32 uiCoreID) __attribute__ ((section (".part1"))); +extern void cc_stopCore(UINT32 uiCoreID); +extern UINT32 dma_get_dram_capacity(DMA_ID id); +extern int cc_getCoreCount(void) __attribute__ ((section (".part1"))); // total cnt = cc_getCoreCount() + 1 +extern int cc_getCoreId(void) __attribute__ ((section (".part1"))); +extern void cc_lock_resource(UINT32 uiCoreID, UINT32 resource) __attribute__ ((section (".part1"))); +extern void cc_unlock_resource(UINT32 uiCoreID, UINT32 resource) __attribute__ ((section (".part1"))); +extern int cc_send_core_cmd(int core_id, PCC_CMD p_cmd); + +#endif diff --git a/board/novatek/ns02501/loader/Include/Driver/Cache.h b/board/novatek/ns02501/loader/Include/Driver/Cache.h new file mode 100755 index 000000000000..37e0eb9dc3dc --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/Cache.h @@ -0,0 +1,535 @@ +/** + CPU module driver. + + This file is the driver of CPU module. + + @file Cache.h + @ingroup mIHALCore + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2005. All rights reserved. +*/ + +#ifndef _CACHE_H +#define _CACHE_H +#include "constant.h" + + +/* + csselrcache level & type selection + + Detailed reference to [trm p4-177 CSSELR] +*/ +typedef enum _CACHE_LV_TYPE_ +{ + LEVEL_1_DCACHE = 0x0, //< Level 1 data cache + LEVEL_1_ICACHE, //< Level 1 instruction cache + LEVEL_2_DCACHE, //< Level 2 data cache +} CACHE_LV_TYPE; + + +/* + Values for Ctype fields in CLIDR +*/ + +typedef enum _CLIDR_CTYPE_ +{ + CLIDR_CTYPE_NO_CACHE = 0x0, + CLIDR_CTYPE_INSTRUCTION_ONLY= 0x1, + CLIDR_CTYPE_DATA_ONLY = 0x2, + CLIDR_CTYPE_INSTRUCTION_DATA= 0x3, + CLIDR_CTYPE_UNIFIED = 0x4, +}CLIDR_CTYPE; + + +//Instruction Synchronization Barrier. +#define _ISB() \ + __asm__ __volatile__("isb\n\t") + +//Data Synchronization Barrier +#define _DSB() \ + __asm__ __volatile__("dsb\n\t") + +//Data Memory Barrier +#define _DMB() \ + __asm__ __volatile__("dmb\n\t") + + +/* + ************************************************************************ + * Cache Size ID Register, CCSIDR (cp15, 1, c0, c0, 0) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |W|W|R|W|NumSets |Associativity |L | + * |T|B|A|A| | |S | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_DC_SETS 8 +#define S_DC_W 2 +#define S_DC_LS 5 + +#define _DC_SETS (1 << S_DC_SETS) /* 256 sets */ +#define _DC_W (1 << S_DC_W) /* 4 way */ +#define _DC_LS (1 << S_DC_LS) /* 32 byte line size */ + +#define S_IC_SETS 8 +#define S_IC_W 2 +#define S_IC_LS 5 + +#define _IC_SETS (1 << S_IC_SETS) /* 256 sets */ +#define _IC_W (1 << S_IC_W) /* 4 way */ +#define _IC_LS (1 << S_IC_LS) /* 32 byte line size */ + +#define S_DC_W_L2 4 /* L2 way shift*/ + +#define S_SC_SETS 9 +#define S_SC_W 3 +#define S_SC_LS 5 + +#define _SC_SETS (1 << S_SC_SETS) /* 512 sets */ +#define _SC_W (1 << S_SC_W) /* 8 way */ +#define _SC_LS (1 << S_SC_LS) /* 32 byte line size */ + + +#define S_CCSIDR_WT 31 +#define M_CCSIDR_WT (0x1 << S_CCSIDR_WT) /* Support write-through */ +#define S_CCSIDR_WB 30 +#define M_CCSIDR_WB (0x1 << S_CCSIDR_WB) /* Support write-back */ +#define S_CCSIDR_RA 29 +#define M_CCSIDR_RA (0x1 << S_CCSIDR_RA) /* Support read-allocation */ +#define S_CCSIDR_WA 28 +#define M_CCSIDR_WA (0x1 << S_CCSIDR_WA) /* Support write-allocation */ +#define S_CCSIDR_SETS 13 +#define M_CCSIDR_SETS (0x7fff << S_CCSIDR_SETS) /* Number of sets */ +#define S_CCSIDR_A 3 +#define M_CCSIDR_A (0x3ff << S_CCSIDR_A) /* Number of associatiovity */ +#define S_CCSIDR_LS 0 +#define M_CCSIDR_LS (0x7 << S_CCSIDR_LS) /* Cache line size */ + + +/* + * SCTLR_EL1/SCTLR_EL2/SCTLR_EL3 bits definitions + */ +#define CR_M (1 << 0) /* MMU enable */ +#define CR_A (1 << 1) /* Alignment abort enable */ +#define CR_C (1 << 2) /* Dcache enable */ +#define CR_SA (1 << 3) /* Stack Alignment Check Enable */ +#define CR_I (1 << 12) /* Icache enable */ +#define CR_WXN (1 << 19) /* Write Permision Imply XN */ +#define CR_EE (1 << 25) /* Exception (Big) Endian */ + +#define SCTLR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__( \ + "mrc p15, 0, %0, c1, c0, 0\n\t" \ + : "=r" (val)); \ + val; \ + }) + +#define LEVEL_1 (1 - 1) +#define LEVEL_2 (2 - 1) + +#define CCSIDR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__( \ + "mrc p15, 1, %0, c0, c0, 0\n\t" \ + : "=r" (val)); \ + val; \ + }) + + +#define sel_CSSELR(InD) \ + __asm__ __volatile__( \ + "mcr p15, 2, %0, c0, c0, 0\n\t" \ + : \ + : "r"(InD)); + +#define _ICACHE_INV_ALL() _ICIALLU() \ + _BPIALL() + +/* + ICIALLU, Instruction Cache Invalidate All to PoU + The ICIALLU characteristics are: + + Invalidate all instruction caches to PoU. If branch predictors are + architecturally visible, also flush branch predictors. + + This register is part of the Cache maintenance instructions functional group. + + Usage constraints + If EL3 is implemented and is using AArch32, this operation can be performed at the following + exception levels: +*/ +#define _ICIALLU() \ + __asm__ __volatile__("mcr p15, 0, %0, c7, c5, 0" : : "r" (0)); + +/* + Branch Predictor Invalidate All + The BPIALL characteristics are: + + Invalidate all entries from branch predictors. + This register is part of the Cache maintenance instructions functional group. + Usage constraints + If EL3 is implemented and is using AArch32, this operation can be performed at the following + exception levels: +*/ +#define _BPIALL() \ + __asm__ __volatile__("mcr p15, 0, %0, c7, c5, 6" : : "r" (0)); + + +/* + ICIMVAU : Instruction Cache line Invalidate by VA to PoU +*/ +#define _ICACHE_INV_MVAU(addr) _ICIMVAU(addr) +#define _ICIMVAU(addr) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7, c5, 1\n\t" \ + : \ + : "r"(addr)); + +#define _DCACHE_INV_MVAC(addr) _DCIMVAC(addr) +#define _DCIMVAC(addr) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7, c6, 1\n\t" \ + : \ + : "r"(addr)); + +//DCCMVAC Clean data cache line by VA to PoC +#define _DCACHE_WBACK_MVAC(addr) _DCCMVAC(addr) +#define _DCCMVAC(addr) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7, c10, 1\n\t" \ + : \ + : "r"(addr)); + +//_DCCIMVAC Clean and invalidate data cache line by VA to PoC +#define _DCACHE_WBACK_INV_MVAC(addr) _DCCIMVAC(addr) +#define _DCCIMVAC(addr) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7, c14, 1\n\t" \ + : \ + : "r"(addr)); + +//DCCISW Clean and invalidate data cache line by set/way +#define _DCCISW(way_set) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7 ,c14, 2\n\t" \ + : \ + : "r"(way_set)); + +//DCISW Invalidate data cache line by set/way +/* + The DCISW input value bit assignments are: + + |31......................4 | 3...1 | 0 | + Setway level rsv + bit[3..1] = 0x0 = Level 1 + bit[3..1] = 0x1 = Level 2 + ... +*/ +#define _DCISW(way_set) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7 ,c6, 2\n\t" \ + : \ + : "r"(way_set)); + + +//DCCSW Clean data cache line by set/way +/* + The DCCSW input value bit assignments are: + + |31......................4 | 3...1 | 0 | + Setway level rsv + bit[3..1] = 0x0 = Level 1 + bit[3..1] = 0x1 = Level 2 + ... +*/ +#define _DCCSW(way_set) \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c7 ,c10, 2\n\t" \ + : \ + : "r"(way_set)) + + + + +/* Cache dirty register () */ +#define read_CDSR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__(\ + "mrc p15, 0, %0, c7, c10, 6\n\t" \ + : "=r"(val) \ + );\ + val;\ + }) + +/* Get CPU ID */ +#define read_MPIDR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__(\ + "mrc p15, 0, %0, c0, c0, 5\n\t" \ + : "=r"(val) \ + );\ + val;\ + }) + +/* ead current CP15 Cache Level ID Register */ +#define read_CLIDR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__(\ + "mrc p15, 1, %0, c0, c0, 1\n\t" \ + : "=r"(val) \ + );\ + val;\ + }) + +#define change_property() \ + ({ \ + __asm__ __volatile__( \ + ".arch_extension sec\n\t" \ + "smc #123\n\t" \ + : \ + : \ + ); \ + }) + +#define CLEAR_MMU() \ + __asm__ __volatile__("mcr p15, 0, r0, c8, c7, 0\n\t"); + + +#define DISABLE_MMU() \ + ({ \ + unsigned long val = 0; \ + __asm__ __volatile__( \ + "mrc p15, 0, %0, c1, c0, 0\n\t" \ + "bic %0, %0, #0x1\n\t" \ + "mcr p15, 0, %0, c1, c0, 0\n\t" \ + : \ + : "r" (val) \ + ); \ + }) + +#define ENABLE_MMU() \ + ({ \ + unsigned long val = 0; \ + __asm__ __volatile__( \ + "mrc p15, 0, %0, c1, c0, 0\n\t" \ + "orr %0, %0, #0x1\n\t" \ + "mcr p15, 0, %0, c1, c0, 0\n\t" \ + : \ + : "r" (val) \ + ); \ + }) + +#define DISABLE_DCACHE() \ + ({ \ + unsigned long val = 0; \ + __asm__ __volatile__( \ + "mrc p15, 0, %0, c1, c0, 0\n\t" \ + "bic %0, %0, #0x4\n\t" \ + "mcr p15, 0, %0, c1, c0, 0\n\t" \ + : \ + : "r" (val) \ + ); \ + }) + +#define ENABLE_DCACHE() \ + ({ \ + unsigned long val = 0; \ + __asm__ __volatile__( \ + "mrc p15, 0, %0, c1, c0, 0\n\t" \ + "orr %0, %0, #0x4\n\t" \ + "mcr p15, 0, %0, c1, c0, 0\n\t" \ + : \ + : "r" (val) \ + ); \ + }) + +#define DISABLE_ICACHE() \ + ({ \ + unsigned long val = 0; \ + __asm__ __volatile__( \ + "mrc p15, 0, %0, c1, c0, 0\n\t" \ + "bic %0, %0, #0x1000\n\t" \ + "mcr p15, 0, %0, c1, c0, 0\n\t" \ + : \ + : "r" (val) \ + ); \ + }) + +#define SETUP_TTBR0(val) \ + ({ \ + __asm__ __volatile__( \ + "mcr p15, 0, %0, c2, c0, 0\n\t" \ + : \ + : "r" (val) \ + ); \ + }) +/* Cache dirty register () */ +#define read_CDSR() \ + ({ \ + unsigned long val; \ + __asm__ __volatile__(\ + "mrc p15, 0, %0, c7, c10, 6\n\t" \ + : "=r"(val) \ + );\ + val;\ + }) +/** + @addtogroup mIHALCore +*/ +//@{ + +/** + @name CPU clean invalidate all DCache + + Clean and invalidate all data cache + + @return void +*/ +//@{ +#define CPUCleanInvalidateDCacheAll() cpu_cleanInvalidateDCacheAll() ///< clean invalidate all DCache +//@} + +/** + @name CPU clean invalidate DCache + + Clean and invalidate data cache + Cache line associated with input address will be clean and invalidated + + @param[in] addr data address to be clean and invalidated + + @return void +*/ +//@{ +#define CPUCleanInvalidateDCache(addr) cpu_cleanInvalidateDCache(addr) ///< clean invalidate DCache +//@} + +/** + @name CPU clean invalidate DCache block + + Clean and invalidate data cache block + Cache line associated with input region will be clean and invalidated + + @param[in] m starting data address to be clean and invalidated + @param[in] n end data address to be clean and invalidated + + @return void +*/ +//@{ +#define CPUCleanInvalidateDCacheBlock(m,n) cpu_cleanInvalidateDCacheBlock(m, n) ///< clean invalidate DCache block +//@} + +/** + @name CPU invalidate DCache + + Invalidate data cache + Cache line associated with input address will be invalidated + + @param[in] addr data address to be invalidated + + @return void +*/ +//@{ +#define CPUInvalidateDCache(m) cpu_invalidateDCache(m) ///< invalidate DCache +//@} + +/** + @name CPU invalidate DCache block + + Invalidate data cache block + Cache line associated with input region will be invalidated + + @param[in] m starting data address to be invalidated + @param[in] n end data address to be invalidated + + @return void +*/ +//@{ +#define CPUInvalidateDCacheBlock(m,n) cpu_invalidateDCacheBlock(m,n) ///< invalidate DCache block +//@} + +/** + @name CPU clean DCache + + Clean data cache + Cache line associated with input address will be clean + + @param[in] addr data address to be clean + + @return void +*/ +//@{ +#define CPUCleanDCache(m) cpu_cleanDCache(m) ///< clean DCache +//@} + +/** + @name CPU clean DCache block + + Clean data cache block + Cache line associated with input region will be clean + + @param[in] m starting data address to be clean + @param[in] n end data address to be clean + + @return void +*/ +//@{ +#define CPUCleanDCacheBlock(m, n) cpu_cleanDCacheBlock(m, n) ///< clean DCache block +//@} + +/** + @name CPU invalidate all DCache + + Invalidate all data cache + + @return void +*/ +//@{ +#define CPUInvalidateDCacheAll() cpu_invalidateDCacheAll() ///< invalidate all DCache +//@} + + +extern BOOL CPUChkDCacheEnabled(UINT32 addr); +extern void CPUInvalidateICacheAll(void) __attribute__ ((section (".part1"))); +//extern void CPUInvalidateICacheAll(void) __attribute__ ((section (".part1"), far)); +//extern void CPUInvalidateICache(UINT32 addr); +extern void CPUInvalidateICacheBlock(UINT32 start, UINT32 end); + +#if 0 +extern void CPUInvalidateDCacheAll(void); +extern void CPUInvalidateDCache(UINT32 addr); +extern void CPUInvalidateDCacheBlock(UINT32 start, UINT32 end); +#endif +extern void cpu_invalidateDCacheBlock(UINT32 start, UINT32 end); +extern void cpu_invalidateDCache(UINT32 addr); +extern void cpu_invalidateDCacheAll(void)__attribute__ ((section (".part1"))); +extern void cpu_cleanDCache(UINT32 addr); +extern void cpu_cleanDCacheBlock(UINT32 start, UINT32 end)__attribute__ ((section (".part1"))); +extern void _cache_clean_d_cache_all(UINT32 level_type, BOOL DSB)__attribute__ ((section (".part1"))); +extern void _cache_invalidate_data_cache_all(UINT32 level_type, BOOL DSB)__attribute__ ((section (".part1"))); +extern void _cache_clean_invalidate_d_cache_All(UINT32 level_type, BOOL DSB)__attribute__ ((section (".part1"))); + + + +extern void cpu_cleanInvalidateDCacheAll(void)__attribute__ ((section (".part1"))); +//extern void cpu_cleanInvalidateDCacheAll(void)__attribute__ ((section (".part1"), far)); +extern void cpu_cleanInvalidateDCache(UINT32 addr)__attribute__ ((section (".part1"))); +extern void cpu_cleanInvalidateDCacheBlock(UINT32 start, UINT32 end)__attribute__ ((section (".part1"))); + +extern void CPUflushReadCache(UINT32 uiStartAddr, UINT32 uiLength)__attribute__ ((section (".part1"))); +extern void CPUflushWriteCache(UINT32 uiStartAddr, UINT32 uiLength)__attribute__ ((section (".part1"))); + + + +#endif + +//@} diff --git a/board/novatek/ns02501/loader/Include/Driver/Clock.h b/board/novatek/ns02501/loader/Include/Driver/Clock.h new file mode 100755 index 000000000000..2b626aa3ed6e --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/Clock.h @@ -0,0 +1,34 @@ +/** + System Clock APIs header file + + System Clock APIs header. + + @file clock.h + @ingroup mIHALSysCG + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef __CLOCK_H +#define __CLOCK_H + +#include "IOReg.h" + +/** \addtogroup mIHALSysCG */ +//@{ +// For SM host clock rate +#define GZ_CLOCK_RATE_240_MHZ (0x00 << 12) +#define GZ_CLOCK_RATE_320_MHZ (0x01 << 12) +#define GZ_CLOCK_RATE_480_MHZ (0x02 << 12) +#define GZ_CLOCK_RATE_MASK (0x03 << 12) + + +#define enableGZReset() CLRREG32(CLOCK_GEN_REG_BASE_ADDR + 0x8C, (1 << 7)) +#define disableGZReset() SETREG32(CLOCK_GEN_REG_BASE_ADDR + 0x8C, (1 << 7)) + +#define enableGZClock() SETREG32(CLOCK_GEN_REG_BASE_ADDR + 0x78, (1 << 11)) +#define disableGZClock() CLRREG32(CLOCK_GEN_REG_BASE_ADDR + 0x78, (1 << 11)) +//@} + +#endif // __CLOCK_H diff --git a/board/novatek/ns02501/loader/Include/Driver/GPIO.h b/board/novatek/ns02501/loader/Include/Driver/GPIO.h new file mode 100755 index 000000000000..f139775a27b2 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/GPIO.h @@ -0,0 +1,371 @@ +/** + General Purpose I/O controller header file + + General Purpose I/O controller header file + + @file GPIO.h + @ingroup mIIOGPIO + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _GPIO_H +#define _GPIO_H + +#include "IOReg.h" + +#define ENUM_DUMMY4WORD(name) E_##name = 0x10000000 + +/** + @addtogroup mIDrvIO_GPIO +*/ +//@{ + +/** + GPIO direction + + GPIO direction definition for gpio_setDir() and gpio_getDir() +*/ +typedef enum { + GPIO_DIR_INPUT = 0, ///< GPIO is input direction + GPIO_DIR_OUTPUT = 1, ///< GPIO is output direction + + ENUM_DUMMY4WORD(GPIO_DIR) +} GPIO_DIR; + +/** + GPIO interrupt type + + GPIO interrupt type definition for type argument of gpio_setIntTypePol() +*/ +typedef enum { + GPIO_INTTYPE_EDGE = 0, ///< GPIO interrupt is edge trigger + GPIO_INTTYPE_LEVEL = 1, ///< GPIO interrupt is level trigger + + ENUM_DUMMY4WORD(GPIO_INTTYPE) +} GPIO_INTTYPE; + +/** + GPIO interrupt polarity + + GPIO interrupt polarity definition for pol argument of gpio_setIntTypePol() +*/ +typedef enum { + GPIO_INTPOL_POSHIGH = 0, ///< GPIO interrupt polarity is \n + ///< - @b positvie edge for edge trigger + ///< - @b high level for level trigger + GPIO_INTPOL_NEGLOW = 1, ///< GPIO interrupt polarity is \n + ///< - @b negative edge for edge trigger + ///< - @b low level for level trigger + GPIO_INTPOL_BOTHEDGE = 2, ///< GPIO interrupt polarity is \n + ///< - @b both edge for edge trigger + ENUM_DUMMY4WORD(GPIO_INTPOL) +} GPIO_INTPOL; + + + +/** + @name GPIO pins ID + + GPIO pins ID definition + + For detail GPIO pin out, please refer to NT96520 data sheet. +*/ +//@{ +/*Storage GPIO - CGPIO*/ +#define C_GPIO_0 0 ///< C_GPIO[0] +#define C_GPIO_1 1 ///< C_GPIO[1] +#define C_GPIO_2 2 ///< C_GPIO[2] +#define C_GPIO_3 3 ///< C_GPIO[3] +#define C_GPIO_4 4 ///< C_GPIO[4] +#define C_GPIO_5 5 ///< C_GPIO[5] +#define C_GPIO_6 6 ///< C_GPIO[6] +#define C_GPIO_7 7 ///< C_GPIO[7] +#define C_GPIO_8 8 ///< C_GPIO[8] +#define C_GPIO_9 9 ///< C_GPIO[9] +#define C_GPIO_10 10 ///< C_GPIO[10] +#define C_GPIO_11 11 ///< C_GPIO[11] +#define C_GPIO_12 12 ///< C_GPIO[12] +#define C_GPIO_13 13 ///< C_GPIO[13] +#define C_GPIO_14 14 ///< C_GPIO[14] +#define C_GPIO_15 15 ///< C_GPIO[15] +#define C_GPIO_16 16 ///< C_GPIO[16] +#define C_GPIO_17 17 ///< C_GPIO[17] +#define C_GPIO_18 18 ///< C_GPIO[18] +#define C_GPIO_19 19 ///< C_GPIO[19] +#define C_GPIO_20 20 ///< C_GPIO[20] +#define C_GPIO_21 21 ///< C_GPIO[21] +#define C_GPIO_22 22 ///< C_GPIO[22] +#define C_GPIO_23 23 ///< C_GPIO[23] +#define C_GPIO_24 24 ///< C_GPIO[24] + + +#define H_GPIO_SHIFT_BASE 32 +#define HSI_GPIO_0 (0 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[0] +#define HSI_GPIO_1 (1 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[1] +#define HSI_GPIO_2 (2 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[2] +#define HSI_GPIO_3 (3 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[3] +#define HSI_GPIO_4 (4 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[4] +#define HSI_GPIO_5 (5 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[5] +#define HSI_GPIO_6 (6 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[6] +#define HSI_GPIO_7 (7 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[7] +#define HSI_GPIO_8 (8 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[8] +#define HSI_GPIO_9 (9 +H_GPIO_SHIFT_BASE) ///< HSI_GPIO[9] +#define HSI_GPIO_10 (10+H_GPIO_SHIFT_BASE) ///< HSI_GPIO[10] +#define HSI_GPIO_11 (11+H_GPIO_SHIFT_BASE) ///< HSI_GPIO[11] + +#define S_GPIO_SHIFT_BASE 64 +#define S_GPIO_0 (0 +S_GPIO_SHIFT_BASE) ///< S_GPIO[0] +#define S_GPIO_1 (1 +S_GPIO_SHIFT_BASE) ///< S_GPIO[1] +#define S_GPIO_2 (2 +S_GPIO_SHIFT_BASE) ///< S_GPIO[2] +#define S_GPIO_3 (3 +S_GPIO_SHIFT_BASE) ///< S_GPIO[3] +#define S_GPIO_4 (4 +S_GPIO_SHIFT_BASE) ///< S_GPIO[4] +#define S_GPIO_5 (5 +S_GPIO_SHIFT_BASE) ///< S_GPIO[5] +#define S_GPIO_6 (6 +S_GPIO_SHIFT_BASE) ///< S_GPIO[6] +#define S_GPIO_7 (7 +S_GPIO_SHIFT_BASE) ///< S_GPIO[7] +#define S_GPIO_8 (8 +S_GPIO_SHIFT_BASE) ///< S_GPIO[8] + + +#define P_GPIO_SHIFT_BASE 96 +#define P_GPIO_0 (0 +P_GPIO_SHIFT_BASE) ///< P_GPIO[0] +#define P_GPIO_1 (1 +P_GPIO_SHIFT_BASE) ///< P_GPIO[1] +#define P_GPIO_2 (2 +P_GPIO_SHIFT_BASE) ///< P_GPIO[2] +#define P_GPIO_3 (3 +P_GPIO_SHIFT_BASE) ///< P_GPIO[3] +#define P_GPIO_4 (4 +P_GPIO_SHIFT_BASE) ///< P_GPIO[4] +#define P_GPIO_5 (5 +P_GPIO_SHIFT_BASE) ///< P_GPIO[5] +#define P_GPIO_6 (6 +P_GPIO_SHIFT_BASE) ///< P_GPIO[6] +#define P_GPIO_7 (7 +P_GPIO_SHIFT_BASE) ///< P_GPIO[7] +#define P_GPIO_8 (8 +P_GPIO_SHIFT_BASE) ///< P_GPIO[8] +#define P_GPIO_9 (9 +P_GPIO_SHIFT_BASE) ///< P_GPIO[9] +#define P_GPIO_10 (10+P_GPIO_SHIFT_BASE) ///< P_GPIO[10] +#define P_GPIO_11 (11+P_GPIO_SHIFT_BASE) ///< P_GPIO[11] +#define P_GPIO_12 (12+P_GPIO_SHIFT_BASE) ///< P_GPIO[12] +#define P_GPIO_13 (13+P_GPIO_SHIFT_BASE) ///< P_GPIO[13] +#define P_GPIO_14 (14+P_GPIO_SHIFT_BASE) ///< P_GPIO[14] +#define P_GPIO_15 (15+P_GPIO_SHIFT_BASE) ///< P_GPIO[15] +#define P_GPIO_16 (16+P_GPIO_SHIFT_BASE) ///< P_GPIO[16] +#define P_GPIO_17 (17+P_GPIO_SHIFT_BASE) ///< P_GPIO[17] +#define P_GPIO_18 (18+P_GPIO_SHIFT_BASE) ///< P_GPIO[18] +#define P_GPIO_19 (19+P_GPIO_SHIFT_BASE) ///< P_GPIO[19] +#define P_GPIO_20 (20+P_GPIO_SHIFT_BASE) ///< P_GPIO[20] +#define P_GPIO_21 (21+P_GPIO_SHIFT_BASE) ///< P_GPIO[21] +#define P_GPIO_22 (22+P_GPIO_SHIFT_BASE) ///< P_GPIO[22] +#define P_GPIO_23 (23+P_GPIO_SHIFT_BASE) ///< P_GPIO[23] +#define P_GPIO_24 (24+P_GPIO_SHIFT_BASE) ///< P_GPIO[24] +#define P_GPIO_25 (25+P_GPIO_SHIFT_BASE) ///< P_GPIO[25] + +#define DSI_GPIO_SHIFT_BASE 128 +#define DSI_GPIO_0 (0 +DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[0] +#define DSI_GPIO_1 (1 +DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[1] +#define DSI_GPIO_2 (2 +DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[2] +#define DSI_GPIO_3 (3 +DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[3] +#define DSI_GPIO_4 (4 +DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[4] +#define DSI_GPIO_5 (5 +DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[5] +#define DSI_GPIO_6 (6 +DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[6] +#define DSI_GPIO_7 (7 +DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[7] +#define DSI_GPIO_8 (8 +DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[8] +#define DSI_GPIO_9 (9 +DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[9] +#define DSI_GPIO_10 (10 +DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[10] + +#define LCD_GPIO_SHIFT_BASE 160 +#define L_GPIO_0 (0 +LCD_GPIO_SHIFT_BASE) ///< L_GPIO[0] +#define L_GPIO_1 (1 +LCD_GPIO_SHIFT_BASE) ///< L_GPIO[1] +#define L_GPIO_2 (2 +LCD_GPIO_SHIFT_BASE) ///< L_GPIO[2] +#define L_GPIO_3 (3 +LCD_GPIO_SHIFT_BASE) ///< L_GPIO[3] +#define L_GPIO_4 (4 +LCD_GPIO_SHIFT_BASE) ///< L_GPIO[4] +#define L_GPIO_5 (5 +LCD_GPIO_SHIFT_BASE) ///< L_GPIO[5] +#define L_GPIO_6 (6 +LCD_GPIO_SHIFT_BASE) ///< L_GPIO[6] +#define L_GPIO_7 (7 +LCD_GPIO_SHIFT_BASE) ///< L_GPIO[7] +#define L_GPIO_8 (8 +LCD_GPIO_SHIFT_BASE) ///< L_GPIO[8] +#define L_GPIO_9 (9 +LCD_GPIO_SHIFT_BASE) ///< L_GPIO[9] + +#define D_GPIO_SHIFT_BASE 192 +#define D_GPIO_0 (0 +D_GPIO_SHIFT_BASE) ///< DGPIO[0] +#define D_GPIO_1 (1 +D_GPIO_SHIFT_BASE) ///< DGPIO[1] +#define D_GPIO_2 (2 +D_GPIO_SHIFT_BASE) ///< DGPIO[2] +#define D_GPIO_3 (3 +D_GPIO_SHIFT_BASE) ///< DGPIO[3] +#define D_GPIO_4 (4 +D_GPIO_SHIFT_BASE) ///< DGPIO[4] +#define D_GPIO_5 (5 +D_GPIO_SHIFT_BASE) ///< DGPIO[5] +#define D_GPIO_6 (6 +D_GPIO_SHIFT_BASE) ///< DGPIO[6] +#define D_GPIO_7 (7 +D_GPIO_SHIFT_BASE) ///< DGPIO[7] + +#define A_GPIO_SHIFT_BASE 224 +#define A_GPIO_0 (0 +A_GPIO_SHIFT_BASE) ///< A_GPIO[0] +#define A_GPIO_1 (1 +A_GPIO_SHIFT_BASE) ///< A_GPIO[1] +#define A_GPIO_2 (2 +A_GPIO_SHIFT_BASE) ///< A_GPIO[2] +#define A_GPIO_3 (3 +A_GPIO_SHIFT_BASE) ///< A_GPIO[3] + +//@} +#if 0 +/*For temporary usage as passing build codes*/ +#define C_GPIO_23 23 +#define C_GPIO_24 24 +#define C_GPIO_25 25 +#define C_GPIO_26 26 +#define C_GPIO_27 27 +#define C_GPIO_28 28 +#define C_GPIO_29 29 +#define C_GPIO_30 30 +#define C_GPIO_31 31 +#define C_GPIO_32 32 +#define C_GPIO_33 33 +#define L_GPIO_30 (30+L_GPIO_SHIFT_BASE) +#define L_GPIO_31 (31+L_GPIO_SHIFT_BASE) +#define L_GPIO_32 (32+L_GPIO_SHIFT_BASE) +#define GPIO_INT_USBPLUGIN (GPIO_INT_39) +#endif +#define L_GPIO_22 (22+LCD_GPIO_SHIFT_BASE) + + + +/** + @name GPIO Interrupt ID + + GPIO interrupt ID definition + + GPIO interrupt ID for interrupt related APIs. +*/ +//@{ +#define GPIO_INT_00 0 ///< GPIO INT[0]: C_GPIO[0] +#define GPIO_INT_01 1 ///< GPIO INT[1]: C_GPIO[1] +#define GPIO_INT_02 2 ///< GPIO INT[2]: C_GPIO[2] +#define GPIO_INT_03 3 ///< GPIO INT[3]: C_GPIO[3] +#define GPIO_INT_04 4 ///< GPIO INT[4]: C_GPIO[4] +#define GPIO_INT_05 5 ///< GPIO INT[5]: C_GPIO[5] +#define GPIO_INT_06 6 ///< GPIO INT[6]: C_GPIO[6] +#define GPIO_INT_07 7 ///< GPIO INT[7]: C_GPIO[7] +#define GPIO_INT_08 8 ///< GPIO INT[8]: C_GPIO[8] +#define GPIO_INT_09 9 ///< GPIO INT[9]: C_GPIO[9] +#define GPIO_INT_10 10 ///< GPIO INT[10]: C_GPIO[10] +#define GPIO_INT_11 11 ///< GPIO INT[11]: C_GPIO[11] +#define GPIO_INT_12 12 ///< GPIO INT[12]: C_GPIO[12] +#define GPIO_INT_13 13 ///< GPIO INT[13]: C_GPIO[13] +#define GPIO_INT_14 14 ///< GPIO INT[14]: C_GPIO[14] +#define GPIO_INT_15 15 ///< GPIO INT[15]: C_GPIO[15] +#define GPIO_INT_16 16 ///< GPIO INT[16]: C_GPIO[16] +#define GPIO_INT_17 17 ///< GPIO INT[17]: C_GPIO[17] +#define GPIO_INT_18 18 ///< GPIO INT[18]: C_GPIO[18] +#define GPIO_INT_19 19 ///< GPIO INT[19]: C_GPIO[19] +#define GPIO_INT_20 20 ///< GPIO INT[20]: C_GPIO[20] +#define GPIO_INT_21 21 ///< GPIO INT[21]: C_GPIO[21] +#define GPIO_INT_22 22 ///< GPIO INT[22]: C_GPIO[22] +#define GPIO_INT_23 23 ///< GPIO INT[23]: C_GPIO[23] +#define GPIO_INT_24 24 ///< GPIO INT[24]: C_GPIO[24] +#define GPIO_INT_25 25 ///< GPIO INT[25]: HSI_GPIO[0] +#define GPIO_INT_26 26 ///< GPIO INT[26]: HSI_GPIO[1] +#define GPIO_INT_27 27 ///< GPIO INT[27]: HSI_GPIO[2] +#define GPIO_INT_28 28 ///< GPIO INT[28]: HSI_GPIO[3] +#define GPIO_INT_29 29 ///< GPIO INT[29]: HSI_GPIO[4] +#define GPIO_INT_30 30 ///< GPIO INT[30]: HSI_GPIO[5] +#define GPIO_INT_31 31 ///< GPIO INT[31]: HSI_GPIO[6] +#define GPIO_INT_32 32 ///< GPIO INT[0]: HSI_GPIO[7] +#define GPIO_INT_33 33 ///< GPIO INT[1]: HSI_GPIO[8] +#define GPIO_INT_34 34 ///< GPIO INT[2]: HSI_GPIO[9] +#define GPIO_INT_35 35 ///< GPIO INT[3]: HSI_GPIO[10] +#define GPIO_INT_36 36 ///< GPIO INT[4]: HSI_GPIO[11] +#define GPIO_INT_37 37 ///< GPIO INT[5]: S_GPIO[0] +#define GPIO_INT_38 38 ///< GPIO INT[6]: S_GPIO[1] +#define GPIO_INT_39 39 ///< GPIO INT[7]: S_GPIO[2] +#define GPIO_INT_40 40 ///< GPIO INT[8]: S_GPIO[3] +#define GPIO_INT_41 41 ///< GPIO INT[9]: S_GPIO[4] +#define GPIO_INT_42 42 ///< GPIO INT[10]: S_GPIO[5] +#define GPIO_INT_43 43 ///< GPIO INT[11]: S_GPIO[6] +#define GPIO_INT_44 44 ///< GPIO INT[12]: S_GPIO[7] +#define GPIO_INT_45 45 ///< GPIO INT[13]: S_GPIO[8] +#define GPIO_INT_46 46 ///< GPIO INT[14]: P_GPIO[0] +#define GPIO_INT_47 47 ///< GPIO INT[15]: P_GPIO[1] +#define GPIO_INT_48 48 ///< GPIO INT[16]: P_GPIO[2] +#define GPIO_INT_49 49 ///< GPIO INT[17]: P_GPIO[3] +#define GPIO_INT_50 50 ///< GPIO INT[18]: P_GPIO[4] +#define GPIO_INT_51 51 ///< GPIO INT[19]: P_GPIO[5] +#define GPIO_INT_52 52 ///< GPIO INT[20]: P_GPIO[6] +#define GPIO_INT_53 53 ///< GPIO INT[21]: P_GPIO[7] +#define GPIO_INT_54 54 ///< GPIO INT[22]: P_GPIO[8] +#define GPIO_INT_55 55 ///< GPIO INT[23]: P_GPIO[9] +#define GPIO_INT_56 56 ///< GPIO INT[24]: P_GPIO[10] +#define GPIO_INT_57 57 ///< GPIO INT[25]: P_GPIO[11] +#define GPIO_INT_58 58 ///< GPIO INT[26]: P_GPIO[12] +#define GPIO_INT_59 59 ///< GPIO INT[27]: P_GPIO[13] +#define GPIO_INT_60 60 ///< GPIO INT[28]: P_GPIO[14] +#define GPIO_INT_61 61 ///< GPIO INT[29]: P_GPIO[15] +#define GPIO_INT_62 62 ///< GPIO INT[30]: P_GPIO[16] +#define GPIO_INT_63 63 ///< GPIO INT[31]: P_GPIO[17] +#define GPIO_INT_64 64 ///< GPIO INT[0]: P_GPIO[18] +#define GPIO_INT_65 65 ///< GPIO INT[1]: P_GPIO[19] +#define GPIO_INT_66 66 ///< GPIO INT[2]: P_GPIO[20] +#define GPIO_INT_67 67 ///< GPIO INT[3]: P_GPIO[21] +#define GPIO_INT_68 68 ///< GPIO INT[4]: P_GPIO[22] +#define GPIO_INT_69 69 ///< GPIO INT[5]: P_GPIO[23] +#define GPIO_INT_70 70 ///< GPIO INT[6]: P_GPIO[24] +#define GPIO_INT_71 71 ///< GPIO INT[7]: dummy +#define GPIO_INT_72 72 ///< GPIO INT[8]: DSI_GPIO[0] +#define GPIO_INT_73 73 ///< GPIO INT[9]: DSI_GPIO[1] +#define GPIO_INT_74 74 ///< GPIO INT[10]: DSI_GPIO[2] +#define GPIO_INT_75 75 ///< GPIO INT[11]: DSI_GPIO[3] +#define GPIO_INT_76 76 ///< GPIO INT[12]: DSI_GPIO[4] +#define GPIO_INT_77 77 ///< GPIO INT[13]: DSI_GPIO[5] +#define GPIO_INT_78 78 ///< GPIO INT[14]: DSI_GPIO[6] +#define GPIO_INT_79 79 ///< GPIO INT[15]: DSI_GPIO[7] +#define GPIO_INT_80 80 ///< GPIO INT[16]: DSI_GPIO[8] +#define GPIO_INT_81 81 ///< GPIO INT[17]: DSI_GPIO[9] +#define GPIO_INT_82 82 ///< GPIO INT[18]: DSI_GPIO[10] +#define GPIO_INT_83 83 ///< GPIO INT[19]: L_GPIO[0] +#define GPIO_INT_84 84 ///< GPIO INT[20]: L_GPIO[1] +#define GPIO_INT_85 85 ///< GPIO INT[21]: L_GPIO[2] +#define GPIO_INT_86 86 ///< GPIO INT[22]: L_GPIO[3] +#define GPIO_INT_87 87 ///< GPIO INT[23]: L_GPIO[4] +#define GPIO_INT_88 88 ///< GPIO INT[24]: L_GPIO[5] +#define GPIO_INT_89 89 ///< GPIO INT[25]: L_GPIO[6] +#define GPIO_INT_90 90 ///< GPIO INT[26]: L_GPIO[7] +#define GPIO_INT_91 91 ///< GPIO INT[27]: L_GPIO[8] +#define GPIO_INT_92 92 ///< GPIO INT[28]: L_GPIO[9] +#define GPIO_INT_93 93 ///< GPIO INT[29]: D_GPIO[0] +#define GPIO_INT_94 94 ///< GPIO INT[30]: D_GPIO[1] +#define GPIO_INT_95 95 ///< GPIO INT[31]: D_GPIO[2] +#define GPIO_INT_96 96 ///< GPIO INT[0]: D_GPIO[3] +#define GPIO_INT_97 97 ///< GPIO INT[1]: D_GPIO[4] +#define GPIO_INT_98 98 ///< GPIO INT[2]: D_GPIO[5] +#define GPIO_INT_99 99 ///< GPIO INT[3]: D_GPIO[6] +#define GPIO_INT_100 100 ///< GPIO INT[4]: D_GPIO[7] +#define GPIO_INT_101 101 ///< GPIO INT[5]: A_GPIO[0] +#define GPIO_INT_102 102 ///< GPIO INT[6]: A_GPIO[1] +#define GPIO_INT_103 103 ///< GPIO INT[7]: A_GPIO[2] +#define GPIO_INT_104 104 ///< GPIO INT[8]: A_GPIO[3] +#define GPIO_INT_105 105 ///< internal gpio 0 +#define GPIO_INT_106 106 ///< internal gpio 1 +#define GPIO_INT_107 107 ///< internal gpio 2 +#define GPIO_INT_108 108 ///< internal gpio 3 +#define GPIO_INT_109 109 ///< internal gpio 4 +#define GPIO_INT_110 110 ///< internal gpio 5 +#define GPIO_INT_USBWAKEUP 111 ///< USB wakeup +#define GPIO_INT_USBPLUGIN (GPIO_INT_USBWAKEUP) +#define GPIO_INT_SWTRIG GPIO_INT_110 +//@} + +// In order to backward comaptible, DGPIO is used as " GPIO_IS_DGPIO | D_GPIO_* " or "D_GPIO_*" +#define GPIO_IS_DGPIO (128) + + +// +// The general api for the GPIO device driver +// +extern void gpio_setDir(UINT32 pin, UINT32 dir); +extern UINT32 gpio_getDir(UINT32 pin); +extern void gpio_setPin(UINT32 pin); +extern void gpio_clearPin(UINT32 pin); +extern UINT32 gpio_getPin(UINT32 pin); +extern void gpio_pullSet(UINT32 pin); +extern void gpio_pullClear(UINT32 pin); +extern UINT32 gpio_readData(UINT32 dataidx); +extern void gpio_writeData(UINT32 dataidx, UINT32 value); +//extern UINT32 gpio_readDir(UINT32 dataidx); +//extern void gpio_writeDir(UINT32 dataidx, UINT32 value); +extern UINT32 dgpio_readData(void); +extern void dgpio_writeData(UINT32 value); +extern UINT32 top_get_bs(void); +//extern UINT32 dgpio_readDir(void); +//extern void dgpio_writeDir(UINT32 value); +//@} +#endif + diff --git a/board/novatek/ns02501/loader/Include/Driver/Memory.h b/board/novatek/ns02501/loader/Include/Driver/Memory.h new file mode 100755 index 000000000000..d8917e33ff9a --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/Memory.h @@ -0,0 +1,470 @@ +# ifndef _MEMORY_520_H +# define _MEMORY_520_H + +#ifndef __ASSEMBLY__ + COMMENT /* Memory Map */ /* # define BOOT_ROM_RAM_BASE_ADDR 0x20000000*/ +#endif + + +# define DRAM_BASE_ADDR (0x00000000) +# define DRAM_EXP_BASE_ADDR (DRAM_BASE_ADDR + 0x180) +# define DRAM_INT_BASE_ADDR (DRAM_BASE_ADDR + 0x200) + +# define StackSize_KNL 0x1000 /* 4KB */ +# define StackSize_INT 0x400 /* 1KB */ + +# define FAT_HEAP_BUFFER_SIZE 0xA0000//0x1E0000 //0x1E8000 +# define EXFAT_BITMAP_BUFFER_SIZE 0x20000 //0x18000 +# define LOADER_TMP_BUFFER_SIZE 0x80000 + +# define BOOT_ROM_SP_LIMIT_ADDR 0xF07D3000 +# define BOOT_ROM_SP_LIMIT_ADDR2 0xF07D4000 +# define BOOT_ROM_RAM_TEMP_ADDR 0xF0800200 +# define BOOT_ROM_CFG_TEMP_ADDR 0xF0800248 +# define BOOT_ROM_RAM_BASE_ADDR 0x00000000 +# define CC_CTRL_REG_BASE_ADDR 0xF0090000 +# define DMA2_CTRL_REG_BASE_ADDR 0xF0100000 +# define DMA2_PHY_REG_BASE_ADDR 0xF0101000 +# define GZIP_REG_BASE_ADDR 0xF0100000 +# define PR8051_REG_BASE_ADDR 0xF0100000 +# define USB_OTG_REG_BASE_ADDR 0//0xF0600000 +# define DDR_CTRL_REG_BASE_ADDR 0xF0000000 /* DDR phy base address */ +# define DDR_PHY_REG_BASE_ADDR 0xF0001000 +# define DDR_ARB_REG_BASE_ADDR 0xF0008000 +# define DMA2_ARB_REG_BASE_ADDR 0xF0108000 +# define CFE_REG_BASE_ADDR 0xF00D0000 + +# define CLOCK_GEN_REG_BASE_ADDR 0xF0020000 +# define PMU_REG_BASE_ADDR 0xF0024000 +# define TOP_CTRL_REG_BASE_ADDR 0xF0010000 +# define PAD_CTRL_REG_BASE_ADDR 0xF0030000 +# define GPIO_CTRL_REG_BASE_ADDR 0xF0070000 +# define PMC_REG_BASE 0xF00A0000 + +# define TRNG_REG_BASE_ADDR 0xF0680000 + +# define CPU_REG_BASE_ADDR 0xF0FF0000 + +# define UART0_REG_BASE_ADDR 0xF0290000 +// Real board is UART2 +# define UART2_REG_BASE_ADDR 0xF0300000 +# define SM_HOST_REG_BASE_ADDR 0xF0400000 +# define MS_HOST_REG_BASE_ADDR 0xF0410000 +# define SD_HOST1_REG_BASE_ADDR 0xF0420000 +# define SD_HOST2_REG_BASE_ADDR 0xF0500000 +# define SD_HOST3_REG_BASE_ADDR 0xF0510000 +# define SPI_CTRL_REG_BASE_ADDR 0xF0230000 +# define ETH_CTRL_REG_BASE_ADDR 0xF02B0000 +# define EFUSE_CTRL_REG_BASE_ADDR 0xF0660000 +# define TIMER_REG_BASE_ADDR 0xF0040000 +# define HRTIMER_REG_BASE_ADDR 0xF00C0000 +# define WDT_REG_BASE_ADDR 0xF0050000 +# define IPE_SRAM_BASE_ADDR 0xF0700000 +# define IPE_SRAM_BASE_SIZE 0x00020000 +# define YDCC_SRAM_BASE_ADDR 0x40000000 +# define BOOT_LOADER_TMP_BUFFER 0x00001000 +# define CHIP_REMAP_REG_OFFSET 0x00000088 +# define CPE_RTC_BASE 0xF0060000 /* RTC controller */ +# define CPE_GPIO_BASE 0xF0070000 /* GPIO controller */ +# define INTERRUPT_BASE_ADDR 0xF0080000 /* Interrupt controller */ +# define CC_BASE_ADDR 0xF0090000 /* CC controller */ +# define IOADDR_GIC_REG_BASE 0xFFD00000 /* GIC Interrupt */ +# define configARM_TIMER_BASEADDR 0xFFD00200 +# define ARM_TIMER_LOAD_OFFSET 0x00 /**< Timer Load Register */ + + +# define BOOT_ROM_RAM_TEMP_ADDR2 0xF07E8000 //Eth +# define PAD_REG_BASE 0xF0030000 +# define L2_MEM_BASE 0xFFE00000 +# define IOADDR_HVYLOAD_REG_BASE 0xF0008000 + +# define CC_CPU2_CPU1_CMDBUF_REG1 0xF0090100 //CC_CPU2_CPU1_CMDBUF_REG1 to store uboot starting address +# define CC_CPU2_CPU1_CMDBUF_REG2 0xF0090104 //CC_CPU2_CPU1_CMDBUF_REG1 has used in core2_entry.s +# define NVT_CORE2_START CC_CPU2_CPU1_CMDBUF_REG2 //core2_entry.S 's entry point + +# define ARM_TIMER_LOAD_OFFSET 0x00 /**< Timer Load Register */ +# define ARM_TIMER_LOAD_OFFSET 0x00 /**< Timer Load Register */ +# define ARM_TIMER_COUNTER_OFFSET 0x04 /**< Timer Counter Register */ +# define ARM_TIMER_CONTROL_OFFSET 0x08 /**< Timer Control Register */ +# define ARM_TIMER_ISR_OFFSET 0x0C /**< Timer Interrupt Status Register */ +# define ARM_TIMER_COUNTER_OFFSET_L 0x00 /**< Timer Counter Register */ +# define ARM_TIMER_COUNTER_OFFSET_H 0x04 /**< Timer Counter Register */ +# define ARM_TIMER_COUNTER_CMP_OFFSET_L 0x10 /**< Timer Counter Register */ +# define ARM_TIMER_COUNTER_CMP_OFFSET_H 0x14 /**< Timer Counter Register */ +# define CYGHWR_HAL_RTC_PRESCALER 1 +# define ARM_TIMER_CONTROL_AUTO_RELOAD_MASK 0x00000002 /**< Auto-reload */ +# define ARM_TIMER_CONTROL_PRESCALER_MASK 0x0000FF00 /**< Prescaler */ +# define ARM_TIMER_CONTROL_PRESCALER_SHIFT 8 +# define ARM_TIMER_CONTROL_IRQ_ENABLE_MASK 0x00000004 /**< Intr enable */ +# define ARM_TIMER_CONTROL_AUTO_RELOAD_MASK 0x00000002 /**< Auto-reload */ +# define ARM_TIMER_CONTROL_ENABLE_MASK 0x00000001 /**< Timer enable */ + +#define ARM_TIMER_ISR_EVENT_FLAG_MASK 0x00000001 /**< Event flag */ +#define CRYPTO_REG_BASE_ADDR 0xF0620000 +#define HASH_REG_BASE_ADDR 0xF0670000 +#define RSA_REG_BASE_ADDR 0xF06A0000 +#define ECDSA_REG_BASE_ADDR 0xF06C0000 + +#define CRYPTO_CONFIG_REG (CRYPTO_REG_BASE_ADDR + 0x00) +#define CRYPTO_CONTROL_REG (CRYPTO_REG_BASE_ADDR + 0x04) +#define CRYPTO_OUT_DATA_REG (CRYPTO_REG_BASE_ADDR + 0x08) +#define CRYPTO_STATUS_REG (CRYPTO_REG_BASE_ADDR + 0x0C) + +#define CRYPTO_PIO_INPUT0_REG (CRYPTO_REG_BASE_ADDR + 0x30) +#define CRYPTO_PIO_INPUT1_REG (CRYPTO_REG_BASE_ADDR + 0x34) +#define CRYPTO_PIO_INPUT2_REG (CRYPTO_REG_BASE_ADDR + 0x38) +#define CRYPTO_PIO_INPUT3_REG (CRYPTO_REG_BASE_ADDR + 0x3C) +#define CRYPTO_PIO_OUTPUT0_REG (CRYPTO_REG_BASE_ADDR + 0x40) +#define CRYPTO_PIO_OUTPUT1_REG (CRYPTO_REG_BASE_ADDR + 0x44) +#define CRYPTO_PIO_OUTPUT2_REG (CRYPTO_REG_BASE_ADDR + 0x48) +#define CRYPTO_PIO_OUTPUT3_REG (CRYPTO_REG_BASE_ADDR + 0x4C) + +// Hash +#define HASH_CONFIG_REG (HASH_REG_BASE_ADDR + 0x00) +#define HASH_PADDING_SIZE_REG (HASH_REG_BASE_ADDR + 0x04) +#define HASH_INTEN_REG (HASH_REG_BASE_ADDR + 0x08) +#define HASH_STATUS_REG (HASH_REG_BASE_ADDR + 0x0C) +#define HASH_OUTPUT_DATA1_REG (HASH_REG_BASE_ADDR + 0x70) +#define HASH_INPUT_DATA_REG (HASH_REG_BASE_ADDR + 0x90) +#define HASH_DMA_START_ADDR_REG (HASH_REG_BASE_ADDR + 0x94) +#define HASH_DMA_TX_SIZE_REG (HASH_REG_BASE_ADDR + 0x9C) +//RSA +#define RSA_CONFIG_REG (RSA_REG_BASE_ADDR + 0x00) +#define RSA_CONTROL_REG (RSA_REG_BASE_ADDR + 0x04) +#define RSA_STATUS_REG (RSA_REG_BASE_ADDR + 0x0C) +#define RSA_KEY_N_REG (RSA_REG_BASE_ADDR + 0x10) +#define RSA_KEY_N_ADDR_REG (RSA_REG_BASE_ADDR + 0x14) +#define RSA_KEY_ED_REG (RSA_REG_BASE_ADDR + 0x18) +#define RSA_KEY_ED_ADDR_REG (RSA_REG_BASE_ADDR + 0x1C) +#define RSA_DATA_REG (RSA_REG_BASE_ADDR + 0x20) +#define RSA_DATA_ADDR_REG (RSA_REG_BASE_ADDR + 0x24) +#define RSA_CRC32_DEFAULT_REG_OFS (RSA_REG_BASE_ADDR + 0x30) +#define RSA_CRC32_POLY_REG_OFS (RSA_REG_BASE_ADDR + 0x34) +#define RSA_CRC32_OUTPUT_REG_OFS (RSA_REG_BASE_ADDR + 0x38) + +// Crypto +#define CRYPTO_CONFREG_SWRST (1<<0) +#define CRYPTO_CONFREG_CRYPTO_EN (1<<1) +#define CRYPTO_CONFREG_AES128 (2<<4) +#define CRYPTO_CONFREG_DECRYPT (1<<8) + +#define CRYPTO_PIO_DONE (1<<0) + +// Hash +#define HASH_CONFREG_INITSTATE (1<<20) +#define HASH_CONFREG_SHA256 (1<<4) +#define HASH_CONFREG_ENABLE (1<<1) +#define HASH_CONFREG_DMA_MODE (1<<12) +#define HASH_CONFREG_DMA_PAD_MODE (1<<13) + +//RSA +#define RSA_ENABLE (1<<0) + +#define RSA_KEYWIDTH_256 (0x0<<1) +#define RSA_KEYWIDTH_512 (0x1<<1) +#define RSA_KEYWIDTH_1024 (0x2<<1) +#define RSA_KEYWIDTH_2048 (0x3<<1) +#define RSA_KEYWIDTH_4096 (0x4<<1) + +#define RSA_NORMAL_MODE (0x0<<4) +#define RSA_MODE_CRC_KEY_N (0x1<<4) +#define RSA_MODE_CRC_KEY_ED (0x2<<4) + + +#define RSA_TRANSFER_END (0x1<<0) +#define RSA_BUSY (0x1<<1) + +#define HASH_TRANSFER_END (0x1<<0) + +//ECDSA +#define NVT_ECDSA_TRG_REG_REG (ECDSA_REG_BASE_ADDR + 0x00) ///< ECDSA Trigger Register +#define NVT_ECDSA_STS_REG (ECDSA_REG_BASE_ADDR + 0x04) ///< ECDSA Status Register +#define NVT_ECDSA_INTEN_REG (ECDSA_REG_BASE_ADDR + 0x08) ///< ECDSA Interrupt Enable Register +#define NVT_ECDSA_SIGN_MSG_REG (ECDSA_REG_BASE_ADDR + 0x40) ///< ECDSA Signature MSG (0x6C-0x40) +#define NVT_ECDSA_PRIV_KEY_REG (ECDSA_REG_BASE_ADDR + 0x80) ///< ECDSA Private Key (0xAC-0x80) +#define NVT_ECDSA_VRIFY_S_REG (ECDSA_REG_BASE_ADDR + 0xC0) ///< ECDSA Verify S Value (0xEC-0xC0) +#define NVT_ECDSA_VPKEY_X_REG (ECDSA_REG_BASE_ADDR + 0x100) ///< ECDSA Verify Public Key X (0x12C-0x100) +#define NVT_ECDSA_VPKEY_Y_REG (ECDSA_REG_BASE_ADDR + 0x140) ///< ECDSA Verify Public Key Y (0x16C-0x140) +#define NVT_ECDSA_BASE_X_REG (ECDSA_REG_BASE_ADDR + 0x180) ///< ECC Base X (0x1AC-0x180) +#define NVT_ECDSA_BASE_Y_REG (ECDSA_REG_BASE_ADDR + 0x1C0) ///< ECC Base Y (0x1EC-0x1C0) +#define NVT_ECDSA_SIGN_R_REG (ECDSA_REG_BASE_ADDR + 0x200) ///< ECDSA Signature R Value (0x22C-0x200) +#define NVT_ECDSA_SIGN_S_REG (ECDSA_REG_BASE_ADDR + 0x240) ///< ECDSA Signature S Value (0x26C-0x240) +#define NVT_ECDSA_GPKEY_X_REG (ECDSA_REG_BASE_ADDR + 0x280) ///< ECDSA Generated Public Key X (0x2AC-0x280) +#define NVT_ECDSA_GPKEY_Y_REG (ECDSA_REG_BASE_ADDR + 0x2C0) ///< ECDSA Generated Public Key Y (0x2EC-0x2C0) +#define NVT_ECDSA_A_VALUE_REG (ECDSA_REG_BASE_ADDR + 0x300) ///< ECDSA A_Value (0x32C-0x300) +#define NVT_ECDSA_PRIME_REG (ECDSA_REG_BASE_ADDR + 0x340) ///< ECDSA Prime (0x36C-0x340) +#define NVT_ECDSA_ORDER_REG (ECDSA_REG_BASE_ADDR + 0x380) ///< ECDSA Order (0x3AC-0x380) + + + +#define TOP_CTRL_SRAM_RESET_REG0 (TOP_CTRL_REG_BASE_ADDR + 0x1000) + +//Shut down SRAM SDIO1 mask +#define TOP_SRAM_SD_SDIO1 0x20000000 +//Shut down SRAM RSA mask +#define TOP_SRAM_SD_RSA 0x800 + + +#define reg0_cache_type_ofs 0x004 //reg0_cache_type +#define CACHE_CTRL_REG_OFS 0x100 +#define CACHE_AUX_CTRL_REG_OFS 0x104 + +#define CACHE_TAG_RAM_CTRL_OFS 0x108 +#define CACHE_DATA_RAM_CTRL_OFS 0x10C + + +#define reg2_int_clear_ofs 0x220 //reg2_int_clear +#define reg7_cache_sync 0x730 //reg7_cache_sync +#define reg7_inv_way 0x77C //reg7_inv_way + +#define CACHE_PREFETCH_REG_OFS 0xF60 + +#define L2_REG0_BASE (L2_MEM_BASE + 0x000) /* Cache ID and Cache Type */ +#define L2_REG1_BASE (L2_MEM_BASE + 0x100) /* Control */ +#define L2_REG2_BASE (L2_MEM_BASE + 0X200) /* Interrupt and Counter Control Registers */ +#define L2_REG7_BASE (L2_MEM_BASE + 0x700) /* Cache Maintenance Operations */ +#define L2_REG9_BASE (L2_MEM_BASE + 0x900) /* Cache Lockdown */ +#define L2_REG12_BASE (L2_MEM_BASE + 0xC00) /* Address Filtering */ +#define L2_REG15_BASE (L2_MEM_BASE + 0xF00) /* Debug, Prefetch and Power */ + +/** + * Cache ID and Cache Type + */ +#define L2_REG0_CACHE_ID (*((volatile unsigned long *)(L2_REG0_BASE + 0x00))) +#define L2_REG0_CACHE_TYPE (*((volatile unsigned long *)(L2_REG0_BASE + 0x04))) + +#define S_L2_REG0_CACHE_TYPE_DB (31) +#define M_L2_REG0_CACHE_TYPE_DB (0xf << S_L2_REG0_CACHE_TYPE_DB) +#define S_L2_REG0_CACHE_TYPE_CTYPE (25) +#define M_L2_REG0_CACHE_TYPE_CTYPE (0xf << S_L2_REG0_CACHE_TYPE_CTYPE) +#define S_L2_REG0_CACHE_TYPE_H (24) +#define M_L2_REG0_CACHE_TYPE_H (0x1 << S_L2_REG0_CACHE_TYPE_H) +#define S_L2_REG0_CACHE_TYPE_DWS (20) +#define M_L2_REG0_CACHE_TYPE_DWS (0x7 << S_L2_REG0_CACHE_TYPE_DWS) +#define S_L2_REG0_CACHE_TYPE_DA (18) +#define M_L2_REG0_CACHE_TYPE_DA (0x1 << S_L2_REG0_CACHE_TYPE_DA) +#define S_L2_REG0_CACHE_TYPE_DLS (12) +#define M_L2_REG0_CACHE_TYPE_DLS (0x3 << S_L2_REG0_CACHE_TYPE_DLS) +#define S_L2_REG0_CACHE_TYPE_IWS (8) +#define M_L2_REG0_CACHE_TYPE_IWS (0x7 << S_L2_REG0_CACHE_TYPE_IWS) +#define S_L2_REG0_CACHE_TYPE_IA (6) +#define M_L2_REG0_CACHE_TYPE_IA (0x1 << S_L2_REG0_CACHE_TYPE_IA) +#define S_L2_REG0_CACHE_TYPE_ILS (0) +#define M_L2_REG0_CACHE_TYPE_ILS (0x3 << S_L2_REG0_CACHE_TYPE_ILS) + +#define K_L2_REG0_CACHE_TYPE_DA_16WAY (1) +#define K_L2_REG0_CACHE_TYPE_DA_8WAY (0) + +/** + * Control + */ +#define L2_REG1_CONTROL (*((volatile unsigned long *)(L2_REG1_BASE + 0x00))) +#define L2_REG1_AUX_CTRL (*((volatile unsigned long *)(L2_REG1_BASE + 0x04))) +#define L2_REG1_TAG_RAM_CTRL (*((volatile unsigned long *)(L2_REG1_BASE + 0x08))) +#define L2_REG1_DATA_RAM_CTRL (*((volatile unsigned long *)(L2_REG1_BASE + 0x0C))) + +#define S_L2_REG1_CONTROL_EN (0) +#define M_L2_REG1_CONTROL_EN (0x1 << S_L2_REG1_CONTROL_EN) + +#define K_L2_REG1_CONTROL_EN_ON 1 +#define K_L2_REG1_CONTROL_EN_OFF 0 + +#define S_L2_REG1_AUX_CTRL_BRESP (30) +#define M_L2_REG1_AUX_CTRL_BRESP (0x1 << S_L2_REG1_AUX_CTRL_BRESP) +#define S_L2_REG1_AUX_CTRL_INSTR_PREF (29) +#define M_L2_REG1_AUX_CTRL_INSTR_PREF (0x1 << S_L2_REG1_AUX_CTRL_INSTR_PREF) +#define S_L2_REG1_AUX_CTRL_DATA_PERF (28) +#define M_L2_REG1_AUX_CTRL_DATA_PERF (0x1 << S_L2_REG1_AUX_CTRL_DATA_PERF) +#define S_L2_REG1_AUX_CTRL_NS_INT_CTRL (27) +#define M_L2_REG1_AUX_CTRL_NS_INT_CTRL (0x1 << S_L2_REG1_AUX_CTRL_NS_INT_CTRL) +#define S_L2_REG1_AUX_CTRL_NS_LOCK_EN (26) +#define M_L2_REG1_AUX_CTRL_NS_LOCK_EN (0x1 << S_L2_REG1_AUX_CTRL_NS_LOCK_EN) +#define S_L2_REG1_AUX_CTRL_CACHE_POLICY (25) +#define M_L2_REG1_AUX_CTRL_CACHE_POLICY (0x1 << S_L2_REG1_AUX_CTRL_CACHE_POLICY) +#define S_L2_REG1_AUX_CTRL_FORCE_WA (23) +#define M_L2_REG1_AUX_CTRL_FORCE_WA (0x3 << S_L2_REG1_AUX_CTRL_FORCE_WA) +#define S_L2_REG1_AUX_CTRL_SHARED_OVERRIDE_EN (22) +#define M_L2_REG1_AUX_CTRL_SHARED_OVERRIDE_EN (0x1 << S_L2_REG1_AUX_CTRL_SHARED_OVERRIDE_EN) +#define S_L2_REG1_AUX_CTRL_PARITY_EN (21) +#define M_L2_REG1_AUX_CTRL_PARITY_EN (0x1 << S_L2_REG1_AUX_CTRL_PARITY_EN) +#define S_L2_REG1_AUX_CTRL_EVENT_MON_BUD_EN (20) +#define M_L2_REG1_AUX_CTRL_EVENT_MON_BUD_EN (0x1 << S_L2_REG1_AUX_CTRL_EVENT_MON_BUD_EN) +#define S_L2_REG1_AUX_CTRL_WAT_SIZE (17) +#define M_L2_REG1_AUX_CTRL_WAT_SIZE (0x7 << S_L2_REG1_AUX_CTRL_WAT_SIZE) +#define S_L2_REG1_AUX_CTRL_ASSOCIATIVITY (16) +#define M_L2_REG1_AUX_CTRL_ASSOCIATIVITY (0x1 << S_L2_REG1_AUX_CTRL_ASSOCIATIVITY) +#define S_L2_REG1_AUX_CTRL_SHARED_INV_EN (13) +#define M_L2_REG1_AUX_CTRL_SHARED_INV_EN (0x1 << S_L2_REG1_AUX_CTRL_SHARED_INV_EN) +#define S_L2_REG1_AUX_CTRL_EXCLUSIVE_CACHE_CONF (12) +#define M_L2_REG1_AUX_CTRL_EXCLUSIVE_CACHE_CONF (0x1 << S_L2_REG1_AUX_CTRL_EXCLUSIVE_CACHE_CONF) +#define S_L2_REG1_AUX_CTRL_STORE_BUD_DEV_LIMIT_EN (11) +#define M_L2_REG1_AUX_CTRL_STORE_BUD_DEV_LIMIT_EN (0x1 << S_L2_REG1_AUX_CTRL_STORE_BUD_DEV_LIMIT_EN) +#define S_L2_REG1_AUX_CTRL_HIGH_PRIO_SO_DEV_READS_EN (10) +#define M_L2_REG1_AUX_CTRL_HIGH_PRIO_SO_DEV_READS_EN (0x1 << S_L2_REG1_AUX_CTRL_HIGH_PRIO_SO_DEV_READS_EN) +#define S_L2_REG1_AUX_CTRL_FULL_LINE_Z_EN (0) +#define M_L2_REG1_AUX_CTRL_FULL_LINE_Z_EN (0x1 << S_L2_REG1_AUX_CTRL_FULL_LINE_Z_EN) + +/** + * Interrupt and Counter Control Registers + */ +#define L2_REG2_EV_CNT_CTRL (*((volatile unsigned long *)(L2_REG2_BASE + 0x00))) +#define L2_REG2_EV_CNT1_CFG (*((volatile unsigned long *)(L2_REG2_BASE + 0x04))) +#define L2_REG2_EV_CNT0_CFG (*((volatile unsigned long *)(L2_REG2_BASE + 0x08))) +#define L2_REG2_EV_CNT1 (*((volatile unsigned long *)(L2_REG2_BASE + 0x0C))) +#define L2_REG2_EV_CNT0 (*((volatile unsigned long *)(L2_REG2_BASE + 0x10))) +#define L2_REG2_INT_MASK (*((volatile unsigned long *)(L2_REG2_BASE + 0x14))) +#define L2_REG2_INT_MASK_STATUS (*((volatile unsigned long *)(L2_REG2_BASE + 0x18))) +#define L2_REG2_INT_RAW_STATUS (*((volatile unsigned long *)(L2_REG2_BASE + 0x1C))) +#define L2_REG2_INT_CLEAR (*((volatile unsigned long *)(L2_REG2_BASE + 0x20))) + +#define S_L2_REG2_INT_DECERR (8) +#define M_L2_REG2_INT_DECERR (0x1 << S_L2_REG2_INT_DECERR) /* Decode error */ +#define S_L2_REG2_INT_SLVERR (7) +#define M_L2_REG2_INT_SLVERR (0x1 << S_L2_REG2_INT_SLVERR) /* Slave error */ +#define S_L2_REG2_INT_ERRRD (6) +#define M_L2_REG2_INT_ERRRD (0x1 << S_L2_REG2_INT_ERRRD) /* Data RAM read error */ +#define S_L2_REG2_INT_ERRRT (5) +#define M_L2_REG2_INT_ERRRT (0x1 << S_L2_REG2_INT_ERRRT) /* Tag RAM read error */ +#define S_L2_REG2_INT_ERRWD (4) +#define M_L2_REG2_INT_ERRWD (0x1 << S_L2_REG2_INT_ERRWD) /* Data RAM write error */ +#define S_L2_REG2_INT_ERRWT (3) +#define M_L2_REG2_INT_ERRWT (0x1 << S_L2_REG2_INT_ERRWT) /* Tag RAM write error */ +#define S_L2_REG2_INT_PARRD (2) +#define M_L2_REG2_INT_PARRD (0x1 << S_L2_REG2_INT_PARRD) /* Parity error on data RAM read */ +#define S_L2_REG2_INT_PARRT (1) +#define M_L2_REG2_INT_PARRT (0x1 << S_L2_REG2_INT_PARRT) /* Pariry error on tag RAM read */ +#define S_L2_REG2_INT_ECNTR (0) +#define M_L2_REG2_INT_ECNTR (0x1 << S_L2_REG2_INT_ECNTR) /* Event counter1/0 overflow increment */ + +/** + * Cache Maintenance Operations + */ +#define L2_REG7_CACHE_SYNC (*((volatile unsigned long *)(L2_REG7_BASE + 0x30))) +#define L2_REG7_INV_PA (*((volatile unsigned long *)(L2_REG7_BASE + 0x70))) +#define L2_REG7_INV_WAY (*((volatile unsigned long *)(L2_REG7_BASE + 0x7C))) +#define L2_REG7_CLEAN_PA (*((volatile unsigned long *)(L2_REG7_BASE + 0xB0))) +#define L2_REG7_CLEAN_INDEX (*((volatile unsigned long *)(L2_REG7_BASE + 0xB8))) +#define L2_REG7_CLEAN_WAY (*((volatile unsigned long *)(L2_REG7_BASE + 0xBC))) +#define L2_REG7_CLEAN_INV_PA (*((volatile unsigned long *)(L2_REG7_BASE + 0xF0))) +#define L2_REG7_CLEAN_INV_INDEX (*((volatile unsigned long *)(L2_REG7_BASE + 0xF8))) +#define L2_REG7_CLEAN_INV_WAY (*((volatile unsigned long *)(L2_REG7_BASE + 0xFC))) + + +#define K_L2_REG7_CACHE_SYNC_C (0x1) + +#define K_L2_REG7_INV_WAY_8WAY (0x00ff) +#define K_L2_REG7_INV_WAY_16WAY (0xffff) +#define K_L2_REG7_CLEAN_WAY_8WAY (0x00ff) +#define K_L2_REG7_CLEAN_WAY_16WAY (0xffff) + + +/** + * Cache Lockdown + */ +#define L2_REG9_D_LOCKDOWN0 (*((volatile unsigned long *)(L2_REG9_BASE + 0x00))) +#define L2_REG9_I_LOCKDOWN0 (*((volatile unsigned long *)(L2_REG9_BASE + 0x04))) +#define L2_REG9_D_LOCKDOWN1 (*((volatile unsigned long *)(L2_REG9_BASE + 0x08))) +#define L2_REG9_I_LOCKDOWN1 (*((volatile unsigned long *)(L2_REG9_BASE + 0x0C))) +#define L2_REG9_D_LOCKDOWN2 (*((volatile unsigned long *)(L2_REG9_BASE + 0x10))) +#define L2_REG9_I_LOCKDOWN2 (*((volatile unsigned long *)(L2_REG9_BASE + 0x14))) +#define L2_REG9_D_LOCKDOWN3 (*((volatile unsigned long *)(L2_REG9_BASE + 0x18))) +#define L2_REG9_I_LOCKDOWN3 (*((volatile unsigned long *)(L2_REG9_BASE + 0x1C))) +#define L2_REG9_D_LOCKDOWN4 (*((volatile unsigned long *)(L2_REG9_BASE + 0x20))) +#define L2_REG9_I_LOCKDOWN4 (*((volatile unsigned long *)(L2_REG9_BASE + 0x24))) +#define L2_REG9_D_LOCKDOWN5 (*((volatile unsigned long *)(L2_REG9_BASE + 0x28))) +#define L2_REG9_I_LOCKDOWN5 (*((volatile unsigned long *)(L2_REG9_BASE + 0x2C))) +#define L2_REG9_D_LOCKDOWN6 (*((volatile unsigned long *)(L2_REG9_BASE + 0x30))) +#define L2_REG9_I_LOCKDOWN6 (*((volatile unsigned long *)(L2_REG9_BASE + 0x34))) +#define L2_REG9_D_LOCKDOWN7 (*((volatile unsigned long *)(L2_REG9_BASE + 0x38))) +#define L2_REG9_I_LOCKDOWN7 (*((volatile unsigned long *)(L2_REG9_BASE + 0x3C))) +#define L2_REG9_LOCK_LINE_EN (*((volatile unsigned long *)(L2_REG9_BASE + 0x50))) +#define L2_REG9_UNLOCK_WAY (*((volatile unsigned long *)(L2_REG9_BASE + 0x54))) + +/** + * Address Filtering + */ +#define L2_REG12_ADDR_FILTERING_START (*((volatile unsigned long *)(L2_REG12_BASE + 0x00))) +#define L2_REG12_ADDR_FILTERING_END (*((volatile unsigned long *)(L2_REG12_BASE + 0x04))) + +/** + * Debug, Prefetch and Power + */ +#define L2_REG15_DEBUG_CTRL (*((volatile unsigned long *)(L2_REG15_BASE + 0x40))) +#define L2_REG15_PREF_CTRL (*((volatile unsigned long *)(L2_REG15_BASE + 0x60))) +#define L2_REG15_POWER_CTRL (*((volatile unsigned long *)(L2_REG15_BASE + 0x80))) + +#define S_L2_REG15_DEBUG_CTRL_SPNIDEN (2) +#define M_L2_REG15_DEBUG_CTRL_SPNIDEN (0x1 << S_L2_REG15_DEBUG_CTRL_SPNIDEN) +#define S_L2_REG15_DEBUG_CTRL_DWB (1) +#define M_L2_REG15_DEBUG_CTRL_DWB (0x1 << S_L2_REG15_DEBUG_CTRL_DWB) +#define S_L2_REG15_DEBUG_CTRL_DCL (0) +#define M_L2_REG15_DEBUG_CTRL_DCL (0x1 << S_L2_REG15_DEBUG_CTRL_DCL) + +#define S_L2_REG15_PREF_CTRL_DL_FILL_EN (30) +#define M_L2_REG15_PREF_CTRL_DL_FILL_EN (0x1 << S_L2_REG15_PREF_CTRL_DL_FILL_EN) +#define S_L2_REG15_PREF_CTRL_INST_PREF_EN (29) +#define M_L2_REG15_PREF_CTRL_INST_PREF_EN (0x1 << S_L2_REG15_PREF_CTRL_INST_PREF_EN) +#define S_L2_REG15_PREF_CTRL_DATA_PREF_EN (28) +#define M_L2_REG15_PREF_CTRL_DATA_PREF_EN (0x1 << S_L2_REG15_PREF_CTRL_DATA_PREF_EN) +#define S_L2_REG15_PREF_CTRL_DL_WRAP_READ_DIS (27) +#define M_L2_REG15_PREF_CTRL_DL_WRAP_READ_DIS (0x1 << S_L2_REG15_PREF_CTRL_DL_WRAP_READ_DIS) +#define S_L2_REG15_PREF_CTRL_PREF_DROP_EN (24) +#define M_L2_REG15_PREF_CTRL_PREF_DROP_EN (0x1 << S_L2_REG15_PREF_CTRL_PREF_DROP_EN) +#define S_L2_REG15_PREF_CTRL_INCR_DL_FILL_EN (23) +#define M_L2_REG15_PREF_CTRL_INCR_DL_FILL_EN (0x1 << S_L2_REG15_PREF_CTRL_INCR_DL_FILL_EN) +#define S_L2_REG15_PREF_CTRL_NOT_SAME_ID_EXCLU_SEQ_EN (21) +#define M_L2_REG15_PREF_CTRL_NOT_SAME_ID_EXCLU_SEQ_EN (0x1 << S_L2_REG15_PREF_CTRL_NOT_SAME_ID_EXCLU_SEQ_EN) +#define S_L2_REG15_PREF_CTRL_PREF_OFF (0) +#define M_L2_REG15_PREF_CTRL_PREF_OFF (0xf << S_L2_REG15_PREF_CTRL_PREF_OFF) + +// DDR phy duty configuration register bit +#define DDR_PHY_INCREASE_DUTY 0x40 // P < N +#define DDR_PHY_DECREASE_DUTY 0x00 // P > N +#define DDR_PHY_DUTY_TYPE_MSK 0x40 // bit mask for increase/decrease duty +#define DDR_PHY_CLK_ADJ_EN 0x80 + +// DDR phy duty calibration control register bit +#define DDR_PHY_CLK_OP_ONGOING 0x10 +#define DDR_PHY_CLK_OP_DONE 0x00 +#define DDR_PHY_DQS_OP_ONGOING 0x20 +#define DDR_PHY_DQS_OP_DONE 0x00 + + +# define DDR_PHY_CAL_CLK_ADJ_OFS 0x000 /* 0x00 */ +# define DDR_PHY_CAL_CMD_ADJ_OFS 0x01C /* 0x1C */ +# define DDR_PHY_CAL_CTRL_OFS 0x150 /* 0x54 */ +# define DDR_PHY_CAL_CLK_CFG_OFS 0x154 /* 0x55 */ +# define DDR_PHY_CAL_DQS_CFG_OFS 0x158 /* 0x56 */ +# define DDR_PHY_CAL_DTY_CNT_LB_OFS 0x15C /* 0x57 duty cnt low byte */ +# define DDR_PHY_CAL_DTY_CNT_HB_OFS 0x160 /* 0x58 duty cnt high byte */ +# define DDR_PHY_CAL_DQS0_ADJ_OFS 0x1D0 /* 0x1D0 */ +# define DDR_PHY_CAL_DQ_ADJ_OFS 0x1D4 /* 0x1D0 */ + + +#define BOOT_SOURCE_SPI 0x00 +#define BOOT_SOURCE_CARD 0x01 +#define BOOT_SOURCE_SPI_NAND_2K 0x02 +#define BOOT_SOURCE_SPI_NAND_RS_2K 0x03 +#define BOOT_SOURCE_ETHERNET 0x04 +#define BOOT_SOURCE_USB 0x05 +#define BOOT_SOURCE_SPI_NAND_4K 0x06 +#define BOOT_SOURCE_BMC 0x07 +#define BOOT_SOURCE_EMMC_4BIT 0x08 +#define BOOT_SOURCE_EMMC_8BIT 0x09 +#define BOOT_SOURCE_SPI_NAND_RS_4K 0x0A +#define BOOT_SOURCE_USB_FULL 0x0B + +#define BOOT_SOURCE_MSK 0x0F + + +# define IDENTIFY_ERR 2 +# define MBR_ERR 3 +# define PBR_ERR 4 +# define READ512_ERR 5 +# define READ_ERR 7 +# define HPA_ERR 8 +# define CHECKSUM_ERR 9 +#ifndef __ASSEMBLY__ + END +#endif +# endif diff --git a/board/novatek/ns02501/loader/Include/Driver/cfe.h b/board/novatek/ns02501/loader/Include/Driver/cfe.h new file mode 100755 index 000000000000..6a5826a01ec4 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/cfe.h @@ -0,0 +1,116 @@ +/** + cfe module driver. + + This file is the driver of config engine module. + + @file cfe.h + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2023. All rights reserved. +*/ + +#ifndef _CFE_DEF_ +#define _CFE_DEF_ + +#include "IOReg.h" + +typedef enum { + I2C = 0x10, + I2C2 = 0x11, + I2C3 = 0x12, + SPI = 0x20, + SPI2 = 0x21, + SPI3 = 0x22, + SIF = 0x40, + SIF2 = 0x41, + SIF3 = 0x42, + SIF4 = 0x43, +} AUTO_DESC_INTF; + +typedef enum { + CFE_RUNNING = 0, + CFE_END, + CFE_CMD_NOT_SUP, + CFE_POL_TOUT, + CFE_I2C_NACK, + CFE_DES_ERR, + CFE_NEVER_USED, +} CFE_STATUS; + +/* ------------------------------------------------------------------------------- + * API + * ------------------------------------------------------------------------------- + */ + // code_sram: + // 0 -> config engine sram (2KB) + // other -> set other sram base address, exp: IFE(0xf07c0000) +void cfe_open(UINT32 code_sram); +void cfe_close(void); +void cfe_trig(void); + +// write data to address +void cfe_write_reg(UINT32 address, UINT32 data); + +// read data from address +// write (data | read_data) to address +void cfe_mask_set(UINT32 address, UINT32 data); + +// read data from address +// write ( !(data) & read_data) to address +void cfe_mask_clear(UINT32 address, UINT32 data); + +// delay 1/120M*cycle +void cfe_delay(UINT32 cycle); + +// read data from address +// loop if(read_data & mask) neq 0 +void cfe_mask_poll_0(UINT32 address, UINT32 mask); + +// read data from address +// loop if(read_data | (!mask)) neq 0xffffffff +void cfe_mask_poll_1(UINT32 address, UINT32 mask); + + +void cfe_auto_desc(UINT32 desc_ddress, AUTO_DESC_INTF interface_sel); + +// read address 32bit data to tmp +// tmp: 0~3 +void cfe_read_reg(UINT32 tmp, UINT32 address); + +// tmp = tmp & value +// tmp: 0~3 +void cfe_and(UINT32 tmp, UINT32 value); + +// tmp = tmp | value +// tmp: 0~3 +void cfe_or(UINT32 tmp, UINT32 value); + +// write tmp to address +// tmp: 0~3 +void cfe_write_tmp(UINT32 tmp, UINT32 address); + +// copy register from source to dest +void cfe_copy_reg(UINT32 source, UINT32 dest); + +// Read data from address +// Write (data ^ read_data) to address +void cfe_xor_set(UINT32 address, UINT32 data); + +// wait config engine finish +void cfe_wait_end(void); + +// get status +// 0: still running +// 1: end +// 2: command not support +// 3: polling timeout +// 4: i2c nack +// 5: des err +// 6: not used +CFE_STATUS cfe_get_status(void); + + +//for test +void cfe_test(void); +#endif + diff --git a/board/novatek/ns02501/loader/Include/Driver/crypto.h b/board/novatek/ns02501/loader/Include/Driver/crypto.h new file mode 100755 index 000000000000..e4230a6a7fb0 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/crypto.h @@ -0,0 +1,103 @@ +/** + Header file for CC (Core Communicator) module. + + This file is the header file that define the API and data type + for CC module. + + @file CC.h + @ingroup mIDrvSys_CC + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2015. All rights reserved. +*/ + +#include "constant.h" + +#ifndef _CRYPTO_H +#define _CRYPTO_H + +#define ROM_AES_SIZE (16) +#define ROM_SHA_SIZE (32) // unit: byte +#define ROM_RSA_SIZE (256) // RSA-2048 +#define ROM_RSA_EKEY_SIZE (32) +#define ROM_RSA_CRC32_SIZE (4) +/** + Crypto engine crypto mode +*/ +typedef enum { + CRYPTO_RSV0, + CRYPTO_RSV1, + CRYPTO_AES, ///< Select Crypto mode AES + CRYPTO_MODE_NUM, +} CRYPTO_MODE; + +/** + Crypto engine crypto Operating mode +*/ +typedef enum { + CRYPTO_EBC = 0x00, ///< Select Crypto opmode EBC + CRYPTO_CBC, ///< Select Crypto opmode CBC + CRYPTO_OPMODE_NUM, +} CRYPTO_OPMODE; + +/** + Crypto engine encrypt or decrypt +*/ +typedef enum { + CRYPTO_ENCRYPT = 0x00, ///< Select Crypto engine encrypt + CRYPTO_DECRYPT, ///< Select Crypto engine decrypt + CRYPTO_TYPE_NUM, + +} CRYPTO_TYPE; + +typedef enum { + EFUSE_OTP_1ST_KEY_SET_FIELD = 0x0, // This if for secure boot + EFUSE_OTP_2ND_KEY_SET_FIELD, + EFUSE_OTP_3RD_KEY_SET_FIELD, + EFUSE_OTP_4TH_KEY_SET_FIELD, + + EFUSE_OTP_TOTAL_KEY_SET_FIELD, +} EFUSE_OTP_KEY_SET_FIELD; + +typedef struct _CRYPT_OP { + CRYPTO_OPMODE op_mode; ///< Operation Mode (now support ECB/CBC) + CRYPTO_TYPE en_de_crypt; ///< Encrypt or decrypt (CRYPTO_ENCRYPT or CRYPTO_DECRYPT) + UINT32 src_addr; ///< Source address + UINT32 dst_addr; ///< Destination address + UINT32 length; ///< length + UINT32 iv_init_en; ///< iv init enable + UINT32 iv[4]; //< iv +} CRYPT_OP; + +/** + Crypto engine check +*/ +typedef enum { + SECUREBOOT_SECURE_EN = 0x00, ///< Quary if secure enable or not + SECUREBOOT_DATA_AREA_ENCRYPT, ///< Quary if data area encrypt to cypher text or not + SECUREBOOT_SIGN_RSA, ///< Quary if Signature methed is RSA or not(AES) + SECUREBOOT_SIGN_RSA_CHK, ///< Quary if Signature hash checksum RSA key correct or not + SECUREBOOT_STATUS_NUM, + +} SECUREBOOT_STATUS; + +#define is_secure_enable() quary_secure_boot(SECUREBOOT_SECURE_EN) //For backward compatitable +#define is_data_area_encrypted() quary_secure_boot(SECUREBOOT_DATA_AREA_ENCRYPT) //For backward compatitable +#define is_signature_rsa() quary_secure_boot(SECUREBOOT_SIGN_RSA) //For backward compatitable +#define is_signature_aes() !quary_secure_boot(SECUREBOOT_SIGN_RSA) //For backward compatitable +BOOL quary_secure_boot(SECUREBOOT_STATUS scu_status); +UINT32 crypto_data_operation(EFUSE_OTP_KEY_SET_FIELD key_set, CRYPT_OP crypt_op_param); +void rsa_setConfig(UINT32 mode); +void rsa_setkey_n(UINT8* key, UINT32 len, UINT32 sram_size); +void rsa_setkey_ed(UINT8* key, UINT32 len, UINT32 sram_size); +INT32 rsa_pio_enable(UINT8* data, UINT32 len, UINT32 sram_size); +void rsa_getOutput(UINT8 * Output, UINT32 len, UINT32 sram_size); + +void shahw( const unsigned char *input, int ilen, UINT32 output[8]); +void shahw_dma(const unsigned char *input, int ilen, UINT32 output[8]); +void rsa_decrypt(UINT32 *input ,UINT32 input_len, UINT32 *pRSAN, UINT32 RSAN_len, UINT32 *pRSAED, UINT32 RSAED_len , UINT32 *pShaOut); +BOOL rsa_keycheck(UINT32 *input , BOOL efuseCheck); + +BOOL ecdsa_verify(UINT32 *hash_msg, UINT32 *pub_x, UINT32 *pub_y, UINT32 *sign_r, UINT32 *sign_s); + +#endif diff --git a/board/novatek/ns02501/loader/Include/Driver/kdrv_videoydcc.h b/board/novatek/ns02501/loader/Include/Driver/kdrv_videoydcc.h new file mode 100755 index 000000000000..ea7bf180c0d3 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/kdrv_videoydcc.h @@ -0,0 +1,193 @@ +#ifndef __KDRV_VIDEOYDCC_H__ +#define __KDRV_VIDEOYDCC_H__ + +/* Limit + */ +#define YDCC12_MAX_WIDTH 2880 +#define YDCC12_MAX_HEIGHT 2880 + +#define YDCC8_MAX_WIDTH 640 +#define YDCC8_MAX_HEIGHT 640 + +#define YDCC_ALIGN8(x) ((((x) + 7) >> 3) << 3) +#define YDCC8_DEC_W(x) YDCC_ALIGN8(x) +#define YDCC8_DEC_H(x) YDCC_ALIGN8(x) +#define YDCC8_DEC_RGGB_LOS(x) YDCC_ALIGN8(x) /* 8x */ +#define YDCC8_DEC_Y_WIDTH(x) YDCC_ALIGN8((x)/2) +#define YDCC8_DEC_Y_HEIGHT(x) (YDCC_ALIGN8(x)/2) +#define YDCC8_DEC_Y_LOS(x) YDCC_ALIGN8(YDCC8_DEC_Y_WIDTH(x)) /* frm width/2 and align8 */ + +#define YDCC8_ADDR_SIZE_MASK(x) ((x) & 0x3F) + +#define YDCC12_DEC_W(x) YDCC_ALIGN8(x) +#define YDCC12_DEC_H(x) YDCC_ALIGN8(x) +#define YDCC12_DEC_RGGB_LOS(x) YDCC_ALIGN8(((YDCC12_DEC_W(x) * 3) >> 1)) /* 12bits, final align8 */ +#define YDCC12_DEC_Y_WIDTH(x) YDCC_ALIGN8((x)/2) +#define YDCC12_DEC_Y_HEIGHT(x) (YDCC_ALIGN8(x)/2) +#define YDCC12_DEC_Y_LOS(x) YDCC_ALIGN8(YDCC12_DEC_Y_WIDTH(x)) +#define YDCC12_ADDR_SIZE_MASK(x) ((x) & 0x7F) + +/* no align need */ +#define YDCC12_ENC_W(x) (x) +#define YDCC12_ENC_H(x) (x) + +typedef struct { + unsigned int addr_pa; + unsigned int addr_va; + unsigned int size; +} YDCC_ADDR_INFO; + +typedef enum { + VDOYDCC_SET_INIT = 0, ///< set init info, YDCC_INIT_PARAM. Must be set first. + VDOYDCC_SET_ENC_ADDR, ///< YDCC_ENC_ADDR + VDOYDCC_SET_DEC_ADDR, ///< YDCC_DEC_ADDR + VDOYDCC_SET_ENC_PARAM, ///< set encode parameters, YDCC_ENCODE_PARAM + VDOYDCC_SET_DEC_PARAM, ///< set decode parameters, YDCC_DECODE_PARAM + VDOYDCC_SET_DEC_LOS, ///< set decode line offset. YDCC_DEC_LOS. It is optional. + VDOYDCC_SET_DITH_SEED, ///< for emulation purpose. YDCC_DEC_DITH_SEED + VDOYDCC_SET_SRAM_BUF_INFO, ///< for sram start address and its size. SRAM_BUF_INFO. It is optional. + VDOYDCC_SET_QTBL, ///< for q-table. YDCC_QTBL. used by enc12. + VDOYDCC_SET_GAMMA_TBL, ///< GAMMA_TBL. rggb2mcu(). m0 = (((gamma_tbl[tmp+1] - gamma_tbl[tmp]) * (m0 % 128)) >> 7) + gamma_tbl[tmp]; + VDOYDCC_SET_SIE_FIRE_CB_FUNC, ///< YDCC_CALLBACK_FUNC. used for emulation code that tigger encode followed by sie trigger + VDOYDCC_SET_TIMEOUT_VAL, ///< set timeout value for all encoder/decoder. YDCC_TIMEOUT_VAL + YDOYDCC_SET_AUTOGATING, ///< set auto gating. 1 indicate ON, 0:OFF + YDOYDCC_SET_QP_VALUE, ///< set qp value, from 1 ~ 100, ENC12_QP_VAL + VDOYDCC_GET_WH, ///< get engine type, YDCC_CODEC_ENG + VDOYDCC_GET_DEC_PARAM, ///< get decode param, YDCC_DECODE_PARAM + VDOYDCC_GET_DBG_INFO, ///< get checksum, YDCC_DBG_INFO + VDOYDCC_GET_DEC_LOS, ///< get current line-offset, YDCC_DEC_LOS + VDOYDCC_GET_ENC12_BS_SZ, ///< get encode bs size +} KDRV_VDOYDCC_PARAM_ID; + +typedef enum { + YDCC12_FMT_RGGB = 0, + YDCC12_FMT_GRGB, + YDCC12_FMT_GBRG, + YDCC12_FMT_BGGR, +} YDCC12_FMT; + +typedef enum { + YDCC_DEC_RGGB = 0x1, + YDCC_DEC_Y_ONLY = 0x2, + YDCC_DEC_BOTH = (YDCC_DEC_RGGB | YDCC_DEC_Y_ONLY), +} YDCC_DEC_MODE; + +typedef struct { + unsigned int sram_buf_addr; + unsigned int sram_size; +} SRAM_BUF_INFO; + +typedef struct { + /* source is from SIE */ + YDCC_ADDR_INFO bs_out_addr; ///< Output address of bitstream out (YDCC12 Encode). It is SRAM address. 64 align of enc8/dec8. 128 align for enc12/dec12. +} YDCC_ENC_ADDR; + +typedef struct { + unsigned char bypass_mode; ///< 0: off, 1: enable YDCC12 bypass mode. + unsigned char gamma_correction; ///< 0: disable gamma correction. 1: enable gamma correction + YDCC12_FMT input_fmt; ///< Format of YDCC12 Encode input data +} YDCC_ENCODE_PARAM; + +typedef struct { + unsigned int dec_lofs_rggb; ///< rggb buffer line offset + unsigned int dec_lofs_y; ///< y buffer line offset +} YDCC_DEC_LOS; + +typedef struct { + unsigned short width; ///< 0xC, max:2880 + unsigned short height; +} YDCC_INIT_PARAM; + +typedef struct { + unsigned char qp_val; /* 1 ~ 100 */ +} ENC12_QP_VAL; + +typedef struct { + unsigned int dithering_seed; +} YDCC_DEC_DITH_SEED; + +typedef struct { + unsigned int timeout_value; /* mclk unit */ +} YDCC_TIMEOUT_VAL; + +/* change MSB-5 bits,thus totally 32 entries */ +typedef struct { + unsigned int gm_tbl[16]; /* 11:0 GM_TBL[2N], 23:12 GM_TBL[2N+1], N: 0 ~ 15 */ + unsigned int gm_tbl_16; /* 11:0 GM_TBL[32] */ +} GAMMA_TBL; + +/* don't change order. */ +typedef enum { + YDCC_ENG_ENC12 = 0, /* ydcc encode 12bits */ + YDCC_ENG_MAX, +} YDCC_ENG_TYPE; + +/* VDOYDCC_SET_SIE_FIRE_CB_FUNC */ +typedef struct { + int (*callback)(void *data); + unsigned int usr_data; +} YDCC_CALLBACK_FUNC; + +/*! + * @fn int kdrv_videoydcc_open(unsigned int chip, unsigned int engine) + * @brief open hardware engine + * @param chip the chip id of hardware + * @param engine the engine id YDCC_ENG_TYPE of hardware + * @return return 0 on success, -1 on error + */ +int kdrv_videoydcc_open(unsigned int chip, unsigned int engine); + +/*! + * @fn int kdrv_videoydcc_close(unsigned int chip, unsigned int engine) + * @brief close hardware engine + * @param chip the chip id of hardware + * @param engine the engine id of hardware + * @return return 0 on success, -1 on error + */ +int kdrv_videoydcc_close(unsigned int handle); + +/*! + * @fn int kdrv_videoydcc_get(unsigned int handle, DEC_ID id, void *param) + * @brief set parameters to hardware engine + * @param handler the handler of hardware + * @param id the id of parameters + * @param param the parameters + * @return return 0 on success, -1 on error + */ +int kdrv_videoydcc_get(unsigned int handle, KDRV_VDOYDCC_PARAM_ID parm_id, void *param); + +/*! + * @fn int kdrv_videoydcc_set(KDRV_VDODEC_ID handler, DEC_ID id, void *param) + * @brief get parameters to hardware engine + * @param handler the handler of hardware + * @param id the id of parameters + * @param param the parameters + * @return return 0 on success, -1 on error + */ +int kdrv_videoydcc_set(unsigned int handle, KDRV_VDOYDCC_PARAM_ID parm_id, void *param); + +typedef enum { + YDCC_STS_OK = 0, + YDCC_STS_FAIL = -1, + YDCC_BS_OVERFLOW = -2, + YDCC_BS_VLC_OVERFLOW = -3, + YDCC_BS_OVERSIZE = -4, + YDCC_STS_TIMEOUT = -5, + YDCC_STS_HW_BUSY = -6, + YDCC_STS_NOT_FRAME_DONE = -7, + YDCC_STS_SIE_TRIG_FAIL = -8, + YDCC_OTHERS = -100, +} YDCC_STS; + +/*! + * @fn YDCC_STS kdrv_videoydcc_trigger(KDRV_VDODEC_ID handler) + * @brief trigger hardware engine + * @param handler the handler of hardware + * @param p_enc_info the decode one frame settings + * @param p_cb_func the callback function + * @param user_data the private user data + * @return return 0 on success, -1 on error + */ +YDCC_STS kdrv_videoydcc_trigger(unsigned int handle); + +#endif /* __KDRV_VIDEOYDCC_H__ */ \ No newline at end of file diff --git a/board/novatek/ns02501/loader/Include/Driver/nand.h b/board/novatek/ns02501/loader/Include/Driver/nand.h new file mode 100755 index 000000000000..a4b0801610a7 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/nand.h @@ -0,0 +1,122 @@ +/** + nand module driver. + + This file is the driver of storage module. + + @file nand.h + @ingroup mIDrvStorage + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _NAND_DEF_ +#define _NAND_DEF_ + +#include "IOReg.h" + +#define _SNAND_WINBOND_ID (0xEF) +#define _SNAND_ESMT_ID (0xC8) +#define _SNAND_GD_ID (0xC8) +#define _SNAND_MICRON_ID (0x2C) +#define _SNAND_ATO_ID (0x9B) +#define _SNAND_ETRON_ID (0xD5) +#define _SNAND_MXIC_ID (0xC2) +#define _SNAND_TOSHIBA_ID (0x98) +#define _SNAND_DOSILICON_ID (0xE5) + + + +#define _GD_SPI_NAND_1Gb (0xF1) +#define _MXIC_SPI_NAND_1Gb (0x12) +#define _DOSILICON_NAND_1Gb (0x71) +/** + SPI NAND flash QE(quid enable) identify type + +*/ + +//@{ +typedef enum { + SPINAND_QE_NONE = 0x0, ///< SPI NAND flash not with QE bit(only by quad command) + SPINAND_QE_FEATURE2_B0H_BIT0_TYPE1, ///< SPI NAND flash QE bit locate at feature field(0xB0H) bit[0] +} SPINAND_QE_TYPE; + + +/** + SPI NAND flash twp plane identify type + +*/ +//@{ +typedef enum { + SPINAND_2_PLANE_NONE = 0x0, ///< SPI NAND flash not 2 plane type + SPINAND_2_PLANE_COLUMN_ADDR_BIT_12_AS_PLANE_SEL,///< SPI NAND flash use column addr bit[12] as plane select +} SPINAND_PLANE_TYPE; + + + +/** + SPI flash identification structure + + @note For SPIFLASH_IDENTIFY_CB +*/ +typedef struct { + UINT32 pagesize; + UINT32 erasesize; + UINT32 qe_opt; + UINT32 plane_opt; +} SPINAND_IDENTIFY, *PSPINAND_IDENTIFY; + +/** + SPIFLASH identify callback + + Callback routine to be invoked after JEDEC ID is read from spi flash. + Callback routine should check if read ID is supported. + + @note STRG_EXT_CMD_SPI_IDENTIFY_CB + + @param[in] first parameter (JEDEC) manufacturer ID read from spi flash + @param[in] second parameter (JEDEC) type ID read from spi flash + @param[in] third parameter (JEDEC) capacity ID read from spi flash + @param[out] forth parameter flash identification returned to spi flash driver + + @return + - @b TRUE: call back will handle identification of this flash. and PSPI_IDENTIFY will fill identifed information + - @b FALSE: input ID is NOT supported/identified by call back +*/ +typedef BOOL (*SPINAND_IDENTIFY_CB)(UINT32, UINT32, UINT32, PSPINAND_IDENTIFY); + + + + +/** + * struct nand_flash_dev - NAND Flash Device ID Structure + * @mfr_id: manufecturer ID part of the full chip ID array (refers the same + * memory address as @id[0]) + * @dev_id: the device ID (the second byte of the full chip ID array) + * @pagesize: size of the NAND page in bytes; if 0, then the real page size (as + * well as the eraseblock size) is determined from the extended NAND + * chip ID array) + * @erasesize: NAND block size + * @qe_opt: Quad enable type(please reference document to select this option) + * @plane_opt: 2 plane nand option(please reference document to select this option) + * @options: stores various chip bit options + * + */ +typedef struct _nand_flash_dev { + UINT32 mfr_id; + UINT32 dev_id; + UINT32 third_id; + UINT32 pagesize; + UINT32 erasesize; + UINT32 qe_opt; + UINT32 plane_opt; +} NAND_FLASH_DEV, *PNAND_FLASH_DEV; + +#define SPI_ID_NAND(mfrid, devid, third, pagesz, erasesz, opts, plane_opt_type)\ + { .mfr_id =(mfrid), .dev_id = (devid), .third_id = (third), .pagesize = (pagesz), \ + .erasesize = (erasesz), .qe_opt = (opts), .plane_opt=(plane_opt_type) } + +extern BOOL nand_identify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiThirdID, PSPINAND_IDENTIFY pIdentify); + +#endif + diff --git a/board/novatek/ns02501/loader/Include/Driver/nor.h b/board/novatek/ns02501/loader/Include/Driver/nor.h new file mode 100755 index 000000000000..b3d72eaf5774 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/nor.h @@ -0,0 +1,50 @@ +/** + nand module driver. + + This file is the driver of storage module. + + @file nand.h + @ingroup mIDrvStorage + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _NOR_DEF_ +#define _NOR_DEF_ + +#include "IOReg.h" +#include "StorageDef.h" + + +/** + * struct nand_flash_dev - NAND Flash Device ID Structure + * @name: a human-readable name of the NAND chip + * @dev_id: the device ID (the second byte of the full chip ID array) + * @mfr_id: manufecturer ID part of the full chip ID array (refers the same + * memory address as @id[0]) + * @dev_id: device ID part of the full chip ID array (refers the same memory + * address as @id[1]) + * @pagesize: size of the NAND page in bytes; if 0, then the real page size (as + * well as the eraseblock size) is determined from the extended NAND + * chip ID array) + * @chipsize: total chip size in MiB + * @erasesize: eraseblock size in bytes (determined from the extended ID if 0) + * @options: stores various chip bit options + * + */ +typedef struct _nor_flash_dev { + UINT32 mfr_id; + UINT32 dev_id; + UINT32 capacity_id; + UINT32 uiFlashSize; + UINT32 uiBusWidth; +} NOR_FLASH_DEV, *PNOR_FLASH_DEV; + +#define SPI_ID_NOR(mfrid, devid, capacityid, flash_size, bus_width)\ + { .mfr_id =(mfrid), .dev_id = (devid), .capacity_id =(capacityid), \ + .uiFlashSize=(flash_size), .uiBusWidth=(bus_width) } + + +extern BOOL nor_identify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacityID, PSPI_IDENTIFY pIdentify); +#endif diff --git a/board/novatek/ns02501/loader/Include/Driver/pad.h b/board/novatek/ns02501/loader/Include/Driver/pad.h new file mode 100755 index 000000000000..c7c9e296191f --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/pad.h @@ -0,0 +1,898 @@ +/** + PAD controller header + + PAD controller header + + @file pad.h + @ingroup mIHALSysPAD + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _PAD_H +#define _PAD_H + +//#include "Type.h" +#include "constant.h" + + + +/** \addtogroup mIHALSysPAD */ +//@{ + +// Macro to generate dummy element for enum type to expand enum size to word (4 bytes) +#define ENUM_DUMMY4WORD(name) E_##name = 0x10000000 + +#if 0 +/** + Pad type select + + Pad type select + + Pad type value for pad_setPullUpDown(). +*/ +typedef enum +{ + PAD_NONE = 0x00, ///< none of pull up/down + PAD_PULLDOWN = 0x01, ///< pull down + PAD_PULLUP = 0x02, ///< pull up + PAD_KEEPER = 0x03, ///< keeper + + ENUM_DUMMY4WORD(PAD_PULL) +} PAD_PULL; + +/** + Pad driving select + + Pad driving select + + Pad driving value for pad_setDrivingSink(). +*/ +typedef enum { + PAD_DRIVINGSINK_2P5MA = 0x01, ///< for backward compatible + PAD_DRIVINGSINK_5MA = 0x02, ///< Pad driver/sink 5mA + PAD_DRIVINGSINK_7P5MA = 0x04, ///< for backward compatible + PAD_DRIVINGSINK_10MA = 0x08, ///< Pad driver/sink 10mA + + PAD_DRIVINGSINK_12P5MA = 0x10, ///< for backward compatible + PAD_DRIVINGSINK_15MA = 0x20, ///< Pad driver/sink 15mA + PAD_DRIVINGSINK_17P5MA = 0x40, ///< for backward compatible + PAD_DRIVINGSINK_20MA = 0x80, ///< Pad driver/sink 20mA + PAD_DRIVINGSINK_25MA = 0x100, ///< Pad driver/sink 25mA + PAD_DRIVINGSINK_30MA = 0x200, ///< Pad driver/sink 30mA + PAD_DRIVINGSINK_35MA = 0x400, ///< Pad driver/sink 35mA + PAD_DRIVINGSINK_40MA = 0x800, ///< Pad driver/sink 40mA + PAD_DRIVINGSINK_4MA = 0x1000, ///< PAD driver/sink 4mA + PAD_DRIVINGSINK_6MA = 0x2000, ///< PAD driver/sink 6mA + PAD_DRIVINGSINK_8MA = 0x4000, ///< PAD driver/sink 8mA + PAD_DRIVINGSINK_16MA = 0x8000, ///< PAD driver/sink 16mA + + ENUM_DUMMY4WORD(PAD_DRIVINGSINK) +} PAD_DRIVINGSINK; + +/** + @name Pad type pin ID. + + Pad type pin ID. + + Pad ID of pad_setPullUpDown(). +*/ +#define PAD_PIN_NOT_EXIST (15) // For backward compatible +//@{ +//CGPIOx group begin +#define PAD_PIN_CGPIO_BASE 0 +#define PAD_PIN_CGPIO0 (PAD_PIN_CGPIO_BASE + 0) ///< CGPIO0 +#define PAD_PIN_CGPIO1 (PAD_PIN_CGPIO_BASE + 1) ///< CGPIO1 +#define PAD_PIN_CGPIO2 (PAD_PIN_CGPIO_BASE + 2) ///< CGPIO2 +#define PAD_PIN_CGPIO3 (PAD_PIN_CGPIO_BASE + 3) ///< CGPIO3 +#define PAD_PIN_CGPIO4 (PAD_PIN_CGPIO_BASE + 4) ///< CGPIO4 +#define PAD_PIN_CGPIO5 (PAD_PIN_CGPIO_BASE + 5) ///< CGPIO5 +#define PAD_PIN_CGPIO6 (PAD_PIN_CGPIO_BASE + 6) ///< CGPIO6 +#define PAD_PIN_CGPIO7 (PAD_PIN_CGPIO_BASE + 7) ///< CGPIO7 +#define PAD_PIN_CGPIO8 (PAD_PIN_CGPIO_BASE + 8) ///< CGPIO8 +#define PAD_PIN_CGPIO9 (PAD_PIN_CGPIO_BASE + 9) ///< CGPIO9 +#define PAD_PIN_CGPIO10 (PAD_PIN_CGPIO_BASE + 10) ///< CGPIO10 +#define PAD_PIN_CGPIO11 (PAD_PIN_CGPIO_BASE + 11) ///< CGPIO11 +#define PAD_PIN_CGPIO12 (PAD_PIN_CGPIO_BASE + 12) ///< CGPIO12 +#define PAD_PIN_CGPIO13 (PAD_PIN_CGPIO_BASE + 13) ///< CGPIO13 +#define PAD_PIN_CGPIO14 (PAD_PIN_CGPIO_BASE + 14) ///< CGPIO14 +#define PAD_PIN_CGPIO15 (PAD_PIN_CGPIO_BASE + 15) ///< CGPIO15 + +#define PAD_PIN_CGPIO16 (PAD_PIN_CGPIO_BASE + 16) ///< CGPIO16 +#define PAD_PIN_CGPIO17 (PAD_PIN_CGPIO_BASE + 17) ///< CGPIO17 +#define PAD_PIN_CGPIO18 (PAD_PIN_CGPIO_BASE + 18) ///< CGPIO18 +#define PAD_PIN_CGPIO19 (PAD_PIN_CGPIO_BASE + 19) ///< CGPIO19 +#define PAD_PIN_CGPIO20 (PAD_PIN_CGPIO_BASE + 20) ///< CGPIO20 +#define PAD_PIN_CGPIO21 (PAD_PIN_CGPIO_BASE + 21) ///< CGPIO21 +#define PAD_PIN_CGPIO22 (PAD_PIN_CGPIO_BASE + 22) ///< CGPIO22 +#define PAD_PIN_CGPIO23 (PAD_PIN_CGPIO_BASE + 23) ///< CGPIO23 +#define PAD_PIN_CGPIO24 (PAD_PIN_CGPIO_BASE + 24) ///< CGPIO24 +#define PAD_PIN_CGPIO25 (PAD_PIN_CGPIO_BASE + 25) ///< CGPIO25 +#define PAD_PIN_CGPIO26 (PAD_PIN_CGPIO_BASE + 26) ///< CGPIO26 +#define PAD_PIN_CGPIO27 (PAD_PIN_CGPIO_BASE + 27) ///< CGPIO27 +#define PAD_PIN_CGPIO28 (PAD_PIN_CGPIO_BASE + 28) ///< CGPIO28 +#define PAD_PIN_CGPIO29 (PAD_PIN_CGPIO_BASE + 29) ///< CGPIO29 +#define PAD_PIN_CGPIO30 (PAD_PIN_CGPIO_BASE + 30) ///< CGPIO30 +#define PAD_PIN_CGPIO31 (PAD_PIN_CGPIO_BASE + 31) ///< CGPIO31 + +#define PAD_PIN_CGPIO32 (PAD_PIN_CGPIO_BASE + 32) ///< CGPIO32 +#define PAD_PIN_CGPIO33 (PAD_PIN_CGPIO_BASE + 33) ///< CGPIO33 +//CGPIOx group end + +//SGPIOx group begin +#define PAD_PIN_SGPIO_BASE 100 +#define PAD_PIN_SGPIO0 (PAD_PIN_SGPIO_BASE + 0) ///< SGPIO0 +#define PAD_PIN_SGPIO1 (PAD_PIN_SGPIO_BASE + 1) ///< SGPIO1 +#define PAD_PIN_SGPIO2 (PAD_PIN_SGPIO_BASE + 2) ///< SGPIO2 +#define PAD_PIN_SGPIO3 (PAD_PIN_SGPIO_BASE + 3) ///< SGPIO3 +#define PAD_PIN_SGPIO4 (PAD_PIN_SGPIO_BASE + 4) ///< SGPIO4 +#define PAD_PIN_SGPIO5 (PAD_PIN_SGPIO_BASE + 5) ///< SGPIO5 +#define PAD_PIN_SGPIO6 (PAD_PIN_SGPIO_BASE + 6) ///< SGPIO6 +#define PAD_PIN_SGPIO7 (PAD_PIN_SGPIO_BASE + 7) ///< SGPIO7 +#define PAD_PIN_SGPIO8 (PAD_PIN_SGPIO_BASE + 8) ///< SGPIO8 +#define PAD_PIN_SGPIO9 (PAD_PIN_SGPIO_BASE + 9) ///< SGPIO9 +#define PAD_PIN_SGPIO10 (PAD_PIN_SGPIO_BASE + 10) ///< SGPIO10 +#define PAD_PIN_SGPIO11 (PAD_PIN_SGPIO_BASE + 11) ///< SGPIO11 +//SGPIOx group end + +//PGPIOx group begin +#define PAD_PIN_PGPIO_BASE 150 +#define PAD_PIN_PGPIO0 (PAD_PIN_PGPIO_BASE + 0) ///< PGPIO0 +#define PAD_PIN_PGPIO1 (PAD_PIN_PGPIO_BASE + 1) ///< PGPIO1 +#define PAD_PIN_PGPIO2 (PAD_PIN_PGPIO_BASE + 2) ///< PGPIO2 +#define PAD_PIN_PGPIO3 (PAD_PIN_PGPIO_BASE + 3) ///< PGPIO3 +#define PAD_PIN_PGPIO4 (PAD_PIN_PGPIO_BASE + 4) ///< PGPIO4 +#define PAD_PIN_PGPIO5 (PAD_PIN_PGPIO_BASE + 5) ///< PGPIO5 +#define PAD_PIN_PGPIO6 (PAD_PIN_PGPIO_BASE + 6) ///< PGPIO6 +#define PAD_PIN_PGPIO7 (PAD_PIN_PGPIO_BASE + 7) ///< PGPIO7 +#define PAD_PIN_PGPIO8 (PAD_PIN_PGPIO_BASE + 8) ///< PGPIO8 +#define PAD_PIN_PGPIO9 (PAD_PIN_PGPIO_BASE + 9) ///< PGPIO9 +#define PAD_PIN_PGPIO10 (PAD_PIN_PGPIO_BASE + 10) ///< PGPIO10 +#define PAD_PIN_PGPIO11 (PAD_PIN_PGPIO_BASE + 11) ///< PGPIO11 +#define PAD_PIN_PGPIO12 (PAD_PIN_PGPIO_BASE + 12) ///< PGPIO12 +#define PAD_PIN_PGPIO13 (PAD_PIN_PGPIO_BASE + 13) ///< PGPIO13 +#define PAD_PIN_PGPIO14 (PAD_PIN_PGPIO_BASE + 14) ///< PGPIO14 +#define PAD_PIN_PGPIO15 (PAD_PIN_PGPIO_BASE + 15) ///< PGPIO15 + +#define PAD_PIN_PGPIO16 (PAD_PIN_PGPIO_BASE + 16) ///< PGPIO16 +#define PAD_PIN_PGPIO17 (PAD_PIN_PGPIO_BASE + 17) ///< PGPIO17 +#define PAD_PIN_PGPIO18 (PAD_PIN_PGPIO_BASE + 18) ///< PGPIO18 +#define PAD_PIN_PGPIO19 (PAD_PIN_PGPIO_BASE + 19) ///< PGPIO19 +#define PAD_PIN_PGPIO20 (PAD_PIN_PGPIO_BASE + 20) ///< PGPIO20 +#define PAD_PIN_PGPIO21 (PAD_PIN_PGPIO_BASE + 21) ///< PGPIO21 +#define PAD_PIN_PGPIO22 (PAD_PIN_PGPIO_BASE + 22) ///< PGPIO22 +#define PAD_PIN_PGPIO23 (PAD_PIN_PGPIO_BASE + 23) ///< PGPIO23 +#define PAD_PIN_PGPIO24 (PAD_PIN_PGPIO_BASE + 24) ///< PGPIO24 +#define PAD_PIN_PGPIO25 (PAD_PIN_PGPIO_BASE + 25) ///< PGPIO25 +#define PAD_PIN_PGPIO26 (PAD_PIN_PGPIO_BASE + 26) ///< PGPIO26 +#define PAD_PIN_PGPIO27 (PAD_PIN_PGPIO_BASE + 27) ///< PGPIO27 +#define PAD_PIN_PGPIO28 (PAD_PIN_PGPIO_BASE + 28) ///< PGPIO28 +#define PAD_PIN_PGPIO29 (PAD_PIN_PGPIO_BASE + 29) ///< PGPIO29 +#define PAD_PIN_PGPIO30 (PAD_PIN_PGPIO_BASE + 30) ///< PGPIO30 +#define PAD_PIN_PGPIO31 (PAD_PIN_PGPIO_BASE + 31) ///< PGPIO31 + +#define PAD_PIN_PGPIO32 (PAD_PIN_PGPIO_BASE + 32) ///< PGPIO32 +#define PAD_PIN_PGPIO33 (PAD_PIN_PGPIO_BASE + 33) ///< PGPIO33 +#define PAD_PIN_PGPIO34 (PAD_PIN_PGPIO_BASE + 34) ///< PGPIO34 +#define PAD_PIN_PGPIO35 (PAD_PIN_PGPIO_BASE + 35) ///< PGPIO35 +#define PAD_PIN_PGPIO36 (PAD_PIN_PGPIO_BASE + 36) ///< PGPIO36 +#define PAD_PIN_PGPIO37 (PAD_PIN_PGPIO_BASE + 37) ///< PGPIO37 +#define PAD_PIN_PGPIO38 (PAD_PIN_PGPIO_BASE + 38) ///< PGPIO38 +#define PAD_PIN_PGPIO39 (PAD_PIN_PGPIO_BASE + 39) ///< PGPIO39 +#define PAD_PIN_PGPIO40 (PAD_PIN_PGPIO_BASE + 40) ///< PGPIO40 +#define PAD_PIN_PGPIO41 (PAD_PIN_PGPIO_BASE + 41) ///< PGPIO41 +#define PAD_PIN_PGPIO42 (PAD_PIN_PGPIO_BASE + 42) ///< PGPIO42 +#define PAD_PIN_PGPIO43 (PAD_PIN_PGPIO_BASE + 43) ///< PGPIO43 +#define PAD_PIN_PGPIO44 (PAD_PIN_PGPIO_BASE + 44) ///< PGPIO44 +#define PAD_PIN_PGPIO45 (PAD_PIN_PGPIO_BASE + 45) ///< PGPIO45 +#define PAD_PIN_PGPIO46 (PAD_PIN_PGPIO_BASE + 46) ///< PGPIO46 +#define PAD_PIN_PGPIO47 (PAD_PIN_PGPIO_BASE + 47) ///< PGPIO47 +//PGPIOx group end + + +//LGPIOx group begin +#define PAD_PIN_LGPIO_BASE 250 +#define PAD_PIN_LGPIO0 (PAD_PIN_LGPIO_BASE + 0) ///< LGPIO0 +#define PAD_PIN_LGPIO1 (PAD_PIN_LGPIO_BASE + 1) ///< LGPIO1 +#define PAD_PIN_LGPIO2 (PAD_PIN_LGPIO_BASE + 2) ///< LGPIO2 +#define PAD_PIN_LGPIO3 (PAD_PIN_LGPIO_BASE + 3) ///< LGPIO3 +#define PAD_PIN_LGPIO4 (PAD_PIN_LGPIO_BASE + 4) ///< LGPIO4 +#define PAD_PIN_LGPIO5 (PAD_PIN_LGPIO_BASE + 5) ///< LGPIO5 +#define PAD_PIN_LGPIO6 (PAD_PIN_LGPIO_BASE + 6) ///< LGPIO6 +#define PAD_PIN_LGPIO7 (PAD_PIN_LGPIO_BASE + 7) ///< LGPIO7 +#define PAD_PIN_LGPIO8 (PAD_PIN_LGPIO_BASE + 8) ///< LGPIO8 +#define PAD_PIN_LGPIO9 (PAD_PIN_LGPIO_BASE + 9) ///< LGPIO9 +#define PAD_PIN_LGPIO10 (PAD_PIN_LGPIO_BASE + 10) ///< LGPIO10 +#define PAD_PIN_LGPIO11 (PAD_PIN_LGPIO_BASE + 11) ///< LGPIO11 +#define PAD_PIN_LGPIO12 (PAD_PIN_LGPIO_BASE + 12) ///< LGPIO12 +#define PAD_PIN_LGPIO13 (PAD_PIN_LGPIO_BASE + 13) ///< LGPIO13 +#define PAD_PIN_LGPIO14 (PAD_PIN_LGPIO_BASE + 14) ///< LGPIO14 +#define PAD_PIN_LGPIO15 (PAD_PIN_LGPIO_BASE + 15) ///< LGPIO15 + +#define PAD_PIN_LGPIO16 (PAD_PIN_LGPIO_BASE + 16) ///< LGPIO16 +#define PAD_PIN_LGPIO17 (PAD_PIN_LGPIO_BASE + 17) ///< LGPIO17 +#define PAD_PIN_LGPIO18 (PAD_PIN_LGPIO_BASE + 18) ///< LGPIO18 +#define PAD_PIN_LGPIO19 (PAD_PIN_LGPIO_BASE + 19) ///< LGPIO19 +#define PAD_PIN_LGPIO20 (PAD_PIN_LGPIO_BASE + 20) ///< LGPIO20 +#define PAD_PIN_LGPIO21 (PAD_PIN_LGPIO_BASE + 21) ///< LGPIO21 +#define PAD_PIN_LGPIO22 (PAD_PIN_LGPIO_BASE + 22) ///< LGPIO22 +#define PAD_PIN_LGPIO23 (PAD_PIN_LGPIO_BASE + 23) ///< LGPIO23 +#define PAD_PIN_LGPIO24 (PAD_PIN_LGPIO_BASE + 24) ///< LGPIO24 +#define PAD_PIN_LGPIO25 (PAD_PIN_LGPIO_BASE + 25) ///< LGPIO25 +#define PAD_PIN_LGPIO26 (PAD_PIN_LGPIO_BASE + 26) ///< LGPIO26 +#define PAD_PIN_LGPIO27 (PAD_PIN_LGPIO_BASE + 27) ///< LGPIO27 +#define PAD_PIN_LGPIO28 (PAD_PIN_LGPIO_BASE + 28) ///< LGPIO28 +#define PAD_PIN_LGPIO29 (PAD_PIN_LGPIO_BASE + 29) ///< LGPIO29 +#define PAD_PIN_LGPIO30 (PAD_PIN_LGPIO_BASE + 30) ///< LGPIO30 +#define PAD_PIN_LGPIO31 (PAD_PIN_LGPIO_BASE + 31) ///< LGPIO31 +#define PAD_PIN_LGPIO32 (PAD_PIN_LGPIO_BASE + 32) ///< LGPIO32 +//LGPIOx group end + +//DGPIO group begin +#define PAD_PIN_DGPIO_BASE 300 +#define PAD_PIN_DGPIO0 (PAD_PIN_DGPIO_BASE + 0) ///< DGPIO0 +#define PAD_PIN_DGPIO1 (PAD_PIN_DGPIO_BASE + 1) ///< DGPIO1 +#define PAD_PIN_DGPIO2 (PAD_PIN_DGPIO_BASE + 2) ///< DGPIO2 +#define PAD_PIN_DGPIO3 (PAD_PIN_DGPIO_BASE + 3) ///< DGPIO3 +#define PAD_PIN_DGPIO4 (PAD_PIN_DGPIO_BASE + 4) ///< DGPIO4 +#define PAD_PIN_DGPIO5 (PAD_PIN_DGPIO_BASE + 5) ///< DGPIO5 +#define PAD_PIN_DGPIO6 (PAD_PIN_DGPIO_BASE + 6) ///< DGPIO6 +#define PAD_PIN_DGPIO7 (PAD_PIN_DGPIO_BASE + 7) ///< DGPIO7 +#define PAD_PIN_DGPIO8 (PAD_PIN_DGPIO_BASE + 8) ///< DGPIO8 +#define PAD_PIN_DGPIO9 (PAD_PIN_DGPIO_BASE + 9) ///< DGPIO9 +#define PAD_PIN_DGPIO10 (PAD_PIN_DGPIO_BASE + 10) ///< DGPIO10 +#define PAD_PIN_DGPIO11 (PAD_PIN_DGPIO_BASE + 11) ///< DGPIO11 +#define PAD_PIN_DGPIO12 (PAD_PIN_DGPIO_BASE + 12) ///< DGPIO12 +//DGPIO group end + +//@} + + + +#define PAD_DS_GROUP4_10 0x0000 +#define PAD_DS_GROUP6_16 0x1000 +#define PAD_DS_GROUP8 0x2000 +#define PAD_DS_GROUP16 0x4000 +#define PAD_DS_GROUP5_40 0x8000 + +/** + @name Pad driving pin ID. + + Pad driving pin ID. + + Pad ID of pad_setDrivingSink() +*/ +//@{ +//CGPIO group begin +#define PAD_DS_CGPIO_BASE 0 +#define PAD_DS_CGPIO0 (PAD_DS_CGPIO_BASE + 0) ///< CGPIO0 +#define PAD_DS_CGPIO1 (PAD_DS_CGPIO_BASE + 1) ///< CGPIO1 +#define PAD_DS_CGPIO2 (PAD_DS_CGPIO_BASE + 2) ///< CGPIO2 +#define PAD_DS_CGPIO3 (PAD_DS_CGPIO_BASE + 3) ///< CGPIO3 +#define PAD_DS_CGPIO4 (PAD_DS_CGPIO_BASE + 4) ///< CGPIO4 +#define PAD_DS_CGPIO5 (PAD_DS_CGPIO_BASE + 5) ///< CGPIO5 +#define PAD_DS_CGPIO6 (PAD_DS_CGPIO_BASE + 6) ///< CGPIO6 +#define PAD_DS_CGPIO7 (PAD_DS_CGPIO_BASE + 7) ///< CGPIO7 +#define PAD_DS_CGPIO8 (PAD_DS_CGPIO_BASE + 8) ///< CGPIO8 +#define PAD_DS_CGPIO9 ((PAD_DS_CGPIO_BASE + 9) | PAD_DS_GROUP6_16) ///< CGPIO9 +#define PAD_DS_CGPIO10 (PAD_DS_CGPIO_BASE + 10) ///< CGPIO10 +#define PAD_DS_CGPIO11 (PAD_DS_CGPIO_BASE + 11) ///< CGPIO11 +#define PAD_DS_CGPIO12 (PAD_DS_CGPIO_BASE + 12) ///< CGPIO12 +#define PAD_DS_CGPIO13 (PAD_DS_CGPIO_BASE + 13) ///< CGPIO13 +#define PAD_DS_CGPIO14 (PAD_DS_CGPIO_BASE + 14) ///< CGPIO14 +#define PAD_DS_CGPIO15 (PAD_DS_CGPIO_BASE + 15) ///< CGPIO15 + +#define PAD_DS_CGPIO16 ((PAD_DS_CGPIO_BASE + 16) | PAD_DS_GROUP5_40) ///< CGPIO16 +#define PAD_DS_CGPIO17 ((PAD_DS_CGPIO_BASE + 17) | PAD_DS_GROUP5_40) ///< CGPIO17 +#define PAD_DS_CGPIO18 ((PAD_DS_CGPIO_BASE + 18) | PAD_DS_GROUP5_40) ///< CGPIO18 +#define PAD_DS_CGPIO19 ((PAD_DS_CGPIO_BASE + 19) | PAD_DS_GROUP5_40) ///< CGPIO19 +#define PAD_DS_CGPIO20 ((PAD_DS_CGPIO_BASE + 20) | PAD_DS_GROUP5_40) ///< CGPIO20 +#define PAD_DS_CGPIO21 ((PAD_DS_CGPIO_BASE + 21) | PAD_DS_GROUP5_40) ///< CGPIO21 +#define PAD_DS_CGPIO22 ((PAD_DS_CGPIO_BASE + 22) | PAD_DS_GROUP5_40) ///< CGPIO22 +#define PAD_DS_CGPIO23 ((PAD_DS_CGPIO_BASE + 23) | PAD_DS_GROUP5_40) ///< CGPIO23 +#define PAD_DS_CGPIO24 ((PAD_DS_CGPIO_BASE + 24) | PAD_DS_GROUP5_40) ///< CGPIO24 +#define PAD_DS_CGPIO25 ((PAD_DS_CGPIO_BASE + 25) | PAD_DS_GROUP5_40) ///< CGPIO25 +#define PAD_DS_CGPIO26 ((PAD_DS_CGPIO_BASE + 26) | PAD_DS_GROUP5_40) ///< CGPIO26 +#define PAD_DS_CGPIO27 ((PAD_DS_CGPIO_BASE + 27) | PAD_DS_GROUP5_40) ///< CGPIO27 +#define PAD_DS_CGPIO28 ((PAD_DS_CGPIO_BASE + 28) | PAD_DS_GROUP6_16) ///< CGPIO28 +#define PAD_DS_CGPIO29 (PAD_DS_CGPIO_BASE + 29) ///< CGPIO29 +#define PAD_DS_CGPIO30 (PAD_DS_CGPIO_BASE + 30) ///< CGPIO30 +#define PAD_DS_CGPIO31 (PAD_DS_CGPIO_BASE + 31) ///< CGPIO31 + +#define PAD_DS_CGPIO32 (PAD_DS_CGPIO_BASE + 32) ///< CGPIO32 +#define PAD_DS_CGPIO33 (PAD_DS_CGPIO_BASE + 33) ///< CGPIO33 +//CGPIO group end + +//SGPIO group Driving/Sink begin +#define PAD_DS_SGPIO_BASE 48 +#define PAD_DS_SGPIO0 ((PAD_DS_SGPIO_BASE + 0) | PAD_DS_GROUP6_16) ///< SGPIO0 +#define PAD_DS_SGPIO1 ((PAD_DS_SGPIO_BASE + 1) | PAD_DS_GROUP8) ///< SGPIO1 +#define PAD_DS_SGPIO2 ((PAD_DS_SGPIO_BASE + 2) | PAD_DS_GROUP8) ///< SGPIO2 +#define PAD_DS_SGPIO3 ((PAD_DS_SGPIO_BASE + 3) | PAD_DS_GROUP8) ///< SGPIO3 +#define PAD_DS_SGPIO4 ((PAD_DS_SGPIO_BASE + 4) | PAD_DS_GROUP8) ///< SGPIO4 +#define PAD_DS_SGPIO5 ((PAD_DS_SGPIO_BASE + 5) | PAD_DS_GROUP6_16) ///< SGPIO5 +#define PAD_DS_SGPIO6 ((PAD_DS_SGPIO_BASE + 6) | PAD_DS_GROUP8) ///< SGPIO6 +#define PAD_DS_SGPIO7 ((PAD_DS_SGPIO_BASE + 7) | PAD_DS_GROUP8) ///< SGPIO7 +#define PAD_DS_SGPIO8 (PAD_DS_SGPIO_BASE + 8) ///< SGPIO8 +#define PAD_DS_SGPIO9 (PAD_DS_SGPIO_BASE + 9) ///< SGPIO9 +#define PAD_DS_SGPIO10 (PAD_DS_SGPIO_BASE + 10) ///< SGPIO10 +#define PAD_DS_SGPIO11 (PAD_DS_SGPIO_BASE + 11) ///< SGPIO11 +//SGPIO group Driving/Sink end + +//PGPIO group Driving/Sink begin +#define PAD_DS_PGPIO_BASE 64 +#define PAD_DS_PGPIO0 (PAD_DS_PGPIO_BASE + 0) ///< PGPIO0 +#define PAD_DS_PGPIO1 (PAD_DS_PGPIO_BASE + 1) ///< PGPIO1 +#define PAD_DS_PGPIO2 (PAD_DS_PGPIO_BASE + 2) ///< PGPIO2 +#define PAD_DS_PGPIO3 (PAD_DS_PGPIO_BASE + 3) ///< PGPIO3 +#define PAD_DS_PGPIO4 (PAD_DS_PGPIO_BASE + 4) ///< PGPIO4 +#define PAD_DS_PGPIO5 (PAD_DS_PGPIO_BASE + 5) ///< PGPIO5 +#define PAD_DS_PGPIO6 (PAD_DS_PGPIO_BASE + 6) ///< PGPIO6 +#define PAD_DS_PGPIO7 (PAD_DS_PGPIO_BASE + 7) ///< PGPIO7 +#define PAD_DS_PGPIO8 (PAD_DS_PGPIO_BASE + 8) ///< PGPIO8 +#define PAD_DS_PGPIO9 (PAD_DS_PGPIO_BASE + 9) ///< PGPIO9 +#define PAD_DS_PGPIO10 (PAD_DS_PGPIO_BASE + 10) ///< PGPIO10 +#define PAD_DS_PGPIO11 (PAD_DS_PGPIO_BASE + 11) ///< PGPIO11 +#define PAD_DS_PGPIO12 (PAD_DS_PGPIO_BASE + 12) ///< PGPIO12 +#define PAD_DS_PGPIO13 (PAD_DS_PGPIO_BASE + 13) ///< PGPIO13 +#define PAD_DS_PGPIO14 (PAD_DS_PGPIO_BASE + 14) ///< PGPIO14 +#define PAD_DS_PGPIO15 (PAD_DS_PGPIO_BASE + 15) ///< PGPIO15 + +#define PAD_DS_PGPIO16 (PAD_DS_PGPIO_BASE + 16) ///< PGPIO16 +#define PAD_DS_PGPIO17 (PAD_DS_PGPIO_BASE + 17) ///< PGPIO17 +#define PAD_DS_PGPIO18 (PAD_DS_PGPIO_BASE + 18) ///< PGPIO18 +#define PAD_DS_PGPIO19 (PAD_DS_PGPIO_BASE + 19) ///< PGPIO19 +#define PAD_DS_PGPIO20 ((PAD_DS_PGPIO_BASE + 20) | PAD_DS_GROUP6_16) ///< PGPIO20 +#define PAD_DS_PGPIO21 ((PAD_DS_PGPIO_BASE + 21) | PAD_DS_GROUP6_16) ///< PGPIO21 +#define PAD_DS_PGPIO22 ((PAD_DS_PGPIO_BASE + 22) | PAD_DS_GROUP6_16) ///< PGPIO22 +#define PAD_DS_PGPIO23 ((PAD_DS_PGPIO_BASE + 23) | PAD_DS_GROUP6_16) ///< PGPIO23 +#define PAD_DS_PGPIO24 (PAD_DS_PGPIO_BASE + 24) ///< PGPIO24 +#define PAD_DS_PGPIO25 (PAD_DS_PGPIO_BASE + 25) ///< PGPIO25 +#define PAD_DS_PGPIO26 (PAD_DS_PGPIO_BASE + 26) ///< PGPIO26 +#define PAD_DS_PGPIO27 (PAD_DS_PGPIO_BASE + 27) ///< PGPIO27 +#define PAD_DS_PGPIO28 (PAD_DS_PGPIO_BASE + 28) ///< PGPIO28 +#define PAD_DS_PGPIO29 (PAD_DS_PGPIO_BASE + 29) ///< PGPIO29 +#define PAD_DS_PGPIO30 (PAD_DS_PGPIO_BASE + 30) ///< PGPIO30 +#define PAD_DS_PGPIO31 (PAD_DS_PGPIO_BASE + 31) ///< PGPIO31 + +#define PAD_DS_PGPIO32 (PAD_DS_PGPIO_BASE + 32) ///< PGPIO32 +#define PAD_DS_PGPIO33 (PAD_DS_PGPIO_BASE + 33) ///< PGPIO33 +#define PAD_DS_PGPIO34 (PAD_DS_PGPIO_BASE + 34) ///< PGPIO34 +#define PAD_DS_PGPIO35 (PAD_DS_PGPIO_BASE + 35) ///< PGPIO35 +#define PAD_DS_PGPIO36 (PAD_DS_PGPIO_BASE + 36) ///< PGPIO36 +#define PAD_DS_PGPIO37 (PAD_DS_PGPIO_BASE + 37) ///< PGPIO37 +#define PAD_DS_PGPIO38 (PAD_DS_PGPIO_BASE + 38) ///< PGPIO38 +#define PAD_DS_PGPIO39 (PAD_DS_PGPIO_BASE + 39) ///< PGPIO39 +#define PAD_DS_PGPIO40 (PAD_DS_PGPIO_BASE + 40) ///< PGPIO40 +#define PAD_DS_PGPIO41 (PAD_DS_PGPIO_BASE + 41) ///< PGPIO41 +#define PAD_DS_PGPIO42 ((PAD_DS_PGPIO_BASE + 42) | PAD_DS_GROUP8) ///< PGPIO42 +#define PAD_DS_PGPIO43 ((PAD_DS_PGPIO_BASE + 43) | PAD_DS_GROUP8) ///< PGPIO43 +#define PAD_DS_PGPIO44 ((PAD_DS_PGPIO_BASE + 44) | PAD_DS_GROUP8) ///< PGPIO44 +#define PAD_DS_PGPIO45 ((PAD_DS_PGPIO_BASE + 45) | PAD_DS_GROUP8) ///< PGPIO45 +#define PAD_DS_PGPIO46 ((PAD_DS_PGPIO_BASE + 46) | PAD_DS_GROUP8) ///< PGPIO46 +#define PAD_DS_PGPIO47 ((PAD_DS_PGPIO_BASE + 47) | PAD_DS_GROUP8) ///< PGPIO47 +//PGPIO group Driving/Sink end + +//LCD group Driving/Sink begin +#define PAD_DS_LGPIO_BASE 112 +#define PAD_DS_LGPIO0 ((PAD_DS_LGPIO_BASE + 0) | PAD_DS_GROUP6_16) ///< LGPIO0 +#define PAD_DS_LGPIO1 ((PAD_DS_LGPIO_BASE + 1) | PAD_DS_GROUP6_16) ///< LGPIO1 +#define PAD_DS_LGPIO2 ((PAD_DS_LGPIO_BASE + 2) | PAD_DS_GROUP6_16) ///< LGPIO2 +#define PAD_DS_LGPIO3 ((PAD_DS_LGPIO_BASE + 3) | PAD_DS_GROUP6_16) ///< LGPIO3 +#define PAD_DS_LGPIO4 ((PAD_DS_LGPIO_BASE + 4) | PAD_DS_GROUP6_16) ///< LGPIO4 +#define PAD_DS_LGPIO5 ((PAD_DS_LGPIO_BASE + 5) | PAD_DS_GROUP6_16) ///< LGPIO5 +#define PAD_DS_LGPIO6 ((PAD_DS_LGPIO_BASE + 6) | PAD_DS_GROUP6_16) ///< LGPIO6 +#define PAD_DS_LGPIO7 ((PAD_DS_LGPIO_BASE + 7) | PAD_DS_GROUP6_16) ///< LGPIO7 +#define PAD_DS_LGPIO8 ((PAD_DS_LGPIO_BASE + 8) | PAD_DS_GROUP6_16) ///< LGPIO8 +#define PAD_DS_LGPIO9 ((PAD_DS_LGPIO_BASE + 9) | PAD_DS_GROUP6_16) ///< LGPIO9 +#define PAD_DS_LGPIO10 ((PAD_DS_LGPIO_BASE + 10)| PAD_DS_GROUP6_16) ///< LGPIO10 +#define PAD_DS_LGPIO11 ((PAD_DS_LGPIO_BASE + 11)| PAD_DS_GROUP6_16) ///< LGPIO11 +#define PAD_DS_LGPIO12 ((PAD_DS_LGPIO_BASE + 12)| PAD_DS_GROUP6_16) ///< LGPIO12 +#define PAD_DS_LGPIO13 ((PAD_DS_LGPIO_BASE + 13)| PAD_DS_GROUP6_16) ///< LGPIO13 +#define PAD_DS_LGPIO14 ((PAD_DS_LGPIO_BASE + 14)| PAD_DS_GROUP6_16) ///< LGPIO14 +#define PAD_DS_LGPIO15 ((PAD_DS_LGPIO_BASE + 15)| PAD_DS_GROUP6_16) ///< LGPIO15 + +#define PAD_DS_LGPIO16 ((PAD_DS_LGPIO_BASE + 16)| PAD_DS_GROUP6_16) ///< LGPIO16 +#define PAD_DS_LGPIO17 ((PAD_DS_LGPIO_BASE + 17)| PAD_DS_GROUP6_16) ///< LGPIO17 +#define PAD_DS_LGPIO18 ((PAD_DS_LGPIO_BASE + 18)| PAD_DS_GROUP6_16) ///< LGPIO18 +#define PAD_DS_LGPIO19 ((PAD_DS_LGPIO_BASE + 19)| PAD_DS_GROUP6_16) ///< LGPIO19 +#define PAD_DS_LGPIO20 ((PAD_DS_LGPIO_BASE + 20)| PAD_DS_GROUP6_16) ///< LGPIO20 +#define PAD_DS_LGPIO21 ((PAD_DS_LGPIO_BASE + 21)| PAD_DS_GROUP6_16) ///< LGPIO21 +#define PAD_DS_LGPIO22 ((PAD_DS_LGPIO_BASE + 22)| PAD_DS_GROUP6_16) ///< LGPIO22 +#define PAD_DS_LGPIO23 ((PAD_DS_LGPIO_BASE + 23)| PAD_DS_GROUP6_16) ///< LGPIO23 +#define PAD_DS_LGPIO24 ((PAD_DS_LGPIO_BASE + 24)| PAD_DS_GROUP6_16) ///< LGPIO24 +#define PAD_DS_LGPIO25 ((PAD_DS_LGPIO_BASE + 25)| PAD_DS_GROUP6_16) ///< LGPIO25 +#define PAD_DS_LGPIO26 ((PAD_DS_LGPIO_BASE + 26)| PAD_DS_GROUP6_16) ///< LGPIO26 +#define PAD_DS_LGPIO27 ((PAD_DS_LGPIO_BASE + 27)| PAD_DS_GROUP6_16) ///< LGPIO27 +#define PAD_DS_LGPIO28 ((PAD_DS_LGPIO_BASE + 28)| PAD_DS_GROUP6_16) ///< LGPIO28 +#define PAD_DS_LGPIO29 ((PAD_DS_LGPIO_BASE + 29)| PAD_DS_GROUP6_16) ///< LGPIO29 +#define PAD_DS_LGPIO30 ((PAD_DS_LGPIO_BASE + 30)| PAD_DS_GROUP4_10) ///< LGPIO30 +#define PAD_DS_LGPIO31 ((PAD_DS_LGPIO_BASE + 31)| PAD_DS_GROUP4_10) ///< LGPIO31 +#define PAD_DS_LGPIO32 ((PAD_DS_LGPIO_BASE + 32)| PAD_DS_GROUP4_10) ///< LGPIO32 +//LCD group Driving/Sink end + +//DGPIO group Driving/Sink begin +#define PAD_DS_DGPIO_BASE 160 +#define PAD_DS_DGPIO0 ((PAD_DS_DGPIO_BASE + 0) | PAD_DS_GROUP16) ///< DGPIO0 +#define PAD_DS_DGPIO1 ((PAD_DS_DGPIO_BASE + 1) | PAD_DS_GROUP16) ///< DGPIO1 +#define PAD_DS_DGPIO2 ((PAD_DS_DGPIO_BASE + 2) | PAD_DS_GROUP16) ///< DGPIO2 +#define PAD_DS_DGPIO3 ((PAD_DS_DGPIO_BASE + 3) | PAD_DS_GROUP16) ///< DGPIO3 +#define PAD_DS_DGPIO4 ((PAD_DS_DGPIO_BASE + 4) | PAD_DS_GROUP16) ///< DGPIO4 +#define PAD_DS_DGPIO5 ((PAD_DS_DGPIO_BASE + 5) | PAD_DS_GROUP16) ///< DGPIO5 +#define PAD_DS_DGPIO6 ((PAD_DS_DGPIO_BASE + 6) | PAD_DS_GROUP8) ///< DGPIO6 +#define PAD_DS_DGPIO7 ((PAD_DS_DGPIO_BASE + 7) | PAD_DS_GROUP8) ///< DGPIO7 +#define PAD_DS_DGPIO8 ((PAD_DS_DGPIO_BASE + 8) | PAD_DS_GROUP8) ///< DGPIO8 +#define PAD_DS_DGPIO9 ((PAD_DS_DGPIO_BASE + 9) | PAD_DS_GROUP8) ///< DGPIO9 +#define PAD_DS_DGPIO10 ((PAD_DS_DGPIO_BASE + 10)| PAD_DS_GROUP8) ///< DGPIO10 +#define PAD_DS_DGPIO11 ((PAD_DS_DGPIO_BASE + 11)| PAD_DS_GROUP4_10) ///< DGPIO11 +#define PAD_DS_DGPIO12 ((PAD_DS_DGPIO_BASE + 12)| PAD_DS_GROUP4_10) ///< DGPIO12 +//DGPIO group Driving/Sink end +//@} + +#endif + +/** + @addtogroup mIDrvSys_PAD +*/ +//@{ +#define PAD_PUPD0_REG_OFS 0x00 + +#define PAD_PWR0_REG_OFS 0x78 + +#define PAD_REG_TO_BASE(reg) (((reg)/(4))*(32)) + +#define PAD_CGPIO_BASE PAD_REG_TO_BASE(0x00) // 0x00~0x04 +#define PAD_PGPIO_BASE PAD_REG_TO_BASE(0x08) // 0x08, 0x0C +#define PAD_DGPIO_BASE PAD_REG_TO_BASE(0x10) // 0x10 +#define PAD_SGPIO_BASE PAD_REG_TO_BASE(0x14) // 0x14 +#define PAD_HSIGPIO_BASE PAD_REG_TO_BASE(0x18) // 0x18 +#define PAD_DSIGPIO_BASE PAD_REG_TO_BASE(0x1C) // 0x1C +#define PAD_LGPIO_BASE PAD_REG_TO_BASE(0x20) // 0x20 +#define PAD_AGPIO_BASE PAD_REG_TO_BASE(0x24) // 0x24 + +/* 4 level */ +#define PAD_4L_DS_CGPIO_BASE PAD_REG_TO_BASE(0x2C) // 0x2C +#define PAD_4L_DS_PGPIO_BASE PAD_REG_TO_BASE(0x30) // 0x30~0x34 +#define PAD_4L_DS_DGPIO_BASE PAD_REG_TO_BASE(0x38) // 0x38 +#define PAD_4L_DS_SGPIO_BASE PAD_REG_TO_BASE(0x3C) // 0x3C +#define PAD_4L_DS_HSIGPIO_BASE PAD_REG_TO_BASE(0x40) // 0x40 +#define PAD_4L_DS_DSIGPIO_BASE PAD_REG_TO_BASE(0x44) // 0x44 +#define PAD_4L_DS_LGPIO_BASE PAD_REG_TO_BASE(0x48) // 0x48 +#define PAD_4L_DS_AGPIO_BASE PAD_REG_TO_BASE(0x4C) // 0x4C + +/* 8 level */ +#define PAD_8L_DS_CGPIO_BASE PAD_REG_TO_BASE(0x50) // 0x50~0x58 +#define PAD_8L_DS_SGPIO_BASE PAD_REG_TO_BASE(0x60) // 0x60 + +/* 2 level */ +#define PAD_2L_DS_HSIGPIO_BASE PAD_REG_TO_BASE(0x5C) // 0x5C + +/** + @name Pad type pin ID. + + Pad type pin ID. + + Pad ID of pad_set_pull_up_down (), pad_get_pull_up_down (). +*/ +#define PAD_PIN_NOT_EXIST (64) // For backward compatible +//@{ +typedef enum { + // CGPIO group + PAD_PIN_CGPIO0 = (PAD_CGPIO_BASE + 0), ///< C_GPIO_0 + PAD_PIN_CGPIO1 = (PAD_CGPIO_BASE + 2), ///< C_GPIO_1 + PAD_PIN_CGPIO2 = (PAD_CGPIO_BASE + 4), ///< C_GPIO_2 + PAD_PIN_CGPIO3 = (PAD_CGPIO_BASE + 6), ///< C_GPIO_3 + PAD_PIN_CGPIO4 = (PAD_CGPIO_BASE + 8), ///< C_GPIO_4 + PAD_PIN_CGPIO5 = (PAD_CGPIO_BASE + 10), ///< C_GPIO_5 + PAD_PIN_CGPIO6 = (PAD_CGPIO_BASE + 12), ///< C_GPIO_6 + PAD_PIN_CGPIO7 = (PAD_CGPIO_BASE + 14), ///< C_GPIO_7 + PAD_PIN_CGPIO8 = (PAD_CGPIO_BASE + 16), ///< C_GPIO_8 + PAD_PIN_CGPIO9 = (PAD_CGPIO_BASE + 18), ///< C_GPIO_9 + PAD_PIN_CGPIO10 = (PAD_CGPIO_BASE + 20), ///< C_GPIO_10 + PAD_PIN_CGPIO11 = (PAD_CGPIO_BASE + 22), ///< C_GPIO_11 + PAD_PIN_CGPIO12 = (PAD_CGPIO_BASE + 24), ///< C_GPIO_12 + PAD_PIN_CGPIO13 = (PAD_CGPIO_BASE + 26), ///< C_GPIO_13 + PAD_PIN_CGPIO14 = (PAD_CGPIO_BASE + 28), ///< C_GPIO_14 + PAD_PIN_CGPIO15 = (PAD_CGPIO_BASE + 30), ///< C_GPIO_15 + PAD_PIN_CGPIO16 = (PAD_CGPIO_BASE + 32), ///< C_GPIO_16 + PAD_PIN_CGPIO17 = (PAD_CGPIO_BASE + 34), ///< C_GPIO_17 + PAD_PIN_CGPIO18 = (PAD_CGPIO_BASE + 36), ///< C_GPIO_18 + PAD_PIN_CGPIO19 = (PAD_CGPIO_BASE + 38), ///< C_GPIO_19 + PAD_PIN_CGPIO20 = (PAD_CGPIO_BASE + 40), ///< C_GPIO_20 + PAD_PIN_CGPIO21 = (PAD_CGPIO_BASE + 42), ///< C_GPIO_21 + PAD_PIN_CGPIO22 = (PAD_CGPIO_BASE + 44), ///< C_GPIO_22 + PAD_PIN_CGPIO23 = (PAD_CGPIO_BASE + 46), ///< C_GPIO_23 + PAD_PIN_CGPIO24 = (PAD_CGPIO_BASE + 48), ///< C_GPIO_24 + + // PGPIO group + PAD_PIN_PGPIO0 = (PAD_PGPIO_BASE + 0), ///< P_GPIO_0 + PAD_PIN_PGPIO1 = (PAD_PGPIO_BASE + 2), ///< P_GPIO_1 + PAD_PIN_PGPIO2 = (PAD_PGPIO_BASE + 4), ///< P_GPIO_2 + PAD_PIN_PGPIO3 = (PAD_PGPIO_BASE + 6), ///< P_GPIO_3 + PAD_PIN_PGPIO4 = (PAD_PGPIO_BASE + 8), ///< P_GPIO_4 + PAD_PIN_PGPIO5 = (PAD_PGPIO_BASE + 10), ///< P_GPIO_5 + PAD_PIN_PGPIO6 = (PAD_PGPIO_BASE + 12), ///< P_GPIO_6 + PAD_PIN_PGPIO7 = (PAD_PGPIO_BASE + 14), ///< P_GPIO_7 + PAD_PIN_PGPIO8 = (PAD_PGPIO_BASE + 16), ///< P_GPIO_8 + PAD_PIN_PGPIO9 = (PAD_PGPIO_BASE + 18), ///< P_GPIO_9 + PAD_PIN_PGPIO10 = (PAD_PGPIO_BASE + 20), ///< P_GPIO_10 + PAD_PIN_PGPIO11 = (PAD_PGPIO_BASE + 22), ///< P_GPIO_11 + PAD_PIN_PGPIO12 = (PAD_PGPIO_BASE + 24), ///< P_GPIO_12 + PAD_PIN_PGPIO13 = (PAD_PGPIO_BASE + 26), ///< P_GPIO_13 + PAD_PIN_PGPIO14 = (PAD_PGPIO_BASE + 28), ///< P_GPIO_14 + PAD_PIN_PGPIO15 = (PAD_PGPIO_BASE + 30), ///< P_GPIO_15 + PAD_PIN_PGPIO16 = (PAD_PGPIO_BASE + 32), ///< P_GPIO_16 + PAD_PIN_PGPIO17 = (PAD_PGPIO_BASE + 34), ///< P_GPIO_17 + PAD_PIN_PGPIO18 = (PAD_PGPIO_BASE + 36), ///< P_GPIO_18 + PAD_PIN_PGPIO19 = (PAD_PGPIO_BASE + 38), ///< P_GPIO_19 + PAD_PIN_PGPIO20 = (PAD_PGPIO_BASE + 40), ///< P_GPIO_20 + PAD_PIN_PGPIO21 = (PAD_PGPIO_BASE + 42), ///< P_GPIO_21 + PAD_PIN_PGPIO22 = (PAD_PGPIO_BASE + 44), ///< P_GPIO_22 + PAD_PIN_PGPIO23 = (PAD_PGPIO_BASE + 46), ///< P_GPIO_23 + PAD_PIN_PGPIO24 = (PAD_PGPIO_BASE + 48), ///< P_GPIO_24 + PAD_PIN_PGPIO25 = (PAD_PGPIO_BASE + 50), ///< P_GPIO_25 + + // DGPIO group + PAD_PIN_DGPIO0 = (PAD_DGPIO_BASE + 0), ///< D_GPIO_0 + PAD_PIN_DGPIO1 = (PAD_DGPIO_BASE + 2), ///< D_GPIO_1 + PAD_PIN_DGPIO2 = (PAD_DGPIO_BASE + 4), ///< D_GPIO_2 + PAD_PIN_DGPIO3 = (PAD_DGPIO_BASE + 6), ///< D_GPIO_3 + PAD_PIN_DGPIO4 = (PAD_DGPIO_BASE + 8), ///< D_GPIO_4 + PAD_PIN_DGPIO5 = (PAD_DGPIO_BASE + 10), ///< D_GPIO_5 + PAD_PIN_DGPIO6 = (PAD_DGPIO_BASE + 12), ///< D_GPIO_6 + PAD_PIN_DGPIO7 = (PAD_DGPIO_BASE + 14), ///< D_GPIO_7 + + // SGPIO group + PAD_PIN_SGPIO0 = (PAD_SGPIO_BASE + 0), ///< S_GPIO_0 + PAD_PIN_SGPIO1 = (PAD_SGPIO_BASE + 2), ///< S_GPIO_1 + PAD_PIN_SGPIO2 = (PAD_SGPIO_BASE + 4), ///< S_GPIO_2 + PAD_PIN_SGPIO3 = (PAD_SGPIO_BASE + 6), ///< S_GPIO_3 + PAD_PIN_SGPIO4 = (PAD_SGPIO_BASE + 8), ///< S_GPIO_4 + PAD_PIN_SGPIO5 = (PAD_SGPIO_BASE + 10), ///< S_GPIO_5 + PAD_PIN_SGPIO6 = (PAD_SGPIO_BASE + 12), ///< S_GPIO_6 + PAD_PIN_SGPIO7 = (PAD_SGPIO_BASE + 14), ///< S_GPIO_7 + PAD_PIN_SGPIO8 = (PAD_SGPIO_BASE + 16), ///< S_GPIO_8 + + // HSIGPIO group + PAD_PIN_HSIGPIO0 = (PAD_HSIGPIO_BASE + 0), ///< HSI_GPIO_0 + PAD_PIN_HSIGPIO1 = (PAD_HSIGPIO_BASE + 2), ///< HSI_GPIO_1 + PAD_PIN_HSIGPIO2 = (PAD_HSIGPIO_BASE + 4), ///< HSI_GPIO_2 + PAD_PIN_HSIGPIO3 = (PAD_HSIGPIO_BASE + 6), ///< HSI_GPIO_3 + PAD_PIN_HSIGPIO4 = (PAD_HSIGPIO_BASE + 8), ///< HSI_GPIO_4 + PAD_PIN_HSIGPIO5 = (PAD_HSIGPIO_BASE + 10), ///< HSI_GPIO_5 + PAD_PIN_HSIGPIO6 = (PAD_HSIGPIO_BASE + 12), ///< HSI_GPIO_6 + PAD_PIN_HSIGPIO7 = (PAD_HSIGPIO_BASE + 14), ///< HSI_GPIO_7 + PAD_PIN_HSIGPIO8 = (PAD_HSIGPIO_BASE + 16), ///< HSI_GPIO_8 + PAD_PIN_HSIGPIO9 = (PAD_HSIGPIO_BASE + 18), ///< HSI_GPIO_9 + PAD_PIN_HSIGPIO10 = (PAD_HSIGPIO_BASE + 20), ///< HSI_GPIO_10 + PAD_PIN_HSIGPIO11 = (PAD_HSIGPIO_BASE + 22), ///< HSI_GPIO_11 + + // DSIGPIO group + PAD_PIN_DSIGPIO0 = (PAD_DSIGPIO_BASE + 0), ///< DSI_GPIO_0 + PAD_PIN_DSIGPIO1 = (PAD_DSIGPIO_BASE + 2), ///< DSI_GPIO_1 + PAD_PIN_DSIGPIO2 = (PAD_DSIGPIO_BASE + 4), ///< DSI_GPIO_2 + PAD_PIN_DSIGPIO3 = (PAD_DSIGPIO_BASE + 6), ///< DSI_GPIO_3 + PAD_PIN_DSIGPIO4 = (PAD_DSIGPIO_BASE + 8), ///< DSI_GPIO_4 + PAD_PIN_DSIGPIO5 = (PAD_DSIGPIO_BASE + 10), ///< DSI_GPIO_5 + PAD_PIN_DSIGPIO6 = (PAD_DSIGPIO_BASE + 12), ///< DSI_GPIO_6 + PAD_PIN_DSIGPIO7 = (PAD_DSIGPIO_BASE + 14), ///< DSI_GPIO_7 + PAD_PIN_DSIGPIO8 = (PAD_DSIGPIO_BASE + 16), ///< DSI_GPIO_8 + PAD_PIN_DSIGPIO9 = (PAD_DSIGPIO_BASE + 18), ///< DSI_GPIO_9 + PAD_PIN_DSIGPIO10 = (PAD_DSIGPIO_BASE + 20), ///< DSI_GPIO_10 + + // LGPIO group + PAD_PIN_LGPIO0 = (PAD_LGPIO_BASE + 0), ///< L_GPIO_0 + PAD_PIN_LGPIO1 = (PAD_LGPIO_BASE + 2), ///< L_GPIO_1 + PAD_PIN_LGPIO2 = (PAD_LGPIO_BASE + 4), ///< L_GPIO_2 + PAD_PIN_LGPIO3 = (PAD_LGPIO_BASE + 6), ///< L_GPIO_3 + PAD_PIN_LGPIO4 = (PAD_LGPIO_BASE + 8), ///< L_GPIO_4 + PAD_PIN_LGPIO5 = (PAD_LGPIO_BASE + 10), ///< L_GPIO_5 + PAD_PIN_LGPIO6 = (PAD_LGPIO_BASE + 12), ///< L_GPIO_6 + PAD_PIN_LGPIO7 = (PAD_LGPIO_BASE + 14), ///< L_GPIO_7 + PAD_PIN_LGPIO8 = (PAD_LGPIO_BASE + 16), ///< L_GPIO_8 + PAD_PIN_LGPIO9 = (PAD_LGPIO_BASE + 18), ///< L_GPIO_9 + + // AGPIO group + PAD_PIN_AGPIO0 = (PAD_AGPIO_BASE + 0), ///< A_GPIO_0 + PAD_PIN_AGPIO1 = (PAD_AGPIO_BASE + 2), ///< A_GPIO_1 + PAD_PIN_AGPIO2 = (PAD_AGPIO_BASE + 4), ///< A_GPIO_2 + PAD_PIN_AGPIO3 = (PAD_AGPIO_BASE + 6), ///< A_GPIO_3 + + PAD_PIN_MAX = PAD_PIN_AGPIO3, + + ENUM_DUMMY4WORD(PAD_PIN) +} PAD_PIN; +//@} + +/** + Pad type select + + Pad type select + + Pad type value for pad_set_pull_up_down(), pad_get_pull_up_down(). +*/ +typedef enum { + PAD_NONE = 0x00, ///< none of pull up/down + PAD_PULLDOWN = 0x01, ///< pull down + PAD_PULLUP = 0x02, ///< pull up + PAD_KEEPER = 0x03, ///< keeper + PAD_STRONG_PULLUP = 0x03, ///< strong pull up + + ENUM_DUMMY4WORD(PAD_PULL) +} PAD_PULL; + +/** + Pad driving select + + Pad driving select + + Pad driving value for pad_set_driving_sink(), pad_get_driving_sink(). +*/ +typedef enum { + PAD_DRIVINGSINK_LEVEL_0 = 0x00, + PAD_DRIVINGSINK_LEVEL_1 = 0x01, + PAD_DRIVINGSINK_LEVEL_2 = 0x02, + PAD_DRIVINGSINK_LEVEL_3 = 0x03, + PAD_DRIVINGSINK_LEVEL_4 = 0x04, + PAD_DRIVINGSINK_LEVEL_5 = 0x05, + PAD_DRIVINGSINK_LEVEL_6 = 0x06, + PAD_DRIVINGSINK_LEVEL_7 = 0x07, + PAD_DRIVINGSINK_LEVEL_8 = 0x08, + PAD_DRIVINGSINK_LEVEL_9 = 0x09, + PAD_DRIVINGSINK_LEVEL_10 = 0x0A, + PAD_DRIVINGSINK_LEVEL_11 = 0x0B, + PAD_DRIVINGSINK_LEVEL_12 = 0x0C, + PAD_DRIVINGSINK_LEVEL_13 = 0x0D, + PAD_DRIVINGSINK_LEVEL_14 = 0x0E, + PAD_DRIVINGSINK_LEVEL_15 = 0x0F, + + + PAD_DRIVINGSINK_10MA = 0x2, + + ENUM_DUMMY4WORD(PAD_DRIVINGSINK) +} PAD_DRIVINGSINK; + +/** + @name Pad driving pin ID. + + Pad driving pin ID. + + Pad ID of pad_set_driving_sink(), pad_get_driving_sink() +*/ +//@{ +typedef enum { + // CGPIO group + PAD_DS_CGPIO0 = (PAD_8L_DS_CGPIO_BASE + 0), ///< C_GPIO_0 + PAD_DS_CGPIO1 = (PAD_8L_DS_CGPIO_BASE + 4), ///< C_GPIO_1 + PAD_DS_CGPIO2 = (PAD_8L_DS_CGPIO_BASE + 8), ///< C_GPIO_2 + PAD_DS_CGPIO3 = (PAD_8L_DS_CGPIO_BASE + 12), ///< C_GPIO_3 + PAD_DS_CGPIO4 = (PAD_8L_DS_CGPIO_BASE + 16), ///< C_GPIO_4 + PAD_DS_CGPIO5 = (PAD_8L_DS_CGPIO_BASE + 20), ///< C_GPIO_5 + PAD_DS_CGPIO6 = (PAD_8L_DS_CGPIO_BASE + 24), ///< C_GPIO_6 + PAD_DS_CGPIO7 = (PAD_8L_DS_CGPIO_BASE + 28), ///< C_GPIO_7 + PAD_DS_CGPIO8 = (PAD_8L_DS_CGPIO_BASE + 32), ///< C_GPIO_8 + PAD_DS_CGPIO9 = (PAD_8L_DS_CGPIO_BASE + 36), ///< C_GPIO_9 + PAD_DS_CGPIO10 = (PAD_8L_DS_CGPIO_BASE + 40), ///< C_GPIO_10 + PAD_DS_CGPIO11 = (PAD_8L_DS_CGPIO_BASE + 44), ///< C_GPIO_11 + PAD_DS_CGPIO12 = (PAD_8L_DS_CGPIO_BASE + 48), ///< C_GPIO_12 + PAD_DS_CGPIO13 = (PAD_8L_DS_CGPIO_BASE + 52), ///< C_GPIO_13 + PAD_DS_CGPIO14 = (PAD_8L_DS_CGPIO_BASE + 56), ///< C_GPIO_14 + PAD_DS_CGPIO15 = (PAD_8L_DS_CGPIO_BASE + 60), ///< C_GPIO_15 + PAD_DS_CGPIO16 = (PAD_8L_DS_CGPIO_BASE + 64), ///< C_GPIO_16 + PAD_DS_CGPIO17 = (PAD_8L_DS_CGPIO_BASE + 68), ///< C_GPIO_17 + PAD_DS_CGPIO18 = (PAD_8L_DS_CGPIO_BASE + 72), ///< C_GPIO_18 + PAD_DS_CGPIO19 = (PAD_8L_DS_CGPIO_BASE + 76), ///< C_GPIO_19 + + PAD_DS_CGPIO20 = (PAD_4L_DS_CGPIO_BASE + 8), ///< C_GPIO_20 + PAD_DS_CGPIO21 = (PAD_4L_DS_CGPIO_BASE + 10), ///< C_GPIO_21 + PAD_DS_CGPIO22 = (PAD_4L_DS_CGPIO_BASE + 12), ///< C_GPIO_22 + PAD_DS_CGPIO23 = (PAD_4L_DS_CGPIO_BASE + 14), ///< C_GPIO_23 + PAD_DS_CGPIO24 = (PAD_4L_DS_CGPIO_BASE + 16), ///< C_GPIO_24 + + // PGPIO group + PAD_DS_PGPIO0 = (PAD_4L_DS_PGPIO_BASE + 0), ///< P_GPIO_0 + PAD_DS_PGPIO1 = (PAD_4L_DS_PGPIO_BASE + 2), ///< P_GPIO_1 + PAD_DS_PGPIO2 = (PAD_4L_DS_PGPIO_BASE + 4), ///< P_GPIO_2 + PAD_DS_PGPIO3 = (PAD_4L_DS_PGPIO_BASE + 6), ///< P_GPIO_3 + PAD_DS_PGPIO4 = (PAD_4L_DS_PGPIO_BASE + 8), ///< P_GPIO_4 + PAD_DS_PGPIO5 = (PAD_4L_DS_PGPIO_BASE + 10), ///< P_GPIO_5 + PAD_DS_PGPIO6 = (PAD_4L_DS_PGPIO_BASE + 12), ///< P_GPIO_6 + PAD_DS_PGPIO7 = (PAD_4L_DS_PGPIO_BASE + 14), ///< P_GPIO_7 + PAD_DS_PGPIO8 = (PAD_4L_DS_PGPIO_BASE + 16), ///< P_GPIO_8 + PAD_DS_PGPIO9 = (PAD_4L_DS_PGPIO_BASE + 18), ///< P_GPIO_9 + PAD_DS_PGPIO10 = (PAD_4L_DS_PGPIO_BASE + 20), ///< P_GPIO_10 + PAD_DS_PGPIO11 = (PAD_4L_DS_PGPIO_BASE + 22), ///< P_GPIO_11 + PAD_DS_PGPIO12 = (PAD_4L_DS_PGPIO_BASE + 24), ///< P_GPIO_12 + PAD_DS_PGPIO13 = (PAD_4L_DS_PGPIO_BASE + 26), ///< P_GPIO_13 + PAD_DS_PGPIO14 = (PAD_4L_DS_PGPIO_BASE + 28), ///< P_GPIO_14 + PAD_DS_PGPIO15 = (PAD_4L_DS_PGPIO_BASE + 30), ///< P_GPIO_15 + PAD_DS_PGPIO16 = (PAD_4L_DS_PGPIO_BASE + 32), ///< P_GPIO_16 + PAD_DS_PGPIO17 = (PAD_4L_DS_PGPIO_BASE + 34), ///< P_GPIO_17 + PAD_DS_PGPIO18 = (PAD_4L_DS_PGPIO_BASE + 36), ///< P_GPIO_18 + PAD_DS_PGPIO19 = (PAD_4L_DS_PGPIO_BASE + 38), ///< P_GPIO_19 + PAD_DS_PGPIO20 = (PAD_4L_DS_PGPIO_BASE + 40), ///< P_GPIO_20 + PAD_DS_PGPIO21 = (PAD_4L_DS_PGPIO_BASE + 42), ///< P_GPIO_21 + PAD_DS_PGPIO22 = (PAD_4L_DS_PGPIO_BASE + 44), ///< P_GPIO_22 + PAD_DS_PGPIO23 = (PAD_4L_DS_PGPIO_BASE + 46), ///< P_GPIO_23 + PAD_DS_PGPIO24 = (PAD_4L_DS_PGPIO_BASE + 48), ///< P_GPIO_24 + PAD_DS_PGPIO25 = (PAD_4L_DS_PGPIO_BASE + 50), ///< P_GPIO_25 + + // DGPIO group + PAD_DS_DGPIO0 = (PAD_4L_DS_DGPIO_BASE + 0), ///< D_GPIO_0 + PAD_DS_DGPIO1 = (PAD_4L_DS_DGPIO_BASE + 2), ///< D_GPIO_1 + PAD_DS_DGPIO2 = (PAD_4L_DS_DGPIO_BASE + 4), ///< D_GPIO_2 + PAD_DS_DGPIO3 = (PAD_4L_DS_DGPIO_BASE + 6), ///< D_GPIO_3 + PAD_DS_DGPIO4 = (PAD_4L_DS_DGPIO_BASE + 8), ///< D_GPIO_4 + PAD_DS_DGPIO5 = (PAD_4L_DS_DGPIO_BASE + 10), ///< D_GPIO_5 + PAD_DS_DGPIO6 = (PAD_4L_DS_DGPIO_BASE + 12), ///< D_GPIO_6 + PAD_DS_DGPIO7 = (PAD_4L_DS_DGPIO_BASE + 14), ///< D_GPIO_7 + PAD_DS_SYS_RST = (PAD_4L_DS_DGPIO_BASE + 28), ///< SYS_RST + + // SGPIO group + PAD_DS_SGPIO0 = (PAD_8L_DS_SGPIO_BASE + 0), ///< S_GPIO_0 + PAD_DS_SGPIO1 = (PAD_4L_DS_SGPIO_BASE + 2), ///< S_GPIO_1 + PAD_DS_SGPIO2 = (PAD_4L_DS_SGPIO_BASE + 4), ///< S_GPIO_2 + PAD_DS_SGPIO3 = (PAD_4L_DS_SGPIO_BASE + 6), ///< S_GPIO_3 + PAD_DS_SGPIO4 = (PAD_4L_DS_SGPIO_BASE + 8), ///< S_GPIO_4 + PAD_DS_SGPIO5 = (PAD_4L_DS_SGPIO_BASE + 10), ///< S_GPIO_5 + PAD_DS_SGPIO6 = (PAD_4L_DS_SGPIO_BASE + 12), ///< S_GPIO_6 + PAD_DS_SGPIO7 = (PAD_4L_DS_SGPIO_BASE + 14), ///< S_GPIO_7 + PAD_DS_SGPIO8 = (PAD_4L_DS_SGPIO_BASE + 16), ///< S_GPIO_8 + + // HSIGPIO group + PAD_DS_HSIGPIO0 = (PAD_2L_DS_HSIGPIO_BASE + 0), ///< HSI_GPIO_0 + PAD_DS_HSIGPIO1 = (PAD_2L_DS_HSIGPIO_BASE + 1), ///< HSI_GPIO_1 + PAD_DS_HSIGPIO2 = (PAD_2L_DS_HSIGPIO_BASE + 2), ///< HSI_GPIO_2 + PAD_DS_HSIGPIO3 = (PAD_2L_DS_HSIGPIO_BASE + 3), ///< HSI_GPIO_3 + PAD_DS_HSIGPIO4 = (PAD_2L_DS_HSIGPIO_BASE + 4), ///< HSI_GPIO_4 + PAD_DS_HSIGPIO5 = (PAD_2L_DS_HSIGPIO_BASE + 5), ///< HSI_GPIO_5 + PAD_DS_HSIGPIO6 = (PAD_2L_DS_HSIGPIO_BASE + 6), ///< HSI_GPIO_6 + PAD_DS_HSIGPIO7 = (PAD_2L_DS_HSIGPIO_BASE + 7), ///< HSI_GPIO_7 + PAD_DS_HSIGPIO8 = (PAD_2L_DS_HSIGPIO_BASE + 8), ///< HSI_GPIO_8 + PAD_DS_HSIGPIO9 = (PAD_2L_DS_HSIGPIO_BASE + 9), ///< HSI_GPIO_9 + PAD_DS_HSIGPIO10 = (PAD_4L_DS_HSIGPIO_BASE + 20), ///< HSI_GPIO_10 + PAD_DS_HSIGPIO11 = (PAD_4L_DS_HSIGPIO_BASE + 22), ///< HSI_GPIO_11 + + // DSIGPIO group + PAD_DS_DSIGPIO0 = (PAD_4L_DS_DSIGPIO_BASE + 0), ///< DSI_GPIO_0 + PAD_DS_DSIGPIO1 = (PAD_4L_DS_DSIGPIO_BASE + 1), ///< DSI_GPIO_1 + PAD_DS_DSIGPIO2 = (PAD_4L_DS_DSIGPIO_BASE + 2), ///< DSI_GPIO_2 + PAD_DS_DSIGPIO3 = (PAD_4L_DS_DSIGPIO_BASE + 3), ///< DSI_GPIO_3 + PAD_DS_DSIGPIO4 = (PAD_4L_DS_DSIGPIO_BASE + 4), ///< DSI_GPIO_4 + PAD_DS_DSIGPIO5 = (PAD_4L_DS_DSIGPIO_BASE + 5), ///< DSI_GPIO_5 + PAD_DS_DSIGPIO6 = (PAD_4L_DS_DSIGPIO_BASE + 6), ///< DSI_GPIO_6 + PAD_DS_DSIGPIO7 = (PAD_4L_DS_DSIGPIO_BASE + 7), ///< DSI_GPIO_7 + PAD_DS_DSIGPIO8 = (PAD_4L_DS_DSIGPIO_BASE + 8), ///< DSI_GPIO_8 + PAD_DS_DSIGPIO9 = (PAD_4L_DS_DSIGPIO_BASE + 9), ///< DSI_GPIO_9 + PAD_DS_DSIGPIO10 = (PAD_4L_DS_DSIGPIO_BASE + 20), ///< DSI_GPIO_10 + + // LGPIO group + PAD_DS_LGPIO0 = (PAD_4L_DS_LGPIO_BASE + 0), ///< L_GPIO_0 + PAD_DS_LGPIO1 = (PAD_4L_DS_LGPIO_BASE + 1), ///< L_GPIO_1 + PAD_DS_LGPIO2 = (PAD_4L_DS_LGPIO_BASE + 2), ///< L_GPIO_2 + PAD_DS_LGPIO3 = (PAD_4L_DS_LGPIO_BASE + 3), ///< L_GPIO_3 + PAD_DS_LGPIO4 = (PAD_4L_DS_LGPIO_BASE + 4), ///< L_GPIO_4 + PAD_DS_LGPIO5 = (PAD_4L_DS_LGPIO_BASE + 5), ///< L_GPIO_5 + PAD_DS_LGPIO6 = (PAD_4L_DS_LGPIO_BASE + 6), ///< L_GPIO_6 + PAD_DS_LGPIO7 = (PAD_4L_DS_LGPIO_BASE + 7), ///< L_GPIO_7 + PAD_DS_LGPIO8 = (PAD_4L_DS_LGPIO_BASE + 8), ///< L_GPIO_8 + PAD_DS_LGPIO9 = (PAD_4L_DS_LGPIO_BASE + 9), ///< L_GPIO_9 + + // AGPIO group + PAD_DS_AGPIO0 = (PAD_4L_DS_AGPIO_BASE + 0), ///< A_GPIO_0 + PAD_DS_AGPIO1 = (PAD_4L_DS_AGPIO_BASE + 1), ///< A_GPIO_1 + PAD_DS_AGPIO2 = (PAD_4L_DS_AGPIO_BASE + 2), ///< A_GPIO_2 + PAD_DS_AGPIO3 = (PAD_4L_DS_AGPIO_BASE + 3), ///< A_GPIO_3 + + PAD_DS_MAX = PAD_DS_SGPIO0, + + ENUM_DUMMY4WORD(PAD_DS) +} PAD_DS; +//@} + +/** + Pad power ID select + + Pad power ID for PAD_POWER_STRUCT. +*/ +typedef enum { + PAD_POWERID_MC0 = 0x00, ///< Pad power id for MC0 + PAD_POWERID_MC1 = 0x01, ///< Pad power id for MC1 + PAD_POWERID_ADC = 0x02, ///< Pad power id for Audio ADC + PAD_POWERID_CSI = 0x04, ///< Pad power id for CSI/LVDS + + ENUM_DUMMY4WORD(PAD_POWERID) +} PAD_POWERID; + +/** + Pad power select + + Pad power value for PAD_POWER_STRUCT. +*/ +typedef enum { + PAD_3P3V = 0x00, ///< Pad power is 3.3V + PAD_AVDD = 0x00, ///< Pad power is AVDD ( for PAD_POWERID_ADC use) + PAD_1P8V = 0x01, ///< Pad power is 1.8V + PAD_PAD_VAD = 0x01, ///< Pad power is PAD_ADC_VAD ( for PAD_POWERID_ADC use) + + ENUM_DUMMY4WORD(PAD_POWER) +} PAD_POWER; + +/** + Pad power VAD for PAD_POWERID_ADC + + Pad power VAD value for PAD_POWER_STRUCT. +*/ +typedef enum { + PAD_VAD_2P9V = 0x00, ///< Pad power VAD = 2.9V <ADC> + PAD_VAD_3P0V = 0x01, ///< Pad power VAD = 3.0V <ADC> + PAD_VAD_3P1V = 0x03, ///< Pad power VAD = 3.1V <ADC> + + PAD_VAD_2P4V = 0x100, ///< Pad power VAD = 2.4V <CSI> + PAD_VAD_2P5V = 0x101, ///< Pad power VAD = 2.5V <CSI> + PAD_VAD_2P6V = 0x103, ///< Pad power VAD = 2.6V <CSI> + + ENUM_DUMMY4WORD(PAD_VAD) +} PAD_VAD; + + +/** + PAD power structure + + PAD power setting for pad_set_power() +*/ +typedef struct { + PAD_POWERID power_id; ///< Pad power id + PAD_POWER power; ///< Pad power + BOOL bias_current; ///< Regulator bias current selection + ///< - @b FALSE: disable + ///< - @b TRUE: enable + BOOL opa_gain; ///< Regulator OPA gain/phase selection + ///< - @b FALSE: disable + ///< - @b TRUE: enable + BOOL pull_down; ///< Regulator output pull down control + ///< - @b FALSE: none + ///< - @b TRUE: pull down enable + BOOL regulator_en; ///< Regulator enable + ///< - @b FALSE: disable + ///< - @b TRUE: enable + PAD_VAD vad; ///< Pad VAD of PAD_POWERID_ADC when PAD_PAD_VAD = 1 +} PAD_POWER_STRUCT; + + + + + + + + +// Backward compatible usages +#define PAD_PIN_CGPIO23 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO23 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO24 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO25 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO26 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO27 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO28 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO29 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO30 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO31 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO32 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_CGPIO33 PAD_PIN_NOT_EXIST // For backward compatible +#define PAD_DS_PGPIO39 PAD_PIN_NOT_EXIST // For backward compatible + + +/* + Exporting APIs +*/ + +extern ER pad_setPullUpDown(UINT32 pin, PAD_PULL pulltype); +extern ER pad_setDrivingSink(UINT32 name, PAD_DRIVINGSINK driving); +//@} + + + +//@} + +#endif diff --git a/board/novatek/ns02501/loader/Include/Driver/regdef.h b/board/novatek/ns02501/loader/Include/Driver/regdef.h new file mode 100755 index 000000000000..802b49d9a059 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/regdef.h @@ -0,0 +1,199 @@ +/* + * MIPS register definitions, originally from: + * + * include/asm-mips/regdefs.h + * + * This file is subject to the terms and conditions of the GNU General Public + * License, Version 2. See the file "COPYING" in the main directory of this + * archive for more details. + * + * Copyright (C) 1994, 1995 by Ralf Baechle + */ + +/* + * Symbolic register names for 32 bit ABI + */ +# define Mode_USR 0x10 /* M[4:0] = 01010 */ +# define Mode_FIQ 0x11 /* M[4:0] = 10001 */ +# define Mode_IRQ 0x12 /* M[4:0] = 10010 */ +# define Mode_SVC 0x13 /* M[4:0] = 10011 */ +# define Mode_ABT 0x17 /* M[4:0] = 10111 */ +# define Mode_UNDEF 0x1B /* M[4:0] = 11011 */ +# define Mode_SYS 0x1F /* M[4:0] = 11111 */ +# define Mode_MSK 0x1F /* M[4:0] = 11111 */ +# define I_Bit 0x80 /* 7 6 5 4 3 2 1 0 */ +# define F_Bit 0x40 /* I F T M4 M3 M2 M1 M0 */ + +/* + ************************************************************************ + * Cache Size ID Register, CCSIDR (cp15, 1, c0, c0, 0) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |W|W|R|W|NumSets |Associativity |L | + * |T|B|A|A| | |S | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_CCSIDR_WT 31 +#define M_CCSIDR_WT (0x1 << S_CCSIDR_WT) /* Support write-through */ +#define S_CCSIDR_WB 30 +#define M_CCSIDR_WB (0x1 << S_CCSIDR_WB) /* Support write-back */ +#define S_CCSIDR_RA 29 +#define M_CCSIDR_RA (0x1 << S_CCSIDR_RA) /* Support read-allocation */ +#define S_CCSIDR_WA 28 +#define M_CCSIDR_WA (0x1 << S_CCSIDR_WA) /* Support write-allocation */ +#define S_CCSIDR_SETS 13 +#define M_CCSIDR_SETS (0x7fff << S_CCSIDR_SETS) /* Number of sets */ +#define S_CCSIDR_A 3 +#define M_CCSIDR_A (0x3ff << S_CCSIDR_A) /* Number of associatiovity */ +#define S_CCSIDR_LS 0 +#define M_CCSIDR_LS (0x7 << S_CCSIDR_LS) /* Cache line size */ + +/* + ************************************************************************ + * Cache Level ID Register, CLIDR (cp15, 1, c0, c0, 1) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |0|0|LoUU |LoC |LoUIS|CT7 |CT6 |CT5 |CT4 |CT3 |CT2 |CT1 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_CLIDR_LoUU 27 +#define M_CLIDR_LoUU (0x7 << S_CLIDR_LoUU) +#define S_CLIDR_LoC 24 +#define M_CLIDR_LoC (0x7 << S_CLIDR_LoC) /* Cache cohernecy level */ +#define S_CLIDR_LoUIS 21 +#define M_CLIDR_LoUIS (0x7 << S_CLIDR_LoUIS) +#define S_CLIDR_Ctype7 18 +#define M_CLIDR_Ctype7 (0x7 << S_CLIDR_Ctype7) /* Cache type of level 7 cache */ +#define S_CLIDR_Ctype6 15 +#define M_CLIDR_Ctype6 (0x7 << S_CLIDR_Ctype6) /* Cache type of level 6 cache */ +#define S_CLIDR_Ctype5 12 +#define M_CLIDR_Ctype5 (0x7 << S_CLIDR_Ctype5) /* Cache type of level 5 cache */ +#define S_CLIDR_Ctype4 9 +#define M_CLIDR_Ctype4 (0x7 << S_CLIDR_Ctype4) /* Cache type of level 4 cache */ +#define S_CLIDR_Ctype3 6 +#define M_CLIDR_Ctype3 (0x7 << S_CLIDR_Ctype3) /* Cache type of level 3 cache */ +#define S_CLIDR_Ctype2 3 +#define M_CLIDR_Ctype2 (0x7 << S_CLIDR_Ctype2) /* Cache type of level 2 cache */ +#define S_CLIDR_Ctype1 0 +#define M_CLIDR_Ctype1 (0x7 << S_CLIDR_Ctype1) /* Cache type of level 1 cache */ + +#define K_CLIDR_Ctype_NO 0 /* No cache */ +#define K_CLIDR_Ctype_IC 1 /* Instruction cache only */ +#define K_CLIDR_Ctype_DC 2 /* Data cache only */ +#define K_CLIDR_Ctype_ID 3 /* Seperate instruction and data caches, Harvard cache */ +#define K_CLIDR_Ctype_U 4 /* Unified cache, von Neumann cacge */ + +/* + ************************************************************************ + * Cache Size Selection Register, CCSELR (cp15, 2, c0, c0, 0) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |Reserved |Level|I| + * | | |n| + * | | |D| + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_CCSELR_Level 1 +#define M_CCSELR_Level (0x7 << S_CCSELR_Level) /* Cache level */ +#define S_CCSELR_InD 0 +#define M_CCSELR_InD (0x1 << S_CCSELR_InD) /* I$ or D$ */ + +/* + ************************************************************************ + * System Control Register, SCTLR (cp15, 0, c1, c0, 0) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |R|T|A|T|N|0|E|V|1|U|F|U|W|1|H|1|0|R|V|I|Z|S|0|0|B|1|B|1|1|C|A|M| + * | |E|F|R|M| |E|E| | |I|W|X| |A| | | | | | |W| | | | |E| | | | | | + * | | |E|E|F| | | | | | |X|N| | | | | | | | | | | | | |N| | | | | | + * | | | | |I| | | | | | |N| | | | | | | | | | | | | | | | | | | | | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_SCTLR_TE 30 +#define M_SCTLR_TE (0x1 << S_SCTLR_TE) /* Thumb exception enable */ +#define S_SCTLR_AFE 29 +#define M_SCTLR_AFE (0x1 << S_SCTLR_AFE) /* Access flag enable */ +#define S_SCTLR_TRE 28 +#define M_SCTLR_TRE (0x1 << S_SCTLR_TRE) /* TXE remap enable */ +#define S_SCTLR_NMFI 27 +#define M_SCTLR_NMFI (0x1 << S_SCTLR_NMFI) /* None-maskable FIQ enbale (RO) */ +#define S_SCTLR_EE 25 +#define M_SCTLR_EE (0x1 << S_SCTLR_EE) /* Exception Endianness: big-endian */ +#define S_SCTLR_VE 24 +#define M_SCTLR_VE (0x1 << S_SCTLR_VE) /* Interrupt Vector Enable */ +#define S_SCTLR_FI 21 +#define M_SCTLR_FI (0x1 << S_SCTLR_FI) /* Fast interrupt configuraiont enable */ +#define S_SCTLR_UWXN 20 +#define M_SCTLR_UWXN (0x1 << S_SCTLR_UWXN) /* */ +#define S_SCTLR_WXN 19 +#define M_SCTLR_WXN (0x1 << S_SCTLR_WXN) +#define S_SCTLR_HA 17 +#define M_SCTLR_HA (0x1 << S_SCTLR_HA) /* Hardware access flag enable */ +#define S_SCTLR_RR 14 +#define M_SCTLR_RR (0x1 << S_SCTLR_RR) /* Round-robin select */ +#define S_SCTLR_V 13 +#define M_SCTLR_V (0x1 << S_SCTLR_V) /* Vector bits */ +#define S_SCTLR_I 12 +#define M_SCTLR_I (0x1 << S_SCTLR_I) /* Instruction cache enable */ +#define S_SCTLR_Z 11 +#define M_SCTLR_Z (0x1 << S_SCTLR_Z) /* Branch prediction enable */ +#define S_SCTLR_SW 10 +#define M_SCTLR_SW (0x1 << S_SCTLR_SW) /* SW and SWP enable */ +#define S_SCTLR_CP15BEN 5 +#define M_SCTLR_CP15BEN (0x1 << S_SCTLR_CP15BEN) /* CP15 barrier support */ +#define S_SCTLR_C 2 +#define M_SCTLR_C (0x1 << S_SCTLR_C) /* Data and Unidied cache enable */ +#define S_SCTLR_A 1 +#define M_SCTLR_A (0x1 << S_SCTLR_A) /* Alignment fault checking enable */ +#define S_SCTLR_M 0 +#define M_SCTLR_M (0x1 << S_SCTLR_M) /* PL1&0 stage MMU enable */ + +/************************************************************************ + * Auxiliary Control Register, ACTLR (cp15, 0, c1, c0, 1) * + ************************************************************************ + * + * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |UNP/SBZP |P|A|E|S|RAZ|W|L|L|F| + * | |a|l|X|M| | |1|2|W| + * | |r|l|C|P| |f| | | | + * | | |o|L| | |l|p|p| | + * | |o|c| | | | |r|r| | + * | |n| | | | |z|e|e| | + * | | |o| | | |e|f|f| | + * | | |n| | | |r| | | | + * | | |e| | | |o|e|e| | + * | | | | | | |s|n|n| | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +#define S_ACTLR_PAR_ON 9 +#define M_ACTLR_PAR_ON (0x1 << S_ACTLR_PAR_ON) /* Parity on */ +#define S_ACTLR_ALLOC_ONE 8 +#define M_ACTLR_ALLOC_ONE (0x1 << S_ACTLR_ALLOC_ONE) /* Alloc in one way */ +#define S_ACTLR_EXCL 7 +#define M_ACTLR_EXCL (0x1 << S_ACTLR_EXCL) /* Exclusive cache */ +#define S_ACTLR_SMP 6 +#define M_ACTLR_SMP (0x1 << S_ACTLR_SMP) /* SMP */ +#define S_ACTLR_W_FL_ZEROS 3 +#define M_ACTLR_W_FL_ZEROS (0x1 << S_ACTLR_W_FL_ZEROS) /* Write full line of zeros mode */ +#define S_ACTLR_L1_PERF_EN 2 +#define M_ACTLR_L1_PERF_EN (0x1 << S_ACTLR_L1_PERF_EN) /* Dside prefetch enable */ +#define S_ACTLR_L2_PERF_EN 1 +#define M_ACTLR_L2_PERF_EN (0x1 << S_ACTLR_L2_PERF_EN) /* L2 prefetch enable */ +#define S_ACTLR_FW 0 +#define M_ACTLR_FW (0x1 << S_ACTLR_FW) /* Cache and TLB maintenance boardcast */ + + diff --git a/board/novatek/ns02501/loader/Include/Driver/sie_base.h b/board/novatek/ns02501/loader/Include/Driver/sie_base.h new file mode 100755 index 000000000000..f5b99bb63c50 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/sie_base.h @@ -0,0 +1,808 @@ +/* + Public header file for SIE module. + + Copyright Novatek Microelectronics Corp. 2023. All rights reserved. +*/ + +#ifndef _SIE_BASE_H_ +#define _SIE_BASE_H_ + +#include "constant.h" + +#ifndef ENUM_DUMMY4WORD +#define ENUM_DUMMY4WORD(name) E_##name = 0x10000000 +#endif + +typedef enum { + FUNC_PATGEN_EN = (1<<1), + FUNC_DVI_EN = (1<<2), + FUNC_OB_BYPASS_EN = (1<<5), + FUNC_DVS_DECOMP_EN = (1<<10), ///< only SIE3 + FUNC_DPC_EN = (1<<11), ///< only SIE1/2 + FUNC_ACT_DATAEXT_EN = (1<<13), ///< only SIE1/2 + FUNC_ECS_EN = (1<<15), + FUNC_DGAIN_EN = (1<<16), + FUNC_BS_H_EN = (1<<17), + FUNC_BS_V_EN = (1<<18), + FUNC_RAWENC_EN = (1<<19), ///< only SIE1/2 + FUNC_CGAIN_EN = (1<<20), + FUNC_STCS_HISTO_Y_EN = (1<<22), + FUNC_STCS_LA_EN = (1<<23), + FUNC_STCS_CA_EN = (1<<24), + FUNC_STCS_DGAIN_EN = (1<<25), + FUNC_EVS_EN = (1<<26), ///< only SIE3 + FUNC_DRAM_OUT0_EN = (1<<27), + FUNC_COMPANDING_EN = (1<<28) ///< only SIE1/2 +} SIE_FUNCTION_SEL; + +typedef enum { + MAIN_IN_PARA_MSTR_SNR = 0, ///< Parallel Master Sensor + MAIN_IN_CSI_1, ///< Serial Sensor from CSI-1 + MAIN_IN_CSI_2, ///< Serial Sensor from CSI-2 + MAIN_IN_2PPATGEN, ///< Self Pattern-Generator(2-pixel) + MAIN_IN_DRAM_IN, ///< from DRAM IN1 + MAIN_IN_MAX, + ENUM_DUMMY4WORD(SIE_MAIN_INPUT_SEL) +} SIE_MAIN_INPUT_SEL; + +typedef enum { + DATA_PHASE_RISING = 0, ///< rising edge latch/trigger + DATA_PHASE_FALLING, ///< falling edge latch/trigger + DATA_PHASE_MAX, + ENUM_DUMMY4WORD(SIE_PHASE_SEL) +} SIE_PHASE_SEL; + +typedef enum { + /* for RGGB 2x2 */ + CFAPAT_R = 0, ///< start pixel is R + CFAPAT_Gr = 1, ///< start pixel is GR + CFAPAT_Gb = 2, ///< start pixel is GB + CFAPAT_B = 3, ///< start pixel is B + + /* for RGBIR 4x4 */ + CFAPAT_RG_GI = 0, + CFAPAT_GB_IG = 1, + CFAPAT_GI_BG = 2, + CFAPAT_IG_GR = 3, + CFAPAT_BG_GI = 4, + CFAPAT_GR_IG = 5, + CFAPAT_GI_RG = 6, + CFAPAT_IG_GB = 7, + + CFAPAT_MAX, + ENUM_DUMMY4WORD(SIE_CFAPAT_SEL) +} SIE_CFAPAT_SEL; + +typedef enum { + PATGEN_MODE_COLORBAR_V = 1, ///< Color bar, Vertical + PATGEN_MODE_RANDOM, ///< Random + PATGEN_MODE_FIXED, ///< Fixed + PATGEN_MODE_HINCREASE, ///< 1D Increment + PATGEN_MODE_HVINCREASE, ///< 2D increment + PATGEN_MODE_MAX, + ENUM_DUMMY4WORD(SIE_PATGEN_MODE) +} SIE_PATGEN_MODE; + +typedef enum { + DATA_PACKBUS_8 = 0, ///< 8 bits packing + DATA_PACKBUS_10, ///< 10 bits packing + DATA_PACKBUS_12, ///< 12 bits packing + DATA_PACKBUS_16, ///< 16 bits packing + DATA_PACKBUS_MAX, + ENUM_DUMMY4WORD(SIE_DATA_PACKBUS_SEL) +} SIE_DATA_PACKBUS_SEL; + +typedef enum { + PARAL_RAW_BIT_12 = 0, ///< 12 bits input + PARAL_RAW_BIT_10, ///< 10 bits input + PARAL_RAW_BIT_MAX, + ENUM_DUMMY4WORD(SIE_PARAL_RAW_BITDEPTH) +} SIE_PARAL_RAW_BITDEPTH; + +typedef enum { + DRAM_OUT_MODE_NORMAL = 0, + DRAM_OUT_MODE_SINGLE, + DRAM_OUT_MODE_MAX, + ENUM_DUMMY4WORD(SIE_DRAM_OUT_MODE) +} SIE_DRAM_OUT_MODE; + +typedef enum { + TIMING_DELAY_0T = 0, + TIMING_DELAY_4T, + TIMING_DELAY_8T, + TIMING_DELAY_16T, + TIMING_DELAY_MAX, + ENUM_DUMMY4WORD(SIE_TIMING_DELAY) +} SIE_TIMING_DELAY; + +typedef enum { + SIE_LOAD_DISABLE = 0, + SIE_LOAD_FROM_SIE1, + SIE_LOAD_FROM_SIE2, + SIE_LOAD_FROM_MAX, + ENUM_DUMMY4WORD(SIE_LOAD_SRC) +} SIE_LOAD_SRC; + +typedef enum { + SIE_OUTBIT_12 = 0, ///< 12 output bits + SIE_OUTBIT_10, ///< 10 output bits + SIE_OUTBIT_8, ///< 8 output bits + SIE_OUTBIT_MAX, + ENUM_DUMMY4WORD(SIE_OUTBIT_SEL) +} SIE_OUTBIT_SEL; + +typedef enum { + SIE_PACK_AT_MSB = 0, ///< data output at MSB + SIE_PACK_AT_LSB, ///< data output at LSB + SIE_PACK_AT_MAX, + ENUM_DUMMY4WORD(SIE_PACK_FORMAT) +} SIE_PACK_FORMAT; + +typedef enum { + SIE_FMT_BAYER = 0, ///< Bayer 2x2 format + SIE_FMT_RGBIR, ///< RGB-IR 4x4 format + SIE_FMT_MAX, + ENUM_DUMMY4WORD(SIE_BAYER_FMT) +} SIE_BAYER_FMT; + +typedef enum { + ECS_BAYER_3CH_10BIT = 0, ///< Bayer 2x2 format + ECS_BAYER_4CH_8BIT, ///< RGB-IR 4x4 format + ECS_BAYER_MAX, + ENUM_DUMMY4WORD(SIE_ECS_BAYER_FMT) +} SIE_ECS_BAYER_FMT; + +typedef enum { + SIE_OB_SUB_OFS = 0, ///< ob sub use ofs + SIE_OB_SUB_OBAVG, ///< ob sub use ob avg result + SIE_OB_SUB_MAX, + ENUM_DUMMY4WORD(SIE_OB_SUB_MODE) +} SIE_OB_SUB_MODE; ///< not supported + +typedef enum { + ECS_MAPSIZE_65X65 = 0, ///< 65x65 + ECS_MAPSIZE_49X49, ///< 49x49 + ECS_MAPSIZE_33X33, ///< 33x33 + ECS_MAPSIZE_MAX, + ENUM_DUMMY4WORD(SIE_ECS_MSIZE_SEL) +} SIE_ECS_MSIZE_SEL; + +typedef enum { + STCS_HISTO_POST_GAMMA = 0, + STCS_HISTO_PRE_GAMMA, + STCS_HISTO_SRC_MAX, + ENUM_DUMMY4WORD(SIE_HISTO_SRC_SEL) +} SIE_HISTO_SRC_SEL; + +typedef enum { + STCS_CA_SRC_AFTER_IRSUB = 0, + STCS_CA_SRC_BEFORE_OB, + STCS_CA_SRC_SEL_MAX, + ENUM_DUMMY4WORD(SIE_CA_SRC_SEL) +} SIE_CA_SRC_SEL; + +typedef enum { + STCS_LA1_POST_CG = 0, ///< LA1 source from data right after color-gain + STCS_LA1_PRE_CG, ///< LA1 source from data right before color-gain + STCS_LA1_SRC_MAX, + ENUM_DUMMY4WORD(SIE_STCS_LA1_SRC_SEL) +} SIE_STCS_LA1_SRC_SEL; + +typedef enum { + STCS_LA1_RGB = 0, + STCS_LA1_G, + STCS_LA1_MAX, + ENUM_DUMMY4WORD(SIE_STCS_LA_RGB2Y1_MOD_SEL) +} SIE_STCS_LA_RGB2Y1_MOD_SEL; + +typedef enum { + STCS_LA2_RGB = 0, + STCS_LA2_G, + STCS_LA2_MAX, + ENUM_DUMMY4WORD(SIE_STCS_LA_RGB2Y2_MOD_SEL) +} SIE_STCS_LA_RGB2Y2_MOD_SEL; + +typedef enum { + DEF_FACT_50 = 0, ///< defect concealment cross-channel weighting = 50% + DEF_FACT_25, ///< defect concealment cross-channel weighting = 25%; recommanded + DEF_FACT_12, ///< defect concealment cross-channel weighting = 12.5% + DEF_FACT_06, ///< defect concealment cross-channel weighting = 6.25% + DEF_FACT_MAX, + ENUM_DUMMY4WORD(SIE_DEF_FACT_SEL) +} SIE_DEF_FACT_SEL; + +typedef enum { + GAIN_FIELD_2_8 = 0, ///< 2bits decimal, 8bits fraction + GAIN_FIELD_3_7, ///< 3bits decimal, 7bits fraction + GAIN_FIELD_MAX, + ENUM_DUMMY4WORD(SIE_GAIN_FIELD) +} SIE_GAIN_FIELD; + +typedef enum { + EV_FMT_16BIT = 0, ///< 16bit mode + EV_FMT_20BIT, ///< 20bit mode + EV_FMT_MAX, + ENUM_DUMMY4WORD(SIE_COMPANDING_EV_FMT_SEL) +} SIE_COMPANDING_EV_FMT_SEL; + +typedef enum { + DATAEXT_ORDER_EXT_SKIP = 0, + DATAEXT_ORDER_SKIP_EXT, + DATAEXT_ORDER_MAX, + ENUM_DUMMY4WORD(SIE_DATAEXT_ORDER) +} SIE_DATAEXT_ORDER; + +typedef enum { + DATAEXT_INI_OP_DROP_INI_LINE = 0, + DATAEXT_INI_OP_KEEP_INI_LINE, + DATAEXT_INI_OP_MAX, + ENUM_DUMMY4WORD(SIE_DATAEXT_INI_OP) +} SIE_DATAEXT_INI_OP; + +typedef enum { + DVI_CCIR_MODE_SD = 0, ///< SD mode (8 bits) + DVI_CCIR_MODE_HD, ///< HD mode (16bits) + DVI_CCIR_MODE_MAX, + ENUM_DUMMY4WORD(SIE_DVI_CCIR_MODE_SEL) +} SIE_DVI_CCIR_MODE_SEL; + +typedef enum { + DVI_CCIR_FMT_601 = 0, ///< CCIR 601 + DVI_CCIR_FMT_656_EAV, ///< CCIR 656 EAV code recognition + DVI_CCIR_FMT_656_ACT, ///< CCIR 656 ACT size setting (ACT_WIDTH and ACT_HEIGHT are used to determine active region size) + DVI_CCIR_FMT_MAX, + ENUM_DUMMY4WORD(SIE_DVI_CCIR_FMT_SEL) +} SIE_DVI_CCIR_FMT_SEL; + +typedef enum { + DVI_CCIR_VD_MODE_FIELD = 0,///< interlace + DVI_CCIR_VD_MODE_SAV, ///< progressive + DVI_CCIR_VD_MODE_MAX, + ENUM_DUMMY4WORD(SIE_DVI_CCIR_VD_MODE_SEL) +} SIE_DVI_CCIR_VD_MODE_SEL; + +typedef enum { + DVI_OUT_SWAP_YUYV = 0, + DVI_OUT_SWAP_YVYU, + DVI_OUT_SWAP_UYVY, + DVI_OUT_SWAP_VYUY, + DVI_OUT_SWAP_MAX, + ENUM_DUMMY4WORD(SIE_DVI_OUT_SWAP_SEL) +} SIE_DVI_OUT_SWAP_SEL; ///< output swap for DVI_IN_FMT_YUV422 + +typedef enum { + ENC_ADJ_MODE_NORMAL = 0, ///< rawenc parameters for normal mode + ENC_ADJ_MODE_AGGRESIVE, ///< rawenc parameters for aggresive mode + ENC_ADJ_MODE_MAX, + ENUM_DUMMY4WORD(SIE_RAWENC_ADJ_MODE_SEL) +} SIE_RAWENC_ADJ_MODE_SEL; + +typedef enum { + ENC_RATE_50 = 0, + ENC_RATE_58, + ENC_RATE_66, ///< not supported + ENC_RATE_41, ///< not supported + ENC_RATE_MAX, + ENUM_DUMMY4WORD(SIE_RAWENC_RATE_SEL) +} SIE_RAWENC_RATE_SEL; + +typedef enum { + ENC_SHARE_NONE = 0, + ENC_SHARE_SHARED, + ENC_SHARE_MAX, + ENUM_DUMMY4WORD(SIE_RAWENC_SHARE_SEL) +} SIE_RAWENC_SHARE_SEL; + +typedef enum { + ENC_FRM_RST_ID_0 = 0, + ENC_FRM_RST_ID_1, + ENC_FRM_RST_ID_MAX, + ENUM_DUMMY4WORD(SIE_RAWENC_FRM_RST_ID_SEL) +} SIE_RAWENC_FRM_RST_ID_SEL; ///< only supported for SIE1 + +typedef struct { + UINT8 tbl_idx[8]; ///< Raw encoder - Quality DCT Table + UINT8 lvl_thres[4]; ///< Raw encoder - Quality DCT Level Threshold +} SIE_RAWENC_DCT_PARAM; + +typedef struct { + SIE_RAWENC_ADJ_MODE_SEL adj_mode; ///< Raw encoder - Table parameter adjust mode + SIE_RAWENC_RATE_SEL rate; ///< Raw encoder - Target rate of encoded bitstream per segment + BOOL gamma_en; ///< Raw encoder - Gamma + SIE_RAWENC_DCT_PARAM dct; ///< Raw encoder - DCT Param +} SIE_RAWENC_PARAM; + +typedef struct { + SIE_PHASE_SEL vd_phase; ///< VD phase + SIE_PHASE_SEL hd_phase; ///< HD phase + SIE_PHASE_SEL data_phase; ///< Data phase + BOOL vd_inv; ///< VD Invert + BOOL hd_inv; ///< HD Invert + SIE_PARAL_RAW_BITDEPTH raw_bitdepsel; +} SIE_PARAL_SIGNAL_PARAM; + +typedef struct { + SIE_PATGEN_MODE patgen_mode; + UINT32 patgen_val; +} SIE_PATGEN_PARAM; + +typedef struct { + UINT32 sz_x; ///< horizontal size + UINT32 sz_y; ///< vertical size +} SIE_SRC_WIN_PARAM; + +typedef struct { + UINT16 st_x; ///< horizontal start + UINT16 st_y; ///< vertical start + UINT32 sz_x; ///< horizontal size + UINT32 sz_y; ///< vertical size + SIE_CFAPAT_SEL cfa_pat; ///< CFA start pattern +} SIE_ACT_WIN_PARAM; + +typedef struct { + UINT16 st_x; ///< horizontal start + UINT16 st_y; ///< vertical start + UINT32 sz_x; ///< horizontal size + UINT32 sz_y; ///< vertical size + SIE_CFAPAT_SEL cfa_pat; ///< CFA start pattern +} SIE_CRP_WIN_PARAM; + +typedef struct { + SIE_TIMING_DELAY vd_delay; + SIE_TIMING_DELAY hd_delay; +} SIE_VDHD_DELAY_PARAM; + +typedef enum { + DRAM_BURST_LEN_64 = 0, + DRAM_BURST_LEN_48, + DRAM_BURST_LEN_32, + DRAM_BURST_LEN_16, + DRAM_BURST_LEN_MAX, + ENUM_DUMMY4WORD(SIE_DRAM_BURST_LEN_SEL) +} SIE_DRAM_BURST_LEN_SEL; + +typedef enum { + DRAM_OUT0_BURST_LEN_128 = 0, + DRAM_OUT0_BURST_LEN_96, + DRAM_OUT0_BURST_LEN_64, + DRAM_OUT0_BURST_LEN_32, + DRAM_OUT0_BURST_LEN_MAX, + ENUM_DUMMY4WORD(SIE_DRAM_OUT0_BURST_LEN_SEL) +} SIE_DRAM_OUT0_BURST_LEN_SEL; + +typedef enum { + DRAM_OUT2_BURST_LEN_32 = 0, + DRAM_OUT2_BURST_LEN_16, + DRAM_OUT2_BURST_LEN_MAX, + ENUM_DUMMY4WORD(SIE_DRAM_OUT2_BURST_LEN_SEL) +} SIE_DRAM_OUT2_BURST_LEN_SEL; + +typedef struct { + SIE_DRAM_OUT0_BURST_LEN_SEL out0; + SIE_DRAM_BURST_LEN_SEL out1; + SIE_DRAM_OUT2_BURST_LEN_SEL out2; + SIE_DRAM_BURST_LEN_SEL in1; + SIE_DRAM_BURST_LEN_SEL in2; +} SIE_DRAM_BURST_LEN_PARAM; + +typedef struct { + UINT32 addr_pa; +} SIE_DRAM_ADDR; + +typedef struct { + UINT32 lofs; ///< line-offset + SIE_DATA_PACKBUS_SEL pack_bus; ///< pack bus bit number +} SIE_DRAM_IN1_PARAM; + +typedef struct { + UINT32 lofs; ///< line-offset + SIE_DATA_PACKBUS_SEL pack_bus; ///< pack bus bit number + BOOL hflip; ///< mirror + BOOL vflip; ///< flip + BOOL ringbuf_en; + UINT16 ringbuf_len; + SIE_OUTBIT_SEL out_bitdepth; + SIE_PACK_FORMAT pack_fmt; +} SIE_DRAM_OUT0_PARAM; + +typedef struct { + UINT32 lofs; ///< line-offset + BOOL vflip; ///< H flip + BOOL hflip; ///< V flip +} SIE_DRAM_OUT1_PARAM; + +typedef struct { + UINT8 pos_code; ///< positive code value + UINT8 neg_code; ///< negative code value + UINT8 nochg_code; ///< no changed code value +} SIE_DVS_CODE_PARAM; + +typedef struct { + UINT32 sz_x; + UINT32 sz_y; +} SIE_DVS_WIN_PARAM; + +typedef struct { + UINT32 mot_out_sz; ///< must > 0 and align 4 +} SIE_EVS_OUT_PARAM; + +typedef struct { + UINT16 r_gain; ///< Color Gain, R Gain + UINT16 gr_gain; ///< Color Gain, Gr Gain + UINT16 gb_gain; ///< Color Gain, Gb Gain + UINT16 b_gain; ///< Color Gain, B Gain + UINT16 ir_gain; ///< Color Gain, B Gain + SIE_GAIN_FIELD gain_sel; ///< gain filed selection +} SIE_CGAIN_PARAM; + +typedef struct { + UINT32 gain_8p8bit; ///< digital gain in 8.8 bits format +} SIE_DGAIN_PARAM; + +typedef struct { + UINT16 decomp_kp[11]; ///< 0 ~ 0xfff + UINT16 decomp_sp[12]; ///< 0 ~ 0xfff + UINT8 decomp_sb[12]; ///< 0 ~ 0xf +} SIE_DECOMPANDING_PARAM; + +typedef struct { + UINT8 comp_kp[11]; ///< 0 ~ 0x1f + UINT16 comp_sp[12]; ///< 0 ~ 0xfff + UINT8 comp_sb[12]; ///< 0 ~ 0xf +} SIE_COMPANDING_PARAM; + +typedef struct { + UINT16 ofs; +} SIE_OB_OFS_PARAM; + +typedef struct { + BOOL dither_en; ///< dithering enable + BOOL dither_rst; ///< dithering reset + UINT32 dither_lvl; ///< dithering level; 0x0=bit[1:0], 0x7=bit[8:7] + SIE_ECS_MSIZE_SEL map_size_sel; ///< ecs table size + UINT32 map_shift; ///< multiplication shift bit number +} SIE_ECS_PARAM; + +typedef struct { + UINT32 hscl_fctr; ///< map horizontal scaling factor + UINT32 vscl_fctr; ///< map vertical scaling factor +} SIE_ECS_SCAL_PARAM; + +typedef struct { + SIE_DEF_FACT_SEL fact; + SIE_CFAPAT_SEL cfa_pat; +} SIE_DPC_PARAM; + +typedef struct { + SIE_DATAEXT_ORDER ext_order; + SIE_DATAEXT_INI_OP ini_line_op; + UINT8 ext_data_skip; + UINT8 ext_data_len; + UINT16 ini_line_len; +} SIE_DATAEXT_PARAM; + +typedef struct { + BOOL src_intpV; ///< vertical interpolation, only for input width<=8188 or 5504 + UINT32 iv; ///< bayer scaling - integration value + UINT32 sv; ///< bayer scaling - skipping value + UINT32 bvR; ///< bayer scaling - begin value for R/Gb channel + UINT32 bvB; ///< bayer scaling - begin value for B/Gr channel + UINT32 out_sz; ///< bayer scaling - output size + UINT32 divM[2]; ///< bayer scaling - division parameter M + UINT32 divS[2]; ///< bayer scaling - division parameter S +} SIE_BS_H_PARAM; + +typedef struct { + UINT32 iv; ///< bayer scaling - integration value + UINT32 sv; ///< bayer scaling - skipping value + UINT32 bvR; ///< bayer scaling - begin value for R/Gb channel + UINT32 bvB; ///< bayer scaling - begin value for B/Gr channel + UINT32 out_sz; ///< bayer scaling - output size + UINT32 divM[2]; ///< bayer scaling - division parameter M + UINT32 divS[2]; ///< bayer scaling - division parameter S + UINT32 in_shift; ///< bayer scaling - input shift + UINT32 divMRb[16]; ///< bayer scaling - division parameter M for R/B + UINT32 divSRb[16]; ///< bayer scaling - division parameter S for R/B +} SIE_BS_V_PARAM; + +typedef struct { + UINT32 in_sz_x; ///< input horizontal size + UINT32 in_sz_y; ///< input vertical size + UINT32 out_sz_x; ///< output horizontal size + UINT32 out_sz_y; ///< output vertical size + UINT32 lpf; ///< low-pass valumn, 0~100, (suggestion: 50) + UINT32 bin_pwr; ///< binning, 0~2, (suggestion: 0) + BOOL adaptivelpf_en; ///< 0: LPF is absolute value; 1: LPF is adaptive value (suggestion: 1) +} SIE_BS_PARAM; + +typedef struct { + BOOL la_cg_en; + BOOL la_gamma_en; + BOOL la_th_en; ///< not supported + BOOL ca_th_en; + UINT16 companding_shift; ///< must setup when companding enable and roi_acc or ca/la enable + SIE_HISTO_SRC_SEL histo_src_sel; + SIE_STCS_LA1_SRC_SEL la1_src_sel; + SIE_STCS_LA_RGB2Y1_MOD_SEL la_rgb2y1_mod; + SIE_STCS_LA_RGB2Y2_MOD_SEL la_rgb2y2_mod; + SIE_CA_SRC_SEL ca_accm_src; +} SIE_STCS_PATH_PARAM; + +typedef struct { + SIE_CFAPAT_SEL ca_cfa_pat; + UINT32 ca_roi_stx; + UINT32 ca_roi_sty; + UINT32 ca_roi_szx; + UINT32 ca_roi_szy; + UINT32 ca_win_numx; + UINT32 ca_win_numy; + UINT32 la_roi_stx; + UINT32 la_roi_sty; + UINT32 la_roi_szx; + UINT32 la_roi_szy; + UINT32 la_win_numx; + UINT32 la_win_numy; +} SIE_STCS_CALASIZE_INFO; + +typedef struct { + UINT16 ca_ob_ofs; ///< OB ofs for CA + UINT16 la_ob_ofs; ///< OB ofs for LA +} SIE_STCS_OB_PARAM; + +typedef struct { + UINT32 fctr_x; ///< horizontal scaling factor + UINT32 fctr_y; ///< vertical scaling factor +} SIE_CA_SCALE_PARAM; + +typedef struct { + UINT32 ca_irsub_rwet; ///< IR weight for subtraction, R channel + UINT32 ca_irsub_gwet; ///< IR weight for subtraction, G channel + UINT32 ca_irsub_bwet; ///< IR weight for subtraction, B channel +} SIE_CA_IRSUB_PARAM; + +typedef struct { + UINT32 la_irsub_rwet; ///< IR weight for subtraction, R channel + UINT32 la_irsub_gwet; ///< IR weight for subtraction, G channel + UINT32 la_irsub_bwet; ///< IR weight for subtraction, B channel +} SIE_LA_IRSUB_PARAM; + +typedef struct { + UINT32 st_x; ///< horizontal start + UINT32 st_y; ///< vertical start + UINT32 sz_x; ///< horizontal size + UINT32 sz_y; ///< vertical size + SIE_CFAPAT_SEL cfa_pat; ///< CFA start pattern +} SIE_CA_CROP_PARAM; + +typedef struct { + UINT32 st_x; ///< horizontal start + UINT32 st_y; ///< vertical start + UINT32 sz_x; ///< horizontal size + UINT32 sz_y; ///< vertical size +} SIE_LA_CROP_PARAM; + +typedef struct { + UINT32 win_numx; ///< color accumulation - horizontal window number + UINT32 win_numy; ///< color accumulation - vertical window number + UINT32 win_szx; ///< color accumulation - horizontal window size + UINT32 win_szy; ///< color accumulation - vertical window size +} SIE_CA_WIN_PARAM; + +typedef struct { + UINT32 win_numx; ///< color accumulation - horizontal window number + UINT32 win_numy; ///< color accumulation - vertical window number + UINT32 win_szx; ///< color accumulation - horizontal window size + UINT32 win_szy; ///< color accumulation - vertical window size +} SIE_LA_WIN_PARAM; + +typedef struct { + UINT16 r_gain; ///< R Gain + UINT16 g_gain; ///< G Gain + UINT16 b_gain; ///< B Gain +} SIE_LA_CG_PARAM; + +typedef struct { + UINT16 *buf_la1; + UINT16 *buf_la2; +} SIE_LA_RSLT; + +typedef struct { + UINT16 *buf_r; + UINT16 *buf_g; + UINT16 *buf_b; + UINT16 *buf_ir; + UINT16 *acc_cnt; +} SIE_CA_RSLT; + +typedef struct { + UINT16 g_th_lower; + UINT16 g_th_upper; + UINT16 rg_th_lower; + UINT16 rg_th_upper; + UINT16 bg_th_lower; + UINT16 bg_th_upper; + UINT16 pg_th_lower; + UINT16 pg_th_upper; +} SIE_CA_TH_PARAM; + +typedef struct { + SIE_CA_WIN_PARAM ca_win; + SIE_STCS_OB_PARAM stcs_ob; + SIE_CGAIN_PARAM cgain; + SIE_BAYER_FMT bayer_fmt; +} SIE_CA_RSLT_PARAMS; + +typedef struct { + UINT16 *buf_hist; +} SIE_HIST_RSLT; + +typedef struct { + SIE_DVI_CCIR_MODE_SEL mode; ///< SD(8bits)/HD(16bits) + SIE_DVI_CCIR_FMT_SEL fmt; ///< CCIR601/CCIR656 + SIE_DVI_CCIR_VD_MODE_SEL vd_mode; ///< 0:interlace 1:progressive + BOOL id_auto_align; ///< demux channel data base on CHID in EAV/SAV, 0:disable 1:enable + BOOL field_enb; ///< check field_sel and output corresponding frame + BOOL field_sel; ///< 0:receive data when field=0, 1:receive data when field=1 + BOOL hd_in_swap; ///< byte swap control when in HD(16bit) mode + + UINT8 data_period; ///< receive data period used with data_idx + UINT8 data_idx; ///< index of selected pixel, as target channel id if enable ccir_id_auto_align +} SIE_DVI_CCIR_PARAM; + +typedef struct { + SIE_DVI_OUT_SWAP_SEL out_swap; ///< swap control for DVI_IN_FMT_YUV422 + BOOL out_split; ///< must enable when DVI_IN_FMT_YUV420 or out_yuv420_en = 1 + BOOL out_yuv420_en; ///< YUV422 to YUV420 control for DVI_IN_FMT_YUV422 + + SIE_DVI_CCIR_PARAM ccir; ///< ccir receive parameter +} SIE_DVI_PARAM; + +/************************************************************************************* + * Public Set Function Prototype [Direct apply] + *************************************************************************************/ +int sie_eng_set_soft_reset_hw_reg(void *handle, BOOL enb); +int sie_eng_set_checksum_en_hw_reg(void *handle, BOOL enb); +int sie_eng_set_interrupt_enable_hw_reg(void *handle, UINT32 int_en); +int sie_eng_set_load_hw_reg(void *handle); +int sie_eng_set_dramin_start_hw_reg(void *handle); +int sie_eng_set_main_input_hw_reg(void *handle, SIE_MAIN_INPUT_SEL mainInInfo); +int sie_eng_set_vdhd_delay_hw_reg(void *handle, SIE_VDHD_DELAY_PARAM *p_dly_info); +int sie_eng_set_global_load_src_hw_reg(void *handle, SIE_LOAD_SRC src); +int sie_eng_set_parallel_sig_hw_reg(void *handle, SIE_PARAL_SIGNAL_PARAM *p_paral_info); +int sie_eng_set_dvs_code_hw_reg(void *handle, SIE_DVS_CODE_PARAM *p_dvs); +int sie_eng_set_ccir_header_check_hw_reg(void *handle, UINT32 header); + +int sie_eng_set_companding_hw_reg(void *handle, SIE_COMPANDING_PARAM *p_companding); +int sie_eng_set_decompanding_hw_reg(void *handle, SIE_DECOMPANDING_PARAM *p_decompanding); + +int sie_eng_set_la_gamma_hw_reg(void *handle, UINT16 *p_gam_tbl); + +int sie_eng_set_rawenc_share_sel_hw_reg(void *handle, SIE_RAWENC_SHARE_SEL share); +int sie_eng_set_rawenc_frm_rst_id_hw_reg(void *handle, SIE_RAWENC_FRM_RST_ID_SEL frm_rst_id); + +int sie_eng_set_dma_ch_disable_hw_reg(void *handle, BOOL disable); +int sie_eng_set_tcm_wait_b_resp_enb_hw_reg(void *handle, BOOL enb); + +/************************************************************************************* + * Public Set Function Prototype [VD latched] + *************************************************************************************/ +int sie_eng_set_ipp_ctrl_buf_reg(void *handle, BOOL direct2ipp_en); +int sie_eng_set_ydcc_direct_buf_reg(void *handle, BOOL enb); +int sie_eng_set_function_enable_buf_reg(void *handle, UINT32 func_en); +int sie_eng_set_single_function_enable_buf_reg(void *handle, SIE_FUNCTION_SEL func_item, BOOL enb); +int sie_eng_set_bayer_fmt_buf_reg(void *handle, SIE_BAYER_FMT fmt); +int sie_eng_set_ecs_mode_buf_reg(void *handle, SIE_ECS_BAYER_FMT mode); +int sie_eng_set_dvi_buf_reg(void *handle, SIE_DVI_PARAM *p_dvi); +int sie_eng_set_patgen_buf_reg(void *handle, SIE_PATGEN_PARAM *p_param); + +int sie_eng_set_rawenc_rate_buf_reg(void *handle, SIE_RAWENC_RATE_SEL rate); +int sie_eng_set_rawenc_gamma_en_buf_reg(void *handle, BOOL enb); +int sie_eng_set_rawenc_dct_buf_reg(void *handle, SIE_RAWENC_DCT_PARAM *p_dct); +int sie_eng_set_rawenc_param_buf_reg(void *handle, SIE_RAWENC_ADJ_MODE_SEL mode, SIE_RAWENC_RATE_SEL rate); + +int sie_eng_set_src_win_buf_reg(void *handle, SIE_SRC_WIN_PARAM *p_src_win); +int sie_eng_set_act_win_buf_reg(void *handle, SIE_ACT_WIN_PARAM *p_act_win); +int sie_eng_set_crop_win_buf_reg(void *handle, SIE_CRP_WIN_PARAM *p_crp_win); + +int sie_eng_set_bp1_buf_reg(void *handle, UINT32 bp); +int sie_eng_set_bp2_buf_reg(void *handle, UINT32 bp); +int sie_eng_set_bp3_buf_reg(void *handle, UINT32 bp); + +int sie_eng_set_cgain_buf_reg(void *handle, SIE_CGAIN_PARAM *p_cgain); +int sie_eng_set_dgain_buf_reg(void *handle, SIE_DGAIN_PARAM *p_dgain); + +int sie_eng_set_ecs_buf_reg(void *handle, SIE_ECS_PARAM *p_ecs, SIE_ACT_WIN_PARAM *p_actwin); +int sie_eng_set_ecs_scale_buf_reg(void *handle, SIE_ECS_SCAL_PARAM *p_ecs_scal); + +int sie_eng_set_dpc_buf_reg(void *handle, SIE_DPC_PARAM *p_dpc); + +int sie_eng_set_ob_ofs_buf_reg(void *handle, SIE_OB_OFS_PARAM *p_ob_ofs); + +int sie_eng_set_dataext_buf_reg(void *handle, SIE_DATAEXT_PARAM *p_dataext); + +int sie_eng_set_bs_buf_reg(void *handle, SIE_BS_PARAM *p_bs); +int sie_eng_set_bsh_buf_reg(void *handle, SIE_BS_H_PARAM *p_bsh); +int sie_eng_set_bsv_buf_reg(void *handle, SIE_BS_V_PARAM *p_bsv); + +int sie_eng_set_stcs_path_buf_reg(void *handle, SIE_STCS_PATH_PARAM *p_stcs_path); +int sie_eng_set_stcs_ob_buf_reg(void *handle, SIE_STCS_OB_PARAM *p_stcs_ob); + +int sie_eng_set_ca_crop_buf_reg(void *handle, SIE_CA_CROP_PARAM *p_ca_crop); +int sie_eng_set_ca_scale_buf_reg(void *handle, SIE_CA_SCALE_PARAM *p_ca_scal); +int sie_eng_set_ca_win_buf_reg(void *handle, SIE_CA_WIN_PARAM *p_la_win); +int sie_eng_set_ca_th_buf_reg(void *handle, SIE_CA_TH_PARAM *p_ca_th); +int sie_eng_set_ca_irsub_buf_reg(void *handle, SIE_CA_IRSUB_PARAM *p_ca_irsub); + +int sie_eng_set_la_crop_buf_reg(void *handle, SIE_LA_CROP_PARAM *p_la_crop); +int sie_eng_set_la_win_buf_reg(void *handle, SIE_LA_WIN_PARAM *p_la_win); +int sie_eng_set_la_irsub_buf_reg(void *handle, SIE_LA_IRSUB_PARAM *p_la_irsub); +int sie_eng_set_la_cg_buf_reg(void *handle, SIE_LA_CG_PARAM *p_la_cg); + +int sie_eng_set_cala_size_buf_reg(void *handle, SIE_STCS_CALASIZE_INFO *p_sz_info, SIE_LA_WIN_PARAM *p_win_param); + +int sie_eng_set_dvs_win_buf_reg(void *handle, SIE_DVS_WIN_PARAM *p_dvs_win); +int sie_eng_set_evs_out_buf_reg(void *handle, SIE_EVS_OUT_PARAM *p_evs_out); + +int sie_eng_set_dramin1_addr_buf_reg(void *handle, SIE_DRAM_ADDR *p_in1); +int sie_eng_set_dramin2_addr_buf_reg(void *handle, SIE_DRAM_ADDR *p_in2); +int sie_eng_set_dramout0_addr_buf_reg(void *handle, SIE_DRAM_ADDR *p_dout0); +int sie_eng_set_dramout1_addr_buf_reg(void *handle, SIE_DRAM_ADDR *p_dout1); +int sie_eng_set_dramout2_addr_buf_reg(void *handle, SIE_DRAM_ADDR *p_dout2); + +int sie_eng_set_dramin1_buf_reg(void *handle, SIE_DRAM_IN1_PARAM *p_din1); +int sie_eng_set_dramout0_buf_reg(void *handle, SIE_DRAM_OUT0_PARAM *p_dout0); +int sie_eng_set_dramout1_buf_reg(void *handle, SIE_DRAM_OUT1_PARAM *p_dout1); + +int sie_eng_set_dramout0_singleout_mode_buf_reg(void *handle, SIE_DRAM_OUT_MODE mode); +int sie_eng_set_dramout1_singleout_mode_buf_reg(void *handle, SIE_DRAM_OUT_MODE mode); +int sie_eng_set_dramout2_singleout_mode_buf_reg(void *handle, SIE_DRAM_OUT_MODE mode); + +int sie_eng_set_dramout0_singleout_en_buf_reg(void *handle, BOOL enb); +int sie_eng_set_dramout1_singleout_en_buf_reg(void *handle, BOOL enb); +int sie_eng_set_dramout2_singleout_en_buf_reg(void *handle, BOOL enb); + +int sie_eng_set_dram_burst_len_buf_reg(void *handle, SIE_DRAM_BURST_LEN_PARAM *p_burst_len); + +/************************************************************************************* + * Public Get Function Prototype + *************************************************************************************/ +int sie_eng_get_dramout0_singleout_en_buf_reg(void *handle, BOOL *enb); +int sie_eng_get_dramout1_singleout_en_buf_reg(void *handle, BOOL *enb); +int sie_eng_get_dramout2_singleout_en_buf_reg(void *handle, BOOL *enb); +int sie_eng_get_dramout3_singleout_en_buf_reg(void *handle, BOOL *enb); + +int sie_eng_get_dramin1_buf_reg(void *handle, SIE_DRAM_IN1_PARAM *p_din1); +int sie_eng_get_dramout0_buf_reg(void *handle, SIE_DRAM_OUT0_PARAM *p_dout0); +int sie_eng_get_dramout1_buf_reg(void *handle, SIE_DRAM_OUT1_PARAM *p_dout1); + +int sie_eng_get_bayer_fmt_buf_reg(void *handle, SIE_BAYER_FMT *p_fmt); + +int sie_eng_get_cgain_buf_reg(void *handle, SIE_CGAIN_PARAM *p_cgain); +int sie_eng_get_dgain_buf_reg(void *handle, SIE_DGAIN_PARAM *p_dgain); + +int sie_eng_get_ca_rslt(void *handle, UINT32 addr_va, SIE_CA_RSLT *p_ca_rslt, SIE_CA_RSLT_PARAMS *p_ca_rslt_info); +int sie_eng_get_la_rslt(void *handle, UINT32 addr_va, SIE_LA_RSLT *p_la_rslt, SIE_LA_WIN_PARAM *p_la_win); +int sie_eng_get_hist(void *handle, SIE_HIST_RSLT *p_hist_rslt); + +int sie_eng_get_function_enable_buf_reg(void *handle, UINT32 *func_en); +int sie_eng_get_crop_win_buf_reg(void *handle, SIE_CRP_WIN_PARAM *p_crp_win); +int sie_eng_get_dvi_buf_reg(void *handle, SIE_DVI_PARAM *p_dvi); +int sie_eng_get_ccir_header_status_hw_reg(void *handle, UINT32 *status); + +int sie_eng_get_bsh_buf_reg(void *handle, SIE_BS_H_PARAM *p_bsh); +int sie_eng_get_bsv_buf_reg(void *handle, SIE_BS_V_PARAM *p_bsv); + +int sie_eng_get_stcs_path_buf_reg(void *handle, SIE_STCS_PATH_PARAM *p_stcs_path); +int sie_eng_get_stcs_ob_buf_reg(void *handle, SIE_STCS_OB_PARAM *p_stcs_ob); + +int sie_eng_get_ca_crop_buf_reg(void *handle, SIE_CA_CROP_PARAM *p_ca_crop); +int sie_eng_get_la_crop_buf_reg(void *handle, SIE_LA_CROP_PARAM *p_la_crop); +int sie_eng_get_ca_win_buf_reg(void *handle, SIE_CA_WIN_PARAM *p_ca_win); +int sie_eng_get_la_win_buf_reg(void *handle, SIE_LA_WIN_PARAM *p_la_win); + +int sie_eng_get_evs_total_cnt_hw_reg(void *handle, UINT32 *p_cnt); + +int sie_eng_get_ir_level(void *handle, UINT32 *level); +int sie_eng_calc_ir_level(void *handle, SIE_CA_RSLT *ca_rst, SIE_CA_WIN_PARAM *p_ca_win, SIE_CA_IRSUB_PARAM *p_ca_ir_sub); + +#endif /* _SIE_BASE_H_ */ diff --git a/board/novatek/ns02501/loader/Include/Driver/sie_eng.h b/board/novatek/ns02501/loader/Include/Driver/sie_eng.h new file mode 100755 index 000000000000..0e563e79a5af --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/sie_eng.h @@ -0,0 +1,106 @@ +/* + Public header file for SIE module. + + Copyright Novatek Microelectronics Corp. 2023. All rights reserved. +*/ +#ifndef _SIE_ENG_H_ +#define _SIE_ENG_H_ + +#include "sie_base.h" + +/************************************************************************************* + * SIE Driver Version Definition + *************************************************************************************/ +#define SIE_DRV_VERSION "0.01.01" + +/************************************************************************************* + * SIE Engine Index Definition + *************************************************************************************/ +typedef enum { + SIE_ENG_ID_1 = 0, ///< SIE1 + SIE_ENG_ID_2, ///< SIE2 + SIE_ENG_ID_3, ///< SIE3 + SIE_ENG_ID_MAX +} SIE_ENG_ID_T; + +/************************************************************************************* + * SIE Engine Clock Source Definition + *************************************************************************************/ +typedef enum { + SIE_ENG_CLKSRC_480 = 0, + SIE_ENG_CLKSRC_RSVD1, + SIE_ENG_CLKSRC_PLL5, + SIE_ENG_CLKSRC_RSVD3, + SIE_ENG_CLKSRC_PLL12, + SIE_ENG_CLKSRC_320, + SIE_ENG_CLKSRC_192, + SIE_ENG_CLKSRC_RSVD7, + SIE_ENG_CLKSRC_MAX +} SIE_ENG_CLKSRC; + +/************************************************************************************* + * SIE Internal Clock Source Definition + *************************************************************************************/ +typedef enum { + SIE_ENG_INTCLKSRC_SIE1 = 0, ///< engine clock from SIE1_CLK, available for SIE2 + SIE_ENG_INTCLKSRC_SIE2, + SIE_ENG_INTCLKSRC_SIE3, + SIE_ENG_INTCLKSRC_MAX +} SIE_ENG_INTCLKSRC; + +/************************************************************************************* + * SIE Interrupt Definition + *************************************************************************************/ +#define SIE_INT_VD 0x00000001 +#define SIE_INT_BP1 0x00000002 +#define SIE_INT_BP2 0x00000004 +#define SIE_INT_BP3 0x00000008 +#define SIE_INT_ACTST 0x00000010 +#define SIE_INT_CRPST 0x00000020 +#define SIE_INT_DRAM_IN_OUT_ERR 0x00000040 +#define SIE_INT_DRAM_OUT0_END 0x00000080 +#define SIE_INT_DRAM_OUT1_END 0x00000100 +#define SIE_INT_DRAM_OUT2_END 0x00000200 +#define SIE_INT_DPCF 0x00002000 +#define SIE_INT_SIECLK_ERR 0x00004000 +#define SIE_INT_RAWENC_OVFL 0x00008000 +#define SIE_INT_ACTEND 0x00010000 +#define SIE_INT_CROPEND 0x00020000 +#define SIE_INT_BEHAVIOR_ERR 0x00040000 +#define SIE_INT_HISTO_END 0x00100000 +#define SIE_INT_RAWENC_DATA_OVLAP 0x00800000 ///< BCC share and process data overlap +#define SIE_INT_CCIR656_HEADER_HIT 0x01000000 +#define SIE_INT_ALL 0x0197e3ff + +/************************************************************************************* + * SIE Common Definition + *************************************************************************************/ +typedef struct { + SIE_ENG_CLKSRC clk_src; ///< engine operation clock source + UINT32 clk_rate; ///< engine operation clock rate(Hz) + SIE_ENG_INTCLKSRC int_clk_src; ///< engine internal clock source for bcc share used +} SIE_INIT_CFG; + +typedef struct { + BOOL act_en; +} SIE_START_CFG; + +/************************************************************************************* + * SIE Public Function Prototype + *************************************************************************************/ +void *sie_eng_get_handle(UINT32 id); +int sie_eng_open(UINT32 id, SIE_INIT_CFG *init_cfg); +int sie_eng_close(UINT32 id); +int sie_eng_trig_hw_reg(void *handle, SIE_START_CFG *trig_cfg); +int sie_eng_stop_hw_reg(void *handle); +int sie_eng_set_clock(void *handle, SIE_ENG_CLKSRC clk_src, UINT32 clk_rate); +int sie_eng_set_intclock(void *handle, SIE_ENG_INTCLKSRC clk_src); + +int sie_eng_write_hw_reg(void *handle, UINT32 reg_ofs, UINT32 val); +UINT32 sie_eng_read_hw_reg(void *handle, UINT32 reg_ofs); + +int sie_eng_patgen_simple_test(UINT32 id, UINT32 out0_enb, UINT32 ydcc_direct); +int sie_eng_dramin_simple_test(UINT32 id, UINT32 out0_enb, UINT32 ydcc_direct); + +#endif /* _SIE_ENG_H_ */ + diff --git a/board/novatek/ns02501/loader/Include/Driver/sie_limit.h b/board/novatek/ns02501/loader/Include/Driver/sie_limit.h new file mode 100755 index 000000000000..d5e940fb239a --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Driver/sie_limit.h @@ -0,0 +1,211 @@ +/* + Public header file for SIE module. + + Copyright Novatek Microelectronics Corp. 2023. All rights reserved. +*/ +#ifndef _SIE_LIMIT_H_ +#define _SIE_LIMIT_H_ + +/*********************************************************************************************** + * SIE Master Clock Max Frequency Definition + ***********************************************************************************************/ +#define SIE1_MAX_CLK_FREQ 320000000 ///< 320MHz, 2-pixel base, BCC_2P +#define SIE2_MAX_CLK_FREQ 320000000 ///< 320MHz, 2-pixel base, BCC_SIE1(Shared) +#define SIE3_MAX_CLK_FREQ 320000000 ///< 320MHz, 2-pixel base + +/*********************************************************************************************** + * SIE Global Hardware Limitation Definition + ***********************************************************************************************/ +#define SIE_MAX_ENG_NUM 3 ///< SIE1~3 + +#define SIE_MAX_OUTPUT_NUM 3 ///< OUT0:IMG, OUT1:CA/UV, OUT2:LA +#define SIE_MAX_INPUT_NUM 2 ///< IN1 :DPC/IMG, IN2 :ECS + +#define SIE_CA_MAX_WIN_NUM 32 +#define SIE_LA_MAX_WIN_NUM 32 +#define SIE_LA_HISTO_BIN_NUM 64 + +#define SIE_PATGEN_SRC_WIN_W_ALIGN 2 +#define SIE_PATGEN_SRC_WIN_H_ALIGN 2 +#define SIE_PATGEN_SRC_WIN_MIN_W 16 +#define SIE_PATGEN_SRC_WIN_MIN_H 16 +#define SIE_PATGEN_SRC_WIN_MAX_W 16382 +#define SIE_PATGEN_SRC_WIN_MAX_H 16382 + +#define SIE_ACT_ECS_WIN_MIN_W 256 ///< for ECS table size 65x65 +#define SIE_ACT_ECS_WIN_MIN_H 256 ///< for ECS table size 65x65 + +#define SIE_ACT_WIN_W_ALIGN 2 +#define SIE_ACT_WIN_H_ALIGN 2 +#define SIE_ACT_WIN_X_ALIGN 1 +#define SIE_ACT_WIN_Y_ALIGN 1 +#define SIE_ACT_WIN_MAX_X 16383 +#define SIE_ACT_WIN_MAX_Y 16383 +#define SIE_ACT_WIN_MIN_W 16 +#define SIE_ACT_WIN_MIN_H 2 +#define SIE_ACT_WIN_MAX_W 16382 +#define SIE_ACT_WIN_MAX_H 16382 + +#define SIE_CROP_WIN_W_ALIGN 2 +#define SIE_CROP_WIN_H_ALIGN 2 +#define SIE_CROP_WIN_X_ALIGN 1 +#define SIE_CROP_WIN_Y_ALIGN 1 +#define SIE_CROP_WIN_MAX_X 16383 +#define SIE_CROP_WIN_MAX_Y 16383 +#define SIE_CROP_WIN_MIN_W 16 +#define SIE_CROP_WIN_MIN_H 2 +#define SIE_CROP_WIN_MAX_W 16382 +#define SIE_CROP_WIN_MAX_H 16382 + +#define SIE_CROP_BS_WIN_H_ALIGN 2 ///< reserve for backward compatiable, will be remove +#define SIE_CROP_BS_IN_WIN_W_ALIGN 2 ///< when bayer-scaling horizontial on, crop width should be 2x +#define SIE_CROP_BS_IN_WIN_H_ALIGN 2 ///< when bayer-scaling vertical on, crop height should be 2x + +#define SIE_CROP_WIN_MAX_W_8BIT SIE_CROP_WIN_MAX_W +#define SIE_CROP_WIN_MAX_W_10BIT SIE_CROP_WIN_MAX_W +#define SIE_CROP_WIN_MAX_W_12BIT SIE_CROP_WIN_MAX_W +#define SIE_CROP_WIN_MAX_W_16BIT SIE_CROP_WIN_MAX_W + +#define SIE_ACT_DATAEXT_SKIPLEN_MIN 1 +#define SIE_ACT_DATAEXT_LEN_MIN 1 +#define SIE_ACT_DATAEXT_INILEN_MIN 0 +#define SIE_ACT_DATAEXT_SKIPLEN_MAX 255 +#define SIE_ACT_DATAEXT_LEN_MAX 255 +#define SIE_ACT_DATAEXT_INILEN_MAX 4095 + +#define SIE_SCALE_WIN_W_ALIGN 2 +#define SIE_SCALE_WIN_H_ALIGN 2 +#define SIE_SCALE_INPUT_WIN_MAX_W 4096 +#define SIE_SCALE_INPUT_WIN_MAX_H 16382 +#define SIE_SCALE_OUTPUT_WIN_MAX_W 2880 +#define SIE_SCALE_OUTPUT_WIN_MAX_H 8190 +#define SIE_SCALE_W_RATIO 8 +#define SIE_SCALE_H_RATIO 8 + +#define SIE_CA_CROP_WIN_W_ALIGN 2 +#define SIE_CA_CROP_WIN_H_ALIGN 2 +#define SIE_CA_CROP_WIN_X_ALIGN 1 +#define SIE_CA_CROP_WIN_Y_ALIGN 1 +#define SIE_CA_CROP_WIN_MAX_X 16383 +#define SIE_CA_CROP_WIN_MAX_Y 16383 +#define SIE_CA_CROP_WIN_MAX_W 10208 ///< (16383*(640/2-1) / 1024 + 1 )*2 = 10208 +#define SIE_CA_CROP_WIN_MAX_H 8160 ///< (16383*(512/2-1) / 1024 + 1 )*2 = 8160 +#define SIE_CA_CROP_WIN_MIN_W 64 +#define SIE_CA_CROP_WIN_MIN_H 64 + +#define SIE_CA_SMPL_MAX_W 640 ///< max horizontal subsample output, line buffer 640x12bit +#define SIE_CA_SMPL_MAX_H 512 ///< max vertical subsample output + +#define SIE_CA_WIN_W_ALIGN 2 +#define SIE_CA_WIN_H_ALIGN 2 +#define SIE_CA_WIN_MIN_W 4 +#define SIE_CA_WIN_MIN_H 2 +#define SIE_CA_WIN_MAX_W 254 +#define SIE_CA_WIN_MAX_H 254 + +#define SIE_LA_CROP_WIN_W_ALIGN 2 +#define SIE_LA_CROP_WIN_H_ALIGN 2 +#define SIE_LA_CROP_WIN_X_ALIGN 1 +#define SIE_LA_CROP_WIN_Y_ALIGN 1 +#define SIE_LA_CROP_WIN_MAX_X 320 ///< 640/2 +#define SIE_LA_CROP_WIN_MAX_Y 256 ///< 512/2 +#define SIE_LA_CROP_WIN_MAX_W 320 ///< scale down from 640, split to rgb, transfer to Y only +#define SIE_LA_CROP_WIN_MAX_H 256 ///< scale down from 512, split to rgb, transfer to Y only +#define SIE_LA_CROP_WIN_MIN_W 32 +#define SIE_LA_CROP_WIN_MIN_H 32 + +#define SIE_LA_WIN_W_ALIGN 1 +#define SIE_LA_WIN_H_ALIGN 1 +#define SIE_LA_WIN_MIN_W 4 +#define SIE_LA_WIN_MIN_H 1 +#define SIE_LA_WIN_MAX_W 255 +#define SIE_LA_WIN_MAX_H 255 + +#define SIE_IN1_LINEOFFSET_ALIGN 4 ///< word align +#define SIE_OUT0_LINEOFFSET_ALIGN 4 ///< word align +#define SIE_OUT1_LINEOFFSET_ALIGN 4 ///< word align +#define SIE_OUT2_LINEOFFSET_ALIGN 4 ///< word align +#define SIE_OUT3_LINEOFFSET_ALIGN 4 ///< word align + +#define SIE_IN1_LINEOFFSET_MAX_SIZE 65532 ///< Byte +#define SIE_OUT0_LINEOFFSET_MAX_SIZE 65532 ///< Byte +#define SIE_OUT1_LINEOFFSET_MAX_SIZE 65532 ///< Byte +#define SIE_OUT2_LINEOFFSET_MAX_SIZE 65532 ///< Byte + +#define SIE_RING_BUFFER_MAX_LEN 2047 ///< line count, ring buffer as line base + +#define SIE_DVS_WIN_W_ALIGN 8 ///< dvs 1 group is 8 pixel +#define SIE_DVS_WIN_H_ALIGN 1 +#define SIE_DVS_WIN_MIN_W 8 +#define SIE_DVS_WIN_MIN_H 1 +#define SIE_DVS_WIN_MAX_W 16376 ///< 16383 align to 8 +#define SIE_DVS_WIN_MAX_H 8191 + +#define SIE_EVS_MOT_OUT_ALIGN 4 +#define SIE_EVS_MOT_OUT_MIN_SIZE 4 +#define SIE_EVS_MOT_OUT_MAX_SIZE 0xfffffffc + +/*********************************************************************************************** + * SIE1 Hardware Limitation Definition (2-pixel base) + ***********************************************************************************************/ +#define SIE1_MAX_OUTPUT_NUM SIE_MAX_OUTPUT_NUM +#define SIE1_MAX_INPUT_NUM SIE_MAX_INPUT_NUM + +#define SIE1_LA_MAX_WIN_NUM SIE_LA_MAX_WIN_NUM + +#define SIE1_CROP_WIN_MAX_W_8BIT SIE_CROP_WIN_MAX_W_8BIT +#define SIE1_CROP_WIN_MAX_W_10BIT SIE_CROP_WIN_MAX_W_10BIT +#define SIE1_CROP_WIN_MAX_W_12BIT SIE_CROP_WIN_MAX_W_12BIT +#define SIE1_CROP_WIN_MAX_W_16BIT SIE_CROP_WIN_MAX_W_16BIT + +#define SIE1_OUT0_LINEOFFSET_ALIGN_HFLIP_8BIT SIE_OUT0_LINEOFFSET_ALIGN +#define SIE1_OUT0_LINEOFFSET_ALIGN_HFLIP_10BIT SIE_OUT0_LINEOFFSET_ALIGN +#define SIE1_OUT0_LINEOFFSET_ALIGN_HFLIP_12BIT SIE_OUT0_LINEOFFSET_ALIGN +#define SIE1_OUT0_LINEOFFSET_ALIGN_HFLIP_16BIT SIE_OUT0_LINEOFFSET_ALIGN + +#define SIE1_BCC_HW_ABILITY 1 ///< support BCC hardware function +#define SIE1_BCC_SHARE_SRC 0 ///< SIE1 + +/*********************************************************************************************** + * SIE2 Hardware Limitation Definition (2-pixel base) + ***********************************************************************************************/ +#define SIE2_MAX_OUTPUT_NUM SIE_MAX_OUTPUT_NUM +#define SIE2_MAX_INPUT_NUM SIE_MAX_INPUT_NUM + +#define SIE2_LA_MAX_WIN_NUM SIE_LA_MAX_WIN_NUM + +#define SIE2_CROP_WIN_MAX_W_8BIT SIE_CROP_WIN_MAX_W_8BIT +#define SIE2_CROP_WIN_MAX_W_10BIT SIE_CROP_WIN_MAX_W_10BIT +#define SIE2_CROP_WIN_MAX_W_12BIT SIE_CROP_WIN_MAX_W_12BIT +#define SIE2_CROP_WIN_MAX_W_16BIT SIE_CROP_WIN_MAX_W_16BIT + +#define SIE2_OUT0_LINEOFFSET_ALIGN_HFLIP_8BIT SIE_OUT0_LINEOFFSET_ALIGN +#define SIE2_OUT0_LINEOFFSET_ALIGN_HFLIP_10BIT SIE_OUT0_LINEOFFSET_ALIGN +#define SIE2_OUT0_LINEOFFSET_ALIGN_HFLIP_12BIT SIE_OUT0_LINEOFFSET_ALIGN +#define SIE2_OUT0_LINEOFFSET_ALIGN_HFLIP_16BIT SIE_OUT0_LINEOFFSET_ALIGN + +#define SIE2_BCC_HW_ABILITY 0 ///< not support BCC hardware function, share with SIE1 +#define SIE2_BCC_SHARE_SRC 0 ///< SIE1 + +/*********************************************************************************************** + * SIE3 Hardware Limitation Definition (2-pixel base) + ***********************************************************************************************/ +#define SIE3_MAX_OUTPUT_NUM SIE_MAX_OUTPUT_NUM +#define SIE3_MAX_INPUT_NUM SIE_MAX_INPUT_NUM + +#define SIE3_LA_MAX_WIN_NUM 8 + +#define SIE3_CROP_WIN_MAX_W_8BIT SIE_CROP_WIN_MAX_W_8BIT +#define SIE3_CROP_WIN_MAX_W_10BIT SIE_CROP_WIN_MAX_W_10BIT +#define SIE3_CROP_WIN_MAX_W_12BIT SIE_CROP_WIN_MAX_W_12BIT +#define SIE3_CROP_WIN_MAX_W_16BIT SIE_CROP_WIN_MAX_W_16BIT + +#define SIE3_OUT0_LINEOFFSET_ALIGN_HFLIP_8BIT SIE_OUT0_LINEOFFSET_ALIGN +#define SIE3_OUT0_LINEOFFSET_ALIGN_HFLIP_10BIT SIE_OUT0_LINEOFFSET_ALIGN +#define SIE3_OUT0_LINEOFFSET_ALIGN_HFLIP_12BIT SIE_OUT0_LINEOFFSET_ALIGN +#define SIE3_OUT0_LINEOFFSET_ALIGN_HFLIP_16BIT SIE_OUT0_LINEOFFSET_ALIGN + +#define SIE3_BCC_HW_ABILITY 0 ///< not support BCC hardware function +#define SIE3_BCC_SHARE_SRC 2 ///< SIE3 + +#endif /* _SIE_LIMIT_H_ */ diff --git a/board/novatek/ns02501/loader/Include/IOReg.h b/board/novatek/ns02501/loader/Include/IOReg.h new file mode 100755 index 000000000000..3aa2c51cc59d --- /dev/null +++ b/board/novatek/ns02501/loader/Include/IOReg.h @@ -0,0 +1,190 @@ +/** + I/O Access header file + + I/O Access header file + + @file IOReg.h + @ingroup mISYSUtil + @note Nothing +*/ + +#ifndef __IO_REG_H +#define __IO_REG_H + +#include "constant.h" +#include "CMacro.h" +#include "Memory.h" + +/** + @addtogroup mISYSUtil +*/ +//@{ + +/** + @name Input 8bit IO register + + Input 8bit IO register + + @param[in] x I/O address + + @return register value +*/ +//@{ +#define INREG8(x) (*((volatile UINT8*)(x))) ///< Read 8bits IO register +//@} + +/** + @name Output 8bit IO register + + Output to 8bit IO register + + @param[in] x I/O address + @param[in] y Value to be output + + @return void +*/ +//@{ +#define OUTREG8(x, y) (*((volatile UINT8*)(x)) = (y)) ///< Write 8bits IO register +//@} + +/** + @name Set bits to 8bit IO register + + Set bits to 8bit IO register + + @param[in] x I/O address + @param[in] y Value to be set. y will be ORed to this address + + @return register value +*/ +//@{ +#define SETREG8(x, y) OUTREG8((x), INREG8(x) | (y)) ///< Set 8bits IO register +//@} + +/** + @name Clear bits from 8bit IO register + + Clear bits from 8bit IO register + + @param[in] x I/O address + @param[in] y Value to be clear. ~(y) will be ANDed to this address + + @return register value +*/ +//@{ +#define CLRREG8(x, y) OUTREG8((x), INREG8(x) & ~(y)) ///< Clear 8bits IO register +//@} + +/** + @name Input 16bit IO register + + Input 16bit IO register + + @param[in] x I/O address (should be 2 bytes alignment) + + @return register value +*/ +//@{ +#define INREG16(x) (*((volatile UINT16*)(x))) ///< Read 16bits IO register +//@} + +/** + @name Output 16bit IO register + + Output to 16bit IO register + + @param[in] x I/O address (should be 2 bytes alignment) + @param[in] y Value to be output + + @return void +*/ +//@{ +#define OUTREG16(x, y) (*((volatile UINT16*)(x)) = (y)) ///< Write 16bits IO register +//@} + +/** + @name Set bits to 16bit IO register + + Set bits to 16bit IO register + + @param[in] x I/O address (should be 2 bytes alignment) + @param[in] y Value to be set. y will be ORed to this address + + @return register value +*/ +//@{ +#define SETREG16(x, y) OUTREG16((x), INREG16(x) | (y)) ///< Set 16bits IO register +//@} + +/** + @name Clear bits from 16bit IO register + + Clear bits from 16bit IO register + + @param[in] x I/O address (should be 2 bytes alignment) + @param[in] y Value to be clear. ~(y) will be ANDed to this address + + @return register value +*/ +//@{ +#define CLRREG16(x, y) OUTREG16((x), INREG16(x) & ~(y)) ///< Clear 16bits IO register +//@} + +/** + @name Input 32bit IO register + + Input 32bit IO register + + @param[in] x I/O address (should be 4 bytes alignment) + + @return register value +*/ +//@{ +#define INREG32(x) (*((volatile UINT32*)(x))) ///< Read 32bits IO register +//@} + +/** + @name Output 32bit IO register + + Output to 32bit IO register + + @param[in] x I/O address (should be 4 bytes alignment) + @param[in] y Value to be output + + @return void +*/ +//@{ +#define OUTREG32(x, y) (*((volatile UINT32*)(x)) = (y)) ///< Write 32bits IO register +//@} + +/** + @name Set bits to 32bit IO register + + Set bits to 32bit IO register + + @param[in] x I/O address (should be 4 bytes alignment) + @param[in] y Value to be set. y will be ORed to this address + + @return register value +*/ +//@{ +#define SETREG32(x, y) OUTREG32((x), INREG32(x) | (y)) ///< Set 32bits IO register +//@} + +/** + @name Clear bits from 32bit IO register + + Clear bits from 32bit IO register + + @param[in] x I/O address (should be 4 bytes alignment) + @param[in] y Value to be clear. ~(y) will be ANDed to this address + + @return register value +*/ +//@{ +#define CLRREG32(x, y) OUTREG32((x), INREG32(x) & ~(y)) ///< Clear 32bits IO register +//@} + +//@} + +#endif // __IO_REG_H diff --git a/board/novatek/ns02501/loader/Include/SMacro.h b/board/novatek/ns02501/loader/Include/SMacro.h new file mode 100755 index 000000000000..bb11ace09ee9 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/SMacro.h @@ -0,0 +1,129 @@ +; Global vars for arg parsing + + GBLS _arg0 + GBLS _arg1 + +; _spaces_remove +; remove start and end spaces from global variable wstring + + MACRO + _spaces_remove $wstring + WHILE ( ("*" :CC: $wstring) :RIGHT: 1 = " ") +$wstring SETS ($wstring :LEFT: (:LEN: $wstring - 1)) + WEND + WHILE ( ($wstring :CC: "*") :LEFT: 1 = " ") +$wstring SETS ($wstring :RIGHT: (:LEN: $wstring - 1)) + WEND + MEND + +; _lbracket_remove +; Attempt to remove a single left bracket - error if not there + + MACRO + _lbracket_remove $s + ASSERT $s:LEFT:1 = "(" +$s SETS $s:RIGHT:(:LEN:$s-1) + _spaces_remove $s + MEND + +; _rbracket_remove +; Attempt to remove a single right bracket - error if not there +; then removes excess spaces + + MACRO + _rbracket_remove $s + ASSERT $s:RIGHT:1 = ")" +$s SETS $s:LEFT:(:LEN:$s-1) + _spaces_remove $s + MEND + +; _comment_remove +; Remove any comment from line end and then strip any spaces + + MACRO + _comment_remove $s + _spaces_remove $s + IF (("**":CC:$s):RIGHT:2) = "*/" + WHILE ($s:RIGHT:2) <> "/*" +$s SETS $s:LEFT:(:LEN:$s-1) + WEND +$s SETS $s:LEFT:(:LEN:$s-2) + _spaces_remove $s + ENDIF + MEND + +; _arg_remove +; Pull an argument from the front of a spaces stripped string + + MACRO + _arg_remove $s,$arg + LCLA _arglen + LCLL _ok +_arglen SETA 0 +_ok SETL {TRUE} + WHILE _ok + IF _arglen>=:LEN:$s +_ok SETL {FALSE} ; break if used up input string + ELSE +$arg SETS ($s:LEFT:(_arglen+1)):RIGHT:1 ; next character + IF $arg=" " +_ok SETL {FALSE} + ELSE +_arglen SETA _arglen+1 + ENDIF + ENDIF + WEND +$arg SETS $s:LEFT:_arglen +$s SETS $s:RIGHT:(:LEN:$s-_arglen) + _spaces_remove $s + MEND + +; ifndef +; Purpose: Allow #ifndef for common C headers (Just for guarded C header file) +; Syntax : #<space/tab>ifndef<spaces><symbol></*comment*/> + + MACRO + ifndef $a + MEND + +; define +; Purpose: Allow #defines for common C/Assembler headers +; Syntax : #<space/tab>define<spaces><symbol><spaces><value></*comment*/> + + MACRO +$la define $a +_arg0 SETS "$a" + ASSERT "$la"="#" ; syntax: # define fred 1 + _comment_remove _arg0 + _arg_remove _arg0,_arg1 + IF "$_arg0"<>"" +$_arg1 EQU $_arg0 + ENDIF + MEND + + +; COMMENT +; Purpose: Allow comments in common C/Assembler headers +; Syntax : COMMENT <anything you like!> + + MACRO + COMMENT $a,$b,$c,$d,$e,$f,$g,$h + MEND + +; local labels use label$l to get a local label and LOCAL to start a new +; area + + GBLA LocalCount + GBLS l +LocalCount SETA 1 +l SETS "x$LocalCount" + +; increment local variable number + + MACRO + LOCAL +LocalCount SETA LocalCount+1 +l SETS "x$LocalCount" + MEND + + END diff --git a/board/novatek/ns02501/loader/Include/StorageDef.h b/board/novatek/ns02501/loader/Include/StorageDef.h new file mode 100755 index 000000000000..e9366f4a3d4e --- /dev/null +++ b/board/novatek/ns02501/loader/Include/StorageDef.h @@ -0,0 +1,481 @@ +/** + Storage module driver. + + This file is the driver of storage module. + + @file StorageDef.h + @ingroup mIDrvStorage + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _STORAGE_DEF_ +#define _STORAGE_DEF_ + +#include "constant.h" + +#define _STORAGE_OBJ_ 1 +/** + @addtogroup mIDrvStorage +*/ +//@{ + +/** + @name External storage type + +*/ +//@{ +#define EXT_STORAGE_TYPE_NONE (0) +#define EXT_STORAGE_TYPE_SDIO1 (1) +#define EXT_STORAGE_TYPE_SDIO2 (2) +#define EXT_STORAGE_TYPE_USB (3) +#define EXT_STORAGE_TYPE_ETH (4) +//*} + +/** + @name SPI Bus Width + + @note for SPI_IDENTIFY +*/ +//@{ +#define SPI_BUSWIDTH_NORMAL 0x00000000 ///< Normal (1-bit) +#define SPI_BUSWIDTH_DUAL 0x00000001 ///< Dual read (2-bit) + +#define SPI_BUSWIDTH_QUAD_TYPE1 0x00000010 ///< Quad read (4-bit) Type1: QE(Quad Enable) bit is in Status Reigster[bit 6] and 0x6B command requires 8 dummy clocks. +#define SPI_BUSWIDTH_QUAD_TYPE2 0x00000020 ///< Quad read (4-bit) Type2: QE(Quad Enable) bit is in Status Register[bit 9] and 0x6B command requires 8 dummy clocks. +#define SPI_BUSWIDTH_QUAD_TYPE3 0x00000040 ///< Quad read (4-bit) Type3: QE(Quad Enable) NOT exist and 0x6B command requires 8 dummy clocks. +#define SPI_BUSWIDTH_QUAD_TYPE4 0x00000080 ///< Quad read (4-bit) Type4: QE(Quad Enable) bit is in Status Register[bit 9] and 0x6B command requires 8 dummy clocks. + ///< But QE should be modified by 0x31 command + +#define SPI_BUSWIDTH_OCTAL_TYPE1 0x00010000 ///< Octal IO Type1: Octal Page Program(1-1-8, 82h/84h) and Read(1-1-8, 8Bh/7Ch) +#define SPI_BUSWIDTH_OCTAL_TYPE2 0x00020000 ///< Octal IO Type2: MXIC type (OPI 2Byte cmd)(TBD) + +#define SPI_BUSWIDTH_DTR_READ 0x00100000 ///< Support DTR IO read(TBD) + +#define SPI_QUAD_MASK (SPI_BUSWIDTH_QUAD_TYPE1|SPI_BUSWIDTH_QUAD_TYPE2|SPI_BUSWIDTH_QUAD_TYPE3|SPI_BUSWIDTH_QUAD_TYPE4) +//@} + + +/** + @name SPI RDCR read type + + @note for SPI_IDENTIFY +*/ +//@{ +#define SPI_RDCR_NONE 0 ///< Not support +#define SPI_RDCR_TYPE1 1 ///< Support RDCR(0x15) bit[7..6] need config as 0x3 +//@} + +/** + @name SPI DTR read type + + @note for SPI_IDENTIFY +*/ +//@{ +#define SPI_DTR_NONE 0 ///< Not support +#define SPI_DTR_SUPPORT 1 ///< Support SPI Double Transfer Rate +//@} + +/** + @name EMMC BOOT Partition + + @note for flash_setConfig +*/ +//@{ +#define EMMC_BOOT_PARTITION_1 1 +#define EMMC_BOOT_PARTITION_2 2 +#define EMMC_BOOT_PARTITION_USER 7 + +//@} + +/** + SPI flash identify descriptor + + @note For STRG_IDENTIFY_CB +*/ +typedef struct +{ + BOOL bSupportEWSR; ///< EWSR(0x50) command capability + ///< - @b TRUE: support EWSR command + ///< - @b FALSE: NOT support EWSR command + BOOL bSupportAAI; ///< AAI program(0xAD) command capability + ///< - @b TRUE: ONLY support AAI program command + ///< - @b FALSE: NOT support AAI program command, but support page program command + UINT32 uiBusWidth; ///< Flash bus width config: normal(1-bit) / dual(2-bit) / quad(4-bit) / octal(8-bit) + UINT32 uiFlashSize; ///< Flash total byte size. (unit: byte) + UINT32 uiDummyCycle; ///< [Optional] DTR mode dummy cycle +} SPI_IDENTIFY, *PSPI_IDENTIFY; + +/** + @name Storage Access CallBack + + Storage Access CallBack Prototype + + @return void +*/ +//@{ +typedef void (*STRG_ACCESS_CB)(void); ///< Storage access call back prototype +//@} + +/** + @name Storage Identify CallBack + + Storage Identify CallBack Prototype + + @param[in] UINT32 uiMfgID (JEDEC) manufacturer ID read from spi flash + @param[in] UINT32 uiTypeID (JEDEC) type ID read from spi flash + @param[in] UINT32 uiCapacityID (JEDEC) capacity ID read from spi flash + @param[out] PSPI_IDENTIFY flash identification returned to spi flash driver + + @return + - @b TRUE: call back will handle identification of this flash. and PSPI_IDENTIFY will fill identifed information + - @b FALSE: input ID is NOT supported/identified by call back +*/ +//@{ +typedef BOOL (*STRG_IDENTIFY_CB)(UINT32, UINT32, UINT32, PSPI_IDENTIFY); ///< Storage identify call back prototype +//@} + +/** + @name Storage return value + + @note for flash_open(), flash_readSectors(), and flash_writeSectors() +*/ +//@{ +#define E_OK 0 ///< Success +#define E_NAND_IDENTIFY_ERR -1 ///< Read NAND ID (information) error +#define E_NAND_INSUFFICINET_BLK -2 ///< Bad block is too much to write data +#define E_NAND_BLK_NOT_FOUND -3 ///< Logic block number not found in physical block +#define E_NAND_WRITE_PAGEDATA_ERR -4 ///< Logic block number not found in physical block +#define E_NAND_ERASEE_BLK_ERR -5 ///< NAND erase block error +#define E_NAND_READ_PAGE_ERR -6 ///< NAND read page data error +#define E_NAND_READ_BLK_ERR -7 ///< NAND read block data error +#define E_NAND_ID_NOT_SUPPORT -8 ///< Not support NAND ID +#define E_IDENTIFY_ERR -9 ///< SPI IDENTIFY error +#define E_SYS -10 ///< System Error +#define E_NAND_ALIGN_ERR -11 ///< Not block alignment +#define E_NAND_BOUNDARY_ERR -12 ///< boundary < write buffer +#define E_OK_TABLE_FOUND 1 ///< Success & NAND table find +#define E_OK_TABLE_NOT_FOUND 2 ///< Success & NAND table not find +//@} + +/** + @name Internal Storage Update Region + + @note for flash_readSectors(), and flash_writeSectors() +*/ +//@{ +#define NAND_RW_LOADER 0 ///< Update Region is Loader (Update size is assumed 16 KB) +#define NAND_RW_RESERVED 1 ///< Update Region is reserved area (Update size is assumed 16 KB) +#define NAND_RW_FIRMWARE 2 ///< Update Region is FW (Update size is variable) +#define NAND_RW_FIRMWARE_2 3 ///< Update Region is FW from 2-5(Update size is variable) +#define NAND_RW_FIRMWARE_3 4 ///< Update Region is FW from 2-5(Update size is variable) +#define NAND_RW_FIRMWARE_4 5 ///< Update Region is FW from 2-5(Update size is variable) +#define NAND_RW_FIRMWARE_5 6 ///< Update Region is FW from 2-5(Update size is variable) +//@} + +/** + @name Internal Storage Configuration ID + + @note for flash_setConfig() +*/ +//@{ +#define FLASH_CFG_ID_NONE 0 +#define FLASH_CFG_ID_SPI_SUPPORT_4BITS 1 ///< Enable your project to support 4 bit SPI flash. ONLY enable when you ENSURE SPI_D0~SPI_D3 are connected to SPI flash in your PCB!!! +#define FLASH_CFG_ID_EMMC_SUPPORT_8BITS 2 ///< Enable your project to support 8 bit EMMC. ONLY enable when you ENSURE EMMC_D0~SPI_D7 are connected to EMMC flash in your PCB!!! +#define FLASH_CFG_ID_CS_SELECT 3 ///< Select this flash (nand/nor) is connected with CS0 or CS1 +#define FLASH_CFG_ID_SPI_IDENTIFY_CB 4 ///< Install flash identify call back +#define FLASH_CFG_ID_SIM_BURN_IMG 5 ///< During BCH host ECC, simulate burning machine's flow +#define FLASH_CFG_ID_HIGH_SPEED 6 ///< Experimental config for fast boot +#define FLASH_CFG_ID_EMMC_BOOT_AREA 7 ///< Enable your project to support EMMC boot area. +#define FLASH_CFG_ID_SPI_SUPPORT_DTR 8 ///< Enable your project to support DTR. ONLY available @ read path & Quad mode and MXIC(MX25L25635E) +#define FLASH_CFG_ID_EMMC_CLEAR_WP 9 ///< Enable CLEAR_WRITE_PROT CMD. Clear the write protection bit of the addressed group +//@} + +#if (_STORAGE_OBJ_== 1) + + +#define BOOT_SOURCE_SPI 0x00 +#define BOOT_SOURCE_SPI_NAND_2K 0x02 +#define BOOT_SOURCE_SPI_NAND_4K 0x06 +#define BOOT_SOURCE_SPI_NAND_BCH_2K 0x03 +#define BOOT_SOURCE_SPI_NAND_BCH_4K 0x0A +#define BOOT_SOURCE_EMMC_4BIT 0x08 +#define BOOT_SOURCE_EMMC_8BIT 0x09 + +/** + @name New storage object interface + + For new version storage device driver +*/ +//@{ +typedef struct { + INT32(*flash_open)(void); ///< Flash Open + void(*flash_close)(void); ///< Flash Close + INT32(*flash_readSectors)(UINT32, UINT32, UINT8 *,UINT32); ///< Flash Read Sector + INT32(*flash_writeSectors)(UINT32, UINT32, UINT8 *, UINT32); ///< Flash Write Sector + INT32(*flash_writePartition)(UINT32, UINT32, UINT32, UINT8 *, UINT32); ///< Flash Write Sector, and remain space need erase + UINT32(*flash_getBlockSize)(void); ///< Flash Get Block Size + void(*flash_setReservedBadBlockNumber)(UINT32); ///< Flash Set Reserved Bad Block Number + void(*flash_setReservedAreaMaxBlockNumber)(UINT32); ///< Flash Set Reserved Area Block Number + UINT64(*flash_getTotalSize)(void); + void(*flash_installAccessCB)(STRG_ACCESS_CB); + void(*flash_installIdentifyCB)(STRG_IDENTIFY_CB); + void(*flash_setFrequency)(UINT32); + INT32(*flash_setConfig)(UINT32, UINT32); + INT32(*flash_get_spare_data)(UINT32, UINT32 *); + INT32(*flash_auto_tune_read_block)(UINT32, UINT32, UINT8 *,UINT32); ///< Flash auto tunning API for read block +} STORAGE_OBJ, *PSTORAGE_OBJ; + +extern PSTORAGE_OBJ none_get_storage_object(void); +extern PSTORAGE_OBJ emmc_get_storage_object(void); +extern PSTORAGE_OBJ nand_get_storage_object(void); +extern PSTORAGE_OBJ nor_get_storage_object(void); +extern PSTORAGE_OBJ nand_bch_get_storage_object(void); + +//@} +#else +#define FLASH_OPEN(m) flash_open() +#define FLASH_CLOSE(m) flash_close() +#define FLASH_READSECTOR(m, n, o, x, y) flash_readSectors(n,o,x,y) ///< Flash Read Sector +#define FLASH_WRITESECTOR(m, n, o, x, y) flash_writeSectors(n,o,x,y) ///< Flash Write Sector +#define FLASH_GETBLKSIZE(m) flash_getBlockSize() + + void(*flash_setReservedBadBlockNumber)(UINT32); ///< Flash Set Reserved Bad Block Number + void(*flash_setReservedAreaMaxBlockNumber)(UINT32); ///< Flash Set Reserved Area Block Number + UINT64(*flash_getTotalSize)(void); + void(*flash_installAccessCB)(STRG_ACCESS_CB); + void(*flash_installIdentifyCB)(STRG_IDENTIFY_CB); + void(*flash_setFrequency)(UINT32); + INT32(*flash_setConfig)(UINT32, UINT32); +} STORAGE_OBJ, *PSTORAGE_OBJ; + +/** + Flash Open + + This function will initialize internal flash driver + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @return + - @b E_OK: open success + - @b E_IDENTIFY_ERR: identify fail (SPI path) + - @b E_NAND_IDENTIFY_ERR: identify fail (NAND path) + - @b E_NAND_ID_NOT_SUPPORT: not supported NAND flash +*/ +extern INT32 flash_open(void); +/** + Flash Close + + This function will close internal flash driver + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @return void +*/ +extern void flash_close(void); + +/** + Flash Read Sector + + This function will read data from internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] startblk Start block of this read operation (unit: flash block) + @param[in] length Length of read operation (unit: byte) + @param[out] buffer Pointer to DRAM buffer to receive read data (word alignment) + @param[in] updateType Operation Access Region + - @b NAND_RW_LOADER: loader region + - @b NAND_RW_RESERVED: reserved area + - @b NAND_RW_FIRMWARE: f/w region + + @return + - @b E_OK: read success + - @b E_NAND_BLK_NOT_FOUND: can not find available physical block + - @b E_NAND_READ_BLK_ERR: NAND access block error + - @b E_NAND_READ_PAGE_ERR: NAND access page error +*/ +extern INT32 flash_readSectors(UINT32 startblk, UINT32 length, UINT8 * buffer, UINT32 updateType); + +/** + Flash Write Sector + + This function will write data to internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] startblk Start block of this write operation (unit: flash block) + @param[in] length Length of write operation (unit: byte) + @param[in] buffer Pointer to DRAM buffer of written data (word alignment) + @param[in] updateType Operation Access Region + - @b NAND_RW_LOADER: loader region + - @b NAND_RW_RESERVED: reserved area + - @b NAND_RW_FIRMWARE: f/w region + + @return + - @b E_OK: read success + - @b E_NAND_BLK_NOT_FOUND: can not find available physical block + - @b E_NAND_ERASEE_BLK_ERR: erase block error + - @b E_NAND_WRITE_PAGEDATA_ERR: page program error + - @b E_NAND_INSUFFICINET_BLK: insufficient good block +*/ +extern INT32 flash_writeSectors(UINT32 startblk, UINT32 length, UINT8 * buffer, UINT32 updateType); + +/** + Flash Get Block Size + + This function will return block size of attached internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @return block size (unit: byte) +*/ +extern UINT32 flash_getBlockSize(void); + +/** + Flash Set Reserved Bad Block Number + + This function will set block count reserved to do bad block replacement + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] badBlkNum reserved bad block count (unit: block) + + @return void +*/ +extern void flash_setReservedBadBlockNumber(UINT32 badBlkNum); + +//#NT#2010/04/20#Steven Wang -begin +//#NT#Autumn reserved area from 2 ~ 23 +/** + Flash Set Reserved Area Block Number + + This function will set reserved area max block count + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] RsvMaxBlkNum max reserved area block count (unit: block) + + @return void +*/ +extern void flash_setReservedAreaMaxBlockNumber(UINT32 RsvMaxBlkNum); +//#NT#2010/04/20#Steven Wang -end + +/** + Flash Get Total Size + + This function will return total size of attached internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @return total size (unit: byte) +*/ +extern UINT64 flash_getTotalSize(void); + +/** + Install Flash Access CallBack + + This function will install access callback. + The installed callback will be invoked when one block/page is programmed + + @note card is selected by STORAGEEXT in MakeConfig.txt + + @param[in] accessCB installed callback + + @return void +*/ +extern void flash_installAccessCB(STRG_ACCESS_CB accessCB); + +/** + Install Flash Identify CallBack + + This function will install identification callback. + The installed callback will be invoked when spi flash driver is opened. + + @note NAND driver will NOT invoke the installed call back + + @param[in] identifyCB installed callback + + @return void +*/ +extern void flash_installIdentifyCB(STRG_IDENTIFY_CB identifyCB); + +/** + Flash Set Bus Frequency + + This function will set operating frequency of attached internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] uiFreq Operating frequency (unit: MHz) + + @return void +*/ +extern void flash_setFrequency(UINT32 uiFreq); + +/** + Flash Set Configuration + + This function will set specific configuration for internal flash + + @note Internal flash is selected by STORAGEINT in MakeConfig.txt + + @param[in] uiConfigId Configuration ID, can be: + - @b FLASH_CFG_ID_SPI_SUPPORT_4BITS: configure to support 4 bit SPI flash + @param[in] uiContext Configuration context for uiConfigId + When uiConfigId == FLASH_CFG_ID_SPI_SUPPORT_4BITS: + - @b TRUE: use 4 bit read when attached SPI flash support 4 bit read + - @b FALSE: won't use 4 bit read + + @return + - @b E_OK: success + - @b Else: fail +*/ +extern INT32 flash_setConfig(UINT32 uiConfigId, UINT32 uiContext); +#endif +// External storage public API ( SDIO/MS/xD ) +/** + Open card driver + + This function will initialize card driver and register it to file system + + @note card is selected by STORAGEEXT in MakeConfig.txt + + @return + - @b TRUE: open success + - @b FALSE: open fail +*/ +extern INT32 card_open(void); + +/** + Close card driver + + This function will close card driver + + @note card is selected by STORAGEEXT in MakeConfig.txt + + @return void +*/ +extern void card_close(void); + +/** + Get card type + + This function is used to get card storage type + + @note card is selected by STORAGEEXT in MakeConfig.txt + + @return void +*/ + +extern UINT32 card_get_type(void); + +//@} + +extern void USBOTGReset(void); +//extern INT32 USB3Download(void); +extern INT32 USBDownload(void); +extern void USBSetResult(UINT32 uiResult); +extern INT32 USBStateMachine(void); +#endif diff --git a/board/novatek/ns02501/loader/Include/Type.h b/board/novatek/ns02501/loader/Include/Type.h new file mode 100755 index 000000000000..4c6cb91f1602 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/Type.h @@ -0,0 +1,9 @@ +#ifndef __TYPE_H +#define __TYPE_H + +#include <stdio.h> +//#include <stdint.h> + +#define _ALIGNED(x) __attribute__((aligned(x))) + +#endif // __TYPE_H diff --git a/board/novatek/ns02501/loader/Include/at80c51.h b/board/novatek/ns02501/loader/Include/at80c51.h new file mode 100755 index 000000000000..f2184654bb75 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/at80c51.h @@ -0,0 +1,30 @@ +#ifndef _AT80C51_H +#define _AT80C51_H + +typedef enum _MCU_CC_TYPE { + MCU_CC_TYPE_UNKNOWN, + MCU_CC_TYPE_SYSTEM, + MCU_CC_TYPE_USER, +} MCU_CC_TYPE; + +// if modified, wq_cc.h at80c51.h (sdk, loader) must sync +typedef enum _MCU_CC_SYSCMD_ID { + MCU_CC_SYSCMD_ID_UNKNOWN, + MCU_CC_SYSCMD_ID_SHUTDOWN, + MCU_CC_SYSCMD_ID_SHUTDOWN_AT80C51_PD1, + MCU_CC_SYSCMD_ID_SHUTDOWN_AT80C51_PD2, + MCU_CC_SYSCMD_ID_PERIODIC_MANUAL_PD1, + MCU_CC_SYSCMD_ID_PERIODIC_MANUAL_PD2, + MCU_CC_SYSCMD_ID_PERIODIC_VD_PD1, + MCU_CC_SYSCMD_ID_PERIODIC_VD_PD2, + MCU_CC_SYSCMD_ID_SIMULATE_YDCC_ALARM, + MCU_CC_SYSCMD_ID_MODE_PREROLL, // shutdown main-part for preroll + MCU_CC_SYSCMD_ID_MODE_SENTRY, // shutdown main-part for sentry + MCU_CC_SYSCMD_ID_SET_LOADER2_OFS, // rtos notify flash offset of loader2 (aov) to 8051 + MCU_CC_SYSCMD_ID_REBOOT_TO_MAIN, // loader2 (aov) reboot to loader1 +} MCU_CC_SYSCMD_ID; + +extern int at80c51_ipc(MCU_CC_SYSCMD_ID cmd_id, UINT32 param); +extern int at80c51_is_opened(void); + +#endif \ No newline at end of file diff --git a/board/novatek/ns02501/loader/Include/constant.h b/board/novatek/ns02501/loader/Include/constant.h new file mode 100755 index 000000000000..6375cad45993 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/constant.h @@ -0,0 +1,115 @@ +#ifndef _CONSTANT_H +#define _CONSTANT_H + +//Size MNEMONIC + +#define SZ_1 (1 << 0) /* 0x00000001 */ +#define SZ_2 (1 << 1) /* 0x00000002 */ +#define SZ_4 (1 << 2) /* 0x00000004 */ +#define SZ_8 (1 << 3) /* 0x00000008 */ +#define SZ_16 (1 << 4) /* 0x00000010 */ +#define SZ_32 (1 << 5) /* 0x00000020 */ +#define SZ_64 (1 << 6) /* 0x00000040 */ +#define SZ_128 (1 << 7) /* 0x00000080 */ +#define SZ_256 (1 << 8) /* 0x00000100 */ +#define SZ_512 (1 << 9) /* 0x00000200 */ + +#define SZ_1K (1 << 10) /* 0x00000400 */ +#define SZ_2K (1 << 11) /* 0x00000800 */ +#define SZ_4K (1 << 12) /* 0x00001000 */ +#define SZ_8K (1 << 13) /* 0x00002000 */ +#define SZ_16K (1 << 14) /* 0x00004000 */ +#define SZ_32K (1 << 15) /* 0x00008000 */ +#define SZ_64K (1 << 16) /* 0x00010000 */ +#define SZ_128K (1 << 17) /* 0x00020000 */ +#define SZ_256K (1 << 18) /* 0x00040000 */ +#define SZ_512K (1 << 19) /* 0x00080000 */ + +#define SZ_1M (1 << 20) /* 0x00100000 */ +#define SZ_2M (1 << 21) /* 0x00200000 */ +#define SZ_4M (1 << 22) /* 0x00400000 */ +#define SZ_8M (1 << 23) /* 0x00800000 */ +#define SZ_16M (1 << 24) /* 0x01000000 */ +#define SZ_32M (1 << 25) /* 0x02000000 */ +#define SZ_64M (1 << 26) /* 0x04000000 */ +#define SZ_128M (1 << 27) /* 0x08000000 */ +#define SZ_256M (1 << 28) /* 0x10000000 */ +#define SZ_512M (1 << 29) /* 0x20000000 */ + +#define SZ_1G (1 << 30) /* 0x40000000 */ +#define SZ_2G (1 << 31) /* 0x80000000 */ + +#define SZ_30M (SZ_32M - SZ_2M) + +// ASCII code + +#define CR 0x0D +#define LF 0x0A +#define BS 0x08 +#define ESC 27 + +// Boolean constant definition + +#if 0 +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif +#endif + +#ifndef NULL +#define NULL 0 +#endif + +#ifndef ON +#define ON 1 +#endif + +#ifndef OFF +#define OFF 0 +#endif + +#ifndef ENABLE +#define ENABLE 1 +#endif + +#ifndef DISABLE +#define DISABLE 0 +#endif + +#ifndef DISK_FULL +#define DISK_FULL (-1) +#endif + +// type declaration + +typedef int BOOLEAN; +typedef unsigned long long UINT64; +typedef long long INT64; +typedef unsigned long UINT32; +typedef unsigned long INT32U; +typedef unsigned INT32S; +typedef unsigned char INT8U; +typedef long INT32; +typedef unsigned short UINT16; +typedef short INT16; +typedef unsigned char UINT8; +typedef char INT8; +typedef unsigned long long u64; +typedef unsigned int u32; +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int uint; +typedef unsigned short ushort; +typedef unsigned char uchar; +typedef unsigned int UINT; +typedef int INT; + +typedef enum {FALSE, TRUE} BOOL; + +// error codes +typedef long ER; + +#endif diff --git a/board/novatek/ns02501/loader/Include/ctype.h b/board/novatek/ns02501/loader/Include/ctype.h new file mode 100755 index 000000000000..977d3c69676c --- /dev/null +++ b/board/novatek/ns02501/loader/Include/ctype.h @@ -0,0 +1,36 @@ + + +#ifndef NVT_CTYPES_H__ +#define NVT_CTYPES_H__ + + +#define _U 0x01 /* upper */ +#define _L 0x02 /* lower */ +#define _D 0x04 /* digit */ +#define _C 0x08 /* cntrl */ +#define _P 0x10 /* punct */ +#define _S 0x20 /* white space (space/lf/tab) */ +#define _X 0x40 /* hex digit */ +#define _SP 0x80 /* hard space (0x20) */ + +extern unsigned char _ctype[]; + +#define __ismask(x) (_ctype[(int)(unsigned char)(x)]) + +#define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) +#define isalpha(c) ((__ismask(c)&(_U|_L)) != 0) +#define iscntrl(c) ((__ismask(c)&(_C)) != 0) +#define isdigit(c) ((__ismask(c)&(_D)) != 0) +#define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0) +#define islower(c) ((__ismask(c)&(_L)) != 0) +#define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0) +#define ispunct(c) ((__ismask(c)&(_P)) != 0) +#define isspace(c) ((__ismask(c)&(_S)) != 0) +#define isupper(c) ((__ismask(c)&(_U)) != 0) +#define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0) + +#define isascii(c) (((unsigned char)(c))<=0x7f) +#define toascii(c) (((unsigned char)(c))&0x7f) + + +#endif diff --git a/board/novatek/ns02501/loader/Include/debug.h b/board/novatek/ns02501/loader/Include/debug.h new file mode 100755 index 000000000000..a8f8bbd730fb --- /dev/null +++ b/board/novatek/ns02501/loader/Include/debug.h @@ -0,0 +1,35 @@ +/** + string header + + string header + + @file string.h + @ingroup mISYSClib + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef __NVT_DEBUG_H__ +#define __NVT_DEBUG_H__ + +#include "fuart.h" +/** \addtogroup mISYSClib */ +//@{ + +extern void debug_set_console(CONSOLE_OBJ *p_obj); +extern CONSOLE_OBJ *debug_get_console(void); +extern void debug_err(char *str); +extern void debug_err_var(char *str, int var); +extern void debug_msg(char *str) __attribute__ ((section (".part1"))); +extern void debug_msg_var(char *str, int var) __attribute__ ((section (".part1"))); +extern void debug_dump_addr(UINT32 addr, UINT32 size); +extern int printf(char const *fmt, ...); +extern void perf_mark(char *str); +extern void perf_dump(void); +extern void perf_get_buf(unsigned long *p_buf, int *p_cnt); + +//@} + +#endif + diff --git a/board/novatek/ns02501/loader/Include/fat.h b/board/novatek/ns02501/loader/Include/fat.h new file mode 100755 index 000000000000..488a78e8d2dc --- /dev/null +++ b/board/novatek/ns02501/loader/Include/fat.h @@ -0,0 +1,50 @@ +/** + File system library + + This file is the library of file system + + @file fat.h + @ingroup mISYSFile + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _FAT_H +#define _FAT_H + +#include "constant.h" +#include "StorageDef.h" + +/** + @addtogroup mISYSFile +*/ +//@{ + +#define FAT_READ_TOTAL_FILE_LENGTH 0 + +typedef void (*TOGGLE_LED)(UINT8 WithCount); + +extern BOOL fat_initFAT(UINT32 uiBuf, UINT32 uiSize); +extern UINT32 fat_getPartitionCount(void); +extern BOOL fat_mountPartition(UINT32 partition_id); +extern void fat_closeFAT(void); +extern BOOL fat_open_rootfile(UINT8 *pfilename); +extern UINT32 fat_read_rootfile(UINT8 *pbuf, UINT32 uiRdLen); +extern UINT32 fat_getRootfileSize(void); +extern void fat_close_rootfile(void); +extern void fat_regToggleLED(TOGGLE_LED pToggleLED); +extern void fat_installAccessCB(STRG_ACCESS_CB accessCB); +extern UINT32 fat_write_rootfile(UINT8 *pbuf, UINT32 uiWrLen); + +// For SD registration +extern BOOL fat_internal_initFAT(UINT32 uiBuf, UINT32 uiSize); +extern BOOL fat_internal_open_rootfile(UINT8 *pfilename); +extern UINT32 fat_internal_read_rootfile(UINT8 *pbuf, UINT32 uiRdLen); +extern void fat_internal_close_rootfile(void); +extern UINT32 fat_internal_write_rootfile(UINT8 *pbuf, UINT32 uiWrLen); + +//@} + +#endif + diff --git a/board/novatek/ns02501/loader/Include/fdt/compiler.h b/board/novatek/ns02501/loader/Include/fdt/compiler.h new file mode 100755 index 000000000000..4dc88e80a7ba --- /dev/null +++ b/board/novatek/ns02501/loader/Include/fdt/compiler.h @@ -0,0 +1,50 @@ +#pragma once +/* +* Keep all the ugly #ifdef for system stuff here +*/ + +#ifndef __COMPILER_H__ +#define __COMPILER_H__ + +#ifndef NULL +#define NULL 0 +#endif + +#define uswap_16(x) \ + ((((x) & 0xff00) >> 8) | \ + (((x) & 0x00ff) << 8)) +#define uswap_32(x) \ + ((((x) & 0xff000000) >> 24) | \ + (((x) & 0x00ff0000) >> 8) | \ + (((x) & 0x0000ff00) << 8) | \ + (((x) & 0x000000ff) << 24)) +#define _uswap_64(x, sfx) \ + ((((x) & 0xff00000000000000##sfx) >> 56) | \ + (((x) & 0x00ff000000000000##sfx) >> 40) | \ + (((x) & 0x0000ff0000000000##sfx) >> 24) | \ + (((x) & 0x000000ff00000000##sfx) >> 8) | \ + (((x) & 0x00000000ff000000##sfx) << 8) | \ + (((x) & 0x0000000000ff0000##sfx) << 24) | \ + (((x) & 0x000000000000ff00##sfx) << 40) | \ + (((x) & 0x00000000000000ff##sfx) << 56)) +#if defined(__GNUC__) +#define uswap_64(x) _uswap_64(x, ull) +#else +#define uswap_64(x) _uswap_64(x, ) +#endif +#define cpu_to_le16(x) (x) +#define cpu_to_le32(x) (x) +#define cpu_to_le64(x) (x) +#define le16_to_cpu(x) (x) +#define le32_to_cpu(x) (x) +#define le64_to_cpu(x) (x) +#define cpu_to_be16(x) uswap_16(x) +#define cpu_to_be32(x) uswap_32(x) +#define cpu_to_be64(x) uswap_64(x) +#define be16_to_cpu(x) uswap_16(x) +#define be32_to_cpu(x) uswap_32(x) +#define be64_to_cpu(x) uswap_64(x) + +/* Type for `void *' pointers. */ +typedef unsigned long int uintptr_t; +#endif diff --git a/board/novatek/ns02501/loader/Include/fdt/fdt.h b/board/novatek/ns02501/loader/Include/fdt/fdt.h new file mode 100755 index 000000000000..74961f9026d1 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/fdt/fdt.h @@ -0,0 +1,111 @@ +#ifndef FDT_H +#define FDT_H +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * Copyright 2012 Kim Phillips, Freescale Semiconductor. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __ASSEMBLY__ + +struct fdt_header { + fdt32_t magic; /* magic word FDT_MAGIC */ + fdt32_t totalsize; /* total size of DT block */ + fdt32_t off_dt_struct; /* offset to structure */ + fdt32_t off_dt_strings; /* offset to strings */ + fdt32_t off_mem_rsvmap; /* offset to memory reserve map */ + fdt32_t version; /* format version */ + fdt32_t last_comp_version; /* last compatible version */ + + /* version 2 fields below */ + fdt32_t boot_cpuid_phys; /* Which physical CPU id we're + booting on */ + /* version 3 fields below */ + fdt32_t size_dt_strings; /* size of the strings block */ + + /* version 17 fields below */ + fdt32_t size_dt_struct; /* size of the structure block */ +}; + +struct fdt_reserve_entry { + fdt64_t address; + fdt64_t size; +}; + +struct fdt_node_header { + fdt32_t tag; + char name[0]; +}; + +struct fdt_property { + fdt32_t tag; + fdt32_t len; + fdt32_t nameoff; + char data[0]; +}; + +#endif /* !__ASSEMBLY */ + +#define FDT_MAGIC 0xd00dfeed /* 4: version, 4: total size */ +#define FDT_TAGSIZE sizeof(fdt32_t) + +#define FDT_BEGIN_NODE 0x1 /* Start node: full name */ +#define FDT_END_NODE 0x2 /* End node */ +#define FDT_PROP 0x3 /* Property: name off, + size, content */ +#define FDT_NOP 0x4 /* nop */ +#define FDT_END 0x9 + +#define FDT_V1_SIZE (7*sizeof(fdt32_t)) +#define FDT_V2_SIZE (FDT_V1_SIZE + sizeof(fdt32_t)) +#define FDT_V3_SIZE (FDT_V2_SIZE + sizeof(fdt32_t)) +#define FDT_V16_SIZE FDT_V3_SIZE +#define FDT_V17_SIZE (FDT_V16_SIZE + sizeof(fdt32_t)) + +#endif /* FDT_H */ diff --git a/board/novatek/ns02501/loader/Include/fdt/libfdt.h b/board/novatek/ns02501/loader/Include/fdt/libfdt.h new file mode 100755 index 000000000000..57031b9a590d --- /dev/null +++ b/board/novatek/ns02501/loader/Include/fdt/libfdt.h @@ -0,0 +1,1970 @@ +#ifndef LIBFDT_H +#define LIBFDT_H +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <libfdt_env.h> +#include <fdt.h> + +#define FDT_FIRST_SUPPORTED_VERSION 0x02 +#define FDT_LAST_SUPPORTED_VERSION 0x11 + +/* Error codes: informative error codes */ +#define FDT_ERR_NOTFOUND 1 + /* FDT_ERR_NOTFOUND: The requested node or property does not exist */ +#define FDT_ERR_EXISTS 2 + /* FDT_ERR_EXISTS: Attempted to create a node or property which + * already exists */ +#define FDT_ERR_NOSPACE 3 + /* FDT_ERR_NOSPACE: Operation needed to expand the device + * tree, but its buffer did not have sufficient space to + * contain the expanded tree. Use fdt_open_into() to move the + * device tree to a buffer with more space. */ + +/* Error codes: codes for bad parameters */ +#define FDT_ERR_BADOFFSET 4 + /* FDT_ERR_BADOFFSET: Function was passed a structure block + * offset which is out-of-bounds, or which points to an + * unsuitable part of the structure for the operation. */ +#define FDT_ERR_BADPATH 5 + /* FDT_ERR_BADPATH: Function was passed a badly formatted path + * (e.g. missing a leading / for a function which requires an + * absolute path) */ +#define FDT_ERR_BADPHANDLE 6 + /* FDT_ERR_BADPHANDLE: Function was passed an invalid phandle. + * This can be caused either by an invalid phandle property + * length, or the phandle value was either 0 or -1, which are + * not permitted. */ +#define FDT_ERR_BADSTATE 7 + /* FDT_ERR_BADSTATE: Function was passed an incomplete device + * tree created by the sequential-write functions, which is + * not sufficiently complete for the requested operation. */ + +/* Error codes: codes for bad device tree blobs */ +#define FDT_ERR_TRUNCATED 8 + /* FDT_ERR_TRUNCATED: FDT or a sub-block is improperly + * terminated (overflows, goes outside allowed bounds, or + * isn't properly terminated). */ +#define FDT_ERR_BADMAGIC 9 + /* FDT_ERR_BADMAGIC: Given "device tree" appears not to be a + * device tree at all - it is missing the flattened device + * tree magic number. */ +#define FDT_ERR_BADVERSION 10 + /* FDT_ERR_BADVERSION: Given device tree has a version which + * can't be handled by the requested operation. For + * read-write functions, this may mean that fdt_open_into() is + * required to convert the tree to the expected version. */ +#define FDT_ERR_BADSTRUCTURE 11 + /* FDT_ERR_BADSTRUCTURE: Given device tree has a corrupt + * structure block or other serious error (e.g. misnested + * nodes, or subnodes preceding properties). */ +#define FDT_ERR_BADLAYOUT 12 + /* FDT_ERR_BADLAYOUT: For read-write functions, the given + * device tree has it's sub-blocks in an order that the + * function can't handle (memory reserve map, then structure, + * then strings). Use fdt_open_into() to reorganize the tree + * into a form suitable for the read-write operations. */ + +/* "Can't happen" error indicating a bug in libfdt */ +#define FDT_ERR_INTERNAL 13 + /* FDT_ERR_INTERNAL: libfdt has failed an internal assertion. + * Should never be returned, if it is, it indicates a bug in + * libfdt itself. */ + +/* Errors in device tree content */ +#define FDT_ERR_BADNCELLS 14 + /* FDT_ERR_BADNCELLS: Device tree has a #address-cells, #size-cells + * or similar property with a bad format or value */ + +#define FDT_ERR_BADVALUE 15 + /* FDT_ERR_BADVALUE: Device tree has a property with an unexpected + * value. For example: a property expected to contain a string list + * is not NUL-terminated within the length of its value. */ + +#define FDT_ERR_BADOVERLAY 16 + /* FDT_ERR_BADOVERLAY: The device tree overlay, while + * correctly structured, cannot be applied due to some + * unexpected or missing value, property or node. */ + +#define FDT_ERR_NOPHANDLES 17 + /* FDT_ERR_NOPHANDLES: The device tree doesn't have any + * phandle available anymore without causing an overflow */ + +#define FDT_ERR_MAX 17 + +/**********************************************************************/ +/* Low-level functions (you probably don't need these) */ +/**********************************************************************/ + +#ifndef SWIG /* This function is not useful in Python */ +const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen); +#endif +static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen) +{ + return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen); +} + +uint32_t fdt_next_tag(const void *fdt, int offset, int *nextoffset); + +/** + * NVT_MODIFIED: + * On ARM, unaligned access is supported, so memcpy is not needed. + * Avoid using memcpy to improve performance in fdt_check_full(). + */ +#if 0 +/* + * Alignment helpers: + * These helpers access words from a device tree blob. They're + * built to work even with unaligned pointers on platforms (ike + * ARM) that don't like unaligned loads and stores + */ + +static inline uint32_t fdt32_ld(const fdt32_t *p) +{ + fdt32_t v; + + memcpy(&v, p, sizeof(v)); + return fdt32_to_cpu(v); +} + +static inline uint64_t fdt64_ld(const fdt64_t *p) +{ + fdt64_t v; + + memcpy(&v, p, sizeof(v)); + return fdt64_to_cpu(v); +} +#else +#define fdt32_ld(p) fdt32_to_cpu(*p) +#define fdt64_ld(p) fdt64_to_cpu(*p) +#endif + +/**********************************************************************/ +/* Traversal functions */ +/**********************************************************************/ + +int fdt_next_node(const void *fdt, int offset, int *depth); + +/** + * fdt_first_subnode() - get offset of first direct subnode + * + * @fdt: FDT blob + * @offset: Offset of node to check + * @return offset of first subnode, or -FDT_ERR_NOTFOUND if there is none + */ +int fdt_first_subnode(const void *fdt, int offset); + +/** + * fdt_next_subnode() - get offset of next direct subnode + * + * After first calling fdt_first_subnode(), call this function repeatedly to + * get direct subnodes of a parent node. + * + * @fdt: FDT blob + * @offset: Offset of previous subnode + * @return offset of next subnode, or -FDT_ERR_NOTFOUND if there are no more + * subnodes + */ +int fdt_next_subnode(const void *fdt, int offset); + +/** + * fdt_for_each_subnode - iterate over all subnodes of a parent + * + * @node: child node (int, lvalue) + * @fdt: FDT blob (const void *) + * @parent: parent node (int) + * + * This is actually a wrapper around a for loop and would be used like so: + * + * fdt_for_each_subnode(node, fdt, parent) { + * Use node + * ... + * } + * + * if ((node < 0) && (node != -FDT_ERR_NOT_FOUND)) { + * Error handling + * } + * + * Note that this is implemented as a macro and @node is used as + * iterator in the loop. The parent variable be constant or even a + * literal. + * + */ +#define fdt_for_each_subnode(node, fdt, parent) \ + for (node = fdt_first_subnode(fdt, parent); \ + node >= 0; \ + node = fdt_next_subnode(fdt, node)) + +/**********************************************************************/ +/* General functions */ +/**********************************************************************/ +#define fdt_get_header(fdt, field) \ + (fdt32_ld(&((const struct fdt_header *)(fdt))->field)) +#define fdt_magic(fdt) (fdt_get_header(fdt, magic)) +#define fdt_totalsize(fdt) (fdt_get_header(fdt, totalsize)) +#define fdt_off_dt_struct(fdt) (fdt_get_header(fdt, off_dt_struct)) +#define fdt_off_dt_strings(fdt) (fdt_get_header(fdt, off_dt_strings)) +#define fdt_off_mem_rsvmap(fdt) (fdt_get_header(fdt, off_mem_rsvmap)) +#define fdt_version(fdt) (fdt_get_header(fdt, version)) +#define fdt_last_comp_version(fdt) (fdt_get_header(fdt, last_comp_version)) +#define fdt_boot_cpuid_phys(fdt) (fdt_get_header(fdt, boot_cpuid_phys)) +#define fdt_size_dt_strings(fdt) (fdt_get_header(fdt, size_dt_strings)) +#define fdt_size_dt_struct(fdt) (fdt_get_header(fdt, size_dt_struct)) + +#define fdt_set_hdr_(name) \ + static inline void fdt_set_##name(void *fdt, uint32_t val) \ + { \ + struct fdt_header *fdth = (struct fdt_header *)fdt; \ + fdth->name = cpu_to_fdt32(val); \ + } +fdt_set_hdr_(magic); +fdt_set_hdr_(totalsize); +fdt_set_hdr_(off_dt_struct); +fdt_set_hdr_(off_dt_strings); +fdt_set_hdr_(off_mem_rsvmap); +fdt_set_hdr_(version); +fdt_set_hdr_(last_comp_version); +fdt_set_hdr_(boot_cpuid_phys); +fdt_set_hdr_(size_dt_strings); +fdt_set_hdr_(size_dt_struct); +#undef fdt_set_hdr_ + +/** + * fdt_header_size - return the size of the tree's header + * @fdt: pointer to a flattened device tree + */ +size_t fdt_header_size_(uint32_t version); +static inline size_t fdt_header_size(const void *fdt) +{ + return fdt_header_size_(fdt_version(fdt)); +} + +/** + * fdt_check_header - sanity check a device tree header + + * @fdt: pointer to data which might be a flattened device tree + * + * fdt_check_header() checks that the given buffer contains what + * appears to be a flattened device tree, and that the header contains + * valid information (to the extent that can be determined from the + * header alone). + * + * returns: + * 0, if the buffer appears to contain a valid device tree + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_TRUNCATED, standard meanings, as above + */ +int fdt_check_header(const void *fdt); + +/** + * fdt_move - move a device tree around in memory + * @fdt: pointer to the device tree to move + * @buf: pointer to memory where the device is to be moved + * @bufsize: size of the memory space at buf + * + * fdt_move() relocates, if possible, the device tree blob located at + * fdt to the buffer at buf of size bufsize. The buffer may overlap + * with the existing device tree blob at fdt. Therefore, + * fdt_move(fdt, fdt, fdt_totalsize(fdt)) + * should always succeed. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, bufsize is insufficient to contain the device tree + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_move(const void *fdt, void *buf, int bufsize); + +/**********************************************************************/ +/* Read-only functions */ +/**********************************************************************/ + +int fdt_check_full(const void *fdt, size_t bufsize); + +/** + * fdt_get_string - retrieve a string from the strings block of a device tree + * @fdt: pointer to the device tree blob + * @stroffset: offset of the string within the strings block (native endian) + * @lenp: optional pointer to return the string's length + * + * fdt_get_string() retrieves a pointer to a single string from the + * strings block of the device tree blob at fdt, and optionally also + * returns the string's length in *lenp. + * + * returns: + * a pointer to the string, on success + * NULL, if stroffset is out of bounds, or doesn't point to a valid string + */ +const char *fdt_get_string(const void *fdt, int stroffset, int *lenp); + +/** + * fdt_string - retrieve a string from the strings block of a device tree + * @fdt: pointer to the device tree blob + * @stroffset: offset of the string within the strings block (native endian) + * + * fdt_string() retrieves a pointer to a single string from the + * strings block of the device tree blob at fdt. + * + * returns: + * a pointer to the string, on success + * NULL, if stroffset is out of bounds, or doesn't point to a valid string + */ +const char *fdt_string(const void *fdt, int stroffset); + +/** + * fdt_get_max_phandle - retrieves the highest phandle in a tree + * @fdt: pointer to the device tree blob + * + * fdt_get_max_phandle retrieves the highest phandle in the given + * device tree. This will ignore badly formatted phandles, or phandles + * with a value of 0 or -1. + * + * returns: + * the highest phandle on success + * 0, if no phandle was found in the device tree + * -1, if an error occurred + */ +uint32_t fdt_get_max_phandle(const void *fdt); + +/** + * fdt_num_mem_rsv - retrieve the number of memory reserve map entries + * @fdt: pointer to the device tree blob + * + * Returns the number of entries in the device tree blob's memory + * reservation map. This does not include the terminating 0,0 entry + * or any other (0,0) entries reserved for expansion. + * + * returns: + * the number of entries + */ +int fdt_num_mem_rsv(const void *fdt); + +/** + * fdt_get_mem_rsv - retrieve one memory reserve map entry + * @fdt: pointer to the device tree blob + * @address, @size: pointers to 64-bit variables + * + * On success, *address and *size will contain the address and size of + * the n-th reserve map entry from the device tree blob, in + * native-endian format. + * + * returns: + * 0, on success + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size); + +/** + * fdt_subnode_offset_namelen - find a subnode based on substring + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * @namelen: number of characters of name to consider + * + * Identical to fdt_subnode_offset(), but only examine the first + * namelen characters of name for matching the subnode name. This is + * useful for finding subnodes based on a portion of a larger string, + * such as a full path. + */ +#ifndef SWIG /* Not available in Python */ +int fdt_subnode_offset_namelen(const void *fdt, int parentoffset, + const char *name, int namelen); +#endif +/** + * fdt_subnode_offset - find a subnode of a given node + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * + * fdt_subnode_offset() finds a subnode of the node at structure block + * offset parentoffset with the given name. name may include a unit + * address, in which case fdt_subnode_offset() will find the subnode + * with that unit address, or the unit address may be omitted, in + * which case fdt_subnode_offset() will find an arbitrary subnode + * whose name excluding unit address matches the given name. + * + * returns: + * structure block offset of the requested subnode (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested subnode does not exist + * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE + * tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_subnode_offset(const void *fdt, int parentoffset, const char *name); + +/** + * fdt_path_offset_namelen - find a tree node by its full path + * @fdt: pointer to the device tree blob + * @path: full path of the node to locate + * @namelen: number of characters of path to consider + * + * Identical to fdt_path_offset(), but only consider the first namelen + * characters of path as the path name. + */ +#ifndef SWIG /* Not available in Python */ +int fdt_path_offset_namelen(const void *fdt, const char *path, int namelen); +#endif + +/** + * fdt_path_offset - find a tree node by its full path + * @fdt: pointer to the device tree blob + * @path: full path of the node to locate + * + * fdt_path_offset() finds a node of a given path in the device tree. + * Each path component may omit the unit address portion, but the + * results of this are undefined if any such path component is + * ambiguous (that is if there are multiple nodes at the relevant + * level matching the given component, differentiated only by unit + * address). + * + * returns: + * structure block offset of the node with the requested path (>=0), on + * success + * -FDT_ERR_BADPATH, given path does not begin with '/' or is invalid + * -FDT_ERR_NOTFOUND, if the requested node does not exist + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_path_offset(const void *fdt, const char *path); + +/** + * fdt_get_name - retrieve the name of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of the starting node + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_name() retrieves the name (including unit address) of the + * device tree node at structure block offset nodeoffset. If lenp is + * non-NULL, the length of this name is also returned, in the integer + * pointed to by lenp. + * + * returns: + * pointer to the node's name, on success + * If lenp is non-NULL, *lenp contains the length of that name + * (>=0) + * NULL, on error + * if lenp is non-NULL *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE + * tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +const char *fdt_get_name(const void *fdt, int nodeoffset, int *lenp); + +/** + * fdt_first_property_offset - find the offset of a node's first property + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of a node + * + * fdt_first_property_offset() finds the first property of the node at + * the given structure block offset. + * + * returns: + * structure block offset of the property (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested node has no properties + * -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_first_property_offset(const void *fdt, int nodeoffset); + +/** + * fdt_next_property_offset - step through a node's properties + * @fdt: pointer to the device tree blob + * @offset: structure block offset of a property + * + * fdt_next_property_offset() finds the property immediately after the + * one at the given structure block offset. This will be a property + * of the same node as the given property. + * + * returns: + * structure block offset of the next property (>=0), on success + * -FDT_ERR_NOTFOUND, if the given property is the last in its node + * -FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_next_property_offset(const void *fdt, int offset); + +/** + * fdt_for_each_property_offset - iterate over all properties of a node + * + * @property_offset: property offset (int, lvalue) + * @fdt: FDT blob (const void *) + * @node: node offset (int) + * + * This is actually a wrapper around a for loop and would be used like so: + * + * fdt_for_each_property_offset(property, fdt, node) { + * Use property + * ... + * } + * + * if ((property < 0) && (property != -FDT_ERR_NOT_FOUND)) { + * Error handling + * } + * + * Note that this is implemented as a macro and property is used as + * iterator in the loop. The node variable can be constant or even a + * literal. + */ +#define fdt_for_each_property_offset(property, fdt, node) \ + for (property = fdt_first_property_offset(fdt, node); \ + property >= 0; \ + property = fdt_next_property_offset(fdt, property)) + +/** + * fdt_get_property_by_offset - retrieve the property at a given offset + * @fdt: pointer to the device tree blob + * @offset: offset of the property to retrieve + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_property_by_offset() retrieves a pointer to the + * fdt_property structure within the device tree blob at the given + * offset. If lenp is non-NULL, the length of the property value is + * also returned, in the integer pointed to by lenp. + * + * Note that this code only works on device tree versions >= 16. fdt_getprop() + * works on all versions. + * + * returns: + * pointer to the structure representing the property + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const struct fdt_property *fdt_get_property_by_offset(const void *fdt, + int offset, + int *lenp); + +/** + * fdt_get_property_namelen - find a property based on substring + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @namelen: number of characters of name to consider + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * Identical to fdt_get_property(), but only examine the first namelen + * characters of name for matching the property name. + */ +#ifndef SWIG /* Not available in Python */ +const struct fdt_property *fdt_get_property_namelen(const void *fdt, + int nodeoffset, + const char *name, + int namelen, int *lenp); +#endif + +/** + * fdt_get_property - find a given property in a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_get_property() retrieves a pointer to the fdt_property + * structure within the device tree blob corresponding to the property + * named 'name' of the node at offset nodeoffset. If lenp is + * non-NULL, the length of the property value is also returned, in the + * integer pointed to by lenp. + * + * returns: + * pointer to the structure representing the property + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_NOTFOUND, node does not have named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE + * tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const struct fdt_property *fdt_get_property(const void *fdt, int nodeoffset, + const char *name, int *lenp); +static inline struct fdt_property *fdt_get_property_w(void *fdt, int nodeoffset, + const char *name, + int *lenp) +{ + return (struct fdt_property *)(uintptr_t) + fdt_get_property(fdt, nodeoffset, name, lenp); +} + +/** + * fdt_getprop_by_offset - retrieve the value of a property at a given offset + * @fdt: pointer to the device tree blob + * @ffset: offset of the property to read + * @namep: pointer to a string variable (will be overwritten) or NULL + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_getprop_by_offset() retrieves a pointer to the value of the + * property at structure block offset 'offset' (this will be a pointer + * to within the device blob itself, not a copy of the value). If + * lenp is non-NULL, the length of the property value is also + * returned, in the integer pointed to by lenp. If namep is non-NULL, + * the property's namne will also be returned in the char * pointed to + * by namep (this will be a pointer to within the device tree's string + * block, not a new copy of the name). + * + * returns: + * pointer to the property's value + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * if namep is non-NULL *namep contiains a pointer to the property + * name. + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +#ifndef SWIG /* This function is not useful in Python */ +const void *fdt_getprop_by_offset(const void *fdt, int offset, + const char **namep, int *lenp); +#endif + +/** + * fdt_getprop_namelen - get property value based on substring + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @namelen: number of characters of name to consider + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * Identical to fdt_getprop(), but only examine the first namelen + * characters of name for matching the property name. + */ +#ifndef SWIG /* Not available in Python */ +const void *fdt_getprop_namelen(const void *fdt, int nodeoffset, + const char *name, int namelen, int *lenp); +static inline void *fdt_getprop_namelen_w(void *fdt, int nodeoffset, + const char *name, int namelen, + int *lenp) +{ + return (void *)(uintptr_t)fdt_getprop_namelen(fdt, nodeoffset, name, + namelen, lenp); +} +#endif + +/** + * fdt_getprop - retrieve the value of a given property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to find + * @name: name of the property to find + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_getprop() retrieves a pointer to the value of the property + * named 'name' of the node at offset nodeoffset (this will be a + * pointer to within the device blob itself, not a copy of the value). + * If lenp is non-NULL, the length of the property value is also + * returned, in the integer pointed to by lenp. + * + * returns: + * pointer to the property's value + * if lenp is non-NULL, *lenp contains the length of the property + * value (>=0) + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_NOTFOUND, node does not have named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE + * tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +const void *fdt_getprop(const void *fdt, int nodeoffset, + const char *name, int *lenp); +static inline void *fdt_getprop_w(void *fdt, int nodeoffset, + const char *name, int *lenp) +{ + return (void *)(uintptr_t)fdt_getprop(fdt, nodeoffset, name, lenp); +} + +/** + * fdt_get_phandle - retrieve the phandle of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of the node + * + * fdt_get_phandle() retrieves the phandle of the device tree node at + * structure block offset nodeoffset. + * + * returns: + * the phandle of the node at nodeoffset, on success (!= 0, != -1) + * 0, if the node has no phandle, or another error occurs + */ +uint32_t fdt_get_phandle(const void *fdt, int nodeoffset); + +/** + * fdt_get_alias_namelen - get alias based on substring + * @fdt: pointer to the device tree blob + * @name: name of the alias th look up + * @namelen: number of characters of name to consider + * + * Identical to fdt_get_alias(), but only examine the first namelen + * characters of name for matching the alias name. + */ +#ifndef SWIG /* Not available in Python */ +const char *fdt_get_alias_namelen(const void *fdt, + const char *name, int namelen); +#endif + +/** + * fdt_get_alias - retrieve the path referenced by a given alias + * @fdt: pointer to the device tree blob + * @name: name of the alias th look up + * + * fdt_get_alias() retrieves the value of a given alias. That is, the + * value of the property named 'name' in the node /aliases. + * + * returns: + * a pointer to the expansion of the alias named 'name', if it exists + * NULL, if the given alias or the /aliases node does not exist + */ +const char *fdt_get_alias(const void *fdt, const char *name); + +/** + * fdt_get_path - determine the full path of a node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose path to find + * @buf: character buffer to contain the returned path (will be overwritten) + * @buflen: size of the character buffer at buf + * + * fdt_get_path() computes the full path of the node at offset + * nodeoffset, and records that path in the buffer at buf. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + * 0, on success + * buf contains the absolute path of the node at + * nodeoffset, as a NUL-terminated string. + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_NOSPACE, the path of the given node is longer than (bufsize-1) + * characters and will not fit in the given buffer. + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen); + +/** + * fdt_supernode_atdepth_offset - find a specific ancestor of a node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * @supernodedepth: depth of the ancestor to find + * @nodedepth: pointer to an integer variable (will be overwritten) or NULL + * + * fdt_supernode_atdepth_offset() finds an ancestor of the given node + * at a specific depth from the root (where the root itself has depth + * 0, its immediate subnodes depth 1 and so forth). So + * fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, NULL); + * will always return 0, the offset of the root node. If the node at + * nodeoffset has depth D, then: + * fdt_supernode_atdepth_offset(fdt, nodeoffset, D, NULL); + * will return nodeoffset itself. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + * structure block offset of the node at node offset's ancestor + * of depth supernodedepth (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_NOTFOUND, supernodedepth was greater than the depth of + * nodeoffset + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset, + int supernodedepth, int *nodedepth); + +/** + * fdt_node_depth - find the depth of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * + * fdt_node_depth() finds the depth of a given node. The root node + * has depth 0, its immediate subnodes depth 1 and so forth. + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset. + * + * returns: + * depth of the node at nodeoffset (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_depth(const void *fdt, int nodeoffset); + +/** + * fdt_parent_offset - find the parent of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose parent to find + * + * fdt_parent_offset() locates the parent node of a given node (that + * is, it finds the offset of the node which contains the node at + * nodeoffset as a subnode). + * + * NOTE: This function is expensive, as it must scan the device tree + * structure from the start to nodeoffset, *twice*. + * + * returns: + * structure block offset of the parent of the node at nodeoffset + * (>=0), on success + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_parent_offset(const void *fdt, int nodeoffset); + +/** + * fdt_node_offset_by_prop_value - find nodes with a given property value + * @fdt: pointer to the device tree blob + * @startoffset: only find nodes after this offset + * @propname: property name to check + * @propval: property value to search for + * @proplen: length of the value in propval + * + * fdt_node_offset_by_prop_value() returns the offset of the first + * node after startoffset, which has a property named propname whose + * value is of length proplen and has value equal to propval; or if + * startoffset is -1, the very first such node in the tree. + * + * To iterate through all nodes matching the criterion, the following + * idiom can be used: + * offset = fdt_node_offset_by_prop_value(fdt, -1, propname, + * propval, proplen); + * while (offset != -FDT_ERR_NOTFOUND) { + * // other code here + * offset = fdt_node_offset_by_prop_value(fdt, offset, propname, + * propval, proplen); + * } + * + * Note the -1 in the first call to the function, if 0 is used here + * instead, the function will never locate the root node, even if it + * matches the criterion. + * + * returns: + * structure block offset of the located node (>= 0, >startoffset), + * on success + * -FDT_ERR_NOTFOUND, no node matching the criterion exists in the + * tree after startoffset + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_prop_value(const void *fdt, int startoffset, + const char *propname, + const void *propval, int proplen); + +/** + * fdt_node_offset_by_phandle - find the node with a given phandle + * @fdt: pointer to the device tree blob + * @phandle: phandle value + * + * fdt_node_offset_by_phandle() returns the offset of the node + * which has the given phandle value. If there is more than one node + * in the tree with the given phandle (an invalid tree), results are + * undefined. + * + * returns: + * structure block offset of the located node (>= 0), on success + * -FDT_ERR_NOTFOUND, no node with that phandle exists + * -FDT_ERR_BADPHANDLE, given phandle value was invalid (0 or -1) + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle); + +/** + * fdt_node_check_compatible: check a node's compatible property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of a tree node + * @compatible: string to match against + * + * + * fdt_node_check_compatible() returns 0 if the given node contains a + * 'compatible' property with the given string as one of its elements, + * it returns non-zero otherwise, or on error. + * + * returns: + * 0, if the node has a 'compatible' property listing the given string + * 1, if the node has a 'compatible' property, but it does not list + * the given string + * -FDT_ERR_NOTFOUND, if the given node has no 'compatible' property + * -FDT_ERR_BADOFFSET, if nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_check_compatible(const void *fdt, int nodeoffset, + const char *compatible); + +/** + * fdt_node_offset_by_compatible - find nodes with a given 'compatible' value + * @fdt: pointer to the device tree blob + * @startoffset: only find nodes after this offset + * @compatible: 'compatible' string to match against + * + * fdt_node_offset_by_compatible() returns the offset of the first + * node after startoffset, which has a 'compatible' property which + * lists the given compatible string; or if startoffset is -1, the + * very first such node in the tree. + * + * To iterate through all nodes matching the criterion, the following + * idiom can be used: + * offset = fdt_node_offset_by_compatible(fdt, -1, compatible); + * while (offset != -FDT_ERR_NOTFOUND) { + * // other code here + * offset = fdt_node_offset_by_compatible(fdt, offset, compatible); + * } + * + * Note the -1 in the first call to the function, if 0 is used here + * instead, the function will never locate the root node, even if it + * matches the criterion. + * + * returns: + * structure block offset of the located node (>= 0, >startoffset), + * on success + * -FDT_ERR_NOTFOUND, no node matching the criterion exists in the + * tree after startoffset + * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, standard meanings + */ +int fdt_node_offset_by_compatible(const void *fdt, int startoffset, + const char *compatible); + +/** + * fdt_stringlist_contains - check a string list property for a string + * @strlist: Property containing a list of strings to check + * @listlen: Length of property + * @str: String to search for + * + * This is a utility function provided for convenience. The list contains + * one or more strings, each terminated by \0, as is found in a device tree + * "compatible" property. + * + * @return: 1 if the string is found in the list, 0 not found, or invalid list + */ +int fdt_stringlist_contains(const char *strlist, int listlen, const char *str); + +/** + * fdt_stringlist_count - count the number of strings in a string list + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of a tree node + * @property: name of the property containing the string list + * @return: + * the number of strings in the given property + * -FDT_ERR_BADVALUE if the property value is not NUL-terminated + * -FDT_ERR_NOTFOUND if the property does not exist + */ +int fdt_stringlist_count(const void *fdt, int nodeoffset, const char *property); + +/** + * fdt_stringlist_search - find a string in a string list and return its index + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of a tree node + * @property: name of the property containing the string list + * @string: string to look up in the string list + * + * Note that it is possible for this function to succeed on property values + * that are not NUL-terminated. That's because the function will stop after + * finding the first occurrence of @string. This can for example happen with + * small-valued cell properties, such as #address-cells, when searching for + * the empty string. + * + * @return: + * the index of the string in the list of strings + * -FDT_ERR_BADVALUE if the property value is not NUL-terminated + * -FDT_ERR_NOTFOUND if the property does not exist or does not contain + * the given string + */ +int fdt_stringlist_search(const void *fdt, int nodeoffset, const char *property, + const char *string); + +/** + * fdt_stringlist_get() - obtain the string at a given index in a string list + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of a tree node + * @property: name of the property containing the string list + * @index: index of the string to return + * @lenp: return location for the string length or an error code on failure + * + * Note that this will successfully extract strings from properties with + * non-NUL-terminated values. For example on small-valued cell properties + * this function will return the empty string. + * + * If non-NULL, the length of the string (on success) or a negative error-code + * (on failure) will be stored in the integer pointer to by lenp. + * + * @return: + * A pointer to the string at the given index in the string list or NULL on + * failure. On success the length of the string will be stored in the memory + * location pointed to by the lenp parameter, if non-NULL. On failure one of + * the following negative error codes will be returned in the lenp parameter + * (if non-NULL): + * -FDT_ERR_BADVALUE if the property value is not NUL-terminated + * -FDT_ERR_NOTFOUND if the property does not exist + */ +const char *fdt_stringlist_get(const void *fdt, int nodeoffset, + const char *property, int index, + int *lenp); + +/**********************************************************************/ +/* Read-only functions (addressing related) */ +/**********************************************************************/ + +/** + * FDT_MAX_NCELLS - maximum value for #address-cells and #size-cells + * + * This is the maximum value for #address-cells, #size-cells and + * similar properties that will be processed by libfdt. IEE1275 + * requires that OF implementations handle values up to 4. + * Implementations may support larger values, but in practice higher + * values aren't used. + */ +#define FDT_MAX_NCELLS 4 + +/** + * fdt_address_cells - retrieve address size for a bus represented in the tree + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node to find the address size for + * + * When the node has a valid #address-cells property, returns its value. + * + * returns: + * 0 <= n < FDT_MAX_NCELLS, on success + * 2, if the node has no #address-cells property + * -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid + * #address-cells property + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_address_cells(const void *fdt, int nodeoffset); + +/** + * fdt_size_cells - retrieve address range size for a bus represented in the + * tree + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node to find the address range size for + * + * When the node has a valid #size-cells property, returns its value. + * + * returns: + * 0 <= n < FDT_MAX_NCELLS, on success + * 2, if the node has no #size-cells property + * -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid + * #size-cells property + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_size_cells(const void *fdt, int nodeoffset); + + +/**********************************************************************/ +/* Write-in-place functions */ +/**********************************************************************/ + +/** + * fdt_setprop_inplace_namelen_partial - change a property's value, + * but not its size + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @namelen: number of characters of name to consider + * @idx: index of the property to change in the array + * @val: pointer to data to replace the property value with + * @len: length of the property value + * + * Identical to fdt_setprop_inplace(), but modifies the given property + * starting from the given index, and using only the first characters + * of the name. It is useful when you want to manipulate only one value of + * an array and you have a string that doesn't end with \0. + */ +#ifndef SWIG /* Not available in Python */ +int fdt_setprop_inplace_namelen_partial(void *fdt, int nodeoffset, + const char *name, int namelen, + uint32_t idx, const void *val, + int len); +#endif + +/** + * fdt_setprop_inplace - change a property's value, but not its size + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: pointer to data to replace the property value with + * @len: length of the property value + * + * fdt_setprop_inplace() replaces the value of a given property with + * the data in val, of length len. This function cannot change the + * size of a property, and so will only work if len is equal to the + * current length of the property. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if len is not equal to the property's current length + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +#ifndef SWIG /* Not available in Python */ +int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name, + const void *val, int len); +#endif + +/** + * fdt_setprop_inplace_u32 - change the value of a 32-bit integer property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value to replace the property with + * + * fdt_setprop_inplace_u32() replaces the value of a given property + * with the 32-bit integer value in val, converting val to big-endian + * if necessary. This function cannot change the size of a property, + * and so will only work if the property already exists and has length + * 4. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if the property's length is not equal to 4 + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_inplace_u32(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_setprop_inplace(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_inplace_u64 - change the value of a 64-bit integer property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value to replace the property with + * + * fdt_setprop_inplace_u64() replaces the value of a given property + * with the 64-bit integer value in val, converting val to big-endian + * if necessary. This function cannot change the size of a property, + * and so will only work if the property already exists and has length + * 8. + * + * This function will alter only the bytes in the blob which contain + * the given property value, and will not alter or move any other part + * of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, if the property's length is not equal to 8 + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_inplace_u64(void *fdt, int nodeoffset, + const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_setprop_inplace(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_inplace_cell - change the value of a single-cell property + * + * This is an alternative name for fdt_setprop_inplace_u32() + */ +static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + return fdt_setprop_inplace_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_nop_property - replace a property with nop tags + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to nop + * @name: name of the property to nop + * + * fdt_nop_property() will replace a given property's representation + * in the blob with FDT_NOP tags, effectively removing it from the + * tree. + * + * This function will alter only the bytes in the blob which contain + * the property, and will not alter or move any other part of the + * tree. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_nop_property(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_nop_node - replace a node (subtree) with nop tags + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node to nop + * + * fdt_nop_node() will replace a given node's representation in the + * blob, including all its subnodes, if any, with FDT_NOP tags, + * effectively removing it from the tree. + * + * This function will alter only the bytes in the blob which contain + * the node and its properties and subnodes, and will not alter or + * move any other part of the tree. + * + * returns: + * 0, on success + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_nop_node(void *fdt, int nodeoffset); + +/**********************************************************************/ +/* Sequential write functions */ +/**********************************************************************/ + +int fdt_create(void *buf, int bufsize); +int fdt_resize(void *fdt, void *buf, int bufsize); +int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size); +int fdt_finish_reservemap(void *fdt); +int fdt_begin_node(void *fdt, const char *name); +int fdt_property(void *fdt, const char *name, const void *val, int len); +static inline int fdt_property_u32(void *fdt, const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_property(fdt, name, &tmp, sizeof(tmp)); +} +static inline int fdt_property_u64(void *fdt, const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_property(fdt, name, &tmp, sizeof(tmp)); +} + +#ifndef SWIG /* Not available in Python */ +static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val) +{ + return fdt_property_u32(fdt, name, val); +} +#endif + +/** + * fdt_property_placeholder - add a new property and return a ptr to its value + * + * @fdt: pointer to the device tree blob + * @name: name of property to add + * @len: length of property value in bytes + * @valp: returns a pointer to where where the value should be placed + * + * returns: + * 0, on success + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_NOSPACE, standard meanings + */ +int fdt_property_placeholder(void *fdt, const char *name, int len, void **valp); + +#define fdt_property_string(fdt, name, str) \ + fdt_property(fdt, name, str, strlen(str)+1) +int fdt_end_node(void *fdt); +int fdt_finish(void *fdt); + +/**********************************************************************/ +/* Read-write functions */ +/**********************************************************************/ + +int fdt_create_empty_tree(void *buf, int bufsize); +int fdt_open_into(const void *fdt, void *buf, int bufsize); +int fdt_pack(void *fdt); + +/** + * fdt_add_mem_rsv - add one memory reserve map entry + * @fdt: pointer to the device tree blob + * @address, @size: 64-bit values (native endian) + * + * Adds a reserve map entry to the given blob reserving a region at + * address address of length size. + * + * This function will insert data into the reserve map and will + * therefore change the indexes of some entries in the table. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new reservation entry + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size); + +/** + * fdt_del_mem_rsv - remove a memory reserve map entry + * @fdt: pointer to the device tree blob + * @n: entry to remove + * + * fdt_del_mem_rsv() removes the n-th memory reserve map entry from + * the blob. + * + * This function will delete data from the reservation table and will + * therefore change the indexes of some entries in the table. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, there is no entry of the given index (i.e. there + * are less than n+1 reserve map entries) + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_del_mem_rsv(void *fdt, int n); + +/** + * fdt_set_name - change the name of a given node + * @fdt: pointer to the device tree blob + * @nodeoffset: structure block offset of a node + * @name: name to give the node + * + * fdt_set_name() replaces the name (including unit address, if any) + * of the given node with the given string. NOTE: this function can't + * efficiently check if the new name is unique amongst the given + * node's siblings; results are undefined if this function is invoked + * with a name equal to one of the given node's siblings. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob + * to contain the new name + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings + */ +int fdt_set_name(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_setprop - create or change a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: pointer to data to set the property value to + * @len: length of the property value + * + * fdt_setprop() sets the value of the named property in the given + * node to the given value and length, creating the property if it + * does not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_setprop(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + +/** + * fdt_setprop_placeholder - allocate space for a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @len: length of the property value + * @prop_data: return pointer to property data + * + * fdt_setprop_placeholer() allocates the named property in the given node. + * If the property exists it is resized. In either case a pointer to the + * property data is returned. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_setprop_placeholder(void *fdt, int nodeoffset, const char *name, + int len, void **prop_data); + +/** + * fdt_setprop_u32 - set a property to a 32-bit integer + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value for the property (native endian) + * + * fdt_setprop_u32() sets the value of the named property in the given + * node to the given 32-bit integer value (converting to big-endian if + * necessary), or creates a new property with that value if it does + * not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_u32(void *fdt, int nodeoffset, const char *name, + uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_setprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_u64 - set a property to a 64-bit integer + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value for the property (native endian) + * + * fdt_setprop_u64() sets the value of the named property in the given + * node to the given 64-bit integer value (converting to big-endian if + * necessary), or creates a new property with that value if it does + * not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_setprop_u64(void *fdt, int nodeoffset, const char *name, + uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_setprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_setprop_cell - set a property to a single cell value + * + * This is an alternative name for fdt_setprop_u32() + */ +static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name, + uint32_t val) +{ + return fdt_setprop_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_setprop_string - set a property to a string value + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @str: string value for the property + * + * fdt_setprop_string() sets the value of the named property in the + * given node to the given string value (using the length of the + * string to determine the new length of the property), or creates a + * new property with that value if it does not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +#define fdt_setprop_string(fdt, nodeoffset, name, str) \ + fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1) + + +/** + * fdt_setprop_empty - set a property to an empty value + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * + * fdt_setprop_empty() sets the value of the named property in the + * given node to an empty (zero length) value, or creates a new empty + * property if it does not already exist. + * + * This function may insert or delete data from the blob, and will + * therefore change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +#define fdt_setprop_empty(fdt, nodeoffset, name) \ + fdt_setprop((fdt), (nodeoffset), (name), NULL, 0) + +/** + * fdt_appendprop - append to or create a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to append to + * @val: pointer to data to append to the property value + * @len: length of the data to append to the property value + * + * fdt_appendprop() appends the value to the named property in the + * given node, creating the property if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_appendprop(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + +/** + * fdt_appendprop_u32 - append a 32-bit integer value to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 32-bit integer value to append to the property (native endian) + * + * fdt_appendprop_u32() appends the given 32-bit integer value + * (converting to big-endian if necessary) to the value of the named + * property in the given node, or creates a new property with that + * value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_appendprop_u32(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + fdt32_t tmp = cpu_to_fdt32(val); + return fdt_appendprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_appendprop_u64 - append a 64-bit integer value to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @val: 64-bit integer value to append to the property (native endian) + * + * fdt_appendprop_u64() appends the given 64-bit integer value + * (converting to big-endian if necessary) to the value of the named + * property in the given node, or creates a new property with that + * value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +static inline int fdt_appendprop_u64(void *fdt, int nodeoffset, + const char *name, uint64_t val) +{ + fdt64_t tmp = cpu_to_fdt64(val); + return fdt_appendprop(fdt, nodeoffset, name, &tmp, sizeof(tmp)); +} + +/** + * fdt_appendprop_cell - append a single cell value to a property + * + * This is an alternative name for fdt_appendprop_u32() + */ +static inline int fdt_appendprop_cell(void *fdt, int nodeoffset, + const char *name, uint32_t val) +{ + return fdt_appendprop_u32(fdt, nodeoffset, name, val); +} + +/** + * fdt_appendprop_string - append a string to a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to change + * @name: name of the property to change + * @str: string value to append to the property + * + * fdt_appendprop_string() appends the given string to the value of + * the named property in the given node, or creates a new property + * with that value if it does not already exist. + * + * This function may insert data into the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to + * contain the new property value + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_TRUNCATED, standard meanings + */ +#define fdt_appendprop_string(fdt, nodeoffset, name, str) \ + fdt_appendprop((fdt), (nodeoffset), (name), (str), strlen(str)+1) + +/** + * fdt_delprop - delete a property + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node whose property to nop + * @name: name of the property to nop + * + * fdt_del_property() will delete the given property. + * + * This function will delete data from the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_NOTFOUND, node does not have the named property + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_delprop(void *fdt, int nodeoffset, const char *name); + +/** + * fdt_add_subnode_namelen - creates a new node based on substring + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * @namelen: number of characters of name to consider + * + * Identical to fdt_add_subnode(), but use only the first namelen + * characters of name as the name of the new node. This is useful for + * creating subnodes based on a portion of a larger string, such as a + * full path. + */ +#ifndef SWIG /* Not available in Python */ +int fdt_add_subnode_namelen(void *fdt, int parentoffset, + const char *name, int namelen); +#endif + +/** + * fdt_add_subnode - creates a new node + * @fdt: pointer to the device tree blob + * @parentoffset: structure block offset of a node + * @name: name of the subnode to locate + * + * fdt_add_subnode() creates a new node as a subnode of the node at + * structure block offset parentoffset, with the given name (which + * should include the unit address, if any). + * + * This function will insert data into the blob, and will therefore + * change the offsets of some existing nodes. + + * returns: + * structure block offset of the created nodeequested subnode (>=0), on + * success + * -FDT_ERR_NOTFOUND, if the requested subnode does not exist + * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE + * tag + * -FDT_ERR_EXISTS, if the node at parentoffset already has a subnode of + * the given name + * -FDT_ERR_NOSPACE, if there is insufficient free space in the + * blob to contain the new node + * -FDT_ERR_NOSPACE + * -FDT_ERR_BADLAYOUT + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings. + */ +int fdt_add_subnode(void *fdt, int parentoffset, const char *name); + +/** + * fdt_del_node - delete a node (subtree) + * @fdt: pointer to the device tree blob + * @nodeoffset: offset of the node to nop + * + * fdt_del_node() will remove the given node, including all its + * subnodes if any, from the blob. + * + * This function will delete data from the blob, and will therefore + * change the offsets of some existing nodes. + * + * returns: + * 0, on success + * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_del_node(void *fdt, int nodeoffset); + +/** + * fdt_overlay_apply - Applies a DT overlay on a base DT + * @fdt: pointer to the base device tree blob + * @fdto: pointer to the device tree overlay blob + * + * fdt_overlay_apply() will apply the given device tree overlay on the + * given base device tree. + * + * Expect the base device tree to be modified, even if the function + * returns an error. + * + * returns: + * 0, on success + * -FDT_ERR_NOSPACE, there's not enough space in the base device tree + * -FDT_ERR_NOTFOUND, the overlay points to some inexistant nodes or + * properties in the base DT + * -FDT_ERR_BADPHANDLE, + * -FDT_ERR_BADOVERLAY, + * -FDT_ERR_NOPHANDLES, + * -FDT_ERR_INTERNAL, + * -FDT_ERR_BADLAYOUT, + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADOFFSET, + * -FDT_ERR_BADPATH, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_TRUNCATED, standard meanings + */ +int fdt_overlay_apply(void *fdt, void *fdto); + +/**********************************************************************/ +/* Debugging / informational functions */ +/**********************************************************************/ + +const char *fdt_strerror(int errval); + +#endif /* LIBFDT_H */ diff --git a/board/novatek/ns02501/loader/Include/fdt/libfdt_env.h b/board/novatek/ns02501/loader/Include/fdt/libfdt_env.h new file mode 100755 index 000000000000..69b04322fcb0 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/fdt/libfdt_env.h @@ -0,0 +1,178 @@ +#ifndef LIBFDT_ENV_H +#define LIBFDT_ENV_H +/* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. + * Copyright 2012 Kim Phillips, Freescale Semiconductor. + * + * libfdt is dual licensed: you can use it either under the terms of + * the GPL, or the BSD license, at your option. + * + * a) This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * Alternatively, + * + * b) Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +//#include <stddef.h> +#include "compiler.h" + +#ifdef __KERNEL__ +#include <linux/string.h> +#include <linux/kernel.h> +#define strtoul simple_strtoul +#else +//#include <stdint.h> +#include <stdlib.h> +#include <string.h> +#include <limits.h> +#endif + +#include <string.h> +#define memcpy utl_memcpy +#define memset utl_memset + +typedef __signed__ char __s8; +typedef unsigned char __u8; + +typedef __signed__ short __s16; +typedef unsigned short __u16; + +typedef __signed__ int __s32; +typedef unsigned int __u32; + +#if defined(__GNUC__) +__extension__ typedef __signed__ long long __s64; +__extension__ typedef unsigned long long __u64; +#endif + +typedef __u8 uint8_t; +typedef __u16 uint16_t; +typedef __u32 uint32_t; +typedef __s32 int32_t; + +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) +typedef __u64 uint64_t; +typedef __u64 u_int64_t; +typedef __s64 int64_t; +#endif + + +#ifdef __CHECKER__ +#define FDT_FORCE __attribute__((force)) +#define FDT_BITWISE __attribute__((bitwise)) +#else +#define FDT_FORCE +#define FDT_BITWISE +#endif + +typedef uint16_t FDT_BITWISE fdt16_t; +typedef uint32_t FDT_BITWISE fdt32_t; +typedef uint64_t FDT_BITWISE fdt64_t; + +#define EXTRACT_BYTE(x, n) ((unsigned long long)((uint8_t *)&x)[n]) +#define CPU_TO_FDT16(x) ((EXTRACT_BYTE(x, 0) << 8) | EXTRACT_BYTE(x, 1)) +#define CPU_TO_FDT32(x) ((EXTRACT_BYTE(x, 0) << 24) | (EXTRACT_BYTE(x, 1) << 16) | \ + (EXTRACT_BYTE(x, 2) << 8) | EXTRACT_BYTE(x, 3)) +#define CPU_TO_FDT64(x) ((EXTRACT_BYTE(x, 0) << 56) | (EXTRACT_BYTE(x, 1) << 48) | \ + (EXTRACT_BYTE(x, 2) << 40) | (EXTRACT_BYTE(x, 3) << 32) | \ + (EXTRACT_BYTE(x, 4) << 24) | (EXTRACT_BYTE(x, 5) << 16) | \ + (EXTRACT_BYTE(x, 6) << 8) | EXTRACT_BYTE(x, 7)) + +static inline uint16_t fdt16_to_cpu(fdt16_t x) +{ + return (FDT_FORCE uint16_t)CPU_TO_FDT16(x); +} +static inline fdt16_t cpu_to_fdt16(uint16_t x) +{ + return (FDT_FORCE fdt16_t)CPU_TO_FDT16(x); +} + +static inline uint32_t fdt32_to_cpu(fdt32_t x) +{ + return (FDT_FORCE uint32_t)CPU_TO_FDT32(x); +} +static inline fdt32_t cpu_to_fdt32(uint32_t x) +{ + return (FDT_FORCE fdt32_t)CPU_TO_FDT32(x); +} + +static inline uint64_t fdt64_to_cpu(fdt64_t x) +{ + return (FDT_FORCE uint64_t)CPU_TO_FDT64(x); +} +static inline fdt64_t cpu_to_fdt64(uint64_t x) +{ + return (FDT_FORCE fdt64_t)CPU_TO_FDT64(x); +} +#undef CPU_TO_FDT64 +#undef CPU_TO_FDT32 +#undef CPU_TO_FDT16 +#undef EXTRACT_BYTE + +#ifdef __APPLE__ +#include <AvailabilityMacros.h> + +/* strnlen() is not available on Mac OS < 10.7 */ +# if !defined(MAC_OS_X_VERSION_10_7) || (MAC_OS_X_VERSION_MAX_ALLOWED < \ + MAC_OS_X_VERSION_10_7) + +#define strnlen fdt_strnlen + +/* + * fdt_strnlen: returns the length of a string or max_count - which ever is + * smallest. + * Input 1 string: the string whose size is to be determined + * Input 2 max_count: the maximum value returned by this function + * Output: length of the string or max_count (the smallest of the two) + */ +static inline size_t fdt_strnlen(const char *string, size_t max_count) +{ + const char *p = memchr(string, 0, max_count); + return p ? p - string : max_count; +} + +#endif /* !defined(MAC_OS_X_VERSION_10_7) || (MAC_OS_X_VERSION_MAX_ALLOWED < + MAC_OS_X_VERSION_10_7) */ + +#endif /* __APPLE__ */ + +#endif /* LIBFDT_ENV_H */ diff --git a/board/novatek/ns02501/loader/Include/fuart.h b/board/novatek/ns02501/loader/Include/fuart.h new file mode 100755 index 000000000000..471c20f58207 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/fuart.h @@ -0,0 +1,85 @@ +/** + Header file for UART + + This file is the header file for UART driver + + @file fuart.h + @ingroup mIIOUART + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + + +#ifndef _FUART_H +#define _FUART_H + +#include "constant.h" + +/** + @addtogroup mIIOUART +*/ +//@{ +#ifndef ENUM_DUMMY4WORD +#define ENUM_DUMMY4WORD(name) E_##name = 0x10000000 +#endif + +typedef enum { + CONSOLE_UART0, + CONSOLE_UART1, + + ENUM_DUMMY4WORD(UART_CONSOLE_CH) +} UART_CONSOLE_CH; + + +typedef struct _CONSOLE { + void (*hook)(void); ///< start this object + void (*putc)(char c); ///< console input funciton pointer + unsigned char (*getc)(void); ///< console output function point +} CONSOLE_OBJ, *PCONSOLE_OBJ; + + + +/** + @name Put system UART string + + Print string to UART + + @param[in] m printed string +*/ +//@{ +#define uart_putSystemUARTStr(m) fLib_PutSerialStr(m) ///< Print string MACRO +//@} + +/** + @name Put system UART character + + Print character to UART + + @param[in] m printed character +*/ +//@{ +#define uart_putSystemUARTChar(m) fLib_PutSerialChar(m) ///< Print character MACRO +//@} + +extern void fLib_PutSerialChar(char Ch) __attribute__ ((section (".part1"))); +extern void fLib_PutSerialStr(char *Str) __attribute__ ((section (".part1"))); +extern void uart_openSystemUART(void); +extern void uart_openSystemUART2(void); + +extern void uart_getChar_polling(char * c); +extern void uart_chkChar(char * c); +extern void uart_getStr_polling(char * c); +extern void uart_getBinary(char *pcString, UINT32 BufferLen); + +void serial_init(void); +unsigned char serial_getc(void); +void serial_putc(char c); +void serial2_init(void); +unsigned char serial2_getc(void); +void serial2_putc(char c); +PCONSOLE_OBJ get_uart_object(UART_CONSOLE_CH uart_ch); + +//@} + +#endif diff --git a/board/novatek/ns02501/loader/Include/gic.h b/board/novatek/ns02501/loader/Include/gic.h new file mode 100755 index 000000000000..aaec4784afb6 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/gic.h @@ -0,0 +1,195 @@ + +#ifndef _ASM_ARMV8_GIC_H_ +#define _ASM_ARMV8_GIC_H_ +//#include "FLibARM.h" +#define UART_INTID 43 + + + +#define GIC_UART_INTID (UART_INTID + 32) +#if 0 +/* + * Distributor layout + */ +#define GICD_CTLR 0x0000 +#define GICD_TYPER 0x0004 +#define GICD_IIDR 0x0008 +#define GICD_IGROUP 0x0080 +#define GICD_ISENABLE 0x0100 +#define GICD_ICENABLE 0x0180 +#define GICD_ISPEND 0x0200 +#define GICD_ICPEND 0x0280 +#define GICD_ISACTIVE 0x0300 +#define GICD_ICACTIVE 0x0380 +#define GICD_IPRIORITY 0x0400 +#define GICD_ITARGETS 0x0800 +#define GICD_ICFG 0x0c00 +#define GICD_PPISR 0x0d00 +#define GICD_SPISR 0x0d04 +#define GICD_SGIR 0x0f00 +#define GICD_CPENDSGI 0x0f10 +#define GICD_SPENDSGI 0x0f20 +#define GICD_PIDR4 0x0fd0 +#define GICD_PIDR5 0x0fd4 +#define GICD_PIDR6 0x0fd8 +#define GICD_PIDR7 0x0fdc +#define GICD_PIDR0 0x0fe0 +#define GICD_PIDR1 0x0fe4 +#define GICD_PIDR2 0x0fe8 +#define GICD_PIDR3 0x0fec +#define GICD_CIDR0 0x0ff0 +#define GICD_CIDR1 0x0ff4 +#define GICD_CIDR2 0x0ff8 +#define GICD_CIDR3 0x0ffc + +/* + * CPU Interface layout + */ +#define GICC_CTLR 0x0000 +#define GICC_PMR 0x0004 +#define GICC_BPR 0x0008 +#define GICC_IAR 0x000c +#define GICC_EOIR 0x0010 +#define GICC_RPR 0x0014 +#define GICC_HPPIR 0x0018 +#define GICC_ABPR 0x001c +#define GICC_AIAR 0x0020 +#define GICC_AEOIR 0x0024 +#define GICC_AHPPIR 0x0028 +#define GICC_APR0 0x00d0 +#define GICC_NSAPR0 0x00e0 +#define GICC_IIDR 0x00fc +#define GICC_DIR 0x1000 +#endif + +#define MAX_SPIS 480 + +#define MAX_PPIS 14 +#define MAX_SGIS 16 + +#define MIN_SGI_ID 0 +#define MIN_PPI_ID 16 +#define MIN_SPI_ID 32 + +#define GRP0 0 +#define GRP1 1 + +#define _GICD_ 0x1000 +#define _GICC_ 0x2000 +#define _GICH_ 0x4000 +#define _GICV_ 0x6000 + +#define GIC_PRI_MASK 0xff +#define GIC_HIGHEST_SEC_PRIORITY 0 +#define GIC_LOWEST_SEC_PRIORITY 127 +#define GIC_HIGHEST_NS_PRIORITY 128 +#define GIC_LOWEST_NS_PRIORITY 254 /* 255 would disable an interrupt */ +#define GIC_SPURIOUS_INTERRUPT 1023 +#define GIC_TARGET_CPU_MASK 0xff + +/* Distributor interface definitions */ +#define GICD_CTLR _GICD_ + 0x0 +#define GICD_TYPER _GICD_ + 0x4 +#define GICD_IGROUPR _GICD_ + 0x80 +#define GICD_ISENABLER _GICD_ + 0x100 +#define GICD_ICENABLER _GICD_ + 0x180 +#define GICD_ISPENDR _GICD_ + 0x200 +#define GICD_ICPENDR _GICD_ + 0x280 +#define GICD_ISACTIVER _GICD_ + 0x300 +#define GICD_ICACTIVER _GICD_ + 0x380 +#define GICD_IPRIORITYR _GICD_ + 0x400 +#define GICD_ITARGETSR _GICD_ + 0x800 +#define GICD_ICFGR _GICD_ + 0xC00 +#define GICD_SGIR _GICD_ + 0xF00 +#define GICD_CPENDSGIR _GICD_ + 0xF10 +#define GICD_SPENDSGIR _GICD_ + 0xF20 + +#define IGROUPR_SHIFT 5 +#define ISENABLER_SHIFT 5 +#define ICENABLER_SHIFT ISENABLER_SHIFT +#define ISPENDR_SHIFT 5 +#define ICPENDR_SHIFT ISPENDR_SHIFT +#define ISACTIVER_SHIFT 5 +#define ICACTIVER_SHIFT ISACTIVER_SHIFT +#define IPRIORITYR_SHIFT 2 +#define ITARGETSR_SHIFT 2 +#define ICFGR_SHIFT 4 +#define CPENDSGIR_SHIFT 2 +#define SPENDSGIR_SHIFT CPENDSGIR_SHIFT + +/* GICD_TYPER bit definitions */ +#define IT_LINES_NO_MASK 0x1f + +/* GICD_ICFGR bit definitions */ +#define LEVEL_SENSITIVE 0x0 +#define TRIGGER_SENSITIVE 0x1 + +/* Physical CPU Interface registers */ +#define GICC_CTLR _GICC_ + 0x0 +#define GICC_PMR _GICC_ + 0x4 +#define GICC_BPR _GICC_ + 0x8 +#define GICC_IAR _GICC_ + 0xC +#define GICC_EOIR _GICC_ + 0x10 +#define GICC_RPR _GICC_ + 0x14 +#define GICC_HPPIR _GICC_ + 0x18 +#define GICC_AHPPIR _GICC_ + 0x28 +#define GICC_IIDR _GICC_ + 0xFC +#define GICC_DIR _GICC_ + 0x1000 +#define GICC_PRIODROP _GICC_ + GICC_EOIR + +/* GICC_CTLR bit definitions */ +#define EOI_MODE_NS (1 << 10) +#define EOI_MODE_S (1 << 9) +#define IRQ_BYP_DIS_GRP1 (1 << 8) +#define FIQ_BYP_DIS_GRP1 (1 << 7) +#define IRQ_BYP_DIS_GRP0 (1 << 6) +#define FIQ_BYP_DIS_GRP0 (1 << 5) +#define CBPR (1 << 4) +#define FIQ_EN (1 << 3) +#define ACK_CTL (1 << 2) +#define ENABLE_GRP1 (1 << 1) +#define ENABLE_GRP0 (1 << 0) + +/* GICC_IIDR bit masks and shifts */ +#define GICC_IIDR_PID_SHIFT 20 +#define GICC_IIDR_ARCH_SHIFT 16 +#define GICC_IIDR_REV_SHIFT 12 +#define GICC_IIDR_IMP_SHIFT 0 + +#define GICC_IIDR_PID_MASK 0xfff +#define GICC_IIDR_ARCH_MASK 0xf +#define GICC_IIDR_REV_MASK 0xf +#define GICC_IIDR_IMP_MASK 0xfff + +/* HYP view virtual CPU Interface registers */ +#define GICH_CTL 0x0 +#define GICH_VTR 0x4 +#define GICH_ELRSR0 0x30 +#define GICH_ELRSR1 0x34 +#define GICH_APR0 0xF0 +#define GICH_LR_BASE 0x100 + +/* Virtual CPU Interface registers */ +#define GICV_CTL 0x0 +#define GICV_PRIMASK 0x4 +#define GICV_BP 0x8 +#define GICV_INTACK 0xC +#define GICV_EOI 0x10 +#define GICV_RUNNINGPRI 0x14 +#define GICV_HIGHESTPEND 0x18 +#define GICV_DEACTIVATE 0x1000 + +extern void nvt_enable_irq(int number); +extern void nvt_disable_irq(int number); +extern void arm_gic_cpuif_setup(void); +extern void arm_gic_distif_setup(void); +extern void gicd_write_igroupr(UINT32 id, UINT32 val); +extern void gicd_write_ipriorityr(UINT32 id, UINT32 val); + +extern UINT32 gicc_get_IAR(void); +extern void gicc_set_EOIR(UINT32 val); + + + + +#endif /* _ASM_ARMV8_GIC_H_ */ diff --git a/board/novatek/ns02501/loader/Include/global.h b/board/novatek/ns02501/loader/Include/global.h new file mode 100755 index 000000000000..e993985303ca --- /dev/null +++ b/board/novatek/ns02501/loader/Include/global.h @@ -0,0 +1,73 @@ +/** + Global utility header file + + Global utility header file + + @file global.h + @ingroup mISYSUtil + @note Nothing +*/ + +#ifndef _GLOBAL_H +#define _GLOBAL_H + +#include "constant.h" + +#define BOOT_SOURCE_SPI 0x00 +#define BOOT_SOURCE_CARD 0x01 +#define BOOT_SOURCE_SPI_NAND_2K 0x02 +#define BOOT_SOURCE_SPI_NAND_BCH_2K 0x03 +#define BOOT_SOURCE_ETHERNET 0x04 +#define BOOT_SOURCE_USB 0x05 +#define BOOT_SOURCE_SPI_NAND_4K 0x06 +#define BOOT_SOURCE_RESERVED 0x07 +#define BOOT_SOURCE_EMMC_4BIT 0x08 +#define BOOT_SOURCE_EMMC_8BIT 0x09 +#define BOOT_SOURCE_SPI_NAND_BCH_4K 0x0A +#define BOOT_SOURCE_USB_FULL 0x0B +#define BOOT_SOURCE_UART 0x0C + +#define BOOT_SOURCE_MSK 0x0F + +// rom auto boot - current boot src +#define ROM_GetCurrBS() *(UINT32*)(0xF07D2000) + +#define CHIPVER_A 0x0 + +/** + @addtogroup mISYSUtil +*/ +//@{ + +extern UINT32 bitCount(UINT32 data); +extern void UTL_setDrvTmpBufferAddress(UINT32 addr); +extern UINT32 UTL_getDrvTmpBufferAddress(void); +extern char* Dec2HexStr(UINT32 data); +//extern void PrintDec2Hex(UINT32 data) __attribute__ ((section (".part1"))); +extern void rom_Dec2HexStr(UINT32 data) __attribute__ ((section (".part1"))); +#define PrintDec2Hex(m) rom_Dec2HexStr(m) +extern char* Dec2HexStr2Bytes(UINT32 data); +extern void PrintDec2HexStr2Bytes(UINT32 data) __attribute__ ((section (".part1"))); +extern UINT32 DecStr2Int(char* str); +extern BOOL UTL_canUpdateSecKey(void); +extern BOOL utl_is_sram_fw(UINT32 fw_addr); +extern void utl_test_checksum(UINT32 addr, UINT32 size); +extern void utl_dram_protect_enable(UINT32 addr, UINT32 size); +extern void utl_dram_protect_disable(void); +extern UINT32 utl_dram_protect_check(void); +extern UINT32 utl_get_bootsrc(void); +extern UINT32 utl_get_chipversion(void); + +#if (_ROM_PUBLIC_API_ == 1) +extern void rom_debug_msg(char* str); +extern void rom_debug_msg_var(char *str, int var); +extern void rom_Dec2HexStr(UINT32 data); +extern int rom_public_api_available(void); + +#endif +extern void load_dram_scan(UINT32 addr, UINT32 size) __attribute__ ((section (".dram_text"))); +extern void timer_delay(UINT32 US) __attribute__ ((section (".part1"))); + +//@} + +#endif diff --git a/board/novatek/ns02501/loader/Include/limits.h b/board/novatek/ns02501/loader/Include/limits.h new file mode 100755 index 000000000000..1def5890ed05 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/limits.h @@ -0,0 +1,31 @@ + + +#ifndef __NVT_LIBC_LIMITS_H +#define __NVT_LIBC_LIMITS_H + +#define CHAR_BIT 8 /* number of bits in a char */ +#define SCHAR_MIN (-128) /* minimum signed char value */ +#define SCHAR_MAX 127 /* maximum signed char value */ +#define UCHAR_MAX 0xff /* maximum unsigned char value */ + +#ifndef _CHAR_UNSIGNED +#define CHAR_MIN SCHAR_MIN /* mimimum char value */ +#define CHAR_MAX SCHAR_MAX /* maximum char value */ +#else +#define CHAR_MIN 0 +#define CHAR_MAX UCHAR_MAX +#endif /* _CHAR_UNSIGNED */ + +#define MB_LEN_MAX 2 /* max. # bytes in multibyte char */ +#define SHRT_MIN (-32768) /* minimum (signed) short value */ +#define SHRT_MAX 32767 /* maximum (signed) short value */ +#define USHRT_MAX 0xffff /* maximum unsigned short value */ +#define INT_MIN (-2147483647 - 1) /* minimum (signed) int value */ +#define INT_MAX 2147483647 /* maximum (signed) int value */ +#define UINT_MAX 0xffffffff /* maximum unsigned int value */ +#define LONG_MIN (-2147483647L - 1) /* minimum (signed) long value */ +#define LONG_MAX 2147483647L /* maximum (signed) long value */ +#define ULONG_MAX 0xffffffffUL /* maximum unsigned long value */ + +#endif + diff --git a/board/novatek/ns02501/loader/Include/loader.h b/board/novatek/ns02501/loader/Include/loader.h new file mode 100755 index 000000000000..a10a43b5a7ec --- /dev/null +++ b/board/novatek/ns02501/loader/Include/loader.h @@ -0,0 +1,83 @@ +/** + Global loader header file + + Global loader header file + + @file loader.h + @ingroup mISYSUtil + @note Nothing +*/ + +#ifndef _LOADER_H +#define _LOADER_H + +#include "constant.h" +#include "StorageDef.h" + +/** + @name Special key detect CallBack + + Special key detect Prototype + + Project layer can detect special key in this callback. + If callback returns TRUE, loader will try to find files on SD card. + + @return + - @b TRUE: special key is pressed + - @b FALSE: special key is NOT pressed +*/ +//@{ +typedef BOOL (*LDR_SPECIAL_KEY_CB)(void); +//@} + +/** + @name Card detect CallBack + + Card detect Prototype + + Project layer can detect SD card existence in this callback. + If callback returns TRUE, loader will consider SD is plugged + + @return + - @b TRUE: SD exist + - @b FALSE: SD NOT exist +*/ +//@{ +typedef BOOL (*LDR_CARD_DETECT_CB)(void); +//@} +/** + @name Recovery Trigger CallBack + + Recovery trigger Prototype + + Project layer can detect if the recovery flow should started. + If callback returns TRUE, recovery flow will start. + + @return + - @b TRUE: Recovery flow is triggered. + - @b FALSE: Recovery flow is NOT triggered. +*/ +//@{ +typedef BOOL (*LDR_RECOVERY_TRIGGER_CB)(void); +//@} + +typedef enum _STORAGEINT { + STORAGEINT_UNKNOWN, + STORAGEINT_SPI_NAND, + STORAGEINT_SPI_NOR, + STORAGEINT_EMMC, +} STORAGEINT; + +extern void loader_setUpdateFwName(char* fileName); +extern void loader_setUpdateLdrName(char* fileName); +extern void loader_setRunFwName(char* fileName); +extern void loader_setRecoveryFwName(char *fileName); +extern void loader_setRecoveryPartitionID(UINT32 partition_id); +extern void loader_setVersion(UINT32 version); +extern void loader_setStorageIntType(STORAGEINT type, PSTORAGE_OBJ strg_obj); +extern void loader_installSpecialKeyCB(LDR_SPECIAL_KEY_CB callback); +extern void loader_installCardDetectCB(LDR_CARD_DETECT_CB callback); +extern void loader_installRecoveryTriggerCB(LDR_RECOVERY_TRIGGER_CB callback); + +#endif + diff --git a/board/novatek/ns02501/loader/Include/lz.h b/board/novatek/ns02501/loader/Include/lz.h new file mode 100755 index 000000000000..cc4e45a6b318 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/lz.h @@ -0,0 +1,36 @@ +/** + Decompress library header file + + Decompress library header file + + @file lz.h + @ingroup mISYSUtil + @note Nothing +*/ +#ifndef __NVT_LZ_DEF__ +#define __NVT_LZ_DEF__ + +#include "constant.h" + +/** + @addtogroup mISYSUtil +*/ +//@{ +#if (_GZIP_ENABLE_API_ == 1) + +#endif +extern unsigned int GZ_Uncompress(UINT8 *in, UINT8 *out, UINT32 insize)__attribute__ ((section (".part1"))); +//#else +#if (_ROM_PUBLIC_API_ == 1) +#define LZ_Un_compress(a,b,c) rom_LZ_Uncompress(a,b,c) +extern unsigned int rom_LZ_Uncompress(UINT8 *in, UINT8 *out, UINT32 insize)__attribute__ ((section (".part1"))); +extern unsigned int LZ_Uncompress(UINT8 *in, UINT8 *out, UINT32 insize); +#else +extern unsigned int LZ_Uncompress(UINT8 *in, UINT8 *out, UINT32 insize)__attribute__ ((section (".part1"))); +#define LZ_Un_compress(a,b,c) LZ_Uncompress(a,b,c) +#endif +//extern void LZ_Uncompress(UINT8 *in, UINT8 *out, UINT32 insize) __attribute__ ((section (".part1"), far)); + +//@} +//#endif +#endif diff --git a/board/novatek/ns02501/loader/Include/modelext/bin_info.h b/board/novatek/ns02501/loader/Include/modelext/bin_info.h new file mode 100755 index 000000000000..130ec81e369f --- /dev/null +++ b/board/novatek/ns02501/loader/Include/modelext/bin_info.h @@ -0,0 +1,209 @@ +/** + Bin File Information + + Bin file layout + + ----------------------------------------------------- + HEADINFO 0x00 ~ 0x80 = 128 bytes = 32 WORDS + ----------------------------------------------------- + + EXCEPTION_TABLE: 0x180 ~ 0x200 = 128 bytes = 32 WORDS (see exception_MIPS.s) + + ----------------------------------------------------- + + VECTOR_TABLE: 0x200 ~ 0x2f0 = 240 bytes = 60 WORDS (see isr_MIPS.s) + + ----------------------------------------------------- + + Code Info: 0x2f0 ~ 0x400 = 272 bytes = 68 WORDS (see CodeInfo_MIPS.s) + + ----------------------------------------------------- + + Code Entry: 0x400 (see Loader_MIPS.s) + + : + + PART-1 + PART-2 + PART-3 + : + PART-N + + ----------------------------------------------------- + + @file bin_info.h + @ingroup mMODELEXT + @note THESE STRUCTS ARE VERY VERY IMPORTANT FORMAT DEFINITION OF SYSTEM, + DO NOT MODIFY ANY ITEM OR INSERT/REMOVE ANY ITEM OF THESE STRUCTS!!! + + Copyright Novatek Microelectronics Corp. 2011. All rights reserved. +*/ +#ifndef _BINI_NFO_H +#define _BIN_INFO_H + +#define BIN_INFO_VER 0x19062115 ///< YYYY/MM/DD HH + +#define BIN_INFO_OFFSET_RTOS 0x00000200 ///< rtos HEADINFO.o attached to this offset +#define BIN_INFO_OFFSET_UBOOT 0x00000300 ///< uboot HEADINFO.o attached to this +#define BIN_INFO_OFFSET_NUTTX 0x00000100 ///< nuttx +#define BIN_INFO_OFFSET_TEEOS 0x00000100 ///< teeos +#define BIN_INFO_OFFSET_BL31 0x00000300 ///< bl31 +#define BIN_INFO_OFFSET_8051 0x00000300 ///< 8051 + +//Ep: Encryption Program (CheckSum version) +//Epcrc: Encryption Program (CRC version) +//Bfc: Bin File Compress +//Ld: Loader +//Fw: Firmware + +//Head control flag for HEADINFO.BinCtrl +#define HDCF_LZCOMPRESS_EN 0x0000001 ///< BIT 0.compressed enable (0=no,1=yes) + +//Head control flag for HEADINFO.BinCtrl (BL31) +#define BINCTRL_BL31_OS_AMP 0x00000001UL ///< indicate os multi-core heterogeneous + +/** + @name Ld control flag for LDINFO.LdCtrl +*/ +//@{ +#define BOOT_FLAG_PARTLOAD_EN 0x0000001 ///< BIT 0.PARTLOAD_EN (0=no,1=yes) +//@} + +/** + * @brief for encrypt_sign_tool bitwise to HEADINFO::BinCtrl + */ +#define SIGN_BINCTRL_LIMITED_SIZE 0x1 //indicate if sha_limited_size is enabled +#define SIGN_BINCTRL_NO_ENCRYPTIONDATA 0x2 //indicate if signature only without encrypted context + +//HEADINFO::Resv field definition +typedef enum _HEADINFO_RESV_IDX_{ + HEADINFO_RESV_IDX_FDT_ADDR = 0, + HEADINFO_RESV_IDX_SHM_ADDR = 1, + HEADINFO_RESV_IDX_BOOT_FLAG = 2, + HEADINFO_RESV_IDX_DRAM_SIZE = 3, + HEADINFO_RESV_IDX_COUNTS = 19, +} HEADINFO_RESV_IDX; + +//HEADINFO::Resv field definition for teeos +typedef enum HEADINFO_TEEOS_RESV_IDX{ + HEADINFO_TEEOS_RESV_IDX_LOAD_ADDR = 0, + HEADINFO_TEEOS_RESV_IDX_UBOOT_ADDR = 1, //< write by loader + HEADINFO_TEEOS_RESV_IDX_KERNEL_ENTRY_ADDR = 2, //< write by loader + HEADINFO_TEEOS_RESV_IDX_KERNEL_FDT_ADDR = 3, //< write by loader + HEADINFO_TEEOS_RESV_IDX_COUNTS = 19, +} HEADINFO_TEEOS_RESV_IDX; + +//HEADINFO::Resv field definition for bl31 +typedef enum HEADINFO_BL31_RESV_IDX{ + HEADINFO_BL31_RESV_IDX_LOAD_ADDR = 0, + HEADINFO_BL31_RESV_IDX_UBOOT_ADDR = 1, //< write by loader + HEADINFO_BL31_RESV_IDX_TEEOS_ADDR = 2, //< write by loader + HEADINFO_BL31_RESV_IDX_RTOS_ADDR = 3, //< write by loader + HEADINFO_BL31_RESV_IDX_COUNTS = 19, +} HEADINFO_BL31_RESV_IDX; + +/** + * @brief HEADINFO::Resv1 for encrypt_sign_tool + */ +typedef enum HEADINFO_SIGN_RESV_IDX{ + HEADINFO_SIGN_RESV_IDX_LIMITED_SIZE = 0, //value to sha_limited_size + HEADINFO_SIGN_RESV_IDX_COUNTS = 19, +} HEADINFO_SIGN_RESV_IDX; + +/** + Header information + + 0x00 ~ 0x80 = 128 bytes = 32 WORDS +*/ +typedef struct HEADINFO { + unsigned int CodeEntry; ///< [0x00] fw CODE entry (4) ----- r by Ld + unsigned int Resv1[HEADINFO_RESV_IDX_COUNTS]; + ///< [0x04~0x50] reserved (4*19) -- reserved, its mem value will filled by Ld + ///< Resv1[HEADINFO_RESV_IDX_FDT_ADDR]: store fdt addr for rtos + ///< Resv1[HEADINFO_RESV_IDX_SHM_ADDR]: store shm addr for rtos + ///< Resv1[HEADINFO_RESV_IDX_BOOT_FLAG]: boot flag for rtos + ///< Resv1[HEADINFO_RESV_IDX_DRAM_SIZE]: Total DRAM size for rtos + char BinInfo_1[8]; ///< [0x50~0x58] CHIP-NAME (8) ---- r by Ep + char BinInfo_2[8]; ///< [0x58~0x60] SDK version (8) + char BinInfo_3[8]; ///< [0x60~0x68] SDK releasedate (8) + unsigned int BinLength; ///< [0x68] Bin File Length (4) --- w by Ep/bfc + unsigned int Checksum; ///< [0x6c] Check Sum or CRC (4) ----- w by Ep/Epcrc + unsigned int CRCLenCheck; ///< [0x70~0x74] Length check for CRC (4) ----- w by Epcrc (total len ^ 0xAA55) + unsigned int ModelextAddr;///< [0x74~0x78] where modelext data is. w by Ld / u-boot + unsigned int BinCtrl; ///< [0x78~0x7C] Bin flag (4) --- w by bfc + ///< BIT 0.compressed enable (w by bfc) + ///< BIT 1.Linux SMP enable (1: SMP/VOS, 0: Dual OS) + unsigned int CRCBinaryTag;///< [0x7C~0x80] Binary Tag for CRC (4) ----- w by Epcrc (0xAA55 + "NT") +} +HEADINFO; + +typedef struct HEADINFO64 { + unsigned long long CodeEntry; ///< [0x00] fw CODE entry (4) ----- r by Ld + unsigned long long Resv1[HEADINFO_RESV_IDX_COUNTS]; + ///< [0x08~0xA0] reserved (4*19) -- reserved, its mem value will filled by Ld + ///< Resv1[HEADINFO_RESV_IDX_FDT_ADDR]: store fdt addr for rtos + ///< Resv1[HEADINFO_RESV_IDX_SHM_ADDR]: store shm addr for rtos + ///< Resv1[HEADINFO_RESV_IDX_BOOT_FLAG]: boot flag for rtos + ///< Resv1[HEADINFO_RESV_IDX_DRAM_SIZE]: Total DRAM size for rtos + char BinInfo_1[8]; ///< [0xA0~0xA8] CHIP-NAME (8) ---- r by Ep + char BinInfo_2[8]; ///< [0xA8~0xB0] SDK version (8) + char BinInfo_3[8]; ///< [0xB0~0xB8] SDK releasedate (8) + unsigned int BinLength; ///< [0xB8] Bin File Length (4) --- w by Ep/bfc + unsigned int Checksum; ///< [0xBc] Check Sum or CRC (4) ----- w by Ep/Epcrc + unsigned int CRCLenCheck; ///< [0xC0~0xC4] Length check for CRC (4) ----- w by Epcrc (total len ^ 0xAA55) + unsigned int ModelextAddr;///< [0xC4~0xC8] where modelext data is. w by Ld / u-boot + unsigned int BinCtrl; ///< [0xC8~0xCC] Bin flag (4) --- w by bfc + ///< BIT 0.compressed enable (w by bfc) + ///< BIT 1.Linux SMP enable (1: SMP/VOS, 0: Dual OS) + unsigned int CRCBinaryTag;///< [0xCC~0xD0] Binary Tag for CRC (4) ----- w by Epcrc (0xAA55 + "NT") +} +HEADINFO64; + +STATIC_ASSERT(sizeof(HEADINFO) == 128); + + +/** + Binary file information + + 0x00 ~ 0x180 = 384 bytes = 96 WORDS +*/ +typedef struct _BININFO { + HEADINFO head; ///< 0x00 ~ 0x80 = 128 bytes = 32 WORDS, header information + unsigned int Resv[64]; ///< 0x80 ~ 0x180 = 384 bytes = 64 WORDS, reserved information + ///< Resv[0]: signature size, for sha is made for part of content +} +BININFO; + +STATIC_ASSERT(sizeof(BININFO) == 384); + +/////////////////////////////////////////////////////////////////////////////// +//Code Info: 0x2f0 ~ 0x400 +#if defined(__aarch64__) +#define ZI_SECTION_OFFSET (0x3f0+0x10) // ZI area information of starting offset +#define CODE_SECTION_OFFSET (0x3f0+0x20) ///< code section information of starting offset +#else +#define ZI_SECTION_OFFSET (0x3f0+0x10) ///< ZI area information of starting offset +#define CODE_SECTION_OFFSET (0x3f0+0x18) ///< code section information of starting offset +#endif +#define CODE_SECTION_OFFSET64 (0x3f0+0x20) ///< on 32 bit loader to load rtos-64 +/* +bfc syntex + +bfc.exe p1 p2 p3 p4 p5 p6 p7 p8 p9 + +p1: compress/decompress +p2: compress method +p3: input file name +p4: output file name +p5: partial load flag ('1' means partial load) +p6: partial load file start [locate offset of bin file] +p7: output binary file length [locate offset of bin file] +p8: partial compress flag [locate offset of bin file] +p9: NAND block size (option) + +NOTE: p6~p9 must be hex format (0x****) + +@$(BFC) c lz $(BIN_R) tmp 1 0x310 0x68 0x78 $(EMBMEM_BLK_SIZE) +*/ + +#endif diff --git a/board/novatek/ns02501/loader/Include/modelext/dram_partition_info.h b/board/novatek/ns02501/loader/Include/modelext/dram_partition_info.h new file mode 100755 index 000000000000..887494dc2bae --- /dev/null +++ b/board/novatek/ns02501/loader/Include/modelext/dram_partition_info.h @@ -0,0 +1,58 @@ +#ifndef _DRAM_PARTITION_INFO_H +#define _DRAM_PARTITION_INFO_H + +#if defined(__UITRON) +#include "Type.h" +#else +#include "nvt_type.h" +#endif + +/** + DRAM Partition + + This is common header used between firmware of uITRON, eCos, Linux, DSP + so !!!!!! DO NOT modify it !!!!!! +*/ + +#define DRAM_PARTITION_INFO_VER 0x17032309 ///< YYYY/MM/DD HH + +typedef struct _DRAM_PARTITION { + unsigned int fourcc; ///< FourCC DRAM + unsigned int info_size; ///< sizeof(CORE_INFO) + unsigned int dram_addr; ///< whole dram starting address + unsigned int dram_size; ///< whole dram size + unsigned int rev_addr; ///< reversed starting address + unsigned int rev_size; ///< reversed size + unsigned int fdt_addr; ///< ipc starting address + unsigned int fdt_size; ///< ipc size + unsigned int linux_addr;///< linux-kernel starting address + unsigned int linux_size;///< linux-kernel size + unsigned int uboot_addr;///< u-boot starting address + unsigned int uboot_size;///< u-boot size + unsigned int rtos_addr; ///< rtos starting address + unsigned int rtos_size; ///< rtos size + unsigned int dsp1_addr; ///< DSP1 starting address + unsigned int dsp1_size; ///< DSP1 size + unsigned int dsp2_addr; ///< ecos(na51023) / DSP2(na51000) starting address + unsigned int dsp2_size; ///< ecos(na51023) / DSP2(na51000) size + unsigned int loader_addr; ///< loader starting address + unsigned int loader_size; ///< loader size + unsigned int nuttx_addr; ///< nuttx starting address + unsigned int nuttx_size; ///< nuttx size + unsigned int teeos_addr; ///< teeos starting address + unsigned int teeos_size; ///< teeos size + unsigned int hdal1_addr; ///< hdal[0] starting address + unsigned int hdal1_size; ///< hdal[0] size + unsigned int hdal2_addr; ///< hdal[1] starting address for dram2 + unsigned int hdal2_size; ///< hdal[1] size for dram2 + unsigned int core2_entry1_addr; ///< for smp boot, cpu2 start at 0 then jump to core2_entry2 for addr 0 can be reuse. + unsigned int core2_entry1_size; ///< for smp boot, cpu2 start at 0 then jump to core2_entry2 for addr 0 can be reuse. + unsigned int core2_entry2_addr; ///< asm code to start smp + unsigned int core2_entry2_size; ///< asm code to start smp + unsigned int bl31_addr; ///< bl31 for secure boot + unsigned int bl31_size; ///< bl31 for secure boot + + +}DRAM_PARTITION; + +#endif \ No newline at end of file diff --git a/board/novatek/ns02501/loader/Include/modelext/emb_partition_info.h b/board/novatek/ns02501/loader/Include/modelext/emb_partition_info.h new file mode 100755 index 000000000000..504222efc244 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/modelext/emb_partition_info.h @@ -0,0 +1,57 @@ +#ifndef _EMB_PARTITION_INFO_H +#define _EMB_PARTITION_INFO_H + +#define EMB_PARTITION_INFO_VER 0x16072117 ///< YYYY/MM/DD HH + +/** + Partition Infomation + This is common header used between firmware of uITRON, eCos, Linux, DSP + so !!!!!! DO NOT modify it !!!!!! +*/ + +#define EMB_PARTITION_INFO_COUNT 16 + +#define EMBTYPE_UNKNOWN 0x00 +#define EMBTYPE_LOADER 0x01 /* loader must always put in partition[0] */ +#define EMBTYPE_MODELEXT 0x02 /* modelext must always put in partition[1] */ +#define EMBTYPE_UITRON 0x03 +#define EMBTYPE_ECOS 0x04 +#define EMBTYPE_UBOOT 0x05 +#define EMBTYPE_LINUX 0x06 +#define EMBTYPE_DSP 0x07 +#define EMBTYPE_PSTORE 0x08 +#define EMBTYPE_FAT 0x09 +#define EMBTYPE_EXFAT 0x0A +#define EMBTYPE_ROOTFS 0x0B +#define EMBTYPE_RAMFS 0x0C +#define EMBTYPE_UENV 0x0D /* u-boot environment data */ +#define EMBTYPE_MBR 0x0E /* for emmc partition, mbr always put in partition[0] instead of loader */ +#define EMBTYPE_NUTTX 0x0F +#define EMBTYPE_RTOS 0x10 +#define EMBTYPE_TEEOS 0x11 +#define EMBTYPE_BL31 0x12 + +/** + customer defined data partition format +*/ +#define EMBTYPE_USER0 0x80 +#define EMBTYPE_USER1 0x81 +#define EMBTYPE_USER2 0x82 +#define EMBTYPE_USER3 0x83 +#define EMBTYPE_USER4 0x84 +#define EMBTYPE_USER5 0x85 +#define EMBTYPE_USER6 0x86 +#define EMBTYPE_USER7 0x87 + + +/* for reason of compatiable linux, we use original type to decalre */ + +typedef struct _EMB_PARTITION { + unsigned short EmbType; /* EMBTYPE_ */ + unsigned short OrderIdx; /* Order index of the same EmbType based on '0' */ + unsigned long long PartitionOffset; /* Phyical offset of partition */ + unsigned long long PartitionSize; /* Size of this partition */ + unsigned long long ReversedSize; /* Reserved size for bad block */ +} EMB_PARTITION, *PEMB_PARTITION; + +#endif diff --git a/board/novatek/ns02501/loader/Include/modelext/gpio_info.h b/board/novatek/ns02501/loader/Include/modelext/gpio_info.h new file mode 100755 index 000000000000..22f3969102a8 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/modelext/gpio_info.h @@ -0,0 +1,42 @@ +/** + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. + + @file gpio_info.h + @ingroup mMODELEXT + + @brief Header file of IO config + This file is the header file of IO config + + @note Nothing. + @date 2016/06/24 +*/ + +/** \addtogroup mIPRJAPCommonIO */ +//@{ + +#ifndef _GPIO_INFO_H +#define _GPIO_INFO_H + +#if defined(__UITRON) +#include "Type.h" +#else +#include "nvt_type.h" +#endif + +#define GPIO_INFO_VER 0x16062414 ///< YYYY/MM/DD HH + + +//-------------------------------------------------------------------- +// GPIO common +//-------------------------------------------------------------------- +typedef struct _GPIO_INIT_OBJ{ + UINT32 GpioPin; + UINT32 GpioDir; + UINT32 PadDir; + UINT32 PadPin; +} GPIO_INIT_OBJ,*PGPIO_INIT_OBJ; + +#endif + +//@} + diff --git a/board/novatek/ns02501/loader/Include/modelext/interrupt.h b/board/novatek/ns02501/loader/Include/modelext/interrupt.h new file mode 100755 index 000000000000..c48007907aeb --- /dev/null +++ b/board/novatek/ns02501/loader/Include/modelext/interrupt.h @@ -0,0 +1,764 @@ +/** + Header file for Interrupt module + + This file is the header file that define the API for Interrupt module. + + @file Interrupt.h + @ingroup mIDrvSys_Interrupt + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2010. All rights reserved. +*/ + +#ifndef _INTERRUPT_H +#define _INTERRUPT_H + +#if defined(__UITRON) +#include "Type.h" +#include "cc.h" +#else +#include "nvt_type.h" +#include "modelext/cc.h" +#define _ARM_GIC_USAGE_ ENABLE +#endif + +// Interrupt number <= 32 +//typedef UINT32 INT_PTN; +// Interrupt number > 32 +typedef UINT64 INT_PTN; + +/** + @addtogroup mIDrvSys_Interrupt +*/ +//@{ +#define INT_GIC_ID_DST_VER 0x16080216 + + +/** + Interrupt configuration identifier + + @note For int_setConfig() +*/ +typedef enum +{ + INT_CONFIG_ID_GIC_DESTINATION = 0, ///< Configured Interrupt exception destination to CPU/CPU2 + ///< @note + ///< Context is : + ///< - @b PINT_ID_GIC_DST : Point of destination table + + INT_CONFIG_ID_INTC_DESTINATION, ///< Configured Interrupt exception destination to DSP/DSP2 + ///< @note + ///< Context is : + ///< - @b PINT_ID_INTC_DST : Point of destination table + + + + ENUM_DUMMY4WORD(INT_CONFIG_ID) +} INT_CONFIG_ID; + +/** + Interrupt module ID + + Interrupt module ID for int_getIRQId() and int_getDummyId(). +*/ +#if(_ARM_GIC_USAGE_ == DISABLE) +#define INT_GIC_SPI_START_ID 0 +#else +#define INT_GIC_SPI_START_ID 32 +#endif + +typedef enum +{ + INT_ID_TIMER = INT_GIC_SPI_START_ID, + INT_ID_SIE, + INT_ID_SIE2, + INT_ID_SIE3, + + INT_ID_SIE4, + INT_ID_IPE, + INT_ID_IME, + INT_ID_DCE, + + INT_ID_IFE, + INT_ID_IFE2, + INT_ID_DIS, + INT_ID_FDE, + +// INT_ID_RDE, //Removed @ NT96680 + INT_ID_ETH_LPI, //Ethernet_LPI + INT_ID_RHE, + INT_ID_DRE, + INT_ID_DAI, //15 + + INT_ID_H26X, + INT_ID_JPEG, + INT_ID_GRAPHIC, + INT_ID_GRAPHIC2, + + INT_ID_AFFINE, + INT_ID_ISE, + INT_ID_TGE, + INT_ID_TSMUX, + + INT_ID_GPIO, + INT_ID_REMOTE, + INT_ID_PWM, + INT_ID_USB, + + INT_ID_USB3, + INT_ID_NAND, + INT_ID_SDIO, + INT_ID_SDIO2, //31 + + INT_ID_SDIO3, + INT_ID_DMA, + INT_ID_ETHERNET, + INT_ID_SPI, + + INT_ID_SPI2, + INT_ID_SPI3, + INT_ID_SPI4, +// INT_ID_SPI5, //Removed @ NT96680 + INT_ID_ETH_REV_MII, //Ethernet_RevMII + + INT_ID_SIF, + INT_ID_I2C, + INT_ID_I2C2, + INT_ID_UART, //43 + + INT_ID_UART2, + INT_ID_UART3, + INT_ID_UART4, + INT_ID_ADC, + + INT_ID_IDE, + INT_ID_IDE2, + INT_ID_DSI, + INT_ID_MI, //51 + + INT_ID_HDMI, +// INT_ID_VX1, //Removed @ NT96680 + INT_ID_DMA2, //New @ NT96680 + INT_ID_LVDS, + INT_ID_LVDS2, //55 + + INT_ID_RTC, + INT_ID_WDT, + INT_ID_CG, + INT_ID_CC, //59 + + INT_ID_I2C3, //60 +// New add @ NT96680 + INT_ID_SLVS_EC, + INT_ID_LVDS3, //share with HiSPi3/CSI3 + INT_ID_LVDS4, //share with HiSPi4/CSI4 + + INT_ID_LVDS5, //share with HiSPi5/CSI5 + INT_ID_LVDS6, //share with HiSPi6/CSI6 + INT_ID_LVDS7, //share with HiSPi7/CSI7 + INT_ID_LVDS8, //share with HiSPi8/CSI8 + + INT_ID_SIE5, + INT_ID_SIE6, + INT_ID_SIE7, + INT_ID_SIE8, + + INT_ID_IVE, + INT_ID_SVM, + INT_ID_SDE, + INT_ID_CNN, //75 + + INT_ID_DSP, + INT_ID_DSP2, + INT_ID_CANBUS, + INT_ID_CRYPTO, //79 + + INT_ID_COPY, + INT_ID_ROTATE, + INT_ID_I2C4, + INT_ID_I2C5, //83 + +// INT_ID_I2C6, +// INT_ID_I2C7, + INT_ID_DRTC, + INT_ID_ISE2, + INT_ID_TIMER2, + INT_ID_GPIO2, //87 + + INT_ID_PWM2, + INT_ID_CC2, //89 + INT_ID_SIF2, + + INT_ID_DSP_2, + INT_ID_DSP_2_2, + INT_ID_TSDEMUX, //93 + + INT_ID_CNT, + INT_ID_MAX = INT_ID_CNT - INT_GIC_SPI_START_ID, //94 + + + INT_ID_WFI = 229, + INT_ID_GIC_TOTAL = 256, + ENUM_DUMMY4WORD(INT_ID) +} INT_ID; + +typedef enum +{ + INT_TARGET_CORE0 = 1, + INT_TARGET_CORE1, + ENUM_DUMMY4WORD(INT_CORE_ID) +} INT_CORE_ID; + +/* + Interrupt module ID of GIC + + Indicate which core will configured as destination + + @note For DMA_WRITEPROT_ATTR +*/ + + +typedef union +{ + INT_PTN Reg[2]; + struct + { + //INT0 + UINT32 bInt_ID_TIMER:1; + UINT32 bInt_ID_SIE:1; + UINT32 bInt_ID_SIE2:1; + UINT32 bInt_ID_SIE3:1; + + UINT32 bInt_ID_SIE4:1; + UINT32 bInt_ID_IPE:1; + UINT32 bInt_ID_IME:1; + UINT32 bInt_ID_DCE:1; + + UINT32 bInt_ID_IFE:1; + UINT32 bInt_ID_IFE2:1; + UINT32 bInt_ID_DIS:1; + UINT32 bInt_ID_FDE:1; + +// UINT32 bInt_ID_RDE:1; + UINT32 bInt_ID_Ethernet_LPI:1; + UINT32 bInt_ID_RHE:1; + UINT32 bInt_ID_DRE:1; + UINT32 bInt_ID_DAI:1; + + + //INT16 + UINT32 bInt_ID_H264:1; + UINT32 bInt_ID_JPEG:1; + UINT32 bInt_ID_GRAPHIC:1; + UINT32 bInt_ID_GRAPHIC2:1; + + UINT32 bInt_ID_AFFINE:1; + UINT32 bInt_ID_ISE:1; + UINT32 bInt_ID_TGE:1; + UINT32 bInt_ID_TSMUX:1; + + UINT32 bInt_ID_GPIO:1; + UINT32 bInt_ID_REMOTE:1; + UINT32 bInt_ID_PWM:1; + UINT32 bInt_ID_USB:1; + + UINT32 bInt_ID_USB3:1; + UINT32 bInt_ID_NAND:1; + UINT32 bInt_ID_SDIO:1; + UINT32 bInt_ID_SDIO2:1; + + //INT32 + UINT32 bInt_ID_SDIO3:1; + UINT32 bInt_ID_DMA:1; + UINT32 bInt_ID_ETHERNET:1; + UINT32 bInt_ID_SPI:1; + + UINT32 bInt_ID_SPI2:1; + UINT32 bInt_ID_SPI3:1; + UINT32 bInt_ID_SPI4:1; + UINT32 bInt_ID_Ehternet_RevMII:1; +// UINT32 bInt_ID_SPI5:1; + + + UINT32 bInt_ID_SIF:1; + UINT32 bInt_ID_I2C:1; + UINT32 bInt_ID_I2C2:1; + UINT32 bInt_ID_UART:1; + + UINT32 bInt_ID_UART2:1; + UINT32 bInt_ID_UART3:1; + UINT32 bInt_ID_UART4:1; + UINT32 bInt_ID_ADC:1; + + //INT48 + UINT32 bInt_ID_IDE:1; + UINT32 bInt_ID_IDE2:1; + UINT32 bInt_ID_DSI:1; + UINT32 bInt_ID_MI:1; + + //INT52 + UINT32 bInt_ID_HDMI:1; +// UINT32 bInt_ID_VX1:1; + UINT32 bInt_ID_DMA2:1; + UINT32 bInt_ID_LVDS:1; // LVDS& HiSPI& CSI + UINT32 bInt_ID_LVDS2:1; //LVDS2&HiSPI2&CSI2 + + //INT56 + UINT32 bInt_ID_RTC:1; + UINT32 bInt_ID_WDT:1; + UINT32 bInt_ID_CG:1; + UINT32 bInt_ID_CC:1; + + //INT60 + UINT32 bInt_ID_I2C3:1; + UINT32 bInt_ID_SLVS_EC:1; + UINT32 bInt_ID_LVDS3:1; //LVDS3&HiSPI3&CSI3 + UINT32 bInt_ID_LVDS4:1; //LVDS4&HiSPI4&CSI4 + + //INT64 + UINT32 bInt_ID_LVDS5:1; //LVDS5&HiSPI5&CSI5 + UINT32 bInt_ID_LVDS6:1; //LVDS6&HiSPI6&CSI6 + UINT32 bInt_ID_LVDS7:1; //LVDS7&HiSPI7&CSI7 + UINT32 bInt_ID_LVDS8:1; //LVDS8&HiSPI8&CSI8 + + //INT68 + UINT32 bInt_ID_SIE5:1; + UINT32 bInt_ID_SIE6:1; + UINT32 bInt_ID_SIE7:1; + UINT32 bInt_ID_SIE8:1; + + //INT72 + UINT32 bInt_ID_IVE:1; + UINT32 bInt_ID_SVM:1; + UINT32 bInt_ID_SDE:1; + UINT32 bInt_ID_CNN:1; + + //INT76 + UINT32 bInt_ID_DSP:1; + UINT32 bInt_ID_DSP2:1; + UINT32 bInt_ID_CANBUS:1; + UINT32 bInt_ID_CRYPTO:1; + + //INT80 + UINT32 bInt_ID_HWCOPY:1; + UINT32 bInt_ID_ROTATE:1; + UINT32 bInt_ID_I2C4:1; + UINT32 bInt_ID_I2C5:1; + + //INT84 + UINT32 bInt_ID_I2C6:1; + UINT32 bInt_ID_I2C7:1; + UINT32 bInt_ID_TIMER2:1; //Timer to CA53 core2 + UINT32 bInt_ID_GPIO2:1; //GPIO to CA53 core2 + + //INT88 + UINT32 bInt_ID_PWM2:1; + UINT32 bInt_ID_CC2:1; + UINT32 bInt_ID_SIF2:1; //Timer to CA53 core2 + UINT32 bInt_ID_DSP_2:1; //?? + + //INT92 + UINT32 bInt_ID_DSP2_2:1; //?? + UINT32 bInt_ID_TMDEMUX:1; + UINT32 bReserved92:2; + //INT96 => 4 + UINT32 bReserved96:4; + //INT100=> 4 + UINT32 bReserved100:4; + //INT104=> 4 + UINT32 bReserved104:4; + //INT108=> 4 + UINT32 bReserved108:4; + //INT112=> 4 + UINT32 bReserved112:4; + //INT116=> 4 + UINT32 bReserved116:4; + //INT120=> 4 + UINT32 bReserved120:4; + //INT124=> 4 + UINT32 bReserved124:4; + }Bit; +} INT_GIC_ID_DST, *PINT_GIC_ID_DST; + +/* + Interrupt module ID of INTC + + Indicate which core will configured as destination + + @note For DMA_WRITEPROT_ATTR +*/ + + +typedef union +{ + INT_PTN Reg[2]; + struct + { + //INT0 + UINT32 bInt_ID_TIMER:1; + UINT32 bInt_ID_SIE:1; + UINT32 bInt_ID_SIE2:1; + UINT32 bInt_ID_SIE3:1; + + UINT32 bInt_ID_SIE4:1; + UINT32 bInt_ID_IPE:1; + UINT32 bInt_ID_IME:1; + UINT32 bInt_ID_DCE:1; + + UINT32 bInt_ID_IFE:1; + UINT32 bInt_ID_IFE2:1; + UINT32 bInt_ID_DIS:1; + UINT32 bInt_ID_FDE:1; + + //INT12 + UINT32 bReserved12:1; + UINT32 bInt_ID_RHE:1; + UINT32 bInt_ID_DRE:1; + UINT32 bInt_ID_DAI:1; + + + //INT16 + UINT32 bInt_ID_H264:1; + UINT32 bInt_ID_JPEG:1; + UINT32 bInt_ID_GRAPHIC:1; + UINT32 bInt_ID_GRAPHIC2:1; + + //INT20 + UINT32 bInt_ID_AFFINE:1; + UINT32 bInt_ID_ISE:1; + UINT32 bInt_ID_TGE:1; + UINT32 bInt_ID_TSMUX:1; + + UINT32 bInt_ID_GPIO:1; + UINT32 bInt_ID_REMOTE:1; + UINT32 bInt_ID_PWM:1; + UINT32 bInt_ID_USB:1; + + UINT32 bInt_ID_USB3:1; + UINT32 bInt_ID_NAND:1; + UINT32 bInt_ID_SDIO:1; + UINT32 bInt_ID_SDIO2:1; + + //INT32 + UINT32 bInt_ID_SDIO3:1; + UINT32 bInt_ID_DMA:1; + UINT32 bInt_ID_ETHERNET:1; + UINT32 bInt_ID_SPI:1; + + //INT36 + UINT32 bInt_ID_SPI2:1; + UINT32 bInt_ID_SPI3:1; + UINT32 bInt_ID_SPI4:1; + UINT32 bReserved39:1; +// UINT32 bInt_ID_SPI5:1; + + //INT40 + UINT32 bReserved40:1; + UINT32 bInt_ID_I2C:1; + UINT32 bInt_ID_I2C2:1; + UINT32 bInt_ID_UART:1; + + UINT32 bInt_ID_UART2:1; + UINT32 bInt_ID_UART3:1; + UINT32 bInt_ID_UART4:1; + UINT32 bInt_ID_ADC:1; + + //INT48 + UINT32 bInt_ID_IDE:1; + UINT32 bInt_ID_IDE2:1; + UINT32 bInt_ID_DSI:1; + UINT32 bInt_ID_MI:1; + + //INT52 + UINT32 bInt_ID_HDMI:1; +// UINT32 bInt_ID_VX1:1; + UINT32 bInt_ID_DMA2:1; + UINT32 bInt_ID_LVDS:1; // LVDS& HiSPI& CSI + UINT32 bInt_ID_LVDS2:1; //LVDS2&HiSPI2&CSI2 + + //INT56 + UINT32 bInt_ID_RTC:1; + UINT32 bInt_ID_WDT:1; + UINT32 bInt_ID_CG:1; + UINT32 bInt_ID_CC:1; + + //INT60 + UINT32 bInt_ID_I2C3:1; + UINT32 bInt_ID_SLVS_EC:1; + UINT32 bInt_ID_LVDS3:1; //LVDS3&HiSPI3&CSI3 + UINT32 bInt_ID_LVDS4:1; //LVDS4&HiSPI4&CSI4 + + //INT64 + UINT32 bInt_ID_LVDS5:1; //LVDS5&HiSPI5&CSI5 + UINT32 bInt_ID_LVDS6:1; //LVDS6&HiSPI6&CSI6 + UINT32 bInt_ID_LVDS7:1; //LVDS7&HiSPI7&CSI7 + UINT32 bInt_ID_LVDS8:1; //LVDS8&HiSPI8&CSI8 + + //INT68 + UINT32 bInt_ID_SIE5:1; + UINT32 bInt_ID_SIE6:1; + UINT32 bInt_ID_SIE7:1; + UINT32 bInt_ID_SIE8:1; + + //INT72 + UINT32 bInt_ID_IVE:1; + UINT32 bInt_ID_SVM:1; + UINT32 bInt_ID_SDE:1; + UINT32 bInt_ID_CNN:1; + + //INT76 + UINT32 bInt_ID_DSP:1; + UINT32 bInt_ID_DSP2:1; + UINT32 bInt_ID_CANBUS:1; + UINT32 bInt_ID_CRYPTO:1; + + //INT80 + UINT32 bInt_ID_HWCOPY:1; + UINT32 bInt_ID_ROTATE:1; + UINT32 bInt_ID_I2C4:1; + UINT32 bInt_ID_I2C5:1; + + //INT84 + UINT32 bInt_ID_I2C6:1; + UINT32 bInt_ID_I2C7:1; + UINT32 bReserved86:1; + UINT32 bReserved87:1; + + //INT88 + UINT32 bInt_ID_TMDEMUX:1; + UINT32 bReserved89:3; + + //INT92 + UINT32 bReserved92:4; + //INT96 => 4 + UINT32 bReserved96:4; + //INT100=> 4 + UINT32 bReserved100:4; + //INT104=> 4 + UINT32 bReserved104:4; + //INT108=> 4 + UINT32 bReserved108:4; + //INT112=> 4 + UINT32 bReserved112:4; + //INT116=> 4 + UINT32 bReserved116:4; + //INT120=> 4 + UINT32 bReserved120:4; + //INT124=> 4 + UINT32 bReserved124:4; + }Bit; +} INT_INTC_ID_DST, *PINT_INTC_ID_DST; + +typedef union +{ + INT_PTN Reg[4]; + struct + { + //INT0 + UINT32 bInt_ID_TIMER:1; + UINT32 bInt_ID_SIE:1; + UINT32 bInt_ID_SIE2:1; + UINT32 bInt_ID_SIE3:1; + + UINT32 bInt_ID_SIE4:1; + UINT32 bInt_ID_IPE:1; + UINT32 bInt_ID_IME:1; + UINT32 bInt_ID_DCE:1; + + UINT32 bInt_ID_IFE:1; + UINT32 bInt_ID_IFE2:1; + UINT32 bInt_ID_DIS:1; + UINT32 bInt_ID_FDE:1; + +// UINT32 bInt_ID_RDE:1; + UINT32 bInt_ID_Ethernet_LPI:1; + UINT32 bInt_ID_RHE:1; + UINT32 bInt_ID_DRE:1; + UINT32 bInt_ID_DAI:1; + + + //INT16 + UINT32 bInt_ID_H264:1; + UINT32 bInt_ID_JPEG:1; + UINT32 bInt_ID_GRAPHIC:1; + UINT32 bInt_ID_GRAPHIC2:1; + + UINT32 bInt_ID_AFFINE:1; + UINT32 bInt_ID_ISE:1; + UINT32 bInt_ID_TGE:1; + UINT32 bInt_ID_TSMUX:1; + + UINT32 bInt_ID_GPIO:1; + UINT32 bInt_ID_REMOTE:1; + UINT32 bInt_ID_PWM:1; + UINT32 bInt_ID_USB:1; + + UINT32 bInt_ID_USB3:1; + UINT32 bInt_ID_NAND:1; + UINT32 bInt_ID_SDIO:1; + UINT32 bInt_ID_SDIO2:1; + + //INT32 + UINT32 bInt_ID_SDIO3:1; + UINT32 bInt_ID_DMA:1; + UINT32 bInt_ID_ETHERNET:1; + UINT32 bInt_ID_SPI:1; + + UINT32 bInt_ID_SPI2:1; + UINT32 bInt_ID_SPI3:1; + UINT32 bInt_ID_SPI4:1; + UINT32 bInt_ID_Ehternet_RevMII:1; +// UINT32 bInt_ID_SPI5:1; + + + UINT32 bInt_ID_SIF:1; + UINT32 bInt_ID_I2C:1; + UINT32 bInt_ID_I2C2:1; + UINT32 bInt_ID_UART:1; + + UINT32 bInt_ID_UART2:1; + UINT32 bInt_ID_UART3:1; + UINT32 bInt_ID_UART4:1; + UINT32 bInt_ID_ADC:1; + + //INT48 + UINT32 bInt_ID_IDE:1; + UINT32 bInt_ID_IDE2:1; + UINT32 bInt_ID_DSI:1; + UINT32 bInt_ID_MI:1; + + //INT52 + UINT32 bInt_ID_HDMI:1; +// UINT32 bInt_ID_VX1:1; + UINT32 bInt_ID_DMA2:1; + UINT32 bInt_ID_LVDS:1; // LVDS& HiSPI& CSI + UINT32 bInt_ID_LVDS2:1; //LVDS2&HiSPI2&CSI2 + + //INT56 + UINT32 bInt_ID_RTC:1; + UINT32 bInt_ID_WDT:1; + UINT32 bInt_ID_CG:1; + UINT32 bInt_ID_CC:1; + + //INT60 + UINT32 bInt_ID_I2C3:1; + UINT32 bInt_ID_SLVS_EC:1; + UINT32 bInt_ID_LVDS3:1; //LVDS3&HiSPI3&CSI3 + UINT32 bInt_ID_LVDS4:1; //LVDS4&HiSPI4&CSI4 + + //INT64 + UINT32 bInt_ID_LVDS5:1; //LVDS5&HiSPI5&CSI5 + UINT32 bInt_ID_LVDS6:1; //LVDS6&HiSPI6&CSI6 + UINT32 bInt_ID_LVDS7:1; //LVDS7&HiSPI7&CSI7 + UINT32 bInt_ID_LVDS8:1; //LVDS8&HiSPI8&CSI8 + + //INT68 + UINT32 bInt_ID_SIE5:1; + UINT32 bInt_ID_SIE6:1; + UINT32 bInt_ID_SIE7:1; + UINT32 bInt_ID_SIE8:1; + + //INT72 + UINT32 bInt_ID_IVE:1; + UINT32 bInt_ID_SVM:1; + UINT32 bInt_ID_SDE:1; + UINT32 bInt_ID_CNN:1; + + //INT76 + UINT32 bInt_ID_DSP:1; + UINT32 bInt_ID_DSP2:1; + UINT32 bInt_ID_CANBUS:1; + UINT32 bInt_ID_CRYPTO:1; + + //INT80 + UINT32 bInt_ID_HWCOPY:1; + UINT32 bInt_ID_ROTATE:1; + UINT32 bInt_ID_I2C4:1; + UINT32 bInt_ID_I2C5:1; + + //INT84 + UINT32 bInt_ID_I2C6:1; + UINT32 bInt_ID_I2C7:1; + UINT32 bInt_ID_TIMER2:1; //Timer to CA53 core2 + UINT32 bInt_ID_GPIO2:1; //GPIO to CA53 core2 + + //INT88 + UINT32 bInt_ID_PWM2:1; + UINT32 bInt_ID_CC2:1; + UINT32 bInt_ID_SIF2:1; //Timer to CA53 core2 + UINT32 bInt_ID_DSP_2:1; //?? + + //INT92 + UINT32 bInt_ID_DSP2_2:1; //?? + UINT32 bInt_ID_TMDEMUX:1; + UINT32 bReserved92:2; + //INT96 => 4 + UINT32 bReserved96:4; + //INT100=> 4 + UINT32 bReserved100:4; + //INT104=> 4 + UINT32 bReserved104:4; + //INT108=> 4 + UINT32 bReserved108:4; + //INT112=> 4 + UINT32 bReserved112:4; + //INT116=> 4 + UINT32 bReserved116:4; + //INT120=> 4 + UINT32 bReserved120:4; + //INT124=> 4 + UINT32 bReserved124:4; + }Bit; +} INT_GIC_ID_ENABLE, *PINT_GIC_ID_ENABLE; + +typedef struct +{ + INT_GIC_ID_DST int_id_dst[CC_CORE_CA53_CORE_NUM]; +} INT_GIC_DST, *PINT_GIC_DST; + +typedef struct +{ + INT_INTC_ID_DST int_id_dst[CC_CORE_DSP_NUM]; +} INT_INTC_DST, *PINT_INTC_DST; + +typedef struct +{ + INT_GIC_ID_ENABLE int_id_enable; +} INT_INTC_ENABLE, *PINT_INTC_ENABLE; + + +// MIPI CSI share the interrupt ID with LVDS / HiSPi +#define INT_ID_CSI INT_ID_LVDS +#define INT_ID_CSI2 INT_ID_LVDS2 + +#define INT_ID_CSI3 INT_ID_LVDS3 +#define INT_ID_CSI4 INT_ID_LVDS4 + +#define INT_ID_CSI5 INT_ID_LVDS5 +#define INT_ID_CSI6 INT_ID_LVDS6 +#define INT_ID_CSI7 INT_ID_LVDS7 +#define INT_ID_CSI8 INT_ID_LVDS8 + +#define INT_ID_VX1 INT_ID_LVDS5 +#define INT_ID_VX1_2 INT_ID_LVDS6 + +// Macro to generate bit value from ID +#define INT_ID_TO_BIT(Id) ((INT_PTN)(1) << (Id)) + +// check type and ID +STATIC_ASSERT((INT_ID_MAX - INT_GIC_SPI_START_ID) <= (sizeof(INT_PTN) << 3)); + +#define INT_ALL_MODULES ((sizeof(INT_PTN) == 4) ? 0xFFFFFFFFul : 0xFFFFFFFFFFFFFFFFull) + +extern INT_PTN int_getEnable(void); +extern INT_PTN int_getFlag(void); +extern INT_ID int_getIRQId(void); +extern INT_ID int_getDummyId(void); +extern UINT32 int_getLatency(void); +extern void int_setConfig(INT_CONFIG_ID ConfigID, UINT32 uiConfig); +extern void int_get_gic_enable(PINT_INTC_ENABLE gic_int_en); + + +//@} + +#endif diff --git a/board/novatek/ns02501/loader/Include/modelext/model_cfg.h b/board/novatek/ns02501/loader/Include/modelext/model_cfg.h new file mode 100755 index 000000000000..eb7be844cc5e --- /dev/null +++ b/board/novatek/ns02501/loader/Include/modelext/model_cfg.h @@ -0,0 +1,8 @@ +#ifndef _MODEL_CFG_H +#define _MODEL_CFG_H + +#define MODEL_CFG_VER 0x16072510 ///< YYYY/MM/DD HH + +//No data structure, just a string. + +#endif diff --git a/board/novatek/ns02501/loader/Include/modelext/modelext_info.h b/board/novatek/ns02501/loader/Include/modelext/modelext_info.h new file mode 100755 index 000000000000..b96b50b966dd --- /dev/null +++ b/board/novatek/ns02501/loader/Include/modelext/modelext_info.h @@ -0,0 +1,35 @@ +#ifndef _MODELEXT_INFO_H +#define _MODELEXT_INFO_H + +#define MODELEXT_INFO_VER 0x16072219 ///< YYYY/MM/DD HH + +typedef enum _MODELEXT_TYPE { + MODELEXT_TYPE_DUMMY = 0, + MODELEXT_TYPE_INFO , + MODELEXT_TYPE_BIN_INFO , + MODELEXT_TYPE_PINMUX_CFG , + MODELEXT_TYPE_INTDIR_CFG , + MODELEXT_TYPE_EMB_PARTITION, + MODELEXT_TYPE_GPIO_INFO , + MODELEXT_TYPE_DRAM_PARTITION, + MODELEXT_TYPE_MODEL_CFG, + MODELEXT_TYPE_MAX +} MODELEXT_TYPE; + +typedef struct _MODELEXT_HEADER { + unsigned int size; ///< header size + container size + unsigned int type; ///< MODELEXT_TYPE + unsigned int number; ///< number of carried data elements + unsigned int version; ///< data header version +} MODELEXT_HEADER; + +typedef struct _MODELEXT_INFO { + char name[8]; ///< always be 'M','O','D','E','L','E','X','T' + char chip_name[8]; ///< CHIP_NAME (8) ---- check by encrypt_bin + char version[8]; ///< Reversed + char date[8]; ///< date + unsigned int ext_bin_length; ///< Bin File Length (4) --- write by encrypt_bin + unsigned int check_sum; ///< Check Sum Value (4) ----- write by encrypt_bin +} MODELEXT_INFO; + +#endif diff --git a/board/novatek/ns02501/loader/Include/modelext/modelext_parser.h b/board/novatek/ns02501/loader/Include/modelext/modelext_parser.h new file mode 100755 index 000000000000..e00170ea1a85 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/modelext/modelext_parser.h @@ -0,0 +1,78 @@ +#ifndef _MODELEXT_PARSER_H +#define _MODELEXT_PARSER_H + +#include "modelext_info.h" + +/** + modelext inline parse. + + modelext info tables are set to an certain memory address, + which use to get data pointer you want. + + @param[in] modelext info address. + @param[in] refer to MODELEXT_TYPE_ + @param[in] a memory space will be stored with description of modelext type. + @return + - @b address: the data pointer of result. +*/ +static inline unsigned char *modelext_get_cfg(unsigned char *buf, unsigned int type, MODELEXT_HEADER **header) +{ +#define MAGIC "MODELEXT" + + MODELEXT_HEADER *h = (MODELEXT_HEADER*)buf; + MODELEXT_INFO *d = (MODELEXT_INFO*)(buf + sizeof(MODELEXT_HEADER)); + + if(type >= MODELEXT_TYPE_MAX) + { + if(header) + { + *header = NULL; + } + return NULL; + } + + if(memcmp(d->name, MAGIC, strlen(MAGIC))) + { + if(header) + { + *header = NULL; + } + return NULL; + } + + MODELEXT_HEADER* h_tail = (MODELEXT_HEADER*)(buf + d->ext_bin_length); + + while(h->size) + { + if(h->type == type) + { + break; + } + else + { + h = (MODELEXT_HEADER*)(((char*)h) + h->size); + if(h >= h_tail) + { + return NULL; + } + } + } + + if(!h->size) + { + if(header) + { + *header = NULL; + } + return NULL; + } + + if(header) + { + *header = h; + } + + return (unsigned char*)(((unsigned char*)h) + sizeof(MODELEXT_HEADER)); +} + +#endif diff --git a/board/novatek/ns02501/loader/Include/modelext/shm_info.h b/board/novatek/ns02501/loader/Include/modelext/shm_info.h new file mode 100755 index 000000000000..911d5d4ccbc4 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/modelext/shm_info.h @@ -0,0 +1,135 @@ +/** + @file shm_info.h + @ingroup + @note THESE STRUCTS ARE VERY VERY IMPORTANT FORMAT DEFINITION OF SYSTEM, + DO NOT MODIFY ANY ITEM OR INSERT/REMOVE ANY ITEM OF THESE STRUCTS!!! + + Copyright Novatek Microelectronics Corp. 2018. All rights reserved. +*/ +#ifndef __ARCH_COMMON_SHM_INFO_H +#define __ARCH_COMMON_SHM_INFO_H + +#if defined(__UITRON) +#include "Type.h" +#elif defined(_NVT_LINUX_) +#include <mach/nvt_type.h> +#else +#include <asm/nvt-common/nvt_types.h> +#endif + +#define SHM_INFO_VER 0x18060815 ///< YYYY/MM/DD HH + +/** + @name Ld control flag for LDINFO.LdCtrl +*/ +//@{ +#define LDCF_PARTLOAD_EN 0x0000001 ///< BIT 0.PARTLOAD_EN (0=no,1=yes) +//@} + +/** + @name Ld control flag for LDINFO.LdCtrl2 +*/ +//@{ +#define LDCF_UPDATE_FW 0x0000001 ///< BIT 0.UPDATE_FW (0=no,1=yes) +#define LDCF_UPDATE_LD 0x0000002 ///< BIT 1.UPDATE_LD (0=no,1=yes) +#define LDCF_BOOT_CARD 0x0000004 ///< BIT 2.BOOT_CARD (0=no,1=yes) +#define LDCF_BOOT_FLASH 0x0000008 ///< BIT 3.BOOT_FLASH (0=no,1=yes) +#define LDCF_UPDATE_CAL 0x0000010 ///< BIT 4.UPDATE_CAL (0=no,1=yes) +#define LDCF_UPDATE_FW_DONE 0x0000100 ///< BIT 8.UPDATE_FW_DONE (0=no,1=yes) +#define LDCF_S3_BOOT 0x0000200 ///< BIT 9.BOOT FROM S3 STATE (0=no,1=yes) +#define LDCF_DTR80_BOOT 0x0000400 ///< BIT 10.BOOT WITH FLASH DTR-80 SUPPORT (0=no,1=yes) +#define LDCF_8051_BOOT 0x0000800 ///< BIT 11.BOOT FROM 8051 (0=no,1=yes) +#define LDCF_FAST_SENSOR 0x0001000 ///< BIT 12.INDICATE LOADER USE CFE TO CFG SENSOR (0=no,1=yes) +//@} + +/** + Loader information + + MUST 28 WORDS +*/ +typedef struct _BOOTINFO { + char LdInfo_1[16]; ///< LD-NAME(16) ------ w by Ld + UINT32 LdCtrl; ///< Fw flag (4) ----------- r by Ld + ///< BIT 0.enable part-load (0=full load,1=part load) + UINT32 LdCtrl2; ///< Ld flag (4) ----------- w by Ld, Ref: LDCF_??????? + UINT32 LdLoadSize; ///< Ld load size (4) ------ w by Ld (NOTE: this value must be block size align) + UINT32 LdLoadTime; ///< Ld exec time(us) (4) -- w by Ld + UINT32 LdResvSize; ///< Ld size (by bytes, reserved size in partition) (4) ------ w by Ld + UINT32 FWResvSize; ///< FW reserved size (4) ------ w by Ld + UINT16 LdPackage; ///< IC package expected by Ld (0xFF: ES, 0: 660, 3: 663, 5: 665, etc...) + UINT16 LdStorage; ///< Internal storage expected by Ld (0: unkown, 1: nand, 2: spi nand, 3: spi nor) + UINT32 fdt_addr; + UINT32 Resv[16]; ///< (4*5) ------------ reserved for project Ld +} BOOTINFO; + +STATIC_ASSERT(sizeof(BOOTINFO) == 112); + +/** + communication information + + MUST 54 WORDS +*/ +//BOOT_REASON +#define BOOT_REASON_NORMAL 0 // normal or from sd +#define BOOT_REASON_FWUPDFW 1 // Firmware update Firmware +#define BOOT_REASON_FROM_USB 2 // Update from USB +#define BOOT_REASON_FROM_ETH 3 // Update from ethernet +#define BOOT_REASON_FORMAT_ROOTFS 4 // Format rootfs because rootfs broken is detected +#define BOOT_REASON_RECOVERY_SYS 5 // System recovery from eMMC +#define BOOT_REASON_FROM_UART 6 // Update from uart + +//COMMINFO::Resv field definition +typedef enum _COMM_RESV_IDX_{ + COMM_RESV_IDX_BOOT_REASON = 0, + COMM_RESV_IDX_CORE1_START = 1, + COMM_RESV_IDX_CORE2_START = 2, + COMM_RESV_IDX_UITRON_COMP_ADDR = 3, + COMM_RESV_IDX_UITRON_COMP_LEN = 4, + COMM_RESV_IDX_FW_UPD_ADDR = 5, + COMM_RESV_IDX_FW_UPD_LEN = 6, + COMM_RESV_IDX_OTA_NAME_ADDR = 7, + COMM_RESV_IDX_S3_APB_ADDR = 8, + COMM_RESV_IDX_S3_APB_LEN = 9, + COMM_RESV_IDX_CORE1_LINUX_ADDR = 10, + COMM_RESV_IDX_CORE1_FDT_ADDR = 11, + COMM_RESV_IDX_LD_TIME_ADDR = 12, + COMM_RESV_IDX_LD_TIME_CNTS = 13, +} COMM_RESV_IDX; + +typedef struct _COMMINFO { + char CommInfo_1[16];///< COMMINFO (16) + UINT32 Resv[45];///< reversed data for communication between loader, uboot, uitron, linux + // Resv[0]: COMM_RESV_IDX_BOOT_REASON, + // BYTE[0]: BOOT_REASON: use #define COMM_BOOT_REASON_ + // BYTE[1]: BOOT_DONE: 0:Not yet, 1:Done 2:NG + // BYTE[2]: DSP_DONE: 0:Not yet, 1:Done 2:NG + // Resv[1]: COMM_CORE1_START (used on uboot trigger loader to start uitron) + // Resv[2]: COMM_CORE2_START (used on uitron trigger linux resume) + // Resv[3]: COMM_UITRON_COMP_ADDR + // Resv[4]: COMM_UITRON_COMP_LEN + // Resv[5]: COMM_FW_UPD_ADDR + // Resv[6]: COMM_FW_UPD_LEN + // Resv[7]: COMM_OTA_NAME_ADDR : OTA name + // Resv[8]: COMM_S3_APB_ADDR : S3-resume's apb register info addr + // Resv[9]: COMM_S3_APB_LEN : S3-resume's apb register info len + // Resv[10]: COMM_RESV_IDX_CORE1_LINUX_ADDR = 10: linux addr, for rtos on core2 to boot linux on core1 + // Resv[11]: COMM_RESV_IDX_CORE1_FDT_ADDR = 11, fdt addr, reconstruct fdt, for rtos on core2 to boot linux on core1 + // Resv[12]: COMM_RESV_IDX_LD_TIME_ADDR = 12, loader performance tag address (from per_mark, passed to RTOS) + // Resv[13]: COMM_RESV_IDX_LD_TIME_CNTS = 13, loader performance tag count (from per_mark, passed to RTOS) + UINT32 UserDef[5]; ///< can be used for customer +} COMMINFO; + +STATIC_ASSERT(sizeof(COMMINFO) == 216); + +/** + Binary file information + + MUST 82 WORDS +*/ +typedef struct _SHMINFO { + BOOTINFO boot; + COMMINFO comm; +} SHMINFO; + +STATIC_ASSERT(sizeof(SHMINFO) == 328); +#endif /* __ARCH_COMMON_SHM_INFO_H */ diff --git a/board/novatek/ns02501/loader/Include/modelext/top.h b/board/novatek/ns02501/loader/Include/modelext/top.h new file mode 100755 index 000000000000..2011294fca65 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/modelext/top.h @@ -0,0 +1,1382 @@ +/** + TOP controller header + + Sets the pinmux of each module. + + @file top.h + @ingroup mIDrvSys_TOP + @note Refer NT96650 data sheet for PIN/PAD naming + + Copyright Novatek Microelectronics Corp. 2013. All rights reserved. +*/ + +#ifndef _TOP_H +#define _TOP_H + +#if defined(__UITRON) +#include "Type.h" +#else +#include "nvt_type.h" +#endif +//#define TOP_NEW_API (0) + +/** + @addtogroup mIDrvSys_TOP +*/ +//@{ +#define PIN_GROUP_CONFIG_VER 0x16062910 + +/** + Debug port select ID + + Debug port select value for pinmux_select_debugport(). +*/ +typedef enum +{ + PINMUX_DEBUGPORT_CKG = 0x0000, ///< CKGen + PINMUX_DEBUGPORT_ARB = 0x0001, ///< Arbiter + PINMUX_DEBUGPORT_DDR = 0x0002, ///< DDR + PINMUX_DEBUGPORT_APBTG = 0x0003, ///< APBTG + PINMUX_DEBUGPORT_OCPBRG = 0x0004, ///< OCP BRG + PINMUX_DEBUGPORT_INTC = 0x0005, ///< INTC + PINMUX_DEBUGPORT_IDE = 0x0006, ///< IDE + PINMUX_DEBUGPORT_IDE2 = 0x0007, ///< IDE2 + PINMUX_DEBUGPORT_MI = 0x0008, ///< MI + PINMUX_DEBUGMIPI_DSI = 0x0009, ///< MIPI DSI + PINMUX_DEBUGMIPI_CC = 0x000A, ///< CC + PINMUX_DEBUGMIPI_EFUSE = 0x000B, ///< EFUSE + PINMUX_DEBUGMIPI_ETH = 0x000C, ///< ETH + PINMUX_DEBUGMIPI_AHBC_ETH = 0x000D, ///< AHBC ETH + PINMUX_DEBUGMIPI_TSMUX = 0x000E, ///< TSMUX + + PINMUX_DEBUGPORT_TIMER = 0x0010, ///< Timer + PINMUX_DEBUGPORT_WDT = 0x0011, ///< WDT + PINMUX_DEBUGPORT_GPIO = 0x0012, ///< GPIO + PINMUX_DEBUGPORT_SSP = 0x0013, ///< SSP (DAI) + PINMUX_DEBUGPORT_AUDIO = 0x0014, ///< AUDIO + PINMUX_DEBUGPORT_SDIO1 = 0x0015, ///< SDIO1 + PINMUX_DEBUGPORT_SDIO2 = 0x0016, ///< SDIO2 + PINMUX_DEBUGPORT_SDIO3 = 0x0017, ///< SDIO3 + PINMUX_DEBUGPORT_SMMC = 0x0018, ///< XD/NAND/SMC + PINMUX_DEBUGPORT_USB = 0x0019, ///< USB + PINMUX_DEBUGPORT_USB2 = 0x001A, ///< USB2 + PINMUX_DEBUGPORT_AHBC_USB = 0x001B, ///< AHBC_USB + PINMUX_DEBUGPORT_AHBC_USB2 = 0x001C, ///< AHBC_USB2 + PINMUX_DEBUGPORT_I2C = 0x001D, ///< I2C + PINMUX_DEBUGPORT_I2C2 = 0x001E, ///< I2C2 + PINMUX_DEBUGPORT_SIF = 0x001F, ///< SIF + PINMUX_DEBUGPORT_SPI = 0x0020, ///< SPI + PINMUX_DEBUGPORT_SPI2 = 0x0021, ///< SPI2 + PINMUX_DEBUGPORT_SPI3 = 0x0022, ///< SPI3 + PINMUX_DEBUGPORT_SPI4 = 0x0023, ///< SPI4 + PINMUX_DEBUGPORT_SPI5 = 0x0024, ///< SPI5 + PINMUX_DEBUGPORT_PWM = 0x0025, ///< PWM + PINMUX_DEBUGPORT_ADM = 0x0026, ///< ADC + PINMUX_DEBUGPORT_REMOTE = 0x0027, ///< Remote + PINMUX_DEBUGPORT_CRYPTO = 0x0028, ///< Crypto + + PINMUX_DEBUGPORT_OCP2BRG = 0x0030, ///< OCP2 BRG + PINMUX_DEBUGPORT_DSP = 0x0031, ///< DSP + PINMUX_DEBUGPORT_H264 = 0x0038, ///< H.264 + + PINMUX_DEBUGMIPI_CSI = 0x0040, ///< MIPI CSI + PINMUX_DEBUGMIPI_CSI2 = 0x0041, ///< MIPI CSI2 + PINMUX_DEBUGMIPI_VX1 = 0x0042, ///< VX1 + PINMUX_DEBUGPORT_SIE = 0x0043, ///< SIE + PINMUX_DEBUGMIPI_SIE2 = 0x0044, ///< SIE2 + PINMUX_DEBUGPORT_SIE3 = 0x0045, ///< SIE3 + PINMUX_DEBUGMIPI_SIE4 = 0x0046, ///< SIE4 + PINMUX_DEBUGPORT_TGE = 0x0047, ///< TGE + PINMUX_DEBUGPORT_DIS = 0x0048, ///< DIS + PINMUX_DEBUGPORT_FDE = 0x0049, ///< FDE + PINMUX_DEBUGPORT_JPEG = 0x004A, ///< JPEG + PINMUX_DEBUGPORT_GRAPHIC = 0x004B, ///< GRAPHIC + PINMUX_DEBUGPORT_GRAPHIC2 = 0x004C, ///< GRAPHIC2 + PINMUX_DEBUGPORT_IFE = 0x004D, ///< IFE + PINMUX_DEBUGPORT_AFFINE = 0x004E, ///< Affine + PINMUX_DEBUGPORT_ISE = 0x004F, ///< ISE + PINMUX_DEBUGPORT_RDE = 0x0050, ///< RDE + PINMUX_DEBUGPORT_RHE = 0x0051, ///< RHE + PINMUX_DEBUGPORT_I2C3 = 0x0052, ///< I2C3 + + PINMUX_DEBUGPORT_IPE = 0x0060, ///< IPE + PINMUX_DEBUGPORT_IME = 0x0061, ///< IME + PINMUX_DEBUGPORT_IFE2 = 0x0062, ///< IFE2 + PINMUX_DEBUGPORT_HDMI = 0x0063, ///< HDMI + PINMUX_DEBUGPORT_DCE = 0x0064, ///< DCE + PINMUX_DEBUGPORT_DRE = 0x0065, ///< DRE + +/* //remove for NT96660 + PINMUX_DEBUGPORT_AMBARD = 0x0000, ///< AMBA RD + PINMUX_DEBUGPORT_AMBAWR = 0x0001, ///< AMBA WR + PINMUX_DEBUGPORT_AHB = 0x0002, ///< AHB + PINMUX_DEBUGPORT_AHBC0 = 0x0003, ///< AHB C0 + PINMUX_DEBUGPORT_AHBC1 = 0x0004, ///< AHB C1 + PINMUX_DEBUGPORT_APBBRG = 0x0005, ///< APB BRG + PINMUX_DEBUGPORT_DDRIO = 0x0006, ///< DDRIO + PINMUX_DEBUGPORT_LVDS = 0x001F, ///< LVDS + PINMUX_DEBUGPORT_SDIO1_FIFO = 0x0022, ///< SDIO1 FIFO + PINMUX_DEBUGPORT_SDIO2_FIFO = 0x0023, ///< SDIO2 FIFO + PINMUX_DEBUGPORT_BMC = 0x0024, ///< BMC + PINMUX_DEBUGPORT_IRDA1 = 0x0025, ///< IRDA1 + PINMUX_DEBUGPORT_IRDA2 = 0x0026, ///< IRDA2 + PINMUX_DEBUGMIPI_OCP = 0x0029, ///< OCP + PINMUX_DEBUGPORT_PRE = 0x0030, ///< PRE +*/ + PINMUX_DEBUGPORT_GROUP_NONE = 0x0000, ///< No debug port is output + PINMUX_DEBUGPORT_GROUP1 = 0x0100, ///< Output debug port to MC[18..0] + PINMUX_DEBUGPORT_GROUP2 = 0x0200, ///< Output debug port to LCD[18..0] + + ENUM_DUMMY4WORD(PINMUX_DEBUGPORT) +} PINMUX_DEBUGPORT; + +// for backward compatible +#define PINMUX_DEBUGMIPI_OCP PINMUX_DEBUGPORT_OCPBRG + +/* + PIN state for SDIO + + (Reserved for driver internal usage) + + @note For pinmux_getPinmux() +*/ +typedef enum +{ + PIN_SDIO_STATE_NONE, + PIN_SDIO_STATE_ACTIVE = 0x0100, //< SD active + ENUM_DUMMY4WORD(PIN_SDIO_STATE) +} PIN_SDIO_STATE; + +/* + PIN state for SPI + + (Reserved for driver internal usage) + + @note For pinmux_getPinmux() +*/ +typedef enum +{ + PIN_SPI_STATE_NONE, + PIN_SPI_STATE_ACTIVE = 0x10000, //< SPI active + ENUM_DUMMY4WORD(PIN_SPI_STATE) +} PIN_SPI_STATE; + +/* + PIN state for NAND + + (Reserved for driver internal usage) + + @note For pinmux_getPinmux() +*/ +typedef enum +{ + PIN_NAND_STATE_NONE, + PIN_NAND_STATE_ACTIVE = 0x0400, //< NAND active + ENUM_DUMMY4WORD(PIN_NAND_STATE) +} PIN_NAND_STATE; + +/* + PINMUX selection for I2C + + (Reserved for driver internal usage) + + @note For pinmux_setPinmux() +*/ +typedef enum +{ + PINMUX_I2C_SEL_INACTIVE, //< I2C inactive + PINMUX_I2C_SEL_ACTIVE, //< I2C active + ENUM_DUMMY4WORD(PINMUX_I2C_SEL) +} PINMUX_I2C_SEL; + +/* + PINMUX selection for PWM + + (Reserved for driver internal usage) + + @note For pinmux_setPinmux() +*/ +typedef enum +{ + PINMUX_PWM_SEL_INACTIVE, //< PWM inactive + PINMUX_PWM_SEL_ACTIVE, //< PWM active + ENUM_DUMMY4WORD(PINMUX_PWM_SEL) +} PINMUX_PWM_SEL; + +/* + PINMUX selection for SIF + + (Reserved for driver internal usage) + + @note For pinmux_setPinmux() +*/ +typedef enum +{ + PINMUX_SIF_SEL_INACTIVE, //< SIF inactive + PINMUX_SIF_SEL_ACTIVE, //< SIF active + ENUM_DUMMY4WORD(PINMUX_SIF_SEL) +} PINMUX_SIF_SEL; + +/* + PINMUX selection for I2S + + (Reserved for driver internal usage) + + @note For pinmux_setPinmux() +*/ +typedef enum +{ + PINMUX_I2S_SEL_INACTIVE, //< I2S inactive + PINMUX_I2S_SEL_ACTIVE, //< I2S active + ENUM_DUMMY4WORD(PINMUX_I2S_SEL) +} PINMUX_I2S_SEL; + +/* + PINMUX selection for UART + + (Reserved for driver internal usage) + + @note For pinmux_setPinmux() +*/ +typedef enum +{ + PINMUX_UART_SEL_INACTIVE, //< UART inactive + PINMUX_UART_SEL_ACTIVE, //< UART active + ENUM_DUMMY4WORD(PINMUX_UART_SEL) +} PINMUX_UART_SEL; + + +/** + OCP Debug port select ID + + Debug port select value for pinmux_select_ocp_debugport(). +*/ +typedef enum +{ + PINMUX_DEBUGPORT_OCPCMD_DMA_APB = 0x0, ///< OCP CMD vs. DMA/APB + PINMUX_DEBUGPORT_OCPCMD_HANDSHAKE = 0x1, ///< OCP CMD handshaking + PINMUX_DEBUGPORT_OCP_DMA = 0x2, ///< OCP vs. DMA + PINMUX_DEBUGPORT_OCP_DEBUG_3 = 0x3, ///< OCP debug 3 + PINMUX_DEBUGPORT_OCP_DEBUG_4 = 0x4, ///< OCP debug 4 + + ENUM_DUMMY4WORD(PINMUX_DEBUGPORT_OCP) +} PINMUX_DEBUGPORT_OCP; + +/** + Function group + + @note For pinmux_init() +*/ +typedef enum +{ + PIN_FUNC_SDIO, ///< SDIO. Configuration refers to PIN_SDIO_CFG. + PIN_FUNC_SDIO2, ///< SDIO2. Configuration refers to PIN_SDIO_CFG. + PIN_FUNC_SDIO3, ///< SDIO3. Configuration refers to PIN_SDIO_CFG. + PIN_FUNC_NAND, ///< NAND. Configuration refers to PIN_NAND_CFG. + PIN_FUNC_SENSOR, ///< sensor interface. Configuration refers to PIN_SENSOR_CFG. + PIN_FUNC_SENSOR2, ///< sensor2 interface. Configuration refers to PIN_SENSOR2_CFG. + PIN_FUNC_SENSOR3, ///< sensor3 interface. Configuration refers to PIN_SENSOR3_CFG. + PIN_FUNC_SENSOR4, ///< sensor4 interface. Configuration refers to PIN_SENSOR4_CFG. + PIN_FUNC_SENSOR5, ///< sensor5 interface. Configuration refers to PIN_SENSOR5_CFG. + PIN_FUNC_SENSOR6, ///< sensor6 interface. Configuration refers to PIN_SENSOR6_CFG. + PIN_FUNC_SENSOR7, ///< sensor7 interface. Configuration refers to PIN_SENSOR7_CFG. + PIN_FUNC_SENSOR8, ///< sensor8 interface. Configuration refers to PIN_SENSOR8_CFG. + PIN_FUNC_MIPI_LVDS, ///< MIPI/LVDS interface configuration. Configuration refers to PIN_MIPI_LVDS_CFG. + PIN_FUNC_I2C, ///< I2C. Configuration refers to PIN_I2C_CFG. + PIN_FUNC_SIF, ///< SIF. Configuration refers to PIN_SIF_CFG. + PIN_FUNC_UART, ///< UART. Configuration refers to PIN_UART_CFG. + PIN_FUNC_SPI, ///< SPI. Configuration refers to PIN_SPI_CFG. + PIN_FUNC_REMOTE, ///< REMOTE. Configuration refers to PIN_REMOTE_CFG. + PIN_FUNC_PWM, ///< PWM. Configuration refers to PIN_PWM_CFG. + PIN_FUNC_AUDIO, ///< AUDIO. Configuration refers to PIN_PWM_CFG. + PIN_FUNC_LCD, ///< LCD interface. Configuration refers to PINMUX_LCDINIT, PINMUX_PMI_CFG, PINMUX_DISPMUX_SEL. + PIN_FUNC_LCD2, ///< LCD2 interface. Configuration refers to PINMUX_LCDINIT, PINMUX_PMI_CFG, PINMUX_DISPMUX_SEL. + PIN_FUNC_TV, ///< TV interface. Configuration refers to PINMUX_TV_HDMI_CFG. + PIN_FUNC_HDMI, ///< HDMI. Configuration refers to PINMUX_LCDINIT, PINMUX_TV_HDMI_CFG, PINMUX_HDMI_CFG. + PIN_FUNC_ETH, ///< ETH. Configuration refers to + + ENUM_DUMMY4WORD(PIN_FUNC) +} PIN_FUNC; + +/** + PIN config for SDIO + + @note For pinmux_init() with PIN_FUNC_SDIO or PIN_FUNC_SDIO2 or PIN_FUNC_SDIO3.\n + For example, you can use {PIN_FUNC_SDIO, PIN_SDIO_CFG_1ST_PINMUX|PIN_SDIO_CFG_4BITS}\n + to declare SDIO is 4 bits and located in 1st pinmux location. +*/ +typedef enum +{ + PIN_SDIO_CFG_NONE, + PIN_SDIO_CFG_4BITS = 0x01, ///< 4 bits wide + PIN_SDIO_CFG_8BITS = 0x02, ///< 8 bits wide + + PIN_SDIO_CFG_1ST_PINMUX = 0x00, ///< 1st pinmux location + ///< For SDIO: enable SD_CLK/SD_CMD/SD_D[0..3] on MC[16..21] (C_GPIO[16..21]) + ///< For SDIO2: enable SDIO_CLK/SDIO_CMD/SDIO_D[0..3] on MC[22..27] (C_GPIO[22..27]) + ///< For SDIO3: enable SDIO_CLK/SDIO_CMD/SDIO_D[0..3] on MC[28..33] (C_GPIO[28..33]) + PIN_SDIO_CFG_2ND_PINMUX = 0x10, ///< 2nd pinmux location + ///< For SDIO: enable SD_CLK/SD_CMD/SD_D[0..3] on MC[16..21] (C_GPIO[16..21]) (SDIO only has one pinmux pad group) + ///< For SDIO2: enable SDIO_CLK/SDIO_CMD/SDIO_D[0..3] on MC[22..27] (C_GPIO[22..27]) (SDIO2 only has one pinmux pad group) + ///< For SDIO3: enable SDIO_CLK/SDIO_CMD/SDIO_D[0..3] on MC[0..3]/MC9/MC11 (C_GPIO[0..3], 9, 11) + ///< When 8 bits, enable MC[0..7]/MC9/MC11 (C_GPIO[0..7], 9, 11) + + ENUM_DUMMY4WORD(PIN_SDIO_CFG) +} PIN_SDIO_CFG; + +/** + PIN config for NAND + + @note For pinmux_init() with PIN_FUNC_NAND.\n + For example, you can use {PIN_FUNC_NAND, PIN_NAND_CFG_1CS} to declare NAND with 1 CS. +*/ +typedef enum +{ + PIN_NAND_CFG_NONE, + PIN_NAND_CFG_1CS = 0x01, ///< 1 chip select. Enable NAND_D[0..7]/NAND_CS0/NAND_WE/NAND_RE/NAND_CLE/NAND_ALE/NAND_WP/NAND_RDY on MC[0..8]/MC[10..15] (C_GPIO[0..8], C_GPIO[10..15]) + PIN_NAND_CFG_2CS = 0x02, ///< 2 chip select. Enable NAND_D[0..7]/NAND_CS[0..1]/NAND_WE/NAND_RE/NAND_CLE/NAND_ALE/NAND_WP/NAND_RDY on MC[0..8]/MC[10..15] (C_GPIO[0..15]) + PIN_NAND_CFG_SPI_NAND = 0x4, ///< Virtual enum for project layer configuration + PIN_NAND_CFG_SPI_NOR = 0x8, ///< Virtual enum for project layer configuration + ENUM_DUMMY4WORD(PIN_NAND_CFG) +} PIN_NAND_CFG; + +/** + PIN config for Sensor + + @note For pinmux_init() with PIN_FUNC_SENSOR.\n + For example, you can use {PIN_FUNC_SENSOR, PIN_SENSOR_CFG_10BITS|PIN_SENSOR_CFG_SHUTTER|PIN_SENSOR_CFG_MCLK}\n + to declare sensor interface is 10 bits sensor, has SHUTTER and MCLK. +*/ +typedef enum +{ + PIN_SENSOR_CFG_NONE, + PIN_SENSOR_CFG_8BITS = 0x01, ///< 8 bits sensor. Enable SN_D[4..11]/SN_PXCLK/SN_VD/SN_HD on HSI_D[1..4]N/HSI_D[1..4]P/SN_PXCLK/SN_VD/SN_HD (S_GPI[1..3]/S_GPI[1..3]) + PIN_SENSOR_CFG_10BITS = 0x02, ///< 10 bits sensor. Enable SN_D[2..11]/SN_PXCLK/SN_VD/SN_HD on HSI_D[0..4]N/HSI_D[0..4]P0/SN_PXCLK/SN_VD/SN_HD (S_GPI[1..3]/S_GPI[1..3]) + PIN_SENSOR_CFG_12BITS = 0x04, ///< 12 bits sensor. Enable SN_D[0..11]/SN_PXCLK/SN_VD/SN_HD on HSI_D[0..4]N/HSI_D[0..4]P/HSI_CK0N/HSI_CK0P/SN_PXCLK/SN_VD/SN_HD (S_GPI[1..3]/S_GPI[1..3]) + PIN_SENSOR_CFG_MIPI = 0x20, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR_CFG_LVDS = 0x40, ///< LVDS sensor PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR_CFG_LVDS_VDHD = 0x80, ///< Backward compatible + + PIN_SENSOR_CFG_SHUTTER = 0x100, ///< Enable SN_SHUTTER on SN_GPIO[10] (SN_GPIO[10]) + PIN_SENSOR_CFG_MCLK = 0x200, ///< Enable SN_MCLK on SN_MCLK (S_GPIO[0]) + PIN_SENSOR_CFG_MCLK2 = 0x400, ///< Enable SN_MCLK2 on SBCS0 (S_GPIO[4]) + PIN_SENSOR_CFG_MES0 = 0x800, ///< Enable ME_SHUT0 on PWM0 (P_GPIO[0]) + PIN_SENSOR_CFG_MES0_2ND = 0x1000, ///< Enable (2nd) ME_SHUT0 on PWM16 (P_GPIO[16]) + PIN_SENSOR_CFG_MES1 = 0x2000, ///< Enable ME_SHUT1 on PWM1 (P_GPIO[1]) + PIN_SENSOR_CFG_MES1_2ND = 0x4000, ///< Enable (2nd) ME_SHUT1 on PWM17 (P_GPIO[17]) + PIN_SENSOR_CFG_FLCTR = 0x8000, ///< Enable SN_FLCTR on SN_FLCTR (P_GPIO[40]) + PIN_SENSOR_CFG_STROBE = 0x10000, ///< Enable SN_FLASH on SN_GPIO[9] (SN_GPIO[9]) + PIN_SENSOR_CFG_SPCLK = 0x20000, ///< Enable SP_CLK on SN_SPCLK (P_GPIO[20]) + PIN_SENSOR_CFG_SPCLK_2ND = 0x40000, ///< Enable SP_CLK on LCD27 (L_GPIO[27]) + PIN_SENSOR_CFG_SP2CLK = 0x80000, ///< Enable SP2_CLK on REMOTE_RX(P_GPIO[39]) + PIN_SENSOR_CFG_SP2CLK_2ND = 0x100000,///< Enable SP2_CLK on SBCS3 (P_GPIO[24]) + PIN_SENSOR_CFG_MES2 = 0x200000, ///< Enable ME_SHUT2 on PWM2 (P_GPIO[2]) + PIN_SENSOR_CFG_MES2_2ND = 0x400000, ///< Enable (2nd) ME_SHUT2 on PWM18 (P_GPIO[18]) + PIN_SENSOR_CFG_MES3 = 0x800000, ///< Enable ME_SHUT3 on PWM3 (P_GPIO[3]) + PIN_SENSOR_CFG_MES3_2ND = 0x1000000, ///< Enable (2nd) ME_SHUT3 on PWM19 (P_GPIO[19]) + PIN_SENSOR_CFG_LOCKN = 0x2000000, ///< Enable LOCKN on PGPIO30 + PIN_SENSOR_CFG_LOCKN2= 0x4000000, ///< Enable LOCKN2 on PGPIO31 + + + ENUM_DUMMY4WORD(PIN_SENSOR_CFG) +} PIN_SENSOR_CFG; + +/** + PIN config for Sensor2 + + @note For pinmux_init() with PIN_FUNC_SENSOR2.\n + For example, you can use {PIN_FUNC_SENSOR2, PIN_SENSOR2_CFG_CCIR8BITS}\n + to declare sensor2 interface connect a CCIR 8 bits sensor. +*/ +typedef enum +{ + PIN_SENSOR2_CFG_NONE, + PIN_SENSOR2_CFG_CCIR8BITS = 0x08, ///< Backward compatible + PIN_SENSOR2_CFG_CCIR16BITS = 0x10, ///< Backward compatible + PIN_SENSOR2_CFG_MIPI = 0x20, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR2_CFG_LVDS = 0x40, ///< LVDS sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR2_CFG_LVDS_VDHD = 0x80, ///< Backward compatible + PIN_SENSOR2_CFG_10BITS = 0x100, ///< Backward compatible + + PIN_SENSOR2_CFG_MCLK2 = 0x200, ///< Enable SN_MCLK2 on SBCS0 (S_GPIO[4]) + PIN_SENSOR2_CFG_MES2 = 0x400, ///< Enable ME_SHUT2 on PWM2 (P_GPIO[2]) + PIN_SENSOR2_CFG_MES2_2ND = 0x800, ///< Enable (2nd) ME_SHUT2 on PWM18 (P_GPIO[18]) + PIN_SENSOR2_CFG_MES3 = 0x1000, ///< Enable ME_SHUT3 on PWM3 (P_GPIO[3]) + PIN_SENSOR2_CFG_MES3_2ND = 0x2000, ///< Enable (2nd) ME_SHUT3 on PWM19 (P_GPIO[19]) + + ENUM_DUMMY4WORD(PIN_SENSOR2_CFG) +} PIN_SENSOR2_CFG; + +/** + PIN config for Sensor3 + + @note For pinmux_init() with PIN_FUNC_SENSOR3.\n + For example, you can use {PIN_FUNC_SENSOR3, PIN_SENSOR3_CFG_8BITS}\n + to declare sensor3 interface connect a 8 bits sensor. +*/ +typedef enum +{ + PIN_SENSOR3_CFG_NONE, + PIN_SENSOR3_CFG_8BITS = 0x01, ///< 8 bits sensor. Enable SIE3[0..7]/SIE3_PXCEL/SIE3_VD/SIE3_HD on P_GPIO[0..10] + PIN_SENSOR3_CFG_10BITS = 0x02, ///< 10 bits sensor. + PIN_SENSOR3_CFG_12BITS = 0x04, ///< 12 bits sensor. + PIN_SENSOR3_CFG_16BITS = 0x08, ///< 16 bits sensor. + PIN_SENSOR3_CFG_MIPI = 0x10, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR3_CFG_LVDS = 0x20, ///< LVDS sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + + PIN_SENSOR3_CFG_MCLK2 = 0x100, ///< MCLK2 + + ENUM_DUMMY4WORD(PIN_SENSOR3_CFG) +} PIN_SENSOR3_CFG; + +/** + PIN config for Sensor4 + + @note For pinmux_init() with PIN_FUNC_SENSOR4.\n + For example, you can use {PIN_FUNC_SENSOR4, xxxx} +*/ +typedef enum +{ + PIN_SENSOR4_CFG_NONE, + PIN_SENSOR4_CFG_8BITS = 0x01, ///< Backward compatible + PIN_SENSOR4_CFG_MIPI = 0x04, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR4_CFG_LVDS = 0x08, ///< LVDS sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + + PIN_SENSOR4_CFG_MCLK2 = 0x10, ///< MCLK2 + + ENUM_DUMMY4WORD(PIN_SENSOR4_CFG) +} PIN_SENSOR4_CFG; + +/** + PIN config for Sensor5 + + @note For pinmux_init() with PIN_FUNC_SENSOR5.\n + For example, you can use {PIN_FUNC_SENSOR5, xxxx}\n +*/ +typedef enum +{ + PIN_SENSOR5_CFG_NONE, + PIN_SENSOR5_CFG_MIPI = 0x04, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR5_CFG_LVDS = 0x08, ///< LVDS sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + + PIN_SENSOR5_CFG_MCLK2 = 0x10, ///< MCLK2 + + ENUM_DUMMY4WORD(PIN_SENSOR5_CFG) +} PIN_SENSOR5_CFG; + +/** + PIN config for Sensor6 + + @note For pinmux_init() with PIN_FUNC_SENSOR6.\n + For example, you can use {PIN_FUNC_SENSOR6, xxxx}\n +*/ +typedef enum +{ + PIN_SENSOR6_CFG_NONE, + PIN_SENSOR6_CFG_8BITS = 0x01, ///< 8 bit sensor + PIN_SENSOR6_CFG_16BITS= 0x02, ///< 16 bit sensor + PIN_SENSOR6_CFG_MIPI = 0x04, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR6_CFG_LVDS = 0x08, ///< LVDS sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + + PIN_SENSOR6_CFG_MCLK2 = 0x10, ///< + + ENUM_DUMMY4WORD(PIN_SENSOR6_CFG) +} PIN_SENSOR6_CFG; + +/** + PIN config for Sensor7 + + @note For pinmux_init() with PIN_FUNC_SENSOR7.\n + For example, you can use {PIN_FUNC_SENSOR7, xxxx}\n +*/ +typedef enum +{ + PIN_SENSOR7_CFG_NONE, + PIN_SENSOR7_CFG_8BITS = 0x01, ///< 8 bit sensor + PIN_SENSOR7_CFG_MIPI = 0x04, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR7_CFG_LVDS = 0x08, ///< LVDS sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + + PIN_SENSOR7_CFG_MCLK2 = 0x10, ///< + + ENUM_DUMMY4WORD(PIN_SENSOR7_CFG) +} PIN_SENSOR7_CFG; + +/** + PIN config for Sensor8 + + @note For pinmux_init() with PIN_FUNC_SENSOR8.\n + For example, you can use {PIN_FUNC_SENSOR8, xxxx}\n +*/ +typedef enum +{ + PIN_SENSOR8_CFG_NONE, + PIN_SENSOR8_CFG_8BITS = 0x01, ///< 8 bit sensor + PIN_SENSOR8_CFG_MIPI = 0x04, ///< MIPI sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + PIN_SENSOR8_CFG_LVDS = 0x08, ///< LVDS sensor. PIN/PAD is configured by PIN_FUNC_MIPI_LVDS group. + + PIN_SENSOR8_CFG_MCLK2 = 0x10, ///< + + ENUM_DUMMY4WORD(PIN_SENSOR8_CFG) +} PIN_SENSOR8_CFG; + + +/** + PIN config for MIPI/LVDS + + @note For pinmux_init() with PIN_FUNC_MIPI_LVDS.\n + For example, you can use {PIN_FUNC_MIPI_LVDS, PIN_MIPI_LVDS_CFG_CLK0|PIN_MIPI_LVDS_CFG_DAT0|PIN_MIPI_LVDS_CFG_DAT4|PIN_MIPI_LVDS_CFG_DAT7|PIN_MIPI_LVDS_CFG_DAT9}\n + to declare LVDS/MIPI connect sensor with CLK0/D0/D4/D7/D9 lanes. +*/ +typedef enum +{ + PIN_MIPI_LVDS_CFG_NONE, + + PIN_MIPI_LVDS_CFG_CLK0 = 0x1, ///< CLK lane 0. Enable HSI_CK0N/HSI_CK0P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_CLK1 = 0x2, ///< CLK lane 1. Enable HSI_CK1N/HSI_CK1P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_CLK2 = 0x4, ///< CLK lane 0. Enable HSI_CK0N/HSI_CK0P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_CLK3 = 0x8, ///< CLK lane 1. Enable HSI_CK1N/HSI_CK1P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_CLK4 = 0x10, ///< CLK lane 0. Enable HSI_CK0N/HSI_CK0P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_CLK5 = 0x20, ///< CLK lane 1. Enable HSI_CK1N/HSI_CK1P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_CLK6 = 0x40, ///< CLK lane 0. Enable HSI_CK0N/HSI_CK0P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_CLK7 = 0x80, ///< CLK lane 1. Enable HSI_CK1N/HSI_CK1P for LVDS/CSI/CSI2. + + PIN_MIPI_LVDS_CFG_DAT0 = 0x100, ///< DATA lane 0. Enable HSI_D0N/HSI_D0P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT1 = 0x200, ///< DATA lane 1. Enable HSI_D1N/HSI_D1P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT2 = 0x400, ///< DATA lane 2. Enable HSI_D2N/HSI_D2P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT3 = 0x800, ///< DATA lane 3. Enable HSI_D3N/HSI_D3P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT4 = 0x1000, ///< DATA lane 4. Enable HSI_D4N/HSI_D4P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT5 = 0x2000, ///< DATA lane 5. Enable HSI_D5N/HSI_D5P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT6 = 0x4000, ///< DATA lane 6. Enable HSI_D6N/HSI_D6P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT7 = 0x8000, ///< DATA lane 7. Enable HSI_D7N/HSI_D7P for LVDS/CSI/CSI2. + PIN_MIPI_LVDS_CFG_DAT8 = 0x10000, ///< Backward compatible + PIN_MIPI_LVDS_CFG_DAT9 = 0x20000, ///< Backward compatible + + ENUM_DUMMY4WORD(PIN_MIPI_LVDS_CFG) +} PIN_MIPI_LVDS_CFG; + +/** + PIN config for I2C + + @note For pinmux_init() with PIN_FUNC_I2C.\n + For example, you can use {PIN_FUNC_I2C, PIN_I2C_CFG_CH1|PIN_I2C_CFG_CH1_2ND_PINMUX}\n + to declare I2C channel1 both output to 1st and 2nd pinmux location. +*/ +typedef enum +{ + PIN_I2C_CFG_NONE, + PIN_I2C_CFG_CH1 = 0x1, ///< Enable channel 1. + PIN_I2C_CFG_CH1_2ND_PINMUX = 0x2, ///< Enable 2nd pinmux of channel 1. + PIN_I2C_CFG_CH2 = 0x10, ///< Enable channel 2. + PIN_I2C_CFG_CH2_2ND_PINMUX = 0x20, ///< Enable 2nd pinmux of channel 2. + PIN_I2C_CFG_CH3 = 0x100, ///< Enable channel 3. + PIN_I2C_CFG_CH3_2ND_PINMUX = 0x200, ///< Enable 2nd pinmux of channel 3. + PIN_I2C_CFG_CH3_3RD_PINMUX = 0x400, ///< Enable 3nd pinmux of channel 3. + PIN_I2C_CFG_CH4 = 0x1000, ///< Enable channel 4. + PIN_I2C_CFG_CH4_2ND_PINMUX = 0x2000, ///< Enable 2nd pinmux of channel 4. + PIN_I2C_CFG_CH4_3RD_PINMUX = 0x4000, ///< Enable 3nd pinmux of channel 4. + PIN_I2C_CFG_CH4_4TH_PINMUX = 0x8000, ///< Enable 4th pinmux of channel 4. + PIN_I2C_CFG_CH5 = 0x10000, ///< Enable channel 5. + PIN_I2C_CFG_CH5_2ND_PINMUX = 0x20000, ///< Enable 2nd pinmux of channel 5. + + ENUM_DUMMY4WORD(PIN_I2C_CFG) +} PIN_I2C_CFG; + +/** + PIN config for SIF + + *note For pinmux_init() with PIN_FUNC_SIF.\n + For example, you can use {PIN_FUNC_SIF, PIN_SIF_CFG_CH0|PIN_SIF_CFG_CH2}\n + to declare SIF channel0 and channel2 pinmux are enabled. +*/ +typedef enum +{ + PIN_SIF_CFG_NONE, + + PIN_SIF_CFG_CH0 = 0x01, ///< Enable SIF channel 0. Enable SN_CS0/SN_SCK0/SN_DAT0 (L_GPIO 27/28/29) + PIN_SIF_CFG_CH0_2ND_PINMUX = 0x02, ///< Enable SIF channel 0 2'nd pinmux. Enable SN_CS0/SN_SCK0/SN_SAT0 (P_GPIO 16/18/19) + PIN_SIF_CFG_CH0_3RD_PINMUX = 0x04, ///< Enable SIF channel 0 3'rd pinmux. Enable SN_CS0/SN_SCK0/SN_SAT0 (P_GPIO 17/18/19) + + PIN_SIF_CFG_CH1 = 0x08, ///< Enable SIF channel 1. Enable SN_CS1/SN_SCK1/SN_DAT1 (L_GPIO 30/31/32) + PIN_SIF_CFG_CH1_2ND_PINMUX = 0x10, ///< Backward compatible + + PIN_SIF_CFG_CH2 = 0x20, ///< Enable SIF channel 2. Enable SB_CS2/SB_CK23/SB_DAT23 (P_GPIO 30/32/33) + PIN_SIF_CFG_CH2_2ND_PINMUX = 0x40, ///< Enable SIF channel 2 2'nd pinmux. Enable SB_CS2/SB_CK23/SB_DAT23 (P_GPIO 8/10/11) + + PIN_SIF_CFG_CH3 = 0x80, ///< Enable SIF channel 3. Enable SB_CS3/SB_CK23/SB_DAT23 (P_GPIO 31/32/33) + PIN_SIF_CFG_CH3_2ND_PINMUX = 0x100, ///< Enable SIF channel 3 2'nd pinmux. Enable SB_CS2/SB_CK23/SB_DAT23 (P_GPIO 9/10/11) + + PIN_SIF_CFG_CH4 = 0x200, ///< Enable SIF channel 4. Enable SB_CS4/SB_CK45/SB_DAT45 (P_GPIO 24/26/27) + + PIN_SIF_CFG_CH5 = 0x400, ///< Enable SIF channel 5. Enable SB_CS5/SB_CK45/SB_DAT45 (P_GPIO 25/26/27) + + PIN_SIF_CFG_CH6 = 0x800, ///< Enable SIF channel 6. Enable SB_CS6/SB_CK67/SB_DAT67 (S_GPIO 8/9/10) + + PIN_SIF_CFG_CH7 = 0x1000, ///< Enable SIF channel 7. Enable SB_CS7/SB_CK67/SB_DAT67 (S_GPIO 11/8/9) + + ENUM_DUMMY4WORD(PIN_SIF_CFG) +} PIN_SIF_CFG; + +/** + PIN config for UART + + @note For pinmux_init() with PIN_FUNC_UART.\n + For example, you can use {PIN_FUNC_UART, PIN_UART_CFG_CH1}\n + to declare UART1 pinmux is enabled. +*/ +typedef enum +{ + PIN_UART_CFG_NONE, + + PIN_UART_CFG_CH1 = 0x01, ///< Enable channel 1. Enable UART TX and RX + PIN_UART_CFG_CH1_TX = 0x02, ///< Enalbe channel 1. Enable only UART_TX + + PIN_UART_CFG_CH2 = 0x04, ///< Enable channel 2. Enable UART2 TX and RX + PIN_UART_CFG_CH2_CTSRTS = 0x08, ///< Enable channel 2 HW handshake. Enable UART2 CTS and RTS + PIN_UART_CFG_CH2_2ND = 0x10, ///< Enable channel 2 to 2ND pinmux (UART2_2) + + PIN_UART_CFG_CH3 = 0x20, ///< Enable channel 3. Enable UART3 TX and RX + PIN_UART_CFG_CH3_CTSRTS = 0x40, ///< Enable channel 3 HW handshake. Enable UART3 CTS and RTS + PIN_UART_CFG_CH3_2ND = 0x80, ///< Enable channel 3 to 2ND pinmux (UART3_2) + + PIN_UART_CFG_CH4 = 0x100, ///< Enable channel 4. Enable UART4 TX and RX + PIN_UART_CFG_CH4_CTSRTS = 0x200, ///< Enable channel 4 HW handshake. Enable UART4 CTS and RTS + PIN_UART_CFG_CH4_2ND = 0x400, ///< Enable channel 4 to 2ND pinmux (UART4_2) + + ENUM_DUMMY4WORD(PIN_UART_CFG) +} PIN_UART_CFG; + +/** + PIN config for SPI + + @note For pinmux_init() with PIN_FUNC_SPI.\n + For example, you can use {PIN_FUNC_SPI, PIN_SPI_CFG_CH1|PIN_SPI_CFG_CH3}\n + to declare SPI channel1 and channel3 are enabled. +*/ +typedef enum +{ + PIN_SPI_CFG_NONE, + + PIN_SPI_CFG_CH1 = 0x1, ///< Enable channel 1. Enable SPI_DO/SPI_CLK/SPI_CS on MC[0]/MC[2]/MC8 (C_GPIO[0]/C_GPIO[2]/C_GPIO[8]) + PIN_SPI_CFG_CH1_2BITS = 0x2, ///< Enable channel 1 with 2 bits mode. Enable SPI_DO/SPI_DI/SPI_CLK/SPI_CS on MC[0..2]/MC8 (C_GPIO[0..2]/C_GPIO[8]) + PIN_SPI_CFG_CH1_4BITS = 0x4, ///< Backward compatible + PIN_SPI_CFG_CH1_2ND_PINMUX = 0x8, ///< Enable 2nd pinmux of channel 1. + + PIN_SPI_CFG_CH2 = 0x10, ///< Enable channel 2. Enable SPI2_CS/SPI2_CLK/SPI2_DO on SPI_CS/SPI_CLK/SPI_DO(P_GPIO[35..37]) + PIN_SPI_CFG_CH2_2BITS = 0x20, ///< Enable channel 2. Enable SPI2_CS/SPI2_CLK/SPI2_DO/SPI2_DI on SPI_CS/SPI_CLK/SPI_DO/SPI_DI(P_GPIO[35..38]) + PIN_SPI_CFG_CH2_2ND_PINMUX = 0x40, ///< Enable 2nd pinmux of channel 2. Enable SPI2_CS/SPI2_CLK/SPI2_DO/SPI2_DI on (P_GPIO[16..19]) + PIN_SPI_CFG_CH2_3RD_PINMUX = 0x80, ///< Enable 3rd pinmux of channel 2. Enable SPI2_CS/SPI2_CLK/SPI2_DO/SPI2_DI on (P_GPIO[16..19]) + + + PIN_SPI_CFG_CH3 = 0x100, ///< Enable channel 3. Eanble SPI3_CS/SPI3_CLK/SPI3_DO on SB_CS2/SB_CK23/SB_DAT23 (P_GPIO[23]/P_GPIO[25..26]) + PIN_SPI_CFG_CH3_2BITS = 0x200, ///< Enable channel 3. Eanble SPI3_CS/SPI3_DI/SPI3_CLK/SPI3_DO on SB_CS2/SB_CS3/SB_CK23/SB_DAT23 (P_GPIO[23..26]) + PIN_SPI_CFG_CH3_2ND_PINMUX = 0x400, ///< Enable 2nd pinmux of channel 3. Enable SPI3_CLK/SPI3_CS/SPI3_DO/SPI3_DI on PWM[12..15] (P_GPIO[12..15]) + PIN_SPI_CFG_CH3_3RD_PINMUX = 0x800, ///< Backward compatible + PIN_SPI_CFG_CH3_RDY = 0x1000, + PIN_SPI_CFG_CH3_RDY_2ND_PINMUX = 0x2000, + + PIN_SPI_CFG_CH4 = 0x10000, ///< Enable channel 4. Eanble SPI4_CS/SPI4_CLK/SPI4_DO on MC[28..29]/MC[31] (C_GPIO[28..29]/C_GPIO[31]) + PIN_SPI_CFG_CH4_2BITS = 0x20000, ///< Enable channel 4. Eanble SPI4_CS/SPI4_DI/SPI4_CLK/SPI4_DO on MC[28..31] (C_GPIO[28..31]) + PIN_SPI_CFG_CH4_2ND_PINMUX = 0x40000, ///< Enable 2nd pinmux of channel 4. Enable SPI4_CLK/SPI4_CS/SPI4_DO/SPI4_DI on PWM[8..11] (P_GPIO[8..11]) + PIN_SPI_CFG_CH4_RDY = 0x80000, ///< Backward compatible + PIN_SPI_CFG_CH4_3RD_PINMUX = 0x100000, ///< Enable 3rd pinmux of channel 4. + + PIN_SPI_CFG_CH5 = 0x1000000,///< Backward compatible + PIN_SPI_CFG_CH5_2BITS = 0x2000000,///< Backward compatible + PIN_SPI_CFG_CH5_2ND_PINMUX = 0x4000000,///< Backward compatible + + ENUM_DUMMY4WORD(PIN_SPI_CFG) +} PIN_SPI_CFG; + +/** + PIN config for REMOTE + + @note For pinmux_init() with PIN_FUNC_REMOTE.\n + For example, you can use {PIN_FUNC_REMOTE, PIN_REMOTE_CFG_CH1}\n + to declare remote pinmux is enabled. +*/ +typedef enum +{ + PIN_REMOTE_CFG_NONE, + PIN_REMOTE_CFG_CH1, ///< Enable remote rx channel 1. Enable REMOTE_RX (on P_GPIO[39]) + + ENUM_DUMMY4WORD(PIN_REMOTE_CFG) +} PIN_REMOTE_CFG; + +/** + PIN config for PWM + + @note For pinmux_init() with PIN_FUNC_PWM.\n + For example, you can use {PIN_FUNC_PWM, PIN_PWM_CFG_PWM0|PIN_PWM_CFG_PWM1|PIN_PWM_CFG_PWM2|PIN_PWM_CFG_PWM3}\n + to declare your system need PWM channel0/1/2/3. +*/ +typedef enum +{ + PIN_PWM_CFG_NONE, + PIN_PWM_CFG_PWM0 = 0x01, ///< Enable PWM0 (on P_GPIO[0]) + PIN_PWM_CFG_PWM1 = 0x02, ///< Enable PWM1 (on P_GPIO[1]) + PIN_PWM_CFG_PWM2 = 0x04, ///< Enable PWM2 (on P_GPIO[2]) + PIN_PWM_CFG_PWM3 = 0x08, ///< Enable PWM3 (on P_GPIO[3]) + PIN_PWM_CFG_PWM4 = 0x10, ///< Enable PWM4 (on P_GPIO[4]) + PIN_PWM_CFG_PWM5 = 0x20, ///< Enable PWM5 (on P_GPIO[5]) + PIN_PWM_CFG_PWM6 = 0x40, ///< Enable PWM6 (on P_GPIO[6]) + PIN_PWM_CFG_PWM7 = 0x80, ///< Enable PWM7 (on P_GPIO[7]) + PIN_PWM_CFG_PWM8 = 0x100, ///< Enable PWM8 (on P_GPIO[8]) + PIN_PWM_CFG_PWM9 = 0x200, ///< Enable PWM9 (on P_GPIO[9]) + PIN_PWM_CFG_PWM10= 0x400, ///< Enable PWM10 (on P_GPIO[10]) + PIN_PWM_CFG_PWM11= 0x800, ///< Enable PWM11 (on P_GPIO[11]) + PIN_PWM_CFG_PWM12= 0x1000, ///< Enable PWM12 (on P_GPIO[12]) + PIN_PWM_CFG_PWM13= 0x2000, ///< Enable PWM13 (on P_GPIO[13]) + PIN_PWM_CFG_PWM14= 0x4000, ///< Enable PWM14 (on P_GPIO[14]) + PIN_PWM_CFG_PWM15= 0x8000, ///< Enable PWM15 (on P_GPIO[15]) + PIN_PWM_CFG_PWM16= 0x10000, ///< Enable PWM16 (on P_GPIO[16]) + PIN_PWM_CFG_PWM17= 0x20000, ///< Enable PWM17 (on P_GPIO[17]) + PIN_PWM_CFG_PWM18= 0x40000, ///< Enable PWM18 (on P_GPIO[18]) + PIN_PWM_CFG_PWM19= 0x80000, ///< Enable PWM19 (on P_GPIO[19]) + + PIN_PWM_CFG_CCNT = 0x1000000, ///< Enable PICNT_1 + PIN_PWM_CFG_CCNT_2ND = 0x2000000, ///< Enable PICNT_2 + PIN_PWM_CFG_CCNT2 = 0x4000000, ///< Enable PICNT2_1 + PIN_PWM_CFG_CCNT2_2ND = 0x8000000, ///< Enable PICNT2_2 + PIN_PWM_CFG_CCNT3 = 0x10000000, ///< Enable PICNT3 + PIN_PWM_CFG_CCNT3_2ND = 0x20000000, ///< Enable PICNT3_2 + PIN_PWM_CFG_CCNT4 = 0x40000000, ///< Enable PICNT4_1 + PIN_PWM_CFG_CCNT4_2ND = 0x80000000, ///< Enable PICNT4_2 + + ENUM_DUMMY4WORD(PIN_PWM_CFG) +} PIN_PWM_CFG; + +/** + PIN config for AUDIO + + @note For pinmux_init() with PIN_FUNC_AUDIO.\n + For example, you can use {PIN_FUNC_AUDIO, PIN_AUDIO_CFG_I2S|PIN_AUDIO_CFG_MCLK}\n + to declare pinmux of I2S and I2S MCLK are enabled. +*/ +typedef enum +{ + PIN_AUDIO_CFG_NONE, + PIN_AUDIO_CFG_I2S = 0x01, ///< Enable I2S channel. Enable I2S_BCK/I2S_FCK/I2S_DO/I2S_DI/ (on P_GPIO[31..34]) + PIN_AUDIO_CFG_I2S_2ND_PINMUX = 0x02,///< Backward compatible + + PIN_AUDIO_CFG_MCLK = 0x10, ///< Enable audio MCLK. Enable I2S_MCLK (on P_GPIO[20]) + PIN_AUDIO_CFG_MCLK_2ND_PINMUX = 0x20,///< Backward compatible + + ENUM_DUMMY4WORD(PIN_AUDIO_CFG) +} PIN_AUDIO_CFG; + +/** + PIN config of LCD modes + + @note For pinmux_init() with PIN_FUNC_LCD or PIN_FUNC_LCD2.\n + For example, you can use {PIN_FUNC_LCD, PINMUX_DISPMUX_SEL_LCD | PINMUX_LCDMODE_RGB_SERIAL}\n + to tell display object that PIN_FUNC_LCD is located on primary LCD pinmux,\n + and it's LCD mode is RGB serial. +*/ +typedef enum +{ + PINMUX_LCDMODE_RGB_SERIAL = 0, ///< LCD MODE is RGB Serial or UPS051 + PINMUX_LCDMODE_RGB_PARALL = 1, ///< LCD MODE is RGB Parallel (888) + PINMUX_LCDMODE_YUV640 = 2, ///< LCD MODE is YUV640 + PINMUX_LCDMODE_YUV720 = 3, ///< LCD MODE is YUV720 + PINMUX_LCDMODE_RGBD360 = 4, ///< LCD MODE is RGB Dummy 360 + PINMUX_LCDMODE_RGBD320 = 5, ///< LCD MODE is RGB Dummy 320 + PINMUX_LCDMODE_RGB_THROUGH = 6, ///< LCD MODE is RGB through mode + PINMUX_LCDMODE_CCIR601 = 7, ///< LCD MODE is CCIR601 + PINMUX_LCDMODE_CCIR656 = 8, ///< LCD MODE is CCIR656 + PINMUX_LCDMODE_RGB_PARALL666 = 9, ///< LCD MODE is RGB Parallel 666 + PINMUX_LCDMODE_RGB_PARALL565 = 10, ///< LCD MODE is RGB Parallel 565 + PINMUX_LCDMODE_RGB_PARALL_DELTA = 11, ///< LCD MODE is RGB Parallel Delta + PINMUX_LCDMODE_MIPI = 12, ///< LCD MODE is MIPI Display + + PINMUX_LCDMODE_MI_OFFSET = 32, ///< Memory LCD MODE offset + PINMUX_LCDMODE_MI_FMT0 = 32+0, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT1 = 32+1, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT2 = 32+2, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT3 = 32+3, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT4 = 32+4, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT5 = 32+5, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT6 = 32+6, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT7 = 32+7, ///< LCD MODE is Memory(Parallel Interface) 9bits + PINMUX_LCDMODE_MI_FMT8 = 32+8, ///< LCD MODE is Memory(Parallel Interface) 16bits + PINMUX_LCDMODE_MI_FMT9 = 32+9, ///< LCD MODE is Memory(Parallel Interface) 16bits + PINMUX_LCDMODE_MI_FMT10 = 32+10, ///< LCD MODE is Memory(Parallel Interface) 18bits + PINMUX_LCDMODE_MI_FMT11 = 32+11, ///< LCD MODE is Memory(Parallel Interface) 8bits + PINMUX_LCDMODE_MI_FMT12 = 32+12, ///< LCD MODE is Memory(Parallel Interface) 16bits + PINMUX_LCDMODE_MI_FMT13 = 32+13, ///< LCD MODE is Memory(Parallel Interface) 16bits + PINMUX_LCDMODE_MI_FMT14 = 32+14, ///< LCD MODE is Memory(Parallel Interface) 16bits + PINMUX_LCDMODE_MI_SERIAL_BI = 32+20, ///< LCD MODE is Serial Interface bi-direction + PINMUX_LCDMODE_MI_SERIAL_SEP = 32+21, ///< LCD MODE is Serial Interface separation + + PINMUX_LCDMODE_AUTO_PINMUX = 0x01<<22, ///< Set display device to GPIO mode when display device is closed. Select this filed will inform display object to switch to GPIO when display device is closed. + + + PINMUX_HDMIMODE_OFFSET = 64, ///< HDMI MODE offset + PINMUX_HDMIMODE_640X480P60 = 64+1, ///< HDMI Video format is 640x480 & Progressive 60fps + PINMUX_HDMIMODE_720X480P60 = 64+2, ///< HDMI Video format is 720x480 & Progressive 60fps & 4:3 + PINMUX_HDMIMODE_720X480P60_16X9 = 64+3, ///< HDMI Video format is 720x480 & Progressive 60fps & 16:9 + PINMUX_HDMIMODE_1280X720P60 = 64+4, ///< HDMI Video format is 1280x720 & Progressive 60fps + PINMUX_HDMIMODE_1920X1080I60 = 64+5, ///< HDMI Video format is 1920x1080 & Interlaced 60fps + PINMUX_HDMIMODE_720X480I60 = 64+6, ///< HDMI Video format is 720x480 & Interlaced 60fps + PINMUX_HDMIMODE_720X480I60_16X9 = 64+7, ///< HDMI Video format is 720x480 & Interlaced 60fps & 16:9 + PINMUX_HDMIMODE_720X240P60 = 64+8, ///< HDMI Video format is 720x240 & Progressive 60fps + PINMUX_HDMIMODE_720X240P60_16X9 = 64+9, ///< HDMI Video format is 720x240 & Progressive 60fps & 16:9 + PINMUX_HDMIMODE_1440X480I60 = 64+10, ///< HDMI Video format is 1440x480 & Interlaced 60fps + PINMUX_HDMIMODE_1440X480I60_16X9 = 64+11, ///< HDMI Video format is 1440x480 & Interlaced 60fps & 16:9 + PINMUX_HDMIMODE_1440X240P60 = 64+12, ///< HDMI Video format is 1440x240 & Progressive 60fps + PINMUX_HDMIMODE_1440X240P60_16X9 = 64+13, ///< HDMI Video format is 1440x240 & Progressive 60fps & 16:9 + PINMUX_HDMIMODE_1440X480P60 = 64+14, ///< HDMI Video format is 1440x480 & Progressive 60fps + PINMUX_HDMIMODE_1440X480P60_16X9 = 64+15, ///< HDMI Video format is 1440x480 & Progressive 60fps & 16:9 + PINMUX_HDMIMODE_720X576P50 = 64+17, ///< HDMI Video format is 720x576 & Progressive 50fps + PINMUX_HDMIMODE_720X576P50_16X9 = 64+18, ///< HDMI Video format is 720x576 & Progressive 50fps & 16:9 + PINMUX_HDMIMODE_1280X720P50 = 64+19, ///< HDMI Video format is 1280x720 & Progressive 50fps + PINMUX_HDMIMODE_1920X1080I50 = 64+20, ///< HDMI Video format is 1920x1080 & Interlaced 50fps + PINMUX_HDMIMODE_720X576I50 = 64+21, ///< HDMI Video format is 720x576 & Interlaced 50fps + PINMUX_HDMIMODE_720X576I50_16X9 = 64+22, ///< HDMI Video format is 720x576 & Interlaced 50fps & 16:9 + PINMUX_HDMIMODE_720X288P50 = 64+23, ///< HDMI Video format is 720x288 & Progressive 50fps + PINMUX_HDMIMODE_720X288P50_16X9 = 64+24, ///< HDMI Video format is 720x288 & Progressive 50fps & 16:9 + PINMUX_HDMIMODE_1440X576I50 = 64+25, ///< HDMI Video format is 1440x576 & Interlaced 50fps + PINMUX_HDMIMODE_1440X576I50_16X9 = 64+26, ///< HDMI Video format is 1440x576 & Interlaced 50fps & 16:9 + PINMUX_HDMIMODE_1440X288P50 = 64+27, ///< HDMI Video format is 1440x288 & Progressive 50fps + PINMUX_HDMIMODE_1440X288P50_16X9 = 64+28, ///< HDMI Video format is 1440x288 & Progressive 50fps & 16:9 + PINMUX_HDMIMODE_1440X576P50 = 64+29, ///< HDMI Video format is 1440x576 & Progressive 50fps + PINMUX_HDMIMODE_1440X576P50_16X9 = 64+30, ///< HDMI Video format is 1440x576 & Progressive 50fps & 16:9 + PINMUX_HDMIMODE_1920X1080P50 = 64+31, ///< HDMI Video format is 1920x1080 & Progressive 50fps + PINMUX_HDMIMODE_1920X1080P24 = 64+32, ///< HDMI Video format is 1920x1080 & Progressive 24fps + PINMUX_HDMIMODE_1920X1080P25 = 64+33, ///< HDMI Video format is 1920x1080 & Progressive 25fps + PINMUX_HDMIMODE_1920X1080P30 = 64+34, ///< HDMI Video format is 1920x1080 & Progressive 30fps + PINMUX_HDMIMODE_1920X1080I50_VT1250 = 64+39, ///< HDMI Video format is 1920x1080 & Interlaced 50fps & V-total is 1250 lines + PINMUX_HDMIMODE_1920X1080I100 = 64+40, ///< HDMI Video format is 1920x1080 & Interlaced 100fps + PINMUX_HDMIMODE_1280X720P100 = 64+41, ///< HDMI Video format is 1280X720 & Progressive 100fps + PINMUX_HDMIMODE_720X576P100 = 64+42, ///< HDMI Video format is 720X576 & Progressive 100fps + PINMUX_HDMIMODE_720X576P100_16X9 = 64+43, ///< HDMI Video format is 720X576 & Progressive 100fps & 16:9 + PINMUX_HDMIMODE_720X576I100 = 64+44, ///< HDMI Video format is 720X576 & Interlaced 100fps + PINMUX_HDMIMODE_720X576I100_16X9 = 64+45, ///< HDMI Video format is 720X576 & Interlaced 100fps & 16:9 + PINMUX_HDMIMODE_1920X1080I120 = 64+46, ///< HDMI Video format is 1920X1080 & Interlaced 120fps + PINMUX_HDMIMODE_1280X720P120 = 64+47, ///< HDMI Video format is 1280X720 & Progressive 120fps + PINMUX_HDMIMODE_720X480P120 = 64+48, ///< HDMI Video format is 720X480 & Progressive 120fps + PINMUX_HDMIMODE_720X480P120_16X9 = 64+49, ///< HDMI Video format is 720X480 & Progressive 120fps & 16:9 + PINMUX_HDMIMODE_720X480I120 = 64+50, ///< HDMI Video format is 720X480 & Interlaced 120fps + PINMUX_HDMIMODE_720X480I120_16X9 = 64+51, ///< HDMI Video format is 720X480 & Interlaced 120fps & 16:9 + PINMUX_HDMIMODE_720X576P200 = 64+52, ///< HDMI Video format is 720X576 & Progressive 200fps + PINMUX_HDMIMODE_720X576P200_16X9 = 64+53, ///< HDMI Video format is 720X576 & Progressive 200fps & 16:9 + PINMUX_HDMIMODE_720X576I200 = 64+54, ///< HDMI Video format is 720X576 & Interlaced 200fps + PINMUX_HDMIMODE_720X576I200_16X9 = 64+55, ///< HDMI Video format is 720X576 & Interlaced 200fps & 16:9 + PINMUX_HDMIMODE_720X480P240 = 64+56, ///< HDMI Video format is 720X480 & Progressive 240fps + PINMUX_HDMIMODE_720X480P240_16X9 = 64+57, ///< HDMI Video format is 720X480 & Progressive 240fps & 16:9 + PINMUX_HDMIMODE_720X480I240 = 64+58, ///< HDMI Video format is 720X480 & Interlaced 240fps + PINMUX_HDMIMODE_720X480I240_16X9 = 64+59, ///< HDMI Video format is 720X480 & Interlaced 240fps & 16:9 + + PINMUX_DSI_1_LANE_CMD_MODE_RGB565 = 128+0, ///< DSI command mode with RGB565 format + PINMUX_DSI_1_LANE_CMD_MODE_RGB666P = 128+1, ///< DSI command mode with RGB666 packed + PINMUX_DSI_1_LANE_CMD_MODE_RGB666L = 128+2, ///< DSI command mode with RGB666 loosely + PINMUX_DSI_1_LANE_CMD_MODE_RGB888 = 128+3, ///< DSI command mode with RGB888 + + PINMUX_DSI_1_LANE_VDO_SYNC_PULSE_RGB565 = 128+4, ///< DSI video sync pulse mode with RGB565 format + PINMUX_DSI_1_LANE_VDO_SYNC_PULSE_RGB666P = 128+5, ///< DSI video sync pulse mode with RGB666 packed + PINMUX_DSI_1_LANE_VDO_SYNC_PULSE_RGB666L = 128+6, ///< DSI video sync pulse mode with RGB666 loosely + PINMUX_DSI_1_LANE_VDO_SYNC_PULSE_RGB888 = 128+7, ///< DSI video sync pulse mode with RGB888 + + PINMUX_DSI_1_LANE_VDO_SYNC_EVENT_RGB565 = 128+8, ///< DSI video sync event burst mode with RGB565 format + PINMUX_DSI_1_LANE_VDO_SYNC_EVENT_RGB666P = 128+9, ///< DSI video sync event burst mode with RGB666 packed + PINMUX_DSI_1_LANE_VDO_SYNC_EVENT_RGB666L = 128+10,///< DSI video sync event burst mode with RGB666 loosely + PINMUX_DSI_1_LANE_VDO_SYNC_EVENT_RGB888 = 128+11,///< DSI video sync event burst mode with RGB888 + + PINMUX_DSI_2_LANE_CMD_MODE_RGB565 = 128+12,///< DSI command mode with RGB565 format + PINMUX_DSI_2_LANE_CMD_MODE_RGB666P = 128+13,///< DSI command mode with RGB666 packed + PINMUX_DSI_2_LANE_CMD_MODE_RGB666L = 128+14,///< DSI command mode with RGB666 loosely + PINMUX_DSI_2_LANE_CMD_MODE_RGB888 = 128+15,///< DSI command mode with RGB888 + + PINMUX_DSI_2_LANE_VDO_SYNC_PULSE_RGB565 = 128+16,///< DSI video sync pulse mode with RGB565 format + PINMUX_DSI_2_LANE_VDO_SYNC_PULSE_RGB666P = 128+17,///< DSI video sync pulse mode with RGB666 packed + PINMUX_DSI_2_LANE_VDO_SYNC_PULSE_RGB666L = 128+18,///< DSI video sync pulse mode with RGB666 loosely + PINMUX_DSI_2_LANE_VDO_SYNC_PULSE_RGB888 = 128+19,///< DSI video sync pulse mode with RGB888 + + PINMUX_DSI_2_LANE_VDO_SYNC_EVENT_RGB565 = 128+20,///< DSI video sync event burst mode with RGB565 format + PINMUX_DSI_2_LANE_VDO_SYNC_EVENT_RGB666P = 128+21,///< DSI video sync event burst mode with RGB666 packed + PINMUX_DSI_2_LANE_VDO_SYNC_EVENT_RGB666L = 128+22,///< DSI video sync event burst mode with RGB666 loosely + PINMUX_DSI_2_LANE_VDO_SYNC_EVENT_RGB888 = 128+23,///< DSI video sync event burst mode with RGB888 + + PINMUX_DSI_4_LANE_CMD_MODE_RGB565 = 128+24,///< DSI command mode with RGB565 format + PINMUX_DSI_4_LANE_CMD_MODE_RGB666P = 128+25,///< DSI command mode with RGB666 packed + PINMUX_DSI_4_LANE_CMD_MODE_RGB666L = 128+26,///< DSI command mode with RGB666 loosely + PINMUX_DSI_4_LANE_CMD_MODE_RGB888 = 128+27,///< DSI command mode with RGB888 + + PINMUX_DSI_4_LANE_VDO_SYNC_PULSE_RGB565 = 128+28,///< DSI video sync pulse mode with RGB565 format + PINMUX_DSI_4_LANE_VDO_SYNC_PULSE_RGB666P = 128+29,///< DSI video sync pulse mode with RGB666 packed + PINMUX_DSI_4_LANE_VDO_SYNC_PULSE_RGB666L = 128+30,///< DSI video sync pulse mode with RGB666 loosely + PINMUX_DSI_4_LANE_VDO_SYNC_PULSE_RGB888 = 128+31,///< DSI video sync pulse mode with RGB888 + + PINMUX_DSI_4_LANE_VDO_SYNC_EVENT_RGB565 = 128+32,///< DSI video sync event burst mode with RGB565 format + PINMUX_DSI_4_LANE_VDO_SYNC_EVENT_RGB666P = 128+33,///< DSI video sync event burst mode with RGB666 packed + PINMUX_DSI_4_LANE_VDO_SYNC_EVENT_RGB666L = 128+34,///< DSI video sync event burst mode with RGB666 loosely + PINMUX_DSI_4_LANE_VDO_SYNC_EVENT_RGB888 = 128+35,///< DSI video sync event burst mode with RGB888 + + + + ENUM_DUMMY4WORD(PINMUX_LCDINIT) +} PINMUX_LCDINIT; + +/** + PIN config for Parallel MI + + @note For pinmux_init() with PIN_FUNC_LCD or PIN_FUNC_LCD2.\n + For example, you can use {PIN_FUNC_LCD, PINMUX_DISPMUX_SEL_LCD|PINMUX_PMI_CFG_NORMAL|PINMUX_LCDMODE_MI_FMT0}\n + to tell display object that PIN_FUNC_LCD is bound to MI and format is FMT0,\n + and MI is located at primary location. +*/ +typedef enum +{ + PINMUX_PMI_CFG_NORMAL = 0x00, ///< Normal Parallel MI location (at LCD) + PINMUX_PMI_CFG_2ND_PINMUX = 0x01<<26, ///< Secondary Parallel MI location (at LGPIO[12..25]) + + PINMUX_PMI_CFG_MASK = 0x03<<26, + ENUM_DUMMY4WORD(PINMUX_PMI_CFG) +} PINMUX_PMI_CFG; + +/** + PIN config for TV/HDMI + + @note For pinmux_init() for PIN_FUNC_TV or PIN_FUNC_HDMI.\n + For example, you can use {PIN_FUNC_HDMI, PINMUX_TV_HDMI_CFG_NORMAL|PINMUX_HDMIMODE_1280X720P60}\n + to tell display object that HDMI activation will disable PANEL,\n + and HDMI mode is 1280x720 P60. +*/ +typedef enum +{ + PINMUX_TV_HDMI_CFG_GPIO = 0x00, ///< TV activation will disable PINMUX to GPIO + PINMUX_TV_HDMI_CFG_NORMAL = 0x00, ///< TV activation will disable PANEL which shared the same IDE + PINMUX_TV_HDMI_CFG_PINMUX_ON = 0x01<<28, ///< TV activation will keep PINMUX setting + + PINMUX_TV_HDMI_CFG_MASK = 0x03<<28, + ENUM_DUMMY4WORD(PINMUX_TV_HDMI_CFG) +} PINMUX_TV_HDMI_CFG; + +/** + PIN config for HDMI + + @note For pinmux_init() for PIN_FUNC_HDMI.\n + For example, you can use {PIN_FUNC_HDMI, PINMUX_HDMI_CFG_CEC|PINMUX_TV_HDMI_CFG_NORMAL}\n + to declare HDMI CEC pinmux is enabled. +*/ +typedef enum +{ + PINMUX_HDMI_CFG_GPIO = 0x00, ///< HDMI specific PIN to GPIO + PINMUX_HDMI_CFG_HOTPLUG = 0x01<<26, ///< HDMI HOTPLUG. Enable HDMI_PLUG (on P_GPIO[30]) + PINMUX_HDMI_CFG_CEC = 0x02<<26, ///< HDMI CEC. Enable HDMI_CEC (on P_GPIO[27]) + + PINMUX_HDMI_CFG_MASK = 0x03<<26, + ENUM_DUMMY4WORD(PINMUX_HDMI_CFG) +} PINMUX_HDMI_CFG; + +/** + PIN location of LCD + + @note For pinmux_init() with PIN_FUNC_LCD or PIN_FUNC_LCD2.\n + For example, you can use {PIN_FUNC_LCD, PINMUX_DISPMUX_SEL_LCD2|PINMUX_LCDMODE_XXX}\n + to tell display object that PIN_FUNC_LCD is located on secondary LCD pinmux. +*/ +typedef enum +{ + PINMUX_DISPMUX_SEL_NONE = 0x00<<28, ///< PINMUX none + PINMUX_DISPMUX_SEL_LCD = 0x01<<28, ///< PINMUX at LCD interface + PINMUX_DISPMUX_SEL_LCD2 = 0x02<<28, ///< PINMUX at LCD2 interface + + PINMUX_DISPMUX_SEL_MASK = 0x03<<28, + ENUM_DUMMY4WORD(PINMUX_DISPMUX_SEL) +} PINMUX_DISPMUX_SEL; + +/** + PIN config for ETH + + @note For pinmux_init() for PIN_FUNC_ETH.\n + For example, you can use {PIN_FUNC_ETH, PINMUX_ETH_CFG_MII}\n + to select USB as device. +*/ +typedef enum +{ + PIN_ETH_CFG_NONE = 0x00, ///< PINMUX none + PIN_ETH_CFG_MII = 0x01, ///< ETH MII + PIN_ETH_CFG_RMII = 0x02, ///< ETH RMII + PIN_ETH_CFG_GMII = 0x04, ///< ETH GMII + PIN_ETH_CFG_RGMII = 0x08, ///< ETH RGMII + PIN_ETH_CFG_REVMII_10_100 = 0x10, ///< ETH REVMII_10_100 + PIN_ETH_CFG_REVMII_10_1000 = 0x20, ///< ETH REVMII_10_1000 + + ENUM_DUMMY4WORD(PINMUX_ETH_CFG) +} PINMUX_ETH_CFG; + + +/** + Pinmux Function identifier + + @note For pinmux_getDispMode(), pinmux_setPinmux(). +*/ +typedef enum +{ + PINMUX_FUNC_ID_LCD, ///< 1st Panel (LCD), pinmux can be: + ///< - @b PINMUX_LCD_SEL_GPIO + ///< - @b PINMUX_LCD_SEL_CCIR656 + ///< - @b PINMUX_LCD_SEL_CCIR601 + ///< - @b PINMUX_LCD_SEL_SERIAL_RGB_6BITS + ///< - @b PINMUX_LCD_SEL_SERIAL_RGB_8BITS + ///< - @b PINMUX_LCD_SEL_SERIAL_YCbCr_8BITS + ///< - @b PINMUX_LCD_SEL_PARALLE_MI_8BITS + ///< - @b PINMUX_LCD_SEL_PARALLE_MI_9BITS + ///< - @b PINMUX_LCD_SEL_SERIAL_MI_SDIO + ///< - @b PINMUX_LCD_SEL_SERIAL_MI_SDI_SDO + ///< ORed with + ///< - @b PINMUX_LCD_SEL_DE_ENABLE + ///< - @b PINMUX_LCD_SEL_TE_ENABLE + PINMUX_FUNC_ID_LCD2, ///< 2nd Panel (LCD), pinmux can be: + ///< - @b PINMUX_LCD_SEL_GPIO + ///< - @b PINMUX_LCD_SEL_CCIR656 + ///< - @b PINMUX_LCD_SEL_CCIR601 + ///< - @b PINMUX_LCD_SEL_SERIAL_RGB_6BITS + ///< - @b PINMUX_LCD_SEL_SERIAL_RGB_8BITS + ///< - @b PINMUX_LCD_SEL_SERIAL_YCbCr_8BITS + ///< - @b PINMUX_LCD_SEL_PARALLE_MI_8BITS + ///< - @b PINMUX_LCD_SEL_PARALLE_MI_9BITS + ///< - @b PINMUX_LCD_SEL_SERIAL_MI_SDIO + ///< - @b PINMUX_LCD_SEL_SERIAL_MI_SDI_SDO + ///< ORed with + ///< - @b PINMUX_LCD_SEL_DE_ENABLE + PINMUX_FUNC_ID_TV, ///< TV, pinmux can be: + ///< - @b PINMUX_LCD_SEL_GPIO + PINMUX_FUNC_ID_HDMI, ///< HDMI, pinmux can be: + ///< - @b PINMUX_LCD_SEL_GPIO + PINMUX_FUNC_ID_SN_MES0, ///< Sensor MES0, pinmux can be: + ///< - @b PINMUX_SENSOR_SEL_INACTIVE + ///< - @b PINMUX_SENSOR_SEL_ACTIVE + PINMUX_FUNC_ID_SN_MES1, ///< Sensor MES1, pinmux can be: + ///< - @b PINMUX_SENSOR_SEL_INACTIVE + ///< - @b PINMUX_SENSOR_SEL_ACTIVE + PINMUX_FUNC_ID_SN_MES2, ///< Sensor MES2, pinmux can be: + ///< - @b PINMUX_SENSOR_SEL_INACTIVE + ///< - @b PINMUX_SENSOR_SEL_ACTIVE + PINMUX_FUNC_ID_SN_MES3, ///< Sensor MES3, pinmux can be: + ///< - @b PINMUX_SENSOR_SEL_INACTIVE + ///< - @b PINMUX_SENSOR_SEL_ACTIVE + PINMUX_FUNC_ID_SN_FLCTR, ///< Sensor Flash Control, pinmux can be: + ///< - @b PINMUX_SENSOR_SEL_INACTIVE + ///< - @b PINMUX_SENSOR_SEL_ACTIVE + PINMUX_FUNC_ID_SN_MCLK, ///< Sensor MCLK, pinmux can be: + ///< - @b PINMUX_SENSOR_SEL_INACTIVE + ///< - @b PINMUX_SENSOR_SEL_ACTIVE + PINMUX_FUNC_ID_SPI2, ///< SPI channel2 pinmux switch, pinmux can be: + ///< - @b PINMUX_SPI_SEL_INACTIVE + ///< - @b PINMUX_SPI_SEL_ACTIVE + PINMUX_FUNC_ID_SPI3, ///< SPI channel3 pinmux switch, pinmux can be: + ///< - @b PINMUX_SPI_SEL_INACTIVE + ///< - @b PINMUX_SPI_SEL_ACTIVE + PINMUX_FUNC_ID_SPI4, ///< SPI channel4 pinmux switch, pinmux can be: + ///< - @b PINMUX_SPI_SEL_INACTIVE + ///< - @b PINMUX_SPI_SEL_ACTIVE + PINMUX_FUNC_ID_SPI5, ///< SPI channel5 pinmux switch, pinmux can be: + ///< - @b PINMUX_SPI_SEL_INACTIVE + ///< - @b PINMUX_SPI_SEL_ACTIVE + PINMUX_FUNC_ID_COUNT, //< Total function count + + ENUM_DUMMY4WORD(PINMUX_FUNC_ID) +} PINMUX_FUNC_ID; + +/** + Pinmux selection for LCD + + @note For PINMUX_FUNC_ID_LCD, PINMUX_FUNC_ID_LCD2 +*/ +typedef enum +{ + PINMUX_LCD_SEL_GPIO, ///< GPIO + PINMUX_LCD_SEL_CCIR656, ///< CCIR-656 8 bits. Enable CCIR_YC[0..7]/CCIR_CLK on LCD[0..8] (L_GPIO[0..8]) + PINMUX_LCD_SEL_CCIR656_16BITS, ///< CCIR-656 16 bits. Enable CCIR_Y[0..7]/CCIR_CLK/CCIR_C[0..7] on LCD[0..8]/LCD[12..19] (L_GPIO[0..8]/L_GPIO[12..19]) + PINMUX_LCD_SEL_CCIR601, ///< CCIR-601 8 bits. Enable CCIR_YC[0..7]/CCIR_CLK/CCIR_VD/CCIR_HD on LCD[0..10] (L_GPIO[0..10]) + PINMUX_LCD_SEL_CCIR601_16BITS, ///< CCIR-601 16 bits. Enable CCIR_Y[0..7]/CCIR_CLK/CCIR_VD/CCIR_HD/CCIR_C[0..7] on LCD[0..19] (L_GPIO[0..19]) + PINMUX_LCD_SEL_SERIAL_RGB_6BITS, ///< Serial RGB 6 bits. Enable RGB_D[2..7]/RGB_CLK/RGB_VD/RGB_HD on LCD[2..10] (L_GPIO[2..10]) + PINMUX_LCD_SEL_SERIAL_RGB_8BITS, ///< Serial RGB 8 bits. Enable RGB_D[0..7]/RGB_CLK/RGB_VD/RGB_HD on LCD[0..10] (L_GPIO[0..10]) + PINMUX_LCD_SEL_SERIAL_YCbCr_8BITS, ///< Serial YCbCr 8 bits. Enable CCIR_YC[0..7]/CCIR_CLK/CCIR_VD/CCIR_HD on LCD[0..10] (L_GPIO[0..10]) + PINMUX_LCD_SEL_PARALLE_RGB565, ///< Parallel RGB565. Enable RGB_C0_[0..4]/RGB_DCLK/RGB_VS/RGB_HS/RGB_C1_[0..5]/RGB_C2_[0..4] on LCD[3..10]/LCD[14..19]/LCD[23..27] (L_GPIO[3..10]/L_GPIO[14..19]/L_GPIO[23..27]) + PINMUX_LCD_SEL_PARALLE_RGB666, ///< Parallel RGB666. Enable RGB_C0_[0..5]/RGB_DCLK/RGB_VS/RGB_HS/RGB_C1_[0..5]/RGB_C2_[0..5] on LCD[2..10]/LCD[14..19]/LCD[22..27] (L_GPIO[2..10]/L_GPIO[14..19]/L_GPIO[22..27]) + PINMUX_LCD_SEL_PARALLE_RGB888, ///< Parallel RGB888. Enable RGB_C0_[0..7]/RGB_DCLK/RGB_VS/RGB_HS/RGB_C1_[0..7]/RGB_C2_[0..7] on LCD[0..10]/LCD[12..27] (L_GPIO[2..10]/L_GPIO[12..27]) + PINMUX_LCD_SEL_RGB_16BITS, ///< RGB 16 bits. Enable CCIR_Y[0..7]/CCIR_CLK/CCIR_VD/CCIR_HD/CCIR_C[0..7] on LCD[0..19] (L_GPIO[0..19]) + PINMUX_LCD_SEL_PARALLE_MI_8BITS, ///< Parallel MI 8 bits. + ///< When PINMUX_PMI_CFG_NORMAL is set, Enable MPU_D[0..7]/MPU_CS/MPU_RS/MPU_WR/MPU_RD on LCD[0..7]/LCD[9..12] (L_GPIO[0..7]/L_GPIO[9..12]) + ///< When PINMUX_PMI_CFG_2ND_PINMUX is set, Enable MPU2_RS/MPU2_CS/MPU2_D[0..7]/MPU2_WR/MPU2_RD on LCD[12..22]/LCD[24] (L_GPIO[12..22]/L_GPIO[24]) + PINMUX_LCD_SEL_PARALLE_MI_9BITS, ///< Parallel MI 9 bits. + ///< When PINMUX_PMI_CFG_NORMAL is set, Enable MPU_D[0..8]/MPU_CS/MPU_RS/MPU_WR/MPU_RD on LCD[0..7]/LCD[9..13] (L_GPIO[0..7]/L_GPIO[9..13]) + ///< When PINMUX_PMI_CFG_2ND_PINMUX is set, Enable MPU2_RS/MPU2_CS/MPU2_D[0..8]/MPU2_WR/MPU2_RD on LCD[12..24] (L_GPIO[12..24]) + PINMUX_LCD_SEL_PARALLE_MI_16BITS, ///< Parallel MI 16 bits. Enable MPU_D[0..15]/MPU_CS/MPU_RS/MPU_WR/MPU_RD on LCD[0..7]/LCD[9..20] (L_GPIO[0..7]/L_GPIO[9..20]) + PINMUX_LCD_SEL_PARALLE_MI_18BITS, ///< Parallel MI 18 bits. Enable MPU_D[0..17]/MPU_CS/MPU_RS/MPU_WR/MPU_RD on LCD[0..7]/LCD[9..22] (L_GPIO[0..7]/L_GPIO[9..22]) + PINMUX_LCD_SEL_SERIAL_MI_SDIO, ///< Serial MI SDIO bi-direction. Enable MPU_CS/MPU_RS/MPU_CLK/MPU_SDIO on LCD[15..18] (L_GPIO[15..18]) + PINMUX_LCD_SEL_SERIAL_MI_SDI_SDO, ///< Serial MI SDI/SDO seperate. Enable MPU_SDO/MPU_SDI/MPU_CS/MPU_RS/MPU_CLK on LCD[13..17] (L_GPIO[13..17]) + PINMUX_LCD_SEL_MIPI, ///< MIPI DSI + + PINMUX_LCD_SEL_TE_ENABLE = 0x01<<23, ///< TE Enable (For Parallel/Serial MI) + ///< When normal (PINMUX_PMI_CFG_NORMAL) parallel MI, enable MPU_TE on LCD8 (L_GPIO[8]). + ///< When 2nd (PINMUX_PMI_CFG_2ND_PINMUX) parallel MI, enable MPU_TE on LCD25 (L_GPIO[25]). + ///< When serial MI, enable MI_TE on LCD19 (L_GPIO[19]). + PINMUX_LCD_SEL_DE_ENABLE = 0x01<<24, ///< DE Enable (For CCIR656 8/16bits, CCIR601 16bits, Serial RGB 6/8bits, Serial YCbCr 8 bits, RGB 16 bits) + ///< When corresponding item in pinmux_init() is set with PINMUX_DISPMUX_SEL_LCD, enable CCIR_DE on LCD11 (L_GPIO[11]). + ///< When corresponding item in pinmux_init() is set with PINMUX_DISPMUX_SEL_LCD2, enable CCIR2_DE on LCD23 (L_GPIO[23]). + PINMUX_LCD_SEL_HVLD_VVLD = 0x01<<25, ///< HVLD/VVLD Enable (For CCIR-601 8 bits). Enable CCIR_HVLD/CCIR_VVLD on LCD[12..13] (L_GPIO[12..13]) + PINMUX_LCD_SEL_FIELD = 0x01<<26, ///< FIELD Enable (For CCIR-601 8 bits). Enable CCIR_FIELD on LCD14 (L_GPIO[14]) + + PINMUX_LCD_SEL_FEATURE_MSK = 0x0F<<23, + + ENUM_DUMMY4WORD(PINMUX_LCD_SEL) +} PINMUX_LCD_SEL; + +/** + Pinmux selection for Storage + + @note For PINMUX_FUNC_ID_SDIO, PINMUX_FUNC_ID_SPI, PINMUX_FUNC_ID_NAND +*/ +typedef enum +{ + PINMUX_STORAGE_SEL_INACTIVE, ///< Inactive storage + PINMUX_STORAGE_SEL_ACTIVE, ///< Active storage + PINMUX_STORAGE_SEL_INEXIST, ///< Inexist storage + PINMUX_STORAGE_SEL_EXIST, ///< Exist storage + ENUM_DUMMY4WORD(PINMUX_STORAGE_SEL) +} PINMUX_STORAGE_SEL; + +/** + Pinmux selection for sensor + + @note For PINMUX_FUNC_ID_SN_MES0, PINMUX_FUNC_ID_SN_MES1, PINMUX_FUNC_ID_SN_FLCTR +*/ +typedef enum +{ + PINMUX_SENSOR_SEL_INACTIVE, ///< Inactive + PINMUX_SENSOR_SEL_ACTIVE, ///< Active + ENUM_DUMMY4WORD(PINMUX_SENSOR_SEL) +} PINMUX_SENSOR_SEL; + +/** + Pinmux selection for sensor + + @note For PINMUX_FUNC_ID_USB_VBUSI +*/ +typedef enum +{ + PINMUX_USB_SEL_INACTIVE, ///< Inactive + PINMUX_USB_SEL_ACTIVE, ///< Active + ENUM_DUMMY4WORD(PINMUX_USB_SEL) +} PINMUX_USB_SEL; + +/** + Pinmux selection for SPI + + @note For PINMUX_FUNC_ID_SPI2, PINMUX_FUNC_ID_SPI3 +*/ +typedef enum +{ + PINMUX_SPI_SEL_INACTIVE, ///< Inactive + PINMUX_SPI_SEL_ACTIVE, ///< Active + ENUM_DUMMY4WORD(PINMUX_SPI_SEL) +} PINMUX_SPI_SEL; + +/** + Pinmux group + + @note For pinmux_init() +*/ +typedef struct +{ + PIN_FUNC pin_function; ///< PIN Function group + UINT32 config; ///< Configuration for pinFunction +} PIN_GROUP_CONFIG; + +/* + Pinmux Function identifier for driver only + + @note For pinmux_setPinmux(). +*/ +typedef enum +{ + PINMUX_FUNC_ID_SDIO = 0x8000000, ///< SDIO, pinmux can be: + ///< - @b PINMUX_STORAGE_SEL_INACTIVE + ///< - @b PINMUX_STORAGE_SEL_ACTIVE + PINMUX_FUNC_ID_SDIO2, ///< SDIO2, pinmux can be: + ///< - @b PINMUX_STORAGE_SEL_INACTIVE + ///< - @b PINMUX_STORAGE_SEL_ACTIVE + PINMUX_FUNC_ID_SDIO3, ///< SDIO3, pinmux can be: + ///< - @b PINMUX_STORAGE_SEL_INACTIVE + ///< - @b PINMUX_STORAGE_SEL_ACTIVE + PINMUX_FUNC_ID_SPI, ///< SPI, pinmux can be: + ///< - @b PINMUX_STORAGE_SEL_INACTIVE + ///< - @b PINMUX_STORAGE_SEL_ACTIVE + PINMUX_FUNC_ID_NAND, ///< NAND, pinmux can be: + ///< - @b PINMUX_STORAGE_SEL_INACTIVE + ///< - @b PINMUX_STORAGE_SEL_ACTIVE + PINMUX_FUNC_ID_BMC, ///< BMC, pinmux can be: + ///< - @b PINMUX_STORAGE_SEL_INACTIVE + ///< - @b PINMUX_STORAGE_SEL_ACTIVE + PINMUX_FUNC_ID_USB_VBUSI, ///< USB VBUSI, pinmux can be: + ///< - @b PINMUX_USB_SEL_INACTIVE + ///< - @b PINMUX_USB_SEL_ACTIVE + PINMUX_FUNC_ID_USB2_VBUSI, ///< USB2 VBUSI, pinmux can be: + ///< - @b PINMUX_USB_SEL_INACTIVE + ///< - @b PINMUX_USB_SEL_ACTIVE + PINMUX_FUNC_ID_I2C1_1ST, ///< I2C channel1 1st pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C1_2ND, ///< I2C channel1 2nd pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C2_1ST, ///< I2C channel2 1st pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C2_2ND, ///< I2C channel2 2nd pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C3_1ST, ///< I2C channel3 1st pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C3_2ND, ///< I2C channel3 2nd pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C3_3RD, ///< I2C channel3 3rd pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C4_1ST, ///< I2C channel4 1st pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C4_2ND, ///< I2C channel4 2nd pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C4_3RD, ///< I2C channel4 3rd pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C4_4TH, ///< I2C channel4 4th pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C5_1ST, ///< I2C channel5 1st pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_I2C5_2ND, ///< I2C channel5 2nd pinmux, pinmux can be: + ///< - @b PINMUX_I2C_SEL_INACTIVE + ///< - @b PINMUX_I2C_SEL_ACTIVE + PINMUX_FUNC_ID_SN_VDHD, ///< SN VD/HD, pinmux can be: + ///< - @b PINMUX_SENSOR_SEL_INACTIVE + ///< - @b PINMUX_SENSOR_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_0, ///< PWM channel 0 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_1, ///< PWM channel 1 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_2, ///< PWM channel 2 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_3, ///< PWM channel 3 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_4, ///< PWM channel 4 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_5, ///< PWM channel 5 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_6, ///< PWM channel 6 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_7, ///< PWM channel 7 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_8, ///< PWM channel 8 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_9, ///< PWM channel 9 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_10, ///< PWM channel 10 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_11, ///< PWM channel 11 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_12, ///< PWM channel 12 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_13, ///< PWM channel 13 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_14, ///< PWM channel 14 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_15, ///< PWM channel 15 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_16, ///< PWM channel 16 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_17, ///< PWM channel 17 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_18, ///< PWM channel 18 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_PWM_19, ///< PWM channel 19 + ///< - @b PINMUX_PWM_SEL_INACTIVE + ///< - @b PINMUX_PWM_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_0, ///< SIF channel 0 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_1, ///< SIF channel 1 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_2, ///< SIF channel 2 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_3, ///< SIF channel 3 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_4, ///< SIF channel 4 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_5, ///< SIF channel 5 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_6, ///< SIF channel 6 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_SIF_7, ///< SIF channel 7 + ///< - @b PINMUX_SIF_SEL_INACTIVE + ///< - @b PINMUX_SIF_SEL_ACTIVE + PINMUX_FUNC_ID_UART_1, ///< UART channel 1 + ///< - @b PINMUX_UART_SEL_INACTIVE + ///< - @b PINMUX_UART_SEL_ACTIVE + PINMUX_FUNC_ID_UART_2, ///< UART channel 2 + ///< - @b PINMUX_UART_SEL_INACTIVE + ///< - @b PINMUX_UART_SEL_ACTIVE + PINMUX_FUNC_ID_UART_3, ///< UART channel 3 + ///< - @b PINMUX_UART_SEL_INACTIVE + ///< - @b PINMUX_UART_SEL_ACTIVE + PINMUX_FUNC_ID_UART_4, ///< UART channel 4 + ///< - @b PINMUX_UART_SEL_INACTIVE + ///< - @b PINMUX_UART_SEL_ACTIVE + PINMUX_FUNC_ID_I2S, ///< I2S + ///< - @b PINMUX_I2S_SEL_INACTIVE + ///< - @b PINMUX_I2S_SEL_ACTIVE + PINMUX_FUNC_ID_I2S_MCLK, ///< I2S MCLK + ///< - @b PINMUX_I2S_SEL_INACTIVE + ///< - @b PINMUX_I2S_SEL_ACTIVE + + ENUM_DUMMY4WORD(PINMUX_FUNC_ID_DRV) +} PINMUX_FUNC_ID_DRV; + +// +// API for Top controller +// +extern void pinmux_select_debugport(PINMUX_DEBUGPORT uiDebug); +extern void pinmux_select_ocp_debugport(PINMUX_DEBUGPORT_OCP uiDebug); + +extern ER pinmux_init(PIN_GROUP_CONFIG *pConfig); +extern ER pinmux_setDispMode(PINMUX_FUNC_ID id, PINMUX_LCDINIT dispMode); +extern PINMUX_LCDINIT pinmux_getDispMode(PINMUX_FUNC_ID id); +extern ER pinmux_set_pinmux(PINMUX_FUNC_ID id, UINT32 pinmux); +extern BOOL pinmux_chkPinmux(PINMUX_FUNC_ID id, UINT32 pinmux); +//@} //addtogroup mIHALSysCfg + +#endif + diff --git a/board/novatek/ns02501/loader/Include/nvtpack/nvtpack.h b/board/novatek/ns02501/loader/Include/nvtpack/nvtpack.h new file mode 100755 index 000000000000..2a2e5c0f6d3f --- /dev/null +++ b/board/novatek/ns02501/loader/Include/nvtpack/nvtpack.h @@ -0,0 +1,193 @@ +#ifndef _NVTPACK_H +#define _NVTPACK_H + +#define NVTPACK_CHKSUM_HDR_VERSION 0x16040719U +#define NVTPACK_FW_HDR2_VERSION 0x16071515U + +typedef enum _NVTPACK_ER { + NVTPACK_ER_SUCCESS = 0, + NVTPACK_ER_FAILED = -1, + NVTPACK_ER_UNKNOWN_FORMAT = -2, + NVTPACK_ER_CHECK_SUM = -3, + NVTPACK_ER_NOT_FOUND = -4, + NVTPACK_ER_USER_BREAK = -5, + NVTPACK_ER_PARAM = -6, + NVTPACK_ER_MEM_NOT_ENOUGH = -7, + NVTPACK_ER_UITRON_SIZE_ALIGN4 = -8, ///< uITRON size must align by 4 + NVTPACK_ER_INVALID_WHOLE_SIZE = -9, ///< after nvtpack, whole size must align by 4 + NVTPACK_ER_SRC_NAME_BLANK = -10, ///< resource's SrcName cannot be NULL or blank + NVTPACK_ER_SRC_NAME_EXCEED = -11, ///< resource's SrcName cannot exceed 12 bytes + NVTPACK_ER_SRC_NAME_INVALID = -12, ///< resource's SrcName include invalid character + NVTPACK_ER_SRC_NAME_ALIKE = -13, ///< there resource's SrcName are alike. +} NVTPACK_ER; + +typedef enum _NVTPACK_VER { + NVTPACK_VER_UNKNOWN, ///< UNKNOWN + NVTPACK_VER_13012816, ///< NT9666X, NT9850X + NVTPACK_VER_16072017, ///< NT9668X +} NVTPACK_VER; + +#if !defined(_WIN32) +typedef struct _GUID { + unsigned int Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[8]; +} GUID; +#endif + +typedef struct _NVTPACK_RES_HDR { + GUID guid; ///< {B5CB64AE-05DD-46FA-B906-0C62D22958D6} + unsigned int TotalSize; + unsigned int CheckSum; + unsigned int ContentSize; + char SrcName[16]; ///< original packed bin file name + char DstName[16]; ///< target file name +} NVTPACK_RES_HDR; + +typedef struct _NVTPACK_FW_HDR { + GUID guid; ///< {8827BE90-36CD-4FC2-A987-73A8484E84B1} + unsigned int TotalSize; ///< sizeof(NVTPACK_FW_HDR) + n*sizeof(NVTPACK_PARTITION_HDR) + unsigned int CheckSum; ///< check sum of sizeof(NVTPACK_FW_HDR) + n*sizeof(NVTPACK_PARTITION_HDR) + unsigned int TotalRes; ///< total partitions +} NVTPACK_FW_HDR; + +typedef struct _NVTPACK_FW_HDR2 { + GUID guid; ///< {D6012E07-10BC-4F91-B28A-352F82261A50} + unsigned int uiVersion; ///< NVTPACK_FW_HDR2_VERSION + unsigned int uiHdrSize; ///< sizeof(NVTPACK_FW_HDR2); + unsigned int TotalRes; ///< total resource counts + unsigned int TotalSize; ///< whole bin size + unsigned int uiChkMethod; ///< 0: CheckSum + unsigned int uiChkValue; ///< check sum value or crc value within NVTPACK_FW_HDR2 + unsigned int uiUserData[4]; ///< user defined data that may be used in future + unsigned int uiReversed[18];///< align to 128 bytes +} NVTPACK_FW_HDR2; + +typedef struct _NVTPACK_PARTITION_HDR { + unsigned int Offset; + unsigned int Size; + unsigned int PartitionID; +} NVTPACK_PARTITION_HDR; + +typedef struct _NVTPACK_CHKSUM_HDR { + unsigned int uiFourCC ; ///< 'C','K','S','M' + unsigned int uiVersion; ///< NVTPACK_CHKSUM_HDR header version + unsigned int uiChkMethod; ///< 0: CheckSum + unsigned int uiChkValue; ///< check sum value or crc value within NVTPACK_CHKSUM_HDR + unsigned int uiDataOffset; ///< real data starting offset without NVTPACK_CHKSUM_HDR + unsigned int uiDataSize; ///< real data size without NVTPACK_CHKSUM_HDR + unsigned int uiPaddingSize; ///< padding bytes for check sum + unsigned int uiEmbType; ///< relate to EMBTYPE_????? + unsigned int uiReversed[8]; ///< align to 64 bytes +} NVTPACK_CHKSUM_HDR; + +typedef struct _NVTPACK_BFC_HDR { + unsigned int uiFourCC; ///< FourCC = BCL1 + unsigned int uiAlgorithm; ///< algorithm always is 9 + unsigned int uiSizeUnComp;///< big endian uncompressed size + unsigned int uiSizeComp; ///< big endian compressed size +} NVTPACK_BFC_HDR; + +typedef struct _NVTPACK_BININFO_HDR { + unsigned int CodeEntry; ///< [0x00] fw CODE entry (4) ----- r by Ld + unsigned int Resv1[19]; ///< [0x04~0x50] reserved (4*19) -- reserved, its mem value will filled by Ld + char BinInfo_1[8]; ///< [0x50~0x58] CHIP-NAME (8) ---- r by Ep + char BinInfo_2[8]; ///< [0x58~0x60] SDK version (8) + char BinInfo_3[8]; ///< [0x60~0x68] SDK release-date (8) + unsigned int BinLength; ///< [0x68] Bin File Length (4) --- w by Ep/bfc + unsigned int Checksum; ///< [0x6c] Check Sum or CRC (4) ----- w by Ep/Epcrc + unsigned int CRCLenCheck; ///< [0x70~0x74] Length check for CRC (4) ----- w by Epcrc (total len ^ 0xAA55) + unsigned int Resv2; ///< [0x74~0x78] reserved (4) --- reserved for other bin tools + unsigned int BinCtrl; ///< [0x78~0x7C] Bin flag (4) --- w by bfc + ///< BIT 0.compressed enable (w by bfc) + unsigned int CRCBinaryTag; ///< [0x7C~0x80] Binary Tag for CRC (4) ----- w by Epcrc (0xAA55 + "NT") +} NVTPACK_BININFO_HDR; + +typedef struct _NVTPACK_MEM { + void *p_data; + unsigned int len; +} NVTPACK_MEM; + +typedef struct _NVTPACK_VERIFY_OUTPUT { + NVTPACK_VER ver; ///< indicate package type + unsigned int partition_cnt; ///< total partition counts +} NVTPACK_VERIFY_OUTPUT; + +typedef struct _NVTPACK_GET_PARTITION_INPUT { + unsigned int id; + NVTPACK_MEM mem; +} NVTPACK_GET_PARTITION_INPUT; + +typedef struct _NVTPACK_GET_RESOURCE_INPUT { + const char *filename; + NVTPACK_MEM mem; +} NVTPACK_GET_RESOURCE_INPUT; + +typedef struct _NVTPACK_ENUM_PARTITION_INPUT { + NVTPACK_MEM mem; + void *p_user_data; ///< [Optional] e.g. if use c class, you can pass that class point to your static callback. + int (*fp_enum)(unsigned int id, NVTPACK_MEM *p_mem, void *p_user_data); +} NVTPACK_ENUM_PARTITION_INPUT; + +typedef struct _NVTPACK_ENUM_RESOURCE_INPUT { + NVTPACK_MEM mem; + void *p_user_data; ///< [Optional] e.g. if use c class, you can pass that class point to your static callback. + int (*fp_enum)(NVTPACK_RES_HDR *p_hdr, NVTPACK_MEM *p_mem, void *p_user_data); +} NVTPACK_ENUM_RESOURCE_INPUT; + +typedef struct _NVTPACK_PARTITION_ITEM { + unsigned int id; + NVTPACK_MEM mem; +} NVTPACK_PARTITION_ITEM; + +typedef struct _NVTPACK_MAKE_PARTITION_INPUT { + NVTPACK_VER ver; ///< package version + NVTPACK_PARTITION_ITEM *p_list; ///< data list + int num; ///< data counts + NVTPACK_MEM mem_work; ///< working buffer +} NVTPACK_MAKE_PARTITION_INPUT; + +typedef struct _NVTPACK_RESOURCE_ITEM { + char SrcName[16]; ///< original name + char DstName[16]; ///< target file name + NVTPACK_MEM mem; +} NVTPACK_RESOURCE_ITEM; + +typedef struct _NVTPACK_MAKE_RESOURCE_INPUT { + NVTPACK_RESOURCE_ITEM *p_list; + int num; + NVTPACK_MEM mem_work; +} NVTPACK_MAKE_RESOURCE_INPUT; + +#ifndef IsEqualGUID +#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID))) +#endif + +#ifndef MAKEFOURCC +#define MAKEFOURCC(ch0, ch1, ch2, ch3) ((unsigned int)(unsigned char)(ch0) | ((unsigned int)(unsigned char)(ch1) << 8) | ((unsigned int)(unsigned char)(ch2) << 16) | ((unsigned int)(unsigned char)(ch3) << 24 )) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +extern unsigned int nvtpack_calc_nvt_sum(NVTPACK_MEM *p_mem); +extern NVTPACK_ER nvtpack_getver(NVTPACK_MEM *p_mem, NVTPACK_VER *p_ver); +extern NVTPACK_ER nvtpack_verify(NVTPACK_MEM *p_mem, NVTPACK_VERIFY_OUTPUT *p_output); +extern NVTPACK_ER nvtpack_get_partition(NVTPACK_GET_PARTITION_INPUT *p_input, NVTPACK_MEM *p_out); +extern NVTPACK_ER nvtpack_enum_partition(NVTPACK_ENUM_PARTITION_INPUT *p_input); +//NVTPACK_VER_13012816: need sizeof(NVTPACK_FW_HDR) +n*(sizeof(NVTPACK_PARTITION_HDR) + 4) + whole_data_size +//NVTPACK_VER_16072017: need sizeof(NVTPACK_FW_HDR2) +n*(sizeof(NVTPACK_PARTITION_HDR) + 4) + whole_data_size +extern NVTPACK_ER nvtpack_make_parition_pkg(NVTPACK_MAKE_PARTITION_INPUT *p_input, NVTPACK_MEM *p_out); + +extern NVTPACK_ER nvtpack_get_resource(NVTPACK_GET_RESOURCE_INPUT *p_input, NVTPACK_MEM *p_out); +extern NVTPACK_ER nvtpack_enum_resource(NVTPACK_ENUM_RESOURCE_INPUT *p_input); +//buf need n*(sizeof(NVTPACK_RES_HDR)+32)+ whole_data_size +extern NVTPACK_ER nvtpack_make_resource_pkg(NVTPACK_MAKE_RESOURCE_INPUT *p_input, NVTPACK_MEM *p_out); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/board/novatek/ns02501/loader/Include/rcw_macro.h b/board/novatek/ns02501/loader/Include/rcw_macro.h new file mode 100755 index 000000000000..0ca5093c5d97 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/rcw_macro.h @@ -0,0 +1,160 @@ +/* + Driver Register Cache Word (RCW) operation header file. + + Driver Register Cache Word (RCW) operation header file. + The macros defined in this header file is used to simply the register + bit field read and write. By adapting this way of register access, + it shall provide more error-proof and more readable way to write + drivers. It also does register access in load/store way which allow + one to accurately control the number of counts the register read and + write is proceeded from code writing. + + @file RCWMacro.h + @ingroup mIDriver + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2010. All rights reserved. +*/ + +#ifndef __ASM_ARCH_NVT_IVOT_RCW_MACRO_H +#define __ASM_ARCH_NVT_IVOT_RCW_MACRO_H +#if defined(__FREERTOS) +#include <stdint.h> +#elif defined(__KERNEL__) +#include <linux/types.h> +#endif +/** + @addtogroup mIDriver +*/ +//@{ + +// +// Register word value type +// +// The size in bits of this type should match the RCW type +#define REGVALUE unsigned int //uint32_t + +#define UBITFIELD unsigned int /* Unsigned bit field */ +#define BITFIELD signed int /* Signed bit field */ + + +#define FALSE 0 +#define TRUE 1 + +/** + @name Assert macros +*/ +//@{ +#define ASSERT_CONCAT_(a, b) a##b +#define ASSERT_CONCAT(a, b) ASSERT_CONCAT_(a, b) + +#if defined(__COUNTER__) + +#define STATIC_ASSERT(expr) \ +enum { ASSERT_CONCAT(FAILED_STATIC_ASSERT_, __COUNTER__) = 1/(expr) } + +#else + +// This might cause compile error when writing STATIC_ASSERT at the same line +// in two (or more) files and one file include another one. +#define STATIC_ASSERT(expr) \ +enum { ASSERT_CONCAT(FAILED_STATIC_ASSERT_, __LINE__) = 1/(expr) } + +#endif + +#define OUTW(addr,value) (*(REGVALUE volatile *)(addr) = (REGVALUE)(value)) +#define INW(addr) (*(REGVALUE volatile *)(addr)) + + +// +// Macros for Register Cache Word (RCW) type definition +// +// Each RCW type should be exactly the same size with REGVALUE type +// For example, to declare a Register Cache Word type: +// +// #define rcwname_OFS 0x00 /* the name of RCW corresponding register address offset +// should be in specific format with "_OFS" appended */ +// REGDEF_BEGIN(rcwname) +// REGDEF_BIT(field1, 8) /* declare field1 as 8 bits width */ +// REGDEF_BIT(field2, 8) /* declare field1 as 8 bits width */ +// REGDEF_BIT(, 16) /* pad reserved (not-used) bits to fill RCW type same as REGVALUE size */ +// REGDEF_END(rcwname) +// +// Register Cache Word type defintion header +#define REGDEF_BEGIN(name) \ +typedef union \ +{ \ + REGVALUE reg; \ + struct \ + { + +// Register Cache Word bit defintion +#define REGDEF_BIT(field, bits) \ + UBITFIELD field : bits; + +// Register Cache Word type defintion trailer +#define REGDEF_END(name) \ + } bit; \ +} T_##name; \ +STATIC_ASSERT(sizeof(T_##name) == sizeof(REGVALUE)); + +// Macro to define register offset +#define REGDEF_OFFSET(name, ofs) static const uint32_t name##_OFS=(ofs); + +// +// Macros for prerequisite stuff initialization for Register Cache Word +// operations +// +// Macro to set register base address for current module +// One must call this macro somewhere to set register I/O base address for +// current module, either globally or locally before any RCW operations is +// invoked +// What this macro set is only effective in current C file +#define REGDEF_SETIOBASE(base) static const uint32_t _REGIOBASE=(base) + +// Macro to set register repeat group offset address in byte +// This macro is optional and only used where register with repeat group exist, +// only one repeat group is allowed in one file +// If registers with repeat group exist, then one only have to define the RCW type +// for the first group, respective group of registers can be accessed through +// RCW_LD2, RCW_ST2, RCW_LD2OF macros +// What this macro set is only effective in current C file +#define REGDEF_SETGRPOFS(grpofs) static const uint32_t _REGGRPOFS=(grpofs) + +// +// Macros for Register Cache Word (RCW) operations +// +// These RCW operations are most likely to be used inside C functions +// It is not recommended to use RCW_DEF(RCW) in global scope which +// declare RCW as global variable +// RCW_LD/RCW_ST/RCW_LDOF pair is for normal single register access while +// RCW_LD2/RCW_ST2/RCW_LD2OF pair is for repeat group register access +// Beware that the RCW_LD/RCW_ST/RCW_LDOF and RCW_LD2/RCW_ST2/RCW_LD2OF +// must not be mixed used. e.g. use RCW_LD then RCW_ST2 or use RCW_LD2 then RCW_ST +// +// Register Cache Word declaration +#define RCW_DEF(RCW) T##_##RCW t##RCW +// Register Cache Word read from I/O +#define RCW_LD(RCW) t##RCW.reg = INW(_REGIOBASE+RCW##_OFS) +// Register Cache Word repeat from I/O for group read +#define RCW_LD2(RCW, grpidx) t##RCW.reg = INW(_REGIOBASE+RCW##_OFS+(grpidx)*_REGGRPOFS) +// Register Cache Word bit reference +#define RCW_OF(RCW) t##RCW.bit +// Register Cache Word reference +#define RCW_VAL(RCW) t##RCW.reg +// Register Cache Word write to I/O +#define RCW_ST(RCW) OUTW(_REGIOBASE+RCW##_OFS, t##RCW.reg) +// Register Cache Word write to I/O for repeat group +#define RCW_ST2(RCW, grpidx) OUTW(_REGIOBASE+RCW##_OFS+(grpidx)*_REGGRPOFS, t##RCW.reg) +// Register Cache Word read and reference to register cache word bit +// !!!need to check for compiler if support for this syntax +#define RCW_LDOF(RCW) ((T##_##RCW)(RCW_LD(RCW))).bit +// Register Cache Word read and reference to register cache word bit for repeat group +// !!!need to check for compiler if support for this syntax +#define RCW_LD2OF(RCW, grpidx) ((T##_##RCW)(RCW_LD2(RCW, grpidx))).bit + +#define rcw_get_phy_addr(addr) ((addr) & 0x1FFFFFFF) + +//@} + +#endif /* __ASM_ARCH_NVT_IVOT_RCW_MACRO_H */ diff --git a/board/novatek/ns02501/loader/Include/rtc.h b/board/novatek/ns02501/loader/Include/rtc.h new file mode 100755 index 000000000000..692340765cea --- /dev/null +++ b/board/novatek/ns02501/loader/Include/rtc.h @@ -0,0 +1,76 @@ +/** + Header file for RTC module. + + This file is the header file that define the API and data type + for RTC module. + + @file rtc.h + @ingroup mIHALRTC + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef __RTC_H +#define __RTC_H +#include "IOReg.h" + +/** + @addtogroup mIHALRTC +*/ +//@{ + +/** + @name RTC power on source + + RTC power on source + + @note For rtc_getPWRONSource() +*/ +//@{ +#if 0 // 567 Not support PWBC +#define RTC_PWR_SW_STS 0x00000100 ///< Power on from switch +#define RTC_PWR_SW2_STS 0x00000200 ///< power on from power switch 2 +#define RTC_PWR_SW3_STS 0x00000400 ///< power on from power switch 3 (Usually for USB VBUS, depend on project) +#define RTC_PWR_VBUS_STS (RTC_PWR_SW3_STS) ///< power on from VBUS (identical to RTC_PWR_SW3_STS) +#define RTC_PWR_SW4_STS 0x00000800 ///< power on from power switch 4 (Usually for VBAT, depend on project) +#define RTC_PWR_VBAT_STS (RTC_PWR_SW4_STS) ///< power on from VBAT (identical to RTC_PWR_SW4_STS) +#define RTC_PWR_ALARM_STS 0x00010000 ///< Power on from PWR ALARM + +//@} + +extern void rtc_resetShutDownTimer(void); +extern void rtc_poweroffPWR(void); +extern UINT32 rtc_getPWRONSource(void); +extern UINT32 rtc_chkS3boot_init(void) __attribute__ ((section (".part1"))); +extern void rtc_chkS3boot_wait_init(void) __attribute__ ((section (".part1"))); +extern UINT32 rtc_chkS3boot(void) __attribute__ ((section (".part1"))); +#endif + +struct rtc_time { + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; +}; + + + +extern void rtc_trigger_cset(void); +extern int rtc_get_time(struct rtc_time *tm); +extern int rtc_set_time(struct rtc_time *tm); +extern int rtc_set_alarm_en(UINT32 alarm_en ); +extern int rtc_get_alarm_time(struct rtc_time *tm); +extern int rtc_set_alarm_time(struct rtc_time *tm); +extern void nvt_rtc_add_one_sec(struct rtc_time *tm, UINT32 add_sec ); +extern void rtc_open(void); + + +//@} +#endif // __RTC_H + diff --git a/board/novatek/ns02501/loader/Include/scsi_op.h b/board/novatek/ns02501/loader/Include/scsi_op.h new file mode 100755 index 000000000000..bda03aa4f419 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/scsi_op.h @@ -0,0 +1,205 @@ +#ifndef _SCSI_OP_H +#define _SCSI_OP_H + +/** +Only Support MSDC Vendor command code 0xF0/0xE0/0xC0. +Others vendor code would STALL OUT EP. Sense data would return illegal request sense code. +*/ +#define SCSI_OP_SET0 0xF0 +#define SCSI_OP_SET1 0xE0 +#define SCSI_OP_SET2 0xC0 + + +/////////////////////////////////////////////////////////////////////////////// +// Uart's return status: CDB[13] +// Uart's extra data len: CDB[6] ~ CDB[9] except SCSIOP_OUT_ADDR_WRITE +// Checksum rule: The CDB[0] ~ CDB[15]'s sum LSB 8bits shall be 0x00 +// Checksum is fixed CDB[14] ~ CDB[15] +// When Checksum failed. CSW Status 0x1 means command failed. +/////////////////////////////////////////////////////////////////////////////// +#define IDX_CDB_UART_DATA_LEN_LWLB 6 ///< uart's data len low word low byte +#define IDX_CDB_UART_DATA_LEN_LWHB 7 ///< uart's data len low word high byte +#define IDX_CDB_UART_DATA_LEN_HWLB 8 ///< uart's data len high word low byte +#define IDX_CDB_UART_DATA_LEN_HWHB 9 ///< uart's data len high word low byte +#define IDX_CDB_UART_STATUS_ER 13 ///< uart's csw status +#define IDX_CDB_CHKSUM_LB 14 ///< check sum low bytes +#define IDX_CDB_CHKSUM_HB 15 ///< check sum high bytes + +/////////////////////////////////////////////////////////////////////////////// +// SCSI CBW +/////////////////////////////////////////////////////////////////////////////// +typedef struct _NVT_SCSI_CBW { + unsigned int dCBWSignature; + unsigned int dCBWTag; + unsigned int dCBWDataTransferLength; + unsigned char bmCBWFlags; + unsigned char bCBWLUN; + unsigned char bCBWCBLength; + unsigned char CBWCB[16]; +} NVT_SCSI_CBW; + +/** +Open NVT Device + +The commands except SCSIOP_IN_IS_NVT can be run if open device success. +If not open first, the operation commands got CSW Status 0x1 means command failed. + +@DATA_PHASE: None. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define SCSIOP_OUT_OPEN_DEVICE 0x01 + + +/** +Send Write Loader + +The Write Address @ CDB[2]~[5]; +For example address 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE +MSDC: CDB[6]~[15] shall follow checksum rule. Content is dont care. +UART: CDB[6]~[9] is data size (because uart has no CBW to tell transmitting size) + +@DATA_PHASE: None. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define SCSIOP_OUT_WRLOADER 0x02 + +/** +Address WRITE WORD (DRAM/REG/SRAM dont care) + +The Write Address @ CDB[2]~[5]; +For example address 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE +The Write DATA @ CDB[6]~[9]. +For example address 0x12345678 shall fill CDB[6]=0x78 CDB[7]=0x56 CDB[8]=0x34 CDB[9]=0x12 +CDB[10]~[15] shall follow checksum rule. Content is dont care. + +@DATA_PHASE: None. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define SCSIOP_OUT_ADDR_WRITE 0x03 + +/** +Write Memory + +The Write Starting Address @ CDB[2]~[5]; +For example offset 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE +MSDC: CDB[6]~[15] shall follow checksum rule. Content is dont care. +UART: CDB[6]~[9] is data size (because uart has no CBW to tell transmitting size) + +@DATA_PHASE: None. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define SCSIOP_OUT_MEM_WRITE 0x04 + +/** +Read / Write flash + +send SCSIOP_FLASH_OP to loader +MSDC: CDB[6]~[15] shall follow checksum rule. Content is dont care. except CDB[10] +UART: CDB[6]~[9] is SCSIOP_FLASH_OP size (because uart has no CBW to tell transmitting size) + +@DATA_PHASE: None. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define FLASH_ACCESS_TYPE_AUTO 0 +#define FLASH_ACCESS_TYPE_NAND 1 +#define FLASH_ACCESS_TYPE_NOR 2 +#define FLASH_ACCESS_TYPE_EMMC 3 +typedef struct _SCSIOP_FLASH_OP { + unsigned int type; //FLASH_ACCESS_TYPE + unsigned int is_write; //indicate write + unsigned long long offset; //flash r/w offset + unsigned long long size; //flash r/w size + unsigned long long partition_size; //flash partition size +} SCSIOP_FLASH_OP; +#define SCSIOP_OUT_FLASH_ACCESS 0x05 + + +/** +Ask if NVT Device + +No need to SCSIOP_IN_OPEN_DEVICE +CDB[2]~[15] shall follow checksum rule + +@DATA_PHASE: IN 4 bytes return; The value 0x81200000 woule be return for 98321. <8321 = 0x2081> If checksum fail, the 0x0 would be returned. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. + +*/ +#define SCSIOP_IN_IS_NVT 0x81 + + +/** +End USB ROM CODE. + +Exit USB ROM code after receiving this command. The checksum must be correct. +After SCSIOP_IN_WRLOADER is invoked, PC invoked this to confirm write loader is ok. + +CDB[2]~[15] shall follow checksum rule + +@DATA_PHASE: None. +@CSW_PHASE status code: 0 is success and end usb rom. 0x1 means checksum failed. +*/ +#define SCSIOP_IN_WAIT_DONE 0x82 + + +/** +Address READ WORD (DRAM/REG/SRAM dont care) + +The READ Address @ CDB[2]~[5]; +For example address 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE +CDB[6]~[15] shall follow checksum rule. Content is dont care. + +@DATA_PHASE: IN 8 bytes return. DATA[0]~[3] is repeat CDB address. Read out DATA is [4] ~[7]. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define SCSIOP_IN_ADDR_READ 0x83 + + +/** +The Read Starting Address @ CDB[2]~[5]; +For example address 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE +CDB[6]~[9] is read data size +CDB[10]~[15] shall follow checksum rule. Content is dont care. + +@DATA_PHASE: IN 8 bytes return. DATA[0]~[3] is repeat CDB address. Read out DATA is [3] ~[7]. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. + +*/ +#define SCSIOP_IN_MEM_READ 0x84 + + +/** +Get Temp Buffer Address + +MSDC: CDB[6]~[15] shall follow checksum rule. Content is dont care. +UART: CDB[6]~[9] is data size (because uart has no CBW to tell transmitting size) + +@DATA_PHASE: Read out DATA is [3] ~[7]. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define SCSIOP_IN_GET_TMP_ADDR 0x85 + +/** +Notify fdt has send + +The fdt has sent into loader's temp buffer. notify loader to check its sanity. +CDB[2]~[5] is status result in word. +MSDC: CDB[6]~[15] shall follow checksum rule. Content is dont care. +UART: CDB[6]~[9] is data size (because uart has no CBW to tell transmitting size) + +@DATA_PHASE: None. +@CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define SCSIOP_IN_FDT 0x86 + + +/** +Notify uboot or nvtpack has send + +The uboot or nvtpack has sent into loader's temp buffer. notify loader to check its sanity. +CDB[2]~[5] is status result in word. +MSDC: CDB[6]~[15] shall follow checksum rule. Content is dont care. +UART: CDB[6]~[9] is data size (because uart has no CBW to tell transmitting size) +*/ +#define SCSIOP_IN_UBOOT 0x87 + +#endif \ No newline at end of file diff --git a/board/novatek/ns02501/loader/Include/signal.h b/board/novatek/ns02501/loader/Include/signal.h new file mode 100755 index 000000000000..3ece9caed166 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/signal.h @@ -0,0 +1,4 @@ +#ifndef _NVT_LIBC_SIGNAL_H__ +#define _NVT_LIBC_SIGNAL_H__ +int raise(int sig); +#endif diff --git a/board/novatek/ns02501/loader/Include/stdarg.h b/board/novatek/ns02501/loader/Include/stdarg.h new file mode 100755 index 000000000000..13c2717bc1bf --- /dev/null +++ b/board/novatek/ns02501/loader/Include/stdarg.h @@ -0,0 +1,19 @@ +#ifndef __NVT_STDARG_H__ +#define __NVT_STDARG_H__ + +typedef char *va_list; + +/* + * Storage alignment properties + */ +#define _AUPBND (sizeof (int) - 1) +#define _ADNBND (sizeof (int) - 1) + +/* + * Variable argument list macro definitions + */ +#define _bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) +#define va_arg(ap, T) (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND)))) +#define va_end(ap) (void) 0 +#define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND)))) +#endif diff --git a/board/novatek/ns02501/loader/Include/stdio.h b/board/novatek/ns02501/loader/Include/stdio.h new file mode 100755 index 000000000000..f0bd3cd3dd17 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/stdio.h @@ -0,0 +1,24 @@ +/** + STDIO header + + STDIO header + + @file stdio.h + @ingroup mISYSClib + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef __NVT_STDIO_H__ +#define __NVT_STDIO_H__ + +/** \addtogroup mISYSClib */ +//@{ + +int sprintf(char * buf, const char *fmt, ...); +int snprintf(char * buf, int n, const char *fmt, ...); +int sscanf(const char * buf, const char * fmt, ...); + +//@} +#endif diff --git a/board/novatek/ns02501/loader/Include/stdlib.h b/board/novatek/ns02501/loader/Include/stdlib.h new file mode 100755 index 000000000000..f649e19676be --- /dev/null +++ b/board/novatek/ns02501/loader/Include/stdlib.h @@ -0,0 +1,4 @@ +#ifndef __NVT_LIBC_STDLIB_H__ +#define __NVT_LIBC_STDLIB_H__ +int atoi(const char *nptr); +#endif diff --git a/board/novatek/ns02501/loader/Include/string.h b/board/novatek/ns02501/loader/Include/string.h new file mode 100755 index 000000000000..640789ef7419 --- /dev/null +++ b/board/novatek/ns02501/loader/Include/string.h @@ -0,0 +1,47 @@ +/** + string header + + string header + + @file string.h + @ingroup mISYSClib + @note Nothing + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef __NVT_LIBC_STRING_H__ +#define __NVT_LIBC_STRING_H__ + +/** \addtogroup mISYSClib */ +//@{ + +/** + size_t data type + + data type to store value return by sizeof keyword +*/ +typedef unsigned int size_t; + +extern size_t strlen(const char *s); +extern size_t strnlen(const char *s, size_t count); +extern char *strncpy(char *dest, const char *src, size_t count); +extern char *strncat(char *dest, const char *src, size_t count); +extern char *strstr(const char *s1, const char *s2); +extern int strncmp(const char *cs, const char *ct, size_t count); +extern char *strrchr(const char *s, int c); +extern char *strcpy(char *dest, const char *src); +extern char *strcat(char *dest, const char *src); +extern char *strchr(const char *s, int c); +extern char* strtok(char *s, const char *delim); +extern int strcmp(const char *cs, const char *ct); + +extern void *utl_memset(void *s, int c, size_t count); +extern void *utl_memcpy(void *dest, const void *src, size_t count); +extern int memcmp(const void *cs, const void *ct, size_t count); +extern void *memmove(void *dest, const void *src, size_t count); +extern void *memchr(const void *ptr, int value, size_t count); +//@} + +#endif + diff --git a/board/novatek/ns02501/loader/Include/timer.h b/board/novatek/ns02501/loader/Include/timer.h new file mode 100755 index 000000000000..b683a65460ea --- /dev/null +++ b/board/novatek/ns02501/loader/Include/timer.h @@ -0,0 +1,31 @@ +/** + Public header file for timer module. + + This file is the header file that define the API and data type for timer + module. + + @file timer.h + @ingroup mIHALTimer + @note Nothing. + + Copyright Novatek Microelectronics Corp. 2012. All rights reserved. +*/ + +#ifndef _TIMER_H +#define _TIMER_H + +#include "IOReg.h" + +/** + @addtogroup mIHALTimer +*/ +//@{ + +extern UINT32 timer_getLdrElapse(void); +extern void timer_delay(UINT32 US); +#define timer_getLdrElapse() INREG32(0xF0040108) +#define timer_getSysTick() INREG32(0xF0040108) +//extern UINT32 timer_getSysTick(void) __attribute__ ((section (".part1"))); + //@} + +#endif diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile new file mode 100755 index 000000000000..eaf37f12cdcd --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile @@ -0,0 +1,80 @@ +#---------------------------------------------------------------------- +# include make config file +#---------------------------------------------------------------------- +include ../../../Project/Model/ModelConfig.txt +include ../../../Project/Model/ModelConfig_$(MODEL).txt +include ../../../Project/Model/MakeConfig.txt + +#---------------------------------------------------------------------- +# set the library name here +#---------------------------------------------------------------------- +PRJ_NAME = Ctrl_Flow + + +#---------------------------------------------------------------------- +# add/delete source files here +#---------------------------------------------------------------------- +SRC = \ + main.c \ + nand_ids.c \ + spi_nor_ids.c \ + time_util.c \ + bl_u2.c\ + bl_lowlevel_init.c \ + bl_func.c \ + bl_linux.c \ + arch_timer.c \ + +ASM = + +#---------------------------------------------------------------------- +# set the include directory here +#---------------------------------------------------------------------- +INC_DIR = . \ + ../../../Include + +#---------------------------------------------------------------------- +# set the image output directory here +#---------------------------------------------------------------------- +IMG_BASE_DIR = ../../../ARC/Lib + +#---------------------------------------------------------------------- +# add additional C and assembly flags here +#---------------------------------------------------------------------- +CFLAGS_D = -O2 +ASMFLAGS_D = + +CFLAGS_R = -O2 +ASMFLAGS_R = + +C_DEFINE_EXT = \ + $(EXTSTRG_PARAM) \ + $(SECURE_DECRYPT_UBOOT_PARAM) \ + $(SECURE_DECRYPT_OPTEE_PARAM) \ + $(OPTEE_UBOOT_SIGNATURE_PARAM) \ + $(SECURE_DECRYPT_RTOS_PARAM) \ + $(SECURE_DECRYPT_FDT_PARAM) \ + $(SECURE_DECRYPT_KERNEL_PARAM) \ + $(BL_STORAGEINT_PARAM) \ + $(SENSOR_PARAM) \ + $(NOR_DTR_PARAM) \ + $(FASTBOOT_PARAM) \ + $(Low_Pwr_PARAM) \ + $(DDR_SIZE_ALL_IN_ON_PARAM) \ + $(SPIPINMUX_PARAM) \ + $(EMMCPINMUX_PARAM) \ + $(DIRECT_BOOT_PARAM) \ + +# Flash Frequency provided externally (make parameter) +ifneq ($(FLASH_FREQ_MHZ),) +$(info Flash Frequency: $(shell echo -e "\033[1;33m$(FLASH_FREQ_MHZ) MHz\033[0m")) +C_DEFINE_EXT += -D_FLASH_FREQ_MHZ_=$(FLASH_FREQ_MHZ) +endif + +CFLAGS_R = $(C_DEFINE_EXT) + +#---------------------------------------------------------------------- +# include common parts of the makefile +#---------------------------------------------------------------------- +MAKE_COMMON_DIR = ../../../MakeCommon +include $(MAKE_COMMON_DIR)/OutputLib.txt diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/arch_timer.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/arch_timer.c new file mode 100755 index 000000000000..0c679d600a10 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/arch_timer.c @@ -0,0 +1,110 @@ +#include "bl_func.h" +#include "arch_timer.h" + + +#define _THUMB2 __attribute__((target("thumb2"))) +#define isb() asm volatile("isb" : : : "memory") + +#if (BOOT_LINUX_SUPPORT) + +_THUMB2 unsigned int read_cntfrq(void) +{ + unsigned int freq; + asm volatile("mrc p15, 0, %0, c14, c0, 0" : "=r"(freq)); + return freq; +} + +_THUMB2 void write_cntfrq(unsigned int freq) +{ + asm volatile("mcr p15, 0, %0, c14, c0, 0" : : "r"(freq)); + return; +} + +_THUMB2 unsigned int read_cntkctl(void) +{ + unsigned int cntkctl; + asm volatile("mrc p15, 0, %0, c14, c1, 0" : "=r"(cntkctl)); + return cntkctl; +} + +_THUMB2 void write_cntkctl(unsigned int cntkctl) +{ + asm volatile("mcr p15, 0, %0, c14, c1, 0" : : "r"(cntkctl)); + isb(); +} + +_THUMB2 unsigned long long read_cntvct(void) +{ + unsigned long long cval; + unsigned int cval_high; + unsigned int cval_low; + + asm volatile("mrrc p15, 3, %0, %1, c14" : "=r"(cval_low), "=r"(cval_high)); + + cval = cval_high; + cval <<= 32; + cval |= cval_low; + + return cval; +} + +_THUMB2 void write_cntv_cval(unsigned long long cval) +{ + unsigned int cval_high = (unsigned int)((cval) >> 32); + unsigned int cval_low = (unsigned int)((cval) & -1); + + asm volatile("mcrr p15, 3, %0, %1, c14" : : "r"(cval_low), "r"(cval_high)); +} + +_THUMB2 unsigned int read_cntv_ctl(void) +{ + unsigned int ctl; + + asm volatile("mrc p15, 0, %0, c14, c3, 1" : "=r"(ctl)); + + return ctl; +} + +_THUMB2 void write_cntv_ctl(unsigned int ctl) +{ + asm volatile("mcr p15, 0, %0, c14, c3, 1" : : "r"(ctl)); +} + +_THUMB2 unsigned long long read_cntpct(void) +{ + unsigned long long cval; + unsigned int cval_high; + unsigned int cval_low; + + asm volatile("mrrc p15, 0, %0, %1, c14" : "=r"(cval_low), "=r"(cval_high)); + + cval = cval_high; + cval <<= 32; + cval |= cval_low; + + return cval; +} + +_THUMB2 void write_cntp_cval(unsigned long long cval) +{ + unsigned int cval_high = (unsigned int)((cval) >> 32); + unsigned int cval_low = (unsigned int)((cval) & -1); + + asm volatile("mcrr p15, 2, %0, %1, c14" : : "r"(cval_low), "r"(cval_high)); +} + +_THUMB2 unsigned int read_cntp_ctl(void) +{ + unsigned int ctl; + + asm volatile("mrc p15, 0, %0, c14, c2, 1" : "=r"(ctl)); + + return ctl; +} + +_THUMB2 void write_cntp_ctl(unsigned int ctl) +{ + asm volatile("mcr p15, 0, %0, c14, c2, 1" : : "r"(ctl)); +} + +#endif // (BOOT_LINUX_SUPPORT) \ No newline at end of file diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/arch_timer.h b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/arch_timer.h new file mode 100755 index 000000000000..6e2b7c12e500 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/arch_timer.h @@ -0,0 +1,77 @@ +#ifndef _ARCH_TIMER_H +#define _ARCH_TIMER_H + +#if defined(__aarch64__) +#define configTIMER_NUMBER 26 +#else +#define configTIMER_NUMBER 29 +#endif + +/** + * arch timer, refre to RTOS + */ +#define configCPU_CLOCK_HZ 12000000 /* for arm32 reference */ +#define configTICK_RATE_HZ 1000 +#define SYSCNT_READ_BASE (0xFFE50000) +#define SYSCNT_CTRL_BASE (0xFFE60000) + +#define CNTCR_OFF 0x000 +#define CNTSR_OFF 0x004 +#define CNTCVL_OFF 0x008 +#define CNTCVU_OFF 0x00c +#define CNTFID_OFF 0x020 + +#define CNTCR_EN (1 << 0) /* Enables the counter */ +#define CNTCR_HDBG (1 << 1) /* Halt-on-debug */ +#define CNTCR_FCREQ(x) ((x) << 8) /* Frequency change request */ + +#define CNTP_CTL_ENABLE_SHIFT 0 +#define CNTP_CTL_IMASK_SHIFT 1 +#define CNTP_CTL_ISTATUS_SHIFT 2 +#define CNTP_CTL_ENABLE_MASK 1 +#define CNTP_CTL_IMASK_MASK 1 +#define CNTP_CTL_ISTATUS_MASK 1 + +#define CNTK_CTL_ACCESS_FROM_EL0 (1<<0) + +#if (configTIMER_NUMBER == 27) /* Virtual timer */ +#define READ_CNTxCT(m) read_cntvct() +#define WRITE_CNTx_CVAL(m) write_cntv_cval(m) +#define READ_CNTx_CTL() read_cntv_ctl() +#define WRITE_CNTx_CTL(m) write_cntv_ctl(m) +#elif(configTIMER_NUMBER == 29 || configTIMER_NUMBER == 30) /* Non sec timer */ +#define READ_CNTxCT(m) read_cntpct() +#define WRITE_CNTx_CVAL(m) write_cntp_cval(m) +#define READ_CNTx_CTL() read_cntp_ctl() +#define WRITE_CNTx_CTL(m) write_cntp_ctl(m) +#elif(configTIMER_NUMBER == 26) /* Non-secure EL2 physical timer */ +#define READ_CNTxCT(m) read_cntpct() +#define WRITE_CNTx_CVAL(m) write_cnthp_cval(m) +#define READ_CNTx_CTL() read_cnthp_ctl() +#define WRITE_CNTx_CTL(m) write_cnthp_ctl(m) +#endif + +unsigned int read_cntfrq(void); +void write_cntfrq(unsigned int freq); +unsigned int read_cntkctl(void); +void write_cntkctl(unsigned int cntkctl); + +//arm virtual timer +unsigned long long read_cntvct(void); +void write_cntv_cval(unsigned long long cval); +unsigned int read_cntv_ctl(void); +void write_cntv_ctl(unsigned int ctl); + +//arm physical timer +unsigned long long read_cntpct(void); +void write_cntp_cval(unsigned long long cval); +unsigned int read_cntp_ctl(void); +void write_cntp_ctl(unsigned int ctl); + +//arm el2 physical timer +unsigned int read_cnthctl(void); +void write_cnthctl(unsigned int cnthctl); +void write_cnthp_cval(unsigned long long cval); +unsigned int read_cnthp_ctl(void); +void write_cnthp_ctl(unsigned int ctl); +#endif \ No newline at end of file diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c new file mode 100755 index 000000000000..805d08b9033b --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -0,0 +1,3578 @@ +/* + Main control function + + This file is implement by user mode + + @file bl_func.c + + Copyright Novatek Microelectronics Corp. 2014. All rights reserved. +*/ + +#include "fuart.h" +#include "fat.h" +#include "rtc.h" +#include "timer.h" +#include "StorageDef.h" +#include "global.h" +#include "Clock.h" +#include "bl_func.h" +#include "Cache.h" +#include "string.h" +#include "lz.h" +#include "debug.h" +#include "CC.h" +#include "loader.h" +#include "nvtpack.h" +#include "dram_partition_info.h" +#include "emb_partition_info.h" +#include "modelext_parser.h" +#include "bin_info.h" +#include "shm_info.h" +#include "gic.h" +#include "libfdt.h" +#include <stdlib.h> +#include "bl_u2.h" +#include "crypto.h" +#include "nand.h" +#include "nor.h" +#include "bl_lowlevel_init.h" +#include "at80c51.h" +#include "bl_linux.h" + + +#if (MULTI_CODE_FLOW) +//weak function mechanism to enable ddr config on core[1] +extern void multi_core_flow(void); +void multi_core_flow(void) {} +#endif + +PSTORAGE_OBJ int_strg_obj = NULL; + +#define FW_PART1_SIZE_OFFSET (CODE_SECTION_OFFSET + 0x04) //ref to CodeInfo.S on rtos (addr of _section_01_size) +#define FW_PART1_SIZE_OFFSET64 (CODE_SECTION_OFFSET64 + 0x08) //ref to CodeInfo.S on rtos (addr of _section_01_size) +//#define TEE_HEADER_SIZE 0x1C // refer to: optee_header_t + +#define _THUMB2 __attribute__((target("thumb2"))) + +#define bl_memcpy utl_memcpy +#define bl_memset utl_memset +#define ALIGN_FLOOR(value, base) ((value) & ~((base)-1)) +#define ALIGN_CEIL(value, base) ALIGN_FLOOR((value) + ((base)-1), base) +#define SIZE_PRELOAD 0x400 +#define SIZE_PRESERVE_USB 0x2000 +#define IS_BIN_OVERLAP(addr1, size1, addr2, size2) (!(((addr1 + size1 - 1) < addr2) || (addr1 > (addr2 + size2 - 1)))) + +typedef enum _CORE_ID { + CORE_ID_0 = 0, + CORE_ID_1 +} CORE_ID; + + +#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) +extern void set_usb_suspend(void); +#endif + +#if (_ROM_PUBLIC_API_ == 1) +#define ROM_LZMA_POSITION 0xbfd0 +UINT8 lzma_temp_buffer[65536]; +int (*rom_lzma_inflate)(UINT8 *in_ptr, UINT32 in_size, UINT8 *out_ptr, UINT32 out_size, UINT8 *p_tmp, UINT32 tmp_size); +#endif + +extern char _loader_exec_compres_start[]; +//extern char _load_nand_table_start_base[]; +extern char _load_LOADER_CONFIGRAM_FREQ_PARAM_end_base[]; +extern char _load_BOOT_EXEC_start_base[]; +extern void core1_reset(void); + +// Function from Timer.c +//extern UINT32 timer_getLdrElapse(void); + +// Define in MakeConfig.txt +static UINT8 UPDATE_FW_NAME[] = {"FW98520A.BIN"}; +static UINT8 UPDATE_LOADER_NAME[] = {"LD98520A.BIN"}; +static UINT8 RUN_FW_NAME[] = {"FW98520T.BIN"}; +static UINT8 *LOADER_START_STR = {(UINT8 *)"\r\nLoader Start ..."}; +//#if !USB_WRITELOADER +#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) +//static UINT8 *RUN_WRKEY_NAME = {(UINT8 *)"WRKEY.BIN"}; +#if UPDATE_SIM_CODE +static UINT8 *RUN_WRKEY_NAME = {(UINT8 *)"SIM.BIN"}; +#endif +#endif +static UINT8 RECOVERY_FW_NAME[] = {"FW98520R.BIN"}; +static UINT32 g_uiPartitionID = 2; + +static UINT32 g_uiVersion = 0; + +// Error message +static char FWErrorMsg[] = "\r\nFW check fail\r\n"; +static char RWErrorMsg[] = "\r\nR/W error\r\n"; +static char LoaderErrorMsg[] = "\r\nLoader check fail\r\n"; + +UINT32 TopOfStack; +UINT32 BaseOfStack; + +extern char _loader_heap_base[]; + +static BOOL g_is_flash_open = FALSE; // indicate flash is open for updating non-fully all-in-one bin. + +static LDR_SPECIAL_KEY_CB gSpecialKeyCallBack = NULL; +static LDR_CARD_DETECT_CB gCardDetectCallBack = NULL; +static STORAGEINT gStorageIntType = STORAGEINT_UNKNOWN; + +static LDR_RECOVERY_TRIGGER_CB gRecoveryTriggerCallBack = NULL; +//#if (!USB_WRITELOADER) +//#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) +//static BOOL g_is_recovery_triggered = FALSE; // indicate recovery flow is triggered. +//#endif +_THUMB2 static int bl_is_smp(unsigned char *p_fdt); +static UINT32 g_uiStartBlkUpdateFW = 0; +static UINT32 g_uiStartBlkFastFdt = 0; +static UINT32 g_uiNandBlkSize = 0; +static UINT32 g_rtos_load_addr = 0; +static UINT32 g_rtos_target_addr = 0; +static UINT32 g_rtos_size = 0; +static UINT32 g_flash_dtr = 0; + +#if (FDT_SUPPORT) +#define PATH_MEM_DRAM "/nvt_memory_cfg/dram" +#define PATH_MEM_LOADER "/nvt_memory_cfg/loader" +#define PATH_MEM_UBOOT "/nvt_memory_cfg/uboot" +#define PATH_MEM_FDT "/nvt_memory_cfg/fdt" +#define PATH_MEM_SHMEM "/nvt_memory_cfg/shmem" +#define PATH_MEM_RTOS "/nvt_memory_cfg/rtos" +#define PATH_MEM_NUTTX "/nvt_memory_cfg/nuttx" +#define PATH_MEM_TEEOS "/nvt_memory_cfg/teeos" +#define PATH_MEM_BL31 "/nvt_memory_cfg/atf" +#define PATH_MEM_HDAL "/hdal-memory/media" +#define PATH_MEM_CORE2_ENTRY1 "/nvt_memory_cfg/core2entry1" +#define PATH_MEM_CORE2_ENTRY2 "/nvt_memory_cfg/core2entry2" +#define PATH_NVT_INFO "/nvt_info" +#define PATH_NVTPACK_INDEX "nvtpack/index" +#define PATH_PARTITION_LOADER "partition_loader" +#define PATH_PARTITION_FDT "partition_fdt" +#define PATH_PARTITION_UBOOT "partition_uboot" +#define PATH_PARTITION_NUTTX "partition_nuttx" +#define PATH_PARTITION_TEEOS "partition_teeos" +#define PATH_PARTITION_RTOS "partition_rtos" +#define PATH_PARTITION_BL31 "partition_atf" +#define PATH_PARTITION_KERNEL "partition_kernel" +#define PATH_PARTITION_ROOTFS "partition_rootfs" +#define PROPERTY_REG "reg" +#define PROPERTY_LABEL "label" +#define PROPERTY_PARTITION_NAME "partition_name" +#define PROPERTY_NVT_LINUX_SMP "NVT_LINUX_SMP" +static DRAM_PARTITION g_dram_partition = {0}; +static EMB_PARTITION g_emb_uboot = {0}; +static EMB_PARTITION g_emb_teeos = {0}; +static EMB_PARTITION g_emb_rtos = {0}; +#if (BOOT_LINUX_SUPPORT) +static EMB_PARTITION g_emb_kernel = {0}; +static EMB_PARTITION g_emb_rootfs = {0}; +#endif +#else // NO FDT_SUPPORT +// refer to met-tbl.dtsi /nvt_memory_cfg +static DRAM_PARTITION g_dram_partition = { + .dram_addr = 0x00000000, + .dram_size = 0x20000000, + .rev_addr = 0x00007E00, ///< shmem + .rev_size = 0x00000200, ///< shmem + .loader_addr = 0x01000000, + .loader_size = 0x00800000, + .fdt_addr = 0x01800000, + .fdt_size = 0x00040000, + .bl31_addr = 0x00000000, + .bl31_size = 0x00000000, + .uboot_addr = 0x1E000000, + .uboot_size = 0x01FC0000, + .rtos_addr = 0x01840000, ///< optional, only for fast-boot, + .rtos_size = 0x00780000, ///< optional, only for fast-boot + .core2_entry1_addr = 0x00000000, ///< optional, only for dual core IC (fixed here, and must be) + .core2_entry1_size = 0x00004000, ///< optional, only for dual core IC + .core2_entry2_addr = 0x1FFC0000, ///< optional, only for dual core IC (address better in the bottom of dram to avoid memory space overlap) + .core2_entry2_size = 0x00040000, ///< optional, only for dual core IC +}; +// refer to storage-partition.dtsi +static EMB_PARTITION g_emb_fdt = { ///< fdt, + .PartitionOffset = 0x40000, + .PartitionSize = 0x40000, +}; +static EMB_PARTITION g_emb_fdtfast = { ///< fdt, + .PartitionOffset = 0x80000, + .PartitionSize = 0x40000, +}; +static EMB_PARTITION g_emb_uboot = { + .PartitionOffset = 0x100000, + .PartitionSize = 0x1C0000, +}; +static EMB_PARTITION g_emb_rtos = { ///< optional, only for fast-boot, + .PartitionOffset = 0x2B40000, + .PartitionSize = 0xA00000, +}; +static EMB_PARTITION g_emb_teeos = { ///< optional, only for optee, + .PartitionOffset = 0, + .PartitionSize = 0, +}; +#if (BOOT_LINUX_SUPPORT) +static EMB_PARTITION g_emb_kernel = { + .PartitionOffset = 0, + .PartitionSize = 0, +}; +static EMB_PARTITION g_emb_rootfs = { + .PartitionOffset = 0, + .PartitionSize = 0, +}; +#endif +//following just for processing all-in-one bin (nvtpack) +//refer to nvtpack.dtsi +#define NVTPACK_IDX_UBOOT 3 +#define NVTPACK_IDX_TEEOS -1 +#define NVTPACK_IDX_RTOS 10 +#define NVTPACK_IDX_BL31 -1 +#define NVTPACK_IDX_KERNEL -1 +#define NVTPACK_IDX_ROOTFS -1 +#endif + +#if (UART_UPDATE_ == ENABLE) +static char g_strLength[80]; // buffer to store length string +#endif + + +//--------------------------------------------------------------------------- +// internal function +//--------------------------------------------------------------------------- +_THUMB2 static void *bl_get_rtos_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/); + +//--------------------------------------------------------------------------- +// Static function +//--------------------------------------------------------------------------- +int bl_boot_uboot(unsigned char *p_fdt); + +/** + Display error message. + + Display error message. + CPU loop forever and LED is red. + + @param Msg: Message to display + @return void +*/ +_THUMB2 static void bl_displayErrMsg(char *Msg) +{ + // Display error message to UART + debug_msg(Msg); + // Loop forever + while (1) { + ; + } +} + + +/** + Invert endianess of input word + + + @param[in] a input word + + @return translated word +*/ +_THUMB2 static UINT32 invertEndian(UINT32 a) +{ + return __builtin_bswap32(a); +} + + +/** + Check FW code. + + Check FW code and file length. + The FW binary file must be post-proecessd by encrypt_bin.exe. + This function must sync to encrypt_bin.exe. + If FW checking is fail, the CPU will loop forever and LED is red. + + @param[in] uiAddress FW code in DRAM starting address + @param[in] uiFileLen FW code length + @return void +*/ +_THUMB2 static void bl_checkFW(UINT32 uiAddress, UINT32 uiFileLen) +{ + NVTPACK_MEM mem = {0}; + mem.p_data = (void *)uiAddress; + mem.len = uiFileLen; + if (nvtpack_calc_nvt_sum(&mem) != 0) { + bl_displayErrMsg(FWErrorMsg); + } +} + +/** + Check boot loader code. + + Check boot loader code. + + @return void +*/ +_THUMB2 static void bl_checkLoader(UINT32 uiAddr, UINT32 uiSize) +{ + UINT16 *puiValue, uiSum; + UINT32 i; + + puiValue = (UINT16 *)uiAddr; + uiSum = 0; + + for (i = 0; i < (uiSize >> 1); i++) { + uiSum += (*puiValue + i); + puiValue++; + } + + if ((*(UINT16 *)(uiAddr + LOADER_TAG_OFFSET) != LOADER_TAG_VALUE) || + (uiSum != 0)) { + bl_displayErrMsg(LoaderErrorMsg); + } +} +#if (SECURE_DECRYPT_UBOOT || SECURE_DECRYPT_OPTEE_OS || SECURE_DECRYPT_BL31 || SECURE_DECRYPT_RTOS || SECURE_DECRYPT_FDT) + + +_THUMB2 static void get_bininfo_size_offset(unsigned char *bininfo, unsigned int *size, unsigned int *offset) +{ + /****this headinfo is for encrypt header + BinInfo will set partition offset and size + BinInfo_1[0~3] public key offset + BinInfo_1[4~7] public key length + BinInfo_2[0~3] signature offset + BinInfo_2[4~7] signature length + BinInfo_3[0~3] encrypted offset + BinInfo_3[4~7] encrypted size + BinLength total bin size + Checksum total bin checksum + others parameters set 0 + */ + *size = bininfo[4] | bininfo[5] << 8 | bininfo[6] << 16 | bininfo[7] << 24; + *offset = bininfo[0] | bininfo[1] << 8 | bininfo[2] << 16 | bininfo[3] << 24; +} + + + + +_THUMB2 static int decrypt_aes_cbc(unsigned int input, unsigned int output, unsigned int len) +{ + + CRYPT_OP crypt_op_param; + if (len & 0x0f) { + debug_msg_var("enc size", len); + debug_err("not align 16\r\n"); + return -21; + } + if ((input & 0x03) || (output & 0x03) || (len & 0x03)) { //check word alignment + //debug_msg_var("input", input); + //debug_msg_var("output", output); + //debug_msg_var("len", len); + //debug_err("not word align\r\n"); + return -22; + } + crypt_op_param.op_mode = CRYPTO_CBC; + crypt_op_param.en_de_crypt = CRYPTO_DECRYPT; + crypt_op_param.src_addr = input; + crypt_op_param.dst_addr = output; + crypt_op_param.length = len; //Need align to 16bytes align + crypt_op_param.iv_init_en= 0; + //debug_msg_var("src",(unsigned int)crypt_op_param.src_addr); + //debug_msg_var("dst",(unsigned int)crypt_op_param.dst_addr); + +#if 0 + debug_msg_var("input", input); + debug_msg_var("output", output); + debug_msg_var("len", len); + unsigned char *tmp = (unsigned char *) crypt_op_param.src_addr; + int i = 0; + debug_msg_var("encrypted buf addr", (unsigned int)tmp); + for (i = 0; i < 16; i++) { + debug_msg_var("encrypted buf", (unsigned int)tmp[i]); + } +#endif + if (crypto_data_operation(EFUSE_OTP_1ST_KEY_SET_FIELD, crypt_op_param) != 0) { + //debug_err("aes dec fail\r\n"); + return -23; + } +#if 0 + unsigned char *tmp = (unsigned char *) crypt_op_param.src_addr; + int i = 0; + tmp = (unsigned char *) crypt_op_param.dst_addr; + debug_msg_var("decryped addr", (unsigned int)&tmp[0]); + for (i = 0; i < 16; i++) { + debug_msg_var("decryped buf", (unsigned int)tmp[i]); + } + +#endif + return 0; + +} +#if (SECURE_SIGNATURE_TYPE == 0 || SECURE_SIGNATURE_TYPE == 2) +_THUMB2 static void data_reverse(unsigned char *input_data, unsigned int size) +{ + unsigned int i = 0; + unsigned char tmp = 0; + for (i = 0; i < (size / 2); i++) { + tmp = input_data[size - 1 - i]; + input_data[size - 1 - i] = input_data[i]; + input_data[i] = tmp; + } + +} + + +#endif +_THUMB2 int do_decrypt_aes(unsigned int input_data, unsigned int output_data, unsigned int *output_size, unsigned int partition_size) +{ + + unsigned int encrypt_offset = 0; + unsigned int encrypt_size = 0; + unsigned int data_size = 0; + HEADINFO *p_headinfo = (HEADINFO *)input_data; + int er = 0; + get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_3, &encrypt_size, &encrypt_offset); + data_size = p_headinfo->BinLength - encrypt_offset; +#if 1 //for signature check + unsigned int signature_offset = 0; + unsigned int signature_size = 0; + UINT32 hash_buf[8]; + unsigned int sha256_align_size = 0; + get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_2, &signature_size, &signature_offset); + + + //hash encrypt data + unsigned int sha256_size = data_size; + if (p_headinfo->BinCtrl & SIGN_BINCTRL_LIMITED_SIZE) { + sha256_size = p_headinfo->Resv1[HEADINFO_SIGN_RESV_IDX_LIMITED_SIZE]; + } + if ((sha256_size & 0x3f) != 0) { + // hardware sha256 need align 64, need set pending 0 + sha256_align_size = ((sha256_size / 0x40) + 1) * 0x40; + bl_memset((unsigned char *)(input_data + encrypt_offset + sha256_size), 0, sha256_align_size - sha256_size); + } else { + sha256_align_size = sha256_size; + } + shahw((unsigned char *)(input_data + encrypt_offset), sha256_align_size, hash_buf); + + +#if (SECURE_SIGNATURE_TYPE == 0) // RSA + unsigned int key_offset = 0; + UINT32 *signature_buff = NULL; + unsigned int key_size = 0; + unsigned int n_size = 0; + unsigned int e_size = 0; + UINT32 sign_rsa_output[64]; + UINT32 *key_n = NULL; + UINT32 *key_e = NULL; + UINT32 *signature_addr = NULL; + get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_1, &key_size, &key_offset); + n_size = signature_size;// if rsa 2048 , signature_size should be 256 bytes + e_size = key_size - n_size; + key_n = (UINT32 *)(input_data + key_offset); + // now only support rsa 2048 + key_e = (UINT32 *)(input_data + key_offset + signature_size); // signature_size should be 256 bytes, n key should be 256 + data_reverse((unsigned char *)(key_n), n_size); + data_reverse((unsigned char *)(key_e), e_size); + + er = rsa_keycheck(key_n, 1);// check rsa n key in efuse 1 and 2 field, 0 field for aes key + if (er == 0) { + bl_displayErrMsg("key fail\r\n"); + return -20; + } + signature_addr = (UINT32 *)(input_data + signature_offset); + data_reverse((unsigned char *)signature_addr, signature_size); + + //decrypt signature + rsa_decrypt(signature_addr, signature_size, key_n, n_size, key_e, e_size, sign_rsa_output); + + data_reverse((unsigned char *)sign_rsa_output, signature_size); + + //remove pending data 0, the last 32 bytes will be signature data + signature_buff = (UINT32 *)&sign_rsa_output[(sizeof(sign_rsa_output) / 4) - (32 / 4)]; // offset need devided by 4, because of UINT32 type + + //compare signature and current hash + if (memcmp((void *)hash_buf, (void *)signature_buff, sizeof(hash_buf)) != 0) { + //bl_displayErrMsg("sig fail\r\n"); + return -20; + } +#elif (SECURE_SIGNATURE_TYPE == 1)// aes + //UINT32 sign_aes_output[8]; + + UINT32 *signature_buff = NULL; + er = decrypt_aes_cbc((UINT32)(input_data + signature_offset), output_data, signature_size); + if (er != 0) { + debug_err("decrypt_aes_cbc fail\r\n"); + return -20; + } + signature_buff = (UINT32 *)output_data; + + //compare signature and current hash + if (memcmp((void *)hash_buf, (void *)signature_buff, sizeof(hash_buf)) != 0) { + //bl_displayErrMsg("sig fail\r\n"); + return -20; + } +#elif (SECURE_SIGNATURE_TYPE == 2)//ecdsa + unsigned int key_offset = 0; + unsigned int key_size = 0; + unsigned int x_size = 0; + unsigned int y_size = 0; + unsigned int r_size = 0; + + UINT32 *key_x = NULL; + UINT32 *key_y = NULL; + UINT32 *sign_r = NULL; + UINT32 *sign_s= NULL; + UINT32 test_result=0; + get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_1, &key_size, &key_offset); + x_size = key_size/2;// if ecdas + y_size = x_size; + + key_x = (UINT32 *)(input_data + key_offset); + key_y = (UINT32 *)(input_data + key_offset + x_size); + + +#if 0 + debug_msg_var("y_size", y_size); + unsigned int i = 0; + for (i = 0; i < (y_size/4); i++) { + debug_msg_var("key_x", (unsigned int)key_x[i]); + debug_msg_var("key_y", (unsigned int)key_y[i]); + } +#endif + + + data_reverse((unsigned char *)(key_x), x_size); + data_reverse((unsigned char *)(key_y), y_size); +#if 0 + for (i = 0; i < (y_size/4); i++) { + debug_msg_var("key_x", (unsigned int)key_x[i]); + debug_msg_var("key_y", (unsigned int)key_y[i]); + } +#endif + r_size = signature_size/2; + sign_r = (UINT32 *)(input_data + signature_offset); + sign_s = (UINT32 *)(input_data + signature_offset + r_size); + + debug_msg_var("r_size", r_size); +#if 0 + for (i = 0; i < (r_size/4); i++) { + debug_msg_var("sign_r", (unsigned int)sign_r[i]); + debug_msg_var("sign_s", (unsigned int)sign_s[i]); + } +#endif + + data_reverse((unsigned char *)(sign_r), r_size); + data_reverse((unsigned char *)(sign_s), r_size); +#if 0 + for (i = 0; i < (r_size/4); i++) { + debug_msg_var("sign_r", (unsigned int)sign_r[i]); + debug_msg_var("sign_s", (unsigned int)sign_s[i]); + } + for (i = 0; i < 8; i++) { + debug_msg_var("hash_buf", (unsigned int)hash_buf[i]); + } +#endif + data_reverse((unsigned char *)(hash_buf), 32); + +#if 0 + for (i = 0; i < 8; i++) { + debug_msg_var("hash_buf", (unsigned int)hash_buf[i]); + } +#endif + test_result = ecdsa_verify(hash_buf, key_x, key_y, sign_r, sign_s); + if(test_result){ + debug_msg("ecdsa pass\r\n"); + } + else{ + debug_msg("ecdsa fail\r\n"); + return -20; + } +#else // type not support + debug_err("not support this SECURE_SIGNATURE_TYPE\r\n"); + return -20; +#endif + + +#endif + if (p_headinfo->BinCtrl & SIGN_BINCTRL_NO_ENCRYPTIONDATA) { + // for rtos partial load, the partition_size is part1 size. in this case, partition_size will smaller than data_size + *output_size = (partition_size < data_size)? partition_size: data_size; + utl_memcpy((unsigned char *)output_data, (unsigned char *)(input_data + encrypt_offset), *output_size); + } else { + //decrypt data + //dma addr should 4 alignment, input_data address is 4 alignment + if ((input_data + encrypt_offset) & 0x03) { + utl_memcpy((void *)input_data, (unsigned char *)(input_data + encrypt_offset), data_size); + er = decrypt_aes_cbc(input_data, output_data, encrypt_size); + } else { + er = decrypt_aes_cbc(input_data + encrypt_offset, output_data, encrypt_size); + } + if (er != 0) { + //bl_displayErrMsg("aes fail\r\n"); + return er; + } + + *output_size = data_size; + + //add plaintext data to output buf--> aes should 16 alignment, if data not alignment, the last bytes we will not encrypt data + int plaintext_size = data_size - encrypt_size; + unsigned char *p_output = (unsigned char *)output_data; + if (plaintext_size > 0) { + utl_memcpy(&p_output[encrypt_size], (unsigned char *)(input_data + encrypt_offset + encrypt_size), plaintext_size); + } + } + return 0; + +} +#endif + +//#NT#2013/04/25#Steven Wang -begin +//#NT#Show Duty calibration log +#if (_LOADER_DUTY_CALIBRATION_ == ENABLE && _LOADER_DUTY_CALIBRATION_LOG_ == ENABLE) +void BL_showROMLog(UINT32 buffer) +{ + UINT32 value; + UINT32 index; + UINT32 P_duty; + UINT32 N_duty; + UINT32 diff; + + index = 0; + diff = 0; + P_duty = 0; + N_duty = 0; + uart_putSystemUARTStr("\r\n"); + while (1) { + value = INREG32(buffer + index); + + if ((value & 0xF0000000) == 0xF0000000) { + value &= ~(0x40000000); + uart_putSystemUARTStr(Dec2HexStr(value)); + uart_putSystemUARTStr(" = "); + } + + else if ((value & 0xF0000000) == 0x50000000) { + uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); + uart_putSystemUARTStr("\r\n"); + } + + else if ((value & 0xF0000000) == 0x20000000) { +// uart_putSystemUARTStr("P_duty = "); + P_duty = value & 0xFFFFFFF; + //uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); + uart_putSystemUARTStr(Dec2HexStr(P_duty)); + uart_putSystemUARTStr("\r\n"); + } + + else if ((value & 0xF0000000) == 0x30000000) { +// uart_putSystemUARTStr("N_duty = "); + N_duty = value & 0xFFFFFFF; + //uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); + uart_putSystemUARTStr(Dec2HexStr(N_duty)); + uart_putSystemUARTStr("\r\n"); + if (P_duty > N_duty) { + if (diff == 2) { + uart_putSystemUARTStr("============\r\n"); + P_duty = 0; + N_duty = 0; + diff = 0; +// diff = 3; + } else { + diff = 1; + } + } else { + if (diff == 1) { + uart_putSystemUARTStr("============\r\n"); + P_duty = 0; + N_duty = 0; + diff = 0; +// diff = 3; + } else { + diff = 2; + } + } + } else if ((value & 0xF0000000) == 0x60000000) { + uart_putSystemUARTStr("N+P = "); + uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); + uart_putSystemUARTStr("\r\n"); + } else if ((value & 0xF0000000) == 0x70000000) { + if ((value & 0xFFFFFFF) == 0x0654321) { + break; + } + } else { + uart_putSystemUARTStr("Unknow \r\n"); + } + index += 4; + } + uart_putSystemUARTStr("\r\n[0xC0001000] = 0x"); + uart_putSystemUARTStr(Dec2HexStr(INREG32(0xC0001000))); + uart_putSystemUARTStr(" [0xC000101C] = 0x"); + uart_putSystemUARTStr(Dec2HexStr(INREG32(0xC000101C))); + uart_putSystemUARTStr("\r\n"); +} +#endif +//#NT#2013/04/25#Steven Wang -end + + +#if (DRAM_RANGE_SCAN_EN == ENABLE) +/** + Check Sram code. + + Check is dram scan code or not + + @param[in] uiAddress Scan FW code in DRAM starting address + @return void +*/ +static BOOL bl_checkDramScanFW(UINT32 uiAddress) +{ + if ((*(UINT32 *)uiAddress & SRAM_TAG) == SRAM_TAG) { + return TRUE; + } else { + return FALSE; + } +} +#endif + +#if 0 +static BOOL bl_spiIdentify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacityID, PSPI_IDENTIFY pIdentify) +{ + // Sample to support SST25VF032 + if ((uiMfgID == 0xBF) && + (uiCapacityID == 0x4A)) { + pIdentify->bDualRead = FALSE; + pIdentify->bSupportAAI = TRUE; + pIdentify->bSupportEWSR = TRUE; + pIdentify->uiFlashSize = 4 * 1024 * 1024; + return TRUE; + } + + return FALSE; +} +#endif + +/* + Update multi-binary image + + + @param[in] uiFwBuf buffer store fw read from card + + @return + -@ b TRUE: success + -@ b FALSE: fail +*/ + +#if !REMOVED_FLASH +#if 0 +static void bl_interrupt_init(void) +{ + debug_msg("arm_gic_distif_setup\r\n"); + arm_gic_distif_setup(); + debug_msg("arm_gic_cpuif_setup\r\n"); + arm_gic_cpuif_setup(); + + // + //debug_dump_addr(0xF1500000+0x1000,0x500); + //debug_dump_addr(0xF1500000+0x2000,0x100); +} +#endif + +#endif +_THUMB2 int bl_flash_open(void) +{ + int er; + + if (g_is_flash_open) { + return 0; + } + + //========================================================================== + //= User define SPI-NAND id table sample code = + //= You can remove // to use it = + //========================================================================== + //int_strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_IDENTIFY_CB, (UINT32)nand_identify); + + //========================================================================== + //= User define SPI-NOR id table sample code = + //= You can remove // to use it = + //========================================================================== +#if (_NOR_DTR_PARAM_ == ENABLE) //DTR force enable + int_strg_obj->flash_installIdentifyCB(nor_identify); +#endif + +#if defined(_FLASH_FREQ_MHZ_) + int_strg_obj->flash_setFrequency(_FLASH_FREQ_MHZ_); +#endif + + if (!bl_lowlevel_is_flash_opened()) { +#if (_NOR_DTR_PARAM_ == ENABLE) //DTR force enable + int_strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_SUPPORT_DTR, TRUE); + g_flash_dtr = 1; +#endif + er = int_strg_obj->flash_open(); + if (er < 0) { + debug_err("flash open fail\r\n"); + return -1; + } + } + + g_uiNandBlkSize = int_strg_obj->flash_getBlockSize(); + + +#if (FDT_SUPPORT) + if (g_uiNandBlkSize == 0x10000) { + debug_msg("SPI NOR\r\n"); + g_uiStartBlkUpdateFW = 1; + } else if (g_uiNandBlkSize == EMMC_BLOCK_SIZE) { + debug_msg("EMMC\r\n"); + g_uiStartBlkUpdateFW = FDT_OFFSET / EMMC_BLOCK_SIZE; + } else { + g_uiStartBlkUpdateFW = 2; + } + g_uiStartBlkFastFdt = FDTFAST_OFFSET / g_uiNandBlkSize; +#else + g_uiStartBlkUpdateFW = (UINT32)(g_emb_fdt.PartitionOffset/g_uiNandBlkSize); + g_uiStartBlkFastFdt = (UINT32)(g_emb_fdtfast.PartitionOffset/g_uiNandBlkSize); +#endif + + g_is_flash_open = TRUE; + return 0; +} + +#if 0 //[-Werror=unused-function] +static int bl_flash_close(void) +{ + if (!g_is_flash_open) { + return 0; + } + + flash_close(); + g_is_flash_open = FALSE; + return 0; +} +#endif + +#if (FDT_SUPPORT) +_THUMB2 static const void *bl_get_fdt_property(const void *p_dtb, const char *p_path, const char *p_property, int *len) +{ + int nodeoffset; /* next node offset from libfdt */ + const void *nodep; /* property node pointer */ + + nodeoffset = fdt_path_offset(p_dtb, p_path); + if (nodeoffset < 0) { + return NULL; + } + nodep = fdt_getprop(p_dtb, nodeoffset, p_property, len); + if (len == 0) { + return NULL; + } + return nodep; +} + +_THUMB2 static const void *bl_get_fdt_nvt_memory_cfg_property(const void *p_dtb, const char *p_path, const char *p_property, int *len) +{ + static int nodeoffset_nvt_memory_cfg = -FDT_ERR_NOTFOUND;; /* next node offset from libfdt */ + + int nodeoffset; + const void *nodep; /* property node pointer */ + + if (strncmp(p_path, "/nvt_memory_cfg/", 3) != 0) { + debug_err("path prefix must be /nvt_memory_cfg/\r\n"); + return NULL; + } + + if (nodeoffset_nvt_memory_cfg == -FDT_ERR_NOTFOUND) { + nodeoffset_nvt_memory_cfg = fdt_path_offset(p_dtb, "/nvt_memory_cfg"); + } + + nodeoffset = fdt_subnode_offset(p_dtb, nodeoffset_nvt_memory_cfg, &p_path[16]); + if (nodeoffset < 0) { + return NULL; + } + nodep = fdt_getprop(p_dtb, nodeoffset, p_property, len); + if (len == 0) { + return NULL; + } + return nodep; +} +#endif + + +_THUMB2 static unsigned char *bl_get_fdt_cfg(const void *p_dtb, MODELEXT_TYPE type) +{ +#if (FDT_SUPPORT) + int len; + const int *nodep; + + UINT8 *p_rt = NULL; + + switch (type) { + case MODELEXT_TYPE_DRAM_PARTITION: + nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_DRAM, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get dram fail\r\n"); + return NULL; + } + g_dram_partition.dram_addr = be32_to_cpu(nodep[0]); + g_dram_partition.dram_size = be32_to_cpu(nodep[1]); + + nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_LOADER, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get loader fail\r\n"); + return NULL; + } + g_dram_partition.loader_addr = be32_to_cpu(nodep[0]); + g_dram_partition.loader_size = be32_to_cpu(nodep[1]); + + nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_UBOOT, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get uboot fail\r\n"); + return NULL; + } + g_dram_partition.uboot_addr = be32_to_cpu(nodep[0]); + g_dram_partition.uboot_size = be32_to_cpu(nodep[1]); + + nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_FDT, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get fdt fail\r\n"); + return NULL; + } + g_dram_partition.fdt_addr = be32_to_cpu(nodep[0]); + g_dram_partition.fdt_size = be32_to_cpu(nodep[1]); + + nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_RTOS, PROPERTY_REG, &len); + if (nodep != NULL) { + g_dram_partition.rtos_addr = be32_to_cpu(nodep[0]); + g_dram_partition.rtos_size = be32_to_cpu(nodep[1]); + } + + nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_NUTTX, PROPERTY_REG, &len); + if (nodep != NULL) { + g_dram_partition.nuttx_addr = be32_to_cpu(nodep[0]); + g_dram_partition.nuttx_size = be32_to_cpu(nodep[1]); + } + + nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_TEEOS, PROPERTY_REG, &len); + if (nodep != NULL) { + g_dram_partition.teeos_addr = be32_to_cpu(nodep[0]); + g_dram_partition.teeos_size = be32_to_cpu(nodep[1]); + } + + nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_CORE2_ENTRY1, PROPERTY_REG, &len); + if (nodep != NULL) { + g_dram_partition.core2_entry1_addr = be32_to_cpu(nodep[0]); + g_dram_partition.core2_entry1_size = be32_to_cpu(nodep[1]); + } + + nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_CORE2_ENTRY2, PROPERTY_REG, &len); + if (nodep != NULL) { + g_dram_partition.core2_entry2_addr = be32_to_cpu(nodep[0]); + g_dram_partition.core2_entry2_size = be32_to_cpu(nodep[1]); + } + + nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_BL31, PROPERTY_REG, &len); + if (nodep != NULL) { + g_dram_partition.bl31_addr = be32_to_cpu(nodep[0]); + g_dram_partition.bl31_size = be32_to_cpu(nodep[1]); + } + + p_rt = (UINT8 *)&g_dram_partition; + break; + + case MODELEXT_TYPE_BIN_INFO: + nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_SHMEM, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("dtb get shmem fail\r\n"); + return NULL; + } + + if (sizeof(SHMINFO) > be32_to_cpu(nodep[1])) { + debug_err("shmem size mismatch\r\n"); + return NULL; + } + + p_rt = (UINT8 *)be32_to_cpu(nodep[0]); + break; + + default: + debug_err_var("not handle type\r\n", type); + return NULL; + } + return p_rt; +#else // NO FDT_SUPPORT + switch (type) { + case MODELEXT_TYPE_DRAM_PARTITION: + return (UINT8 *)&g_dram_partition; + case MODELEXT_TYPE_BIN_INFO: + return (UINT8 *)g_dram_partition.rev_addr; + default: + return NULL; + } +#endif +} + +_THUMB2 int bl_chk_valid_all_in_one(NVTPACK_MEM *p_mem_all_in_one) +{ + NVTPACK_ER er; + NVTPACK_VER ver; + + er = nvtpack_getver(p_mem_all_in_one, &ver); + + if (er != NVTPACK_ER_SUCCESS) { + return -1; + } + + if (ver == NVTPACK_VER_16072017) { + return 0; + } + + return -1; +} + + +#if !REMOVED_FLASH +_THUMB2 int bl_chk_fdt(unsigned int addr, unsigned int size) +{ + DRAM_PARTITION *p_dram_partition = NULL; + + if (bl_lowlevel_get_fdt() == 0) { + if (fdt_check_full((void *)addr, size) != 0) { + debug_err("invalid dtb\r\n"); + return -1; + } + } + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)addr, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("invalid dram_partition\r\n"); + return -1; + } + + // check tmp memory (file load) cannot overlap with uboot and teeos + // we allow to overlap with linux, root-fs because uboot will reload bin file later + debug_msg_var("tmp_addr", SDRAM_Start_FW); + + if (IS_BIN_OVERLAP(addr, size, p_dram_partition->uboot_addr, p_dram_partition->uboot_size)) { + debug_err_var("a", addr); + debug_err_var("s", size); + debug_err("uboot olp\r\n"); + return -1; + } + + if (p_dram_partition->teeos_size) { + if (IS_BIN_OVERLAP(addr, size, p_dram_partition->teeos_addr, p_dram_partition->teeos_size)) { + debug_err_var("a", addr); + debug_err_var("s", size); + debug_err("teeos olp\r\n"); + return -1; + } + } + + // check if memory size matched real size + #if (_FPGA_EMULATION_ == 1) + UINT32 ld_dram1_size = 0x80000000; + #else + UINT32 ld_dram1_size = dma_get_dram_capacity(DMA_ID_1); + #endif + if (p_dram_partition->dram_size > ld_dram1_size) { + debug_err_var("fw_d1_s", p_dram_partition->dram_size); + debug_err_var("ld_d1_s", ld_dram1_size); + debug_err("d1 s not matched\r\n"); + return -1; + } + return 0; +} +#endif + +#if !REMOVED_FLASH +_THUMB2 int bl_chk_uboot(unsigned int addr, unsigned int size) +{ +#if (_FPGA_EMULATION_ == 0) + NVTPACK_MEM mem = {0}; + mem.p_data = (void *)addr; + mem.len = size; + if (nvtpack_calc_nvt_sum(&mem) != 0) { + debug_err("uboot check sum fail\r\n"); + return -1; + } +#endif + return 0; +} + +_THUMB2 static int bl_entry_boot(unsigned char *p_fdt, UINT32 jump_entry, CORE_ID core_id) +{ + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + + bl_lowlevel_cpu_timer_init(); + + debug_msg_var("fdt", (UINT32)p_fdt); + debug_msg_var("shm", (UINT32)p_bininfo); + + p_bininfo->boot.fdt_addr = (UINT32)p_fdt; + utl_memset(p_bininfo->boot.LdInfo_1, 0, sizeof(p_bininfo->boot.LdInfo_1)); + utl_memcpy(p_bininfo->boot.LdInfo_1, "LD_NVT", 6); + + // clear cc_core1_addr, cc_core2_addr +#if (USB_WRITELOADER || UART_UPDATE) + if (ROM_GetCurrBS() == BOOT_SOURCE_UART) { + p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_UART; + } else if ((ROM_GetCurrBS() == BOOT_SOURCE_USB)||(ROM_GetCurrBS() == BOOT_SOURCE_USB_FULL)) { + p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_USB; + } else { + p_bininfo->comm.Resv[0] = BOOT_REASON_NORMAL; + } +#elif (STORAGE_EXT_TYPE == STORAGE_EXT_ETH) + p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_ETH; +#else + p_bininfo->comm.Resv[0] = BOOT_REASON_NORMAL; +#endif + + p_bininfo->comm.Resv[1] = 0; // COMM_CORE1_START + p_bininfo->comm.Resv[2] = 0; // COMM_CORE2_START + p_bininfo->comm.Resv[3] = 0; // COMM_UITRON_COMP_ADDR + p_bininfo->comm.Resv[4] = 0; // COMM_UITRON_COMP_LEN + + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); + + { + debug_msg_var("jump", jump_entry); +#if (MULTI_CODE_FLOW) + if (core_id == 0) { + typedef void (*BRANCH_CB)(void); + BRANCH_CB p_func = (BRANCH_CB)jump_entry; + p_func(); + } else { + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + + // pass timestamp list to rtos + unsigned long perf_addr = 0; + int perf_cnts = 0; + perf_get_buf(&perf_addr, &perf_cnts); + p_bininfo->comm.Resv[COMM_RESV_IDX_LD_TIME_ADDR] = perf_addr; + p_bininfo->comm.Resv[COMM_RESV_IDX_LD_TIME_CNTS] = perf_cnts; + + // to avoid optimize + volatile UINT32 *p_polling_linux_addr = &p_bininfo->comm.Resv[COMM_RESV_IDX_CORE1_LINUX_ADDR]; + volatile UINT32 *p_polling_fdt_addr = &p_bininfo->comm.Resv[COMM_RESV_IDX_CORE1_FDT_ADDR]; + + *p_polling_linux_addr = 0; + *p_polling_fdt_addr = 0; + + /** + * ife, ipe, ime sram will be replace on rtos + * here must release mmu first, because mmu table uses the ipe sram + */ + DISABLE_MMU(); + CLEAR_MMU(); + + bl_lowlevel_core2_setaddr(jump_entry); + debug_msg("wait core[0] addr\r\n"); + + while (*p_polling_linux_addr == 0) { + } + + unsigned int kernel_addr = *p_polling_linux_addr; + unsigned int r2 = *p_polling_fdt_addr; + //do not show anything, because ife sram switch from cpu to ife + //it will cause loader hang + //printf("jump = %X, fdt = %X\r\n", kernel_addr, r2); + *(volatile unsigned int *)0xF0290000 = '%'; + *(volatile unsigned int *)0xF0290000 = '%'; + + __asm__("cps #0x13"); + void (*kernel_entry)(int zero, int arch, unsigned int params); + kernel_entry = (void (*)(int, int, unsigned int))((kernel_addr)); + kernel_entry(0, 0, r2); // never returned + } +#else + typedef void (*BRANCH_CB)(void); + BRANCH_CB p_func = (BRANCH_CB)jump_entry; + p_func(); +#endif + } + + return 0; +} + +_THUMB2 int bl_copy_fdt_to_fdt_addr(unsigned char *p_fdt /*IN*/, unsigned char **pp_fdt /*OUT*/) +{ + DRAM_PARTITION *p_dram_partition; + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("bl_copy_fdt_to_fdt_addr failed.\r\n"); + return -1; + } + + // load fdt to fdt buffer + utl_memcpy((void *)p_dram_partition->fdt_addr, p_fdt, fdt_totalsize(p_fdt)); + *pp_fdt = (unsigned char *)p_dram_partition->fdt_addr; + + //reset shminfo + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + bl_memset(p_bininfo, 0, sizeof(SHMINFO)); + return 0; +} + +_THUMB2 static int bl_load_fdt_from_all_in_one(unsigned char *p_all_in_one, unsigned int all_in_one_size, unsigned char **pp_fdt /*OUT*/) +{ + NVTPACK_ER er; + NVTPACK_MEM emb_fdt; + NVTPACK_VERIFY_OUTPUT np_verify = {0}; + NVTPACK_GET_PARTITION_INPUT np_get_input; + NVTPACK_MEM mem_in = {(void *)p_all_in_one, (unsigned int)all_in_one_size}; + + if (nvtpack_verify(&mem_in, &np_verify) != NVTPACK_ER_SUCCESS) { + debug_err("packbin verify failed.\r\n"); + return -1; + } + + np_get_input.id = 1; // fdt must always put in partition[1] + np_get_input.mem = mem_in; + er = nvtpack_get_partition(&np_get_input, &emb_fdt); + + if (er == NVTPACK_ER_NOT_FOUND) { + return -2; + } else if (er != NVTPACK_ER_SUCCESS) { + return -1; + } + + debug_msg_var("fdt addr", (int)emb_fdt.p_data); + debug_msg_var("fdt size", (int)emb_fdt.len); + + if (IS_SECURE() == 0 || SECURE_DECRYPT_FDT == 0) { + if (bl_chk_fdt((unsigned int)emb_fdt.p_data, emb_fdt.len) == 0) { + if ((er = bl_copy_fdt_to_fdt_addr(emb_fdt.p_data, pp_fdt)) != 0) { + return er; + } + } + } else { +#if (SECURE_DECRYPT_FDT) + unsigned int plaintext_size = 0; + if (fdt_check_header((void *)emb_fdt.p_data) != 0) { + // encrypted + if ((er = do_decrypt_aes((unsigned int)emb_fdt.p_data, (unsigned int)emb_fdt.p_data, &plaintext_size, emb_fdt.len)) != 0) { + //debug_err("aes fail\r\n"); + return er; + } + } else { + debug_err("fdt not encrypted."); + return -1; + } + if (bl_chk_fdt((unsigned int)emb_fdt.p_data, emb_fdt.len) == 0) { + if ((er = bl_copy_fdt_to_fdt_addr(emb_fdt.p_data, pp_fdt)) != 0) { + return er; + } + } +#else + debug_err("pls enable SECURE_DECRYPT_FDT"); + return -1; +#endif + } + + np_get_input.id = 2; // fdt-fastboot must always put in partition[2] + np_get_input.mem = mem_in; + er = nvtpack_get_partition(&np_get_input, &emb_fdt); + if (er == NVTPACK_ER_NOT_FOUND) { + unsigned char *p_fdt_hdr = (unsigned char *)bl_lowlevel_get_fdtfast(); + if (p_fdt_hdr) { + DRAM_PARTITION *p_dram_partition; + int fdt_size = fdt_totalsize(*pp_fdt); + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)*pp_fdt, MODELEXT_TYPE_DRAM_PARTITION); + UINT32 fdt_fastboot_addr = (UINT32)(*pp_fdt) + ALIGN_CEIL(fdt_size, 64); + int fdtfast_size = fdt_totalsize(p_fdt_hdr); + UINT32 fdt_mempool_size_require = ALIGN_CEIL(fdt_size, 64) + fdtfast_size; + if (fdt_mempool_size_require <= p_dram_partition->fdt_size) { + utl_memcpy((void *)fdt_fastboot_addr, p_fdt_hdr, fdtfast_size); + g_flash_dtr = bl_lowlevel_is_dtr_tunned(); + debug_msg_var("fdt-fast ", fdt_fastboot_addr); + } else { + // fdtfast size too large or fdtfast not exist + // try to erase flash to clean previous fastboot firmware + debug_err_var("fdt-fast skip-3", fdt_mempool_size_require); + } + } else { + debug_msg("fdt-fast skip-1\r\n"); + } + return 0; + } else if (er != NVTPACK_ER_SUCCESS) { + debug_msg("fdt-fast skip-2\r\n"); + return 0; + } + + unsigned int forcc = *(unsigned int *)emb_fdt.p_data; + if (forcc == DTR_TUNNING_PATTERN_DATA1 || forcc == DTR_TUNNING_PATTERN_DATA2) { + if (emb_fdt.len <= DTR_TUNNING_PATTERN_SIZE) { + debug_msg("fdt-fast skip-3\r\n"); + return 0; + } else { + emb_fdt.p_data = (unsigned char *)emb_fdt.p_data + DTR_TUNNING_PATTERN_SIZE; + emb_fdt.len -= DTR_TUNNING_PATTERN_SIZE; + } + } + + if (fdt_check_full((void *)emb_fdt.p_data, emb_fdt.len) != 0) { + debug_msg("fdt-fast skip-4\r\n"); + return 0; + } + DRAM_PARTITION *p_dram_partition; + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)*pp_fdt, MODELEXT_TYPE_DRAM_PARTITION); + if (p_dram_partition == NULL) { + return -1; + } + UINT32 fdtsize = fdt_totalsize(*pp_fdt); + UINT32 fdt_fastboot_addr = (UINT32)(*pp_fdt) + ALIGN_CEIL(fdtsize, 64); + UINT32 fdt_mempool_size_require = ALIGN_CEIL(fdtsize, 64) + fdt_totalsize(emb_fdt.p_data); + if (fdt_mempool_size_require > p_dram_partition->fdt_size) { + debug_err_var("2 fdt size too large ", fdt_mempool_size_require); + return -1; + } + utl_memcpy((void *)fdt_fastboot_addr, emb_fdt.p_data, fdt_totalsize(emb_fdt.p_data)); + debug_msg_var("fdt-fast ", fdt_fastboot_addr); + return 0; +} + +_THUMB2 static unsigned int bl_load_rtos_from_all_in_one(unsigned char *p_all_in_one, unsigned int all_in_one_size, unsigned char *p_fdt, UINT32 *p_comp_addr, UINT32 *p_comp_size) +{ + int rtos_partition_id = 0; + UINT32 uItron_fw_addr = 0; + NVTPACK_ER er; + NVTPACK_MEM emb_rtos; + NVTPACK_VERIFY_OUTPUT np_verify = {0}; + NVTPACK_GET_PARTITION_INPUT np_get_input; + + NVTPACK_MEM mem_in = {(void *)p_all_in_one, (unsigned int)all_in_one_size}; + + if (nvtpack_verify(&mem_in, &np_verify) != NVTPACK_ER_SUCCESS) { + debug_err("packbin verify failed.\r\n"); + return 0; + } + + EMB_PARTITION *p_emb_partition_rtos = bl_get_rtos_partition(p_fdt, &rtos_partition_id); + + if (p_emb_partition_rtos == NULL) { + debug_err("null p_emb_partition_rtos\r\n"); + return -1; + } + + np_get_input.id = rtos_partition_id; + np_get_input.mem = mem_in; + er = nvtpack_get_partition(&np_get_input, &emb_rtos); + + if (er == NVTPACK_ER_NOT_FOUND) { + return 0; + } else if (er == NVTPACK_ER_SUCCESS) { + DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + HEADINFO *p_headinfo = (HEADINFO *)(emb_rtos.p_data + BIN_INFO_OFFSET_RTOS); + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)emb_rtos.p_data; + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + *p_comp_addr = (UINT32)emb_rtos.p_data; + *p_comp_size = (UINT32)emb_rtos.len; + uItron_fw_addr = p_dram_partition->rtos_addr; + } else { + *p_comp_addr = 0; + *p_comp_size = 0; + uItron_fw_addr = p_headinfo->CodeEntry;// - CODE_SECTION_OFFSET; + utl_memcpy((void *)uItron_fw_addr, emb_rtos.p_data, emb_rtos.len); + CPUflushWriteCache(uItron_fw_addr, emb_rtos.len); + } + } + + debug_msg_var("uItron_fw_addr=", uItron_fw_addr); + return uItron_fw_addr; +} + +_THUMB2 static int bl_load_fdt_from_flash(unsigned char *p_tmp, unsigned int tmp_size, unsigned char **pp_fdt /*OUT*/) +{ + unsigned char *p_fdt_hdr = NULL; + + perf_mark("lfdt-b"); + + // read first block to get dtb size + int blk_size = (int)int_strg_obj->flash_getBlockSize(); + + int er = int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW, blk_size, p_tmp, NAND_RW_FIRMWARE); + if (er < 0) { + debug_err("bl_load_fdt_from_flash\r\n"); + return -1; + } + + if (IS_SECURE() == 0 || SECURE_DECRYPT_FDT == 0) { + p_fdt_hdr = (unsigned char *)bl_lowlevel_get_fdt(); + if (p_fdt_hdr == NULL) { + int fdt_size = fdt_totalsize(p_tmp); + int total_size = ALIGN_CEIL(fdt_size, blk_size); + if ((int)tmp_size < total_size) { + debug_err_var("tmp_size too small, require:", total_size); + return -1; + } + total_size -= blk_size; + if (total_size > 0) { + // read remain to get uboot starting addr on dram and offset in flash + er = int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW + 1, total_size, p_tmp + blk_size, NAND_RW_FIRMWARE); + if (er < 0) { + debug_err("bl_load_fdt_from_flash\r\n"); + return -1; + } + } + p_fdt_hdr = p_tmp; + } + if (bl_chk_fdt((unsigned int)p_fdt_hdr, fdt_totalsize(p_fdt_hdr)) != 0) { + return -1; + } + if (bl_copy_fdt_to_fdt_addr(p_fdt_hdr, pp_fdt) != 0) { + return -1; + } + } else { +#if (SECURE_DECRYPT_FDT) + unsigned int plaintext_size = 0; + int bin_size = ((HEADINFO *)(p_tmp))->BinLength; + + if (bin_size > blk_size) { + if ((er = int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW + 1, ALIGN_CEIL(bin_size, blk_size) - blk_size, (UINT8 *)p_tmp + blk_size, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_fdt_from_flash,er=", er); // read bfc-bl31 failed + bl_displayErrMsg(RWErrorMsg); + } + } + if ((er = do_decrypt_aes((unsigned int)p_tmp, (unsigned int)p_tmp, &plaintext_size, bin_size)) != 0) { + debug_err("aes fail\r\n"); + return er; + } + if (bl_chk_fdt((unsigned int)p_tmp, fdt_totalsize(p_tmp)) == 0) { + if ((er = bl_copy_fdt_to_fdt_addr(p_tmp, pp_fdt)) != 0) { + return er; + } + } +#else + debug_err("pls enable SECURE_DECRYPT_FDT"); + return -1; +#endif + } + + p_fdt_hdr = (unsigned char *)bl_lowlevel_get_fdtfast(); + if (p_fdt_hdr) { + DRAM_PARTITION *p_dram_partition; + int fdt_size = fdt_totalsize(*pp_fdt); + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)*pp_fdt, MODELEXT_TYPE_DRAM_PARTITION); + UINT32 fdt_fastboot_addr = (UINT32)(*pp_fdt) + ALIGN_CEIL(fdt_size, 64); + int fdtfast_size = fdt_totalsize(p_fdt_hdr); + UINT32 fdt_mempool_size_require = ALIGN_CEIL(fdt_size, 64) + fdtfast_size; + if (fdt_mempool_size_require <= p_dram_partition->fdt_size) { + utl_memcpy((void *)fdt_fastboot_addr, p_fdt_hdr, fdtfast_size); + g_flash_dtr = bl_lowlevel_is_dtr_tunned(); + debug_msg_var("fdt-fast ", fdt_fastboot_addr); + + } else { + // fdtfast size too large or fdtfast not exist + // try to erase flash to clean previous fastboot firmware + debug_err_var("fdt-fast skip-3", fdt_mempool_size_require); + } + perf_mark("lfdt-e"); + return 0; + } else { +#if (FDTFAST_FROM_DRAM != ENABLE) + debug_msg("skip fdtfast\r\n"); + perf_mark("lfdt-e"); + return 0; +#endif + } + + perf_mark("lfdt-sys"); + +#if (FDTFAST_FROM_DRAM == ENABLE) + int fdt_size = fdt_totalsize(p_tmp); +#if 0// (_NOR_DTR_PARAM_ == ENABLE) auto tunning not ready yet + if(int_strg_obj->flash_auto_tune_read_block) { + if ((er = int_strg_obj->flash_auto_tune_read_block(g_uiStartBlkFastFdt, 0x1000, p_tmp, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("tunning command fail, use original config,er=", er); + //bl_displayErrMsg(RWErrorMsg); // read bl31 failed + } else { + g_flash_dtr = 1; + debug_msg("auto tunning success\r\n"); + } + } +#endif + er = int_strg_obj->flash_readSectors(g_uiStartBlkFastFdt, blk_size, p_tmp, NAND_RW_FIRMWARE); + if (er < 0) { + debug_err("bl_load_fdt_from_flash-2\r\n"); + return -1; + } + + unsigned int fdt_tunning_offset = 0; + unsigned int forcc = *(unsigned int *)p_tmp; + if (forcc == DTR_TUNNING_PATTERN_DATA1 || forcc == DTR_TUNNING_PATTERN_DATA2) { + fdt_tunning_offset += DTR_TUNNING_PATTERN_SIZE; + } + + p_fdt_hdr = p_tmp + fdt_tunning_offset; + + if (fdt_check_header(p_fdt_hdr) != 0) { + debug_msg("skip fdtfast\r\n"); + return 0; + } + + int fdtfast_size = fdt_totalsize(p_fdt_hdr); + fdtfast_size = ALIGN_CEIL(fdtfast_size + fdt_tunning_offset, blk_size); + if ((int)tmp_size < fdtfast_size) { + debug_err_var("tmp_size too small, require2:", fdtfast_size); + return -1; + } + + fdtfast_size -= blk_size; + if (fdtfast_size > 0) { + // read remain to get uboot starting addr on dram and offset in flash + er = int_strg_obj->flash_readSectors(g_uiStartBlkFastFdt + 1, fdtfast_size, p_tmp + blk_size, NAND_RW_FIRMWARE); + if (er < 0) { + debug_err("bl_load_fdt_from_flash-2"); + return -1; + } + } + + if (fdt_check_full(p_fdt_hdr, fdt_totalsize(p_fdt_hdr)) != 0) { + debug_msg("skip fdtfast-2\r\n"); + return 0; + } + + if (p_fdt_hdr) { + DRAM_PARTITION *p_dram_partition; + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)*pp_fdt, MODELEXT_TYPE_DRAM_PARTITION); + UINT32 fdt_fastboot_addr = (UINT32)(*pp_fdt) + ALIGN_CEIL(fdt_size, 64); + int fdtfast_size = fdt_totalsize(p_fdt_hdr); + UINT32 fdt_mempool_size_require = ALIGN_CEIL(fdt_size, 64) + fdtfast_size; + if (fdt_mempool_size_require > p_dram_partition->fdt_size) { + debug_err_var("2nd fdt size too large ", fdt_mempool_size_require); + return -1; + } + + utl_memcpy((void *)fdt_fastboot_addr, p_fdt_hdr, fdtfast_size); + debug_msg_var("fdt-fast ", fdt_fastboot_addr); + +#if (FDTFAST_SENSOR==ENABLE) + if (bl_sensor_chgmode((void *)fdt_fastboot_addr, 1) != 0) { + debug_err("sen chgmode NG\r\n"); + return -1; + } +#endif + } +#endif + perf_mark("lfdt-e"); + return 0; +} + +#if (FDT_SUPPORT) +_THUMB2 static int bl_get_partition_fdt_offset(unsigned char *p_fdt) +{ + const char *name = NULL; + static int nodeoffset = -FDT_ERR_NOTFOUND; + + if (nodeoffset > 0) { + return nodeoffset; + } + + const static char *p_names[3] = { + "/nand", + "/nor", + "mmc2" + }; + +#if !defined(_STORAGEINT_NONE_) + switch (gStorageIntType) { + case STORAGEINT_SPI_NAND: + name = p_names[0]; + break; + case STORAGEINT_SPI_NOR: + name = p_names[1]; + break; + case STORAGEINT_EMMC: + name = p_names[2]; + break; + default: + debug_err("loader_setStorageIntType needs.\r\n"); + return NULL; + } + + +#else + int i; + const static char *p_pathes[3] = { + "/nand/partition_uboot", + "/nor/partition_uboot", + "/mmc2/partition_uboot" + }; + for (i = 0; i < 3; i++) { + nodeoffset = fdt_path_offset(p_fdt, p_pathes[i]); + if (nodeoffset > 0 ) { + name = p_names[i]; + break; + } + } + if (name == NULL) { + debug_err("E:bl_get_partition_name\r\n"); + return NULL; + } +#endif + nodeoffset = fdt_path_offset(p_fdt, name); + if (nodeoffset < 0) { + debug_err("E:bl_get_partition_name\r\n"); + } + return nodeoffset; +} +#endif + +#if (FDT_SUPPORT) +_THUMB2 static const void *bl_get_fdt_partition_property(const void *p_dtb, const char *p_path, const char *p_property, int *len) +{ + int nodeoffset_partition = bl_get_partition_fdt_offset((unsigned char *)p_dtb); + + int nodeoffset; + const void *nodep; /* property node pointer */ + + if (nodeoffset_partition < 0) { + debug_err("nodeoffset_partition invalid \r\n"); + return NULL; + } + + nodeoffset = fdt_subnode_offset(p_dtb, nodeoffset_partition, p_path); + if (nodeoffset < 0) { + return NULL; + } + nodep = fdt_getprop(p_dtb, nodeoffset, p_property, len); + if (len == 0) { + return NULL; + } + return nodep; +} +#endif + +#if (FDT_SUPPORT) +_THUMB2 static int bl_get_partition(unsigned char *p_fdt /*IN*/, char *p_emb_name /*IN*/, EMB_PARTITION *p_emb/*OUT*/, int *p_id) +{ + int len; + const unsigned long long *nodep; + + // get partition offset and size + nodep = (const unsigned long long *)bl_get_fdt_partition_property(p_fdt, p_emb_name, PROPERTY_REG, &len); + if (nodep == NULL) { + debug_err("bl_get_partition-1\r\n"); + return -1; + } + + p_emb->PartitionOffset = be64_to_cpu(nodep[0]); + p_emb->PartitionSize = be64_to_cpu(nodep[1]); + + // get partition label + char *p_label_name = (char *)bl_get_fdt_partition_property(p_fdt, p_emb_name, PROPERTY_LABEL, &len); + if (p_label_name == NULL) { + debug_err("bl_get_partition-2\r\n"); + return -1; + } + + // get id + int nodeoffset_partition = bl_get_partition_fdt_offset(p_fdt); + int nodeoffset = fdt_subnode_offset(p_fdt, nodeoffset_partition, "nvtpack"); + nodeoffset = fdt_subnode_offset(p_fdt, nodeoffset, "index"); + + for (nodeoffset = fdt_first_subnode(p_fdt, nodeoffset); + (nodeoffset >= 0); + (nodeoffset = fdt_next_subnode(p_fdt, nodeoffset))) { + const struct fdt_property *prop; + + if (!(prop = fdt_get_property(p_fdt, nodeoffset, PROPERTY_PARTITION_NAME, &len))) { + break; + } + const char *p_id_name = fdt_get_name(p_fdt, nodeoffset, &len); + + if (strcmp(p_label_name, (char *)prop->data) == 0) { + *p_id = atoi(p_id_name + strlen("id")); + return 0; + } + } + + return -1; +} +#endif + +_THUMB2 static void *bl_get_uboot_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) +{ +#if (FDT_SUPPORT) + if (bl_get_partition(p_fdt, PATH_PARTITION_UBOOT, &g_emb_uboot, p_id) != 0) { + return NULL; + } +#else + *p_id = NVTPACK_IDX_UBOOT; +#endif + g_emb_uboot.EmbType = EMBTYPE_UBOOT; + return &g_emb_uboot; +} + +_THUMB2 static void *bl_get_rtos_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) +{ +#if (FDT_SUPPORT) + if (bl_get_partition(p_fdt, PATH_PARTITION_RTOS, &g_emb_rtos, p_id) != 0) { + return NULL; + } +#else + *p_id = NVTPACK_IDX_RTOS; +#endif + g_emb_rtos.EmbType = EMBTYPE_RTOS; + return &g_emb_rtos; +} + +_THUMB2 static void *bl_get_teeos_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) +{ +#if (FDT_SUPPORT) + if (bl_get_partition(p_fdt, PATH_PARTITION_TEEOS, &g_emb_teeos, p_id) != 0) { + return NULL; + } +#else + *p_id = NVTPACK_IDX_TEEOS; +#endif + g_emb_teeos.EmbType = EMBTYPE_TEEOS; + + return &g_emb_teeos; +} +#endif + +#if (BOOT_LINUX_SUPPORT) +_THUMB2 void *bl_get_kernel_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) +{ +#if (FDT_SUPPORT) + if (bl_get_partition(p_fdt, PATH_PARTITION_KERNEL, &g_emb_kernel, p_id) != 0) { + return NULL; + } +#else + *p_id = NVTPACK_IDX_KERNEL; +#endif + g_emb_kernel.EmbType = EMBTYPE_LINUX; + return &g_emb_kernel; +} +#endif + +#if (BOOT_LINUX_SUPPORT) +_THUMB2 void *bl_get_rootfs_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) +{ +#if (FDT_SUPPORT) + if (bl_get_partition(p_fdt, PATH_PARTITION_ROOTFS, &g_emb_rootfs, p_id) != 0) { + return NULL; + } +#else + *p_id = NVTPACK_IDX_ROOTFS; +#endif + g_emb_rootfs.EmbType = EMBTYPE_ROOTFS; + return &g_emb_rootfs; +} +#endif + +// return decompress_fw_size +_THUMB2 static unsigned int bl_decompress_rtos(UINT32 compress_addr, UINT32 compress_size, UINT32 fw_base_addr) +{ + UINT32 decoded_size; + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)compress_addr; + UINT32 algorithm = invertEndian(pBfc->uiAlgorithm) & 0xFF; + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + UINT32 size_uncomp_le = invertEndian(pBfc->uiSizeUnComp); + + switch(algorithm) { + case 9: // LZ77 + size_comp_le = (compress_size < size_comp_le) ? compress_size : size_comp_le; + decoded_size = LZ_Un_compress((UINT8 *)compress_addr + sizeof(NVTPACK_BFC_HDR), (UINT8 *)fw_base_addr, size_comp_le); + break; +#if (_GZIP_ENABLE_API_ == 1) + case 12: // GZ + size_comp_le = (compress_size < size_comp_le) ? compress_size : size_comp_le; + decoded_size = GZ_Uncompress((UINT8 *)compress_addr + sizeof(NVTPACK_BFC_HDR), (UINT8 *)fw_base_addr, size_comp_le); + break; +#endif + default: + debug_err_var("unsupported comp", algorithm); + return 0; + } + + //because some padding bytes are decoded, we must return real rtos size + return (decoded_size < size_uncomp_le) ? decoded_size : size_uncomp_le; +} + +#if !REMOVED_FLASH +_THUMB2 static int bl_load_uboot_from_all_in_one(unsigned char *p_fdt, unsigned char *p_all_in_one, unsigned int all_in_one_size) +{ + NVTPACK_ER er; + NVTPACK_MEM mem_uboot; + int uboot_partition_id; + NVTPACK_GET_PARTITION_INPUT input; + DRAM_PARTITION *p_dram_partition = NULL; + EMB_PARTITION *p_emb_partition_uboot = bl_get_uboot_partition(p_fdt, &uboot_partition_id); + + if (p_emb_partition_uboot == NULL) { + debug_err("null p_emb_partition_uboot\r\n"); + return -1; + } + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // get partition data address and size + input.id = (unsigned int)uboot_partition_id; + input.mem.p_data = (void *)p_all_in_one; + input.mem.len = all_in_one_size; + er = nvtpack_get_partition(&input, &mem_uboot); + if (er == NVTPACK_ER_NOT_FOUND) { + return -2; + } + + if (er != NVTPACK_ER_SUCCESS) { + return -1; + } + + debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); + //debug_msg_var("uboot_size", p_dram_partition->uboot_size); + if (IS_SECURE() == 0 || SECURE_DECRYPT_UBOOT == 0) { + if (bl_chk_uboot((unsigned int)mem_uboot.p_data, mem_uboot.len) != 0) { + return -1; + } + + // flow to handle compressed u-boot and uncompressed one. + HEADINFO *p_headinfo = (HEADINFO *)(mem_uboot.p_data + BIN_INFO_OFFSET_UBOOT); // describe uncompressed u-boot + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)mem_uboot.p_data; // describe compressed u-boot + + // load uboot bin to dram partiton location + //debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); + //debug_msg_var("uboot_size", p_dram_partition->uboot_size); + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + if ((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF) == 11) { +#if (_ROM_PUBLIC_API_ == 1) + UINT32 lzma_addr = *(UINT32 *)ROM_LZMA_POSITION; + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + UINT32 size_uncomp_le = invertEndian(pBfc->uiSizeUnComp); + if(rom_public_api_available() < 0) { + debug_err("lzma API un-correct(overwrite by someone else)\r\n"); + return -1; + } + rom_lzma_inflate = (int (*)(UINT8 *, UINT32, UINT8 *, UINT32, UINT8 *, UINT32))((lzma_addr)); + rom_lzma_inflate(mem_uboot.p_data + sizeof(NVTPACK_BFC_HDR), size_comp_le, (unsigned char *) p_dram_partition->uboot_addr, size_uncomp_le, (UINT8 *)lzma_temp_buffer, 65536); + debug_msg("lzma "); + +#else + debug_msg("Can not support LZMA\r\n"); +#endif + } else { + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + LZ_Un_compress(mem_uboot.p_data + sizeof(NVTPACK_BFC_HDR), (unsigned char *) p_dram_partition->uboot_addr, size_comp_le); + debug_msg("lz"); + } + } else { + debug_msg("nml"); + utl_memcpy((void *)p_dram_partition->uboot_addr, mem_uboot.p_data, p_headinfo->BinLength); + } + } else { +#if (SECURE_DECRYPT_UBOOT) + utl_memcpy((void *)p_dram_partition->uboot_addr, mem_uboot.p_data, mem_uboot.len); + unsigned int plaintext_size = 0; + + if ((er = do_decrypt_aes(p_dram_partition->uboot_addr, p_dram_partition->uboot_addr, &plaintext_size, p_dram_partition->uboot_size)) != 0) { + debug_err_var("aes fail, er=", er); + return er; + } + if (bl_chk_uboot((unsigned int)p_dram_partition->uboot_addr, plaintext_size) != 0) { + return -1; + } +#else + debug_msg("please enable SECURE_DECRYPT_UBOOT\r\n"); + return -1; +#endif + } + + return 0; +} + +_THUMB2 static int bl_load_teeos_from_all_in_one(unsigned char *p_fdt, unsigned char *p_all_in_one, unsigned int all_in_one_size) +{ + NVTPACK_ER er; + NVTPACK_MEM mem_teeos; + int teeos_partition_id; + NVTPACK_GET_PARTITION_INPUT input; + DRAM_PARTITION *p_dram_partition = NULL; + EMB_PARTITION *p_emb_partition_teeos = bl_get_teeos_partition(p_fdt, &teeos_partition_id); + HEADINFO *p_headinfo = NULL; + if (p_emb_partition_teeos == NULL) { + debug_err("null p_emb_partition_teeos\r\n"); + return -1; + } + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // get partition data address and size + input.id = (unsigned int)teeos_partition_id; + input.mem.p_data = (void *)p_all_in_one; + input.mem.len = all_in_one_size; + er = nvtpack_get_partition(&input, &mem_teeos); + if (er == NVTPACK_ER_NOT_FOUND) { + return -2; + } + + if (er != NVTPACK_ER_SUCCESS) { + return -1; + } + + if (IS_SECURE() == 0 || SECURE_DECRYPT_OPTEE_OS == 0) { + p_headinfo = (HEADINFO *)(mem_teeos.p_data + BIN_INFO_OFFSET_TEEOS); // describe uncompressed u-boot + utl_memcpy((void *)p_dram_partition->teeos_addr, (unsigned char *)mem_teeos.p_data, p_headinfo->BinLength); + } else { +#if (SECURE_DECRYPT_OPTEE_OS) + unsigned int plaintext_size = 0; + utl_memcpy((void *)p_dram_partition->teeos_addr, mem_teeos.p_data, mem_teeos.len); + if ((er = do_decrypt_aes(p_dram_partition->teeos_addr, p_dram_partition->teeos_addr, &plaintext_size, p_dram_partition->teeos_size)) != 0) { + //debug_err("aes fail\r\n"); + return er; + } + + //this is the second headinfo information , not encrpyted headinfo + p_headinfo = (HEADINFO *)(p_dram_partition->teeos_addr + BIN_INFO_OFFSET_TEEOS); +#else + debug_err("please enable SECURE_DECRYPT_OPTEE_OS"); + return -1; +#endif + } + UINT32 teeos_addr = (UINT32)p_headinfo->Resv1[HEADINFO_TEEOS_RESV_IDX_LOAD_ADDR]; + + //check addr matched or not + debug_msg_var("teeos_addr", p_dram_partition->teeos_addr); + if (teeos_addr != p_dram_partition->teeos_addr) { + debug_msg_var("teeos_addr(bin)", teeos_addr); + debug_err("teeos addr not matched.\r\n"); + return -1; + } + + // using check uboot's check sum is ok + if (bl_chk_uboot((unsigned int)teeos_addr, p_headinfo->BinLength) != 0) { + return -1; + } + + return 0; +} + +_THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) +{ + int er; + int uboot_partition_id; + DRAM_PARTITION *p_dram_partition = NULL; + unsigned int blk_size = int_strg_obj->flash_getBlockSize(); + EMB_PARTITION *p_emb_partition_uboot = bl_get_uboot_partition(p_fdt, &uboot_partition_id); + + if (p_emb_partition_uboot == NULL) { + debug_err("null p_emb_partition_uboot\r\n"); + return -1; + } + + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + debug_msg("l_uboot\r\n"); + + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, + ALIGN_CEIL(BIN_INFO_OFFSET_UBOOT + sizeof(HEADINFO), blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_uboot_from_flash,er=", er); + bl_displayErrMsg(RWErrorMsg); // read uboot failed + return -1; + } + + debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); + //debug_msg_var("uboot_size", p_dram_partition->uboot_size); + + if (IS_SECURE() == 0 || SECURE_DECRYPT_UBOOT == 0) { + HEADINFO *p_headinfo = (HEADINFO *)(p_tmp + BIN_INFO_OFFSET_UBOOT); // describe uncompressed u-boot + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)p_tmp; // describe compressed u-boot + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, + ALIGN_CEIL(size_comp_le + sizeof(NVTPACK_BFC_HDR), blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_uboot_from_flash_comp,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + if ((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF) == 11) { +#if (_ROM_PUBLIC_API_ == 1) + UINT32 lzma_addr = *(UINT32 *)ROM_LZMA_POSITION; + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + UINT32 size_uncomp_le = invertEndian(pBfc->uiSizeUnComp); + rom_lzma_inflate = (int (*)(UINT8 *, UINT32, UINT8 *, UINT32, UINT8 *, UINT32))((lzma_addr)); + rom_lzma_inflate(p_tmp + sizeof(NVTPACK_BFC_HDR), size_comp_le, (unsigned char *) p_dram_partition->uboot_addr, size_uncomp_le, (UINT8 *)lzma_temp_buffer, 65536); + debug_msg("lzma "); +#else + debug_msg("Can not support LZMA\r\n"); +#endif + } else { + LZ_Un_compress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->uboot_addr, size_comp_le); + } + } else { + if (p_headinfo->BinLength > p_dram_partition->uboot_size) { + debug_err_var("uboot_size", p_headinfo->BinLength); + return -1; + } + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, + ALIGN_CEIL(p_headinfo->BinLength, blk_size), + (UINT8 *)p_dram_partition->uboot_addr, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_uboot_from_flash,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + } + } else { +#if (SECURE_DECRYPT_UBOOT) + HEADINFO *p_headinfo = (HEADINFO *)(p_tmp); // describe uncompressed u-boot + if (p_headinfo->BinLength > p_dram_partition->uboot_size) { + debug_err_var("encrypted_uboot_size", p_headinfo->BinLength); + return -1; + } + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, + ALIGN_CEIL(p_headinfo->BinLength, blk_size), + (UINT8 *)p_dram_partition->uboot_addr, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_uboot_from_flash,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + unsigned int plaintext_size = 0; + if ((er = do_decrypt_aes(p_dram_partition->uboot_addr, p_dram_partition->uboot_addr, &plaintext_size, p_dram_partition->uboot_size)) != 0) { + //debug_err("aes fail\r\n"); + return er; + } +#else + debug_msg("please enable SECURE_DECRYPT_UBOOT config\r\n"); + return -1; +#endif + } + + //uboot check sum + { + HEADINFO *p_headinfo = (HEADINFO *)(p_dram_partition->uboot_addr + BIN_INFO_OFFSET_UBOOT); + debug_msg_var("uboot_size", p_headinfo->BinLength); + if (bl_chk_uboot((unsigned int)p_dram_partition->uboot_addr, p_headinfo->BinLength) != 0) { + return -1; + } + } + return 0; +} + +_THUMB2 static int bl_load_rtos_from_flash(unsigned char *p_fdt, unsigned char *p_tmp, int arrch64_mode) +{ + int er; + int rtos_partition_id; + DRAM_PARTITION *p_dram_partition = NULL; + unsigned int blk_size = int_strg_obj->flash_getBlockSize(); + EMB_PARTITION *p_emb_partition_rtos = bl_get_rtos_partition(p_fdt, &rtos_partition_id); + SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + + perf_mark("lrtos-b"); + + if (p_emb_partition_rtos == NULL) { + debug_err("null p_emb_partition_rtos\r\n"); + return -1; + } + + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + debug_msg("l_rtos\r\n"); + + // load 1st block of rtos to tmp dram (to detect compressed u-boot) + unsigned int bininfo_preload_size = ALIGN_CEIL(BIN_INFO_OFFSET_RTOS + sizeof(HEADINFO), blk_size); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, bininfo_preload_size, p_tmp, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_rtos_from_flash,er=", er); + bl_displayErrMsg(RWErrorMsg); // read rtos failed + } + + if (IS_SECURE() == 0 || SECURE_DECRYPT_RTOS == 0) { + // flow to handle compressed u-boot and uncompressed one. + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)p_tmp; // describe compressed u-boot + + // load rtos bin to dram partiton location + //debug_msg_var("rtos_addr", p_dram_partition->rtos_addr); + //debug_msg_var("rtos_size", p_dram_partition->rtos_size); + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + + if ((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF) == 11) { + /* lzma compressed image*/ + debug_msg("lzma, use uboot\r\n"); + er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load uboot failed\r\n"); + } + + // boot uboot + er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); + if (er != 0) { + bl_displayErrMsg("boot uboot failed\r\n"); + } + } else { + UINT32 algorithm = invertEndian(pBfc->uiAlgorithm) & 0xFF; + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, ALIGN_CEIL(size_comp_le + sizeof(NVTPACK_BFC_HDR), blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_rtos_from_flash_comp,er=", er); // read bfc-rtos failed + bl_displayErrMsg(RWErrorMsg); + } + switch(algorithm) { + case 9: // LZ77 + LZ_Un_compress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->rtos_addr, size_comp_le); + break; +#if (_GZIP_ENABLE_API_ == 1) + case 12: // GZ + GZ_Uncompress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->rtos_addr, size_comp_le); + break; +#endif + default: + debug_err_var("unsupported comp", algorithm); + return 0; + } + + } + } else { + BININFO *p_bininfo = (BININFO *)(p_tmp + BIN_INFO_OFFSET_RTOS); // describe uncompressed u-boot + if (p_bininfo->head.Resv1[HEADINFO_RESV_IDX_BOOT_FLAG] & BOOT_FLAG_PARTLOAD_EN) { + // copy bininfo_preload to rtos_addr + bl_memcpy((UINT8 *)p_dram_partition->rtos_addr, p_tmp, bininfo_preload_size); + // preload some to get part-1 size for partial load and partial compressed load + UINT32 preload_size = ALIGN_CEIL(FW_PART1_SIZE_OFFSET64, blk_size) - bininfo_preload_size; + + if (preload_size != 0) { + er = int_strg_obj->flash_readSectors( + (p_emb_partition_rtos->PartitionOffset + bininfo_preload_size) / blk_size, + preload_size, + (UINT8 *)(p_dram_partition->rtos_addr + bininfo_preload_size), NAND_RW_FIRMWARE + ); + + if (er < 0) { + debug_err_var("bl_load_rtos_from_flash_pl1,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + } + UINT32 part1_size = 0; + if (arrch64_mode) { + part1_size = *(UINT32 *)(p_dram_partition->rtos_addr + FW_PART1_SIZE_OFFSET64); + } else { + part1_size = *(UINT32 *)(p_dram_partition->rtos_addr + FW_PART1_SIZE_OFFSET); + } + debug_msg_var("part1_size", part1_size); + part1_size = ALIGN_CEIL(part1_size, blk_size); + //debug_msg_var("part1_size_aligned",part1_size); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, part1_size, (UINT8 *)p_dram_partition->rtos_addr, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_rtos_from_flash_pl1,er=", er); + bl_displayErrMsg(RWErrorMsg); + } + // update loaded size + p_shminfo->boot.LdLoadSize = part1_size; + } else { + // full load + debug_msg_var("rtos_size", p_bininfo->head.BinLength); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, ALIGN_CEIL(p_bininfo->head.BinLength, blk_size), (UINT8 *)p_dram_partition->rtos_addr, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_rtos_from_flash,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + // update loaded size + p_shminfo->boot.LdLoadSize = p_bininfo->head.BinLength; + } + } + } else { +#if (SECURE_DECRYPT_RTOS) + unsigned int encrypt_offset = 0; + unsigned int encrypt_size = 0; + unsigned int is_partial_load = 0; + BININFO *p_bininfo = NULL; + HEADINFO *p_headinfo = (HEADINFO *)(p_tmp); + + get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_3, &encrypt_size, &encrypt_offset); + // signature only + partial load + if (p_headinfo->BinCtrl & SIGN_BINCTRL_NO_ENCRYPTIONDATA) { + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)(p_tmp + encrypt_offset); + if (pBfc->uiFourCC != MAKEFOURCC('B', 'C', 'L', '1')) { + BININFO *p_bininfo = (BININFO *)(p_tmp + encrypt_offset + BIN_INFO_OFFSET_RTOS); // describe uncompressed u-boot + if (p_bininfo->head.Resv1[HEADINFO_RESV_IDX_BOOT_FLAG] & BOOT_FLAG_PARTLOAD_EN) { + is_partial_load = 1; + } + } + } + if (is_partial_load) { + // copy bininfo_preload to rtos_addr + bl_memcpy((UINT8 *)p_dram_partition->rtos_addr, p_tmp, bininfo_preload_size); + // preload some to get part-1 size for partial load and partial compressed load + UINT32 preload_size = ALIGN_CEIL(FW_PART1_SIZE_OFFSET64+encrypt_offset, blk_size) - bininfo_preload_size; + if (preload_size != 0) { + er = int_strg_obj->flash_readSectors( + (p_emb_partition_rtos->PartitionOffset + bininfo_preload_size) / blk_size, + preload_size, + (UINT8 *)(p_dram_partition->rtos_addr + bininfo_preload_size), NAND_RW_FIRMWARE + ); + + if (er < 0) { + debug_err_var("bl_load_rtos_from_flash_pl1,er=", er); // read bfc-uboot failed + bl_displayErrMsg(RWErrorMsg); + } + } + UINT32 part1_size = 0; + if (arrch64_mode) { + part1_size = *(UINT32 *)(p_dram_partition->rtos_addr + FW_PART1_SIZE_OFFSET64 + encrypt_offset); + } else { + part1_size = *(UINT32 *)(p_dram_partition->rtos_addr + FW_PART1_SIZE_OFFSET + encrypt_offset); + } + debug_msg_var("part1_size", part1_size); + UINT32 decrypt_size = ALIGN_CEIL(part1_size + encrypt_offset, blk_size); + part1_size = decrypt_size - encrypt_offset; + //debug_msg_var("part1_size_aligned",part1_size); + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, decrypt_size, (UINT8 *)p_dram_partition->rtos_addr, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_rtos_from_flash_pl1,er=", er); + bl_displayErrMsg(RWErrorMsg); + } + + unsigned int plaintext_size = 0; + if ((er = do_decrypt_aes(p_dram_partition->rtos_addr, p_dram_partition->rtos_addr, &plaintext_size, decrypt_size)) != 0) { + debug_err("aes fail\r\n"); + return er; + } + + p_bininfo = (BININFO *)(p_dram_partition->rtos_addr + BIN_INFO_OFFSET_RTOS); + // update loaded size + p_shminfo->boot.LdLoadSize = part1_size; + p_bininfo->Resv[0] = encrypt_offset; + } else { + int bin_size = ((HEADINFO *)(p_tmp))->BinLength; + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, ALIGN_CEIL(bin_size, blk_size), (UINT8 *)p_tmp, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_rtos_from_flash,er=", er); // read bfc-bl31 failed + bl_displayErrMsg(RWErrorMsg); + } + + unsigned int plaintext_size = 0; + if ((er = do_decrypt_aes((unsigned int)p_tmp, (unsigned int)p_tmp, &plaintext_size, p_dram_partition->rtos_size)) != 0) { + debug_err("aes fail\r\n"); + return er; + } + + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)p_tmp; + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + if ((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF) == 11) { + /* lzma compressed image*/ + debug_msg("lzma, use uboot\r\n"); + er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load uboot failed\r\n"); + } + + // boot uboot + er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); + if (er != 0) { + bl_displayErrMsg("boot uboot failed\r\n"); + } + } else if ((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF) == 12) { +#if (_GZIP_ENABLE_API_ == 1) + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + GZ_Uncompress((UINT8 *)p_tmp + sizeof(NVTPACK_BFC_HDR), (UINT8 *)p_dram_partition->rtos_addr, size_comp_le); +#else + debug_err_var("unsupported comp", cpu_to_be32(pBfc->uiAlgorithm) & 0xFF); +#endif + } else { + UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); + LZ_Un_compress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->rtos_addr, size_comp_le); + } + } else { + p_bininfo = (BININFO *)(p_tmp + BIN_INFO_OFFSET_RTOS); + bl_memcpy((unsigned char *)p_dram_partition->rtos_addr, p_tmp, p_bininfo->head.BinLength); + } + + p_bininfo = (BININFO *)(p_dram_partition->rtos_addr + BIN_INFO_OFFSET_RTOS); + if (p_bininfo->head.Resv1[HEADINFO_RESV_IDX_BOOT_FLAG] & BOOT_FLAG_PARTLOAD_EN) { + // FW_TYPE_NORMAL or ENCRYPTIONDATA_NONE + SIGNATURE_SHASIZE(512) required + debug_err("ENCRYPTIONDATA_NONE + SIGNATURE_SHASIZ required\r\n"); + return -1; + } + // update loaded size + p_shminfo->boot.LdLoadSize = p_bininfo->head.BinLength; + } +#else + debug_err("please ENABLE SECURE_DECRYPT_RTOS config\n"); + return -1; +#endif + } + + // update boot.LdCtrl2 + if (g_flash_dtr) { + p_shminfo->boot.LdCtrl2 |= LDCF_DTR80_BOOT; + } + + if (bl_lowlevel_is_fast_sensor()) { + p_shminfo->boot.LdCtrl2 |= LDCF_FAST_SENSOR; + } + + debug_msg_var("LdCtrl2", p_shminfo->boot.LdCtrl2); + + perf_mark("lrtos-e"); + + return 0; +} + +_THUMB2 static int bl_load_teeos_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) +{ + int er; + int teeos_partition_id; + DRAM_PARTITION *p_dram_partition = NULL; + int bin_size; + HEADINFO *p_headinfo = NULL; + unsigned int blk_size = int_strg_obj->flash_getBlockSize(); + EMB_PARTITION *p_emb_partition_teeos = bl_get_teeos_partition(p_fdt, &teeos_partition_id); + + if (p_emb_partition_teeos == NULL) { + debug_err("null p_emb_partition_teeos\r\n"); + return -1; + } + + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + debug_msg("l_tee\r\n"); + + // load 1st block of u-boot to tmp dram (to detect compressed u-boot) + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_teeos->PartitionOffset / blk_size, ALIGN_CEIL(BIN_INFO_OFFSET_TEEOS + sizeof(HEADINFO), blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_teeos_from_flash,er=", er); + bl_displayErrMsg(RWErrorMsg); // read teeos failed + } + + // flow to handle compressed u-boot and uncompressed one. +#if (SECURE_DECRYPT_OPTEE_OS) + bin_size = ((HEADINFO *)(p_tmp))->BinLength; +#else + bin_size = ((HEADINFO *)(p_tmp + BIN_INFO_OFFSET_TEEOS))->BinLength; +#endif + + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_teeos->PartitionOffset / blk_size, ALIGN_CEIL(bin_size, blk_size), (UINT8 *)p_dram_partition->teeos_addr, NAND_RW_FIRMWARE)) < 0) { + debug_err_var("bl_load_teeos_from_flash,er=", er); // read bfc-teeos failed + bl_displayErrMsg(RWErrorMsg); + } + + if (IS_SECURE() == 0 || SECURE_DECRYPT_OPTEE_OS == 0) { + p_headinfo = (HEADINFO *)(p_dram_partition->teeos_addr + BIN_INFO_OFFSET_TEEOS); + } else { +#if (SECURE_DECRYPT_OPTEE_OS) + unsigned int plaintext_size = 0; + if ((er = do_decrypt_aes(p_dram_partition->teeos_addr, p_dram_partition->teeos_addr, &plaintext_size, p_dram_partition->teeos_size)) != 0) { + //debug_err("aes fail\r\n"); + return er; + } + + p_headinfo = (HEADINFO *)(p_dram_partition->teeos_addr + BIN_INFO_OFFSET_TEEOS); // describe uncompressed u-boot +#else + debug_err("please ENABLE SECURE_DECRYPT_OPTEE_OS config\n"); + return -1; +#endif + } + + // load teeos bin to dram partiton location + UINT32 teeos_addr = (UINT32)p_headinfo->Resv1[HEADINFO_TEEOS_RESV_IDX_LOAD_ADDR]; + debug_msg_var("teeos_addr", p_dram_partition->teeos_addr); + if (teeos_addr != p_dram_partition->teeos_addr) { + debug_msg_var("teeos_addr(bin)", teeos_addr); + debug_err("teeos addr not matched.\r\n"); + return -1; + } + //check check sum + debug_msg_var("teeos_size", p_headinfo->BinLength); + if (bl_chk_uboot((unsigned int)teeos_addr, p_headinfo->BinLength) != 0) { + return -1; + } + return 0; +} +#endif + +#if !(USB_WRITELOADER || UART_UPDATE) +_THUMB2 static int bl_load_rtos_from_non_nvtpack(unsigned int src_addr, unsigned int src_size, unsigned int *p_dst_addr, unsigned int *p_dst_size) +{ + NVTPACK_BFC_HDR *pBFC = (NVTPACK_BFC_HDR *)src_addr; + HEADINFO *p_headinfo = (HEADINFO *)(src_addr + BIN_INFO_OFFSET_RTOS); + if (pBFC->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + // to avoid rtos_addr is overlapped by src_addr, we need extract some bits to get real rtos addr. + // compressed firmware + debug_msg("compressed t.bin\r\n"); + // decode some bytes to get uncompressed address + bl_decompress_rtos(src_addr, SIZE_PRELOAD, src_addr + SIZE_PRELOAD); + p_headinfo = (HEADINFO *)(src_addr + SIZE_PRELOAD + BIN_INFO_OFFSET_RTOS); + // check if valid after decode + if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || + (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { + UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; + UINT32 uncompress_size = p_headinfo->BinLength; + UINT32 compress_size = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); + //adjust src_addr that lay compressed f.w followed by uncompressed f.w + src_addr = uncompress_addr + uncompress_size; + src_addr = ALIGN_CEIL(src_addr, 4); + src_size = fat_read_rootfile((UINT8 *)src_addr, compress_size); + } else { + return -1; + } + } else if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || + (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { + // uncompressed firmware + UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; + UINT32 uncompress_size = p_headinfo->BinLength; + + src_size = fat_read_rootfile((UINT8 *)src_addr, uncompress_size); + src_addr = uncompress_addr; + src_size = uncompress_size; + debug_msg("uncompressed t.bin\r\n"); +#if (DRAM_RANGE_SCAN_EN == ENABLE) + } else if (utl_is_sram_fw(src_addr) == TRUE) { + debug_msg("detected as SRAM fw\r\n"); + src_size = fat_read_rootfile((UINT8 *)src_addr, FAT_READ_TOTAL_FILE_LENGTH); +#endif + } else { + return -1; + } + + *p_dst_addr = src_addr; + *p_dst_size = src_size; + return 0; +} +#endif + +_THUMB2 static void bl_update_uItron_headInfo(UINT32 fw_base_addr, DRAM_PARTITION *p_dram_partition) +{ + HEADINFO *pHeadInfo; +#if (UITRON_FW == ENABLE) + BININFO *pBinInfo; +#endif + pHeadInfo = (HEADINFO *)(fw_base_addr + BIN_INFO_OFFSET_RTOS); + if (p_dram_partition) { + pHeadInfo->ModelextAddr = p_dram_partition->fdt_addr; + pHeadInfo->Resv1[HEADINFO_RESV_IDX_DRAM_SIZE] = p_dram_partition->dram_size; + } else { + pHeadInfo->ModelextAddr = 0; +#if (UITRON_FW == ENABLE) + pBinInfo = (BININFO *)(fw_base_addr + BIN_INFO_OFFSET_RTOS); + pBinInfo->ld.Resv[0] = LoaderInternalInfo[1]; + pBinInfo->ld.LdPackage = (LoaderInternalInfo[3] & 0xFFFF); +#endif + } +} + +_THUMB2 static int bl_update_loader_bininfo(unsigned char *p_fdt, unsigned int ld_flag, unsigned int rtos_loaded_size) +{ + BOOTINFO *p_ld; + SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + BININFO *p_bininfo = (BININFO *)(p_dram_partition->rtos_addr + BIN_INFO_OFFSET_RTOS); + + p_ld = &p_shminfo->boot; + if (!(p_bininfo->head.Resv1[HEADINFO_RESV_IDX_BOOT_FLAG] & BOOT_FLAG_PARTLOAD_EN)) { + // LdLoadSize updated on uboot or bl_load_rtos_from_flash(), if BOOT_FLAG_PARTLOAD_EN + p_ld->LdLoadSize = rtos_loaded_size; + } + p_ld->LdLoadTime = timer_getLdrElapse(); + p_ld->LdResvSize = 0; //unused + p_ld->FWResvSize = 0; //unused + return 0; +} + +_THUMB2 static int bl_is_smp(unsigned char *p_fdt) +{ +#if (FDT_SUPPORT) + int len; + const char *nodep; + nodep = (const char *)bl_get_fdt_property(p_fdt, PATH_NVT_INFO, PROPERTY_NVT_LINUX_SMP, &len); + if (nodep == NULL) { + return 0; + } + if (strcmp(nodep, "NVT_LINUX_SMP_ON") == 0) { + return 1; + } + return 0; +#else + return 1; +#endif +} + +#if !REMOVED_FLASH +_THUMB2 int bl_boot_uboot(unsigned char *p_fdt) +{ + UINT32 No_CPU; + DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // update shminfo + SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + unsigned int *p_param = (unsigned int *)(&_load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[0]); + p_shminfo->boot.LdPackage = p_param[3] & 0xFFFF; + p_shminfo->boot.LdStorage = (p_param[3] >> 16) & 0xFF; + + // update headinfo as real u-boot address + HEADINFO *p_headinfo = (HEADINFO *)(p_dram_partition->uboot_addr + BIN_INFO_OFFSET_UBOOT); + + if (bl_chk_uboot(p_dram_partition->uboot_addr, p_headinfo->BinLength) != 0) { + return -1; + } + // start cpu2 + if (p_dram_partition->uboot_addr != p_headinfo->CodeEntry) { + debug_err_var("drampat-uboot_addr ", (int)p_dram_partition->uboot_addr); + debug_err_var("bin-uboot_addr ", (int)p_headinfo->CodeEntry); + return -1; + } + // for uboot to indicate this boot is all-in-one fw or non-all-in-one boot from uart or usb + // if boot from uart or usb with non-all-in-one fw, the uboot's ModelextAddr will be zero + p_headinfo->ModelextAddr = p_dram_partition->fdt_addr; + + CPUflushWriteCache(p_headinfo->CodeEntry, p_headinfo->BinLength); + + No_CPU = cc_getCoreCount(); + debug_msg_var("core_cnt=", No_CPU + 1); + + UINT32 isSMP = bl_is_smp(p_fdt); + if (!isSMP || !No_CPU || (!MULTI_CODE_FLOW)) { + debug_msg("!mp(uboot)\r\n"); + bl_entry_boot(p_fdt, p_headinfo->CodeEntry, CORE_ID_0); + } else { + if (p_dram_partition->rtos_addr) { + debug_msg("amp(uboot)\r\n"); + bl_entry_boot(p_fdt, p_headinfo->CodeEntry, CORE_ID_1); + } else { + debug_msg("smp(uboot)\r\n"); + bl_entry_boot(p_fdt, p_headinfo->CodeEntry, CORE_ID_0); + } + } + return 0; +} + +_THUMB2 static int bl_boot_teeos(unsigned char *p_fdt, int to_uboot) +{ + DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + // update headinfo as real u-boot address + HEADINFO *p_headinfo = (HEADINFO *)(p_dram_partition->teeos_addr + BIN_INFO_OFFSET_TEEOS); + + // do not checksum uboot or kernel here + // ,because teeos header has removed cause checksum failed + + if (to_uboot) { + // update uboot addr for teeos + p_headinfo->Resv1[HEADINFO_TEEOS_RESV_IDX_UBOOT_ADDR] = p_dram_partition->uboot_addr; + //flush uboot + CPUflushWriteCache(p_dram_partition->uboot_addr, p_dram_partition->uboot_size); + //flush teeos + CPUflushWriteCache(p_headinfo->CodeEntry, p_headinfo->BinLength); + } else { + // update fdt, kernel addr for teeos + unsigned long kernel_addr = 0; + unsigned long fdt_addr = 0; + if (linuxboot_go_info(&kernel_addr, &fdt_addr) == 0) { + printf("=> %08X %08X\r\n", kernel_addr, fdt_addr); + p_headinfo->Resv1[HEADINFO_TEEOS_RESV_IDX_KERNEL_ENTRY_ADDR] = kernel_addr; + p_headinfo->Resv1[HEADINFO_TEEOS_RESV_IDX_KERNEL_FDT_ADDR] = fdt_addr; + } else { + debug_err("kernel_addr NG\r\n"); + return -1; + } + + system_init_timer(); + } + + bl_entry_boot(p_fdt, p_headinfo->CodeEntry, CORE_ID_0); + // boot teeos and never return back to loader + return 0; +} + +_THUMB2 static int bl_update_loader_flag(unsigned char *p_fdt, UINT32 uiLoaderFunc) +{ + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + + utl_memcpy(p_bininfo->boot.LdInfo_1, "LD_NVT", 6); + + p_bininfo->boot.LdCtrl2 = 0; + if (uiLoaderFunc & FUNC_UPDATE_FW) { + p_bininfo->boot.LdCtrl2 |= LDCF_UPDATE_FW; + } + if (uiLoaderFunc & FUNC_UPDATE_LOADER) { + p_bininfo->boot.LdCtrl2 |= LDCF_UPDATE_LD; + } + if (uiLoaderFunc & FUNC_RUN_CARD) { + p_bininfo->boot.LdCtrl2 |= LDCF_BOOT_CARD; + } + if (uiLoaderFunc & FUNC_RUN_FLASH) { + p_bininfo->boot.LdCtrl2 |= LDCF_BOOT_FLASH; + } + + if (IS_AT80C51_OPENED()) { + p_bininfo->boot.LdCtrl2 |= LDCF_8051_BOOT; + } + + //CPUflushWriteCache((UINT32)p_bininfo, sizeof(BININFO)); + debug_msg_var("LdCtrl2", p_bininfo->boot.LdCtrl2); + + unsigned int ver; + SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); + BOOTINFO *p_ld = &p_shminfo->boot; + + utl_memset(p_ld->LdInfo_1, 0, sizeof(p_ld->LdInfo_1)); + utl_memcpy(p_ld->LdInfo_1, "LD_NVT", 6); + + ver = (((LoaderInternalInfo[1] >> 28) & 0xF) << 24) | + (((LoaderInternalInfo[1] >> 24) & 0xF) << 16) | + ((LoaderInternalInfo[1] >> 16) & 0xFF); + + if (g_uiVersion == 0) { + g_uiVersion = ver; + } + + utl_memcpy(&p_ld->LdInfo_1[8], &g_uiVersion, sizeof(g_uiVersion)); + unsigned int *p_param = (unsigned int *)(&_load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[0]); + p_ld->LdPackage = p_param[3] & 0xFFFF; + p_ld->LdStorage = (p_param[3] >> 16) & 0xFF; + + return 0; +} + +// return uItron_fw_addr +_THUMB2 unsigned int bl_process_all_in_one(UINT32 uiFwBuf, UINT32 uiFwBufSize, DRAM_PARTITION **pOut_dram_partition, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size) +{ + int er; + unsigned char *p_fdt = NULL; + DRAM_PARTITION *p_dram_partition = NULL; + //p_tmp for the case of all-in-one without fdt or uboot + unsigned char *p_tmp = (unsigned char *)(uiFwBuf + ALIGN_CEIL(uiFwBufSize, 4)); + + // load fdt + er = bl_load_fdt_from_all_in_one((unsigned char *)uiFwBuf, uiFwBufSize, &p_fdt); + if (er == -2) { // try to load from nand + debug_msg("fdt from flash.\r\n"); + // open flash + if (bl_flash_open() != 0) { // dont move flash open outside section, consider that T without flash device. + bl_displayErrMsg("flash open failed\r\n"); + } + + //p_tmp for the case of all-in-one without fdt or uboot + unsigned char *p_tmp = (unsigned char *)(uiFwBuf + ALIGN_CEIL(uiFwBufSize, 4)); + er = bl_load_fdt_from_flash(p_tmp, 0x2000000, &p_fdt); // dtb size less than 32MB to be safer. + if (er != 0) { + bl_displayErrMsg("load fdt failed\r\n"); + } + } + + // update loader flag + bl_update_loader_flag(p_fdt, uiLoaderFunc); + if (uiLoaderFunc & FUNC_UPDATE_FW) { + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_BIN_INFO); + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + p_bininfo->comm.Resv[5] = uiFwBuf; // COMM_FW_UPD_ADDR + p_bininfo->comm.Resv[6] = uiFwBufSize; // COMM_FW_UPD_LEN + debug_msg_var("upd_src_addr=", uiFwBuf); + debug_msg_var("upd_src_size=", uiFwBufSize); + } + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + //check loader addr is matched with loader self. + extern char _loader_exec_compres_start[]; + if (p_dram_partition->loader_addr != (UINT32)_loader_exec_compres_start) { + debug_msg_var("p_dram_partition->loader_addr", p_dram_partition->loader_addr); + debug_msg_var("_loader_exec_compres_start", (UINT32)_loader_exec_compres_start); + bl_displayErrMsg("loader addr is not match."); + } + //when rtos boot from flash, the boot from loader directly, + //but when rtos need to burn image, the uboot is still required. + //so, any one need to burn image, uboot is always needed to boot. + //if ((uiLoaderFunc & FUNC_UPDATE_FW) || p_dram_partition->rtos_addr == 0) { + if (!RUN_UITRON_FW || p_dram_partition->rtos_addr == 0) { + // always use uboot to handle all-in-one bin + if (p_dram_partition->bl31_size == 0 && p_dram_partition->teeos_size == 0) { + // load uboot + er = bl_load_uboot_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); + if (er == -2) { // try to load from nand + debug_msg("uboot from flash.\r\n"); + // open flash + if (bl_flash_open() != 0) { // dont move flash open outside section, consider that T without flash device. + bl_displayErrMsg("flash open failed\r\n"); + } + er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load uboot failed\r\n"); + } + } + + er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); + if (er != 0) { + bl_displayErrMsg("boot uboot failed\r\n"); + } + } else if (p_dram_partition->teeos_size) { + // load teeos + er = bl_load_teeos_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); + if (er != 0) { + bl_displayErrMsg("load teeos failed\r\n"); + } + // load uboot + er = bl_load_uboot_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); + if (er != 0) { + bl_displayErrMsg("load uboot failed\r\n"); + } + // boot teeos + er = bl_boot_teeos((unsigned char *)p_dram_partition->fdt_addr, 1); + if (er != 0) { + bl_displayErrMsg("boot teeos failed\r\n"); + } + } + return er; + } else { + // update rtos information + // the following is for uncompressed-rtos only, others needing uboot + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return -1; + } + + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_dram_partition->fdt_addr, MODELEXT_TYPE_BIN_INFO); + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + + *pOut_dram_partition = p_dram_partition; + return bl_load_rtos_from_all_in_one((unsigned char *)uiFwBuf, uiFwBufSize, p_fdt, p_comp_addr, p_comp_size); + } +} +#endif + +// return uItron_fw_addr, no need to fully decode +_THUMB2 static unsigned int bl_process_rtos_only(UINT32 uiFwBuf, UINT32 uiFwBufSize, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size) +{ + UINT32 uItron_fw_addr; + NVTPACK_BFC_HDR *pBFC; + HEADINFO *p_headinfo; + + debug_msg("\r\nbl_process_rtos_only\r\n"); + pBFC = (NVTPACK_BFC_HDR *)uiFwBuf; + if (pBFC->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + UINT32 compressSize; + UINT32 algorithm = invertEndian(pBFC->uiAlgorithm) & 0xFF; + unsigned char *p_tmp = (unsigned char *)(uiFwBuf + ALIGN_CEIL(uiFwBufSize, 4)); + switch(algorithm) { + case 9: // LZ77 + LZ_Un_compress((UINT8 *)uiFwBuf + LDC_HEADER_SIZE, p_tmp, SIZE_PRELOAD); + break; +#if (_GZIP_ENABLE_API_ == 1) + case 12: // GZ + GZ_Uncompress((UINT8 *)uiFwBuf + LDC_HEADER_SIZE, p_tmp, SIZE_PRELOAD); + break; +#endif + default: + debug_err_var("unsupported comp", algorithm); + return 0; + } + + p_headinfo = (HEADINFO *)(p_tmp + BIN_INFO_OFFSET_RTOS); + uItron_fw_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; +#if UITRON_FW + uItron_fw_addr = p_headinfo->CodeEntry - CODE_ENTRY_OFFSET; // cliff +#endif + + if ((uItron_fw_addr & 0x0000FFFF) != 0) { //cc engine's limitation + debug_err_var("rtos addr must match (&0x0000FFFF)==0", uItron_fw_addr); // but 660 allow + uItron_fw_addr = uItron_fw_addr & 0xFFFF0000; + } + compressSize = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); + //debug_dump_addr(tmpBuf,0x200); + debug_msg_var("F compress uItron_fw_addr", uItron_fw_addr); + // uiFwBuf has adjusted on bl_load_rtos_from_non_nvtpack() + *p_comp_addr = uiFwBuf; + *p_comp_size = compressSize; + } else { + p_headinfo = (HEADINFO *)(uiFwBuf + BIN_INFO_OFFSET_RTOS); + uItron_fw_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; +#if UITRON_FW + uItron_fw_addr = p_headinfo->CodeEntry - CODE_ENTRY_OFFSET; // cliff +#endif + + if ((uItron_fw_addr & 0x0000FFFF) != 0) { //cc engine's limitation + debug_err_var("rtos addr must match (&0x0000FFFF)==0", uItron_fw_addr); // but 660 allow + uItron_fw_addr = uItron_fw_addr & 0xFFFF0000; + } + + debug_msg_var("Normal uItron_fw_addr", uItron_fw_addr); + *p_comp_addr = 0; + *p_comp_size = 0; + } + return uItron_fw_addr; +} +#if !UPDATE_EMU_CODE && !REMOVED_FLASH +_THUMB2 static unsigned int bl_process_flash_boot(unsigned char *p_tmp, DRAM_PARTITION **pOut_dram_partition, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size) +{ + int er; + unsigned char *p_fdt = NULL; + DRAM_PARTITION *p_dram_partition = NULL; + + // open flash + if (bl_flash_open() != 0) { + bl_displayErrMsg("flash open failed\r\n"); + } +#if (FDT_SUPPORT) + // load fdt + er = bl_load_fdt_from_flash(p_tmp, SDRAM_Start_FW, &p_fdt); // dtb size less than 32MB to be safer. + if (er != 0) { + bl_displayErrMsg("load fdt failed\r\n"); + } +#endif + // update loader flag + bl_update_loader_flag(p_fdt, uiLoaderFunc); + + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + + if (p_dram_partition->teeos_size) { + // load teeos + er = bl_load_teeos_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load teeos failed\r\n"); + } +#if (BOOT_LINUX_SUPPORT) + if (linuxboot_setup((unsigned char *)p_dram_partition->fdt_addr) !=0 ) { + bl_displayErrMsg("linuxboot_setup failed\r\n"); + } + // boot teeos + er = bl_boot_teeos((unsigned char *)p_dram_partition->fdt_addr, 0); + if (er != 0) { + bl_displayErrMsg("boot teeos failed\r\n"); + } +#else + // load uboot + er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load uboot failed\r\n"); + } + // boot teeos + er = bl_boot_teeos((unsigned char *)p_dram_partition->fdt_addr, 1); + if (er != 0) { + bl_displayErrMsg("boot teeos failed\r\n"); + } +#endif + } else if (p_dram_partition->rtos_addr == 0 || DUAL_RTOS_SUPPORT) { // modify this condition to be true for booting uboot +#if (BOOT_LINUX_SUPPORT) + if (linuxboot_setup((unsigned char *)p_dram_partition->fdt_addr) !=0 ) { + bl_displayErrMsg("linuxboot_setup failed\r\n"); + } + linuxboot_go(); +#else + // load uboot + er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); + if (er != 0) { + bl_displayErrMsg("load uboot failed\r\n"); + } + + // boot uboot + er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); + if (er != 0) { + bl_displayErrMsg("boot uboot failed\r\n"); + } +#endif + } else { + // load rtos + er = bl_load_rtos_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp, 0); + if (er != 0) { + bl_displayErrMsg("load rtos failed\r\n"); + } + } + + // update compressed rtos information + SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((unsigned char *)p_dram_partition->fdt_addr, MODELEXT_TYPE_BIN_INFO); + if (p_bininfo == NULL) { + debug_err("null p_bininfo\r\n"); + return -1; + } + *p_comp_addr = p_bininfo->comm.Resv[3]; // COMM_UITRON_COMP_ADDR + *p_comp_size = p_bininfo->comm.Resv[4]; // COMM_UITRON_COMP_LEN + + *pOut_dram_partition = p_dram_partition; + return p_dram_partition->rtos_addr; +} +#endif + +/** + bl_process_update_loader. + + Write loader will update loader binary file + + @param[in] loader_addr loader in DRAM starting address + @param[in] loader_size loader code length (from loader header offset 0x24) + @return void +*/ +_THUMB2 static int bl_process_update_loader(unsigned int loader_addr, unsigned int loader_size) +{ + unsigned int reload_addr; + + // Check boot loader read from SD card +#if (_FPGA_EMULATION_ == 1) + //For FPGA binary without efuse + bl_checkLoader(loader_addr, loader_size); +#else + if (IS_SECURE() == 0) { + bl_checkLoader(loader_addr, loader_size); + } +#endif + + if (int_strg_obj != NULL) { + debug_msg("update loader\r\n"); + + // open flash + if (bl_flash_open() != 0) { + bl_displayErrMsg("flash open failed\r\n"); + } + + if (int_strg_obj->flash_writeSectors(StartNandBlkUpdateLoader, loader_size, (UINT8 *)loader_addr, NAND_RW_LOADER) < 0) { + bl_displayErrMsg(RWErrorMsg); + } + // Read back + reload_addr = loader_addr + loader_size; + if (int_strg_obj->flash_readSectors(StartNandBlkUpdateLoader, loader_size, (UINT8 *)reload_addr, NAND_RW_LOADER) < 0) { + bl_displayErrMsg("rd fail\r\n"); + } + // Verify + if (memcmp((void *)loader_addr, (void *)reload_addr, loader_size) != 0) { + bl_displayErrMsg("verify fail\r\n"); + } + } else { + debug_msg("skip update loader\r\n"); + return -1; + } + return 0; +} +#if UPDATE_EMU_CODE +_THUMB2 static int bl_process_update_emu_firmware(unsigned int emu_addr, unsigned int emu_size) +{ + unsigned int reload_addr; + + // Check boot loader read from SD card +// bl_checkFW(emu_addr, emu_size); + debug_msg("update emu firmware size"); + uart_putSystemUARTStr(Dec2HexStr(emu_size)); + uart_putSystemUARTStr("\r\n"); + + // open flash + if (bl_flash_open() != 0) { + bl_displayErrMsg("flash open failed\r\n"); + } + + // Program firmware + if (int_strg_obj->flash_writeSectors(g_uiStartBlkUpdateFW, emu_size, (UINT8 *)emu_addr, NAND_RW_FIRMWARE) < 0) { + bl_displayErrMsg(RWErrorMsg); + } + // Read back + reload_addr = emu_addr + emu_size; + if (int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW, emu_size, (UINT8 *)reload_addr, NAND_RW_FIRMWARE) < 0) { + bl_displayErrMsg("rd fail\r\n"); + } + // Verify + if (memcmp((void *)emu_addr, (void *)reload_addr, emu_size) != 0) { + bl_displayErrMsg("verify fail\r\n"); + } + return 0; +} +#endif + +_THUMB2 void bl_read_rtos_addr(UINT32 *pLoadAddr, UINT32 *pTargetAddr, UINT32 *pSize) +{ + *pLoadAddr = g_rtos_load_addr; + *pTargetAddr = g_rtos_target_addr; + *pSize = g_rtos_size; +} + +#define FOURCC_BOOT 0x544F4F42 +#define FOURCC_LRDY 0x5944524C +#if 0 +_THUMB2 static int bl_process_ep(void) +{ + unsigned char *p_fdt = NULL; + volatile unsigned int *p_comm_reg = (volatile unsigned int *)CC_RC_EP_BOOT_COMM_REG; + // check fourcc BOOT + if (*p_comm_reg != FOURCC_BOOT) { + bl_displayErrMsg("ep boot not from uboot trigger\r\n"); + } + // notify rc-uboot loader ready (fourcc = LRDY) + *p_comm_reg = FOURCC_LRDY; + + // wait RC-uboot send fdt, atf, optee, u-boot here + debug_msg("wait rc send fw\r\n"); + while (*p_comm_reg == FOURCC_LRDY) { + // RC will write fdt address to *p_comm_reg + } + debug_msg("got fw\r\n"); + + // parse fdt + unsigned int fdt_addr = *p_comm_reg; + unsigned int fdt_size = fdt_totalsize(*p_comm_reg); + debug_msg_var("fdt adr", (int)fdt_addr); + debug_msg_var("fdt siz", (int)fdt_size); + if (bl_chk_fdt((unsigned int)fdt_addr, fdt_size) != 0) { + return -1; + } + + if (bl_copy_fdt_to_fdt_addr((void *)fdt_addr, &p_fdt) != 0) { + return -1; + } + + // boot bl31 + DRAM_PARTITION *p_dram_partition = NULL; + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + debug_msg_var("bl31 addr = ", (int)p_dram_partition->fdt_addr); + int er = bl_boot_bl31((unsigned char *)p_dram_partition->fdt_addr, 0); + if (er != 0) { + bl_displayErrMsg("boot bl31 fail\r\n"); + } + + return 0; +} +#endif +/** + main flow code + + If there is Calibration Firmware code store in NAND, running flow as follow + O's work flow + + @return fw base addr +*/ + +#if (CRYPTO_ENGINE_SAMPLE == ENABLE) +// 1. +// Key = 04030201080706051211100916151413 +// result = 5f 47 2c 96 2a 92 29 29 0d 20 4f a8 87 af 63 d8 +// 2. +// iv = 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 +// result = 75 70 e0 a6 bd d3 b2 62 c8 e6 68 68 5f 90 5f 67 +static UINT8 key_sample[16] __attribute__((aligned(4)))= {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16}; +//static UINT8 key_sample[16] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16}; +static UINT32 pRSAKeyCRC32[8]; + +static UINT32 hash_msg[8] = {0xfea52d8c, 0x759c346c, 0x78e4ba3f, 0x59bb9a39, 0x8cc1abc9, 0x9e9d0614, 0x3848160b, 0xd9462e71}; +static UINT32 pub_x[8] = {0x95819a9f, 0xdcd7f425, 0x1123c5d5, 0x27213e17, 0xd2358140, 0x7faddd85, 0x75c11f0b, 0xd2eccfd9}; +static UINT32 pub_y[8] = {0x3581eeb6, 0xbb047e6c, 0xd05ab038, 0xfdbcef70, 0x7515d11e, 0x733b285e, 0xe577a154, 0xe34680e8}; +static UINT32 sign_r[8] = {0x7f9fec0b, 0x876197a0, 0x62efb6c5, 0x076099de, 0xf88f3008, 0x680fa1a5, 0xafbb66c1, 0x28983ff3}; +static UINT32 sign_s[8] = {0x8132b864, 0xfeef53d3, 0xe08b7871, 0x92b1c9df, 0x7907ec8e, 0x54df54dc, 0xc6c84cc6, 0x46529e75}; + +#endif + +_THUMB2 UINT32 bl_mainFlow(void) +{ + UINT32 uiUpdateFileLen = 0; + UINT32 uiLoaderFunc = 0; + UINT32 uiLoaderSize = 32 * 1024; // pre-assume 32KB, actual size is parsed from loader + //Show Duty calibration log +#if (_LOADER_DUTY_CALIBRATION_ == ENABLE && _LOADER_DUTY_CALIBRATION_LOG_ == ENABLE) + UINT32 uiLoaderAddress; + UINT32 uiLogSramAddress; +#endif + +#if !(USB_WRITELOADER || UART_UPDATE) + unsigned int adjusted_addr = 0; + unsigned int adjusted_size = 0; +#endif + UINT32 uiFwBaseAddr = SDRAM_Start_FW; // FW base address + DRAM_PARTITION *p_dram_partition = NULL; + + // BaseOfStack is initialized at doRemapLZ.s + UINT32 uiheapBufferAddr = (UINT32)_loader_heap_base; +// UINT32 uiheapBufferAddr = BaseOfStack + 0x40000; // reserve 16KB for tmp buffer usage + UINT32 uiTmpBufferAddr = uiheapBufferAddr + FAT_HEAP_BUFFER_SIZE; + UINT32 uiUpdateBootloaderBufAddr = uiTmpBufferAddr + 0x4000; + UINT32 uiUpdateMainBinBufAddr = SDRAM_Start_FW; + + perf_mark("flow-b"); + + // UART initial sequence + //uart_openSystemUART(); + // rtc reset shutdown timer + // rtc_resetShutDownTimer(); + +#if 0 + // adjust PAD driving (if required) + bl_adjustDriving(); + /* + - @b RTC_PWR_SW_STS: Power on source is PWR_SW + - @b RTC_PWR_VBAT_STS: Power on source is PWR_VBAT + - @b RTC_PWR_VBUS_STS: Power on source is PWR_VBUS + */ + uiPowerOnSrc = rtc_getPWRONSource(); + + if (uiPowerOnSrc & RTC_PWR_SW_STS) { + uart_putSystemUARTStr("\r\nSW PON\r\n"); + } else if (uiPowerOnSrc & RTC_PWR_VBAT_STS) { + uart_putSystemUARTStr("\r\nVBAT PON\r\n"); + } else if (uiPowerOnSrc & RTC_PWR_VBUS_STS) { + uart_putSystemUARTStr("\r\nVBUS PON\r\n"); + } else if (rtc_getIsAlarmPowerOn()) { + uart_putSystemUARTStr("\r\nPwrAlarm PON\r\n"); + } else { + uart_putSystemUARTStr("\r\nPOR PON\r\n"); + } +#endif + // Display Loader Version + debug_msg((char *)LOADER_START_STR); + UTL_setDrvTmpBufferAddress(uiTmpBufferAddr); + +#if 0 + // Sample to hook spi flash extending function + flash_installIdentifyCB(bl_spiIdentify); +#endif + prj_main(); +#if 0 + if (!IS_RC()) { + bl_process_ep(); + return 0; //never return + } +#endif + +#if (_FPGA_EMULATION_ == 0) +#if !(USB_WRITELOADER) + set_usb_suspend(); +#endif +#endif + +#if defined(ROM_GetCurrBS) +#if (STORAGE_EXT_TYPE == STORAGE_EXT_USB) || (STORAGE_EXT_TYPE == STORAGE_EXT_UART) + if (ROM_GetCurrBS() == BOOT_SOURCE_UART) { + debug_msg("Boot from UART ...\r\n"); +#if UART_UPDATE + bl_uart();//never returned. +#else + bl_displayErrMsg("loader must be STORAGEEXT = Uart\r\n"); +#endif + } + + if ((ROM_GetCurrBS() == BOOT_SOURCE_USB)||(ROM_GetCurrBS() == BOOT_SOURCE_USB_FULL)) { + debug_msg("Boot from USB ...\r\n"); +#if USB_WRITELOADER + bl_usb(); //never returned. +#else + bl_displayErrMsg("loader must be STORAGEEXT = Usb\r\n"); +#endif + } +#endif +#endif + +#if !(USB_WRITELOADER || UART_UPDATE) + if (((gSpecialKeyCallBack == NULL) || gSpecialKeyCallBack()) && + ((gCardDetectCallBack == NULL) || gCardDetectCallBack())) { + if (card_open() == TRUE && fat_initFAT(uiheapBufferAddr, FAT_HEAP_BUFFER_SIZE) == TRUE) { +#if UPDATE_SIM_CODE + BOOL bWDTInit = UTL_canUpdateSecKey(); + if (bWDTInit && fat_open_rootfile(RUN_WRKEY_NAME) == TRUE) { + debug_msg("sim.bin exist\r\n"); // the others A or T are skipped. + // Read byte count specified in file directory entry + uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); + fat_close_rootfile(); + debug_msg("\r\n"); // for line end RRRRRRR.... + uiLoaderFunc |= FUNC_RUN_WRBIN; + } else { // exclude others update if FUNC_RUN_WRBIN is existing. +#elif (CRYPTO_ENGINE_SAMPLE == ENABLE) // Only for test flow + UINT32 index; + UINT32 timeElapse; + UINT32 output = uiUpdateMainBinBufAddr; + CRYPT_OP crypt_op_param; + UINT32 test_result = 0; + debug_msg("ENC test\r\n"); + crypt_op_param.op_mode = CRYPTO_CBC; + crypt_op_param.en_de_crypt = CRYPTO_ENCRYPT; + crypt_op_param.src_addr = (unsigned int)key_sample; + crypt_op_param.dst_addr = (unsigned int)output; + crypt_op_param.length = 16; + crypt_op_param.iv_init_en= 0; + + if(crypto_data_operation(EFUSE_OTP_1ST_KEY_SET_FIELD, crypt_op_param) != 0) { + debug_msg("ENC fail\r\n"); + } else { + debug_msg_var("output", (UINT32)output); + debug_msg_var("", *(UINT32 *)(output+0)); + debug_msg_var("", *(UINT32 *)(output+4)); + debug_msg_var("", *(UINT32 *)(output+8)); + debug_msg_var("", *(UINT32 *)(output+12)); + + debug_msg("OTP key\r\n"); + debug_msg_var("", *(UINT32 *)(CRYPTO_REG_BASE_ADDR+0x10)); + debug_msg_var("", *(UINT32 *)(CRYPTO_REG_BASE_ADDR+0x14)); + debug_msg_var("", *(UINT32 *)(CRYPTO_REG_BASE_ADDR+0x18)); + debug_msg_var("", *(UINT32 *)(CRYPTO_REG_BASE_ADDR+0x1C)); + } + + crypt_op_param.iv_init_en= 1; + bl_memcpy((void *)crypt_op_param.iv, (void *)key_sample, 16); + if(crypto_data_operation(EFUSE_OTP_1ST_KEY_SET_FIELD, crypt_op_param) != 0) { + debug_msg("ENC fail\r\n"); + } else { + debug_msg_var("IV", (UINT32)key_sample); + debug_msg_var("", *(UINT32 *)(key_sample+0)); + debug_msg_var("", *(UINT32 *)(key_sample+4)); + debug_msg_var("", *(UINT32 *)(key_sample+8)); + debug_msg_var("", *(UINT32 *)(key_sample+12)); + + debug_msg_var("IV output", (UINT32)output); + debug_msg_var("", *(UINT32 *)(output+0)); + debug_msg_var("", *(UINT32 *)(output+4)); + debug_msg_var("", *(UINT32 *)(output+8)); + debug_msg_var("", *(UINT32 *)(output+12)); + + debug_msg("OTP key\r\n"); + debug_msg_var("", *(UINT32 *)(CRYPTO_REG_BASE_ADDR+0x10)); + debug_msg_var("", *(UINT32 *)(CRYPTO_REG_BASE_ADDR+0x14)); + debug_msg_var("", *(UINT32 *)(CRYPTO_REG_BASE_ADDR+0x18)); + debug_msg_var("", *(UINT32 *)(CRYPTO_REG_BASE_ADDR+0x1C)); + } + + bl_memcpy((void *)uiUpdateMainBinBufAddr, (void *)_load_BOOT_EXEC_start_base, 32768); + + timeElapse = timer_getLdrElapse(); + shahw((const unsigned char *)uiUpdateMainBinBufAddr, 32768, pRSAKeyCRC32); + timeElapse = timer_getLdrElapse() - timeElapse; + debug_msg_var("HASH PIO 32K", timeElapse); + for(index = 0; index < 8; index ++) { + debug_msg_var("", pRSAKeyCRC32[index]); + } + + timeElapse = timer_getLdrElapse(); + shahw_dma((const unsigned char *)uiUpdateMainBinBufAddr, 32768, pRSAKeyCRC32); + timeElapse = timer_getLdrElapse() - timeElapse; + debug_msg_var("HASH DMA 32K", timeElapse); + for(index = 0; index < 8; index ++) { + debug_msg_var("", pRSAKeyCRC32[index]); + } + + /*ECDSA sample*/ + test_result = ecdsa_verify(hash_msg, pub_x, pub_y, sign_r, sign_s); + if(test_result) + debug_msg("ecdsa pass\r\n"); + else + debug_msg("ecdsa fail\r\n"); + + + //if(fat_open_rootfile(UPDATE_BURN_IMG_NAME) == TRUE) { + // uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); + // bl_process_update_sim_burn_loader(uiUpdateMainBinBufAddr, uiUpdateFileLen); + // fat_close_rootfile(); + while(1){}; + //} +#endif + // Update loader or not, loader is fixed to 16 KB + if (fat_open_rootfile(UPDATE_LOADER_NAME) == TRUE) { + // Read byte count specified in file directory entry + fat_read_rootfile((UINT8 *)uiUpdateBootloaderBufAddr, FAT_READ_TOTAL_FILE_LENGTH); + fat_close_rootfile(); + debug_msg("\r\n"); // for line end RRRRRRR.... + uiLoaderFunc |= FUNC_UPDATE_LOADER; + uiLoaderSize = *((UINT32 *)(uiUpdateBootloaderBufAddr + 0x24)); + } + // "Update FW" or "Run FW" function + // Update FW has higher priority + if (fat_open_rootfile(UPDATE_FW_NAME) == TRUE) { + NVTPACK_MEM mem_in ; + fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, SIZE_PRELOAD); + mem_in.p_data = (void *)uiUpdateMainBinBufAddr; + mem_in.len = uiUpdateFileLen; + // all in one bin + if (bl_chk_valid_all_in_one(&mem_in) == 0) { + // Read all + uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); + uiLoaderFunc |= FUNC_UPDATE_FW; + } else { + // only rtos + debug_msg("not all-in-one, force behavior as T bin.\r\n"); + adjusted_addr = 0; + adjusted_size = 0; + if (bl_load_rtos_from_non_nvtpack(uiUpdateMainBinBufAddr, uiUpdateFileLen, &adjusted_addr, &adjusted_size) == 0) { + uiFwBaseAddr = adjusted_addr; //fix compressed fit bl_checkDramScanFW() after copy its to temp area, see commit log + uiUpdateFileLen = adjusted_size; + } else { + bl_displayErrMsg("invalid firmware"); + } +#if UPDATE_EMU_CODE + uiLoaderFunc |= FUNC_UPDATE_FW; +#else + uiLoaderFunc |= FUNC_RUN_CARD; +#endif + + } + fat_close_rootfile(); + debug_msg("\r\n"); // for line end RRRRRRR.... + } + // Run FW has lower priority + else if (fat_open_rootfile(RUN_FW_NAME) == TRUE) { + NVTPACK_MEM mem_in ; + uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, SIZE_PRELOAD); + mem_in.p_data = (void *)uiUpdateMainBinBufAddr; + mem_in.len = uiUpdateFileLen; + if (bl_chk_valid_all_in_one(&mem_in) == 0) { + // Read all + uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); + } else { + // Read rtos + unsigned int adjusted_addr = 0; + unsigned int adjusted_size = 0; + if (bl_load_rtos_from_non_nvtpack(uiUpdateMainBinBufAddr, uiUpdateFileLen, &adjusted_addr, &adjusted_size) != 0) { + bl_displayErrMsg("invalid firmware"); + } else { + uiFwBaseAddr = adjusted_addr; //fix compressed fit bl_checkDramScanFW() after copy its to temp area, see commit log + uiUpdateFileLen = adjusted_size; + } + uiLoaderFunc |= FUNC_RUN_CARD; + } + fat_close_rootfile(); + debug_msg("\r\n"); // for line end RRRRRRR.... + uiLoaderFunc |= FUNC_RUN_CARD; + } +#if UPDATE_SIM_CODE + } +#endif + card_close(); + } else { + uiLoaderFunc |= FUNC_RUN_FLASH; + debug_msg("card open fail\r\n"); +// while (1); + } + } else if (((gSpecialKeyCallBack == NULL) || gSpecialKeyCallBack()) && + ((gCardDetectCallBack != NULL) || (gCardDetectCallBack() == FALSE))) { + uiLoaderFunc |= FUNC_RUN_FLASH; + debug_msg("No card inserted\r\n"); + } +#endif + if (uiLoaderFunc & FUNC_UPDATE_LOADER) { + bl_process_update_loader(uiUpdateBootloaderBufAddr, uiLoaderSize); + } + + // Run FW + UINT32 comp_addr = 0; + UINT32 comp_size = 0; + if (uiLoaderFunc & (FUNC_RUN_CARD | FUNC_UPDATE_FW)) { + debug_msg("RC\r\n"); + NVTPACK_MEM mem_in ; + int chk_valid_all_in_one; +#if (DRAM_RANGE_SCAN_EN == ENABLE) + // First word is code entry point address, once if entry address is 0xC000XXXX + // represent code is running on sram. + debug_msg("Check SRAM fw\r\n"); + if (bl_checkDramScanFW(uiUpdateMainBinBufAddr) == TRUE) { + + debug_msg("This fw is on SRAM\r\n"); + // Enable sram usage + SETREG32(0xF0900128, 0x00000002); + SETREG32(0xF0800128, 0x00000006); + SETREG32(0xF0020060, 0x00030002); + + debug_msg(Dec2HexStr(*((UINT32 *)SRAM_Start_FW))); + debug_msg("before jump\r\n"); +// while (b_debug_go == FALSE); + load_dram_scan(uiUpdateMainBinBufAddr, uiUpdateFileLen); + return *((UINT32 *)SRAM_Start_FW); + } +#endif + mem_in.p_data = (void *)uiUpdateMainBinBufAddr; + mem_in.len = uiUpdateFileLen; + chk_valid_all_in_one = bl_chk_valid_all_in_one(&mem_in); + if (chk_valid_all_in_one == 0) { + // all-in-one flow + // File len got from fat_read_rootfile() may exceed actual file size. + // In such condition, we should use info in NVTPACK_FW_HDR2 + if (((NVTPACK_FW_HDR2 *)uiUpdateMainBinBufAddr)->TotalSize < uiUpdateFileLen) { + uiUpdateFileLen = ((NVTPACK_FW_HDR2 *)uiUpdateMainBinBufAddr)->TotalSize; + mem_in.len = uiUpdateFileLen; + } +#if (REMOVED_FLASH == ENABLE) + bl_displayErrMsg("cannot process all-in-one fw"); +#else + uiFwBaseAddr = bl_process_all_in_one(uiUpdateMainBinBufAddr, uiUpdateFileLen, &p_dram_partition, uiLoaderFunc, &comp_addr, &comp_size); +#endif + } else { + // non-all-in-one flow + // check valid + if (uiLoaderFunc & FUNC_UPDATE_FW) { +#if UPDATE_EMU_CODE + bl_process_update_emu_firmware(uiUpdateMainBinBufAddr, uiUpdateFileLen); +#else + bl_displayErrMsg("cannot write non-all-in-one fw"); +#endif + } + uiFwBaseAddr = bl_process_rtos_only(uiUpdateMainBinBufAddr, mem_in.len, uiLoaderFunc, &comp_addr, &comp_size); + } + + // here uiFwBaseAddr is ready to use. + if (comp_addr == 0) { + HEADINFO *p_headinfo = (HEADINFO *)(uiFwBaseAddr + BIN_INFO_OFFSET_RTOS); + debug_msg("Nrml\r\n"); + if (chk_valid_all_in_one == 0) { + uiUpdateFileLen = p_headinfo->BinLength; + uiUpdateMainBinBufAddr = uiFwBaseAddr; + } else { + // uiUpdateFileLen is already set when file is loaded + } + } else { + debug_msg("Fcompress\r\n"); + //for speed up, u-boot only copy compressed rtos and loader needs to decode it + uiUpdateFileLen = bl_decompress_rtos(comp_addr, comp_size, uiFwBaseAddr); + uiUpdateMainBinBufAddr = uiFwBaseAddr; + } + debug_msg_var("uiUpdateFileLen", uiUpdateFileLen); + //boot from flash or update fw is no need to check sanity because of ecc, turn on it just for debug + if (uiLoaderFunc & FUNC_RUN_CARD) { + bl_checkFW(uiUpdateMainBinBufAddr, uiUpdateFileLen); + } + if (chk_valid_all_in_one == 0) { + bl_update_uItron_headInfo(uiFwBaseAddr, p_dram_partition); + } else { + debug_msg_var("fw load addr", uiUpdateMainBinBufAddr); + bl_update_uItron_headInfo(uiUpdateMainBinBufAddr, p_dram_partition); + } + } else { //boot from flash +#if (REMOVED_FLASH == DISABLE) +#if UPDATE_EMU_CODE +// UINT32 uiNandBlkSize; + // open flash + if (bl_flash_open() != 0) { + bl_displayErrMsg("flash open failed\r\n"); + } + debug_msg("RFlash\r\n"); + if (int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW, g_uiNandBlkSize, (UINT8 *)SDRAM_Start_FW, NAND_RW_FIRMWARE) < 0) { + bl_displayErrMsg(RWErrorMsg); + } + + uiUpdateFileLen = *(volatile UINT32 *)(SDRAM_Start_FW + 0x168); + + if (int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW + 1, uiUpdateFileLen - g_uiNandBlkSize, (UINT8 *)(SDRAM_Start_FW + g_uiNandBlkSize), NAND_RW_FIRMWARE) < 0) { + bl_displayErrMsg(RWErrorMsg); + } + + uiFwBaseAddr = bl_process_rtos_only(SDRAM_Start_FW, uiUpdateFileLen, uiLoaderFunc, &comp_addr, &comp_size); + bl_checkFW(SDRAM_Start_FW, uiUpdateFileLen); + uiUpdateMainBinBufAddr = SDRAM_Start_FW; + if (comp_addr == 0) { + debug_msg("Nrml\r\n"); + } else { + debug_msg("Fcompress not support\r\n"); + } + +#else + if (int_strg_obj != NULL) { + uiFwBaseAddr = bl_process_flash_boot((UINT8 *)SDRAM_Start_FW, &p_dram_partition, uiLoaderFunc, &comp_addr, &comp_size); + if (comp_addr == 0) { + uiUpdateMainBinBufAddr = uiFwBaseAddr; + } else { + //for speed up, u-boot only copy compressed rtos and loader needs to decode it + uiUpdateFileLen = bl_decompress_rtos(comp_addr, comp_size, uiFwBaseAddr); + uiUpdateMainBinBufAddr = uiFwBaseAddr; + } + // no need to bl_checkFW, because check sanity in flash_read + bl_update_uItron_headInfo(uiFwBaseAddr, p_dram_partition); + } else { + debug_msg("skip boot from flash.\r\n"); + } +#endif +#endif + } + + if (p_dram_partition) { + bl_update_loader_bininfo((unsigned char *)p_dram_partition->fdt_addr, uiLoaderFunc, uiUpdateFileLen); + if (bl_is_smp((unsigned char *)p_dram_partition->fdt_addr)) { + debug_msg("amp(rtos)\r\n"); + bl_entry_boot((unsigned char *)p_dram_partition->fdt_addr, uiFwBaseAddr, CORE_ID_1); + } + } + +#if UPDATE_EMU_CODE + debug_msg_var("emu fw len", uiUpdateFileLen); +#endif + g_rtos_load_addr = uiUpdateMainBinBufAddr; + g_rtos_target_addr = uiFwBaseAddr; + g_rtos_size = uiUpdateFileLen; + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); + debug_msg_var("rtos start", uiFwBaseAddr); + return uiFwBaseAddr; + +} + +_THUMB2 void loader_setUpdateFwName(char *fileName) +{ + strncpy((char *)UPDATE_FW_NAME, fileName, sizeof(UPDATE_FW_NAME)); +} + +_THUMB2 void loader_setUpdateLdrName(char *fileName) +{ + strncpy((char *)UPDATE_LOADER_NAME, fileName, sizeof(UPDATE_LOADER_NAME)); +} + +_THUMB2 void loader_setRunFwName(char *fileName) +{ + strncpy((char *)RUN_FW_NAME, fileName, sizeof(RUN_FW_NAME)); +} + +_THUMB2 void loader_setRecoveryFwName(char *fileName) +{ + strncpy((char *)RECOVERY_FW_NAME, fileName, sizeof(RECOVERY_FW_NAME)); +} + +_THUMB2 void loader_setRecoveryPartitionID(UINT32 partition_id) +{ + g_uiPartitionID = partition_id; +} + +_THUMB2 void loader_setVersion(UINT32 version) +{ + g_uiVersion = version; +} + +_THUMB2 void loader_installSpecialKeyCB(LDR_SPECIAL_KEY_CB callback) +{ + gSpecialKeyCallBack = callback; +} + +_THUMB2 void loader_installCardDetectCB(LDR_CARD_DETECT_CB callback) +{ + gCardDetectCallBack = callback; +} + +_THUMB2 void loader_installRecoveryTriggerCB(LDR_RECOVERY_TRIGGER_CB callback) +{ + gRecoveryTriggerCallBack = callback; +} + +_THUMB2 void loader_setStorageIntType(STORAGEINT type, PSTORAGE_OBJ strg_obj) +{ + gStorageIntType = type; + int_strg_obj = strg_obj; +} diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h new file mode 100755 index 000000000000..4e1e7988a2bb --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.h @@ -0,0 +1,299 @@ +/** + @file bl_func.h + @brief Header file for main function + + Copyright Novatek Microelectronics Corp. 2014. All rights reserved. +*/ +#ifndef _BL_MAIN_H +#define _BL_MAIN_H + +#include "main.h" +#include "IOReg.h" +#include "GPIO.h" +#include "nvtpack.h" +#include "dram_partition_info.h" +#include "loader.h" +//------------------------------------------------------------------------------ +// Compiler option +// +// These compiler option are define in MakeConfig.txt +//!!!!!!!!!!!!!!!!!!! DO NOT MODIFY COMPILER OPTION HERE !!!!!!!!!!!!!!!!!!!! +//------------------------------------------------------------------------------ +#ifndef SECURE_DECRYPT_UBOOT +#define SECURE_DECRYPT_UBOOT 0 //Decrypt uboot sample code +#endif //Option move to ModelConfig_EMU_EVB_XXX.txt + +#ifndef SECURE_DECRYPT_OPTEE_OS +#define SECURE_DECRYPT_OPTEE_OS 0 //Decrypt optee_os sample code +#endif //Option move to ModelConfig_EMU_EVB_XXX.txt + +#ifndef SECURE_DECRYPT_BL31 +#define SECURE_DECRYPT_BL31 0 //Decrypt bl31 sample code +#endif //Option move to ModelConfig_EMU_EVB_XXX.txt + +#ifndef SECURE_SIGNATURE_BY_AES +#define SECURE_SIGNATURE_BY_AES 0 //using aes to decrypt signature +#endif //Option move to ModelConfig_EMU_EVB_XXX.txt + + +#if (SECURE_DECRYPT_UBOOT || SECURE_DECRYPT_OPTEE_OS || SECURE_DECRYPT_BL31) +#define SECURE_OFFSET 1024 //Decrypt uboot from which offset +#endif + +#if (_FPGA_EMULATION_ == 1) +#define IS_SECURE() (SECURE_DECRYPT_UBOOT || SECURE_DECRYPT_OPTEE_OS || SECURE_DECRYPT_BL31) +#define PCIE_SUPPORT DISABLE +#define AT80C51_SUPPORT DISABLE +#else +#define IS_SECURE() is_secure_enable() +#define PCIE_SUPPORT DISABLE +#define AT80C51_SUPPORT ENABLE +#endif + +#if (PCIE_SUPPORT) +#define IS_RC() utl_is_boot_as_rc() +#else +#define IS_RC() (1) +#endif + +#if (AT80C51_SUPPORT) +#define IS_AT80C51_OPENED() at80c51_is_opened() +#else +#define IS_AT80C51_OPENED() (0) +#endif + +// Define LED_FUNCTION == ENABLE will enable LED on/off in boot loader +#define LED_FUNCTION ENABLE//DISABLE + +// FW checking method, support checksum & CRC now +//#define FW_CHECK_NOCHECK 0 +//#define FW_CHECK_CHECKSUM 1 +//#define FW_CHECK_CRC 2 +#ifndef FW_CHECK_METHOD +#define FW_CHECK_METHOD FW_CHECK_CHECKSUM +#endif + +///#define FW_CHECK_INSTRUCTION0 0xE59FF018 + +// Optional pseudo string for checksum & CRC checking +#define FW_CHECK_PSEUDO_STR_EN DISABLE +#if (FW_CHECK_PSEUDO_STR_EN == ENABLE) +// Must sync to MakeConfig.txt +#define FW_CHECK_PSEUDO_STR "DSC_FW" +#endif + +// Determine if need to support compressable main code +#ifndef _MAINCODE_COMPRESS_ +#define _MAINCODE_COMPRESS_ 0 +#endif + +#ifndef STORAGEINT_SPI +#define STORAGEINT_SPI 0 +#endif + +#define FW_EXCEED_16MB_TEST DISABLE + +//------------------------------------------------------------------------------ +// Global definition +//------------------------------------------------------------------------------ +#define LOADER_CODE_SIZE 0x8000 // Reserve 32 KB + +#define RESERVED_DATA_SIZE 0x4000 // Fixed to 16 KB + +//Once if optee exist need modify to 0x02800000 +#define SDRAM_Start_FW 0x02800000 // DRAM uITRON starting address +//#define SDRAM_Start_FW 0x02000000 +//#endif + +#define SRAM_Start_FW 0xF07c0000 // SRAM FW starting address + +#define SRAM_TAG 0xF0000000 // SRAM tag + +#define CORE2_JUMP_ADDR 0x00000000 // Core2 entry code should put on 0, because when core2 reset is released, core2 will jump to 0 and run + +#define CPU_TIMER_FREQ 3000000 // 3MHz + +// Loader checking +#define LOADER_TAG_OFFSET 0x30 +#define LOADER_TAG_VALUE 0xAA55 +#define BOOTVER_SET(OutMaj,OutMin,InnMaj,InnMin) (((OutMaj)<<24)|((OutMin)<<16)|((InnMaj)<<8)|((InnMin))) + +#define BOOTVER_GETOuterMajor(Ver) (((Ver)&0xFF000000)>>24) +#define BOOTVER_GETOuterMinor(Ver) (((Ver)&0x00FF0000)>>16) +#define BOOTVER_GETInnerMajor(Ver) (((Ver)&0x0000FF00)>>8) +#define BOOTVER_GETInnerMinor(Ver) (((Ver)&0x000000FF)) + +// Define loader version (_LDR_VER_) in MakeConfig.txt +#define BOOTLOADER_OUTERMAJOR (((_LDR_VER_)&0xFF000000)>>24) +#define BOOTLOADER_OUTERMINOR (((_LDR_VER_)&0x00FF0000)>>16) +#define BOOTLOADER_INNERMAJOR (((_LDR_VER_)&0x0000FF00)>>8) +#define BOOTLOADER_INNERMINOR (((_LDR_VER_)&0x000000FF)) + +// spi-nand, spi-nor DTR tunning pattern +#define DTR_TUNNING_PATTERN_DATA1 0x0F0F0F0F //4bit +#define DTR_TUNNING_PATTERN_DATA2 0x00FF00FF //8bit +#define DTR_TUNNING_PATTERN_SIZE 0x1000 + +// Operation of boot loader +#define FUNC_UPDATE_FW 0x01 // Read FW code from card and update to NAND and run +#define FUNC_UPDATE_LOADER 0x02 // Read boot loader code from card and update to NAND +#define FUNC_RUN_CARD 0x04 // Read FW code from card and run +#define FUNC_RUN_FLASH 0x08 // Read FW code from internal flash and run +#define FUNC_UPDATE_CAL 0X10 // Update CAL data +#define FUNC_RUN_WRBIN 0X20 // RUN wrkey data +#define FUNC_RUN_UBOOT 0X40 // Read Uboot from card and run +#define FUNC_UPDATE_FW_DONE 0x0100 // update f/w to NAND/SPI done + +// API to turn on / off LED +#if (LED_FUNCTION == ENABLE) +// Red LED (DGPIO 6) +// Green LED (DGPIO 9) +#define TurnOff_RedLED() OUTREG32(CPE_GPIO_BASE + 0x4C, 0x00000040) +#define TurnOn_RedLED() OUTREG32(CPE_GPIO_BASE + 0x38, 0x00000040) +#define TurnOff_GreenLED() OUTREG32(CPE_GPIO_BASE + 0x4C, 0x00000200) +#define TurnOn_GreenLED() OUTREG32(CPE_GPIO_BASE + 0x38, 0x00000200) +#else +#define TurnOff_RedLED() +#define TurnOn_RedLED() +#define TurnOff_GreenLED() +#define TurnOn_GreenLED() +#endif + +//Configure build as USB write loader @ ModelConfig_EMU_EVB.txt +//UART & USB can enable at the same time. +#if (STORAGE_EXT_TYPE == STORAGE_EXT_USB) || (STORAGE_EXT_TYPE == STORAGE_EXT_UART) +#define USB_WRITELOADER ENABLE +#define UART_UPDATE ENABLE +#else +#define USB_WRITELOADER DISABLE +#define UART_UPDATE DISABLE +#endif +#define UART_UPDATE_ DISABLE +#define UPDATE_EMU_CODE DISABLE +#define REMOVED_FLASH DISABLE +#define UPDATE_SIM_CODE DISABLE +#define UITRON_FW DISABLE +#define CRYPTO_ENGINE_SAMPLE DISABLE +#define RUN_UITRON_FW DISABLE // for FPGA, boot rtos bypass u-boot +#define FDT_SUPPORT ENABLE +#define DUAL_RTOS_SUPPORT DISABLE // only for rtos-uvc project (no longer support) +#define MULTI_CODE_FLOW ENABLE +//#define _FLASH_FREQ_MHZ_ 120 // uncomment it to set flash frequency +#define DUMP_FLOW_TIMESTAMP DISABLE // shows flow timestamp for debugging fastboot + +#define NVT_CC_CORE2_START CC_CPU2_CPU1_CMDBUF_REG2 +#define CC_CPU1_WARM_RESET_REG2 CC_CORE2_WARM_RST_REG //Core1 warm reset entry +#define AARCH64_MODE DISABLE + +#define DDR_SCAN_REDUCE_CODE DISABLE + +#define EMUKIT 0 +#define DEMOKIT 0x1800000 +#define RESUME_ADDR DEMOKIT + +//#NT#2018/03/07#Ben Wang -begin +//#NT#Support EMMC boot flow +#define EMMC_BLOCK_SIZE 0x200 +//#NT#2018/03/07#Ben Wang -end + +/** + * @brief FdtFast Flash Offset + */ +#if defined(_STORAGEINT_NandSpi_) \ + || defined(_STORAGEINT_NandEccBCH_) \ + || defined(_STORAGEINT_EMMC_) \ + || defined(_STORAGEINT_EMMC_NAND_COMBO_) +#define FDT_OFFSET 0x40000 +#define FDTFAST_OFFSET 0x80000 +#elif defined(_STORAGEINT_SpiFlash_) +#define FDT_OFFSET 0x10000 +#define FDTFAST_OFFSET 0x50000 +#elif defined(_STORAGEINT_NONE_) +#define FDT_OFFSET 0x40000 +#define FDTFAST_OFFSET 0x80000 +#endif + + +#if defined(_DIRECT_BOOT_) +#define BOOT_LINUX_SUPPORT ENABLE +#else +#define BOOT_LINUX_SUPPORT DISABLE +#endif + +#if defined(_FASTBOOT_) +#define FDTFAST_SENSOR ENABLE +#else +#define FDTFAST_SENSOR DISABLE +#endif + +#if (BOOT_LINUX_SUPPORT) && (!FDT_SUPPORT) +/** + * because boot linux need fdt to pass chosen, + * ramdisk and other parameters to kernel, + */ +#error "BOOT_LINUX_SUPPORT need FDT_SUPPORT" +#endif + +/** + * if nvt-fastboot.bin is too large (> 128KB), + * nvt-fastboot.bin cannot be loaded to SRAM + * for this case, nvt-fastboot.bin only can be loaded to DRAM + * it will cause fastboot speed has a little down. + */ +#define FDTFAST_FROM_DRAM ENABLE + +#define StartNandBlkUpdateLoader 0 + +/** + @name Assert macros +*/ +//@{ +#define ASSERT_CONCAT_(a, b) a##b +#define ASSERT_CONCAT(a, b) ASSERT_CONCAT_(a, b) + +#if defined(__COUNTER__) + +#define STATIC_ASSERT(expr) \ + enum { ASSERT_CONCAT(FAILED_STATIC_ASSERT_, __COUNTER__) = 1/(expr) } + +#else + +// This might cause compile error when writing STATIC_ASSERT at the same line +// in two (or more) files and one file include another one. +#define STATIC_ASSERT(expr) \ + enum { ASSERT_CONCAT(FAILED_STATIC_ASSERT_, __LINE__) = 1/(expr) } + +#endif +//@} + +extern char _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[]; + +extern UINT32 LoaderInternalInfo[]; + +extern PSTORAGE_OBJ int_strg_obj; + +//------------------------------------------------------------------------------ +// internal functions +//------------------------------------------------------------------------------ +extern int bl_chk_valid_all_in_one(NVTPACK_MEM *p_mem_all_in_one); +extern int bl_chk_uboot(unsigned int addr, unsigned int size); +extern unsigned int bl_process_all_in_one(UINT32 uiFwBuf, UINT32 uiFwBufSize, DRAM_PARTITION **pOut_dram_partition, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size); +extern int bl_boot_uboot(unsigned char *p_fdt); +extern int bl_chk_fdt(unsigned int addr, unsigned int size); +extern int bl_copy_fdt_to_fdt_addr(unsigned char *p_fdt /*IN*/, unsigned char **pp_fdt /*OUT*/); +extern int bl_flash_open(void); +// Exported functions +//------------------------------------------------------------------------------ +extern UINT32 bl_mainFlow(void); +extern UINT32 BaseOfStack; + +// project(customer) main function +extern void prj_main(void); +extern void bl_read_rtos_addr(UINT32 *pLoadAddr, UINT32 *pTargetAddr, UINT32 *pSize); +extern void *bl_get_kernel_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/); +extern void *bl_get_rootfs_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/); + +// decrypt +int do_decrypt_aes(unsigned int input_data, unsigned int output_data, unsigned int *output_size, unsigned int partition_size); + +#endif diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_linux.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_linux.c new file mode 100755 index 000000000000..21838312e55d --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_linux.c @@ -0,0 +1,908 @@ +#include <StorageDef.h> +#include <string.h> +#include <debug.h> +#include <nvtpack.h> +#include <emb_partition_info.h> +#include <libfdt.h> +#include <Cache.h> +#include <timer.h> +#include <crypto.h> +#include <compiler.h> +#include "bl_func.h" +#include "bl_lowlevel_init.h" +#include "bl_linux.h" +#include "arch_timer.h" +#include "modelext_parser.h" +#include "bin_info.h" +#include "shm_info.h" + + + +#if (BOOT_LINUX_SUPPORT) + +#define CFG_INDEP_RAMDISK ENABLE +#if defined(__aarch64__) +#define CFG_LINUX_START_OFFSET 0x200000 /* MIN_KIMG_ALIGN SZ_2M */ +#else +#define CFG_LINUX_START_OFFSET 0x8000 +#endif +#define CFG_MULTI_MKIMAGE_LEN 0x8 //mkimage's multi image always comes 8 bytes for sub-image size +#define CFG_BOOTARG_MAX_LEN 0x1000 +#define CFG_LINUX_MAX_CODE_SIZE 0x01000000 /* for 64MB dram, assume linux (ro+rw+bss) limited on this size */ +#define CFG_LINUX_COMP_MAX_SIZE 0xA00000 /* max uImage size */ +#define CFG_RAMFS_COMP_MAX_SIZE 0x500000 /* max ramdisk size */ +#define CFG_GZ_WORK_SIZE 0x10000 /* 64KB are enough */ +#define CFG_CORE2_ENTRY_REG 0xF07F8000 +#ifndef CONFIG_SYS_FDT_PAD +#define CONFIG_SYS_FDT_PAD 0x3000 /* from uboot */ +#endif + +#define MEM_PATH_LINUX "/memory" +#define MEM_PATH_LINUXTMP "/nvt_memory_cfg/linuxtmp" +#define MEM_PATH_FDT "/nvt_memory_cfg/fdt" +#define MEM_PATH_ATF "/nvt_memory_cfg/atf" + +#define IS_BIN_OVERLAP(addr1, size1, addr2, size2) (!(((addr1 + size1 - 1) < addr2) || (addr1 > (addr2 + size2 - 1)))) + +#define _THUMB2 __attribute__((target("thumb2"))) + +#define ALIGN_FLOOR(value, base) ((value) & ~((base)-1)) +#define ALIGN_CEIL(value, base) ALIGN_FLOOR((value) + ((base)-1), base) +#define ALIGN_CEIL_64(a) ALIGN_CEIL(a, 64) ///< Round Up to 64 + +#define DBG_ERR printf + +// sync from uboot +#if defined(__aarch64__) +#define CONFIG_BOOTARGS_COMMON "rootwait console=ttyS0,115200 debug_boot_weak_hash print-fatal-signals=1 " +#else +#define CONFIG_BOOTARGS_COMMON "rootwait nprofile_irq_duration=on " +#endif + +#define CONFIG_BOOTARGS_RAMDISK CONFIG_BOOTARGS_COMMON "root=/dev/ram0 rootfstype=ramfs rdinit=/linuxrc " +#if defined(_STORAGEINT_NandSpi_) +#define CONFIG_BOOTARGS CONFIG_BOOTARGS_COMMON "root=ubi0:rootfs rootfstype=ubifs ubi.fm_autoconvert=1 init=/linuxrc " +#elif defined(_STORAGEINT_SpiFlash_) +#define CONFIG_BOOTARGS CONFIG_BOOTARGS_COMMON "rootfstype=squashfs ro " +#elif defined(_STORAGEINT_EMMC_) +#define CONFIG_BOOTARGS CONFIG_BOOTARGS_COMMON "rootfstype=ext4 rw " +#else //SD +#define CONFIG_BOOTARGS CONFIG_BOOTARGS_COMMON "root=/dev/mmcblk0p2 noinitrd rootfstype=ext3 init=/linuxrc " +#endif /* _NVT_ROOTFS_TYPE_ */ + +/* + * Legacy format image header, + * all data in network byte order (aka natural aka bigendian). + */ +#define IH_MAGIC 0x27051956 /* Image Magic Number */ +#define IH_NMLEN 32 /* Image Name Length */ +typedef struct image_header { + unsigned int ih_magic; /* Image Header Magic Number */ + unsigned int ih_hcrc; /* Image Header CRC Checksum */ + unsigned int ih_time; /* Image Creation Timestamp */ + unsigned int ih_size; /* Image Data Size */ + unsigned int ih_load; /* Data Load Address */ + unsigned int ih_ep; /* Entry Point Address */ + unsigned int ih_dcrc; /* Image Data CRC Checksum */ + unsigned char ih_os; /* Operating System */ + unsigned char ih_arch; /* CPU architecture */ + unsigned char ih_type; /* Image Type */ + unsigned char ih_comp; /* Compression Type */ + unsigned char ih_name[IH_NMLEN]; /* Image Name */ +} image_header_t; + +typedef struct _LINUX_RESERVED_MEM { + char name[32]; + uintptr_t addr; + unsigned long size; +} LINUX_RESERVED_MEM; + +/** + *linuxtmp address must in range of linux memory + */ +typedef struct _FDT_INFO { + unsigned long linux_addr; + unsigned long linux_size; + unsigned long linuxtmp_addr; + unsigned long linuxtmp_size; + unsigned long fdt_addr; + unsigned long fdt_size; + unsigned long reserved_cnt; + LINUX_RESERVED_MEM reserved[8]; +} FDT_INFO; + +typedef struct _LINUXTMP_PARTITION { + unsigned long tmp_begin; + unsigned long tmp_curr; + unsigned long tmp_end; + unsigned long fdt_addr; + unsigned long fdt_size; + unsigned long ramfs_addr; + unsigned long ramfs_size; + unsigned long bootargs_addr; + unsigned long bootargs_size; + unsigned long lz_linux_addr; + unsigned long lz_linux_size; +} LINUXTMP_PARTITION; + +typedef struct _LINUXBOOT_INFO { + FDT_INFO fdt_info; + LINUXTMP_PARTITION linuxtmp; +} LINUXBOOT_INFO; + +static void *m_fdt = NULL; +static unsigned int m_timer_interval = 0; +static LINUXBOOT_INFO info = {0}; + +_THUMB2 static void *fdt_get_base(void) +{ + return m_fdt; +} + +_THUMB2 static int fdt_read_mem_node(const char *path, unsigned long *p_addr, unsigned long *p_size) +{ + unsigned char *p_fdt = (unsigned char *)fdt_get_base(); + + int len; + int nodeoffset; + const void *nodep; /* property node pointer */ + + // get linux space + nodeoffset = fdt_path_offset(p_fdt, path); + if (nodeoffset < 0) { + DBG_ERR("failed to offset for %s = %d \n", path, nodeoffset); + return -1; + } + +#if defined(__aarch64__) + if (strncmp(path, "/nvt_memory_cfg/", strlen("/nvt_memory_cfg/")) == 0) { + nodep = fdt_getprop(p_fdt, nodeoffset, "reg", &len); + if (len == 0 || nodep == NULL) { + DBG_ERR("failed to access reg.\n"); + return -1; + } else { + unsigned int *p_data = (unsigned int *)nodep; + *p_addr = be32_to_cpu(p_data[0]); + *p_size = be32_to_cpu(p_data[1]); + } + } else if (strncmp(path, "/memory", strlen("/memory")) == 0) { + nodep = fdt_getprop(p_fdt, nodeoffset, "reg", &len); + if (len == 0 || nodep == NULL) { + DBG_ERR("failed to access reg.\n"); + return -1; + } else { + unsigned long *p_data = (unsigned long *)nodep; + *p_addr = be64_to_cpu(p_data[0]); + *p_size = be64_to_cpu(p_data[1]); + } + } else if (strncmp(path, "/hdal-memory/", strlen("/hdal-memory/")) == 0) { + nodep = fdt_getprop(p_fdt, nodeoffset, "reg", &len); + if (len == 0 || nodep == NULL) { + DBG_ERR("failed to access reg.\n"); + return -1; + } else { + unsigned long *p_data = (unsigned long *)nodep; + *p_addr = be64_to_cpu(p_data[2]); + *p_size = be64_to_cpu(p_data[3]); + } + } else { + DBG_ERR("failed to parse %s\n", path); + return -1; + } +#else + if (strncmp(path, "/cpus/", strlen("/cpus/")) == 0) { + nodep = fdt_getprop(p_fdt, nodeoffset, "cpu-release-addr", &len); + if (len == 0 || nodep == NULL) { + DBG_ERR("failed to access cpu-release-addr.\n"); + return -1; + } else { + unsigned long *p_data = (unsigned long *)nodep; + *p_addr = be32_to_cpu(p_data[0]); + } + } else if (strncmp(path, "/hdal-memory/", strlen("/hdal-memory/")) == 0) { + nodep = fdt_getprop(p_fdt, nodeoffset, "reg", &len); + if (len == 0 || nodep == NULL) { + DBG_ERR("failed to access reg.\n"); + return -1; + } else { + unsigned long *p_data = (unsigned long *)nodep; + int addr_cells = fdt_address_cells(p_fdt, nodeoffset); + if (addr_cells == 2) { + //new, chip_id addr size + *p_addr = be64_to_cpu(p_data[1]); + *p_size = be64_to_cpu(p_data[2]); + } else { + //new, chip_id addr size + *p_addr = be64_to_cpu(p_data[0]); + *p_size = be64_to_cpu(p_data[1]); + } + } + } else { + nodep = fdt_getprop(p_fdt, nodeoffset, "reg", &len); + if (len == 0 || nodep == NULL) { + DBG_ERR("failed to access reg.\n"); + return -1; + } else { + unsigned int *p_data = (unsigned int *)nodep; + *p_addr = be32_to_cpu(p_data[0]); + *p_size = be32_to_cpu(p_data[1]); + } + } +#endif + return 0; +} + + +_THUMB2 static int fdt_read_reserved_mem_node(FDT_INFO *p_info) +{ + unsigned char *p_fdt = (unsigned char *)fdt_get_base(); + + int len; + int nodeoffset; + const char path[] = "/reserved-memory"; + nodeoffset = fdt_path_offset(p_fdt, path); + if (nodeoffset < 0) { + DBG_ERR("failed to offset for %s = %d \n", path, nodeoffset); + return -1; + } + + int child; + fdt_for_each_subnode(child, p_fdt, nodeoffset) { + LINUX_RESERVED_MEM *p = (LINUX_RESERVED_MEM *)&p_info->reserved[p_info->reserved_cnt]; + strncpy(p->name, fdt_get_name(p_fdt, child, &len), sizeof(p->name) - 1); + unsigned long *p_data = (unsigned long *)fdt_getprop(p_fdt, child, "reg", &len); + if (p_data) { +#if defined(__aarch64__) + p->addr = be64_to_cpu(p_data[0]); + p->size = be64_to_cpu(p_data[1]); +#else + p->addr = be32_to_cpu(p_data[0]); + p->size = be32_to_cpu(p_data[1]); +#endif + p_info->reserved_cnt++; + if (p_info->reserved_cnt > sizeof(p_info->reserved) / sizeof(p_info->reserved[0])) { + DBG_ERR("linux_reserved_mem_cnt too large: %ld\n", p_info->reserved_cnt); + return -1; + } + } + + } + return 0; +} + + +_THUMB2 static int fdt_get_info(FDT_INFO *p_info) +{ + int er; + if ((er = fdt_read_mem_node(MEM_PATH_LINUX, &p_info->linux_addr, &p_info->linux_size)) != 0) { + return er; + } + if ((er = fdt_read_mem_node(MEM_PATH_LINUXTMP, &p_info->linuxtmp_addr, &p_info->linuxtmp_size)) != 0) { + return er; + } + if ((er = fdt_read_mem_node(MEM_PATH_FDT, &p_info->fdt_addr, &p_info->fdt_size)) != 0) { + return er; + } +#if defined(__aarch64__) + if ((er = fdt_read_mem_node(MEM_PATH_ATF, &p_info->atf_addr, &p_info->atf_size)) != 0) { + return er; + } +#endif + if ((er = fdt_read_reserved_mem_node(p_info)) != 0) { + DBG_ERR("no reversed node\r\n"); + } + return 0; +} + +_THUMB2 static int create_new_fdt(LINUXTMP_PARTITION *p_linuxtmp) +{ + unsigned char *p_fdt = (unsigned char *)fdt_get_base(); + + int new_size = ALIGN_CEIL(fdt_totalsize(p_fdt) + CONFIG_SYS_FDT_PAD, 0x1000); + + p_linuxtmp->fdt_addr = p_linuxtmp->tmp_curr; + p_linuxtmp->fdt_size = new_size; + p_linuxtmp->tmp_curr += new_size; + + if (p_linuxtmp->tmp_curr >= p_linuxtmp->tmp_end) { + DBG_ERR("linuxtmp memory is too small, need more %d\n", p_linuxtmp->tmp_curr - p_linuxtmp->tmp_end); + return -1; + } + + int err = fdt_open_into(p_fdt, (void *)p_linuxtmp->fdt_addr, new_size); + if (err != 0) { + DBG_ERR("fdt move failed!"); + return -1; + } + + return 0; +} + + +#if (CFG_INDEP_RAMDISK) +_THUMB2 static int load_ramdisk(LINUXTMP_PARTITION *p_linuxtmp) +{ + int er = 0; + int rootfs_partition_id = -1; + unsigned long bfc_data = p_linuxtmp->tmp_curr; + + int blk_size = (int)int_strg_obj->flash_getBlockSize(); + EMB_PARTITION *p_emb_partition_rootfs = bl_get_rootfs_partition(fdt_get_base(), &rootfs_partition_id); + + //load 1st block + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rootfs->PartitionOffset / blk_size, blk_size, (UINT8 *)bfc_data, NAND_RW_FIRMWARE)) < 0) { + DBG_ERR("NG ramdisk-1\r\n"); + return -1; + } + + NVTPACK_BFC_HDR *p_hdr = (NVTPACK_BFC_HDR *)bfc_data; + + if (p_hdr->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { +#if (_GZIP_ENABLE_API_ == 1) + //bfc compressed ramdisk + unsigned int bfc_size = be32_to_cpu(p_hdr->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); + unsigned long comp_ramfs_addr = bfc_data + sizeof(NVTPACK_BFC_HDR); + unsigned int comp_ramfs_size = be32_to_cpu(p_hdr->uiSizeComp); + + p_linuxtmp->tmp_curr += ALIGN_CEIL_64(bfc_size); + p_linuxtmp->ramfs_addr = p_linuxtmp->tmp_curr; + p_linuxtmp->ramfs_size = be32_to_cpu(p_hdr->uiSizeUnComp); + p_linuxtmp->tmp_curr = p_linuxtmp->ramfs_addr + ALIGN_CEIL_64(p_linuxtmp->ramfs_size); + if (p_linuxtmp->tmp_curr >= p_linuxtmp->tmp_end) { + DBG_ERR("linuxtmp memory is too small, need more %d\n", p_linuxtmp->tmp_curr - p_linuxtmp->tmp_end); + return -1; + } + + unsigned int remain_blocks = ALIGN_CEIL(bfc_size - blk_size, blk_size) / blk_size; + if ((er = int_strg_obj->flash_readSectors((p_emb_partition_rootfs->PartitionOffset / blk_size) + 1, remain_blocks*blk_size, (UINT8 *)(bfc_data + blk_size), NAND_RW_FIRMWARE)) < 0) { + DBG_ERR("NG ramdisk-2\r\n"); + return -1; + } + //uncompress gzip + UINT32 algorithm = be32_to_cpu(p_hdr->uiAlgorithm) & 0xFF; + if (algorithm != 12) { + DBG_ERR("must gzip\r\n"); + return -1; + } + GZ_Uncompress((unsigned char *)comp_ramfs_addr, (unsigned char *)p_linuxtmp->ramfs_addr, comp_ramfs_size); +#else + DBG_ERR("ungzip is not supported in this build.\r\n"); + return -1; +#endif + } else { + p_linuxtmp->tmp_curr += ALIGN_CEIL_64(sizeof(image_header_t)); + p_linuxtmp->ramfs_addr = p_linuxtmp->tmp_curr; + + uintptr_t load_addr = p_linuxtmp->ramfs_addr - sizeof(image_header_t); + + //move 1st block + memmove((void *)(load_addr), (void *)bfc_data, blk_size); + + image_header_t *p_hdr = (image_header_t *)load_addr; + if (be32_to_cpu(p_hdr->ih_magic) != IH_MAGIC) { + DBG_ERR("ramdisk IH_MAGIC is wrong\r\n"); + return -1; + } + + //IH_TYPE_RAMDISK = 3 + if (p_hdr->ih_type != 3) { + DBG_ERR("ih_type (0x%X) != IH_TYPE_RAMDISK\r\n", (int)p_hdr->ih_type); + return -1; + } + // load rest of image data + unsigned int image_size = be32_to_cpu(p_hdr->ih_size) + sizeof(image_header_t); + p_linuxtmp->ramfs_size = be32_to_cpu(p_hdr->ih_size); + p_linuxtmp->tmp_curr = p_linuxtmp->ramfs_addr + ALIGN_CEIL_64(p_linuxtmp->ramfs_size); + + unsigned int remain_blocks = ALIGN_CEIL(image_size - blk_size, blk_size) / blk_size; + if ((er = int_strg_obj->flash_readSectors((p_emb_partition_rootfs->PartitionOffset / blk_size)+1, remain_blocks*blk_size, (UINT8 *)(load_addr + blk_size), NAND_RW_FIRMWARE)) < 0) { + DBG_ERR("NG ramdisk-2\r\n"); + return -1; + } + } + + return 0; +} +#endif + +_THUMB2 static int load_linux(LINUXTMP_PARTITION *p_linuxtmp, FDT_INFO *p_fdt_info) +{ + int er = 0; + int kernel_partition_id = -1; + uintptr_t bfc_data = p_linuxtmp->tmp_curr; + uintptr_t load_addr = p_fdt_info->linux_addr + CFG_LINUX_START_OFFSET - sizeof(image_header_t); + + int blk_size = (int)int_strg_obj->flash_getBlockSize(); + EMB_PARTITION *p_emb_partition_kernel = bl_get_kernel_partition(fdt_get_base(), &kernel_partition_id); + + if (IS_SECURE() == 0 || SECURE_DECRYPT_RTOS == 0) { + //load 1st block + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_kernel->PartitionOffset / blk_size, blk_size, (UINT8 *)bfc_data, NAND_RW_FIRMWARE)) < 0) { + DBG_ERR("NG kernel-1\r\n"); + return -1; + } + + NVTPACK_BFC_HDR *p_hdr = (NVTPACK_BFC_HDR *)bfc_data; + + if (p_hdr->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { +#if (_GZIP_ENABLE_API_ == 1) + //bfc compressed kernel + unsigned int bfc_size = be32_to_cpu(p_hdr->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); + unsigned long comp_kernel_addr = bfc_data + sizeof(NVTPACK_BFC_HDR); + unsigned int comp_kernel_size = be32_to_cpu(p_hdr->uiSizeComp); + + p_linuxtmp->tmp_curr += ALIGN_CEIL_64(bfc_size); + p_linuxtmp->lz_linux_addr = p_linuxtmp->tmp_curr; + p_linuxtmp->lz_linux_size = be32_to_cpu(p_hdr->uiSizeUnComp); + p_linuxtmp->tmp_curr = p_linuxtmp->lz_linux_addr + ALIGN_CEIL_64(p_linuxtmp->lz_linux_size); + if (p_linuxtmp->tmp_curr >= p_linuxtmp->tmp_end) { + DBG_ERR("linuxtmp memory is too small, need more %d\n", p_linuxtmp->tmp_curr - p_linuxtmp->tmp_end); + return -1; + } + + // check linux overlap with nvt_memory_cfg/fdt + if (IS_BIN_OVERLAP(load_addr, p_linuxtmp->lz_linux_size, p_fdt_info->fdt_addr, p_fdt_info->fdt_size)) { + DBG_ERR("OVERLAP: linux(0x%lX - 0x%lX) with fdt(0x%lX - 0x%lX)\n", load_addr, load_addr + p_linuxtmp->lz_linux_size, p_fdt_info->fdt_addr, p_fdt_info->fdt_addr + p_fdt_info->fdt_size); + return -1; + } + + unsigned int remain_blocks = ALIGN_CEIL(bfc_size - blk_size, blk_size) / blk_size; + if ((er = int_strg_obj->flash_readSectors((p_emb_partition_kernel->PartitionOffset / blk_size)+1, remain_blocks*blk_size, (UINT8 *)(bfc_data + blk_size), NAND_RW_FIRMWARE)) < 0) { + DBG_ERR("NG kernel-2\r\n"); + return -1; + } + + //uncompress gzip + UINT32 algorithm = be32_to_cpu(p_hdr->uiAlgorithm) & 0xFF; + if (algorithm != 12) { + DBG_ERR("must gzip\r\n"); + return -1; + } + // bfc has no image_header_t + UINT32 decoded_size = GZ_Uncompress((unsigned char *)comp_kernel_addr, (unsigned char *)(load_addr + sizeof(image_header_t)), comp_kernel_size); + return (decoded_size >= be32_to_cpu(p_hdr->uiSizeUnComp) ) ? 0 : -1; +#else + DBG_ERR("ungzip is not supported in this build.\r\n"); + return -1; +#endif + } else { + //move 1st block + memmove((void *)(load_addr), (void *)bfc_data, blk_size); + + image_header_t *p_hdr = (image_header_t *)load_addr; + if (be32_to_cpu(p_hdr->ih_magic) != IH_MAGIC) { + DBG_ERR("kernel IH_MAGIC is wrong\r\n"); + return -1; + } + +#if defined(__aarch64__) + //IH_TYPE_KERNEL = 2 + if (p_hdr->ih_type != 2) { + DBG_ERR("ih_type (0x%X) != IH_TYPE_KERNEL\r\n", (int)p_hdr->ih_type); + return -1; + } +#else + //IH_TYPE_MULTI = 4 + if (p_hdr->ih_type != 4 && p_hdr->ih_type != 2) { + DBG_ERR("ih_type (0x%X) != IH_TYPE_MULTI or IH_TYPE_KERNEL\r\n", (int)p_hdr->ih_type); + return -1; + } +#endif + if (p_hdr->ih_type == 4) { + memmove((void *)(load_addr - CFG_MULTI_MKIMAGE_LEN), (void *)load_addr, blk_size); + load_addr -= CFG_MULTI_MKIMAGE_LEN; + p_hdr = (image_header_t *)load_addr; + } + // load rest of image data + unsigned int image_size = be32_to_cpu(p_hdr->ih_size) + sizeof(image_header_t); + + // check linux overlap with nvt_memory_cfg/fdt + if (IS_BIN_OVERLAP(load_addr, image_size, p_fdt_info->fdt_addr, p_fdt_info->fdt_size)) { + DBG_ERR("OVERLAP: linux(0x%lX - 0x%lX) with fdt(0x%lX - 0x%lX)\n", load_addr, load_addr + image_size, p_fdt_info->fdt_addr, p_fdt_info->fdt_addr + p_fdt_info->fdt_size); + return -1; + } + + unsigned int remain_blocks = ALIGN_CEIL(image_size - blk_size, blk_size) / blk_size; + if ((er = int_strg_obj->flash_readSectors((p_emb_partition_kernel->PartitionOffset / blk_size)+1, remain_blocks*blk_size, (UINT8 *)(load_addr + blk_size), NAND_RW_FIRMWARE)) < 0) { + DBG_ERR("NG kernel-2\r\n"); + return -1; + } + return 0; + } + } else { +#if (SECURE_DECRYPT_KERNEL) + //load 1st block + if ((er = int_strg_obj->flash_readSectors(p_emb_partition_kernel->PartitionOffset / blk_size, blk_size, (UINT8 *)bfc_data, NAND_RW_FIRMWARE)) < 0) { + DBG_ERR("NG kernel-1\r\n"); + return -1; + } + + // load rest of image data + int bin_size = ((HEADINFO *)(bfc_data))->BinLength; + + unsigned int remain_blocks = ALIGN_CEIL(bin_size - blk_size, blk_size) / blk_size; + if ((er = int_strg_obj->flash_readSectors((p_emb_partition_kernel->PartitionOffset / blk_size)+1, remain_blocks*blk_size, (UINT8 *)(bfc_data + blk_size), NAND_RW_FIRMWARE)) < 0) { + DBG_ERR("NG kernel-2\r\n"); + return -1; + } + + //decrypt + unsigned int plaintext_size = 0; + if ((er = do_decrypt_aes(bfc_data, bfc_data, &plaintext_size, bin_size)) != 0) { + debug_err_var("aes fail, er=", er); + return er; + } + + // uncompress + NVTPACK_BFC_HDR *p_hdr = (NVTPACK_BFC_HDR *)bfc_data; + if (p_hdr->uiFourCC != MAKEFOURCC('B', 'C', 'L', '1')) { + DBG_ERR("BCL1 header is wrong\r\n"); + return -1; + } + + //uncompress gzip + UINT32 algorithm = be32_to_cpu(p_hdr->uiAlgorithm) & 0xFF; + if (algorithm != 12) { + DBG_ERR("must gzip\r\n"); + return -1; + } + // bfc has no image_header_t + unsigned long comp_kernel_addr = bfc_data + sizeof(NVTPACK_BFC_HDR); + unsigned int comp_kernel_size = be32_to_cpu(p_hdr->uiSizeComp); + UINT32 decoded_size = GZ_Uncompress((unsigned char *)comp_kernel_addr, (unsigned char *)(load_addr + sizeof(image_header_t)), comp_kernel_size); + return (decoded_size >= be32_to_cpu(p_hdr->uiSizeUnComp) ) ? 0 : -1; +#else + debug_err("please ENABLE SECURE_DECRYPT_KERNEL config\n"); + return -1; +#endif + } + return 0; +} + +_THUMB2 static int make_bootargs(LINUXTMP_PARTITION *p_linuxtmp, FDT_INFO *p_fdt_info, unsigned int bootts_begin, int ramdisk) +{ + // read extend bootarg in fdt + unsigned char *p_fdt = (unsigned char *)fdt_get_base(); + if (p_fdt == NULL) { + DBG_ERR("p_fdt is NULL.\n"); + return -1; + } + + int len; + int nodeoffset = fdt_path_offset(p_fdt, "/chosen"); + const char *bootargs = (const char *)fdt_getprop(p_fdt, nodeoffset, "bootargs", &len); + + p_linuxtmp->bootargs_addr = p_linuxtmp->tmp_curr; + p_linuxtmp->bootargs_size = CFG_BOOTARG_MAX_LEN; + p_linuxtmp->tmp_curr += p_linuxtmp->bootargs_size; + + if (p_linuxtmp->tmp_curr >= p_linuxtmp->tmp_end) { + DBG_ERR("linuxtmp memory is too small, need more %d\n", p_linuxtmp->tmp_curr - p_linuxtmp->tmp_end); + return -1; + } + + int rootfs_partition_id = -1; + bl_get_rootfs_partition(fdt_get_base(), &rootfs_partition_id); + + utl_memset((char *)p_linuxtmp->bootargs_addr, 0, p_linuxtmp->bootargs_size); + + if (ramdisk) { + snprintf((char *)p_linuxtmp->bootargs_addr, CFG_BOOTARG_MAX_LEN - 1, CONFIG_BOOTARGS_RAMDISK "bootts=%u,%u user_debug=0xff %s", bootts_begin, (unsigned int)timer_getLdrElapse(), bootargs); + } else { +#if defined(_STORAGEINT_SpiFlash_) + snprintf((char *)p_linuxtmp->bootargs_addr, CFG_BOOTARG_MAX_LEN - 1, CONFIG_BOOTARGS "bootts=%u,%u user_debug=0xff %s root=/dev/mtdblock%d", bootts_begin, (unsigned int)timer_getLdrElapse(), bootargs, rootfs_partition_id); +#elif defined(_STORAGEINT_NandSpi_) + snprintf((char *)p_linuxtmp->bootargs_addr, CFG_BOOTARG_MAX_LEN - 1, CONFIG_BOOTARGS "bootts=%u,%u user_debug=0xff %s ubi.mtd=%d", bootts_begin, (unsigned int)timer_getLdrElapse(), bootargs, rootfs_partition_id); +#elif defined(_STORAGEINT_EMMC_) + snprintf((char *)p_linuxtmp->bootargs_addr, CFG_BOOTARG_MAX_LEN - 1, CONFIG_BOOTARGS "bootts=%u,%u user_debug=0xff %s", bootts_begin, (unsigned int)timer_getLdrElapse(), bootargs); +#endif + } + +#if (_NOR_DTR_PARAM_ == ENABLE) + strncat((char *)p_linuxtmp->bootargs_addr, " flash_dtr=on", CFG_BOOTARG_MAX_LEN - 1); +#endif + + return 0; +} + +_THUMB2 static int fdt_find_or_add_subnode(void *fdt, int parentoffset, const char *name) +{ + int offset; + + offset = fdt_subnode_offset(fdt, parentoffset, name); + + if (offset == -FDT_ERR_NOTFOUND) { + offset = fdt_add_subnode(fdt, parentoffset, name); + } + + if (offset < 0) { + printf("%s: %s: %s\n", __func__, name, fdt_strerror(offset)); + } + + return offset; +} + +_THUMB2 static int chk_mem_overlap(FDT_INFO *p_fdt_info, const char *name, uintptr_t addr, unsigned long size) +{ + int i; + for (i = 0; i < (int)p_fdt_info->reserved_cnt; i++) { + LINUX_RESERVED_MEM *p = (LINUX_RESERVED_MEM *)&p_fdt_info->reserved[i]; + if (IS_BIN_OVERLAP(addr, size, p->addr, p->size)) { + + DBG_ERR("OVERLAP: %s(%lX - %lX) with %s(%lX - %lX)\n", + name, addr, addr + size, p->name, p->addr, p->addr + p->size); + DBG_ERR("Please move reserved memory in nvt-mem-tbl.dtsi\n"); + return -1; + } + } + return 0; +} + +_THUMB2 static int fdt_chosen(LINUXTMP_PARTITION *p_linuxtmp) +{ + int nodeoffset; + int err; + char *str; /* used to set string properties */ + + void *fdt = (void *)p_linuxtmp->fdt_addr; + + err = fdt_check_header(fdt); + if (err < 0) { + DBG_ERR("fdt_chosen: %s\n", fdt_strerror(err)); + return err; + } + + /* find or create "/chosen" node. */ + nodeoffset = fdt_find_or_add_subnode(fdt, 0, "chosen"); + if (nodeoffset < 0) { + return nodeoffset; + } + + str = (char *)p_linuxtmp->bootargs_addr; + if (str) { + err = fdt_setprop(fdt, nodeoffset, "bootargs", str, + strlen(str) + 1); + if (err < 0) { + DBG_ERR("WARNING: could not set bootargs %s.\n", + fdt_strerror(err)); + return err; + } + } + + if (p_linuxtmp->ramfs_addr) { +#if defined(__aarch64__) + fdt64_t tmp = cpu_to_fdt64(p_linuxtmp->ramfs_addr); +#else + fdt32_t tmp = cpu_to_fdt32(p_linuxtmp->ramfs_addr); +#endif + err = fdt_setprop(fdt, nodeoffset, "linux,initrd-start", &tmp, sizeof(tmp)); + if (err < 0) { + DBG_ERR("WARNING: could not set initrd-start %s.\n", + fdt_strerror(err)); + return err; + } + +#if defined(__aarch64__) + tmp = cpu_to_fdt64(p_linuxtmp->ramfs_addr + p_linuxtmp->ramfs_size); +#else + tmp = cpu_to_fdt32(p_linuxtmp->ramfs_addr + p_linuxtmp->ramfs_size); +#endif + err = fdt_setprop(fdt, nodeoffset, "linux,initrd-end", &tmp, sizeof(tmp)); + if (err < 0) { + DBG_ERR("WARNING: could not set initrd-end %s.\n", + fdt_strerror(err)); + return err; + } + } + + return 0; +} + +_THUMB2 static void system_timer_stop(void) +{ + WRITE_CNTx_CTL(0); +} + +_THUMB2 static void system_timer_start(void) +{ + unsigned long long cval; + unsigned int ctl = 0; + + cval = READ_CNTxCT() + m_timer_interval; + // Counter-timer Physical Timer CompareValue register 4438 + WRITE_CNTx_CVAL(cval); + + ctl = READ_CNTx_CTL(); + ctl |= (1 << CNTP_CTL_ENABLE_SHIFT); + ctl |= (1 << CNTP_CTL_IMASK_SHIFT); // disable timer irq + WRITE_CNTx_CTL(ctl); +} + +_THUMB2 int system_init_timer(void) +{ + unsigned int CNTKCTL; + + /* Disable clock for timer */ + OUTREG32((SYSCNT_CTRL_BASE + CNTCR_OFF), 0); + + system_timer_stop(); + + // CNTKCTL, Counter-timer Kernel Control register @ arm-arm 4433 + CNTKCTL = read_cntkctl(); +#if (configTIMER_NUMBER == 27) //Virtual timer + CNTKCTL |= 0x02; +#elif(configTIMER_NUMBER == 29 || configTIMER_NUMBER == 26 || configTIMER_NUMBER == 30) //Non sec timer + CNTKCTL |= 0x01; +#endif + write_cntkctl(CNTKCTL); + +#if defined(__aarch64__) +#if (EXPECT_EL == EXCEPTION_LEVEL_2) + /* CNTHCTL_EL2.EL1PCEN: Set to 0 to enable traps to + * Hyp mode of Non-secure EL0 and EL1 accesses to the + * physical timer registers. + * + * CNTHCTL_EL2.EL1PCTEN: Set to 0 to enable traps to + * Hyp mode of Non-secure EL0 and EL1 accesses to the + * physical counter registers. + */ + unsigned int cnthctl = read_cnthctl(); + cnthctl &= ~(0x3); // + write_cnthctl(cnthctl); +#endif +#else + write_cntfrq(configCPU_CLOCK_HZ); +#endif + + m_timer_interval = read_cntfrq() / configTICK_RATE_HZ; + + system_timer_start(); + + /* Enable clock for timer, this is a global setting. */ + OUTREG32((SYSCNT_CTRL_BASE + CNTCR_OFF), (CNTCR_FCREQ(0) | CNTCR_HDBG | CNTCR_EN)); + return 0; +} + +_THUMB2 int linuxboot_setup(unsigned char *p_fdt) +{ + int er; + int ramdisk = 0; + unsigned int bootts_begin = timer_getLdrElapse(); + + // initialize for fdt_get_base() + m_fdt = p_fdt; + + LINUXBOOT_INFO *p_info = &info; + LINUXTMP_PARTITION *p_linuxtmp = &p_info->linuxtmp; + FDT_INFO *p_fdt_info = &p_info->fdt_info; + + if ((er = fdt_get_info(p_fdt_info)) != 0) { + return er; + } + + p_linuxtmp->tmp_begin = p_fdt_info->linuxtmp_addr; + p_linuxtmp->tmp_curr = p_linuxtmp->tmp_begin; + p_linuxtmp->tmp_end = p_linuxtmp->tmp_begin + p_fdt_info->linuxtmp_size; + + // create new fdt for nodes of bootargs and ramdisk + if ((er = create_new_fdt(p_linuxtmp)) != 0) { + return er; + } + + // use fdt_get_base() use new fdt address, because old one will be destroyed on load_linux() + m_fdt = (void *)p_linuxtmp->fdt_addr; + +#if (CFG_INDEP_RAMDISK) + // load ramdisk into memory and reserved memory + if ((er = load_ramdisk(p_linuxtmp)) == 0) { + ramdisk = 1; + } else { + DBG_ERR("no ramdisk\r\n"); + } +#endif + + if ((er = load_linux(p_linuxtmp, p_fdt_info)) != 0) { + return er; + } + + // make bootargs + if ((er = make_bootargs(p_linuxtmp, p_fdt_info, bootts_begin, ramdisk)) != 0) { + return er; + } + + // insert bootargs and ramdisk into fdt + if ((er = fdt_chosen(p_linuxtmp)) != 0) { + return er; + } + + if ((er = chk_mem_overlap(p_fdt_info, "fdt", p_linuxtmp->fdt_addr, p_linuxtmp->fdt_size)) != 0) { + return er; + } +#if (CFG_INDEP_RAMDISK) + if ((er = chk_mem_overlap(p_fdt_info, "ramfs", p_linuxtmp->ramfs_addr, p_linuxtmp->ramfs_size)) != 0) { + return er; + } +#endif + if ((er = chk_mem_overlap(p_fdt_info, "bootargs", p_linuxtmp->bootargs_addr, p_linuxtmp->bootargs_size)) != 0) { + return er; + } + + return 0; +} + +_THUMB2 void linuxboot_go(void) +{ + LINUXBOOT_INFO *p_info = &info; + LINUXTMP_PARTITION *p_linuxtmp = &p_info->linuxtmp; + FDT_INFO *p_fdt_info = &p_info->fdt_info; + +#if 0 + printf("tmp_begin=0x%lX\n", p_linuxtmp->tmp_begin); + printf("tmp_curr=0x%lX\n", p_linuxtmp->tmp_curr); + printf("tmp_end=0x%lX\n", p_linuxtmp->tmp_end); + printf("fdt_addr=0x%lX\n", p_linuxtmp->fdt_addr); + printf("fdt_size=0x%lX\n", p_linuxtmp->fdt_size); + printf("ramfs_addr=0x%lX\n", p_linuxtmp->ramfs_addr); + printf("ramfs_size=0x%lX\n", p_linuxtmp->ramfs_size); + printf("lz_linux_addr=0x%lX\n", p_linuxtmp->lz_linux_addr); + printf("lz_linux_size=0x%lX\n", p_linuxtmp->lz_linux_size); + printf("bootargs_addr=0x%lX\n", p_linuxtmp->bootargs_addr); + printf("bootargs_size=0x%lX\n", p_linuxtmp->bootargs_size); +#endif + +#if defined(__aarch64__) + unsigned long x0 = p_linuxtmp->fdt_addr; +#else + unsigned int r2 = p_linuxtmp->fdt_addr; +#endif + unsigned long kernel_addr = p_fdt_info->linux_addr + CFG_LINUX_START_OFFSET; + + system_init_timer(); + +#if defined(__aarch64__) + { + void (*kernel_entry)(unsigned long fdt, unsigned long x1, unsigned long x2, unsigned long x3); + kernel_entry = (void (*)(unsigned long, unsigned long, unsigned long, unsigned long))((kernel_addr)); + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); + DISABLE_DCACHE(); + DISABLE_ICACHE(); + DISABLE_MMU(); + CLEAR_MMU(); + kernel_entry(x0, 0, 0, 0); // never returned + } +#else + // disable both irq and fiq + __asm volatile ( "CPSID if" ::: "memory" ); + __asm volatile ( "DSB" ); + __asm volatile ( "ISB" ); + + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); + DISABLE_DCACHE(); + DISABLE_ICACHE(); + DISABLE_MMU(); + CLEAR_MMU(); + + //alway enter #Mode_SVC before start linux + __asm__("cps #0x13"); + { + void (*kernel_entry)(int zero, int arch, unsigned int params); + kernel_entry = (void (*)(int, int, unsigned int))((kernel_addr)); + kernel_entry(0, 0, r2); // never returned + } +#endif +} + +_THUMB2 int linuxboot_go_info(unsigned long *p_kernel_addr, unsigned long *p_fdt_addr) +{ + LINUXBOOT_INFO *p_info = &info; + FDT_INFO *p_fdt_info = &p_info->fdt_info; + + *p_kernel_addr = p_fdt_info->linux_addr + CFG_LINUX_START_OFFSET; + *p_fdt_addr = p_info->linuxtmp.fdt_addr; + + return 0; +} + +#endif // (BOOT_LINUX_SUPPORT) \ No newline at end of file diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_linux.h b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_linux.h new file mode 100755 index 000000000000..fbcfbc8095f5 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_linux.h @@ -0,0 +1,9 @@ +#ifndef _BL_LINUX_H +#define _BL_LINUX_H + +extern int linuxboot_setup(unsigned char *p_fdt); +extern void linuxboot_go(void); +extern int linuxboot_go_info(unsigned long *p_kernel_addr, unsigned long *p_fdt_addr); +extern int system_init_timer(void); + +#endif \ No newline at end of file diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lowlevel_init.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lowlevel_init.c new file mode 100755 index 000000000000..d0dc78ba2542 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lowlevel_init.c @@ -0,0 +1,368 @@ + +/** + * @brief This File is unable to use printf, + * because rom api not ready at this time. + */ +#include "constant.h" +#include "fuart.h" +#include "fat.h" +#include "StorageDef.h" +#include "global.h" +#include "bl_func.h" +#include "string.h" +#include "debug.h" +#include "loader.h" +#include <stdlib.h> +#include "nand.h" +#include "nor.h" +#include "Cache.h" +#include "libfdt.h" +#include "bl_lowlevel_init.h" +#include <cfe.h> + +#define CFG_FDTFAST_BUF IPE_SRAM_BASE_ADDR +#define CFG_FDTFAST_BUF_SIZE IPE_SRAM_BASE_SIZE + +#define ALIGN_FLOOR(value, base) ((value) & ~((base)-1)) +#define ALIGN_CEIL(value, base) ALIGN_FLOOR((value) + ((base)-1), base) + +#if defined(_STORAGEINT_NandSpi_) +#define EMB_GETSTRGOBJ() nand_get_storage_object() +#elif defined(_STORAGEINT_NandEccBCH_) +#define EMB_GETSTRGOBJ() nand_bch_get_storage_object() +#elif defined(_STORAGEINT_SpiFlash_) +#define EMB_GETSTRGOBJ() nor_get_storage_object() +#elif defined(_STORAGEINT_EMMC_) +#define EMB_GETSTRGOBJ() emmc_get_storage_object() +#elif defined(_STORAGEINT_EMMC_NAND_COMBO_) +#elif defined(_STORAGEINT_NONE_) +#else +#error "unknown internal storage type" +#endif + +#define _THUMB2 __attribute__((target("thumb2"))) + +typedef enum _CFE_TYPE { + CFE_TYPE_WRITE = 0, + CFE_TYPE_MASK_CLEAR, + CFE_TYPE_MASK_SET, + CFE_TYPE_DELAY, +} CFE_TYPE; + +typedef struct _CFE_CMD { + unsigned int type; + unsigned int addr; + unsigned int value; +} CFE_CMD; + +static volatile unsigned int *mp_core2_addr = (volatile unsigned int *)CC_CPU2_CPU1_CMDBUF_REG1; +static UINT32 g_flash_dtr = 0; +static uintptr_t g_fdtfast_addr = 0; +static uintptr_t g_fdt_addr = 0; +static UINT32 g_fast_sensor = 0; +static UINT32 g_is_flash_opened = 0; + +extern void config_dma_wait_done(void); + +#if (FDTFAST_SENSOR==ENABLE) +#define FDTFAST_SENSOR_CHK_STS DISABLE +#if (FDTFAST_SENSOR_CHK_STS==ENABLE) +_THUMB2 static void bl_DumpReg(UINT32 base, UINT32 size) +{ + UINT32 end = base + size; + printf("========== DumpReg 0x%08X ==========\r\n", base); + while (base < end) { + printf("0x%08X : 0x%08X 0x%08X 0x%08X 0x%08X\r\n", base, + *(volatile UINT32 *)(base + 0x0), *(volatile UINT32 *)(base + 0x4), + *(volatile UINT32 *)(base + 0x8), *(volatile UINT32 *)(base + 0xc)); + base += 0x10; + } +} +#define DelayT(x) do {for(volatile int t=0; t<(x); t++);} while(0) +_THUMB2 static void bl_CheckStatus(void) +{ + OUTREG32(0xf0280018, 0xffffffff); + OUTREG32(0xf028001c, 0xffffffff); + bl_DumpReg(0xF0280000, 0x100); + DelayT(100000); + bl_DumpReg(0xF0280000, 0x100); + bl_DumpReg(0xF0020000, 0x100); + bl_DumpReg(0xF00D0000, 0x100); +} +#endif +_THUMB2 static int bl_parse_preset_sub_dtsi(UINT8 *pfdt_addr, INT32 node_ofst, UINT32 *param_ptr, char *prop_name) +{ + const void *pfdt_node; + INT32 param_size; + UINT32 *pdata = NULL; + + pfdt_node = fdt_getprop(pfdt_addr, node_ofst, prop_name, (int *)&param_size); + if ((pfdt_node != NULL) && (param_size != 0)) { + pdata = (UINT32 *)pfdt_node; + *param_ptr = be32_to_cpu(*pdata); + return 0; + } else { + return -1; + } +} + +_THUMB2 int bl_sensor_chgmode(unsigned char *p_fdt_hdr, int fdt_from_dram) +{ + int i, n, len; + int i2c_id = 0; + int nodeoffset; + const void *nodep; + UINT32 desc_addr; + UINT32 desc_size; + + nodeoffset = fdt_path_offset(p_fdt_hdr, "sensor0"); + if (nodeoffset< 0) { + debug_msg("sn: n/a\r\n"); + return 0; + } + + nodep = fdt_getprop(p_fdt_hdr, nodeoffset, "cmd", &len); + if (len == 0 || nodep == NULL) { + debug_err("sn: no cmd\r\n"); + return -1; + } + desc_addr = (UINT32)nodep; + desc_size = (UINT32)len; + + nodep = fdt_getprop(p_fdt_hdr, nodeoffset, "cfe", &len); + if (len == 0 || nodep == NULL) { + debug_err("sn: no cfe\r\n"); + return -1; + } + + bl_parse_preset_sub_dtsi((UINT8 *)p_fdt_hdr, (INT32)nodeoffset, (UINT32 *)&i2c_id, "i2c_id"); + + CFE_CMD *p_cfe = (CFE_CMD *)nodep; + n = len / sizeof(CFE_CMD); + cfe_open(0); + for (i = 0; i < n; i++) { + int type = be32_to_cpu(p_cfe->type); + unsigned int addr = be32_to_cpu(p_cfe->addr); + unsigned int value = be32_to_cpu(p_cfe->value); + switch (type) + { + case CFE_TYPE_WRITE: + cfe_write_reg(addr, value); + break; + case CFE_TYPE_MASK_CLEAR: + cfe_mask_clear(addr, value); + break; + case CFE_TYPE_MASK_SET: + cfe_mask_set(addr, value); + break; + case CFE_TYPE_DELAY: + cfe_delay(value); + break; + default: + debug_err_var("sn: un cmd: ", type); + return -1; + } + p_cfe++; + } + + if (fdt_from_dram) { + utl_memcpy((void *)CFG_FDTFAST_BUF, (void *)desc_addr, desc_size); + desc_addr = (UINT32)CFG_FDTFAST_BUF; + } + CPUflushWriteCache(desc_addr, desc_size); + cfe_auto_desc(desc_addr, I2C+i2c_id); + cfe_trig(); + +#if (FDTFAST_SENSOR_CHK_STS==ENABLE) + //---- check status + bl_CheckStatus(); +#endif + g_fast_sensor = 1; + return 0; +} +#endif + +#if (FDTFAST_FROM_DRAM != ENABLE) +_THUMB2 static int bl_lowlevel_load_fdtfast(void) +{ +#if (FDTFAST_SENSOR==ENABLE) +#if (MULTI_CODE_FLOW) && !defined(_STORAGEINT_NONE_) + PSTORAGE_OBJ strg_obj = EMB_GETSTRGOBJ(); +#if defined(_STORAGEINT_NandSpi_) + strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_SUPPORT_4BITS, TRUE); +#elif defined(_STORAGEINT_EMMC_) + //strg_obj->flash_setConfig(FLASH_CFG_ID_EMMC_SUPPORT_8BITS, TRUE); + UINT32 high_speed = TRUE; + strg_obj->flash_setConfig(FLASH_CFG_ID_HIGH_SPEED, high_speed); + if (ROM_GetCurrBS() == BOOT_SOURCE_EMMC_8BIT) { + strg_obj->flash_setConfig(FLASH_CFG_ID_EMMC_SUPPORT_8BITS, TRUE); + } else if (ROM_GetCurrBS() == BOOT_SOURCE_EMMC_4BIT) { + strg_obj->flash_setConfig(FLASH_CFG_ID_EMMC_SUPPORT_8BITS, FALSE); + } else { +#if (EMMC_PINMUX_SETTING == EMMC_PINMUX_8BITS) + strg_obj->flash_setConfig(FLASH_CFG_ID_EMMC_SUPPORT_8BITS, TRUE); +#else + strg_obj->flash_setConfig(FLASH_CFG_ID_EMMC_SUPPORT_8BITS, FALSE); +#endif + } +#endif +#if (_NOR_DTR_PARAM_ == ENABLE) //DTR force enable + strg_obj->flash_installIdentifyCB(nor_identify); +#endif +#if defined(_FLASH_FREQ_MHZ_) + strg_obj->flash_setFrequency(_FLASH_FREQ_MHZ_); +#endif + +#if (_NOR_DTR_PARAM_ == ENABLE) + strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_SUPPORT_DTR, TRUE); + g_flash_dtr = 1; +#endif + + INT32 er = strg_obj->flash_open(); + if (er < 0) { + debug_msg("ll:flash o ng\r\n"); + } else { + int blk_size = strg_obj->flash_getBlockSize(); + int fdtfast_iblk = FDTFAST_OFFSET / blk_size; + unsigned char *p_tmp = (unsigned char *)CFG_FDTFAST_BUF; +#if 0// (_NOR_DTR_PARAM_ == ENABLE) auto tunning not ready yet + if(strg_obj->flash_auto_tune_read_block) { + if ((er = strg_obj->flash_auto_tune_read_block(fdtfast_iblk, 0x1000, p_tmp, NAND_RW_FIRMWARE)) < 0) { + debug_msg("tunning NG\r\n"); + //bl_displayErrMsg(RWErrorMsg); // read bl31 failed + } else { + g_flash_dtr = 1; + debug_msg("tunning OK\r\n"); + } + } +#endif + er = strg_obj->flash_readSectors(fdtfast_iblk, blk_size, p_tmp, NAND_RW_FIRMWARE); + if (er < 0) { + debug_err("r fdtfast NG-1\r\n"); + return -1; + } + + g_is_flash_opened = 1; + + unsigned int fdt_tunning_offset = 0; + unsigned int forcc = *(unsigned int *)p_tmp; + if (forcc == DTR_TUNNING_PATTERN_DATA1 || forcc == DTR_TUNNING_PATTERN_DATA2) { + fdt_tunning_offset += DTR_TUNNING_PATTERN_SIZE; + } + + unsigned char *p_fdt_hdr = p_tmp + fdt_tunning_offset; + + if (fdt_check_header(p_fdt_hdr) != 0) { + debug_msg("no fdtfast\r\n"); + return -1; + } + + int fdtfast_size = fdt_totalsize(p_fdt_hdr); + int total_size = ALIGN_CEIL(fdtfast_size + fdt_tunning_offset, blk_size); + if ((int)CFG_FDTFAST_BUF_SIZE < total_size) { + debug_err("CFG_FDTFAST_BUF_SIZE too small\r\n"); + return -1; + } + + total_size -= blk_size; + if (total_size > 0) { + // read remain to get uboot starting addr on dram and offset in flash + er = strg_obj->flash_readSectors(fdtfast_iblk + 1, total_size, p_tmp + blk_size, NAND_RW_FIRMWARE); + if (er < 0) { + debug_err("r fdtfast NG-2\r\n"); + return -1; + } + } + + if (fdt_check_full(p_fdt_hdr, fdt_totalsize(p_fdt_hdr)) != 0) { + debug_err("chk fdtfast NG\r\n"); + return -1; + } + + g_fdtfast_addr = (uintptr_t)p_fdt_hdr; + + #if (FDTFAST_SENSOR==ENABLE) + if (bl_sensor_chgmode(p_fdt_hdr, 0) != 0) { + debug_err("sen chgmode NG\r\n"); + return -1; + } + #endif + + return 0; + } +#endif +#endif + return -1; +} +#endif + +_THUMB2 void bl_lowlevel_init(void) +{ + *mp_core2_addr = 0; //clean core2 jump address + +#if (FDTFAST_FROM_DRAM != ENABLE) + bl_lowlevel_load_fdtfast(); +#endif + config_dma_wait_done(); + debug_msg("bl_lowlevel_init done\r\n"); +} + +_THUMB2 int bl_lowlevel_is_dtr_tunned(void) +{ + return g_flash_dtr; +} + + +_THUMB2 int bl_lowlevel_is_fast_sensor(void) +{ + return g_fast_sensor; +} + +_THUMB2 uintptr_t bl_lowlevel_get_fdtfast(void) +{ + return g_fdtfast_addr; +} + +_THUMB2 uintptr_t bl_lowlevel_get_fdt(void) +{ + return g_fdt_addr; +} + +_THUMB2 void bl_lowlevel_core2_jump(void) +{ + typedef void (*BRANCH_CB)(void); + + //must comes before while, because loader has been replaced then. + bl_lowlevel_cpu_timer_init(); + while(*mp_core2_addr == 0) { + } + + perf_mark("c2jp"); + +#if (DUMP_FLOW_TIMESTAMP) + perf_dump(); +#endif + +// printf("go to %08X\n", *mp_core2_addr); + DISABLE_MMU(); + CLEAR_MMU(); + + BRANCH_CB p_func = (BRANCH_CB)(*mp_core2_addr); + p_func(); +} + +_THUMB2 void bl_lowlevel_core2_setaddr(unsigned long core2_addr) +{ + *mp_core2_addr = core2_addr; +} + +_THUMB2 void bl_lowlevel_cpu_timer_init(void) +{ + UINT32 value = CPU_TIMER_FREQ; + asm volatile("mcr p15, 0, %0, c14, c0, 0" : : "r"(value)); +} + +_THUMB2 int bl_lowlevel_is_flash_opened(void) +{ + return g_is_flash_opened; +} \ No newline at end of file diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lowlevel_init.h b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lowlevel_init.h new file mode 100755 index 000000000000..d002ea65e87f --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lowlevel_init.h @@ -0,0 +1,14 @@ +#ifndef _BL_LOWLEVEL_INIT_H +#define _BL_LOWLEVEL_INIT_H + +extern void bl_lowlevel_init(void); +extern void bl_lowlevel_core2_jump(void); +extern void bl_lowlevel_core2_setaddr(unsigned long core2_addr); +extern void bl_lowlevel_cpu_timer_init(void); +extern int bl_lowlevel_is_dtr_tunned(void); +extern unsigned long bl_lowlevel_get_fdt(void); +extern unsigned long bl_lowlevel_get_fdtfast(void); +extern int bl_lowlevel_is_fast_sensor(void); +extern int bl_lowlevel_is_flash_opened(void); +extern int bl_sensor_chgmode(unsigned char *p_fdt_hdr, int fdt_from_dram); +#endif \ No newline at end of file diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c new file mode 100755 index 000000000000..46cad292147b --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c @@ -0,0 +1,404 @@ +#include "constant.h" +#include "fuart.h" +#include "fat.h" +#include "StorageDef.h" +#include "global.h" +#include "nvtpack.h" +#include "dram_partition_info.h" +#include "bl_func.h" +#include "string.h" +#include "lz.h" +#include "debug.h" +#include "loader.h" +#include "emb_partition_info.h" +#include "modelext_info.h" +#include "bin_info.h" +#include "shm_info.h" +#include "libfdt.h" +#include <stdlib.h> +//#include "mmc_api.h" +#include "Cache.h" +#include "Memory.h" +#include "timer.h" +#include "lz.h" +#include "bl_u2.h" +#include "nand.h" +#include "nor.h" + +#ifndef ALIGN_FLOOR +#define ALIGN_FLOOR(value, base) ((value) & ~((base)-1)) +#endif +#ifndef ALIGN_CEIL +#define ALIGN_CEIL(value, base) ALIGN_FLOOR((value) + ((base)-1), base) +#endif + +#if (USB_WRITELOADER || UART_UPDATE) + +//u2: means usb and uart +#include "scsi_op.h" + +typedef enum _U2_FW_TYPE { + U2_FW_TYPE_UNKNOWN, + U2_FW_TYPE_NVTPACK, + U2_FW_TYPE_UBOOT, +} U2_FW_TYPE; + +#define MAKEUINT32(a, b, c, d) ((UINT32)((a)&0xFF)) | (((UINT32)((b)&0xFF)) << 8) | (((UINT32)((c)&0xFF)) << 16) | (((UINT32)((d)&0xFF)) << 24) + +static U2_FW_TYPE m_u2_fw_type = U2_FW_TYPE_UNKNOWN; +static unsigned int m_u2_fw_size = 0; +static unsigned char *m_fdt = NULL; +UINT32 m_tmp_addr = SDRAM_Start_FW; +static int m_uboot_status = -2; +static int m_fdt_status = -1; +static SCSIOP_FLASH_OP m_flash_op = {0}; + +__attribute__((target("thumb2"))) static int u2_check_firmware(unsigned int addr) +{ + NVTPACK_FW_HDR2 *p_hdr = (NVTPACK_FW_HDR2 *)addr; + unsigned int size = p_hdr->TotalSize; + NVTPACK_MEM mem_in ; + mem_in.p_data = (void *)addr; + mem_in.len = size; + // all in one bin + if (bl_chk_valid_all_in_one(&mem_in) == 0) { + m_u2_fw_type = U2_FW_TYPE_NVTPACK; + m_u2_fw_size = size; + return 0; + } + // uboot + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)addr; // describe compressed u-boot + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + UINT32 size_comp_le = __builtin_bswap32(pBfc->uiSizeComp); + UINT32 addr_uncomp = ALIGN_CEIL(addr + size_comp_le, 4); + LZ_Uncompress((UINT8 *)addr + sizeof(NVTPACK_BFC_HDR), (unsigned char *)addr_uncomp, 1024); + addr = addr_uncomp; + } + HEADINFO *p_headinfo = (HEADINFO *)(addr + BIN_INFO_OFFSET_UBOOT); + if (p_headinfo->BinLength < 0x1000000 && bl_chk_uboot(addr, p_headinfo->BinLength) == 0) { + m_u2_fw_type = U2_FW_TYPE_UBOOT; + m_u2_fw_size = p_headinfo->BinLength; + if (m_fdt == NULL) { + //check fdt followed uboot + unsigned char *fdt = (unsigned char *)(addr + m_u2_fw_size); + if (fdt_check_header(fdt) != 0) { + debug_err("no fdt behind uboot\r\n"); + return -1; + } + } + return 0; + } + + return -1; +} + +__attribute__((target("thumb2"))) static int u2_boot_uboot(unsigned int addr, unsigned int size, U2_FW_TYPE fw_type) +{ + if (fw_type == U2_FW_TYPE_NVTPACK) { + UINT32 comp_addr = 0; + UINT32 comp_size = 0; + DRAM_PARTITION *p_dram_partition = NULL; + return bl_process_all_in_one(addr, size, &p_dram_partition, FUNC_UPDATE_FW, &comp_addr, &comp_size); + } else { + // update headinfo as real u-boot address + HEADINFO *p_headinfo = (HEADINFO *)(addr + BIN_INFO_OFFSET_UBOOT); + NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)addr; // describe compressed u-boot + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + UINT32 size_comp_le = __builtin_bswap32(pBfc->uiSizeComp); + UINT32 addr_uncomp = ALIGN_CEIL(addr + size_comp_le, 4); + LZ_Uncompress((UINT8 *)addr + sizeof(NVTPACK_BFC_HDR), (unsigned char *)addr_uncomp, 1024); + p_headinfo = (HEADINFO *)(addr_uncomp + BIN_INFO_OFFSET_UBOOT); + } + // check tmp memory (file load) cannot overlap with uboot + if ((addr < p_headinfo->CodeEntry && addr + size > p_headinfo->CodeEntry) || + (addr > p_headinfo->CodeEntry && addr + size < p_headinfo->CodeEntry + size)) { + debug_err_var("addr", addr); + debug_err_var("size", size); + debug_err_var("CodeEntry", p_headinfo->CodeEntry); + debug_err("uboot & tmp_addr are overlapped\r\n"); + return -1; + } + + if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { + UINT32 size_comp_le = __builtin_bswap32(pBfc->uiSizeComp); + LZ_Uncompress((UINT8 *)addr + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_headinfo->CodeEntry, size_comp_le); + } else { + utl_memcpy((void *)p_headinfo->CodeEntry, (void *)addr, size); + } + + if (m_fdt != NULL) { + bl_boot_uboot(m_fdt); + } else { + //check fdt followed uboot + unsigned char *fdt = (unsigned char *)(addr + size); + if (fdt_check_header(fdt) != 0) { + debug_err("no fdt behind uboot\r\n"); + return -1; + } + utl_memcpy((void *)(p_headinfo->CodeEntry + size), fdt, fdt_totalsize(fdt)); + debug_msg_var("jump", p_headinfo->CodeEntry); + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); + { + typedef void (*BRANCH_CB)(void); + BRANCH_CB p_func = (BRANCH_CB)p_headinfo->CodeEntry; + p_func(); + } + } + } + return 0; +} + +__attribute__((target("thumb2"))) static int u2_on_verify(unsigned int p_cmd, unsigned int *p_data, unsigned int *in_size) +{ + NVT_SCSI_CBW *p_cbw = (NVT_SCSI_CBW *)p_cmd; + int cmd_id = p_cbw->CBWCB[1]; + + switch (cmd_id) { + case SCSIOP_OUT_MEM_WRITE: + *p_data = MAKEUINT32(p_cbw->CBWCB[2], p_cbw->CBWCB[3], p_cbw->CBWCB[4], p_cbw->CBWCB[5]); + *in_size = p_cbw->dCBWDataTransferLength; + break; + case SCSIOP_OUT_FLASH_ACCESS: + if (p_cbw->dCBWDataTransferLength != sizeof(m_flash_op)) { + debug_err_var("m_flash_op size not matched", *in_size); + return -1; + } + *p_data = (UINT32)&m_flash_op; + *in_size = p_cbw->dCBWDataTransferLength; + break; + case SCSIOP_IN_MEM_READ: + *p_data = MAKEUINT32(p_cbw->CBWCB[2], p_cbw->CBWCB[3], p_cbw->CBWCB[4], p_cbw->CBWCB[5]); + *in_size = p_cbw->dCBWDataTransferLength; + //debug_msg_var("p_data:", MAKEUINT32(p_cbw->CBWCB[2], p_cbw->CBWCB[3], p_cbw->CBWCB[4], p_cbw->CBWCB[5])); + break; + case SCSIOP_IN_GET_TMP_ADDR: + *p_data = (unsigned int)&m_tmp_addr; + *in_size = sizeof(m_tmp_addr); + break; + case SCSIOP_IN_FDT: + *p_data = (unsigned int)&m_fdt_status; + *in_size = sizeof(m_fdt_status); + if (bl_chk_fdt((unsigned int)SDRAM_Start_FW, fdt_totalsize(SDRAM_Start_FW)) == 0) { + m_fdt_status = bl_copy_fdt_to_fdt_addr((unsigned char *)SDRAM_Start_FW, &m_fdt); + } else { + m_fdt_status = -1; + } + break; + case SCSIOP_IN_UBOOT: + *p_data = (unsigned int)&m_uboot_status; + *in_size = sizeof(m_uboot_status); + if (u2_check_firmware(SDRAM_Start_FW) == 0) { + m_uboot_status = 0; + } else { + m_uboot_status = -1; + } + break; + default: + debug_err_var("unknown_cmd_id", cmd_id); + break; + } + return 0; +} + +__attribute__((target("thumb2"))) static int u2_flash_open(unsigned int flash_type) +{ + static int is_opened[4] = {0}; + + if (flash_type >= 4) { + debug_err_var("flash_type", flash_type); + return -1; + } + + // open default and its related to + if (is_opened[0] == 0) { + if (bl_flash_open() != 0) { + return -1; + } + is_opened[0] = 1; +#if !defined(_STORAGEINT_EMMC_) + if (int_strg_obj == nand_get_storage_object()) { + is_opened[FLASH_ACCESS_TYPE_NAND] = 1; + } + if (int_strg_obj == nor_get_storage_object()) { + is_opened[FLASH_ACCESS_TYPE_NOR] = 1; + } +#endif + } + + if (is_opened[flash_type]) { + return 0; + } + +#if !defined(_STORAGEINT_EMMC_) + switch(flash_type) { + case FLASH_ACCESS_TYPE_NAND: +#if 0 + // User define SPI-NAND id table sample code + nand_get_storage_object()->flash_setConfig(FLASH_CFG_ID_SPI_IDENTIFY_CB, (UINT32)nand_identify); +#endif + nand_get_storage_object()->flash_open(); + is_opened[FLASH_ACCESS_TYPE_NAND] = 1; + break; + case FLASH_ACCESS_TYPE_NOR: +#if 0 + // User define SPI-NOR id table sample code + nor_get_storage_object()->flash_installIdentifyCB(nor_identify); +#endif + nor_get_storage_object()->flash_open(); + is_opened[FLASH_ACCESS_TYPE_NOR] = 1; + break; + default: + debug_err_var("unsupported flash_type", flash_type); + return -1; + } + return 0; +#else + debug_err("flash_type must be auto on emmc"); + return -1; +#endif +} + +__attribute__((target("thumb2"))) static int u2_on_vendor(unsigned int p_cmd) +{ + int er; + PSTORAGE_OBJ p_strg = NULL; + NVT_SCSI_CBW *p_cbw = (NVT_SCSI_CBW *)p_cmd; + int cmd_id = p_cbw->CBWCB[1]; + + switch (cmd_id) { + case SCSIOP_OUT_MEM_WRITE: + break; + case SCSIOP_OUT_FLASH_ACCESS: + if (u2_flash_open(m_flash_op.type) != 0) { + return -1; + } + switch(m_flash_op.type) { + case FLASH_ACCESS_TYPE_AUTO: + p_strg = int_strg_obj; + break; +#if !defined(_STORAGEINT_EMMC_) + case FLASH_ACCESS_TYPE_NAND: + p_strg = nand_get_storage_object(); + break; + case FLASH_ACCESS_TYPE_NOR: + p_strg = nor_get_storage_object(); + break; +#endif + default: + debug_err_var("unsupport flash_type", m_flash_op.type); + return -1; + } + + if (m_flash_op.is_write) { + //write + unsigned int block_size = p_strg->flash_getBlockSize(); + unsigned int startblk = (unsigned int)(m_flash_op.offset / block_size); + unsigned int write_size = ALIGN_CEIL(m_flash_op.size, block_size); + if (startblk == 0) { + // write block 0 means update loader area + if ((er = p_strg->flash_writePartition(startblk, write_size, (unsigned int)(m_flash_op.partition_size), (UINT8 *)SDRAM_Start_FW, NAND_RW_LOADER)) != 0) { + debug_err_var("wr failed", er); + return -1; + } + } else { + if ((er = p_strg->flash_writePartition(startblk, write_size, (unsigned int)(m_flash_op.partition_size), (UINT8 *)SDRAM_Start_FW, NAND_RW_FIRMWARE)) != 0) { + debug_err_var("wr failed", er); + return -1; + } + } + //Once write loader something wrong happen.. + //Can enable code bellow make sure data were program into SPI-NOR/NAND +#if 0 + else { //Read back and make checksum + unsigned int reload_addr; + UINT32 status = 0; + reload_addr = SDRAM_Start_FW + write_size; + + int_strg_obj->flash_getConfig(FLASH_CFG_ID_SPI_GET_STATUS_1,(UINT32)&status); + debug_msg_var( +"status1", status); + + if (int_strg_obj->flash_readSectors(startblk, write_size, (UINT8 *)reload_addr, NAND_RW_LOADER) < 0) { + debug_err("rd fail\r\n"); + } else { + debug_err("rd success\r\n"); + } + // Verify + if (memcmp((void *)SDRAM_Start_FW, (void *)reload_addr, write_size) != 0) { + debug_err("verify fail\r\n"); + } else { + debug_msg_var("read back 0x0",*(UINT32 *)(reload_addr+0x0)); + debug_msg_var("read back 0x4",*(UINT32 *)(reload_addr+0x4)); + debug_msg_var("read back 0x8",*(UINT32 *)(reload_addr+0x8)); + debug_msg_var("read back 0xc",*(UINT32 *)(reload_addr+0xc)); + } + + } +#endif + } else { + //read + unsigned int block_size = p_strg->flash_getBlockSize(); + unsigned int startblk = (unsigned int)(m_flash_op.offset / block_size); + unsigned int read_size = ALIGN_CEIL(m_flash_op.size, block_size); + if (startblk == 0) { + // read block 0 means update loader area + if ((er = p_strg->flash_readSectors(startblk, read_size, (UINT8 *)SDRAM_Start_FW, NAND_RW_LOADER)) != 0) { + debug_err_var("rd failed", er); + return -1; + } + } else { + if ((er = p_strg->flash_readSectors(startblk, read_size, (UINT8 *)SDRAM_Start_FW, NAND_RW_FIRMWARE)) != 0) { + debug_err_var("rd failed", er); + return -1; + } + } + } + break; + case SCSIOP_IN_MEM_READ: + case SCSIOP_IN_GET_TMP_ADDR: + break; + case SCSIOP_IN_FDT: + break; + case SCSIOP_IN_UBOOT: + break; + default: + debug_err_var("unknown_cmd_id", cmd_id); + break; + } + return 0; +} + +__attribute__((target("thumb2"))) int bl_usb(void) +{ + + typedef int (*MSDC_Verify_CB)(unsigned int pCmdBuf, unsigned int *pDataBuf, unsigned int *IN_size); + typedef int (*MSDC_VenDone_CB)(unsigned int pCmdBuf); + extern void fLib_USB_Update_FW(void); + extern MSDC_Verify_CB guiU2MsdcCheck_cb; + extern MSDC_VenDone_CB guiU2MsdcVendorDone_cb; + guiU2MsdcCheck_cb = u2_on_verify; + guiU2MsdcVendorDone_cb = u2_on_vendor; + fLib_USB_Update_FW(); + u2_boot_uboot(SDRAM_Start_FW, m_u2_fw_size, m_u2_fw_type); + return 0; +} + +__attribute__((target("thumb2"))) int bl_uart(void) +{ + + typedef int (*UART_Verify_CB)(unsigned int pCmdBuf, unsigned int *pDataBuf, unsigned int *IN_size); + typedef int (*UART_Vendor_CB)(unsigned int pCmdBuf); + extern void uart_upgrade_procedure(void); + extern UART_Verify_CB guiUARTCheck_cb; + extern UART_Vendor_CB guiUARTVendor_cb; + guiUARTCheck_cb = u2_on_verify; + guiUARTVendor_cb = u2_on_vendor; + uart_upgrade_procedure(); + u2_boot_uboot(SDRAM_Start_FW, m_u2_fw_size, m_u2_fw_type); + return 0; +} + +#endif //USB_WRITELOADER diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.h b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.h new file mode 100755 index 000000000000..28ae6ee7c714 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.h @@ -0,0 +1,7 @@ +#ifndef _BL_USB_H +#define _BL_USB_H + +extern int bl_usb(void); +extern int bl_uart(void); + +#endif \ No newline at end of file diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c new file mode 100755 index 000000000000..975ba32e70dd --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c @@ -0,0 +1,181 @@ +/* + Main control function + + This file is implement by user mode + + @file main.c + + Copyright Novatek Microelectronics Corp. 2014. All rights reserved. +*/ +#include "main.h" +#include "bl_func.h" +#include "Cache.h" +#include "global.h" +#include "fuart.h" +#include "debug.h" + +extern char _loader_exec_compres_start[]; +extern char _loader_exec_compress_load_cpu_addr[]; +extern char _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[]; +extern char _load_BOOT_EXEC_start_base[]; +extern char _loader_data_start_base[]; +#define _THUMB2 __attribute__((target("thumb2"))) + +//--------------------------------------------------------------------------- +// Static function +//--------------------------------------------------------------------------- +/* + BL_RunPartOne + + Expend loader if use compress + + @return void +*/ +_THUMB2 static void BL_RunPartOne(void) +{ +#if (_LOADER_COMPRESSED_ == ENABLE) +#if (_PROCESS_2ND_CHECKSUM_ == 1) + NVTPACK_MEM mem = {0}; + UINT16 sum; + UINT16 src_sum; +#endif + UINT8 *in_addr = (UINT8 *)(_loader_exec_compress_load_cpu_addr); + UINT8 *out_addr = (UINT8 *)(_loader_exec_compres_start); + UINT32 uiCompressedOutSize; + + // Get decompress size within specific header + uiCompressedOutSize = (((UINT32)*(in_addr + 12)) << 24) + + (((UINT32)*(in_addr + 13)) << 16) + + (((UINT32)*(in_addr + 14)) << 8) + + ((UINT32)*(in_addr + 15)); + + // Decompress loader image +#if (_GZIP_ENABLE_API_ == 1) +#if (_PROCESS_2ND_CHECKSUM_ == 1) + *(UINT32 *)0xF0290000 = 'G'; +#endif + GZ_Uncompress((unsigned char *)(in_addr + LDC_HEADER_SIZE), (unsigned char *)(out_addr), uiCompressedOutSize); +#else +#if (_PROCESS_2ND_CHECKSUM_ == 1) + *(UINT32 *)0xF0290000 = 'L'; +#endif + LZ_Un_compress((unsigned char *)(in_addr + LDC_HEADER_SIZE), (unsigned char *)(out_addr), uiCompressedOutSize); +#endif +#if (_PROCESS_2ND_CHECKSUM_ == 1) + *(UINT32 *)0xF0290000 = 'Z'; +#endif + // Need to clean data cache + CPUInvalidateICacheAll(); +#if (_PROCESS_2ND_CHECKSUM_ == 1) + *(UINT32 *)0xF0290000 = 'I'; +#endif + CPUCleanInvalidateDCacheAll(); +#if (_PROCESS_2ND_CHECKSUM_ == 1) + *(UINT32 *)0xF0290000 = 'D'; +#endif + +#if (_PROCESS_2ND_CHECKSUM_ == 1) + // debug_msg_var("addr", (UINT32)(_load_BOOT_EXEC_start_base)); + mem.p_data = (void *)out_addr; + mem.len = *(UINT32 *)(_load_BOOT_EXEC_start_base + 0x1C); + src_sum = *(UINT16 *)(_load_BOOT_EXEC_start_base + 0x14); + sum = nvtpack_calc_nvt_sum(&mem); + if(src_sum == sum) { + debug_msg("\r\nCHKSUM UNZOK!"); + } else { + debug_msg_var("\r\nCHKSUM UNZNG!", sum); + debug_msg_var("calc_sum=",sum); + debug_msg_var(" bin_sum=",src_sum); + } +#else + debug_msg("\r\nUNZOK!"); +#endif +#else +#endif +} + +/* +void BL_PostHandle(void) +{ + UINT32 uiParamCnt; + UINT32 *pParamOffset; + UINT32 *pDramParam; + + pParamOffset = (UINT32*)(&_load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[5*4]); + pDramParam = (UINT32*)(*pParamOffset); + for (uiParamCnt=0; uiParamCnt < 7*2; uiParamCnt++) + { + OUTREG32(DDR_PARAM_LEVEL_0_ADDR + uiParamCnt*4, pDramParam[uiParamCnt]); + } + + // Disable IDE2 clock + CLRREG32(0xC0020070, 1<<17); + + //invalid Instruciton and data cache + CPUCleanInvalidateDCacheAll(); + CPUInvalidateICacheAll(); +} +*/ +_THUMB2 UINT32 main(void) +{ + UINT32 uiReturn; + UINT32 load_addr, target_addr, uitron_size; + UINT32 i; + UINT32 *pSrc, *pDst; + + perf_mark("main-b"); + + // Run part one loader + // If using compressed loader, just decompress the loader image at first! + BL_RunPartOne(); +#if (DDR_SCAN_REDUCE_CODE == ENABLE) + return 0; +#endif + + perf_mark("main-part1"); + + utl_dram_protect_enable((UINT32)_loader_exec_compres_start, (UINT32)(_loader_data_start_base - _loader_exec_compres_start)); + uiReturn = bl_mainFlow(); + utl_dram_protect_check(); + utl_dram_protect_disable(); + + bl_read_rtos_addr(&load_addr, &target_addr, &uitron_size); + if (load_addr != target_addr) { + printf("uitron target_addr=%08X\n", target_addr); + printf("uitron load_addr=%08X\n", load_addr); + uart_putSystemUARTStr("Copy from load to target by loader, this may has longer boot time\r\n"); + CPUflushReadCache(0, 128*1024); + CPUInvalidateICacheAll(); + +#if 1 + // disable MMU + { \ + __asm__ __volatile__( \ + "mrc p15, 0, r0, c1, c0, 0\n\t" \ + "bic r0, r0, #0x5\n\t" \ + "bic r0, r0, #0x1000\n\t" \ + "mcr p15, 0, r0, c1, c0, 0\n\t" \ + : \ + : \ + : "r0" \ + ); \ + } + asm volatile("dsb"); + asm volatile("isb"); + uart_putSystemUARTStr("disable MMU done\r\n"); +#endif + + pSrc = (UINT32*)load_addr; + pDst = (UINT32*)target_addr; + for (i=0; i<uitron_size; i+=4) { + *pDst++ = *pSrc++; + } + // Don't invoke uart_putSystemUARTStr() hereafter. + // Because ZI/RW may be corrupted after code copy +// uart_putSystemUARTStr("copy done\r\n"); + } + + //BL_PostHandle(); + perf_mark("main-e"); + return uiReturn; +} diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/main.h b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/main.h new file mode 100755 index 000000000000..c37e0ed92295 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/main.h @@ -0,0 +1,55 @@ +/** + @file main.h + @brief Header file for main function + + Copyright Novatek Microelectronics Corp. 2014. All rights reserved. +*/ +#ifndef _MAIN_H +#define _MAIN_H + +#include "constant.h" +#include "fuart.h" + +// FW checking method, support checksum & CRC now +#define FW_CHECK_NOCHECK 0 +#define FW_CHECK_CHECKSUM 1 +#define FW_CHECK_CRC 2 + +#define _LOADER_COMPRESSED_ (ENABLE) +#define _LOADER_DUTY_CALIBRATION_ (DISABLE) +#define _LOADER_DUTY_CALIBRATION_LOG_ (DISABLE) +#define FW_CHECK_METHOD (FW_CHECK_CHECKSUM) +#define DRAM_RANGE_SCAN_EN (ENABLE) +#define _MAINCODE_COMPRESS_ (ENABLE) +#define LDC_HEADER_SIZE 16 +#if (_LOADER_COMPRESSED_ == ENABLE) +// header size for compressed loader (16 bytes) +//#define LDC_HEADER_SIZE 16 + +#include "lz.h" +#endif + +#define DDR_PARAM_LEVEL_0_ADDR (BOOT_ROM_RAM_TEMP_ADDR) + +#define DDR_PARAM_LEVEL_1_ADDR (DDR_PARAM_LEVEL_0_ADDR + 7 * 4) + +#define DDR_PARAM_LEVEL_2_ADDR (DDR_PARAM_LEVEL_0_ADDR + 7 * 4 * 2) + + +// Represent +// SPI : 0x46495053 //'S''P''I''F' +//NAND : (1) // Table found +// (2) // Table not found + +#define NAND_TABLE_FLAG_ADDR (DDR_PARAM_LEVEL_0_ADDR + 7 * 4 * 3) + +#define NAND_TABLE_VERSION_ADDR (NAND_TABLE_FLAG_ADDR + 4) + +#define DDR_LEVEL0_OFFSET 0x10 + +#define DDR_LEVEL1_OFFSET 0x200 + +extern UINT32 main(void) __attribute__ ((section (".part1"))); +extern void BL_PostHandle(void); + +#endif diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c new file mode 100755 index 000000000000..7a1b7d597d9a --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c @@ -0,0 +1,44 @@ +/* + * nand_ids.c + * + * nand id table + * + * Copyright (c) 2018 Novatek, ALL Rights Reserve + */ +#include "main.h" +#include "nand.h" +#include "constant.h" +#include "compiler.h" +#include "fuart.h" + +#define _THUMB2 __attribute__((target("thumb2"))) + + +NAND_FLASH_DEV nvt_nand_ids[] = { + // manufactor ID device id third id page size(unit:bytes) erase unit(block size, unit:bytes) QE type + //SPI_ID_NAND(_SNAND_MXIC_ID, _MXIC_SPI_NAND_1Gb, 0x0, 2048, 0x20000, SPINAND_QE_FEATURE2_B0H_BIT0_TYPE1, SPINAND_2_PLANE_NONE), + //SPI_ID_NAND(_SNAND_TOSHIBA_ID, 0xCD, 0x0, 4096, 0x40000, SPINAND_QE_NONE, SPINAND_2_PLANE_NONE), + SPI_ID_NAND(_SNAND_DOSILICON_ID, _DOSILICON_NAND_1Gb, 0x0, 2048, 0x20000, SPINAND_QE_FEATURE2_B0H_BIT0_TYPE1, SPINAND_2_PLANE_NONE), + SPI_ID_NAND(_SNAND_GD_ID, 0x51, 0x0, 2048, 0x20000, SPINAND_QE_FEATURE2_B0H_BIT0_TYPE1, SPINAND_2_PLANE_NONE), +}; + +_THUMB2 BOOL nand_identify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiThirdID,PSPINAND_IDENTIFY pIdentify) +{ + UINT32 ui_nand_ids; + BOOL nand_ids_found = FALSE; + for (ui_nand_ids = 0; ui_nand_ids < (sizeof(nvt_nand_ids) / sizeof(NAND_FLASH_DEV)); ui_nand_ids++) { + if (uiMfgID == nvt_nand_ids[ui_nand_ids].mfr_id && uiTypeID == nvt_nand_ids[ui_nand_ids].dev_id) { + if (!nvt_nand_ids[ui_nand_ids].third_id || \ + (nvt_nand_ids[ui_nand_ids].third_id == uiThirdID)) { + // For SPI Nand flash only + pIdentify->pagesize = nvt_nand_ids[ui_nand_ids].pagesize; + pIdentify->erasesize= nvt_nand_ids[ui_nand_ids].erasesize; + pIdentify->qe_opt = nvt_nand_ids[ui_nand_ids].qe_opt; + pIdentify->plane_opt= nvt_nand_ids[ui_nand_ids].plane_opt; + nand_ids_found = TRUE; + break; + } + } + } + return nand_ids_found; +} diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c new file mode 100755 index 000000000000..c11a7ed354d9 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c @@ -0,0 +1,38 @@ +/* + * nand_ids.c + * + * nand id table + * + * Copyright (c) 2018 Novatek, ALL Rights Reserve + */ +#include "main.h" +#include "nor.h" +#include "constant.h" +#include "compiler.h" +#include "fuart.h" + +#define _THUMB2 __attribute__((target("thumb2"))) + + +NOR_FLASH_DEV nvt_nor_ids[] = { + // manufactor ID device id capacity id flash size bus width + SPI_ID_NOR(0xEF, 0x40, 0x18, (16<<20), (SPI_BUSWIDTH_DUAL|SPI_BUSWIDTH_QUAD_TYPE2)), + SPI_ID_NOR(0xC8, 0x48, 0x1B, (16<<23), SPI_BUSWIDTH_OCTAL_TYPE1), // GD55X01GE, 8-bit +}; + +_THUMB2 BOOL nor_identify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacityID, PSPI_IDENTIFY pIdentify) +{ + BOOL nor_ids_found = FALSE; + UINT32 ui_nor_ids; + for (ui_nor_ids = 0; ui_nor_ids < (sizeof(nvt_nor_ids) / sizeof(NOR_FLASH_DEV)); ui_nor_ids++) { + if (uiMfgID == nvt_nor_ids[ui_nor_ids].mfr_id && uiTypeID == nvt_nor_ids[ui_nor_ids].dev_id && uiCapacityID == nvt_nor_ids[ui_nor_ids].capacity_id) { + // For SPI Nor flash only + pIdentify->uiBusWidth = nvt_nor_ids[ui_nor_ids].uiBusWidth; + pIdentify->uiFlashSize = nvt_nor_ids[ui_nor_ids].uiFlashSize; + nor_ids_found = TRUE; + break; + } + } + + return nor_ids_found; +} diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/time_util.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/time_util.c new file mode 100755 index 000000000000..a07739b88a81 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/time_util.c @@ -0,0 +1,69 @@ +#include "time_util.h" +#include "string.h" + +#define _THUMB2 __attribute__((target("thumb2"))) +#define IS_LEAP_YEAR(year) ((((year % 4) == 0) && (((year % 100) != 0) || ((year % 400) == 0)))) + +_THUMB2 static int calc_month_day(int year, int month) +{ + int day = 31; + int year_ext = 0; + if (IS_LEAP_YEAR(year)) { + year_ext = 1; + } + if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) { + day = 30; + } + if (month == 2) { + day = 28 + year_ext; + } + return day; +} + +_THUMB2 int time_util_add_sec(struct rtc_time *p_out, struct rtc_time *p_in, int sec) +{ + int maxday; + utl_memcpy(p_out, p_in, sizeof(struct rtc_time)); + + p_out->tm_sec += sec; /* seconds after the minute - [0,59] */ + + if (p_out->tm_sec >= 60) { + p_out->tm_min += p_out->tm_sec / 60; + p_out->tm_sec = p_out->tm_sec % 60; + } + if (p_out->tm_min >= 60) { + p_out->tm_hour += p_out->tm_min / 60; + p_out->tm_min = p_out->tm_min % 60; + } + if (p_out->tm_hour >= 24) { + p_out->tm_mday += p_out->tm_hour / 24; + p_out->tm_hour = p_out->tm_hour % 24; + } + maxday = calc_month_day(p_out->tm_year, p_out->tm_mon); + while (p_out->tm_mday > maxday) { + p_out->tm_mday -= maxday; + p_out->tm_mon ++; + //month range = [1,12] + if (p_out->tm_mon > 12) { + p_out->tm_year += (p_out->tm_mon - 1) / 12; + p_out->tm_mon = ((p_out->tm_mon - 1) % 12) + 1; + } + maxday = calc_month_day(p_out->tm_year, p_out->tm_mon); + } + //month range = [1,12] + if (p_out->tm_mon > 12) { + p_out->tm_year += (p_out->tm_mon - 1) / 12; + p_out->tm_mon = ((p_out->tm_mon - 1) % 12) + 1; + } + return 0; +} + +_THUMB2 int time_util_diff_sec(struct rtc_time *p_t2, struct rtc_time *p_t1) +{ + int day2 = calc_month_day(p_t2->tm_year, p_t2->tm_mon) + p_t2->tm_mday; + int day1 = calc_month_day(p_t1->tm_year, p_t1->tm_mon) + p_t1->tm_mday; + int sec2 = p_t2->tm_hour*60*60 + p_t2->tm_min*60 + p_t2->tm_sec; + int sec1 = p_t1->tm_hour*60*60 + p_t1->tm_min*60 + p_t1->tm_sec; + int diff = (day2-day1)*24*60*60 + (sec2-sec1); + return diff; +} \ No newline at end of file diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/time_util.h b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/time_util.h new file mode 100755 index 000000000000..47650c8a7a47 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/time_util.h @@ -0,0 +1,8 @@ +#ifndef _ADD_TIME_H +#define _ADD_TIME_H +#include "rtc.h" + +extern int time_util_add_sec(struct rtc_time *p_out, struct rtc_time *p_in, int sec); +extern int time_util_diff_sec(struct rtc_time *p_t2, struct rtc_time *p_t1); + +#endif \ No newline at end of file diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/compress/Makefile b/board/novatek/ns02501/loader/LibExt/LIBExt_src/compress/Makefile new file mode 100755 index 000000000000..71e55b16f2f4 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/compress/Makefile @@ -0,0 +1,36 @@ + +#---------------------------------------------------------------------- +# set the library name here +#---------------------------------------------------------------------- +PRJ_NAME = Compress + +#---------------------------------------------------------------------- +# add/delete source files here +#---------------------------------------------------------------------- +SRC = \ + lz.c + +ASM = + +#---------------------------------------------------------------------- +# set the include directory here +#---------------------------------------------------------------------- +INC_DIR = . \ + ../../../Include + +#---------------------------------------------------------------------- +# set the image output directory here +#---------------------------------------------------------------------- +IMG_BASE_DIR = ../../../ARC/Lib + +#---------------------------------------------------------------------- +# add additional C and assembly flags here +#---------------------------------------------------------------------- +CFLAGS_R = +ASMFLAGS_R = + +#---------------------------------------------------------------------- +# include common parts of the makefile +#---------------------------------------------------------------------- +MAKE_COMMON_DIR = ../../../MakeCommon +include $(MAKE_COMMON_DIR)/OutputLib.txt diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/compress/lz.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/compress/lz.c new file mode 100755 index 000000000000..072c6a5497a7 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/compress/lz.c @@ -0,0 +1,682 @@ +/* + Decompress library source file + + Decompress library source file + + @file lz.c + @ingroup mISYSUtil + @note Nothing +*/ + +/************************************************************************* +* Name: lz.c +* Author: Marcus Geelnard +* Description: LZ77 coder/decoder implementation. +* Reentrant: Yes +* +* The LZ77 compression scheme is a substitutional compression scheme +* proposed by Abraham Lempel and Jakob Ziv in 1977. It is very simple in +* its design, and uses no fancy bit level compression. +* +* This is my first attempt at an implementation of a LZ77 code/decoder. +* +* The principle of the LZ77 compression algorithm is to store repeated +* occurrences of strings as references to previous occurrences of the same +* string. The point is that the reference consumes less space than the +* string itself, provided that the string is long enough (in this +* implementation, the string has to be at least 4 bytes long, since the +* minimum coded reference is 3 bytes long). Also note that the term +* "string" refers to any kind of byte sequence (it does not have to be +* an ASCII string, for instance). +* +* The coder uses a brute force approach to finding string matches in the +* history buffer (or "sliding window", if you wish), which is very, very +* slow. I recon the complexity is somewhere between O(n^2) and O(n^3), +* depending on the input data. +* +* There is also a faster implementation that uses a large working buffer +* in which a "jump table" is stored, which is used to quickly find +* possible string matches (see the source code for LZ_CompressFast() for +* more information). The faster method is an order of magnitude faster, +* but still quite slow compared to other compression methods. +* +* The upside is that decompression is very fast, and the compression ratio +* is often very good. +* +* The reference to a string is coded as a (length,offset) pair, where the +* length indicates the length of the string, and the offset gives the +* offset from the current data position. To distinguish between string +* references and literal strings (uncompressed bytes), a string reference +* is preceded by a marker byte, which is chosen as the least common byte +* symbol in the input data stream (this marker byte is stored in the +* output stream as the first byte). +* +* Occurrences of the marker byte in the stream are encoded as the marker +* byte followed by a zero byte, which means that occurrences of the marker +* byte have to be coded with two bytes. +* +* The lengths and offsets are coded in a variable length fashion, allowing +* values of any magnitude (up to 4294967295 in this implementation). +* +* With this compression scheme, the worst case compression result is +* (257/256)*insize + 1. +* +*------------------------------------------------------------------------- +* Copyright (c) 2003-2006 Marcus Geelnard +* +* This software is provided 'as-is', without any express or implied +* warranty. In no event will the authors be held liable for any damages +* arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, +* including commercial applications, and to alter it and redistribute it +* freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not +* claim that you wrote the original software. If you use this software +* in a product, an acknowledgment in the product documentation would +* be appreciated but is not required. +* +* 2. Altered source versions must be plainly marked as such, and must not +* be misrepresented as being the original software. +* +* 3. This notice may not be removed or altered from any source +* distribution. +* +* Marcus Geelnard +* marcus.geelnard at home.se +*************************************************************************/ +#include "constant.h" + +#if (_GZIP_ENABLE_API_ == 1) +#include "Clock.h" +#include "timer.h" +#include "debug.h" +#include "Cache.h" +#include "nvtpack.h" + +#define GZIP_SETREG(ofs, value) OUTREG32(GZIP_REG_BASE_ADDR + (ofs),(value)) +#define GZIP_GETREG(ofs) INREG32(GZIP_REG_BASE_ADDR + ofs) + +#define GZIP_CTRL_REG_OFS 0x00 +#define GZIP_CFG_REG_OFS 0x04 +#define GZIP_INTEN_REG_OFS 0x10 +#define GZIP_INTSTS_REG_OFS 0x14 +#define GZIP_SRC_DMA_ADDRESS_REG_OFS 0x20 +#define GZIP_DST_DMA_ADDRESS_REG_OFS 0x28 +#define GZIP_SRC_SIZE_REG_OFS 0x30 +#define GZIP_DST_SIZE_REG_OFS 0x38 + +#define GZIP_EN (1<<0) +#define GZIP_TRIG (1<<1) +#define GZIP_DST_SIZE_LIMIT_EN (1<<2) + + +#else + +#endif +#include "lz.h" +/************************************************************************* +* Constants used for LZ77 coding +*************************************************************************/ +#if (_GZIP_ENABLE_API_ == 1) +__attribute__((target("thumb2"))) unsigned int GZ_Uncompress(UINT8 *in, UINT8 *out, UINT32 insize) +{ + UINT32 gz_size; + // check BFC's footer + UINT32 fourcc = *(UINT32 *)(in + insize - 4); + if (fourcc == MAKEFOURCC('F', 'O', 'O', 'T')) { + UINT8 padding_size = *(UINT8 *)(in + insize - 5); + insize -= padding_size; + } + + UINT32 uiReg; + enableGZReset(); + timer_delay(100); + disableGZReset(); + uiReg = INREG32(CLOCK_GEN_REG_BASE_ADDR + 0x28); + uiReg &= ~(GZ_CLOCK_RATE_MASK); + uiReg |= GZ_CLOCK_RATE_480_MHZ; + OUTREG32(CLOCK_GEN_REG_BASE_ADDR + 0x28, uiReg); + + enableGZClock(); + + GZIP_SETREG(GZIP_INTEN_REG_OFS, 0x00000000); + GZIP_SETREG(GZIP_INTSTS_REG_OFS, 0xFFFFFFFF); + + uiReg = GZIP_GETREG(GZIP_CTRL_REG_OFS); + uiReg |= GZIP_EN; + GZIP_SETREG(GZIP_CTRL_REG_OFS, uiReg); + + if ((UINT32)in & 0x3) { + debug_msg_var("in addr not word align", (UINT32)in); + } + if (((UINT32)in & 0xF0000000) == 0xF0000000) { + CLRREG32(DDR_CTRL_REG_BASE_ADDR + 0x8000 + 0x20, (1 << 26)); + CLRREG32(TOP_CTRL_REG_BASE_ADDR + 0x20, (0x3 << 20)); + SETREG32(TOP_CTRL_REG_BASE_ADDR + 0x20, (0x1 << 22)); + // dma_disableChannel(DMA_CH_GZIP); + // top_direct_mode_sel(FASTBOOT_DIRMODE_GZIP); + } else { + SETREG32(DDR_CTRL_REG_BASE_ADDR + 0x8000 + 0x20, (1 << 26)); + CLRREG32(TOP_CTRL_REG_BASE_ADDR + 0x20, (0x7 << 20)); + // dma_enableChannel(DMA_CH_GZIP); + // top_direct_mode_sel(FASTBOOT_DIRMODE_DISABLE); + } + + CPUflushWriteCache((UINT32)in, insize); + + //Out buffer need clean first + CPUflushWriteCache((UINT32)out, insize*3); + + GZIP_SETREG(GZIP_SRC_DMA_ADDRESS_REG_OFS, (UINT32)in); + GZIP_SETREG(GZIP_DST_DMA_ADDRESS_REG_OFS, (UINT32)out); + + GZIP_SETREG(GZIP_SRC_SIZE_REG_OFS, insize); + + // gzip_setConfig(GZIP_CFG_HEADER_DISABLE, gzip_info->bHeader_disable); + // gzip_setConfig(GZIP_CFG_FOOTER_DISABLE, gzip_info->bFooter_disable); + // gzip_setConfig(GZIP_CFG_IS1950, gzip_info->is1950); + // Header : disable + // Footer : disable + // is1950 : TRUE + GZIP_SETREG(GZIP_CFG_REG_OFS, 0x4); + + // Trigger + uiReg = GZIP_GETREG(GZIP_CTRL_REG_OFS); + uiReg |= GZIP_TRIG; + GZIP_SETREG(GZIP_CTRL_REG_OFS, uiReg); + + // Polling down + while (!(GZIP_GETREG(GZIP_INTSTS_REG_OFS) & (0x1 << 0))) + ; + + // gzip_platform_cache_sync_dma_to_dev(gzip_info->src_address, gzip_info->src_size); + + // gzip_setConfig(GZIP_CFG_TRIGGER, TRUE); + // gzip_platform_wai_flg(); + // gzip_close(); + + // gzip_platform_cache_sync_dma_from_dev(gzip_info->dst_address, GZIP_GETREG(GZIP_DST_SIZE_REG_OFS)); + gz_size = GZIP_GETREG(GZIP_DST_SIZE_REG_OFS); + CPUflushReadCache((UINT32)out, gz_size); + if (((UINT32)in & 0xF0000000) == 0xF0000000) { + SETREG32(DDR_CTRL_REG_BASE_ADDR + 0x8000 + 0x20, (1 << 26)); + CLRREG32(TOP_CTRL_REG_BASE_ADDR + 0x20, (0x3 << 20)); + } + + + + disableGZClock(); + + return gz_size; +} +#endif +/* Maximum offset (can be any size < 2^31). Lower values give faster + compression, while higher values gives better compression. The default + value of 100000 is quite high. Experiment to see what works best for + you. */ +#define LZ_MAX_OFFSET 100000 + +/** + @addtogroup mISYSUtil +*/ +//@{ + + + +/************************************************************************* +* INTERNAL FUNCTIONS * +*************************************************************************/ + + +/************************************************************************* +* _LZ_StringCompare() - Return maximum length string match. +*************************************************************************/ +#if 0 +static unsigned int _LZ_StringCompare( unsigned char * str1, + unsigned char * str2, unsigned int minlen, unsigned int maxlen ) +{ + unsigned int len; + + for( len = minlen; (len < maxlen) && (str1[len] == str2[len]); ++ len ); + + return len; +} +#endif + +/************************************************************************* +* _LZ_WriteVarSize() - Write unsigned integer with variable number of +* bytes depending on value. +*************************************************************************/ +#if 0 +static int _LZ_WriteVarSize( unsigned int x, unsigned char * buf ) +{ + unsigned int y; + int num_bytes, i, b; + + /* Determine number of bytes needed to store the number x */ + y = x >> 3; + for( num_bytes = 5; num_bytes >= 2; -- num_bytes ) + { + if( y & 0xfe000000 ) break; + y <<= 7; + } + + /* Write all bytes, seven bits in each, with 8:th bit set for all */ + /* but the last byte. */ + for( i = num_bytes-1; i >= 0; -- i ) + { + b = (x >> (i*7)) & 0x0000007f; + if( i > 0 ) + { + b |= 0x00000080; + } + *buf ++ = (unsigned char) b; + } + + /* Return number of bytes written */ + return num_bytes; +} +#endif + +/************************************************************************* +* _LZ_ReadVarSize() - Read unsigned integer with variable number of +* bytes depending on value. +*************************************************************************/ + +__attribute__((target("thumb2"))) static UINT32 _LZ_ReadVarSize(UINT32 * x, UINT8 * buf ) +{ + UINT32 y, b, num_bytes; + + /* Read complete value (stop when byte contains zero in 8:th bit) */ + y = 0; + num_bytes = 0; + do + { + b = (UINT32) (*buf ++); + y = (y << 7) | (b & 0x0000007f); + ++ num_bytes; + } + while( b & 0x00000080 ); + + /* Store value in x */ + *x = y; + + /* Return number of bytes read */ + return num_bytes; +} + + + +/************************************************************************* +* PUBLIC FUNCTIONS * +*************************************************************************/ + + +/************************************************************************* +* LZ_Compress() - Compress a block of data using an LZ77 coder. +* in - Input (uncompressed) buffer. +* out - Output (compressed) buffer. This buffer must be 0.4% larger +* than the input buffer, plus one byte. +* insize - Number of input bytes. +* The function returns the size of the compressed data. +*************************************************************************/ +#if 0 +int LZ_Compress( unsigned char *in, unsigned char *out, + unsigned int insize ) +{ + unsigned char marker, symbol; + unsigned int inpos, outpos, bytesleft, i; + unsigned int maxoffset, offset, bestoffset; + unsigned int maxlength, length, bestlength; + unsigned int histogram[ 256 ]; + unsigned char *ptr1, *ptr2; + + /* Do we have anything to compress? */ + if( insize < 1 ) + { + return 0; + } + + /* Create histogram */ + for( i = 0; i < 256; ++ i ) + { + histogram[ i ] = 0; + } + for( i = 0; i < insize; ++ i ) + { + ++ histogram[ in[ i ] ]; + } + + /* Find the least common byte, and use it as the marker symbol */ + marker = 0; + for( i = 1; i < 256; ++ i ) + { + if( histogram[ i ] < histogram[ marker ] ) + { + marker = i; + } + } + + /* Remember the marker symbol for the decoder */ + out[ 0 ] = marker; + + /* Start of compression */ + inpos = 0; + outpos = 1; + + /* Main compression loop */ + bytesleft = insize; + do + { + /* Determine most distant position */ + if( inpos > LZ_MAX_OFFSET ) maxoffset = LZ_MAX_OFFSET; + else maxoffset = inpos; + + /* Get pointer to current position */ + ptr1 = &in[ inpos ]; + + /* Search history window for maximum length string match */ + bestlength = 3; + bestoffset = 0; + for( offset = 3; offset <= maxoffset; ++ offset ) + { + /* Get pointer to candidate string */ + ptr2 = &ptr1[ -(int)offset ]; + + /* Quickly determine if this is a candidate (for speed) */ + if( (ptr1[ 0 ] == ptr2[ 0 ]) && + (ptr1[ bestlength ] == ptr2[ bestlength ]) ) + { + /* Determine maximum length for this offset */ + maxlength = (bytesleft < offset ? bytesleft : offset); + + /* Count maximum length match at this offset */ + length = _LZ_StringCompare( ptr1, ptr2, 0, maxlength ); + + /* Better match than any previous match? */ + if( length > bestlength ) + { + bestlength = length; + bestoffset = offset; + } + } + } + + /* Was there a good enough match? */ + if( (bestlength >= 8) || + ((bestlength == 4) && (bestoffset <= 0x0000007f)) || + ((bestlength == 5) && (bestoffset <= 0x00003fff)) || + ((bestlength == 6) && (bestoffset <= 0x001fffff)) || + ((bestlength == 7) && (bestoffset <= 0x0fffffff)) ) + { + out[ outpos ++ ] = (unsigned char) marker; + outpos += _LZ_WriteVarSize( bestlength, &out[ outpos ] ); + outpos += _LZ_WriteVarSize( bestoffset, &out[ outpos ] ); + inpos += bestlength; + bytesleft -= bestlength; + } + else + { + /* Output single byte (or two bytes if marker byte) */ + symbol = in[ inpos ++ ]; + out[ outpos ++ ] = symbol; + if( symbol == marker ) + { + out[ outpos ++ ] = 0; + } + -- bytesleft; + } + } + while( bytesleft > 3 ); + + /* Dump remaining bytes, if any */ + while( inpos < insize ) + { + if( in[ inpos ] == marker ) + { + out[ outpos ++ ] = marker; + out[ outpos ++ ] = 0; + } + else + { + out[ outpos ++ ] = in[ inpos ]; + } + ++ inpos; + } + + return outpos; +} +#endif + +/************************************************************************* +* LZ_CompressFast() - Compress a block of data using an LZ77 coder. +* in - Input (uncompressed) buffer. +* out - Output (compressed) buffer. This buffer must be 0.4% larger +* than the input buffer, plus one byte. +* insize - Number of input bytes. +* work - Pointer to a temporary buffer (internal working buffer), which +* must be able to hold (insize+65536) unsigned integers. +* The function returns the size of the compressed data. +*************************************************************************/ +#if 0 +int LZ_CompressFast( unsigned char *in, unsigned char *out, + unsigned int insize, unsigned int *work ) +{ + unsigned char marker, symbol; + unsigned int inpos, outpos, bytesleft, i, index, symbols; + unsigned int offset, bestoffset; + unsigned int maxlength, length, bestlength; + unsigned int histogram[ 256 ], *lastindex, *jumptable; + unsigned char *ptr1, *ptr2; + + /* Do we have anything to compress? */ + if( insize < 1 ) + { + return 0; + } + + /* Assign arrays to the working area */ + lastindex = work; + jumptable = &work[ 65536 ]; + + /* Build a "jump table". Here is how the jump table works: + jumptable[i] points to the nearest previous occurrence of the same + symbol pair as in[i]:in[i+1], so in[i] == in[jumptable[i]] and + in[i+1] == in[jumptable[i]+1], and so on... Following the jump table + gives a dramatic boost for the string search'n'match loop compared + to doing a brute force search. The jump table is built in O(n) time, + so it is a cheap operation in terms of time, but it is expensice in + terms of memory consumption. */ + for( i = 0; i < 65536; ++ i ) + { + lastindex[ i ] = 0xffffffff; + } + for( i = 0; i < insize-1; ++ i ) + { + symbols = (((unsigned int)in[i]) << 8) | ((unsigned int)in[i+1]); + index = lastindex[ symbols ]; + lastindex[ symbols ] = i; + jumptable[ i ] = index; + } + jumptable[ insize-1 ] = 0xffffffff; + + /* Create histogram */ + for( i = 0; i < 256; ++ i ) + { + histogram[ i ] = 0; + } + for( i = 0; i < insize; ++ i ) + { + ++ histogram[ in[ i ] ]; + } + + /* Find the least common byte, and use it as the marker symbol */ + marker = 0; + for( i = 1; i < 256; ++ i ) + { + if( histogram[ i ] < histogram[ marker ] ) + { + marker = i; + } + } + + /* Remember the marker symbol for the decoder */ + out[ 0 ] = marker; + + /* Start of compression */ + inpos = 0; + outpos = 1; + + /* Main compression loop */ + bytesleft = insize; + do + { + /* Get pointer to current position */ + ptr1 = &in[ inpos ]; + + /* Search history window for maximum length string match */ + bestlength = 3; + bestoffset = 0; + index = jumptable[ inpos ]; + while( (index != 0xffffffff) && ((inpos - index) < LZ_MAX_OFFSET) ) + { + /* Get pointer to candidate string */ + ptr2 = &in[ index ]; + + /* Quickly determine if this is a candidate (for speed) */ + if( ptr2[ bestlength ] == ptr1[ bestlength ] ) + { + /* Determine maximum length for this offset */ + offset = inpos - index; + maxlength = (bytesleft < offset ? bytesleft : offset); + + /* Count maximum length match at this offset */ + length = _LZ_StringCompare( ptr1, ptr2, 2, maxlength ); + + /* Better match than any previous match? */ + if( length > bestlength ) + { + bestlength = length; + bestoffset = offset; + } + } + + /* Get next possible index from jump table */ + index = jumptable[ index ]; + } + + /* Was there a good enough match? */ + if( (bestlength >= 8) || + ((bestlength == 4) && (bestoffset <= 0x0000007f)) || + ((bestlength == 5) && (bestoffset <= 0x00003fff)) || + ((bestlength == 6) && (bestoffset <= 0x001fffff)) || + ((bestlength == 7) && (bestoffset <= 0x0fffffff)) ) + { + out[ outpos ++ ] = (unsigned char) marker; + outpos += _LZ_WriteVarSize( bestlength, &out[ outpos ] ); + outpos += _LZ_WriteVarSize( bestoffset, &out[ outpos ] ); + inpos += bestlength; + bytesleft -= bestlength; + } + else + { + /* Output single byte (or two bytes if marker byte) */ + symbol = in[ inpos ++ ]; + out[ outpos ++ ] = symbol; + if( symbol == marker ) + { + out[ outpos ++ ] = 0; + } + -- bytesleft; + } + } + while( bytesleft > 3 ); + + /* Dump remaining bytes, if any */ + while( inpos < insize ) + { + if( in[ inpos ] == marker ) + { + out[ outpos ++ ] = marker; + out[ outpos ++ ] = 0; + } + else + { + out[ outpos ++ ] = in[ inpos ]; + } + ++ inpos; + } + + return outpos; +} +#endif + +/** + LZ Uncompress + + Uncompress/decompress by LZ77 decoder + + @param[in] in Input buffer of compressed data + @param[out] out Output buffer to store decompressed data (Caller should maintain large enough buffer size to hold decompressed data) + @param[in] insize Length of input buffer in + + @return void +*/ +__attribute__((target("thumb2"))) unsigned int LZ_Uncompress(UINT8 *in, UINT8 *out, + UINT32 insize ) +{ + UINT8 marker, symbol; + UINT32 i, inpos, outpos, length, offset; + + /* Do we have anything to uncompress? */ + if( insize < 1 ) + { + return 0; + } + + /* Get marker symbol from input stream */ + marker = in[ 0 ]; + inpos = 1; + + /* Main decompression loop */ + outpos = 0; + do + { + symbol = in[ inpos ++ ]; + if( symbol == marker ) + { + /* We had a marker byte */ + if( in[ inpos ] == 0 ) + { + /* It was a single occurrence of the marker byte */ + out[ outpos ++ ] = marker; + ++ inpos; + } + else + { + /* Extract true length and offset */ + inpos += _LZ_ReadVarSize( &length, &in[ inpos ] ); + inpos += _LZ_ReadVarSize( &offset, &in[ inpos ] ); + + /* Copy corresponding data from history window */ + for( i = 0; i < length; ++ i ) + { + out[ outpos ] = out[ outpos - offset ]; + ++ outpos; + } + } + } + else + { + /* No marker, plain copy */ + out[ outpos ++ ] = symbol; + } + } + while( inpos < insize ); + return outpos; +} +//#endif +//@} + diff --git a/board/novatek/ns02501/loader/LibExt/Makefile b/board/novatek/ns02501/loader/LibExt/Makefile new file mode 100755 index 000000000000..a768f07e0022 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/Makefile @@ -0,0 +1,62 @@ +include ../MakeCommon/MakeOption.txt + +ifeq "$(shell uname)" "Linux" +MAKEFILE_SEARCH := $(sort $(dir $(shell find . -name 'Makefile'))) +else +MAKEFILE_SEARCH := $(sort $(dir $(shell find . -name \'Makefile\'))) +endif +mk_all := $(filter-out ./, $(MAKEFILE_SEARCH)) + +ifeq "$(ISOLATE_DEP)" "ON" +.PHONY: all $(mk_all) clean rebuild debug release dep + +all: + @make dep + @make debug + @make release +else +.PHONY: all $(mk_all) clean rebuild debug release + +all: rm_log $(mk_all) +endif + +$(mk_all): + @$(MAKE) --directory=$@ $(MAKECMDGOALS) + +rm_log: +ifeq "$(CLEAN_LOG)" "ON" + @-rm -f log*.txt +endif + +PRJ_NAME_ALL = $(shell find -name 'Makefile' -not -path "./Makefile" -print | xargs grep "PRJ_NAME" | sed 's/[[:digit:][:alpha:][:punct:]]*:PRJ_NAME[ ]*=[ ]*//g') +LIB_R = $(addprefix "../ARC/Lib/Release/", $(addsuffix ".a", $(PRJ_NAME_ALL))) +LIB_D = $(addprefix "../ARC/Lib/Debug/", $(addsuffix "_D.a", $(PRJ_NAME_ALL))) + +clean: + @-echo Clean LibExt ... \ + && find ./ -type d -name '*_Data' | xargs rm -rf --no-preserve-root $(LIB_D) $(LIB_R) log*.txt lint*.txt + +ifeq "$(ISOLATE_DEP)" "ON" +rebuild: + @make clean + @make dep + @make debug + @make release + +dep: rm_log $(mk_all) +else +rebuild: rm_log $(mk_all) +endif + +debug: rm_log $(mk_all) + +release: rm_log $(mk_all) + +rm_lint_log: + @-rm -f lint*.txt + +lint: rm_lint_log $(mk_all) + +lintclean: + @-echo Clean LibExt lint data ... \ + && find ./ -type d -name 'CheckData' | xargs rm -rf --no-preserve-root lint*.txt \ No newline at end of file diff --git a/board/novatek/ns02501/loader/MakeCommon/InputSource.txt b/board/novatek/ns02501/loader/MakeCommon/InputSource.txt new file mode 100755 index 000000000000..631265678903 --- /dev/null +++ b/board/novatek/ns02501/loader/MakeCommon/InputSource.txt @@ -0,0 +1,177 @@ +#---------------------------------------------------------------------- +# get the source full path, convert upper case extension to lower case +#---------------------------------------------------------------------- +ifeq "$(shell uname)" "Linux" +SRC := $(addprefix $(shell pwd)/, $(SRC:.C=.c)) +ASM := $(addprefix $(shell pwd)/, $(ASM:.s=.S)) +CPP_SRC := $(addprefix $(shell pwd)/, $(CPP_SRC:.CPP=.cpp)) +else +SRC := $(addprefix $(shell cygpath --mixed $(shell pwd))/, $(SRC:.C=.c)) +ASM := $(addprefix $(shell cygpath --mixed $(shell pwd))/, $(ASM:.s=.S)) +CPP_SRC := $(addprefix $(shell cygpath --mixed $(shell pwd))/, $(CPP_SRC:.CPP=.cpp)) +endif + +#---------------------------------------------------------------------- +# set the basic include directories +#---------------------------------------------------------------------- +# Get working directory +MYPWD := $(shell pwd) +ALG_PATH := $(findstring /Alg/, $(MYPWD)) +APP_PATH := $(findstring /App/, $(MYPWD)) +APPEXT_PATH := $(findstring /AppExt/, $(MYPWD)) +LIB_PATH := $(findstring /Lib/, $(MYPWD)) +LIBEXT_PATH := $(findstring /LibExt/, $(MYPWD)) +DRV_PATH := $(findstring /Drv/, $(MYPWD)) +DRVEXT_PATH := $(findstring /DrvExt/, $(MYPWD)) +COM_PATH := $(findstring /Common/, $(MYPWD)) +UTIL_PATH := $(findstring /Common/Common_src/Utility, $(MYPWD)) +PRJ_PATH := $(shell find ./ -maxdepth 1 -name MakeConfig.txt) + +BASE_INC_DIR := $(filter %../../Include, $(INC_DIR)) +APPEXT_INC_DIR := -I$(BASE_INC_DIR)/AppExt +APP_INC_DIR := -I$(BASE_INC_DIR)/App +LIBEXT_INC_DIR := -I$(BASE_INC_DIR)/LibExt +LIB_INC_DIR := -I$(BASE_INC_DIR)/Lib +DRVEXT_INC_DIR := -I$(BASE_INC_DIR)/DrvExt +DRV_INC_DIR := -I$(BASE_INC_DIR)/Drv +LIBC_INC_DIR := -I$(BASE_INC_DIR)/Common/LibC + +#BASE_INC_ALG_DIR := $(BASE_INC_DIR)/../Alg/Include +#BASE_INC_PROTECT_DIR := $(subst Include,IncludeProtected,$(BASE_INC_DIR)) + +#change replace /Include/ to /IncludeProtected/ +define protected +$(subst ../../Include/,../../IncludeProtected/,$1) +endef + + +ifeq "$(USE_ECOS_KERNEL)" "ON" +#eCos include path like ThirdParty/eCos/Include ThirdParty/live555/Include +ECOS_INC_DIR := $(addprefix -I,$(addsuffix /include, $(shell find $(BASE_INC_DIR)/../ThirdParty/ -maxdepth 1 -mindepth 1 -type d))) +endif + +ifeq "$(shell uname)" "Linux" +INC_DIR := $(addprefix -I, $(sort $(dir $(shell find $(INC_DIR) -name '*.h')))) +INC_DIR += $(addprefix -I, $(sort $(dir $(shell find $(BASE_INC_PROTECT_DIR) -name '*.h')))) +INC_DIR += $(addprefix -I, $(sort $(dir $(shell find $(BASE_INC_ALG_DIR) -name '*.h')))) +else +INC_DIR := $(addprefix -I, $(sort $(dir $(shell find $(INC_DIR) -name \'\*\.h\')))) +INC_DIR += $(addprefix -I, $(sort $(dir $(shell find $(BASE_INC_PROTECT_DIR) -name \'\*\.h\')))) +INC_DIR += $(addprefix -I, $(sort $(dir $(shell find $(BASE_INC_ALG_DIR) -name \'\*\.h\')))) +endif + +# For uITRON (MIPS) platform, we use proprietary standard C library. +# We must filter out proprietary header file if we are in others platform (ARM or eCos...) +# Filter out standard C library header file +# ifeq "$(ARCH)" "ARM" +# INC_DIR := $(filter-out $(LIBC_INC_DIR)/%, $(INC_DIR)) +# endif + +ifeq "$(USE_ECOS_KERNEL)" "ON" + INC_DIR := $(filter-out $(LIBC_INC_DIR)/%, $(INC_DIR)) + INC_DIR += $(ECOS_INC_DIR) +endif + +ifeq "$(INCLUDE_RULE)" "ON" + +#---------------------------------------------------------------------- +# Filter out upper layer's include path +#---------------------------------------------------------------------- + + +# /Common can't access /App or /AppExt or /Lib or /LibExt or /Drv or /DrvExt +# except: /Common/Common_src/Utility can access /Drv +ifneq "$(COM_PATH)" "" +ifneq "$(UTIL_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)% $(LIBEXT_INC_DIR)% $(LIB_INC_DIR)% $(DRVEXT_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected, $(APP_INC_DIR)%) $(call protected,$(LIBEXT_INC_DIR)%) $(call protected,$(LIB_INC_DIR)%) $(call protected,$(DRVEXT_INC_DIR)%),$(INC_DIR)) +else +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)% $(LIBEXT_INC_DIR)% $(LIB_INC_DIR)% $(DRVEXT_INC_DIR)% $(DRV_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected, $(APP_INC_DIR)%) $(call protected,$(LIBEXT_INC_DIR)%) $(call protected,$(LIB_INC_DIR)%) $(call protected,$(DRVEXT_INC_DIR)%) $(call protected,$(DRV_INC_DIR)%),$(INC_DIR)) +endif +endif + +# /Drv can't access /App or /AppExt or /Lib or /LibExt +ifneq "$(DRV_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)% $(LIBEXT_INC_DIR)% $(LIB_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected, $(APP_INC_DIR)%) $(call protected,$(LIBEXT_INC_DIR)%) $(call protected,$(LIB_INC_DIR)%),$(INC_DIR)) +endif + +# /DrvExt can't access /App or /AppExt or /Lib or /LibExt +ifneq "$(DRVEXT_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)% $(LIBEXT_INC_DIR)% $(LIB_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected,$(APP_INC_DIR)%) $(call protected,$(LIBEXT_INC_DIR)%) $(call protected,$(LIB_INC_DIR)%), $(INC_DIR)) +endif + +# /Lib can't access /App or /AppExt +ifneq "$(LIB_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected,$(APP_INC_DIR)%), $(INC_DIR)) +endif + +# /LibExt can't access /App or /AppExt +ifneq "$(LIBEXT_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)% $(APP_INC_DIR)%, $(INC_DIR)) +INC_DIR := $(filter-out $(call protected,$(APPEXT_INC_DIR)%) $(call protected,$(APP_INC_DIR)%), $(INC_DIR)) +endif + +#---------------------------------------------------------------------- +# Filter out under layer's include path +#---------------------------------------------------------------------- + +# /App can't access /Drv +#ifneq "$(APP_PATH)" "" +#INC_DIR := $(filter-out $(DRV_INC_DIR)%, $(INC_DIR)) +#endif + +# /App can't access /DrvExt or /LibExt +ifneq "$(APP_PATH)" "" +INC_DIR := $(filter-out $(DRVEXT_INC_DIR)% $(LIBEXT_INC_DIR)%, $(INC_DIR)) +endif + +# /AppExt can't access /Drv +#ifneq "$(APPEXT_PATH)" "" +#INC_DIR := $(filter-out $(DRV_INC_DIR)%, $(INC_DIR)) +#endif + +# /Lib can't access /DrvExt +ifneq "$(LIB_PATH)" "" +INC_DIR := $(filter-out $(DRVEXT_INC_DIR)%, $(INC_DIR)) +endif + +# /Prj can't access /Drv or /DrvExt +#ifneq "$(PRJ_PATH)" "" +#INC_DIR := $(filter-out $(DRVEXT_INC_DIR)% $(DRV_INC_DIR)%, $(INC_DIR)) +#endif + +ifneq "$(UI_STYLE)" "" +ifeq ($(filter $(UI_STYLE), $(UI_STYLE_ALL)),) +$(error add your style into $$UI_STYLE_ALL in MakeConfig.txt) +else +PRJ_FILT_OUT := $(filter-out $(UI_STYLE), $(UI_STYLE_ALL)) +endif +PRJ_FILT_OUT_DIR := $(addsuffix %,$(addprefix -I./SrcCode/UIWnd/, $(subst UI_STYLE_,,$(PRJ_FILT_OUT)))) +#INC_DIR := $(shell echo $(INC_DIR)|tr a-z A-Z) +INC_DIR := $(filter-out $(PRJ_FILT_OUT_DIR) , $(INC_DIR)) +endif + +#---------------------------------------------------------------------- +# Filter out external layer's include path +#---------------------------------------------------------------------- + +# /Drv can't access /DrvExt +ifneq "$(DRV_PATH)" "" +INC_DIR := $(filter-out $(DRVEXT_INC_DIR)%, $(INC_DIR)) +endif + +# /Lib can't access /LibExt +ifneq "$(LIB_PATH)" "" +INC_DIR := $(filter-out $(LIBEXT_INC_DIR)%, $(INC_DIR)) +endif + +# /App can't access /AppExt +ifneq "$(APP_PATH)" "" +INC_DIR := $(filter-out $(APPEXT_INC_DIR)%, $(INC_DIR)) +endif + +endif \ No newline at end of file diff --git a/board/novatek/ns02501/loader/MakeCommon/MakeCommon.txt b/board/novatek/ns02501/loader/MakeCommon/MakeCommon.txt new file mode 100755 index 000000000000..7b2d22580cbe --- /dev/null +++ b/board/novatek/ns02501/loader/MakeCommon/MakeCommon.txt @@ -0,0 +1,680 @@ +#---------------------------------------------------------------------- +# Get the source full path, include directories +#---------------------------------------------------------------------- +# query SRC, ASM, INC_DIR +include $(MAKE_COMMON_DIR)/InputSource.txt + +#---------------------------------------------------------------------- +# set the basic ASM flags +# PLATFORM_AFLAGS := -march=armv7-a -mcpu=cortex-a9 -mabi=aapcs -msoft-float +# -mfloat-abi=softfp <==> -mfloat-abi=hard +#---------------------------------------------------------------------- +ifeq "$(FPU)" "hard" +PLATFORM_AFLAGS := -mcpu=$(CPU) -mfpu=neon -mfloat-abi=$(FPU) +else +PLATFORM_AFLAGS := -mcpu=$(CPU) -mfloat-abi=$(FPU) +endif + + + +#---------------------------------------------------------------------- +# set the basic C flags +# Reference +# http://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/ +# http://gcc.gnu.org/onlinedocs/gcc-4.4.7/gcc/Option-Summary.html#Option-Summary +#---------------------------------------------------------------------- +#---------------------------------------------------------------------- +# Overall Options +#---------------------------------------------------------------------- +# -c : Compile the source files, but do not link +# -pipe : Use pipes rather than temporary files for communication between the various stages of compilation +PLATFORM_CFLAGS := -c -pipe + +#---------------------------------------------------------------------- +# Machine Dependent Options +#---------------------------------------------------------------------- +# -march=24kec : Generate code that will run on MIPS 24KEc +# -mtune=24kec : Optimize for MIPS 24KEc +# -mdsp : Use revision 1 of the MIPS DSP ASE +# -EL : Generate little-endian code +# -msoft-float : Do not use floating-point coprocessor instructions +# -marm : Tell compiler do not build c code as thumb2 instruction +#---------------------------------------------------------------------- +ifeq "$(USE_NEON)" "on" +PLATFORM_CFLAGS += -mcpu=$(CPU) -marm -mno-thumb-interwork -mfloat-abi=softfp -mfpu=neon-fp-armv8 -ftree-vectorize +else +ifeq "$(FPU)" "hard" +PLATFORM_CFLAGS += -mcpu=$(CPU) -marm -mno-thumb-interwork -mfloat-abi=$(FPU) -mfpu=neon -ftree-vectorize +else +PLATFORM_CFLAGS += -mcpu=$(CPU) -marm -mno-thumb-interwork -mfloat-abi=$(FPU) +endif +endif +# PLATFORM_CFLAGS += -mtune=$(CPU) -march=armv7-a -marm -mhard-float -mfpu=neon-vfpv4 -mno-thumb-interwork -mno-sched-prolog +# PLATFORM_CFLAGS += -mtune=$(CPU) -march=armv7-a -marm -msoft-float -mno-thumb-interwork -mno-sched-prolog + +#---------------------------------------------------------------------- +# Warning Options +#---------------------------------------------------------------------- +# -Wall : This enables all the warnings about constructions that some users consider questionable, +# and that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. +# NOTE: -Wall turns on the following warning flags: +# -Waddress +# -Warray-bounds (only with -O2) +# -Wc++11-compat +# -Wchar-subscripts +# -Wenum-compare (in C/ObjC; this is on by default in C++) +# -Wimplicit-int (C and Objective-C only) +# -Wimplicit-function-declaration (C and Objective-C only) +# -Wcomment +# -Wformat +# -Wmain (only for C/ObjC and unless -ffreestanding) +# -Wmaybe-uninitialized +# -Wmissing-braces (only for C/ObjC) +# -Wnonnull +# -Wparentheses +# -Wpointer-sign +# -Wreorder +# -Wreturn-type +# -Wsequence-point +# -Wsign-compare (only in C++) +# -Wstrict-aliasing +# -Wstrict-overflow=1 +# -Wswitch +# -Wtrigraphs +# -Wuninitialized +# -Wunknown-pragmas +# -Wunused-function +# -Wunused-label +# -Wunused-value +# -Wunused-variable +# -Wvolatile-register-var +# -Wundef : Warn if an undefined identifier is evaluated in an `#if' directive +# -Wsign-compare : Warn when a comparison between signed and unsigned values could produce an incorrect result when the signed value is converted to unsigned +# -Wno-missing-braces : Trun off "Warn if an aggregate or union initializer is not fully bracketed". For XXX = {0}; statement. +# -Wstrict-prototypes : Warn if a function is declared or defined without specifying the argument types +# -Wimplicit-function-declaration : Warn when a function is used before being declared +# -Wmissing-prototypes : Warn about global funcs without prototypes +# -Wmissing-declarations: Warn about global funcs without previous declarations +# -Werror : Warnning as error +#---------------------------------------------------------------------- +PLATFORM_CFLAGS += -Wall -Wundef -Wsign-compare -Wno-missing-braces -Wstrict-prototypes -Wno-unused-const-variable -Wno-misleading-indentation +ifeq "$(OUTPUT_FILE)" "BIN" +else +ifeq "$(INCLUDE_RULE)" "ON" +# PLATFORM_CFLAGS += -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=missing-declarations + PLATFORM_CFLAGS += -Wimplicit-function-declaration -Wmissing-prototypes -Wmissing-declarations +endif +endif + +ifeq "$(shell uname)" "Linux" +PLATFORM_CFLAGS += -Werror +endif + +#---------------------------------------------------------------------- +# C Language Options +#---------------------------------------------------------------------- +# -fno-builtin : Don't recognize built-in functions that do not begin with `__builtin_' as prefix +# -ffreestanding: Assert that compilation takes place in a freestanding environment +#---------------------------------------------------------------------- +# Code Generation Options +#---------------------------------------------------------------------- +# -fno-common : The compiler should place uninitialized global variables in the data section of the object file, rather than generating them as common blocks +# -fshort-wchar : Override the underlying type for `wchar_t' to be `short unsigned int' instead of the default for the target. +#---------------------------------------------------------------------- +# Optimization Options +#---------------------------------------------------------------------- +# -fno-strict-aliasing : Do not warn about code that breaks strict aliasing rules +# -fno-optimize-sibling-calls : Don't optimize sibling and tail recursive calls +# -fno-omit-frame-pointer : Keep the frame pointer in a register for functions that don't need one +#---------------------------------------------------------------------- +PLATFORM_CFLAGS += -fno-builtin -ffreestanding -fno-common -fshort-wchar -fno-strict-aliasing -fno-optimize-sibling-calls -fno-omit-frame-pointer + +# C Language Options for eCos system +ifeq "$(USE_ECOS_KERNEL)" "ON" + PLATFORM_CFLAGS += -D__ECOS +else + PLATFORM_CFLAGS += -nostdinc -D__UITRON +# For make dep + GCCFLAGS +=-D__UITRON +endif + +# Remove -Otime (There is no such option in GCC, GCC default is optimize for time) +# Replace -OSpace (-Os in GCC) +CFLAGS_D := $(filter-out -Otime, $(CFLAGS_D)) +CFLAGS_D := $(CFLAGS_D:-Ospace=-Os) +CFLAGS_R := $(filter-out -Otime, $(CFLAGS_R)) +CFLAGS_R := $(CFLAGS_R:-Ospace=-Os) + +# Slove sub-folder cannot include parent folder header file +INC_DIR += -I$(CURDIR) + +# For Debug target +CFLAGS_D += $(INC_DIR) -g -ggdb -O0 $(PLATFORM_CFLAGS) +ASMFLAGS_D += -g $(INC_DIR) $(PLATFORM_AFLAGS) -D__ASSEMBLY__ + +# For Release target (use -Os instead of -O2, because loader is size dominant) +CFLAGS_R += $(INC_DIR) -Os $(PLATFORM_CFLAGS) +ASMFLAGS_R += $(INC_DIR) $(PLATFORM_AFLAGS) -D__ASSEMBLY__ + +# Generate debug symbol in release target +ifeq "$(RELEASE_SYMBOL)" "ON" + CFLAGS_R += -g -ggdb + ASMFLAGS_R += -L -g +endif + +# Generate debug callback of entry and exit to functions +ifeq "$(INSTRUMENT_FUNCTION)" "ON" + CFLAGS_R += -finstrument-functions -finstrument-functions-exclude-file-list=Common_src/LibC,Common_src/Kernel,Common_src/Debug,Common_src/OS,Include/Common/LibC,Include/Common/Kernel,Include/Common/Debug,Include/Common/OS,Drv_src/Driver,Include/Drv/Driver + CFLAGS_D += -finstrument-functions -finstrument-functions-exclude-file-list=Common_src/LibC,Common_src/Kernel,Common_src/Debug,Common_src/OS,Include/Common/LibC,Include/Common/Kernel,Include/Common/Debug,Include/Common/OS,Drv_src/Driver,Include/Drv/Driver + CFLAGS_R += -D_INSTRUMENT_FUNCTION_=1 + CFLAGS_D += -D_INSTRUMENT_FUNCTION_=1 +else + CFLAGS_R += -D_INSTRUMENT_FUNCTION_=0 + CFLAGS_D += -D_INSTRUMENT_FUNCTION_=0 +endif + +#---------------------------------------------------------------------- +# Generate one ELF section for each function +# Only apply to release target +# Note: -fdata-sections will generate larger code size +#---------------------------------------------------------------------- +ifeq "$(SECTION_BY_FUNC)" "ON" +# CFLAGS_R += -ffunction-sections -fdata-sections + CFLAGS_R += -ffunction-sections +endif + +#---------------------------------------------------------------------- +# Definition for source code check build debug or release +#---------------------------------------------------------------------- +CFLAGS_R += -DNDEBUG +CFLAGS_D += -D_DEBUG + +#---------------------------------------------------------------------- +# FPGA notification for drivers +#---------------------------------------------------------------------- +ifeq "$(EMULATION)" "ON" + ifeq "$(FPGA_EMULATION)" "ON" + CFLAGS_R += -D_EMULATION_=1 -D_FPGA_EMULATION_=1 -D_FPGA_PLL_OSC_=$(FPGA_PLL_OSC) + CFLAGS_D += -D_EMULATION_=1 -D_FPGA_EMULATION_=1 -D_FPGA_PLL_OSC_=$(FPGA_PLL_OSC) + GCCFLAGS += -D_EMULATION_=1 -D_FPGA_EMULATION_=1 -D_FPGA_PLL_OSC_=$(FPGA_PLL_OSC) + ASMFLAGS_R += -D_EMULATION_=1 -D_FPGA_EMULATION_=1 + ASMFLAGS_D += -D_EMULATION_=1 -D_FPGA_EMULATION_=1 + else + CFLAGS_R += -D_EMULATION_=1 -D_FPGA_EMULATION_=0 + CFLAGS_D += -D_EMULATION_=1 -D_FPGA_EMULATION_=0 + GCCFLAGS += -D_EMULATION_=1 -D_FPGA_EMULATION_=0 + ASMFLAGS_R += -D_EMULATION_=1 -D_FPGA_EMULATION_=0 + ASMFLAGS_D += -D_EMULATION_=1 -D_FPGA_EMULATION_=0 + endif +else + CFLAGS_R += -D_EMULATION_=0 -D_FPGA_EMULATION_=0 + CFLAGS_D += -D_EMULATION_=0 -D_FPGA_EMULATION_=0 + GCCFLAGS += -D_EMULATION_=0 -D_FPGA_EMULATION_=0 + ASMFLAGS_R += -D_EMULATION_=0 -D_FPGA_EMULATION_=0 + ASMFLAGS_D += -D_EMULATION_=0 -D_FPGA_EMULATION_=0 +endif + +#---------------------------------------------------------------------- +# PM demo based on customized building way +#---------------------------------------------------------------------- +ifeq "$(PM_DEMO)" "ON" + CFLAGS_R += -D_PM_DEMO_=1 + CFLAGS_D += -D_PM_DEMO_=1 +else + CFLAGS_R += -D_PM_DEMO_=0 + CFLAGS_D += -D_PM_DEMO_=0 +endif + +#---------------------------------------------------------------------- +# GIC usage ON/OFF +#---------------------------------------------------------------------- +ifeq "$(ARM_GIC_400)" "ON" + CFLAGS_R += -D_ARM_GIC_USAGE_=1 + CFLAGS_D += -D_ARM_GIC_USAGE_=1 + ASMFLAGS_R += -D_ARM_GIC_USAGE_=1 + ASMFLAGS_D += -D_ARM_GIC_USAGE_=1 +else + CFLAGS_R += -D_ARM_GIC_USAGE_=0 + CFLAGS_D += -D_ARM_GIC_USAGE_=0 + ASMFLAGS_R += -D_ARM_GIC_USAGE_=0 + ASMFLAGS_D += -D_ARM_GIC_USAGE_=0 +endif + +#---------------------------------------------------------------------- +# Architecture definition +#---------------------------------------------------------------------- +CFLAGS_R += -D_ARCH_ARM_=0 -D_ARCH_MIPS_=1 +CFLAGS_D += -D_ARCH_ARM_=0 -D_ARCH_MIPS_=1 +GCCFLAGS += -D_ARCH_ARM_=0 -D_ARCH_MIPS_=1 + +ifeq "$(ARCH)" "ARM" + CFLAGS_R += -D_ARCH_=_ARCH_ARM_ + CFLAGS_D += -D_ARCH_=_ARCH_ARM_ + GCCFLAGS += -D_ARCH_=_ARCH_ARM_ +else ifeq "$(ARCH)" "MIPS" + CFLAGS_R += -D_ARCH_=_ARCH_MIPS_ + CFLAGS_D += -D_ARCH_=_ARCH_MIPS_ + GCCFLAGS += -D_ARCH_=_ARCH_MIPS_ +endif + +ifeq "$(FPU)" "hard" +ASMFLAGS_D += -D_NEON_ON_=1 +ASMFLAGS_R += -D_NEON_ON_=1 +else +ASMFLAGS_D += -D_NEON_ON_=0 +ASMFLAGS_R += -D_NEON_ON_=0 +endif + +#---------------------------------------------------------------------- +# ROM Public API usage +#---------------------------------------------------------------------- +ifeq "$(ROM_PUBLIC_API)" "ON" + CFLAGS_R += -D_ROM_PUBLIC_API_=1 + CFLAGS_D += -D_ROM_PUBLIC_API_=1 + ASMFLAGS_R+= -D_ROM_PUBLIC_API_=1 + ASMFLAGS_D+= -D_ROM_PUBLIC_API_=1 +else + CFLAGS_R += -D_ROM_PUBLIC_API_=0 + CFLAGS_D += -D_ROM_PUBLIC_API_=0 + ASMFLAGS_R+= -D_ROM_PUBLIC_API_=0 + ASMFLAGS_D+= -D_ROM_PUBLIC_API_=0 +endif + +ifeq "$(GZIP_ENGINE_API)" "ON" + CFLAGS_R += -D_GZIP_ENABLE_API_=1 + CFLAGS_D += -D_GZIP_ENABLE_API_=1 + ASMFLAGS_R+= -D_GZIP_ENABLE_API_=1 + ASMFLAGS_D+= -D_GZIP_ENABLE_API_=1 +else + CFLAGS_R += -D_GZIP_ENABLE_API_=0 + CFLAGS_D += -D_GZIP_ENABLE_API_=0 + ASMFLAGS_R+= -D_GZIP_ENABLE_API_=0 + ASMFLAGS_D+= -D_GZIP_ENABLE_API_=0 +endif + +#---------------------------------------------------------------------- +# 2nd checksum usage +#---------------------------------------------------------------------- +ifeq "$(PROCESS_2ND_CHECKSUM)" "ON" + CFLAGS_R += -D_PROCESS_2ND_CHECKSUM_=1 + CFLAGS_D += -D_PROCESS_2ND_CHECKSUM_=1 + ASMFLAGS_R+= -D_PROCESS_2ND_CHECKSUM_=1 + ASMFLAGS_D+= -D_PROCESS_2ND_CHECKSUM_=1 +else + CFLAGS_R += -D_PROCESS_2ND_CHECKSUM_=0 + CFLAGS_D += -D_PROCESS_2ND_CHECKSUM_=0 + ASMFLAGS_R+= -D_PROCESS_2ND_CHECKSUM_=0 + ASMFLAGS_D+= -D_PROCESS_2ND_CHECKSUM_=0 +endif + +#---------------------------------------------------------------------- +# Definition from environment +#---------------------------------------------------------------------- +ifeq "$(NMAKE_DEF)" "" +CFLAGS_R += -D_EMULATION_ON_CPU2_=0 -D_EMULATION_MULTI_CPU_=0 +CFLAGS_D += -D_EMULATION_ON_CPU2_=0 -D_EMULATION_MULTI_CPU_=0 +else +CFLAGS_R += $(NMAKE_DEF) +CFLAGS_D += $(NMAKE_DEF) +endif +ifeq "$(NMAKE_DEF_ASM)" "" +ASMFLAGS_R += -D_EMULATION_ON_CPU2_=0 -D_EMULATION_MULTI_CPU_=0 +ASMFLAGS_D += -D_EMULATION_ON_CPU2_=0 -D_EMULATION_MULTI_CPU_=0 +else +ASMFLAGS_R += $(NMAKE_DEF_ASM) +ASMFLAGS_D += $(NMAKE_DEF_ASM) +endif +#---------------------------------------------------------------------- +# Set image base directory according to kernel type +# eCos : /ARC +# uITRON : /ARC_eCos +#---------------------------------------------------------------------- +ifeq "$(USE_ECOS_KERNEL)" "ON" + ifeq "$(OUTPUT_FILE)" "LIB" + # This is for library, project's image base directory is $(PRJ_NAME)_Data + # IMG_BASE_DIR looks like ../../ARC/Common (There is backslash succeeding to /ARC) + IMG_BASE_DIR := $(subst /ARC/,/ARC_eCos/,$(IMG_BASE_DIR)) + endif + ifeq "$(OUTPUT_FILE)" "BIN" + # This is for project, library doesn't have this variable + # ARC_BASE_DIR looks like ../../ARC (There is No backslash succeeding to /ARC) + ARC_BASE_DIR := $(subst /ARC,/ARC_eCos,$(ARC_BASE_DIR)) + endif + KERNEL_STR := eCos +else + KERNEL_STR := uITRON +endif + +#---------------------------------------------------------------------- +# Set branched project name +#---------------------------------------------------------------------- +ifneq "$(_BRANCH_PROJECT_)" "" + CFLAGS_R += -D_PROJECT_CODE_=$(_BRANCH_PROJECT_) + CFLAGS_D += -D_PROJECT_CODE_=$(_BRANCH_PROJECT_) +endif + +#---------------------------------------------------------------------- +# Set the directory for debug/release objects and images here +#---------------------------------------------------------------------- +OBJ_DEBUG = $(PRJ_NAME)_Data/Debug/ObjectCode +OBJ_RELEASE = $(PRJ_NAME)_Data/Release/ObjectCode +IMG_DEBUG = $(IMG_BASE_DIR)/Debug +IMG_RELEASE = $(IMG_BASE_DIR)/Release + + +#---------------------------------------------------------------------- +# Filter the GCC Command Options for debug/release mode +#---------------------------------------------------------------------- +FILTER_GCC_D = $(foreach v, $(CFLAGS_D), $(if $(findstring -D, $(v)), , $(v))) +GCC_OPT_D = $(filter-out $(INC_DIR), $(FILTER_GCC_D)) +FILTER_GCC_R = $(foreach v, $(CFLAGS_R), $(if $(findstring -D, $(v)), , $(v))) +GCC_OPT_R = $(filter-out $(INC_DIR), $(FILTER_GCC_R)) + + +#---------------------------------------------------------------------- +# Set the make outputs +#---------------------------------------------------------------------- +SRC_OBJ_D := $(addprefix $(OBJ_DEBUG)/, $(notdir $(SRC:.c=.o))) +ASM_OBJ_D := $(addprefix $(OBJ_DEBUG)/, $(notdir $(ASM:.S=.o))) +CPP_OBJ_D := $(addprefix $(OBJ_DEBUG)/, $(notdir $(CPP_SRC:.cpp=.o))) +ALL_OBJ_D := $(ASM_OBJ_D) $(SRC_OBJ_D) $(CPP_OBJ_D) +DEPFILE_D := $(subst .o,.d,$(ALL_OBJ_D)) + +SRC_OBJ_R := $(addprefix $(OBJ_RELEASE)/, $(notdir $(SRC:.c=.o))) +ASM_OBJ_R := $(addprefix $(OBJ_RELEASE)/, $(notdir $(ASM:.S=.o))) +CPP_OBJ_R := $(addprefix $(OBJ_RELEASE)/, $(notdir $(CPP_SRC:.cpp=.o))) +ALL_OBJ_R := $(ASM_OBJ_R) $(SRC_OBJ_R) $(CPP_OBJ_R) +DEPFILE_R := $(subst .o,.d,$(ALL_OBJ_R)) + +ifeq "$(ISOLATE_DEP)" "ON" + ALL_DEP := $(DEPFILE_D) $(DEPFILE_R) +endif + +LINT_ROOTDIR = $(PRJ_NAME)_Lint +LINT_DIR = $(PRJ_NAME)_Lint/LintData +LINT_FILE := $(addprefix $(LINT_DIR)/, $(notdir $(SRC:.c=.lob))) + +#---------------------------------------------------------------------- +# For dependency +#---------------------------------------------------------------------- +GCCFLAGS += $(INC_DIR) -c -w + +#---------------------------------------------------------------------- +# For coding rule +#---------------------------------------------------------------------- +PCLINTFLAGS = $(PCLINT_PARAMETER) $(C_DEFINE_EXT) $(INC_DIR) -i$(MAKE_COMMON_DIR)/LintRule std.lnt options.lnt $$(lintopt_file) + +#---------------------------------------------------------------------- +# define host environment is linux if we build on linux server +#---------------------------------------------------------------------- +ifeq ($(OS),Linux) +CFLAGS_R += -D_HOST_ENV_LINUX_ +CFLAGS_D += -D_HOST_ENV_LINUX_ +GCCFLAGS += -D_HOST_ENV_LINUX_ +endif + +#---------------------------------------------------------------------- +# CPP FLAGS derived from CFLAGS_R / CFLAGS_D +#---------------------------------------------------------------------- +CPPFLAGS_R = $(filter-out -Wstrict-prototypes -Wimplicit-function-declaration -Wmissing-prototypes, $(CFLAGS_R)) +CPPFLAGS_D = $(filter-out -Wstrict-prototypes -Wimplicit-function-declaration -Wmissing-prototypes, $(CFLAGS_D)) + +#---------------------------------------------------------------------- +# Set the make targets +#---------------------------------------------------------------------- +build_all: rm_log build_D build_R + +make_debug_begin: + @-echo \ + && echo Checking $(KERNEL_STR) - $(basename $(notdir $(IMAGE_D))) debug target ... \ + && mkdir -p $(IMG_DEBUG) $(OBJ_DEBUG) + +make_release_begin: + @-echo \ + && echo Checking $(KERNEL_STR) - $(basename $(notdir $(IMAGE_R))) release target ... \ + && mkdir -p $(IMG_RELEASE) $(OBJ_RELEASE) + +make_dep_begin: + @-echo Checking $(basename $(notdir $(IMAGE_R))) dependency ... \ + && mkdir -p $(OBJ_DEBUG) $(OBJ_RELEASE) + +make_lint_begin: + @-echo Checking \"$(basename $(notdir $(IMAGE_R)))\" with coding rules ... \ + && mkdir -p $(LINT_DIR) + +make_option_begin: + @-echo [GCC Command Options - Release] + @-echo $(GCC_OPT_R) + @-echo + @-echo [GCC Command Options - Debug ] + @-echo $(GCC_OPT_D) + +#---------------------------------------------------------------------- +# Compile rule functions +#---------------------------------------------------------------------- +BUILD_DATE = 20`date +'%y%m%d'` +ifeq "$(ISOLATE_DEP)" "ON" + + # $(call compile_rule,object,source,cflags) + define compile_rule + $1: $2 + @echo Compiling $(notdir $2)\ + && $(CC) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + + # $(call compile_rule_asm,object,source,asmflags) + define compile_rule_asm + $1: $2 + @echo Compiling $(notdir $2) \ + && $(CC) $(PLATFORM_AFLAGS) -c $3 -o $1 $2 $$(LOG_OPTION) + + endef + + # $(call compile_rule_cpp,object,source,cflags) + define compile_rule_cpp + $1: $2 + @echo Compiling $(notdir $2) \ + && $(CXX) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + +else + + # $(call compile_rule,object,source,cflags) + define compile_rule + $1: $2 + @-$(GCC) -MM -MF $(basename $1).d -MP -MT $1 $(GCCFLAGS) $2 \ + && echo Compiling $(notdir $2) + @$(CC) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + + # $(call compile_rule_asm,object,source,asmflags) + define compile_rule_asm + $1: $2 + @-$(GCC) -MM -MF $(basename $1).d -MP -MT $1 $(GCCFLAGS) $2 \ + && echo Compiling $(notdir $2) + @$(CC) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + + # $(call compile_cpp,object,source,cflags) + define compile_rule_cpp + $1: $2 + @-$(CXX) -MM -MF $(basename $1).d -MP -MT $1 $(GCCFLAGS) $2 \ + && echo Compiling $(notdir $2) + @$(CXX) -D__section_name__=$(PRJ_NAME) -D__module_name__=$(PRJ_NAME)_LIBRARY_VERSION_INFO -D__SHORT_FILE__=$(basename $(notdir $2)) -D_BUILD_DATE_=$(BUILD_DATE) $3 -o $1 $2 $$(LOG_OPTION) + + endef + +endif + +# $(call get_obj,obj_dir,source) +get_obj = $(addprefix $1/, $(subst .c,.o,$(notdir $2))) + +# $(call get_obj_asm,obj_dir,source) +get_obj_asm = $(addprefix $1/, $(subst .S,.o,$(notdir $2))) + +# $(call get_obj,obj_dir,source) +get_obj_cpp = $(addprefix $1/, $(subst .cpp,.o,$(notdir $2))) + +# $(call compile_all,obj_dir,cflags) +define compile_all +$(foreach i, $(SRC), \ + $(call compile_rule,$(call get_obj,$1,$i),$i,$2)) +endef + +# $(call compile_all_asm,obj_dir,asmflags) +define compile_all_asm +$(foreach i, $(ASM), \ + $(call compile_rule_asm,$(call get_obj_asm,$1,$i),$i,$2)) +endef + +# $(call compile_all_cpp,obj_dir,cflags) +define compile_all_cpp +$(foreach i, $(CPP_SRC), \ + $(call compile_rule_cpp,$(call get_obj_cpp,$1,$i),$i,$2)) +endef + +#----------------------------------------------------------------- +# Dependency rule functions +#----------------------------------------------------------------- +# $(call depend_rule,depend,source) +define depend_rule +$1: $2 + @echo Depending $(notdir $2) \ + && $(GCC) -MM -MF $1 -MP -MT $(basename $1).o $(GCCFLAGS) $2 \ + && sed -e 's/_Data\/Debug\//_Data\/Release\//1' $1 > $(subst _Data/Debug/,_Data/Release/,$1) + +endef + +define depend_rule_asm +$1: $2 + @echo Depending $(notdir $2) \ + && $(GCC) -MM -MF $(basename $1).d -MP -MT $1 $(GCCFLAGS) $2 \ + && sed -e 's/_Data\/Debug\//_Data\/Release\//1' $1 > $(subst _Data/Debug/,_Data/Release/,$1) \ + && rm -f $(basename $1).o + +endef + +define depend_rule_cpp +$1: $2 + @echo Depending $(notdir $2) \ + && $(CXX) -MM -MF $1 -MP -MT $(basename $1).o $(GCCFLAGS) $2\ + && sed -e 's/_Data\/Debug\//_Data\/Release\//1' $1 > $(subst _Data/Debug/,_Data/Release/,$1) + +endef + +# $(call get_dep,dep_dir,source) +get_dep = $(addprefix $1/, $(subst .c,.d,$(notdir $2))) + +# $(call get_dep_asm,dep_dir,source) +get_dep_asm = $(addprefix $1/, $(subst .S,.d,$(notdir $2))) + +# $(call get_dep_cpp,dep_dir,source) +get_dep_cpp = $(addprefix $1/, $(subst .cpp,.d,$(notdir $2))) + +define depend_all +$(foreach i, $(SRC), \ + $(call depend_rule,$(call get_dep,$1,$i),$i)) +endef + +# $(call dep_all_asm,dep_dir) +define depend_all_asm +$(foreach i, $(ASM), \ + $(call depend_rule_asm,$(call get_dep_asm,$1,$i),$i)) +endef + +define depend_all_cpp +$(foreach i, $(CPP_SRC), \ + $(call depend_rule_cpp,$(call get_dep_cpp,$1,$i),$i)) +endef + +#---------------------------------------------------------------------- +# LINT rule functions +#---------------------------------------------------------------------- +# $(call get_lint,lint_dir,source) +get_lint = $(addprefix $1/, $(subst .c,.lob,$(notdir $2))) + +# $(call lint_rule,output,source) +define lint_rule +$1: $2 + @-echo Review $(notdir $2) \ + && $(LT) $(PCLINTFLAGS) -u -zero -oo[$1] $2 >> $$(lint_file) + +endef + +# && $(LT) $(PCLINTFLAGS) $2 >> $$(lint_file) + +define lint_all +$1: +$(foreach i, $(SRC), \ + $(call lint_rule,$(call get_lint,$1,$i),$i)) + @-echo Review \(Internal Relation\) \ + && $(LT) $(PCLINTFLAGS) $(LINT_DIR)/"*.lob" >> $$(lint_file) + -rm -rf --no-preserve-root $(LINT_ROOTDIR) + +endef + +#---------------------------------------------------------------------- +# Goals +#---------------------------------------------------------------------- +ifeq "$(ISOLATE_DEP)" "ON" + + ifeq "$(MAKECMDGOALS)" "dep" + $(eval $(call depend_all,$(OBJ_RELEASE))) + $(eval $(call depend_all_asm,$(OBJ_RELEASE))) + $(eval $(call depend_all_cpp,$(OBJ_RELEASE))) + $(eval $(call depend_all,$(OBJ_DEBUG))) + $(eval $(call depend_all_asm,$(OBJ_DEBUG))) + $(eval $(call depend_all_cpp,$(OBJ_DEBUG))) + endif + + ifeq "$(MAKECMDGOALS)" "" + .DEFAULT_GOAL := all + endif + +else + + ifeq "$(MAKECMDGOALS)" "" + -include $(DEPFILE_D) + -include $(DEPFILE_R) + $(eval $(call compile_all,$(OBJ_DEBUG),$(CFLAGS_D))) + $(eval $(call compile_all,$(OBJ_RELEASE),$(CFLAGS_R))) + $(eval $(call compile_all_asm,$(OBJ_DEBUG),$(ASMFLAGS_D))) + $(eval $(call compile_all_asm,$(OBJ_RELEASE),$(ASMFLAGS_R))) + $(eval $(call compile_all_cpp,$(OBJ_DEBUG),$(CPPFLAGS_D))) + $(eval $(call compile_all_cpp,$(OBJ_RELEASE),$(CPPFLAGS_R))) + endif + + ifeq "$(MAKECMDGOALS)" "rebuild" + -include $(DEPFILE_D) + -include $(DEPFILE_R) + $(eval $(call compile_all,$(OBJ_DEBUG),$(CFLAGS_D))) + $(eval $(call compile_all,$(OBJ_RELEASE),$(CFLAGS_R))) + $(eval $(call compile_all_asm,$(OBJ_DEBUG),$(ASMFLAGS_D))) + $(eval $(call compile_all_asm,$(OBJ_RELEASE),$(ASMFLAGS_R))) + $(eval $(call compile_all_cpp,$(OBJ_DEBUG),$(CPPFLAGS_D))) + $(eval $(call compile_all_cpp,$(OBJ_RELEASE),$(CPPFLAGS_R))) + endif + +endif + +ifeq ($(MAKECMDGOALS), $(filter $(MAKECMDGOALS),debug build_pipe_D)) + -include $(DEPFILE_D) + $(eval $(call compile_all,$(OBJ_DEBUG),$(CFLAGS_D))) + $(eval $(call compile_all_asm,$(OBJ_DEBUG),$(ASMFLAGS_D))) + $(eval $(call compile_all_cpp,$(OBJ_DEBUG),$(CPPFLAGS_D))) +endif + +ifeq ($(MAKECMDGOALS), $(filter $(MAKECMDGOALS),release build_pipe_R)) + -include $(DEPFILE_R) + $(eval $(call compile_all,$(OBJ_RELEASE),$(CFLAGS_R))) + $(eval $(call compile_all_asm,$(OBJ_RELEASE),$(ASMFLAGS_R))) + $(eval $(call compile_all_cpp,$(OBJ_RELEASE),$(CPPFLAGS_R))) +endif + +ifeq "$(MAKECMDGOALS)" "lint" + $(eval $(call lint_all,$(LINT_DIR))) +endif diff --git a/board/novatek/ns02501/loader/MakeCommon/MakeOption.txt b/board/novatek/ns02501/loader/MakeCommon/MakeOption.txt new file mode 100755 index 000000000000..03d273ff0cb7 --- /dev/null +++ b/board/novatek/ns02501/loader/MakeCommon/MakeOption.txt @@ -0,0 +1,307 @@ +ifeq "$(OPTION_LOADED)" "" + +#---------------------------------------------------------------------- +# Set option file loaded +#---------------------------------------------------------------------- +export OPTION_LOADED := TRUE + +#---------------------------------------------------------------------- +# Set the target CPU architecture +# +# ARM : ARM CPU +# MIPS : MIPS CPU (24KEc) +#---------------------------------------------------------------------- +export ARCH := ARM +#export ARCH := MIPS + +#---------------------------------------------------------------------- +# Set the toolchain +# +# ARM : ARM ADS, RealView +# GNU : GNU C, ASM and linker +#---------------------------------------------------------------------- +#export TOOLCHAIN := ARM +export TOOLCHAIN := GNU + +#---------------------------------------------------------------------- +# Set the floating point +# +# SW/HW : soft or hard float point unit +#---------------------------------------------------------------------- +#export FPU := hard +export FPU := soft + +#---------------------------------------------------------------------- +# Set the CPU type +# +# cortex-a9 or a53 +#---------------------------------------------------------------------- +export CPU := cortex-a7 +#export CPU := cortex-a53 + + +#---------------------------------------------------------------------- +# Set branched project code +# +# The project code must be 4 characters, please refer to +# http://mynvt.novatek.com.tw/deptsites/IM/Shared%20Documents/VersionControl.doc +# for more detailed information. +# Leaves this variable empty if not branched yet. +#---------------------------------------------------------------------- +export _BRANCH_PROJECT_ := + +#---------------------------------------------------------------------- +# PClint parameters +#---------------------------------------------------------------------- +export PCLINT_PARAMETER := -b -v + +#---------------------------------------------------------------------- +# Set log file option +# +# ON : Save warning/error message to log files (Win32 Default) +# OFF : Just output warning/error message to stdout (Linux Default) +#---------------------------------------------------------------------- +ifeq "$(shell uname)" "Linux" +export LOG_ERR := OFF +else +export LOG_ERR := ON +endif + +#---------------------------------------------------------------------- +# Set clean log file option +# +# ON : Clean log files before make +# OFF : Don't clean log files before make +# (You should execute "make clean" to clean the log files) +#---------------------------------------------------------------------- +export CLEAN_LOG := ON +#export CLEAN_LOG := OFF + +#---------------------------------------------------------------------- +# Keep going when encounter error or not +# +# ON : Make will keep going when encounter error +# OFF : Make will stop when encounter error +#---------------------------------------------------------------------- +#export KEEP_GOING := ON +export KEEP_GOING := OFF + +#---------------------------------------------------------------------- +# Isolate creating dependency files process +# +# ON : You have to run "make dep" to create dependency files +# OFF : dependency file will be created when making the file +#---------------------------------------------------------------------- +export ISOLATE_DEP := ON +#export ISOLATE_DEP := OFF + +#---------------------------------------------------------------------- +# Generate debug symbol in release target +# Release target won't generate debug symbol by default, if you want to +# generate debug symbol in release target, please turn on this option +# +# ON : Generate debug symbol in release target +# OFF : Don't generate debug symbol in release target (default value) +#---------------------------------------------------------------------- +#export RELEASE_SYMBOL := ON +export RELEASE_SYMBOL := OFF + +#---------------------------------------------------------------------- +# Generate debug callback of entry and exit to functions +# Only support on MIPS (This is GCC Extension) +# Reference: http://blog.linux.org.tw/~jserv/archives/001870.html +# +# ON : Generate debug callback +# OFF : Don't generate debug callback (default value) +#---------------------------------------------------------------------- +#export INSTRUMENT_FUNCTION := ON +export INSTRUMENT_FUNCTION := OFF + +#---------------------------------------------------------------------- +# Generate one ELF section for each function +# Compiler will generate one ELF section for one .c file by default. +# If the .c file contains lots of function that are unused, turn on +# this function can reduce code size. +# (Linker will remove unused section by default) +# Valid only in release target +# +# ON : One ELF section for each function +# OFF : One ELF section for each .c file (default value of ADS/GNU C compiler) +#---------------------------------------------------------------------- +export SECTION_BY_FUNC := ON +#export SECTION_BY_FUNC := OFF + +#---------------------------------------------------------------------- +# Copy bin file to storage after bin file is created +# You have to set an environment variable named "NVT_STG_PATH" (without +# quote) to work with this function. +# Example: set "NVT_STG_PATH" to "H:/" (without quote). +# +# ON : Copy bin file to storage after bin file is created +# OFF : Don't copy bin file to storage after bin file is created +#---------------------------------------------------------------------- +export COPY_BIN_2_STG := ON +#export COPY_BIN_2_STG := OFF + +#---------------------------------------------------------------------- +# Select emulation or design-in (Release code) environment +# +# ON : Emulation environment +# OFF : Design-in environment +#---------------------------------------------------------------------- +#export EMULATION := ON +export EMULATION := OFF + +#---------------------------------------------------------------------- +# Select FPGA or Realchip platform for emulation. +# Valid only when EMULATION is ON +# +# ON : FPGA platform +# OFF : Realchip platform +#---------------------------------------------------------------------- +#export FPGA_EMULATION := ON +export FPGA_EMULATION := OFF + +#---------------------------------------------------------------------- +# Set PLL OSC frequency for FPGA EMULATION +# Valid only when FPGA_EMULATION is ON +# +# For example, you should set it to 27000000 if your FPGA is connected +# with a 27 MHz OSC. +#---------------------------------------------------------------------- +export FPGA_PLL_OSC := 24000000 + +#---------------------------------------------------------------------- +# Set INCLUDE RULE +# +# ON : Enable include rule checking of platform +# OFF : Disable include rule checking of platform +#---------------------------------------------------------------------- +export INCLUDE_RULE := ON +#export INCLUDE_RULE := OFF + +#---------------------------------------------------------------------- +# Use eCos kernel or uITRON kernel +# +# ON : Use eCos kernel and light weight uITRON kernel compatible wrapper +# OFF : Use light weight uITRON kernel +#---------------------------------------------------------------------- +#export USE_ECOS_KERNEL := ON +export USE_ECOS_KERNEL := OFF + +#---------------------------------------------------------------------- +# PM demo based on customized building way +# +# ON : compile rule depends on _PM_DEMO_ that is informal way. +# OFF : formal way to build code +#---------------------------------------------------------------------- +#export PM_DEMO := ON +export PM_DEMO := OFF + +#---------------------------------------------------------------------- +# Set the dump encrypt binary tool +# +# ARCH := ARM 'Use ARMv4 as target +# ARCH := MIPS 'Use MIPS24Ke as target +#---------------------------------------------------------------------- +export ENCRYPT_DUMP := ON +#export ENCRYPT_DUMP := OFF + +#---------------------------------------------------------------------- +# Use ARM GIC as interrupt controller +# +# ON : Use GIC +# OFF : Use Lagacy interrupt as interrupt controller +#---------------------------------------------------------------------- +export ARM_GIC_400 := ON +#export ARM_GIC_400 := OFF + +#---------------------------------------------------------------------- +# Use ROM public API +# +# ON : Use ROM LZMA etc public API +# OFF : Not use ROM LZMA etc public API +#---------------------------------------------------------------------- +export ROM_PUBLIC_API := OFF +#export ROM_PUBLIC_API := ON + +#---------------------------------------------------------------------- +# Enable 2nd checksum check +# +# ON : After lz uncompress, processing checksum first before jump to +# OFF : Not use checksum. +#---------------------------------------------------------------------- +export PROCESS_2ND_CHECKSUM := ON +#export PROCESS_2ND_CHECKSUM := OFF + +#---------------------------------------------------------------------- +# Use GZIP HW zip +# +# ON : Use HW gzip API +# OFF : Use lz or lzma API +#---------------------------------------------------------------------- +#export GZIP_ENGINE_API := OFF +export GZIP_ENGINE_API := ON + +#---------------------------------------------------------------------- +# Set the parameters of GNU toolchain +#---------------------------------------------------------------------- +ifeq "$(TOOLCHAIN)" "GNU" +ifeq "$(shell uname)" "Linux" + LOADER_CROSS_COMPILE ?= /opt/ivot/gcc-linaro-6.4.1-2018.05-x86_64_arm-eabi/bin/arm-eabi- + CROSS_COMPILE := $(LOADER_CROSS_COMPILE) + TOOLS_DIR = ../../Tools/Bin + TOOLS_SUFFIX = +else + CROSS_COMPILE := arm-eabi- + TOOLS_DIR = ../../Tools/Bin + TOOLS_SUFFIX = .exe +endif + export CC = $(CROSS_COMPILE)gcc + export AS = $(CROSS_COMPILE)as + export LD = $(CROSS_COMPILE)ld + export AR = $(CROSS_COMPILE)ar + export OBJDUMP = $(CROSS_COMPILE)objdump + export FE = $(CROSS_COMPILE)objcopy + export NM = $(CROSS_COMPILE)nm + export LT = "C:/lint/lint-nt.exe" + export GCC = $(CROSS_COMPILE)gcc + export CXX = $(CROSS_COMPILE)g++ + export EBIN = $(TOOLS_DIR)/encrypt_bin$(TOOLS_SUFFIX) + export BFC = $(TOOLS_DIR)/bfc$(TOOLS_SUFFIX) + export LDNVT = $(TOOLS_DIR)/nvt-ld-op$(TOOLS_SUFFIX) + export EBIN = $(TOOLS_DIR)/encrypt_boot_dump$(TOOLS_SUFFIX) + export CFGRAM = $(TOOLS_DIR)/Configram533$(TOOLS_SUFFIX) + export ARMINC_DIR := +endif + + +#---------------------------------------------------------------------- +# Set make flags +# +# Note: Don't modify this if you didn't add new option +#---------------------------------------------------------------------- +# Slient mode +MAKEFLAGS := s + +# Keep going or not +ifeq "$(KEEP_GOING)" "ON" + MAKEFLAGS := $(MAKEFLAGS)k +endif + +#---------------------------------------------------------------------- +# OS Type and Number of CPUs +#---------------------------------------------------------------------- +NPROCS=1 +export OS:=$(shell uname -s) + +ifeq ($(OS),Linux) + NPROCS:=$(shell grep -c ^processor /proc/cpuinfo) +endif +ifeq ($(findstring CYGWIN_NT,$(OS)),CYGWIN_NT) + NPROCS:=$(NUMBER_OF_PROCESSORS) +endif + +export JOB_FLAGS:= -j$(NPROCS) + +endif diff --git a/board/novatek/ns02501/loader/MakeCommon/Makefile b/board/novatek/ns02501/loader/MakeCommon/Makefile new file mode 100755 index 000000000000..58e56d19f7ff --- /dev/null +++ b/board/novatek/ns02501/loader/MakeCommon/Makefile @@ -0,0 +1,126 @@ +include MakeOption.txt + +module_Common := $(dir $(wildcard ../Common/Makefile)) +module_Drv := $(dir $(wildcard ../Drv/Makefile)) +module_DrvExt := $(dir $(wildcard ../DrvExt/Makefile)) +module_Lib := $(dir $(wildcard ../Lib/Makefile)) +module_LibExt := $(dir $(wildcard ../LibExt/Makefile)) +module_App := $(dir $(wildcard ../App/Makefile)) +module_AppExt := $(dir $(wildcard ../AppExt/Makefile)) +module_Alg := $(dir $(wildcard ../Alg/Makefile)) + +-include ../Project/ProjectConfig.txt + +ifneq "$(ACTIVE_PROJECT)" "" +module_Prj := ../Project/$(ACTIVE_PROJECT)/ +else +# Find the first folder in ../Project/ that contains "Makefile" +ifeq "$(shell uname)" "Linux" +module_Prj := $(dir $(firstword $(sort $(shell find ../Project -name 'Makefile')))) +else +module_Prj := $(dir $(firstword $(sort $(shell find ../Project -name \'Makefile\')))) +endif +endif +test_if_unix_file_fmt = $(shell cd $(1); ret=`if [ "$(OS)" == "Linux" ]; then tools/recursive_dir -t . --exclude-ext .o .a .bin .axf .7z --exclude-dir .svn .git; else tools/recursive_dir.exe -t . --exclude-ext .o .a .bin .axf .7z --exclude-dir .svn .git; fi`; echo "$$ret";) + +module_all := \ + $(module_Common) \ + $(module_Drv) \ + $(module_DrvExt) \ + $(module_Lib) \ + $(module_LibExt) \ + $(module_App) \ + $(module_AppExt) \ + $(module_Alg) + +ifeq "$(LOG_ERR)" "ON" +define copy_log + @-cp \ + $(module_Common)log*.txt \ + $(module_Drv)log*.txt \ + $(module_DrvExt)log*.txt \ + $(module_Lib)log*.txt \ + $(module_LibExt)log*.txt \ + $(module_App)log*.txt \ + $(module_AppExt)log*.txt \ + $(module_Alg)log*.txt \ + $(module_Prj)log*.txt \ + . +endef +else +define copy_log +endef +endif + +ifeq "$(ISOLATE_DEP)" "ON" +.PHONY: all rm_log $(module_all) $(module_Prj) clean rebuild debug release dep + +all: rm_log + @make dep + @make debug + @make release + $(call copy_log) +else +.PHONY: all rm_log $(module_all) $(module_Prj) clean rebuild debug release + +all: rm_log $(module_all) $(module_Prj) + $(call copy_log) +endif + +$(module_all): +ifeq ($(OS),Linux) + @$(MAKE) --directory=$@ $(MAKECMDGOALS) +else + @$(MAKE) --directory=$@ $(MAKECMDGOALS) $(JOB_FLAGS) +endif + +$(module_Prj):$(module_all) + @$(MAKE) --directory=$@ $(MAKECMDGOALS) + +rm_log: + @-rm -f log*.txt + +clean: rm_log $(module_all) $(module_Prj) + +ifeq "$(ISOLATE_DEP)" "ON" +rebuild: + @make clean + @make dep + @make debug + @make release + $(call copy_log) + +dep: $(module_all) $(module_Prj) +else +rebuild: rm_log $(module_all) $(module_Prj) + $(call copy_log) +endif + +debug: rm_log $(module_Prj) + $(call copy_log) + +release: rm_log $(module_Prj) + $(call copy_log) + +rm_chk_log: + @-rm -f chk*.txt + +chk: rm_chk_log $(module_all) $(module_Prj) + +chkclean: $(module_all) $(module_Prj) + +rm_lint_log: + @-rm -f lint*.txt + +lint: rm_lint_log $(module_all) $(module_Prj) + +lintclean: $(module_all) $(module_Prj) + +chk_unix: + @result="$(call test_if_unix_file_fmt, ../)"; if [ ! -z "$$result" ]; then \ + echo -e "\e[1;31mUNIX file format check failed:\e[0m" >&2; \ + for n in $$result; do \ + echo -e "\t$$n" >&2; \ + done; \ + exit 1; \ + fi \ No newline at end of file diff --git a/board/novatek/ns02501/loader/MakeCommon/OutputImg.txt b/board/novatek/ns02501/loader/MakeCommon/OutputImg.txt new file mode 100755 index 000000000000..955c6bc01156 --- /dev/null +++ b/board/novatek/ns02501/loader/MakeCommon/OutputImg.txt @@ -0,0 +1,598 @@ +#---------------------------------------------------------------------- +# Local variable to determine create library or binary file +#---------------------------------------------------------------------- +OUTPUT_FILE = BIN + +#---------------------------------------------------------------------- +# include make common and make option files +#---------------------------------------------------------------------- +include $(MAKE_COMMON_DIR)/MakeOption.txt +include $(MAKE_COMMON_DIR)/MakeCommon.txt + +#---------------------------------------------------------------------- +# CHIPCFG parameters +#---------------------------------------------------------------------- +ifeq "$(CHIPCFG)" "" + CHIPCFG := CHIPCFG +endif + +#---------------------------------------------------------------------- +# get force link ThirdParty symbols for both debug and release +#---------------------------------------------------------------------- +ifeq "$(USE_ECOS_KERNEL)" "ON" +rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d)) +LIB_ECOS_RTK_WIFI_DIR = $(ROOT_DIR)/ThirdParty/devs_eCos-rtl +LIB_ECOS_SELECT_RTK_WIFI_DIR = $(ROOT_DIR)/ThirdParty/devs_eCos-rtl$(WIFIMDL)es +LIB_ECOS_BASE_DIR = $(ROOT_DIR)/ThirdParty +LIB_ECOS_TMP = $(call rwildcard,$(LIB_ECOS_BASE_DIR)/,*.a) +LIB_ECOS_WO_RTK_WIFI_LIB = $(filter-out $(LIB_ECOS_RTK_WIFI_DIR)%, $(LIB_ECOS_TMP)) +LIB_ECOS_RTK_WIFI_LIB = $(call rwildcard,$(LIB_ECOS_SELECT_RTK_WIFI_DIR)/,*.a) +LIB_ECOS = $(LIB_ECOS_WO_RTK_WIFI_LIB) $(LIB_ECOS_RTK_WIFI_LIB) +#There are two eCos .o not in archive +ALL_OBJ_R += $(wildcard $(LIB_ECOS_BASE_DIR)/eCos/lib/*.o) +ALL_OBJ_D += $(wildcard $(LIB_ECOS_BASE_DIR)/eCos/lib/*.o) +endif + +#---------------------------------------------------------------------- +# get force link IPL symbols for both debug and release +#---------------------------------------------------------------------- +SYMBOL_IPL := IPL_SetDZoomFCB IPL_SetSleepFCB IPL_SetWakeupFCB IPL_GetCapRawFCB IPL_SetPauseDMAFCB IPL_SetResumeDMAFCB IPL_SetImgInOutFCB IPL_SetVAFCB IPL_GetIMEHalIdxFCB IPL_GetIPLInfoFCB IPL_TrigFCB IPL_SetTrigInfoFCB IPL_Stream2PauseFCB IPL_Pause2StreamFCB DCE_D2D_CB IPE_D2D_CB IFE_D2D_CB IFE2_D2D_CB IME_D2D_CB DRE_D2D_CB RHEIME_D2D_IFECB RHEIME_D2D_DCECB RHEIME_D2D_IPECB RHEIME_D2D_IMECB RHEIME_D2D_RHECB IPL_GetCtrlFlowFCB IQUC_InitCtrlItem + +#---------------------------------------------------------------------- +# include the libraries +#---------------------------------------------------------------------- +# +# get Debug LIBs +# +LIB_ALG_DIR_D = $(ARC_BASE_DIR)/../Alg/ARC/Debug +LIB_APP_DIR_D = $(ARC_BASE_DIR)/App/Debug +LIB_COM_DIR_D = $(ARC_BASE_DIR)/Common/Debug +LIB_DRV_DIR_D = $(ARC_BASE_DIR)/Drv/Debug +LIB_LIB_DIR_D = $(ARC_BASE_DIR)/Lib/Debug + +# get Alg libraries +LIB_ALG_D := $(wildcard $(LIB_ALG_DIR_D)/*.a) + +# get App/AppExt libraries +LIB_APP_D := $(wildcard $(LIB_APP_DIR_D)/*.a) + +# get Common libraries +LIB_COM_D := $(wildcard $(LIB_COM_DIR_D)/*.a) + +# get Drv/DrvExt libraries +LIB_DRV_ALL_D := $(wildcard $(LIB_DRV_DIR_D)/*.a) + +# get LIBs in App (except capture library), AppExt +# and LIB module (except driver and slide-effect libraries) +LIB_LIB_DIR_D = $(ARC_BASE_DIR)/Lib/Debug +LIB_STRGEXT_ALL_D := $(wildcard $(LIB_LIB_DIR_D)/STRGEXT_*.a) +LIB_STRGEXT_D := $(wildcard $(LIB_LIB_DIR_D)/STRGEXT_$(STORAGEEXT)_D.a) +LIB_STRGINT_ALL_D := $(wildcard $(LIB_LIB_DIR_D)/STRGINT_*.a) +LIB_STRGINT_D := $(wildcard $(LIB_LIB_DIR_D)/STRGINT_$(STORAGEINT)_D.a) +LIB_REMAP_ALL_D := $(wildcard $(LIB_LIB_DIR_D)/Remap_*.a) +LIB_REMAP_D := $(wildcard $(LIB_LIB_DIR_D)/Remap_$(RESETFLAG)_D.a) +LIB_RESET_ALL_D := $(wildcard $(LIB_LIB_DIR_D)/Reset_*.a) +ifeq "$(ENLARGE_LD)" "ENABLE" +LIB_RESET_D := $(wildcard $(LIB_LIB_DIR_D)/Reset_$(RESETCHIP)_64K_D.a) +else +LIB_RESET_D := $(wildcard $(LIB_LIB_DIR_D)/Reset_$(RESETCHIP)_D.a) +endif +LIB_COMMON_ALL_D := $(wildcard $(LIB_LIB_DIR_D)/Common_*.a) +LIB_COMMON_D := $(wildcard $(LIB_LIB_DIR_D)/Common_$(COMMON_LIB)_D.a) +# get LIBs in App (except capture library), AppExt +# and LIB module (except driver and slide-effect libraries) +LIB_LIB_ALL_D := $(filter-out $(LIB_PARSER_ALL_D) $(LIB_SLIDE_ALL_D), $(wildcard $(LIB_LIB_DIR_D)/*.a)) + +LIB_LIB_D := $(filter-out $(LIB_STRGEXT_ALL_D) $(LIB_STRGINT_ALL_D) $(LIB_REMAP_ALL_D) $(LIB_RESET_ALL_D) $(LIB_COMMON_ALL_D), $(LIB_LIB_ALL_D)) +ifeq ($(SIM_WRLDR), ENABLE) + REMAP_SUFFIX = _SIMWRLDR + RESET_SUFFIX = _SIMWRLDR +else + ifeq ($(FASTBOOT), ENABLE) + ifeq ($(SECUREBOOT), Secure) + ifeq ($(SPI_SETTING), SPI_4BITS) + RESET_SUFFIX = _FASTBOOT_SECURE_QUAD + else + RESET_SUFFIX = _FASTBOOT_SECURE + endif + else + ifeq ($(SPI_SETTING), SPI_4BITS) + RESET_SUFFIX = _FASTBOOT_QUAD + else + RESET_SUFFIX = _FASTBOOT + endif + endif + + ifeq ($(SPI_SETTING), SPI_4BITS) + RESET_SUFFIX = _FASTBOOT_QUAD + else + REMAP_SUFFIX = _FASTBOOT + endif + ifeq ($(STORAGEINT), EMMC) + SCATTER_SUFFIX = _FASTBOOT_EMMC + else + SCATTER_SUFFIX = _FASTBOOT + endif + endif +endif +# +# get Release LIBs +# +LIB_LIB_DIR_R = $(ARC_BASE_DIR)/Lib/Release +LIB_STRGEXT_ALL_R := $(wildcard $(LIB_LIB_DIR_R)/STRGEXT_*.a) +LIB_STRGEXT_R := $(wildcard $(LIB_LIB_DIR_R)/STRGEXT_$(STORAGEEXT)$(STRGEXT_SUFFIX).a) +LIB_STRGINT_ALL_R := $(wildcard $(LIB_LIB_DIR_R)/STRGINT_*.a) +LIB_STRGINT_R := $(wildcard $(LIB_LIB_DIR_R)/STRGINT_$(STORAGEINT).a) +LIB_REMAP_ALL_R := $(wildcard $(LIB_LIB_DIR_R)/Remap_*.a) +LIB_REMAP_R := $(wildcard $(LIB_LIB_DIR_R)/Remap_$(RESETFLAG)$(REMAP_SUFFIX).a) +LIB_RESET_ALL_R := $(wildcard $(LIB_LIB_DIR_R)/Reset_*.a) +ifeq "$(ENLARGE_LD)" "ENABLE" +LIB_RESET_R := $(wildcard $(LIB_LIB_DIR_R)/Reset_$(RESETCHIP)$(RESET_SUFFIX)_64K.a) +else +LIB_RESET_R := $(wildcard $(LIB_LIB_DIR_R)/Reset_$(RESETCHIP)$(RESET_SUFFIX).a) +endif +LIB_COMMON_ALL_R := $(wildcard $(LIB_LIB_DIR_R)/Common_*.a) +LIB_COMMON_R := $(wildcard $(LIB_LIB_DIR_R)/Common_$(COMMON_LIB)$(COMMON_SUFFIX).a) +# get LIBs in App (except capture library), AppExt +# and LIB module (except driver and slide-effect libraries) +LIB_LIB_ALL_R := $(filter-out $(LIB_PARSER_ALL_R) $(LIB_SLIDE_ALL_R), $(wildcard $(LIB_LIB_DIR_R)/*.a)) + +#LIB_LIB_R := $(filter-out $(LIB_STRGEXT_ALL_R) $(LIB_STRGINT_ALL_R) $(LIB_REMAP_ALL_R), $(LIB_LIB_ALL_R)) +LIB_LIB_R := $(filter-out $(LIB_STRGEXT_ALL_R) $(LIB_REMAP_ALL_R) $(LIB_RESET_ALL_R) $(LIB_COMMON_ALL_R), $(LIB_LIB_ALL_R)) + + +# get total libraries for Debug & Release mode; note we cannot get string of LIB_R from LIB_D, or vice versa, +# because we may build Debug and Release output separately, the library of one mode maybe not exist, and cause +# the link problem. So, while adding/deleting libraries, please be patient to do it for Debug and Release mode both. + +LIB_R := \ + $(LIB_LIB_R) \ + $(LIB_STRGEXT_R) \ + $(LIB_STRGINT_R) \ + $(LIB_REMAP_R) \ + $(LIB_RESET_R) \ + $(LIB_COMMON_R) + +LIB_D := \ + $(LIB_LIB_D) \ + $(LIB_STRGEXT_D) \ + $(LIB_STRGINT_D) \ + $(LIB_REMAP_D) \ + $(LIB_RESET_D) \ + $(LIB_COMMON_D) + +# If some libraries only available in Release mode, add these libraries in Debug mode too. +LIB_D += $(filter-out $(subst Debug/,Release/,$(LIB_D:_D.a=.a)),$(LIB_R)) + +# Append eCos library to both Debug and Release mode +# (We don't have debug mode's eCos library) +LIB_R += $(LIB_ECOS) +LIB_D += $(LIB_ECOS) + +#---------------------------------------------------------------------- +# set the make outputs +#---------------------------------------------------------------------- +# for debug target +IMAGE_D = $(IMG_DEBUG)/$(PRJ_NAME)_D.axf +BIN_D = $(IMG_DEBUG)/$(LDR_NAME).bin +MAP_D = $(IMG_DEBUG)/$(PRJ_NAME)_D.txt +MAP2_D = $(IMG_DEBUG)/$(PRJ_NAME)_ldmap_D.txt +SYM_D = $(IMG_DEBUG)/$(PRJ_NAME)_D.sym +DASM_D = $(IMG_DEBUG)/$(PRJ_NAME)_dasm_D.txt +ifeq "$(MODELEXT_BUILT_IN)" "MODELEXT_BUILT_IN_OFF" +MODELEXT_D = $(IMG_DEBUG)/$(BIN_NAME).ext.bin +endif + + +# for release target +IMAGE_R = $(IMG_RELEASE)/$(PRJ_NAME).axf +BIN_R = $(IMG_RELEASE)/$(LDR_NAME).bin +MAP_R = $(IMG_RELEASE)/$(PRJ_NAME).txt +MAP2_R = $(IMG_RELEASE)/$(PRJ_NAME)_ldmap.txt +SYM_R = $(IMG_RELEASE)/$(PRJ_NAME).sym +DASM_R = $(IMG_RELEASE)/$(PRJ_NAME)_dasm.txt +ifeq "$(MODELEXT_BUILT_IN)" "MODELEXT_BUILT_IN_OFF" +MODELEXT_R = $(IMG_RELEASE)/$(BIN_NAME).ext.bin +endif + +#---------------------------------------------------------------------- +# if enable LDS_MAP +#---------------------------------------------------------------------- +ifeq "$(LDS_MAP)" "ON" +LDMAP_D = -Map $(MAP2_D) +LDMAP_R = -Map $(MAP2_R) +endif + +#---------------------------------------------------------------------- +# set the warning/error log file option +#---------------------------------------------------------------------- +log_file = log_Prj.txt + +# 0: Standard input (stdin), 1: Standard output (stdout), 2: Standard error (stderr) +# 2>>$(log_file) means redirect standard error to $(log_file) +# 2>>/dev/null means redirect standard error to NULL (Don't display error message) +ifeq "$(LOG_ERR)" "ON" +LOG_OPTION = 2>>$(log_file) +endif + +#---------------------------------------------------------------------- +# set robustness checking log file +#---------------------------------------------------------------------- +lint_file = lint_Prj.txt +lintopt_file = options_Prj.lnt +lintsum_file = lintsum_Prj.txt + +#---------------------------------------------------------------------- +# set the make targets +#---------------------------------------------------------------------- +build_D: make_debug_begin prepare_log $(IMAGE_D) $(BIN_D) +build_R: make_release_begin prepare_log $(IMAGE_R) $(BIN_R) +build_pipe_D: $(IMAGE_D) $(BIN_D) +build_pipe_R: $(IMAGE_R) $(BIN_R) + +ifeq "$(ISOLATE_DEP)" "ON" +build_DEP: make_dep_begin $(SRC) $(ASM) $(CPP_SRC) $(ALL_DEP) +endif + +build_LINT: make_lint_begin $(LINT_FILE) + +prepare_log: + @$(LOG_OPTION) + +ifeq "$(ARCH)" "ARM" +#arm-none-eabi-gcc -march=armv7-a -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp -print-file-name=libm.a +ifeq "$(FPU)" "hard" +libgcc_path = $(shell $(CC) -march=armv7-a -mcpu=$(CPU) -mabi=aapcs -mfpu=neon -mfloat-abi=$(FPU) -print-libgcc-file-name) +libgcc_dir_el = $(shell dirname "$(libgcc_path)") +libstdc_path = $(shell $(CC) -msoft-float -print-file-name=libstdc++.a) +libstdc_dir_el = $(shell dirname "$(libstdc_path)") +libm_path = $(shell $(CC) -march=armv7-a -mcpu=$(CPU) -mfpu=neon -mfloat-abi=$(FPU) -print-file-name=libm.a) +libm_dir = $(shell dirname "$(libm_path)") +else +libgcc_path = $(shell $(CC) -march=armv7-a -mcpu=$(CPU) -mabi=aapcs -mfloat-abi=$(FPU) -print-libgcc-file-name) +libgcc_dir_el = $(shell dirname "$(libgcc_path)") +libstdc_path = $(shell $(CC) -msoft-float -print-file-name=libstdc++.a) +libstdc_dir_el = $(shell dirname "$(libstdc_path)") +libm_path = $(shell $(CC) -march=armv7-a -mcpu=$(CPU) -mfloat-abi=$(FPU) -print-file-name=libm.a) +libm_dir = $(shell dirname "$(libm_path)") +endif +endif + +define append_modelext + echo Append $1 into $4. \ + && $(AR) x $3 $1.o \ + && $(FE) --only-section=modelext_header.$1 -O binary -S -R .comment -R .note $1.o $2/$1.header \ + && cat $2/$1.header >> $4 \ + && $(FE) --only-section=modelext_data.$1 -O binary -S -R .comment -R .note $1.o $2/$1.data \ + && cat $2/$1.data >> $4 +endef + + +#Replace string existing in lds file +ifeq "$(SCATTER)" "EmuKit_cpu2.lds" +ifeq "$(PLATFORM_MEM_SIZE)" "SDRAM_SIZE_256" + BOARD_UITRON_ADDR = 0x8000000 +endif +ifeq "$(PLATFORM_MEM_SIZE)" "SDRAM_SIZE_512" + BOARD_UITRON_ADDR = 0x10000000 +endif +ifeq "$(PLATFORM_MEM_SIZE)" "SDRAM_SIZE_1024" + BOARD_UITRON_ADDR = 0x20000000 +endif +endif + +LD_REMAP_LIB = Remap_$(RESETFLAG)$(REMAP_SUFFIX) +LD_DOREMAP = doremap$(RESETFLAG) +ifeq "$(ENLARGE_LD)" "ENABLE" +LD_RESET_LIB = Reset_$(RESETCHIP)$(RESET_SUFFIX)_64K +else +LD_RESET_LIB = Reset_$(RESETCHIP)$(RESET_SUFFIX) +endif +LD_COMMON_LIB = Common_$(COMMON_LIB)$(COMMON_SUFFIX) +ifeq "$(BL_COMPRESS)" "ENABLE" +LD_CONFIGRAM = configramLZ +else +LD_CONFIGRAM = configramNM +endif +LD_REPLACE_VAR = sed \ + -e 's/$$LD_REMAP_LIB/$(LD_REMAP_LIB)/g' \ + -e 's/$$LD_DOREMAP/$(LD_DOREMAP)/g' \ + -e 's/$$LD_CONFIGRAM/$(LD_CONFIGRAM)/g' \ + -e 's/$$LD_BASE_ADDR/$(LD_BASE_ADDR)/g' \ + -e 's/$$LD_RESET_LIB/$(LD_RESET_LIB)/g' \ + -e 's/$$LD_COMMON_LIB/$(LD_COMMON_LIB)/g' \ + -e 's/$$STORAGEINT/$(STORAGEINT)/g' \ + $(SCATTER) + +#The folder, the working space to fill the full path into lds file +LD_DIR_WORKING_D= $(IMG_BASE_DIR)/Debug/ObjectLds +#Generate the working folder and temp lds file called replace.lds +LD_REPLACE_LDS_D= $(shell mkdir -p $(LD_DIR_WORKING_D)) $(shell $(OBJDUMP) -h $(LIB_D) | grep ".version.info" > tmp_awk1) $(shell $(LD_REPLACE_VAR) > $(LD_DIR_WORKING_D)/replace.lds) +#The real lds file replaced of using by linker +LD_PATH_LDS_D = $(LD_DIR_WORKING_D)/$(basename $(SCATTER))_D.lds +#Here have some steps as following to get a some files explained below, +#Step 1: Generate temp lds file +#Step 2: export the contents of $(LIB_D) into libs.txt +#Step 3: export the contents of $(ALL_OBJ_D) into objs.txt +#Step 4: Give mips-nvt.exe libs.txt, objs.txt and replace.lds to get ld_ext.d, ld_lib.txt, ld_lib_ban.txt and real lds file for linker. +# Where, +# ld_ext.d is a decency file depends on .o used in lds file +# ld_lib_ban is a list of .a files to ban, because linker should use the .a file after extracting .o. +# real lds file is replaced by full path. +LD_DFILE_D = $(LD_REPLACE_LDS_D) $(shell echo $(LIB_D) > $(LD_DIR_WORKING_D)/libs.txt ) $(shell echo $(ALL_OBJ_D) > $(LD_DIR_WORKING_D)/objs.txt ) $(shell $(LDNVT) --lds-dst=$(LD_PATH_LDS_D) --lds-dir=$(LD_DIR_WORKING_D) --lds-src=$(LD_DIR_WORKING_D)/replace.lds --libs-src=$(LD_DIR_WORKING_D)/libs.txt --objs-src=$(LD_DIR_WORKING_D)/objs.txt --objs-dir=$(OBJ_DEBUG)) $(LD_DIR_WORKING_D)/ld_ext.d +#Getting the contents of ld_lib.txt +LD_LIB_D = $(shell cat $(LD_DIR_WORKING_D)/ld_lib.txt 2>>/dev/null) +#Getting the contents of ld_lib_ban.txt +LD_LIB_BAN_D = $(shell cat $(LD_DIR_WORKING_D)/ld_lib_ban.txt 2>>/dev/null) +tmp_awk2 = $(shell awk -F" " '{print $$2}' tmp_awk1 | awk -F"." '{print $$5}') +tmp_awk3 = $(addsuffix _LIBRARY_VERSION_INFO, $(tmp_awk2)) + +ifeq ($(MAKECMDGOALS), $(filter $(MAKECMDGOALS),debug build_pipe_D)) +include $(LD_DFILE_D) +endif + +$(LD_LIB_D): $(MODELEXT_D) + +#$(MODELEXT_D): $(LIB_MODELEXT_D) +# @echo Creating modelext $@ ... \ +# && rm -f $@ \ +# && $(call append_modelext,modelext_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,bin_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,pinmux_cfg,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,intdir_cfg,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,emb_partition_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,gpio_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,dram_partition_info,$(OBJ_DEBUG),$<,$@) \ +# && $(call append_modelext,model_cfg,$(OBJ_DEBUG),$<,$@) \ +# && $(EBIN) $(EBIN_METHOD) $@ 0x18 $(EBIN_MNAME) +# @BIN_SIZE=`ls -l $@ | cut -d ' ' -f 5`; \ +# RESIDUAL=$$(($${BIN_SIZE} % 4)); \ +# if [ "$${RESIDUAL}" -ne "0" ]; then \ +# echo "sizeof($@) is not 4-byte aligned"; \ +# exit 1; \ +# fi + +$(IMAGE_D): $(SRC) $(ASM) $(CPP_SRC) $(ALL_OBJ_D) $(LIB_D) $(LD_LIB_D) $(MODELEXT_D) + $(shell mv *.o $(IMG_BASE_DIR)/Debug/ObjectCode 2>>/dev/null) + @echo '-o $@ $(ALL_OBJ_D)'> ld_d.tmp + @echo '--start-group $(LD_LIB_D) $(filter-out $(LD_LIB_BAN_D),$(LIB_D)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_D) -L "$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -L"$(libm_dir)" -lstdc++ -lgcc "$(libm_path)" $(LDMAP_D)' >> ld_d.tmp +ifeq "$(SCATTER)" "EmuKit_cpu2.lds" + @echo "Linking CA53_core2...$(LD_PATH_LDS_D)" \ + && echo Creating image $@ ... \ + && $(LD) @ld_d.tmp $(LOG_OPTION) \ + && $(OBJDUMP) -x -h -t $@ > $(MAP_D) \ + && $(NM) -n $@ > tmp_sym_d \ + && grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' tmp_sym_d > $(SYM_D) \ + && rm -f tmp_sym_d \ + && rm -f ld_d.tmp \ + && rm -f tmp_awk1 +else + @echo "Linking ..." \ + && echo Creating image $@ ... \ + && $(LD) @ld_d.tmp $(LOG_OPTION) \ + && $(OBJDUMP) -x -h -t $@ > $(MAP_D) \ + && $(NM) -n $@ > tmp_sym_d \ + && grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' tmp_sym_d > $(SYM_D) \ + && rm -f tmp_sym_d \ + && rm -f ld_d.tmp \ + && rm -f tmp_awk1 +endif + + +$(BIN_D): $(IMAGE_D) +ifeq "$(MULTI_REGIONS)" "ON" + @echo Creating executable $@ ... \ + && $(FE) --gap-fill=0xff -O binary $< $@ \ + && mv $(IMG_DEBUG)/SPECIAL_RO $(BIN_D) +else + @echo Creating executable $@ ... \ + && $(FE) --gap-fill=0xff -O binary $< $@ +endif +ifeq "$(LDS_MAP)" "ON" + @echo Generate LDS map file $(MAP2_D): ok +endif +ifeq "$(AXF_DIS)" "ON" + @echo Translate AXF $< to disassembly... \ + && $(OBJDUMP) -D $(IMAGE_D) > $(DASM_D) +endif + +ifeq "$(BL_COMPRESS)" "ENABLE" + @echo Compressing file $(@)\ + && $(BFC) c lz $(BIN_D) tmp 2 $(UNCOMPRESSEDPART_SIZE_OFFSET) \ + && cp -f tmp $(BIN_D) \ + && rm -f tmp \ + && echo Encrypt binary file $@ for $(CHIP)... $(CHIP_VER) $(DMA_CLOCK) $(SDRAM_SIZE) $(LOADER_VERSION) $(CONFIG_RAM_GUI_EN) $(PHY_ANALOG_HV) $(DUTY_CALIBRATION) $(DUTY_CALIBRATION_LOG) $(DUTY_CALIBRATION_TYPE)\ + && $(EBIN) $@ $@ 680 + $(CFGRAM) $@ -ini=../../Tools/ConfigRam/$(DDR_INI_STR) -ini2=../../Tools/ConfigRam/$(DDR_INI_STR) -chip=660 -package=$(CHIP) -ldver=$(LOADER_VERSION) -gui=$(CONFIG_RAM_GUI_EN) -storage=$(STORAGEINT) -inv_rst=$(DRAM1_RST_PARAM) +# $(CFGRAM) $@ ../../Tools/ConfigRam/$(CHIP)_$(CHIP_VER)_$(DMA_CLOCK)_$(SDRAM_SIZE)$(DDR_FILE_STR).ini 650 $(LOADER_VERSION) $(CONFIG_RAM_GUI_EN) $(PHY_ANALOG_HV) $(DUTY_CALIBRATION) $(DUTY_CALIBRATION_LOG) $(DUTY_CALIBRATION_TYPE) $(LV1_CLK) +else + @echo Encrypt binary file $@ for $(CHIP)...\ + && $(EBIN) $@ $@ 680 $(SECURE_BOOT) +endif + +ifeq "$(COPY_BIN_2_STG)" "ON" +ifneq "$(NVT_STG_PATH)" "" + @-echo Copy \""$(BIN_D)\"" to $(NVT_STG_PATH) ... \ + && cp -f -v $(BIN_D) $(NVT_STG_PATH)$(notdir $(BIN_D)) +endif +ifneq "$(NVT_STG_PATH_MIPS2)" "" + @-echo Copy \""$(BIN_D)\"" to $(NVT_STG_PATH_MIPS2)_FWMIPS2.bin ... \ + && cp -f -v $(BIN_D) $(NVT_STG_PATH_MIPS2)_FWMIPS2.bin +endif + +ifneq "$(NVT_STG_PATH_CA532)" "" + @-echo Copy \""$(BIN_D)\"" to $(NVT_STG_PATH_CA532)_FWCA532.bin ... \ + && cp -f -v $(BIN_D) $(NVT_STG_PATH_CA532)_FWCA532.bin +endif +endif + +#Please refer LD_DIR_WORKING_D for getting explanation. Ohters are in the same way. +LD_DIR_WORKING_R= $(IMG_BASE_DIR)/Release/ObjectLds +LD_REPLACE_LDS_R= $(shell mkdir -p $(LD_DIR_WORKING_R)) $(shell $(OBJDUMP) -h $(LIB_R) | grep ".version.info" > tmp_awk1) $(shell $(LD_REPLACE_VAR) > $(LD_DIR_WORKING_R)/replace.lds) +LD_PATH_LDS_R = $(LD_DIR_WORKING_R)/$(basename $(SCATTER))_R.lds +LD_DFILE_R = $(LD_REPLACE_LDS_R) $(shell echo $(LIB_R) > $(LD_DIR_WORKING_R)/libs.txt ) $(shell echo $(ALL_OBJ_R) > $(LD_DIR_WORKING_R)/objs.txt ) $(shell $(LDNVT) --lds-dst=$(LD_PATH_LDS_R) --lds-dir=$(LD_DIR_WORKING_R) --lds-src=$(LD_DIR_WORKING_R)/replace.lds --libs-src=$(LD_DIR_WORKING_R)/libs.txt --objs-src=$(LD_DIR_WORKING_R)/objs.txt --objs-dir=$(OBJ_RELEASE)) $(LD_DIR_WORKING_R)/ld_ext.d +LD_LIB_R = $(shell cat $(LD_DIR_WORKING_R)/ld_lib.txt 2>>/dev/null) +LD_LIB_BAN_R = $(shell cat $(LD_DIR_WORKING_R)/ld_lib_ban.txt 2>>/dev/null) +tmp_awk2 = $(shell awk -F" " '{print $$2}' tmp_awk1 | awk -F"." '{print $$5}') +tmp_awk3 = $(addsuffix _LIBRARY_VERSION_INFO, $(tmp_awk2)) + +ifeq ($(MAKECMDGOALS), $(filter $(MAKECMDGOALS),release build_pipe_R)) +include $(LD_DFILE_R) +endif + +$(LD_LIB_R): $(MODELEXT_R) + +#$(MODELEXT_R): $(LIB_MODELEXT_R) +# @echo Creating modelext $@\ +# && rm -f $@ \ +# && $(call append_modelext,modelext_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,bin_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,pinmux_cfg,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,intdir_cfg,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,emb_partition_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,gpio_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,dram_partition_info,$(OBJ_RELEASE),$<,$@) \ +# && $(call append_modelext,model_cfg,$(OBJ_RELEASE),$<,$@) \ +# && $(EBIN) $(EBIN_METHOD) $@ 0x18 $(EBIN_MNAME) +# @BIN_SIZE=`ls -l $@ | cut -d ' ' -f 5`; \ +# RESIDUAL=$$(($${BIN_SIZE} % 4)); \ +# if [ "$${RESIDUAL}" -ne "0" ]; then \ +# echo "sizeof($@) is not 4-byte aligned"; \ +# exit 1; \ +# fi + +$(IMAGE_R): $(SRC) $(ASM) $(CPP_SRC) $(ALL_OBJ_R) $(LIB_R) $(LD_LIB_R) $(MODELEXT_R) + $(shell mv *.o $(IMG_BASE_DIR)/Release/ObjectCode 2>>/dev/null) + @echo '-o $@ $(ALL_OBJ_R) '> ld_r.tmp + @echo '--start-group $(LD_LIB_R) $(filter-out $(LD_LIB_BAN_R),$(LIB_R)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_R) -L"$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -lstdc++ -lgcc "$(libm_path)" $(LDMAP_R)' >> ld_r.tmp + +ifeq "$(SCATTER)" "EmuKit_cpu2.lds" + @echo "Linking CA53_core2...$(LD_PATH_LDS_R)" \ + && echo Creating image $@ ... \ + && $(LD) @ld_r.tmp $(LOG_OPTION) \ + && $(OBJDUMP) -x -h -t $@ > $(MAP_R) \ + && $(NM) -n $@ > tmp_sym_r \ + && grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' tmp_sym_r > $(SYM_R) \ + && rm -f tmp_sym_r \ + && rm -f ld_r.tmp \ + && rm -f tmp_awk1 +else + @echo "Linking ... " \ + && echo Creating image $@ ...\ + && $(LD) @ld_r.tmp $(LOG_OPTION) \ + && $(OBJDUMP) -x -h -t -marm $@ > $(MAP_R) \ + && $(NM) -n $@ > tmp_sym_r \ + && grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' tmp_sym_r > $(SYM_R) \ + && rm -f tmp_sym_r \ + && rm -f ld_r.tmp \ + && rm -f tmp_awk1 +endif + +$(BIN_R): $(IMAGE_R) +ifeq "$(MULTI_REGIONS)" "ON" + @echo Creating executable $@ ... \ + && $(FE) --gap-fill=0xff -O binary $< $@ \ + && mv $(IMG_RELEASE)/SPECIAL_RO $(BIN_R) +else + @echo Creating executable $@ ... \ + && $(FE) --gap-fill=0xff -O binary $< $@ +endif + +ifeq "$(LDS_MAP)" "ON" + @echo Generate LDS map file $(MAP2_R): ok +endif +ifeq "$(AXF_DIS)" "ON" + @echo Translate AXF $< to disassembly... \ + && $(OBJDUMP) -D $(IMAGE_R) > $(DASM_R) +endif +ifeq "$(PROCESS_2ND_CHECKSUM)" "ON" + @echo Process compressing file $(@) checksum ...\ + && $(EBIN) $@ $@ $(CHIPID) 10 +endif +ifeq "$(BL_COMPRESS)" "ENABLE" + @echo Compressing file $(@)\ + && $(BFC) c $(COMPRESS_ALG) $(BIN_R) tmp 2 $(UNCOMPRESSEDPART_SIZE_OFFSET) \ + && cp -f tmp $(BIN_R) \ + && rm -f tmp \ + && echo Encrypt binary file $@ for $(CHIP)... $(CHIP_VER) $(DMA_CLOCK) $(SDRAM_SIZE) $(LOADER_VERSION) $(CONFIG_RAM_GUI_EN) $(PHY_ANALOG_HV) $(DUTY_CALIBRATION) $(DUTY_CALIBRATION_LOG) $(DUTY_CALIBRATION_TYPE)\ + && $(EBIN) $@ $@ $(CHIPID) + $(CFGRAM) $@ -freq=$(DRAM1_CLK) -ini=../../Tools/ConfigRam/$(DDR_INI_STR) -chip=$(CHIPID) -package=$(CHIP) -ldver=$(LOADER_VERSION) -storage=$(STORAGEINT) -inv_rst=$(DRAM1_RST_PARAM) -dram_ssc=$(DRAM_SSC_PARAM) -simp_chksum_skip=$(SIMPLE_CHKSUM_SKIP) -dram_wt=$(DDR_TREFI_PARAM) -dram_2nd_tlb=$(2ND_INI) -dram_2nd_tlb_gpio_no=$(GPIO_NUM) -2nd_ini=../../Tools/ConfigRam/$(DDR_INI_STR2) -odt_select=$(ODT_SELECT) -tx_drv=$(TX_DRV) -ddr_ldo=$(DDR_LDO) -pll_ldo=$(PLL_LDO) -rx_pad=$(RX_PAD) -fpga=$(FPGA_EMULATION) -storage_dir_mode=$(INT_STRG_DIR_MODE) + $(EBIN) $@ $@ $(CHIPID) $(SECURE_BOOT) $(ENCRYPT_DATA) $(SECUREBOOT_MSG) $(AES_KEY_FILE_DIR) $(RSA_PUB_KEY_FILE_DIR) $(RSA_PRV_KEY_FILE_DIR) $(ENCRYPTDATA_KEY_SET) $(_HEADER_SIGN_) $(SIGNATURE_FIRST) +ifeq "$(SIMPLE_CHKSUM_SKIP)" "ENABLE" + @echo Simple checksum skip enabled => re-gen simple chksum... + $(EBIN) $@ $@ $(CHIPID) +endif +# $(CFGRAM) $@ -ini=../../Tools/ConfigRam/$(DDR_INI_STR) -ini2=../../Tools/ConfigRam/$(DDR_INI_STR) -chip=660 -package=$(CHIP) -ldver=$(LOADER_VERSION) -gui=$(CONFIG_RAM_GUI_EN) -storage=$(STORAGEINT) +else +# No compress + @echo Encrypt binary file $@ for $(CHIP)...\ + && $(EBIN) $@ $@ $(CHIPID) $(SECURE_BOOT) \ + && $(CFGRAM) $@ -freq=$(DRAM1_CLK) -ini=../../Tools/ConfigRam/$(DDR_INI_STR) -ini2=../../Tools/ConfigRam/$(DDR_INI2_STR) -chip=$(CHIPID) -package=$(CHIP) -ldver=$(LOADER_VERSION) -storage=$(STORAGEINT) -inv_rst=$(DRAM1_RST_PARAM) -dram_number=$(DRAM_NUMBER_DET_PARAM) -dram_ssc=$(DRAM_SSC_PARAM) +endif + +ifeq "$(COPY_BIN_2_STG)" "ON" +ifneq "$(NVT_STG_PATH)" "" + @-echo Copy \""$(BIN_R)\"" to $(NVT_STG_PATH) ... \ + && cp -f -v $(BIN_R) $(NVT_STG_PATH)$(notdir $(BIN_R)) +endif +ifneq "$(NVT_STG_PATH_MIPS2)" "" + @-echo Copy \""$(BIN_R)\"" to $(NVT_STG_PATH_MIPS2) ... \ + && cp -f -v $(BIN_R) $(NVT_STG_PATH_MIPS2)_FWMIPS2.bin +endif + +ifneq "$(NVT_STG_PATH_CA532)" "" + @-echo Copy \""$(BIN_R)\"" to $(NVT_STG_PATH_CA532)_FWCA532.bin ... \ + && cp -f -v $(BIN_R) $(NVT_STG_PATH_CA532)_FWCA532.bin +endif +endif + +.PHONY: +rm_log: +ifeq "$(CLEAN_LOG)" "ON" + @-rm -f $(log_file) +endif + +clean: + @-echo Clean $(basename $(notdir $(IMAGE_R))) ... \ + && rm -rf --no-preserve-root $(IMG_BASE_DIR) $(log_file) $(lint_file) + +ifeq "$(ISOLATE_DEP)" "ON" +all: rm_log + @make dep + @make debug + @make release + +rebuild: + @make clean + @make dep + @make debug + @make release + +dep: build_DEP +else +rebuild: clean build_D build_R +endif + +debug: rm_log make_debug_begin +ifeq ($(OS),Linux) + $(MAKE) build_pipe_D +else + $(MAKE) build_pipe_D $(JOB_FLAGS) +endif + +release: rm_log make_release_begin +ifeq ($(OS),Linux) + $(MAKE) build_pipe_R +else + $(MAKE) build_pipe_R $(JOB_FLAGS) +endif + +#remove unused remap.a for sdk +remap: + rm -v $(filter-out $(LIB_REMAP_D), $(LIB_REMAP_ALL_D)) $(filter-out $(LIB_REMAP_R), $(LIB_REMAP_ALL_R)) + +codesize: $(IMAGE_R) + @$(OBJDUMP) -t $< > $<.sym && \ + $(LDNVT) -j $<.sym && \ + mv RO_RW.txt ZI.txt $(IMG_RELEASE) + diff --git a/board/novatek/ns02501/loader/MakeCommon/OutputLib.txt b/board/novatek/ns02501/loader/MakeCommon/OutputLib.txt new file mode 100755 index 000000000000..391f4c0cb572 --- /dev/null +++ b/board/novatek/ns02501/loader/MakeCommon/OutputLib.txt @@ -0,0 +1,155 @@ +#---------------------------------------------------------------------- +# Local variable to determine create library or binary file +#---------------------------------------------------------------------- +OUTPUT_FILE = LIB + +#---------------------------------------------------------------------- +# include make common and make option files +#---------------------------------------------------------------------- +ifeq "$(OPTION_LOADED)" "" + include $(MAKE_COMMON_DIR)/MakeOption.txt + LOCAL_CLEAN_LOG = $(CLEAN_LOG) +else + LOCAL_CLEAN_LOG = OFF +endif + +include $(MAKE_COMMON_DIR)/MakeCommon.txt + +#---------------------------------------------------------------------- +# set the make outputs +#---------------------------------------------------------------------- +IMAGE_D = $(IMG_DEBUG)/$(PRJ_NAME)_D.a +IMAGE_R = $(IMG_RELEASE)/$(PRJ_NAME).a + +#---------------------------------------------------------------------- +# set the warning/error log file option +#---------------------------------------------------------------------- +# $(APP_PATH), $(APPEXT_PATH), $(LIB_PATH), $(LIBEXT_PATH) will be assigned value in MakeCommon.txt +ifneq "$(ALG_PATH)" "" + log_file := $(subst MakeCommon,Alg/log_Alg.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,Alg/lint_Alg.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_Alg.lnt + lintsum_file := $(subst MakeCommon,App/lintsum_Alg.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(APP_PATH)" "" + log_file := $(subst MakeCommon,App/log_App.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,App/lint_App.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_App.lnt + lintsum_file := $(subst MakeCommon,App/lintsum_App.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(APPEXT_PATH)" "" + log_file := $(subst MakeCommon,AppExt/log_AppExt.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,AppExt/lint_AppExt.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_AppExt.lnt + lintsum_file := $(subst MakeCommon,AppExt/lintsum_AppExt.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(LIB_PATH)" "" + log_file := $(subst MakeCommon,Lib/log_Lib.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,Lib/lint_Lib.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_Lib.lnt + lintsum_file := $(subst MakeCommon,Lib/lintsum_Lib.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(LIBEXT_PATH)" "" + log_file := $(subst MakeCommon,LibExt/log_LibExt.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,LibExt/lint_LibExt.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_LibExt.lnt + lintsum_file := $(subst MakeCommon,LibExt/lintsum_LibExt.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(DRV_PATH)" "" + log_file := $(subst MakeCommon,Drv/log_Drv.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,Drv/lint_Drv.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_Drv.lnt + lintsum_file := $(subst MakeCommon,Drv/lintsum_Drv.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(DRVEXT_PATH)" "" + log_file := $(subst MakeCommon,DrvExt/log_DrvExt.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,DrvExt/lint_DrvExt.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_DrvExt.lnt + lintsum_file := $(subst MakeCommon,DrvExt/lintsum_DrvExt.txt,$(MAKE_COMMON_DIR)) +else ifneq "$(COM_PATH)" "" + log_file := $(subst MakeCommon,Common/log_Common.txt,$(MAKE_COMMON_DIR)) + lint_file := $(subst MakeCommon,Common/lint_Common.txt,$(MAKE_COMMON_DIR)) + lintopt_file := options_Common.lnt + lintsum_file := $(subst MakeCommon,Common/lintsum_Common.txt,$(MAKE_COMMON_DIR)) +else + log_file := /dev/null + lint_file := /dev/null + lintopt_file := /dev/null + lintsum_file := /dev/null +endif + +ifeq "$(LOG_ERR)" "ON" + LOG_OPTION = 2>>$(log_file) + LOG_DATE = date >>$(log_file) + LOG_SPACE = echo >>$(log_file) +endif + +#---------------------------------------------------------------------- +# set the make targets +#---------------------------------------------------------------------- +build_D: make_debug_begin $(IMAGE_D) +build_R: make_release_begin $(IMAGE_R) +build_pipe_D: $(IMAGE_D) +build_pipe_R: $(IMAGE_R) + +ifeq "$(ISOLATE_DEP)" "ON" +build_DEP: make_dep_begin $(ALL_DEP) +endif + +build_LINT: make_lint_begin $(LINT_FILE) + +$(IMAGE_D): $(ALL_OBJ_D) + @echo Creating library $(notdir $@) ... \ + && rm -f $(IMAGE_D) \ + && $(AR) -cru $@ $^ + +$(IMAGE_R): $(ALL_OBJ_R) + @echo Creating library $(notdir $@) ... \ + && rm -f $(IMAGE_R) \ + && $(AR) -cru $@ $^ + +.PHONY: +rm_log: +ifeq "$(LOCAL_CLEAN_LOG)" "ON" + @-rm -f $(log_file) +endif + +clean: + @-echo Clean $(basename $(notdir $(IMAGE_R))) ... \ + && rm -rf --no-preserve-root $(PRJ_NAME)_Data $(log_file) $(lint_file) + +ifeq "$(ISOLATE_DEP)" "ON" +all: rm_log + @make dep + @make debug + @make release + +rebuild: + @make clean + @make dep + @make debug + @make release + +dep: build_DEP +else +rebuild: clean build_D build_R +endif + +debug: rm_log make_debug_begin +ifeq ($(OS),Linux) + $(MAKE) build_pipe_D +else + $(MAKE) build_pipe_D $(JOB_FLAGS) +endif + +release: rm_log make_release_begin +ifeq ($(OS),Linux) + $(MAKE) build_pipe_R +else + $(MAKE) build_pipe_R $(JOB_FLAGS) +endif + +rm_lint_log: +ifeq "$(LOCAL_CLEAN_LOG)" "ON" + @-rm -f $(lint_file) +endif + +lint: rm_lint_log build_LINT + +lintclean: + @-echo Clean Lint $(basename $(notdir $(IMAGE_R))) checking data ... \ + && rm -rf --no-preserve-root $(LINT_DIR) $(lint_file) diff --git a/board/novatek/ns02501/loader/MakeCommon/dump_tmp b/board/novatek/ns02501/loader/MakeCommon/dump_tmp new file mode 100755 index 000000000000..e69de29bb2d1 diff --git a/board/novatek/ns02501/loader/Project/Model/LDS_LZ.lds b/board/novatek/ns02501/loader/Project/Model/LDS_LZ.lds new file mode 100755 index 000000000000..16b1c730cea0 --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/LDS_LZ.lds @@ -0,0 +1,182 @@ +/* Linker script for malta + * + * Version: Sourcery G++ Lite 4.3-221 + * Support: https://support.codesourcery.com/GNUToolchain/ + * + * Copyright (c) 2007, 2008, 2009 CodeSourcery, Inc. + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + * */ + +/* Rule: + * 1. to use .o in project layer just type the .o name with file extension. (UiFlow.o) + * 2. to use .o in library layer have to add prefix module name. (DscSystem/SysTask.o) + * */ + +OUTPUT_ARCH(arm) +ENTRY(__start) +SEARCH_DIR(.) + +SECTIONS +{ + .BOOT_EXEC 0xF07C0000|0x00000000: + AT (0) + { + _load_BOOT_EXEC_start_base = .; + KEEP($LD_RESET_LIB/reset.o(.data*)); + $LD_RESET_LIB/reset.o(.text*); + _load_BOOT_EXEC_end_base = .; + } + .LOADER_CONFIGRAM (0xF07C0000|0x00000000) + 0x30: + AT (0x30) + { + _load_LOADER_CONFIGRAM_start_base = .; + KEEP($LD_REMAP_LIB/$LD_CONFIGRAM.o(.data*)); + _load_LOADER_CONFIGRAM_end_base = .; + _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base = .; + KEEP($LD_RESET_LIB/configramFreqParam.o(.data*)); + _load_LOADER_CONFIGRAM_FREQ_PARAM_end_base = .; + } + .LOADER_CONFIGRAM2 (0xF07C0000|0x00000000) + 0x400: + AT (0x400) + { + _config_dram_tbl_start_base = .; + KEEP($LD_RESET_LIB/config_dram1_tbl.o(.rodata*)); + config_dram1_tbl_2_start_base = .; + KEEP($LD_RESET_LIB/config_dram1_2_tbl.o(.rodata*)); + . = ALIGN(32); /* vector table aligned */ + } + .LOADER_CORE2_ENTRY_PROGRAM (0xF07C0000|0x00000000) + 0x600: + AT (0x600) + { + _load_core2_entry_program_start_base = .; + KEEP($LD_RESET_LIB/core2_entry.o(.text)); + _load_core2_entry_program_end_base = .; + } + .LOADER_REMAP (0xF07C0000|0x00000000) + 0x700: + AT (0x700) + { + _load_LOADER_REMAP_start_base = .; + $LD_REMAP_LIB/$LD_DOREMAP.o(.text* .data*); + _load_LOADER_REMAP_end_base = .; + _load_vector_exp_table_start_base = .; + KEEP($LD_RESET_LIB/exp.o(.text*)); + _load_vector_exp_table_end_base = .; + KEEP(Ctrl_Flow/bl_lowlevel_init.o(.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/configDDR.o(.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/ddr_basic.o (.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/Delayline_K.o (.text* .rodata*)); + KEEP($LD_RESET_LIB/ddr_io.o (.text* .rodata* .data* .bss*)); + KEEP(Driver/fuart.o(.text* .data* .rodata*)); + KEEP(Driver/cc.o (.text* .data* .bss* .rodata*)); + KEEP(Debug/debug.o (.text* .data* .bss* .rodata*)); + KEEP($LD_COMMON_LIB/global.o (.text* .data* .bss* .rodata*)); + KEEP($LD_COMMON_LIB/utility.o (.text* .data* .bss* .rodata*)); + KEEP($LD_COMMON_LIB/string.o (.text* .data* .bss* .rodata*)); /* for low level use memcmp by fdt lib */ + . = ALIGN(4); /* This is MUST. Ensure section size is word aligned. */ + } + + . = ALIGN(4); + .LOADER_EXEC ADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP) : + AT (LOADADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP)) + { + _loader_exec_start_base = .; + KEEP(Ctrl_Flow/main.o(.part1*)); + KEEP(Driver/rtc.o(.part1*)); + * (.part1) + _loader_exec_end_base = .; + } + _loader_exec_cpu_addr = LOADADDR(.LOADER_EXEC) + ADDR(.BOOT_EXEC); + _loader_exec_size = SIZEOF(.LOADER_EXEC); + + . = ALIGN(4); + .text $LD_BASE_ADDR: + AT (LOADADDR(.LOADER_EXEC) + SIZEOF(.LOADER_EXEC)) + { + _loader_exec_compres_start = .; + _internal_strg_param_start = .; + *(.text*) + _loader_exec_compres_end = .; + } + _loader_exec_compress_load_base = LOADADDR(.text); + _loader_exec_compress_load_cpu_addr = LOADADDR(.text) + ADDR(.BOOT_EXEC); + .ARM.exidx : + { + *(.ARM.exidx*) + *(.gnu.linkonce.armexidx.*) + } + . = ALIGN(4); + .rodata : + { + *(.rodata*) + . = ALIGN(8); /* This is MUST. Ensure ro size is 2 word aligned. */ + } + .dram_text : + AT (LOADADDR(.rodata) + SIZEOF(.rodata)) + { + _loader_dram_text_start_base = .; + * (.dram_text) + } + _loader_dram_text_cpu_addr = LOADADDR(.dram_text) + ADDR(.BOOT_EXEC); + _loader_dram_text_size = SIZEOF(.dram_text); + .data : + AT (LOADADDR(.dram_text) + SIZEOF(.dram_text)) + { + _loader_data_start_base = .; + _load_general_var_base = .; + _image_general_var_base = .; + *(.data*) + _image_general_var_limit = .; + } + _loader_data_cpu_addr = LOADADDR(.data) + ADDR(.BOOT_EXEC); + _loader_data_size = SIZEOF(.data); + .dummy : { LONG (0x00000000) } + . = ALIGN(4); + .got : { *(.got) } + . = ALIGN(4); + .bss : { /* locate bss at DRAM end */ + _image_general_zi_zi_base = .; + *(.bss) + . = ALIGN(0x4000); + _ttb = .; + . = . + 0x4000; + . = ALIGN(0x400); + _ttb_lv2 = .; + . = . + 0x400; + } + .common : + { + __common_base = ABSOLUTE(.); + /* collect "small" un-initialized global data (mark "C" in sym file) */ + *(.scommon*) + /* collect "large" un-initialized global data (mark "B" in sym file) */ + *(COMMON) + __common_limit = ABSOLUTE(.); + } + . = ALIGN(64); + _image_general_zi_zi_limit = ABSOLUTE(.); + _load_load_reset_base = .; + _image_load_reset_base = .; + _image_load_reset_length = .; + _image_load_reset_zi_base = .; + _image_load_reset_zi_limit = .; + . = ALIGN(64); + .loader_heap : + { + _loader_heap_base = .; + . += 0xA0000 + 0x20000 + 0x80000; + } + . = ALIGN(64); + _stack_start = .; + +} + +EXTERN("main" "config_dma" "Dec2HexStr") \ No newline at end of file diff --git a/board/novatek/ns02501/loader/Project/Model/LDS_LZ_FASTBOOT.lds b/board/novatek/ns02501/loader/Project/Model/LDS_LZ_FASTBOOT.lds new file mode 100755 index 000000000000..33d05315e1c3 --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/LDS_LZ_FASTBOOT.lds @@ -0,0 +1,188 @@ +/* Linker script for malta + * + * Version: Sourcery G++ Lite 4.3-221 + * Support: https://support.codesourcery.com/GNUToolchain/ + * + * Copyright (c) 2007, 2008, 2009 CodeSourcery, Inc. + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + * */ + +/* Rule: + * 1. to use .o in project layer just type the .o name with file extension. (UiFlow.o) + * 2. to use .o in library layer have to add prefix module name. (DscSystem/SysTask.o) + * */ + +OUTPUT_ARCH(arm) +ENTRY(__start) +SEARCH_DIR(.) + +SECTIONS +{ + .BOOT_EXEC 0xF07C0000|0x00000000: + AT (0) + { + _load_BOOT_EXEC_start_base = .; + KEEP($LD_RESET_LIB/reset.o(.data*)); + $LD_RESET_LIB/reset.o(.text*); + _load_BOOT_EXEC_end_base = .; + } + .LOADER_CONFIGRAM (0xF07C0000|0x00000000) + 0x30: + AT (0x30) + { + _load_LOADER_CONFIGRAM_start_base = .; + KEEP($LD_REMAP_LIB/$LD_CONFIGRAM.o(.data*)); + _load_LOADER_CONFIGRAM_end_base = .; + _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base = .; + KEEP($LD_RESET_LIB/configramFreqParam.o(.data*)); + _load_LOADER_CONFIGRAM_FREQ_PARAM_end_base = .; + } + .LOADER_CONFIGRAM2 (0xF07C0000|0x00000000) + 0x400: + AT (0x400) + { + _config_dram_tbl_start_base = .; + KEEP($LD_RESET_LIB/config_dram1_tbl.o(.rodata*)); + config_dram1_tbl_2_start_base = .; + KEEP($LD_RESET_LIB/config_dram1_2_tbl.o(.rodata*)); + . = ALIGN(32); /* vector table aligned */ + } + .LOADER_CORE2_ENTRY_PROGRAM (0xF07C0000|0x00000000) + 0x600: + AT (0x600) + { + _load_core2_entry_program_start_base = .; + KEEP($LD_RESET_LIB/core2_entry.o(.text)); + _load_core2_entry_program_end_base = .; + } + .LOADER_REMAP (0xF07C0000|0x00000000) + 0x700: + AT (0x700) + { + _load_LOADER_REMAP_start_base = .; + $LD_REMAP_LIB/$LD_DOREMAP.o(.text* .data*); + _load_LOADER_REMAP_end_base = .; + _load_vector_exp_table_start_base = .; + KEEP($LD_RESET_LIB/exp.o(.text*)); + _load_vector_exp_table_end_base = .; + KEEP(Ctrl_Flow/bl_lowlevel_init.o(.text* .rodata* .data* .bss*)); + KEEP(Ctrl_Flow/spi_nor_ids.o(.text* .rodata* .data* .bss*)); + KEEP(Ctrl_Flow/nand_ids.o(.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/configDDR.o(.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/ddr_basic.o (.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/Delayline_K.o (.text* .rodata*)); + KEEP($LD_RESET_LIB/ddr_io.o (.text* .rodata* .data* .bss*)); + KEEP(Driver/fuart.o(.text* .data* .rodata*)); + KEEP(Driver/cc.o (.text* .data* .bss* .rodata*)); + KEEP(Debug/debug.o (.text* .data* .bss* .rodata*)); + KEEP($LD_COMMON_LIB/global.o (.text* .data* .bss* .rodata*)); + KEEP($LD_COMMON_LIB/utility.o (.text* .data* .bss* .rodata*)); + KEEP($LD_COMMON_LIB/string.o (.text* .data* .bss* .rodata*)); /* for low level use memcmp by fdt lib */ + KEEP(Driver/cfe.o (.text* .data* .bss* .rodata*)); /* for low level use cfe */ + KEEP(STRGINT_$STORAGEINT.a (.text* .data* .bss* .rodata*)); + KEEP(CA9.a (.text* .data* .bss* .rodata*)); + KEEP(fdt.a (.text* .data* .bss* .rodata*)); + . = ALIGN(4); /* This is MUST. Ensure section size is word aligned. */ + } + + . = ALIGN(4); + .LOADER_EXEC ADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP) : + AT (LOADADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP)) + { + _loader_exec_start_base = .; + KEEP(Ctrl_Flow/main.o(.part1*)); + KEEP(Driver/rtc.o(.part1*)); + * (.part1) + _loader_exec_end_base = .; + } + _loader_exec_cpu_addr = LOADADDR(.LOADER_EXEC) + ADDR(.BOOT_EXEC); + _loader_exec_size = SIZEOF(.LOADER_EXEC); + + . = ALIGN(4); + .text $LD_BASE_ADDR: + AT (LOADADDR(.LOADER_EXEC) + SIZEOF(.LOADER_EXEC)) + { + _loader_exec_compres_start = .; + _internal_strg_param_start = .; + *(.text*) + _loader_exec_compres_end = .; + } + _loader_exec_compress_load_base = LOADADDR(.text); + _loader_exec_compress_load_cpu_addr = LOADADDR(.text) + ADDR(.BOOT_EXEC); + .ARM.exidx : + { + *(.ARM.exidx*) + *(.gnu.linkonce.armexidx.*) + } + . = ALIGN(4); + .rodata : + { + *(.rodata*) + . = ALIGN(8); /* This is MUST. Ensure ro size is 2 word aligned. */ + } + .dram_text : + AT (LOADADDR(.rodata) + SIZEOF(.rodata)) + { + _loader_dram_text_start_base = .; + * (.dram_text) + } + _loader_dram_text_cpu_addr = LOADADDR(.dram_text) + ADDR(.BOOT_EXEC); + _loader_dram_text_size = SIZEOF(.dram_text); + .data : + AT (LOADADDR(.dram_text) + SIZEOF(.dram_text)) + { + _loader_data_start_base = .; + _load_general_var_base = .; + _image_general_var_base = .; + *(.data*) + _image_general_var_limit = .; + } + _loader_data_cpu_addr = LOADADDR(.data) + ADDR(.BOOT_EXEC); + _loader_data_size = SIZEOF(.data); + .dummy : { LONG (0x00000000) } + . = ALIGN(4); + .got : { *(.got) } + . = ALIGN(4); + .bss : { /* locate bss at DRAM end */ + _image_general_zi_zi_base = .; + *(.bss) + . = ALIGN(0x4000); + _ttb = .; + . = . + 0x4000; + . = ALIGN(0x400); + _ttb_lv2 = .; + . = . + 0x400; + } + .common : + { + __common_base = ABSOLUTE(.); + /* collect "small" un-initialized global data (mark "C" in sym file) */ + *(.scommon*) + /* collect "large" un-initialized global data (mark "B" in sym file) */ + *(COMMON) + __common_limit = ABSOLUTE(.); + } + . = ALIGN(64); + _image_general_zi_zi_limit = ABSOLUTE(.); + _load_load_reset_base = .; + _image_load_reset_base = .; + _image_load_reset_length = .; + _image_load_reset_zi_base = .; + _image_load_reset_zi_limit = .; + . = ALIGN(64); + .loader_heap : + { + _loader_heap_base = .; + . += 0xA0000 + 0x20000 + 0x80000; + } + . = ALIGN(64); + _stack_start = .; + +} + +EXTERN("main" "config_dma" "Dec2HexStr") \ No newline at end of file diff --git a/board/novatek/ns02501/loader/Project/Model/LDS_LZ_FASTBOOT_EMMC.lds b/board/novatek/ns02501/loader/Project/Model/LDS_LZ_FASTBOOT_EMMC.lds new file mode 100755 index 000000000000..4e8c8a46299e --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/LDS_LZ_FASTBOOT_EMMC.lds @@ -0,0 +1,187 @@ +/* Linker script for malta + * + * Version: Sourcery G++ Lite 4.3-221 + * Support: https://support.codesourcery.com/GNUToolchain/ + * + * Copyright (c) 2007, 2008, 2009 CodeSourcery, Inc. + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + * */ + +/* Rule: + * 1. to use .o in project layer just type the .o name with file extension. (UiFlow.o) + * 2. to use .o in library layer have to add prefix module name. (DscSystem/SysTask.o) + * */ + +OUTPUT_ARCH(arm) +ENTRY(__start) +SEARCH_DIR(.) + +SECTIONS +{ + .BOOT_EXEC 0xF07C0000|0x00000000: + AT (0) + { + _load_BOOT_EXEC_start_base = .; + KEEP($LD_RESET_LIB/reset.o(.data*)); + $LD_RESET_LIB/reset.o(.text*); + _load_BOOT_EXEC_end_base = .; + } + .LOADER_CONFIGRAM (0xF07C0000|0x00000000) + 0x30: + AT (0x30) + { + _load_LOADER_CONFIGRAM_start_base = .; + KEEP($LD_REMAP_LIB/$LD_CONFIGRAM.o(.data*)); + _load_LOADER_CONFIGRAM_end_base = .; + _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base = .; + KEEP($LD_RESET_LIB/configramFreqParam.o(.data*)); + _load_LOADER_CONFIGRAM_FREQ_PARAM_end_base = .; + } + .LOADER_CONFIGRAM2 (0xF07C0000|0x00000000) + 0x400: + AT (0x400) + { + _config_dram_tbl_start_base = .; + KEEP($LD_RESET_LIB/config_dram1_tbl.o(.rodata*)); + config_dram1_tbl_2_start_base = .; + KEEP($LD_RESET_LIB/config_dram1_2_tbl.o(.rodata*)); + . = ALIGN(32); /* vector table aligned */ + } + .LOADER_CORE2_ENTRY_PROGRAM (0xF07C0000|0x00000000) + 0x600: + AT (0x600) + { + _load_core2_entry_program_start_base = .; + KEEP($LD_RESET_LIB/core2_entry.o(.text)); + _load_core2_entry_program_end_base = .; + } + .LOADER_REMAP (0xF07C0000|0x00000000) + 0x700: + AT (0x700) + { + _load_LOADER_REMAP_start_base = .; + $LD_REMAP_LIB/$LD_DOREMAP.o(.text* .data*); + _load_LOADER_REMAP_end_base = .; + _load_vector_exp_table_start_base = .; + KEEP($LD_RESET_LIB/exp.o(.text*)); + _load_vector_exp_table_end_base = .; + KEEP(Ctrl_Flow/bl_lowlevel_init.o(.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/configDDR.o(.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/ddr_basic.o (.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/Delayline_K.o (.text* .rodata*)); + KEEP($LD_RESET_LIB/ddr_io.o (.text* .rodata* .data* .bss*)); + KEEP(Driver/fuart.o(.text* .data* .rodata*)); + KEEP(Driver/cc.o (.text* .data* .bss* .rodata*)); + KEEP(Driver/pad.o (.text* .data* .bss* .rodata*)); /* pad_setDrivingSink */ + KEEP(Debug/debug.o (.text* .data* .bss* .rodata*)); + KEEP($LD_COMMON_LIB/global.o (.text* .data* .bss* .rodata*)); + KEEP($LD_COMMON_LIB/utility.o (.text* .data* .bss* .rodata*)); + KEEP($LD_COMMON_LIB/string.o (.text* .data* .bss* .rodata*)); /* for low level use memcmp by fdt lib */ + KEEP(Driver/cfe.o (.text* .data* .bss* .rodata*)); /* for low level use cfe */ + KEEP(STRGINT_$STORAGEINT.a (.text* .data* .bss* .rodata*)); + KEEP(CA9.a (.text* .data* .bss* .rodata*)); + KEEP(fdt.a (.text* .data* .bss* .rodata*)); + . = ALIGN(4); /* This is MUST. Ensure section size is word aligned. */ + } + + . = ALIGN(4); + .LOADER_EXEC ADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP) : + AT (LOADADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP)) + { + _loader_exec_start_base = .; + KEEP(Ctrl_Flow/main.o(.part1*)); + KEEP(Driver/rtc.o(.part1*)); + * (.part1) + _loader_exec_end_base = .; + } + _loader_exec_cpu_addr = LOADADDR(.LOADER_EXEC) + ADDR(.BOOT_EXEC); + _loader_exec_size = SIZEOF(.LOADER_EXEC); + + . = ALIGN(4); + .text $LD_BASE_ADDR: + AT (LOADADDR(.LOADER_EXEC) + SIZEOF(.LOADER_EXEC)) + { + _loader_exec_compres_start = .; + _internal_strg_param_start = .; + *(.text*) + _loader_exec_compres_end = .; + } + _loader_exec_compress_load_base = LOADADDR(.text); + _loader_exec_compress_load_cpu_addr = LOADADDR(.text) + ADDR(.BOOT_EXEC); + .ARM.exidx : + { + *(.ARM.exidx*) + *(.gnu.linkonce.armexidx.*) + } + . = ALIGN(4); + .rodata : + { + *(.rodata*) + . = ALIGN(8); /* This is MUST. Ensure ro size is 2 word aligned. */ + } + .dram_text : + AT (LOADADDR(.rodata) + SIZEOF(.rodata)) + { + _loader_dram_text_start_base = .; + * (.dram_text) + } + _loader_dram_text_cpu_addr = LOADADDR(.dram_text) + ADDR(.BOOT_EXEC); + _loader_dram_text_size = SIZEOF(.dram_text); + .data : + AT (LOADADDR(.dram_text) + SIZEOF(.dram_text)) + { + _loader_data_start_base = .; + _load_general_var_base = .; + _image_general_var_base = .; + *(.data*) + _image_general_var_limit = .; + } + _loader_data_cpu_addr = LOADADDR(.data) + ADDR(.BOOT_EXEC); + _loader_data_size = SIZEOF(.data); + .dummy : { LONG (0x00000000) } + . = ALIGN(4); + .got : { *(.got) } + . = ALIGN(4); + .bss : { /* locate bss at DRAM end */ + _image_general_zi_zi_base = .; + *(.bss) + . = ALIGN(0x4000); + _ttb = .; + . = . + 0x4000; + . = ALIGN(0x400); + _ttb_lv2 = .; + . = . + 0x400; + } + .common : + { + __common_base = ABSOLUTE(.); + /* collect "small" un-initialized global data (mark "C" in sym file) */ + *(.scommon*) + /* collect "large" un-initialized global data (mark "B" in sym file) */ + *(COMMON) + __common_limit = ABSOLUTE(.); + } + . = ALIGN(64); + _image_general_zi_zi_limit = ABSOLUTE(.); + _load_load_reset_base = .; + _image_load_reset_base = .; + _image_load_reset_length = .; + _image_load_reset_zi_base = .; + _image_load_reset_zi_limit = .; + . = ALIGN(64); + .loader_heap : + { + _loader_heap_base = .; + . += 0xA0000 + 0x20000 + 0x80000; + } + . = ALIGN(64); + _stack_start = .; + +} + +EXTERN("main" "config_dma" "Dec2HexStr") \ No newline at end of file diff --git a/board/novatek/ns02501/loader/Project/Model/LDS_LZ_HDR_SIGN.lds b/board/novatek/ns02501/loader/Project/Model/LDS_LZ_HDR_SIGN.lds new file mode 100755 index 000000000000..e340bd1ea8d7 --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/LDS_LZ_HDR_SIGN.lds @@ -0,0 +1,178 @@ +/* Linker script for malta + * + * Version: Sourcery G++ Lite 4.3-221 + * Support: https://support.codesourcery.com/GNUToolchain/ + * + * Copyright (c) 2007, 2008, 2009 CodeSourcery, Inc. + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + * */ + +/* Rule: + * 1. to use .o in project layer just type the .o name with file extension. (UiFlow.o) + * 2. to use .o in library layer have to add prefix module name. (DscSystem/SysTask.o) + * */ + +OUTPUT_ARCH(arm) +ENTRY(__start) +SEARCH_DIR(.) + +SECTIONS +{ + .BOOT_EXEC 0xF07C0000|0x00000000: + AT (0) + { + _load_BOOT_EXEC_start_base = .; + KEEP($LD_RESET_LIB/reset.o(.data*)); + $LD_RESET_LIB/reset.o(.text*); + _load_BOOT_EXEC_end_base = .; + } + .LOADER_CONFIGRAM (0xF07C0000|0x00000000) + 0x30: + AT (0x30) + { + _load_LOADER_CONFIGRAM_start_base = .; + KEEP($LD_REMAP_LIB/$LD_CONFIGRAM.o(.data*)); + _load_LOADER_CONFIGRAM_end_base = .; + _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base = .; + KEEP($LD_RESET_LIB/configramFreqParam.o(.data*)); + _load_LOADER_CONFIGRAM_FREQ_PARAM_end_base = .; + } + .LOADER_CONFIGRAM2 (0xF07C0000|0x00000000) + 0x400: + AT (0x400) + { + KEEP($LD_RESET_LIB/config_dram1_tbl.o(.rodata*)); + config_dram1_tbl_2_start_base = .; + KEEP($LD_RESET_LIB/config_dram1_2_tbl.o(.rodata*)); + } + .LOADER_CORE2_ENTRY_PROGRAM (0xF07C0000|0x00000000) + 0x600: + AT (0x600) + { + _load_core2_entry_program_start_base = .; + KEEP($LD_RESET_LIB/core2_entry.o(.text)); + _load_core2_entry_program_end_base = .; + } + .LOADER_REMAP (0xF07C0000|0x00000000) + 0x700: + AT (0x700) + { + _load_LOADER_REMAP_start_base = .; + $LD_REMAP_LIB/$LD_DOREMAP.o(.text*); + _load_LOADER_REMAP_end_base = .; + _load_vector_exp_table_start_base = .; + KEEP($LD_RESET_LIB/exp.o(.text*)); + _load_vector_exp_table_end_base = .; + KEEP(Ctrl_Flow/bl_lowlevel_init.o(.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/configDDR.o(.text* .rodata* .data* .bss*)); + KEEP($LD_RESET_LIB/ddr_basic.o (.text* .data* .bss*)); + KEEP($LD_RESET_LIB/Delayline_K.o (.text* .rodata*)); + KEEP($LD_RESET_LIB/ddr_io.o (.text* .rodata* .data* .bss*)); + KEEP(Driver/fuart.o(.text* .data* .rodata*)); + KEEP(Driver/cc.o (.text* .data* .bss*)); + KEEP(Debug/debug.o (.text* .data* .bss*)); + KEEP($LD_COMMON_LIB/global.o (.text* .data* .bss* .rodata*)); + . = ALIGN(4); /* This is MUST. Ensure section size is word aligned. */ + } + + . = ALIGN(4); + .LOADER_EXEC ADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP) : + AT (LOADADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP)) + { + _loader_exec_start_base = .; + KEEP(Ctrl_Flow/main.o(.part1*)); + KEEP(Driver/rtc.o(.part1*)); + * (.part1) + _loader_exec_end_base = .; + } + _loader_exec_cpu_addr = LOADADDR(.LOADER_EXEC) + ADDR(.BOOT_EXEC); + _loader_exec_size = SIZEOF(.LOADER_EXEC); + + . = ALIGN(4); + .text $LD_BASE_ADDR: + AT (LOADADDR(.LOADER_EXEC) + SIZEOF(.LOADER_EXEC)) + { + _loader_exec_compres_start = .; + _internal_strg_param_start = .; + *(.text*) + _loader_exec_compres_end = .; + } + _loader_exec_compress_load_base = LOADADDR(.text); + _loader_exec_compress_load_cpu_addr = LOADADDR(.text) + ADDR(.BOOT_EXEC); + .ARM.exidx : + { + *(.ARM.exidx*) + *(.gnu.linkonce.armexidx.*) + } + . = ALIGN(4); + .rodata : + { + *(.rodata*) + . = ALIGN(8); /* This is MUST. Ensure ro size is 2 word aligned. */ + } + .dram_text : + AT (LOADADDR(.rodata) + SIZEOF(.rodata)) + { + _loader_dram_text_start_base = .; + * (.dram_text) + } + _loader_dram_text_cpu_addr = LOADADDR(.dram_text) + ADDR(.BOOT_EXEC); + _loader_dram_text_size = SIZEOF(.dram_text); + .data : + AT (LOADADDR(.dram_text) + SIZEOF(.dram_text)) + { + _loader_data_start_base = .; + _load_general_var_base = .; + _image_general_var_base = .; + *(.data*) + _image_general_var_limit = .; + } + _loader_data_cpu_addr = LOADADDR(.data) + ADDR(.BOOT_EXEC); + _loader_data_size = SIZEOF(.data); + .dummy : { LONG (0x00000000) } + . = ALIGN(4); + .got : { *(.got) } + . = ALIGN(4); + .bss : { /* locate bss at DRAM end */ + _image_general_zi_zi_base = .; + *(.bss) + . = ALIGN(0x4000); + _ttb = .; + . = . + 0x4000; + . = ALIGN(0x400); + _ttb_lv2 = .; + . = . + 0x400; + } + .common : + { + __common_base = ABSOLUTE(.); + /* collect "small" un-initialized global data (mark "C" in sym file) */ + *(.scommon*) + /* collect "large" un-initialized global data (mark "B" in sym file) */ + *(COMMON) + __common_limit = ABSOLUTE(.); + } + . = ALIGN(64); + _image_general_zi_zi_limit = ABSOLUTE(.); + _load_load_reset_base = .; + _image_load_reset_base = .; + _image_load_reset_length = .; + _image_load_reset_zi_base = .; + _image_load_reset_zi_limit = .; + . = ALIGN(64); + .loader_heap : + { + _loader_heap_base = .; + . += 0xA0000 + 0x20000 + 0x80000; + } + . = ALIGN(64); + _stack_start = .; + +} + +EXTERN("main" "config_dma" "Dec2HexStr") \ No newline at end of file diff --git a/board/novatek/ns02501/loader/Project/Model/LDS_NM.lds b/board/novatek/ns02501/loader/Project/Model/LDS_NM.lds new file mode 100755 index 000000000000..586d5e9998ab --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/LDS_NM.lds @@ -0,0 +1,161 @@ +/* Linker script for malta + * + * Version: Sourcery G++ Lite 4.3-221 + * Support: https://support.codesourcery.com/GNUToolchain/ + * + * Copyright (c) 2007, 2008, 2009 CodeSourcery, Inc. + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + * */ + +/* Rule: + * 1. to use .o in project layer just type the .o name with file extension. (UiFlow.o) + * 2. to use .o in library layer have to add prefix module name. (DscSystem/SysTask.o) + * */ + +OUTPUT_ARCH(arm) +ENTRY(__start) +SEARCH_DIR(.) + +SECTIONS +{ + .BOOT_EXEC 0xF07C0000|0x00000000: + AT (0) + { + _load_BOOT_EXEC_start_base = .; + KEEP(Reset/reset.o(.data*)); + Reset/reset.o(.text*); + _load_BOOT_EXEC_end_base = .; + } + .LOADER_CONFIGRAM (0xF07C0000|0x00000000) + 0x30: + AT (0x30) + { + _load_LOADER_CONFIGRAM_start_base = .; + KEEP($LD_REMAP_LIB/$LD_CONFIGRAM.o(.data*)); + _load_LOADER_CONFIGRAM_end_base = .; + _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base = .; + KEEP(Reset/configramFreqParam.o(.data*)); + _load_LOADER_CONFIGRAM_FREQ_PARAM_end_base = .; + KEEP(Reset/config_dram1_tbl.o(.rodata*)); + } + .LOADER_CONFIGRAM2 (0xF07C0000|0x00000000) + 0x200: + AT (0x200) + { + KEEP(Reset/config_dram2_tbl.o(.rodata*)); + } + .LOADER_CORE2_ENTRY_PROGRAM (0xF07C0000|0x00000000) + 0x300: + AT (0x300) + { + _load_core2_entry_program_start_base = .; + KEEP(Reset/core2_entry.o(.text)); + _load_core2_entry_program_end_base = .; + } + .internal_stg_type (0xF07C0000|0x00000000) + 0x420: { LONG (0x46495053) } + .internal_stg_version : + AT (LOADADDR(.internal_stg_type) + SIZEOF(.internal_stg_type)) + { + _load_nand_table_start_base = .; + _load_nand_table_end_base = .; + } + .LOADER_REMAP (0xF07C0000|0x00000000) + 0x430: + AT (0x430) + { + _load_vector_int_table_start_base = .; + KEEP(Reset/isr.o(.text)); + _load_vector_int_table_end_base = .; + $LD_REMAP_LIB/$LD_DOREMAP.o(.text*); + _load_LOADER_REMAP_end_base = .; + _load_vector_exp_table_start_base = .; + KEEP(Reset/exp.o(.text*)); + _load_vector_exp_table_end_base = .; + KEEP(Reset/configDDR.o(.text*)); + KEEP(Reset/configDDR.o(.rodata*)); + . = ALIGN(4); /* This is MUST. Ensure section size is word aligned. */ + } + + . = ALIGN(4); + .LOADER_EXEC : + AT (LOADADDR(.LOADER_REMAP) + SIZEOF(.LOADER_REMAP)) + { + _loader_exec_start_base = .; + KEEP(Ctrl_Flow/main.o(.part1*)); + KEEP(Driver/rtc.o(.part1*)); + * (.part1) + _loader_exec_end_base = .; + } + _loader_exec_cpu_addr = LOADADDR(.LOADER_EXEC) + ADDR(.BOOT_EXEC); + _loader_exec_size = SIZEOF(.LOADER_EXEC); + + . = ALIGN(4); + .text : + AT (LOADADDR(.LOADER_EXEC) + SIZEOF(.LOADER_EXEC)) + { + _loader_exec_compres_start = .; + _internal_strg_param_start = .; + *(.text*) + _loader_exec_compres_end = .; + } + _loader_exec_compress_load_base = LOADADDR(.text); + _loader_exec_compress_load_cpu_addr = LOADADDR(.text) + ADDR(.BOOT_EXEC); + . = ALIGN(4); + .rodata : + { + *(.rodata*) + . = ALIGN(4); /* This is MUST. Ensure ro size is word aligned. */ + } + .data 0xFF00000: + AT (LOADADDR(.rodata) + SIZEOF(.rodata)) + { + _loader_data_start_base = .; + _load_general_var_base = .; + _image_general_var_base = .; + *(.data*) + _image_general_var_limit = .; + } + _loader_data_cpu_addr = LOADADDR(.data) + ADDR(.BOOT_EXEC); + _loader_data_size = SIZEOF(.data); + .dummy : { LONG (0x00000000) } + . = ALIGN(4); + .got : { *(.got) } + . = ALIGN(4); + .bss : { /* locate bss at DRAM end */ + _image_general_zi_zi_base = .; + *(.bss) + . = ALIGN(0x4000); + _ttb = .; + . = . + 0x4000; + } + .common : + { + __common_base = ABSOLUTE(.); + /* collect "small" un-initialized global data (mark "C" in sym file) */ + *(.scommon*) + /* collect "large" un-initialized global data (mark "B" in sym file) */ + *(COMMON) + __common_limit = ABSOLUTE(.); + } + . = ALIGN(64); + _image_general_zi_zi_limit = ABSOLUTE(.); + _load_load_reset_base = .; + _image_load_reset_base = .; + _image_load_reset_length = .; + _image_load_reset_zi_base = .; + _image_load_reset_zi_limit = .; + . = ALIGN(64); + .loader_heap : + { + _loader_heap_base = .; + . += 0xA0000 + 0x20000 + 0x80000; + } + . = ALIGN(64); + _stack_start = .; + +} diff --git a/board/novatek/ns02501/loader/Project/Model/MakeConfig.txt b/board/novatek/ns02501/loader/Project/Model/MakeConfig.txt new file mode 100755 index 000000000000..660fb2073ee1 --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/MakeConfig.txt @@ -0,0 +1,1254 @@ +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +#------------------------------------------------------------------------------ +# Loader version : unsigned long loader version definition +#------------------------------------------------------------------------------ +LOADER_VERSION = 0x01000001 +BL_LOADER_VER_PARAM = \ + -D_LDR_VER_="$(LOADER_VERSION)" + +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +# +# Hardware device selection +# +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#------------------------------------------------------------------------------ +# Select main chip ID +#------------------------------------------------------------------------------ +#CHIP = 520 + +#------------------------------------------------------------------------------ +# Select chip version +#------------------------------------------------------------------------------ +#CHIP_VER = A +#CHIP_VER = B + +#------------------------------------------------------------------------------ +# Select LV1 clock rate +# LV1: 491MHz / 593MHz +#------------------------------------------------------------------------------ +#LV1_CLK = 491 +#LV1_CLK = 593 + +#------------------------------------------------------------------------------ +# Select DMA clock rate +#------------------------------------------------------------------------------ +#DMA_CLOCK = LV0 +#DMA_CLOCK = LV1 + +#ifeq "$(DMA_CLOCK)" "LV1" +#ifeq "$(LV1_CLK)" "491" +#DMA_CLOCK = LV1_4 +#else +#DMA_CLOCK = LV1_5 +#endif +#endif + +ifeq "$(CHIP)" "566" + +ifeq "$(DRAM1_CLK)" "933" +DRAM1_CLK = 933 +else ifeq "$(DRAM1_CLK)" "507" +DRAM1_CLK = 507 +else ifeq "$(DRAM1_CLK)" "760" +DRAM1_CLK = 760 +else ifeq "$(DRAM1_CLK)" "400" +DRAM1_CLK = 400 +else +DRAM1_CLK = 507 +endif + +SDRAM_SIZE = 1024 + +else ifeq "$(CHIP)" "562" + +ifeq "$(DRAM1_CLK)" "666" +DRAM1_CLK = 666 +else ifeq "$(DRAM1_CLK)" "400" +DRAM1_CLK = 400 +else +DRAM1_CLK = 522 +endif + +SDRAM_SIZE = 512 + +else ifeq "$(CHIP)" "561" + +ifeq "$(DRAM1_CLK)" "400" +DRAM1_CLK = 400 +else +DRAM1_CLK = 522 +endif +SDRAM_SIZE = 512 + +else ifeq "$(CHIP)" "563" + +ifeq "$(DRAM1_CLK)" "666" +DRAM1_CLK = 666 +else ifeq "$(DRAM1_CLK)" "400" +DRAM1_CLK = 400 +else +DRAM1_CLK = 522 +endif +SDRAM_SIZE = 512 + +else ifeq "$(CHIP)" "565" + +ifeq "$(DRAM1_CLK)" "933" +DRAM1_CLK = 933 +else ifeq "$(DRAM1_CLK)" "507" +DRAM1_CLK = 507 +else ifeq "$(DRAM1_CLK)" "760" +DRAM1_CLK = 760 +else ifeq "$(DRAM1_CLK)" "400" +DRAM1_CLK = 400 +else +DRAM1_CLK = 507 +endif + +SDRAM_SIZE = 1024 + +else +endif + +#------------------------------------------------------------------------------ +# Select DRAM Size (unit: Giga bit) +#------------------------------------------------------------------------------ +#SDRAM_SIZE = 1024 +#SDRAM_SIZE = 2048 +#SDRAM_SIZE = 4096 + +#------------------------------------------------------------------------------ +# Select DRAM Type (DDR3L curruently NOT available) +#------------------------------------------------------------------------------ +#DRAM_TYPE = DDR3 +#DRAM_TYPE = DDR3L + +#------------------------------------------------------------------------------ +# Select Phy analog block LV / HV +# (Don't modify this item) +#------------------------------------------------------------------------------ +PHY_ANALOG_HV = HV + +#------------------------------------------------------------------------------ +# CPU Core version configuration +# (Don't modify this item) +#------------------------------------------------------------------------------ +#CA53_ARCH32 +#CA9 +CPU_CORE = CA9 + +#------------------------------------------------------------------------------ +# Select internal storage device +#------------------------------------------------------------------------------ +#STORAGEINT = NandEccRS +#STORAGEINT = NandSpi +#STORAGEINT = SpiFlash + +#------------------------------------------------------------------------------ +# Select external storage device +#------------------------------------------------------------------------------ +#STORAGEEXT = Sdio1 +#STORAGEEXT = Sdio2 +#STORAGEEXT = Usb + +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +# +# Software function selection +# +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +#------------------------------------------------------------------------------ +# Dram range scan loader support enable +# (Don't modify this item) +#------------------------------------------------------------------------------ +DRAM_RANGE_SCAN_SUPPORT_EN = ENABLE +#DRAM_RANGE_SCAN_SUPPORT_EN = DISABLE + +#------------------------------------------------------------------------------ +# Select GUI interface display or not +#------------------------------------------------------------------------------ +# [CONFIG_RAM_GUI_EN] +# ENABLE +# DISABLE +CONFIG_RAM_GUI_EN = DISABLE + +#------------------------------------------------------------------------------ +# Set binary file build name +#------------------------------------------------------------------------------ +CHIP_SHORT = $(shell echo $(CHIP)|awk '{print substr($$0,1,3)}') +ifeq "$(CHIP)" "532QB" +BIN_NAME = LD98532A +else ifeq "$(CHIP)" "532QC" +BIN_NAME = LD98532A +else ifeq "$(CHIP)" "532QD" +BIN_NAME = LD98532A +else ifeq "$(CHIP)" "533QB" +BIN_NAME = LD98533A +else ifeq "$(CHIP)" "533QC" +BIN_NAME = LD98533A +else ifeq "$(CHIP)" "533QD" +BIN_NAME = LD98533A +else ifeq "$(CHIP)" "532BC" +BIN_NAME = LD98532A +else ifeq "$(CHIP)" "532BD" +BIN_NAME = LD98532A +else ifeq "$(CHIP)" "532BE" +BIN_NAME = LD98532A +else ifeq "$(CHIP)" "533BC" +BIN_NAME = LD98533A +else ifeq "$(CHIP)" "533BD" +BIN_NAME = LD98533A +else ifeq "$(CHIP)" "533BE" +BIN_NAME = LD98533A +endif +ifeq "$(STORAGEEXT)" "Eth" +LDR_NAME = loader +else +LDR_NAME = $(BIN_NAME) +endif +BL_UPDATE_CALNAME = FW96$(CHIP_SHORT)C.BIN +BL_CALIBRATION_FWNAME = CALFW680.BIN +TMP_NAME = LD96$(CHIP)1 + +#------------------------------------------------------------------------------ +# 1st NAND configuration support list +#------------------------------------------------------------------------------ +ifeq "$(LOADER_SUPPORT_NAND_1st)" "DEFAULT_NAND_TYPE" + _LOADER_NAND_SUPPORT_NAND_1st_ = default_1 +else +ifeq "$(LOADER_SUPPORT_NAND_1st)" "" + _LOADER_NAND_SUPPORT_NAND_1st_ = default_1 +else + _LOADER_NAND_SUPPORT_NAND_1st_ = $(LOADER_SUPPORT_NAND_1st) +endif +endif +#------------------------------------------------------------------------------ +# 1st NAND configuration support list +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# 2nd NAND configuration support list +#------------------------------------------------------------------------------ +ifeq "$(LOADER_SUPPORT_NAND_2nd)" "DEFAULT_NAND_TYPE" + _LOADER_NAND_SUPPORT_NAND_2nd_=default_2 +else +ifeq "$(LOADER_SUPPORT_NAND_2nd)" "" + _LOADER_NAND_SUPPORT_NAND_2nd_ = default_2 +else + _LOADER_NAND_SUPPORT_NAND_2nd_ = $(LOADER_SUPPORT_NAND_2nd) +endif +endif +#------------------------------------------------------------------------------ +# 2nd NAND configuration support list +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# 3rd NAND configuration support list +#------------------------------------------------------------------------------ +ifeq "$(LOADER_SUPPORT_NAND_3rd)" "DEFAULT_NAND_TYPE" + _LOADER_NAND_SUPPORT_NAND_3rd_ = default_3 +else +ifeq "$(LOADER_SUPPORT_NAND_3rd)" "" + _LOADER_NAND_SUPPORT_NAND_3rd_ = default_3 +else + _LOADER_NAND_SUPPORT_NAND_3rd_ = $(LOADER_SUPPORT_NAND_3rd) +endif +endif + +#------------------------------------------------------------------------------ +# 3rd NAND configuration support list +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Set bootloader specific strings +#------------------------------------------------------------------------------ +STR_MODEL = $(MODEL_DESC) +STR_DATE = $(shell date +%m/%d/%Y) +STR_TIME = $(shell date +%H:%M:%S) + +BL_START = "Loader NT98$(CHIP) Start ..." +BL_UPDATE_LOADERNAME = $(BIN_NAME).BIN +ifeq "$(CHIP)" "575" +BL_UPDATE_FWNAME := FW96575A.BIN +BL_UPDATE_CALNAME := FW96575C.BIN +BL_RUN_FWNAME := FW96575T.BIN +BL_CALIBRATION_FWNAME := CALFW575.BIN +BL_START = "Loader NT96$(CHIP) Start ..." +else ifeq "$(CHIP)" "570" +BL_UPDATE_FWNAME := FW96570A.BIN +BL_UPDATE_CALNAME := FW96570C.BIN +BL_RUN_FWNAME := FW96570T.BIN +BL_CALIBRATION_FWNAME := CALFW570.BIN +BL_START = "Loader NT96$(CHIP) Start ..." +else ifeq "$(CHIP)" "580" +BL_UPDATE_FWNAME := FW96580A.BIN +BL_UPDATE_CALNAME := FW96580C.BIN +BL_RUN_FWNAME := FW96580T.BIN +BL_CALIBRATION_FWNAME := CALFW580.BIN +BL_START = "Loader NT96$(CHIP) Start ..." +endif +ifeq "$(CHIP)" "523_A" +BL_UPDATE_FWNAME := FW523_AA.BIN +BL_UPDATE_CALNAME := FW523_AC.BIN +BL_RUN_FWNAME := FW523_AT.BIN +BL_CALIBRATION_FWNAME := CALFW523.BIN +BL_START = "Loader NT98$(CHIP) Start ..." +endif + +BL_WRKEY_FWNAME := WRKEY.BIN +BL_UBOOT_FWNAME := UBOOTBIN.BIN + +ifeq "$(CHIP)" "532QB" +SDRAM_SIZE = 512 +else ifeq "$(CHIP)" "532QC" +SDRAM_SIZE = 1024 +else ifeq "$(CHIP)" "532QD" +SDRAM_SIZE = 2048 +else ifeq "$(CHIP)" "533QB" +SDRAM_SIZE = 512 +else ifeq "$(CHIP)" "533QC" +SDRAM_SIZE = 1024 +else ifeq "$(CHIP)" "533QD" +SDRAM_SIZE = 2048 +else ifeq "$(CHIP)" "532BC" +SDRAM_SIZE = 1024 +else ifeq "$(CHIP)" "532BD" +SDRAM_SIZE = 2048 +else ifeq "$(CHIP)" "532BE" +SDRAM_SIZE = 4096 +else ifeq "$(CHIP)" "533BC" +SDRAM_SIZE = 1024 +else ifeq "$(CHIP)" "533BD" +SDRAM_SIZE = 2048 +else ifeq "$(CHIP)" "533BE" +SDRAM_SIZE = 4096 +endif +ifneq "$(DRAM_2ND_TBL_DETECT)" "Normal" +MODEL_DESC2 = "$(CHIP)$(CHIP_VER)_DRAM1_$(DRAM1_2ND_CLK)_$(SDRAM_2ND_SIZE)Mb" +BL_VERSION2 = "$(MODEL_DESC2) $(STR_DATE) $(STR_TIME)" +endif + +ifeq "$(NC520_525_COMBO)" "ON" +MODEL_DESC = "$(CHIP)$(CHIP_VER)_DRAM1_$(DRAM1_CLK)_$(SDRAM_SIZE)Mb_DRAM2_$(DRAM2_CLK)_$(SDRAM2_SIZE)Mb_combo_NC520_DRAM1_$(NC520_COMBO_DRAM1_CLK)_$(NC520_COMBO_SDRAM_SIZE)Mb_DRAM2_NULL" +else +MODEL_DESC = "$(CHIP)$(CHIP_VER)_DRAM1_$(DRAM1_CLK)_$(SDRAM_SIZE)Mb" +endif +BL_VERSION = "$(MODEL_DESC) $(STR_DATE) $(STR_TIME)" + +#------------------------------------------------------------------------------ +# Select bootloader compression +# (Don't modify this item) +#------------------------------------------------------------------------------ +# [BL_COMPRESS] +# ENABLE +# DISABLE +BL_COMPRESS = ENABLE + +# ------------------------------------------------------------------------------ +# Calibration part compress +# ------------------------------------------------------------------------------ +# [CALIBRTION_COMPRESS] +# ENABLE +# DISABLE +CALIBRTION_COMPRESS = DISABLE + +# ------------------------------------------------------------------------------ +# Compress part checksum after uncompress +# ------------------------------------------------------------------------------ +# [PROCESS_2ND_CHECKSUM] +# ENABLE +# DISABLE +PROCESS_2ND_CHKSUM_EN = ENABLE + + +#Do not modify this parameter 0x08 if loader compress enabled +# [UNCOMPRESSEDPART_SIZE_OFFSET] +# 0x60 +# 0x08 +UNCOMPRESSEDPART_SIZE_OFFSET = 0x08 + +#------------------------------------------------------------------------------ +# Select compressable f/w (main code) +#------------------------------------------------------------------------------ +# [MAINCODE_COMPRESS] +# ENABLE +# DISABLE +MAINCODE_COMPRESS = DISABLE + +#------------------------------------------------------------------------------ +# Select firmware image checksum validation +#------------------------------------------------------------------------------ +# [CHKFWIMAGE] +# NOCHECK +# CHECKSUM +# CRC +CHKFWIMAGE = CHECKSUM + +#------------------------------------------------------------------------------ +# Select loader flow +# (Don't modify this item) +#------------------------------------------------------------------------------ +# [LOADER_FLOW ] +# NORMAL_LDR_FLOW +# MODULE_TST_FLOW +LOADER_FLOW = NORMAL_LDR_FLOW + +ifeq "$(LOADER_FLOW)" "NORMAL_LDR_FLOW" +BL_LOADER_FLOW = 0 +else +BL_LOADER_FLOW = 1 +endif + +BL_LOADER_FLOW_PARAM = \ +-D_BL_MAIN_SPECIAL_FLOW_=$(BL_LOADER_FLOW) + +#------------------------------------------------------------------------------ +# Select Duty calibration ENABLE / DISABLE +#------------------------------------------------------------------------------ +DUTY_CALIBRATION = DISABLE + +#------------------------------------------------------------------------------ +# Select Duty calibration type +# (Don't modify this item) +#------------------------------------------------------------------------------ +# [DUTY_CALIBRATION_TYPE ] +# AUTO +# MANUAL +DUTY_CALIBRATION_TYPE = AUTO + +ifeq "$(DUTY_CALIBRATION_TYPE)" "AUTO" +BL_DUTY_CALIBRATION_TYPE = 0 +else +BL_DUTY_CALIBRATION_TYPE = 1 +endif + +BL_DUTY_CALIBRATION_TYPE_PARAM = \ +-D_LOADER_DUTY_CALIBRATION_TYPE_=$(BL_DUTY_CALIBRATION_TYPE) + +#------------------------------------------------------------------------------ +# Select Duty calibration LOG ENABLE / DISABLE +#------------------------------------------------------------------------------ +# [DUTY_CALIBRATION_LOG] +# ENABLE +# DISABLE +DUTY_CALIBRATION_LOG = DISABLE + +ifeq "$(LOADER_FLOW)" "MODULE_TST_FLOW" +DUTY_CALIBRATION = DISABLE +endif + +ifeq "$(DUTY_CALIBRATION)" "DISABLE" +DUTY_CALIBRATION_LOG = DISABLE +else +ifeq "$(DUTY_CALIBRATION_TYPE)" "MANUAL" +DUTY_CALIBRATION_LOG = DISABLE +endif +endif + +ifeq "$(DUTY_CALIBRATION)" "ENABLE" +BL_DUTY_CALIBRATION = 1 +else +BL_DUTY_CALIBRATION = 0 +endif + +ifeq "$(DUTY_CALIBRATION_LOG)" "ENABLE" +BL_DUTY_CALIBRATION_LOG = 1 +else +BL_DUTY_CALIBRATION_LOG = 0 +endif + +BL_DUTY_CALIBRATION_PARAM = \ +-D_LOADER_DUTY_CALIBRATION_LOG_=$(BL_DUTY_CALIBRATION_LOG)\ +-D_LOADER_DUTY_CALIBRATION_=$(BL_DUTY_CALIBRATION) + + +#------------------------------------------------------------------------------ +# Bootloader update image file name parameters +#------------------------------------------------------------------------------ +BL_UPDATE_NAME_PARAM = \ + -D_UPDATE_FW_NAME_=\"$(BL_UPDATE_FWNAME)\" \ + -D_UPDATE_LOADER_NAME_=\"$(BL_UPDATE_LOADERNAME)\" \ + -D_RUN_FW_NAME_=\"$(BL_RUN_FWNAME)\" \ + -D_UPDATE_CALFW_NAME_=\"$(BL_UPDATE_CALNAME)\"\ + -D_RUN_CAL_FW_NAME_=\"$(BL_CALIBRATION_FWNAME)\" \ + -D_WR_KEY_FW_NAME_=\"$(BL_WRKEY_FWNAME)\" \ + -D_RUN_UBOOT_NAME_=\"$(BL_UBOOT_FWNAME)\" + + +#------------------------------------------------------------------------------ +# Bootloader specific strings parameters +#------------------------------------------------------------------------------ +BL_STRINGS_PARAM = \ +-D_LOADER_VERSION_STR_=\"\\\r\\\n$(BL_VERSION)\\\r\\\n\\\r\\\n\" \ +-D_LOADER_VERSION_STR2_=\"\\\r\\\n$(BL_VERSION2)\\\r\\\n\\\r\\\n\" \ +-D_LOADER_START_STR_=\"\\\r\\\n$(BL_START)\\\r\\\n\" + +#------------------------------------------------------------------------------ +# Bootloader compression parameters +#------------------------------------------------------------------------------ +ifeq "$(BL_COMPRESS)" "ENABLE" + BL_COMPRESS_CFG = 1 + ifeq "$(CHIP)" "532QB" + RESETFLAG = LZ532 + else ifeq "$(CHIP)" "532QC" + RESETFLAG = LZ532 + else ifeq "$(CHIP)" "532QD" + RESETFLAG = LZ532 + else ifeq "$(CHIP)" "532BC" + RESETFLAG = LZ532 + else ifeq "$(CHIP)" "532BD" + RESETFLAG = LZ532 + else ifeq "$(CHIP)" "532BE" + RESETFLAG = LZ532 + else ifeq "$(CHIP)" "533QB" + RESETFLAG = LZ533 + else ifeq "$(CHIP)" "533QC" + RESETFLAG = LZ533 + else ifeq "$(CHIP)" "533QD" + RESETFLAG = LZ533 + else ifeq "$(CHIP)" "533BC" + RESETFLAG = LZ533 + else ifeq "$(CHIP)" "533BD" + RESETFLAG = LZ533 + else ifeq "$(CHIP)" "533BE" + RESETFLAG = LZ533 + else + RESETFLAG = LZ + endif + + ifeq "$(CHIP)" "532QB" + RESETCHIP = 533 + SCATTER_EXT= + else ifeq "$(CHIP)" "532QC" + RESETCHIP = 533 + SCATTER_EXT= + else ifeq "$(CHIP)" "532QD" + RESETCHIP = 533 + SCATTER_EXT= + else ifeq "$(CHIP)" "532BC" + RESETCHIP = 533 + SCATTER_EXT= + else ifeq "$(CHIP)" "532BD" + RESETCHIP = 533 + SCATTER_EXT= + else ifeq "$(CHIP)" "532BE" + RESETCHIP = 533 + SCATTER_EXT= + else ifeq "$(CHIP)" "533QB" + RESETCHIP = 533 + SCATTER_EXT= + else ifeq "$(CHIP)" "533QC" + RESETCHIP = 533 + SCATTER_EXT= + else ifeq "$(CHIP)" "533QD" + RESETCHIP = 533 + SCATTER_EXT= + else ifeq "$(CHIP)" "533BC" + RESETCHIP = 533 + SCATTER_EXT= + else ifeq "$(CHIP)" "533BD" + RESETCHIP = 533 + SCATTER_EXT= + else ifeq "$(CHIP)" "533BE" + RESETCHIP = 533 + SCATTER_EXT= + else + RESETCHIP = 533 + SCATTER_EXT= + endif + + ifeq "$(EXFAT_FILESYSTEM_SUPPORT)" "EXFAT" + COMMON_LIB = exFAT + else + COMMON_LIB = normal + endif + +else + BL_COMPRESS_CFG = 0 + ifeq "$(CHIP)" "560" + RESETFLAG = NM560 + else + RESETFLAG = NM + endif + + ifeq "$(CHIP)" "560" + RESETCHIP = 560 + else + RESETCHIP = 56x + endif + + ifeq "$(EXFAT_FILESYSTEM_SUPPORT)" "EXFAT" + COMMON_LIB = exFAT + else + COMMON_LIB = normal + endif +endif + +ifeq "$(MAINCODE_COMPRESS)" "ENABLE" + FWCOMPRESS_PARAM = -D_MAINCODE_COMPRESS_=1 +else + FWCOMPRESS_PARAM = -D_MAINCODE_COMPRESS_=0 +endif + +BL_COMPRESS_PARAM = \ +-D_LOADER_COMPRESSED_=$(BL_COMPRESS_CFG) + +BL_COMPRESS_PARAM_ASM = +#\ +#-PD "_LOADER_COMPRESSED_ SETA $(BL_COMPRESS_CFG)" + +#------------------------------------------------------------------------------ +# Firmware image checksum validation parameters +#------------------------------------------------------------------------------ +ifeq "$(CHKFWIMAGE)" "NOCHECK" + CHKFWIMAGE_CFG = FW_CHECK_NOCHECK +endif + +ifeq "$(CHKFWIMAGE)" "CHECKSUM" + CHKFWIMAGE_CFG = FW_CHECK_CHECKSUM +endif + +ifeq "$(CHKFWIMAGE)" "CRC" + CHKFWIMAGE_CFG = FW_CHECK_CRC +endif + +CHKFWIMAGE_PARAM = \ + -DFW_CHECK_NOCHECK=0 \ + -DFW_CHECK_CHECKSUM=1 \ + -DFW_CHECK_CRC=2 \ + -DFW_CHECK_METHOD=$(CHKFWIMAGE_CFG) + +#------------------------------------------------------------------------------ +# External Storage define +#------------------------------------------------------------------------------ + +ifeq "$(STORAGEINT)" "EMMC_NAND_COMBO" +ifeq "$(STORAGEEXT)" "NONE" +else +$(error STORAGEEXT MUST = [NONE] if STORAGEINT= [EMMC_NAND_COMBO]=>Please check [ModelConfig_EMU_EVB.txt] configuration) +endif +endif + + +ifeq "$(STORAGEEXT)" "Sdio1" + STORAGE_EXT_TYPE = STORAGE_EXT_SDIO1 +else ifeq "$(STORAGEEXT)" "Sdio2" + STORAGE_EXT_TYPE = STORAGE_EXT_SDIO2 +else ifeq "$(STORAGEEXT)" "Usb" + STORAGE_EXT_TYPE = STORAGE_EXT_USB +else ifeq "$(STORAGEEXT)" "Eth" + STORAGE_EXT_TYPE = STORAGE_EXT_ETH +else ifeq "$(STORAGEEXT)" "Uart" + STORAGE_EXT_TYPE = STORAGE_EXT_UART +else ifeq "$(STORAGEEXT)" "NONE" + STORAGE_EXT_TYPE = STORAGE_EXT_NONE +else + STORAGE_EXT_TYPE = STORAGE_EXT_UNKOWN +endif + +EXTSTRG_PARAM = \ + -DSTORAGE_EXT_UNKOWN=0 \ + -DSTORAGE_EXT_SDIO1=1 \ + -DSTORAGE_EXT_SDIO2=2 \ + -DSTORAGE_EXT_UART=3 \ + -DSTORAGE_EXT_USB=4 \ + -DSTORAGE_EXT_ETH=5 \ + -DSTORAGE_EXT_NONE=6\ + -DSTORAGE_EXT_TYPE=$(STORAGE_EXT_TYPE) + +#------------------------------------------------------------------------------ +# SPI define +#------------------------------------------------------------------------------ +ifeq "$(STORAGEINT)" "SpiFlash" + STORAGE_INT_TYPE = -DSTORAGEINT_SPI=1 +else + STORAGE_INT_TYPE = +endif + +ifeq "$(SPI_SETTING)" "SPI_4BITS" + SPI_PINMUX = SPI_PINMUX_4BITS +endif + +ifeq "$(SPI_SETTING)" "SPI_NORMAL" + SPI_PINMUX = SPI_PINMUX_NORMAL +endif + +ifeq "$(SPI_SETTING)" "SPI_8BITS" + SPI_PINMUX = SPI_PINMUX_NORMAL +endif + +SPIPINMUX_PARAM = \ + -DSPI_PINMUX_NORMAL=0 \ + -DSPI_PINMUX_4BITS=1 \ + -DSPI_PINMUX_SETTING=$(SPI_PINMUX) + +#------------------------------------------------------------------------------ +# EMMC define +#------------------------------------------------------------------------------ +ifeq "$(EMMC_SETTING)" "EMMC_8BITS" + EMMC_PINMUX = EMMC_PINMUX_8BITS +endif + +ifeq "$(EMMC_SETTING)" "EMMC_4BITS" + EMMC_PINMUX = EMMC_PINMUX_4BITS +endif + +ifeq "$(EMMC_SETTING)" "" + EMMC_PINMUX = EMMC_PINMUX_8BITS +endif + +EMMCPINMUX_PARAM = \ + -DEMMC_PINMUX_4BITS=0 \ + -DEMMC_PINMUX_8BITS=1 \ + -DEMMC_PINMUX_SETTING=$(EMMC_PINMUX) + +#------------------------------------------------------------------------------ +# Dram range scan support enable parameters +#------------------------------------------------------------------------------ +ifeq "$(DRAM_RANGE_SCAN_SUPPORT_EN)" "ENABLE" + DRAM_SCAN_EN = 1 +else + DRAM_SCAN_EN = 0 +endif + +DRAMSCAN_PARAM = -DDRAM_RANGE_SCAN_EN=$(DRAM_SCAN_EN) + +#------------------------------------------------------------------------------ +# Chip ID related parameters +#------------------------------------------------------------------------------ +ifeq "$(CHIP)" "532QB" + CHIPID = 533 + else ifeq "$(CHIP)" "532QC" + CHIPID = 533 + else ifeq "$(CHIP)" "532QD" + CHIPID = 533 + else ifeq "$(CHIP)" "532BC" + CHIPID = 533 + else ifeq "$(CHIP)" "532BD" + CHIPID = 533 + else ifeq "$(CHIP)" "532BE" + CHIPID = 533 + else ifeq "$(CHIP)" "533QB" + CHIPID = 533 + else ifeq "$(CHIP)" "533QC" + CHIPID = 533 + else ifeq "$(CHIP)" "533QD" + CHIPID = 533 + else ifeq "$(CHIP)" "533BC" + CHIPID = 533 + else ifeq "$(CHIP)" "533BD" + CHIPID = 533 + else ifeq "$(CHIP)" "533BE" + CHIPID = 533 +else +CHIPID = 533 +endif + +#------------------------------------------------------------------------------ +# Secure boot parameters +#------------------------------------------------------------------------------ +ifeq "$(SECUREBOOT)" "Secure" +SECUREBOOT_MSG = 0 +KMS_SERVER_MODEL = 0 +ifeq "$(SIGNATUREMETHOD)" "AES128" + #Secure enable + AES signature + SECURE_BOOT = 1 +else + #Secure enable + RSA signature + ifeq "$(SIGNATUREMETHOD)" "RSA2048" + SECURE_BOOT = 2 + ifeq "$(HSM_SIMULATOR)" "HSM_SIMULATOR" + KMS_SERVER_MODEL = 1 + else + KMS_SERVER_MODEL = 0 + endif + else + ifeq "$(SIGNATUREMETHOD)" "RSA2048PSS" + SECURE_BOOT = 3 + else + ifeq "$(SIGNATUREMETHOD)" "ECDSA256" + SECURE_BOOT = 4 + else + ifeq "$(SIGNATUREMETHOD)" "RSA2048PKCS1P5" + SECURE_BOOT = 6 + else + SECURE_BOOT = 5 + endif + endif + endif + endif +endif + +ifeq "$(ENCRYPTDATA)" "AES128" +ENCRYPT_DATA = 1 +#Determine encrypt data key usage(1~5) +ifeq "$(ENCRYPTDATA_KEY_SEL)" "1st_key_set" +ENCRYPTDATA_KEY_SET = 0 +endif +ifeq "$(ENCRYPTDATA_KEY_SEL)" "2nd_key_set" +ENCRYPTDATA_KEY_SET = 1 +endif +ifeq "$(ENCRYPTDATA_KEY_SEL)" "3rd_key_set" +ENCRYPTDATA_KEY_SET = 2 +endif +ifeq "$(ENCRYPTDATA_KEY_SEL)" "4th_key_set" +ENCRYPTDATA_KEY_SET = 3 +endif +ifeq "$(ENCRYPTDATA_KEY_SEL)" "5th_key_set" +ENCRYPTDATA_KEY_SET = 4 +endif +else +ENCRYPT_DATA = 0 +ENCRYPTDATA_KEY_SET = 0 +endif + +else +SECURE_BOOT = 0 +ENCRYPTDATA_KEY_SET = 0 +endif + +ifeq "$(BYPASS_SIMPLE_CHKSUM)" "ENABLE" +SIMPLE_CHKSUM_SKIP = ENABLE +else +SIMPLE_CHKSUM_SKIP = DISABLE +endif + + +ifeq "$(CIPHER_ENCRYPT_SEQ)" "ENABLE" +SIGNATURE_FIRST = 1 +else +SIGNATURE_FIRST = 0 +endif + +#------------------------------------------------------------------------------ +# DRAM ini file name generation +#------------------------------------------------------------------------------ +#ifeq "$(DRAM_TYPE)" "DDR3L" +# ifeq "$(DMA_CLOCK)" "LV0" +# $(error DDR3L only support DMA_CLOCK = LV1) +# endif +# ifeq "$(LV1_CLK)" "373" +# $(error DDR3L only support LV1_CLK = 400) +# endif +# DDR_FILE_STR = _DDR3L +#else +# DDR_FILE_STR = +#endif + +ifeq "$(DMA_CLOCK)" "LV0" + +DDR_INI_STR = $(CHIP)/51055A_DRAM1_$(DRAM1_CLK)_$(SDRAM_SIZE).ini +#DDR_INI2_STR = $(CHIP)/51055A_DRAM2_$(DRAM2_CLK)_$(SDRAM2_SIZE).ini +#DDR_INI_STR = 680_$(CHIP_VER)_LV0_$(SDRAM_SIZE).ini +ifeq "$(LV1_CLK)" "491" +#DDR_INI2_STR = 680_$(CHIP_VER)_LV1_4_$(SDRAM_SIZE).ini +else +#DDR_INI2_STR = 680_$(CHIP_VER)_LV1_5_$(SDRAM_SIZE).ini +endif + +else + +ifneq "$(DRAM_2ND_TBL_DETECT)" "Normal" + +DDR_INI_STR = $(CHIP)/02501A_DRAM1_$(DRAM1_CLK)_$(SDRAM_SIZE).ini +#DDR_INI2_STR = $(CHIP)/02501A_DRAM2_$(DRAM2_CLK)_$(SDRAM2_SIZE).ini + +DDR_INI_STR2 = $(CHIP)/02501A_DRAM1_$(DRAM1_2ND_CLK)_$(SDRAM_2ND_SIZE).ini +#DDR_INI2_STR2 = $(CHIP)/02501A_DRAM2_$(DRAM2_2ND_CLK)_$(SDRAM2_2ND_SIZE).ini + +2ND_INI = $(DRAM_2ND_TBL_DETECT) +GPIO_NUM = $(DRAM_2ND_TBL_DETECT_GPIO_NO) + +else + +DDR_INI_STR = $(CHIP)/02501A_DRAM1_$(DRAM1_CLK)_$(SDRAM_SIZE).ini +#DR_INI2_STR = $(CHIP)/02501A_DRAM2_$(DRAM2_CLK)_$(SDRAM2_SIZE).ini + + +2ND_INI = "" +GPIO_NUM = 0 + +endif +endif + +ifeq "$(DRAM1_POWEROFF_S3)" "Enabled" +DRAM1_RST_PARAM = 1 +else +DRAM1_RST_PARAM = 0 +endif + + +ifeq "$(DRAM_SSC_ENABLE)" "Normal" +DRAM_SSC_PARAM = 0 +else ifeq "$(DRAM_SSC_ENABLE)" "1" +DRAM_SSC_PARAM = 1 +else ifeq "$(DRAM_SSC_ENABLE)" "2" +DRAM_SSC_PARAM = 2 +else ifeq "$(DRAM_SSC_ENABLE)" "3" +DRAM_SSC_PARAM = 3 +else ifeq "$(DRAM_SSC_ENABLE)" "4" +DRAM_SSC_PARAM = 4 +else ifeq "$(DRAM_SSC_ENABLE)" "5" +DRAM_SSC_PARAM = 5 +else +DRAM_SSC_PARAM = 0 +endif + +ifeq "$(DRAM_ODT)" "Normal" +ODT_SELECT = "" +else ifeq "$(DRAM_ODT)" "Enable" +ODT_SELECT = "ENABLE" +else ifeq "$(DRAM_ODT)" "Disable" +ODT_SELECT = "DISABLE" +else +ODT_SELECT = "" +endif + +ifeq "$(DRAM_TX_DRV)" "Normal" +TX_DRV = "" +else ifeq "$(DRAM_TX_DRV)" "Enable" +TX_DRV = "ENABLE" +else +TX_DRV = "" +endif + +ifeq "$(DRAM_LDO)" "Normal" +DDR_LDO = "" +else ifeq "$(DRAM_LDO)" "Enable" +DDR_LDO = "ENABLE" +else +DDR_LDO = "" +endif + +ifeq "$(MPLL_LDO)" "Normal" +PLL_LDO = "" +else ifeq "$(MPLL_LDO)" "Enable" +PLL_LDO = "ENABLE" +else +PLL_LDO = "" +endif + +ifeq "$(DRAM_RX_PAD)" "Normal" +RX_PAD = "" +else ifeq "$(DRAM_RX_PAD)" "Enable" +RX_PAD = "ENABLE" +else +RX_PAD = "" +endif + +#------------------------------------------------------------------------------- +# set the scatter file name here +#------------------------------------------------------------------------------- +ifeq "$(SECUREBOOT)" "Normal" +HEADER_SIGNATURE = DISABLE +endif + +#ifeq "$(BL_COMPRESS)" "ENABLE" +#SCATTER = LDS_LZ$(SCATTER_EXT)$(SCATTER_SUFFIX).lds +#else +#SCATTER = LDS_NM.lds +#endif + +ifeq "$(BL_COMPRESS)" "ENABLE" + ifeq "$(CALIBRTION_COMPRESS)" "ENABLE" + _CALIBRATION_COMPRESS_ = 1 + _PROCESS_2ND_CHKSUM_ = 0 + ifeq "$(HEADER_SIGNATURE)" "ENABLE" + _HEADER_SIGN_ = 1 + SCATTER = LDS_LZ_CALI_HDR_SIGN.lds + else + _HEADER_SIGN_ = 0 + SCATTER = LDS_LZ_CALI.lds + endif + else + _CALIBRATION_COMPRESS_ = 0 + ifeq "$(HEADER_SIGNATURE)" "ENABLE" + _HEADER_SIGN_ = 1 + SCATTER = LDS_LZ$(SCATTER_EXT)_HDR_SIGN.lds + else + _HEADER_SIGN_ = 0 + SCATTER = LDS_LZ$(SCATTER_EXT)$(SCATTER_SUFFIX).lds + endif + + ifeq "$(PROCESS_2ND_CHKSUM_EN)" "ENABLE" + _PROCESS_2ND_CHKSUM_ = 1 + else + _PROCESS_2ND_CHKSUM_ = 0 + endif + endif +else +_CALIBRATION_COMPRESS_ = 0 +SCATTER = LDS_NM.lds +endif + +CALIBRATION_COMPRESS_PARAM = \ + -DCOMPRESS_CALIBRATION_EN=$(_CALIBRATION_COMPRESS_) + +PROCESS_2ND_CHKSUM_EN_PARAM = \ + -D_PROCESS_2ND_CHECKSUM_=$(_PROCESS_2ND_CHKSUM_) + +#------------------------------------------------------------------------------- +# set loader execution DRAM address +#------------------------------------------------------------------------------- +# 255MB +ifeq "$(SDRAM_SIZE)" "512" +LD_BASE_ADDR = 0x3C00000 +else ifeq "$(SDRAM_SIZE)" "1024" +LD_BASE_ADDR = 0x7C00000 +else ifeq "$(SDRAM_SIZE)" "2048" +LD_BASE_ADDR = 0xFC00000 +else +LD_BASE_ADDR = 0xFC00000 +endif +BL_LDADDR_PARAM = \ +-DLD_BASE_ADDR=$(LD_BASE_ADDR) + +#------------------------------------------------------------------------------- +# set loader internal storage type +#------------------------------------------------------------------------------- +BL_STORAGEINT_PARAM = \ +-D_STORAGEINT_$(STORAGEINT)_ + +#------------------------------------------------------------------------------- +# Model parameters +#------------------------------------------------------------------------------- +ifeq "$(MODEL)" "EMU_EVB" + MODEL_TYPE = _MODEL_EMU_EVB_ +endif + +ifeq "$(MODEL)" "DEMO1_EVB" + MODEL_TYPE = _MODEL_DEMO1_EVB_ +endif + +ifeq "$(MODEL)" "ARTOSYN_EVB" + MODEL_TYPE = _MODEL_ARTOSYN_EVB_ +endif +MODEL_PARAM = \ + -D_MODEL_EMU_EVB_=0 \ + -D_MODEL_DEMO1_EVB_=1 \ + -D_MODEL_ARTOSYN_EVB_=2 \ + -D_MODEL_DSC_=$(MODEL_TYPE) + +#------------------------------------------------------------------------------- +# uboot encrypt binary or not parameters +#------------------------------------------------------------------------------- +ifeq "$(SECUREBOOT_DECRYPT_UBOOT)" "Normal" + UBOOT_DECRYPT_TYPE = _SECURE_DECRYPT_UBOOT_DISABLE_ +else ifeq "$(SECUREBOOT_DECRYPT_UBOOT)" "Secure" + UBOOT_DECRYPT_TYPE = _SECURE_DECRYPT_UBOOT_ENABLE_ +else + UBOOT_DECRYPT_TYPE = _SECURE_DECRYPT_UBOOT_DISABLE_ +endif + +SECURE_DECRYPT_UBOOT_PARAM = \ + -D_SECURE_DECRYPT_UBOOT_DISABLE_=0 \ + -D_SECURE_DECRYPT_UBOOT_ENABLE_=1 \ + -DSECURE_DECRYPT_UBOOT=$(UBOOT_DECRYPT_TYPE) + +#------------------------------------------------------------------------------- +# optee parameters +#------------------------------------------------------------------------------- +ifeq "$(SECUREBOOT_DECRYPT_OPTEE)" "Normal" + OPTEE_DECRYPT_TYPE = _SECURE_DECRYPT_OPTEE_DISABLE_ +else ifeq "$(SECUREBOOT_DECRYPT_UBOOT)" "Secure" + OPTEE_DECRYPT_TYPE = _SECURE_DECRYPT_OPTEE_ENABLE_ +else + OPTEE_DECRYPT_TYPE = _SECURE_DECRYPT_OPTEE_DISABLE_ +endif + + +SECURE_DECRYPT_OPTEE_PARAM = \ + -D_SECURE_DECRYPT_OPTEE_DISABLE_=0 \ + -D_SECURE_DECRYPT_OPTEE_ENABLE_=1 \ + -DSECURE_DECRYPT_OPTEE_OS=$(OPTEE_DECRYPT_TYPE) + + +#------------------------------------------------------------------------------- +# optee or uboot digital signature parameters +#------------------------------------------------------------------------------- +ifeq "$(SIGNATUREMETHOD)" "AES128" +# => AES signature +OPTEE_UBOOT_DIGITAL_SIGNATURE_TYPE = _UBOOT_OPTEE_SIGNATURE_USE_AES128_ +else ifeq "$(SIGNATUREMETHOD)" "ECDSA256" +# => ecdsa signature +OPTEE_UBOOT_DIGITAL_SIGNATURE_TYPE = _UBOOT_OPTEE_SIGNATURE_USE_ECDSA_ +else +# => RSA signature +OPTEE_UBOOT_DIGITAL_SIGNATURE_TYPE = _UBOOT_OPTEE_SIGNATURE_USE_RSA_ +endif + +OPTEE_UBOOT_SIGNATURE_PARAM = \ + -D_UBOOT_OPTEE_SIGNATURE_USE_RSA_=0 \ + -D_UBOOT_OPTEE_SIGNATURE_USE_AES128_=1 \ + -D_UBOOT_OPTEE_SIGNATURE_USE_ECDSA_=2 \ + -DSECURE_SIGNATURE_TYPE=$(OPTEE_UBOOT_DIGITAL_SIGNATURE_TYPE) + +#------------------------------------------------------------------------------- +# DTR support +#------------------------------------------------------------------------------- +ifeq "$(SPINOR_DTR)" "ENABLE" +SPINOR_USE_DTR = 1 +else +SPINOR_USE_DTR = 0 +endif + +NOR_DTR_PARAM = \ + -D_NOR_DTR_PARAM_=$(SPINOR_USE_DTR) + +#------------------------------------------------------------------------------- +# optee or uboot digital signature parameters +#------------------------------------------------------------------------------- +ifeq "$(CHIP)" "532QB" +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_0_ +else ifeq "$(CHIP)" "532QC" +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_0_ +else ifeq "$(CHIP)" "532QD" +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_0_ +else ifeq "$(CHIP)" "533QB" +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_2_ +else ifeq "$(CHIP)" "533QC" +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_2_ +else ifeq "$(CHIP)" "533QD" +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_2_ +else ifeq "$(CHIP)" "532BC" +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_1_ +else ifeq "$(CHIP)" "532BD" +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_1_ +else ifeq "$(CHIP)" "532BE" +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_1_ +else ifeq "$(CHIP)" "533BC" +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_1_ +else ifeq "$(CHIP)" "533BD" +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_1_ +else ifeq "$(CHIP)" "533BE" +CARD_DETECT_PIN_TYPE = _CARD_DETECT_TYPE_1_ +endif + +CARDDET_PIN_PARAM = \ + -D_CARD_DETECT_TYPE_0_=0 \ + -D_CARD_DETECT_TYPE_1_=1 \ + -D_CARD_DETECT_TYPE_2_=2 \ + -DCARD_DETECT_PIN=$(CARD_DETECT_PIN_TYPE) + +ifeq "$(DDR_TREFI)" "Extend" +DDR_TREFI_PARAM = 1 +else +DDR_TREFI_PARAM = 0 +endif + +#------------------------------------------------------------------------------- +# rtos parameters +#------------------------------------------------------------------------------- +ifeq "$(SECUREBOOT_DECRYPT_RTOS)" "Normal" + RTOS_DECRYPT_TYPE = _SECURE_DECRYPT_RTOS_DISABLE_ +else ifeq "$(SECUREBOOT_DECRYPT_RTOS)" "Secure" + RTOS_DECRYPT_TYPE = _SECURE_DECRYPT_RTOS_ENABLE_ +else + RTOS_DECRYPT_TYPE = _SECURE_DECRYPT_RTOS_DISABLE_ +endif + +SECURE_DECRYPT_RTOS_PARAM = \ + -D_SECURE_DECRYPT_RTOS_DISABLE_=0 \ + -D_SECURE_DECRYPT_RTOS_ENABLE_=1 \ + -DSECURE_DECRYPT_RTOS=$(RTOS_DECRYPT_TYPE) + +#------------------------------------------------------------------------------- +# fdt parameters +#------------------------------------------------------------------------------- +ifeq "$(SECUREBOOT_DECRYPT_FDT)" "Normal" + FDT_DECRYPT_TYPE = _SECURE_DECRYPT_FDT_DISABLE_ +else ifeq "$(SECUREBOOT_DECRYPT_FDT)" "Secure" + FDT_DECRYPT_TYPE = _SECURE_DECRYPT_FDT_ENABLE_ +else + FDT_DECRYPT_TYPE = _SECURE_DECRYPT_FDT_DISABLE_ +endif + +SECURE_DECRYPT_FDT_PARAM = \ + -D_SECURE_DECRYPT_FDT_DISABLE_=0 \ + -D_SECURE_DECRYPT_FDT_ENABLE_=1 \ + -DSECURE_DECRYPT_FDT=$(FDT_DECRYPT_TYPE) + +#------------------------------------------------------------------------------- +# linux-kernel parameters +#------------------------------------------------------------------------------- +ifeq "$(SECUREBOOT_DECRYPT_KERNEL)" "Normal" + KERNEL_DECRYPT_TYPE = _SECURE_DECRYPT_KERNEL_DISABLE_ +else ifeq "$(SECUREBOOT_DECRYPT_KERNEL)" "Secure" + KERNEL_DECRYPT_TYPE = _SECURE_DECRYPT_KERNEL_ENABLE_ +else + KERNEL_DECRYPT_TYPE = _SECURE_DECRYPT_KERNEL_DISABLE_ +endif + +SECURE_DECRYPT_KERNEL_PARAM = \ + -D_SECURE_DECRYPT_KERNEL_DISABLE_=0 \ + -D_SECURE_DECRYPT_KERNEL_ENABLE_=1 \ + -DSECURE_DECRYPT_KERNEL=$(KERNEL_DECRYPT_TYPE) + +#------------------------------------------------------------------------------- +# sensor parameters +#------------------------------------------------------------------------------- +SENSOR_PARAM = \ + -D_$(SENSOR1)_ \ + -D_SENSOR1_=$(SENSOR1) + +#------------------------------------------------------------------------------- +# fastboot support +#------------------------------------------------------------------------------- +ifeq "$(FASTBOOT)" "ENABLE" +FASTBOOT_PARAM = -D_FASTBOOT_ +endif + +#------------------------------------------------------------------------------- +# direct boot support +#------------------------------------------------------------------------------- +ifeq "$(DIRECT_BOOT)" "ENABLE" +DIRECT_BOOT_PARAM = -D_DIRECT_BOOT_ +endif + +#------------------------------------------------------------------------------- +# Low Power support +#------------------------------------------------------------------------------- +ifeq "$(Low_Pwr)" "ENABLE" +Low_Pwr_PARAM = -D_Low_Pwr_ +endif + +#------------------------------------------------------------------------------- +# DDR SIZE All in one support +#------------------------------------------------------------------------------- +ifeq "$(DDR_SIZE_ALL_IN_ON)" "ENABLE" +DDR_SIZE_ALL_IN_ON_PARAM = -D_DDR_SIZE_ALL_IN_ON_ +endif + +#------------------------------------------------------------------------------- +# dbg address scan loader support +#------------------------------------------------------------------------------- +ifeq "$(DBG_LD)" "DISABLE" +DBG_LOADER_ON = 0 +RESETCHIP = 533 +else +DBG_LOADER_ON = 1 +RESETCHIP = 533_dbg +endif + +DBG_LD_PARAM = \ + -D_DBG_LOADER_ON_=$(DBG_LD) + +#------------------------------------------------------------------------------- +# loader size select +#------------------------------------------------------------------------------- + + +ENLARGE_LD_PARAM = \ + -D_ENLARGE_LOADER_ON_=$(ENLARGE_LD) + + +ifeq "$(GZIP_ENGINE_API)" "ON" +COMPRESS_ALG = gz +else +COMPRESS_ALG = lz +endif \ No newline at end of file diff --git a/board/novatek/ns02501/loader/Project/Model/Makefile b/board/novatek/ns02501/loader/Project/Model/Makefile new file mode 100755 index 000000000000..fb1c46c95d0f --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/Makefile @@ -0,0 +1,135 @@ +#---------------------------------------------------------------------- +# set the ROOT directory here +#---------------------------------------------------------------------- +ROOT_DIR = ../.. + +#---------------------------------------------------------------------- +# include make config file +#---------------------------------------------------------------------- +include ModelConfig.txt +include ModelConfig_$(MODEL).txt +include MakeConfig.txt + +#---------------------------------------------------------------------- +# set the project name here +#---------------------------------------------------------------------- +PRJ_NAME = Loader$(CHIP) + +#---------------------------------------------------------------------- +# set loader execution DRAM address +#---------------------------------------------------------------------- +ifeq "$(SDRAM_SIZE)" "1024" +# 1Gb*2 => 256MB => 0x1000_0000 +LD_BASE_ADDR = 0xF000000 +else ifeq "$(SDRAM_SIZE)" "2048" +# 2Gb*2 => 512MB => 0x2000_0000 +LD_BASE_ADDR = 0x1F000000 +else +# 4Gb*2 => 1024MB => 0x4000_0000 +LD_BASE_ADDR = 0x3F000000 +endif + +ifeq "$(LOADER_DRAM_ADDR)" "" +LD_BASE_ADDR = 0x1000000 +else +LD_BASE_ADDR = $(LOADER_DRAM_ADDR) +endif + +#---------------------------------------------------------------------- +# set the include directory here +#---------------------------------------------------------------------- +INC_DIR = . \ + ../../Include + +#---------------------------------------------------------------------- +# add/delete the project assembly files here +#---------------------------------------------------------------------- +#ASM = Src/reset.S \ +#Src/remap.S + + + + +#---------------------------------------------------------------------- +# add/delete the project C source files here +#---------------------------------------------------------------------- +SRC = \ + Src/prj_main.c \ + Src/USB/usb_update.c \ + Src/UART/uart_upgrade.c \ + +#---------------------------------------------------------------------- +# set the image output directory here +#---------------------------------------------------------------------- +IMG_BASE_DIR = $(PRJ_NAME)_Data + +#---------------------------------------------------------------------- +# set the library directory here +#---------------------------------------------------------------------- +LIB_BASE_DIR = ../../LIB + +#---------------------------------------------------------------------- +# set the library directory here +#---------------------------------------------------------------------- +ARC_BASE_DIR = $(ROOT_DIR)/ARC + +#---------------------------------------------------------------------- +# add additional C and assembly flags here, for example, -O2 +#---------------------------------------------------------------------- +C_DEFINE_EXT = \ + $(MODEL_PARAM) \ + $(BL_UPDATE_NAME_PARAM) \ + $(BL_STRINGS_PARAM) \ + $(BL_COMPRESS_PARAM) \ + $(CHKFWIMAGE_PARAM) \ + $(FWCOMPRESS_PARAM) \ + $(BL_LOADER_VER_PARAM) \ + $(BL_LDADDR_PARAM) \ + $(EXTSTRG_PARAM) \ + $(STORAGE_INT_TYPE)\ + $(SPIPINMUX_PARAM)\ + $(EMMCPINMUX_PARAM)\ + $(DRAMSCAN_PARAM)\ + $(BL_DUTY_CALIBRATION_PARAM)\ + $(BL_DUTY_CALIBRATION_TYPE_PARAM)\ + $(BL_LOADER_FLOW_PARAM) \ + $(BL_STORAGEINT_PARAM) \ + $(SECURE_DECRYPT_UBOOT_PARAM) \ + $(SECURE_DECRYPT_OPTEE_PARAM) \ + $(CARDDET_PIN_PARAM) \ + $(SENSOR_PARAM) \ + $(NOR_DTR_PARAM) \ + $(FASTBOOT_PARAM) \ + $(Low_Pwr_PARAM) \ + $(DDR_SIZE_ALL_IN_ON_PARAM) \ + $(ENLARGE_LD_PARAM) \ + $(DIRECT_BOOT_PARAM) \ + +CFLAGS_R = $(C_DEFINE_EXT) +CFLAGS_D = $(C_DEFINE_EXT) + +ASMFLAGS_R = \ + $(BL_COMPRESS_PARAM_ASM) + +ASMFLAGS_D = \ + $(BL_COMPRESS_PARAM_ASM) + +GCCFLAGS = \ + $(MODEL_PARAM) \ + $(BL_UPDATE_NAME_PARAM) \ + $(BL_STRINGS_PARAM) \ + $(BL_COMPRESS_PARAM) \ + $(CHKFWIMAGE_PARAM) \ + $(FWCOMPRESS_PARAM) \ + $(BL_LOADER_VER_PARAM) \ + $(STORAGE_INT_TYPE)\ + $(DRAMSCAN_PARAM)\ + $(BL_DUTY_CALIBRATION_PARAM)\ + $(BL_DUTY_CALIBRATION_TYPE_PARAM)\ + $(BL_LOADER_FLOW_PARAM) + +#---------------------------------------------------------------------- +# include common parts of the makefile +#---------------------------------------------------------------------- +MAKE_COMMON_DIR = ../../MakeCommon +include $(MAKE_COMMON_DIR)/OutputImg.txt diff --git a/board/novatek/ns02501/loader/Project/Model/ModelConfig.txt b/board/novatek/ns02501/loader/Project/Model/ModelConfig.txt new file mode 100755 index 000000000000..1ccf9d20aee3 --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/ModelConfig.txt @@ -0,0 +1,5 @@ +#---------------------------------------------------------------------- +# Set model here +#---------------------------------------------------------------------- +# EMU_EVB => Model config as NT9856x +MODEL = EMU_EVB \ No newline at end of file diff --git a/board/novatek/ns02501/loader/Project/Model/ModelConfig_EMU_EVB.txt b/board/novatek/ns02501/loader/Project/Model/ModelConfig_EMU_EVB.txt new file mode 100755 index 000000000000..45f5b983e441 --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/ModelConfig_EMU_EVB.txt @@ -0,0 +1,349 @@ +BIN_NAME = LD98$(CHIP_SHORT)A +BL_UPDATE_FWNAME = FW98$(CHIP_SHORT)A.BIN +BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN + +# Ext => DRAM is external die => Need user configuration +# KGD => DRAM is internal die => Depend on specific chip (force fixed dram size) +#============+====================+=========================+ +# chip_name |DDR1 size | DDR1 clock | +#============+====================+=========================+ +# 532/533QB |512(Mb) | 666 | +#============+====================+=========================+ +# 532QC/QD |1024/2048(Mb) | 400,507,666,793,933,1066| +#============+====================+=========================+ +# 533QC/QD |1024/2048(Mb) | 400,507,666,793,933,1066| +#============+====================+=========================+ +# 532BC/BD/BE|1024/2048/4096(Mb) | 400,507,666,793,933,1066| +#============+====================+=========================+ +# 533BC/BD/BE|1024/2048/4096(Mb) | 400,507,666,793,933,1066| +#============+====================+=========================+ +# [CHIP] : main chip ID +#532QB +#532QC +#532QD +#533QB +#533QC +#533QD +#532BC +#532BD +#532BE +#533BC +#533BD +#533BE +CHIP = 533QC + +# [CHIP_VER] : chip version +# A +# B +# CHIP_VER = A + +# [DRAM1_CLK] : DRAM1(16-bit) clock rate +# 400 +# 507 +# 666 +# 793 +# 933 +# 1066 +DRAM1_CLK = 1066 + +# [SDRAM_SIZE] : DRAM Size (unit: Giga bit)(Auto Calculate) +# 512(Mb) +# 1024 +# 2048 +# 4096 +# SDRAM_SIZE = 4096 + +# [DRAM1_POWEROFF_S3] : PCB support powered off S3 +# Normal +# Enabled +# DRAM1_POWEROFF_S3 = Normal + +# [DRAM_TYPE] : DRAM Type(Auto recognize) +# DDR2 +# DDR3 +# DDR3L +# DRAM_TYPE = DDR3 + +# [DRAM_2ND_TBL_DETECT] : enable DRAM 2nd table detect by GPIO(Not support) +# Normal (No GPIO detected) +# 0 (C_GPIO) +# 1 (HSI_GPI0) +# 2 (S_GPIO) +# 3 (P_GPIO) +# 4 (DSI_GPIO) +# 5 (L_GPIO) +# 6 (D_GPIO) +# 7 (A_GPI0) +# 8 (Reserved) +#DRAM_2ND_TBL_DETECT = Normal + +# [DRAM_2ND_TBL_DETECT_GPIO_NO] : enable DRAM 2nd table detect by X_GPIO_n(Not support) +# where +# C_GPIO --> n=0~24 +# HSI_GPI0 --> n=0~11 +# S_GPIO --> n=0~8 +# P_GPIO --> n=0~25 +# DSI_GPIO --> n=0~10 +# L_GPIO --> n=0~9 +# D_GPIO --> n=0~7 +# A_GPIO --> n=0~3 +#DRAM_2ND_TBL_DETECT_GPIO_NO = 0 + +# [DRAM1_2ND_CLK] : DRAM1(16-bit) 2nd table clock rate(Not support) +# 400 +# 507 +# 522 +# 666 +# 760 +# 933 +# 1066 +#DRAM1_2ND_CLK = 933 + +# [SDRAM_2ND_SIZE] : 2nd table DRAM Size (unit: Giga bit)(Not support) +# 1024 +# 2048 +# 4096 +# SDRAM_2ND_SIZE = 4096 + +# [DDR_TREFI] : ddr refresh time select by temparature range +# Normal(3.9 us) +# Extend(1.95 us) +DDR_TREFI = Normal + +# [DRAM_PLL_SSC] : enable DRAM PLL spread spectrum(Not support Yet) +# Normal +# 1 (0.1%) +# 2 (0.2%) +# 3 (0.3%) +# 4 (0.4%) +# 5 (0.5%) +DRAM_SSC_ENABLE = Normal + +# [DRAM_ODT] : enable DRAM ODT or not +# Normal +# Enable +# Disable +DRAM_ODT = Normal + +# [STORAGEINT] : internal storage device +# NandSpi >>>[Use SPI-NAND flash ondie ECC] +# NandEccBCH >>>[Use SPI-NAND and SoC BCH ECC] +# SpiFlash >>>[Use SPI NOR flash] +# EMMC +# EMMC_NAND_COMBO >>>[eMMC & NandSpi 2 in 1 & STORAGEEXT must choose NONE]<<< +STORAGEINT = NandSpi + +# [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) +# SPI_NORMAL +# SPI_4BITS +SPI_SETTING = SPI_4BITS + +# [EMMC_SETTING] : EMMC pinmux setting (Valid when STORAGEINT is EMMC) +# EMMC_4BITS +# EMMC_8BITS +EMMC_SETTING = EMMC_8BITS + +# [STORAGEEXT] : external storage device +# NONE +# Sdio1 +# Usb +# Eth >>>[During this option => STORAGEINT MUST not choose @EMMC_NAND_COMBO]<<< +# Uart +STORAGEEXT = Sdio1 + +#==============================================================================# +# ROM decrypt loader option # +#==============================================================================# +# [SECUREBOOT] : Secure boot enable or not(Generate loader for secure boot) +# Normal +# Secure +SECUREBOOT = Normal + +# [SIGNATUREMETHOD] : Digital signature method (Only valid when SECUREBOOT = Secure ) +# AES128 +# ECDSA256 +# RSA2048 +# RSA2048PSS +# RSA2048PKCS1P5 +SIGNATUREMETHOD = ECDSA256 + +# [ENCRYPTIONDATA] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure ) +# Normal +# AES128 +ENCRYPTDATA = Normal + +# [Bypass simple checksum] : During SIGNATUREMETHOD == RSA or AES and ENCRYPTDATA == Normal +# Choose ENABLE will let cypher loader(data area MUST be plan text) can run both in normal IC and secure enable IC +# at the same time +# DISABLE +# ENABLE +BYPASS_SIMPLE_CHKSUM = DISABLE + +# [ENCRYPTIONDATA key selection] : Is data area encrypt ? (Only valid when SECUREBOOT = Secure && ENCRYPTDATA == AES128) +# 1st_key_set (default) +# 2nd_key_set +# 3rd_key_set +# 4th_key_set +# 5th_key_set +ENCRYPTDATA_KEY_SEL = 1st_key_set + +# [Header signature selection] : Is processing header signature verify? +# DISABLE(default) +# ENABLE +HEADER_SIGNATURE = DISABLE + +# [AES key path] : Set absolute path of AES key configuration file +ifeq "$(shell uname)" "Linux" +#AES_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +AES_KEY_FILE_DIR = ../../Tools/Bin/aes.txt +else +AES_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [RSA key path] : Set absolute path of RSA key configuration file +ifeq "$(shell uname)" "Linux" +#RSA_KEY_FILE_DIR = /home/nvt00607/NT96680/01_Loader/na51000_loader_smp_crypto_190320_v2/Tools/Bin/aes.txt +ifeq "$(SIGNATUREMETHOD)" "RSA2048" +RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt +RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt +else + ifeq "$(SIGNATUREMETHOD)" "RSA2048PSS" + RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt + RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt + else + ifeq "$(SIGNATUREMETHOD)" "RSA2048PKCS1P5" + RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/rsa_pub.txt + RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/rsa_priv.txt + else + RSA_PUB_KEY_FILE_DIR = ../../Tools/Bin/ecdsa_pub.key + RSA_PRV_KEY_FILE_DIR = ../../Tools/Bin/ecdsa_priv.key + endif + endif + endif +else +RSA_KEY_FILE_DIR = Y:/NT96680/01_Loader/na51000_loader_smp_crypto_190320/Tools/Bin/aes.txt +endif + +# [LOADER_DRAM_ADDR] : assign DRAM address used by loader (format 0xABCD) +# 0x1000000 +LOADER_DRAM_ADDR = 0x1000000 + +#==============================================================================# +# loader decrypt uboot option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_UBOOT] : Loader decrypt uboot or not (Depend on uboot build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_UBOOT = Normal + +#==============================================================================# +# loader decrypt optee option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_OPTEE] : Loader decrypt optee or not (Depend on optee build as cypher text or not) +# Normal +# Secure +SECUREBOOT_DECRYPT_OPTEE = Normal + +#==============================================================================# +# loader decrypt rtos option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_RTOS] : Loader decrypt rtos or not +# Normal +# Secure +SECUREBOOT_DECRYPT_RTOS = Normal + +#==============================================================================# +# loader decrypt fdt option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_FDT] : Loader decrypt fdt or not +# Normal +# Secure +SECUREBOOT_DECRYPT_FDT = Normal + +#==============================================================================# +# loader decrypt linux-kernel option # +#==============================================================================# +# [SECUREBOOT_DECRYPT_KERNEL] : Loader decrypt linux-kernel or not +# Normal +# Secure +SECUREBOOT_DECRYPT_KERNEL = Normal + +#==============================================================================# +# exFAT support(Once customer want to use exFAT, need get license from $MS ) # +#==============================================================================# +# [exFAT] : Loader support exFAT or not +# NONE +# EXFAT +EXFAT_FILESYSTEM_SUPPORT = NONE + +#==============================================================================# +# NOR DTR support(only available while STORAGEINT = SpiFlash && FASTBOOT = ENABLE ENABLE) # +# !!!!! WARNING !!!!! flash, ddr hardware spec must meet requirement !!!!! # +#==============================================================================# +# [NOR_DTR] : use NOR DTR support for fast boot +# DISABLE +# ENABLE +SPINOR_DTR = DISABLE + + +#==============================================================================# +# SPI-NAND(NOR)/eMMC use direct mode # +#==============================================================================# +# [DIRECT MODE] : Internal storage use direct mode +# DISABLE : PIO mode +# ENABLE : Direct mode +INT_STRG_DIR_MODE = DISABLE + +#==============================================================================# +# fastboot support (with fast sensor) # +#==============================================================================# +# DISABLE +# ENABLE +FASTBOOT = DISABLE + +#==============================================================================# +# direct boot support # +#==============================================================================# +# [DIRECT_BOOT] : Loader boots Linux directly but conflicts with fastboot +# DISABLE +# ENABLE +DIRECT_BOOT = DISABLE + +#==============================================================================# +# Low Power support(only support DDR3-800 and use PLL11) # +#==============================================================================# +# DISABLE +# ENABLE +Low_Pwr = DISABLE + +#==============================================================================# +# DDR SIZE All in one support(auto check 1G/2G/4G size) # +#==============================================================================# +# DISABLE +# ENABLE +DDR_SIZE_ALL_IN_ON = DISABLE + +#==============================================================================# +# debug loader support # +#==============================================================================# +# [DBG_LD] : enlarge loader size for scan address and dq +# DISABLE +# ENABLE +DBG_LD = DISABLE + + +#==============================================================================# +# loader size select # +#==============================================================================# +# [ENLARGE_LD] : enlarge loader size for user coding usage, (the boot time will increase) +# DISABLE(Origin Size) +# ENABLE(64KB Max Size) +ENLARGE_LD = DISABLE + +#==============================================================================# +# [Cipher text encrypt sequence] : (just option for back up) # +# Caution Once selection ENABLE -> Specific SoC's fuse bit need programmed # +#==============================================================================# +# DISABLE(default): signature -> encrypt data as cypher text(general usage) +# ENABLE : encrypt data as cypher text -> signature +CIPHER_ENCRYPT_SEQ = DISABLE \ No newline at end of file diff --git a/board/novatek/ns02501/loader/Project/Model/Src/UART/uart_upgrade.c b/board/novatek/ns02501/loader/Project/Model/Src/UART/uart_upgrade.c new file mode 100755 index 000000000000..5dd82bcdecea --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/Src/UART/uart_upgrade.c @@ -0,0 +1,212 @@ +#include <string.h> +#include "constant.h" +#include "uart_upgrade.h" +#include "scsi_op.h" +#include "debug.h" +#include "debug.h" +#include "global.h" + + +#define _THUMB2 __attribute__((target("thumb2"))) + +UART_Verify_CB guiUARTCheck_cb; +UART_Vendor_CB guiUARTVendor_cb; +static int uartrom_exit = 0; +static unsigned int chipid = 0; +static CONSOLE_OBJ *m_console = NULL; +static INT32U nvtuart_opened = 1; + +_THUMB2 static INT32U calc_sum(INT32U dat0, INT32U dat1, INT32U dat2, INT32U dat3) +{ + INT32U sum = 0; + + sum = (dat0 & 0xFFFF) + ((dat0 >> 16)) + (dat1 & 0xFFFF) + ((dat1 >> 16)) + + (dat2 & 0xFFFF) + ((dat2 >> 16)) + (dat3 & 0xFFFF) + ((dat3 >> 16)) + 28; + + return sum & 0xFFFF; +} + +_THUMB2 static INT32U make_sum(INT32U dat0, INT32U dat1, INT32U dat2, INT32U dat3) +{ + INT32U sum = 0; + + sum = (dat0 & 0xFFFF) + ((dat0 >> 16)) + (dat1 & 0xFFFF) + ((dat1 >> 16)) + + (dat2 & 0xFFFF) + ((dat2 >> 16)) + (dat3 & 0xFFFF) + ((dat3 >> 16)) + 28; + + sum = (~sum + 1) & 0xFFFF; + + return sum; +} + +_THUMB2 static int recv_data(char *p, unsigned int len) +{ + while (len) { + *p = m_console->getc(); + p++; + len--; + } + return 0; +} + +_THUMB2 static int send_data(char *p, unsigned int len) +{ + while (len) { + m_console->putc(*p); + p++; + len--; + } + return 0; +} + +_THUMB2 static void uart_send_csw(INT32U *cdb, int er) +{ + char *p_cdb = (char *)cdb; + p_cdb[IDX_CDB_UART_STATUS_ER] = er; + + unsigned int sum = make_sum(cdb[0], cdb[1], cdb[2], (cdb[3] & 0xFFFF)); + cdb[3] |= sum << 16; + + send_data((char *)cdb, sizeof(INT32U) * 4); +} + + +_THUMB2 static int uart_cmd(INT32U *cdb) +{ + unsigned int cmd_id = ((cdb[0] >> 8) & 0xFF); + unsigned int insize = ((cdb[1] >> 16) & 0xFFFF) + ((cdb[2] & 0xFFFF) << 16); + unsigned int tmp1, tmp2; + + switch (cmd_id) { + case SCSIOP_OUT_OPEN_DEVICE: + nvtuart_opened = 1; + uart_send_csw(cdb, 0); + break; + + case SCSIOP_IN_WAIT_DONE: + uartrom_exit = 1; + uart_send_csw(cdb, 0); + break; + + case SCSIOP_IN_IS_NVT: + chipid = uart_read_reg(TOP_CTRL_VERSION_REG); + uart_send_csw(cdb, 0); + send_data((char *)&chipid, sizeof(chipid)); + break; + + case SCSIOP_OUT_ADDR_WRITE: + tmp1 = ((cdb[0] >> 16) & 0xFFFF) + ((cdb[1] & 0xFFFF) << 16); //addr + tmp2 = ((cdb[1] >> 16) & 0xFFFF) + ((cdb[2] & 0xFFFF) << 16); //data + *(INT32U *)tmp1 = tmp2; + __asm__ __volatile__("dsb\n\t"); + uart_send_csw(cdb, 0); + break; + + case SCSIOP_IN_ADDR_READ: + tmp1 = ((cdb[0] >> 16) & 0xFFFF) + ((cdb[1] & 0xFFFF) << 16); //addr + tmp2 = *(INT32U *)tmp1; + __asm__ __volatile__("dsb\n\t"); + uart_send_csw(cdb, 0); + send_data((char *)&tmp1, sizeof(tmp2)); //repeat addr + send_data((char *)&tmp2, sizeof(tmp2)); //reply data + break; + + default: + if (guiUARTCheck_cb != NULL) { + NVT_SCSI_CBW cbw; + unsigned int OutDataBuf = 0; + utl_memset(&cbw, 0, sizeof(cbw)); + cbw.dCBWDataTransferLength = insize; + utl_memcpy(cbw.CBWCB, cdb, 4 * sizeof(unsigned int)); + int er = guiUARTCheck_cb((unsigned int)&cbw, (unsigned int *)&OutDataBuf, (unsigned int *)&insize); + utl_memcpy(cdb, cbw.CBWCB, 4 * sizeof(unsigned int)); + if (er != 0) { + uart_send_csw(cdb, 1); + return -1; + } else { + uart_send_csw(cdb, 0); + } + if ((cmd_id & 0x80)) { + //dir-in + guiUARTVendor_cb((unsigned int)&cbw); + if (insize) { + send_data((char *)OutDataBuf, insize); + } + } else { + //dir-out + if (insize) { + recv_data((char *)OutDataBuf, insize); + } + guiUARTVendor_cb((unsigned int)&cbw); + } + } + break; + + } + return 0; +} + +_THUMB2 static void uart_upgrade_routine(void) +{ + static int idx_cdb = 0; + static INT32U cdb[4] = {0}; + + char *p_cdb = (char *)cdb; + + p_cdb[idx_cdb++] = m_console->getc(); + + // loop to cdb fill 16 bytes + if (idx_cdb < 16) { + return ; + } + + idx_cdb = 0; // reset idx + + // Parse SCSI command + if (!(((cdb[0] & 0xFF) == SCSI_OP_SET0) || ((cdb[0] & 0xFF) == SCSI_OP_SET1) || ((cdb[0] & 0xFF) == SCSI_OP_SET2))) { + uart_send_csw(cdb, 1); + debug_err("uart opset ng.\r\n"); + } + + if (calc_sum(cdb[0], cdb[1], cdb[2], cdb[3]) != 0) { + uart_send_csw(cdb, 1); + debug_err("uart cmd sum ng.\r\n"); + return; + } + + uart_cmd(cdb); +} + +_THUMB2 void uart_upgrade_procedure() +{ + //if(utl_get_chipversion() != CHIPVER_A) { + m_console = get_uart_object(CONSOLE_UART0); + // } else { + // m_console = get_uart_object(CONSOLE_UART1); + //} + + m_console->hook(); + + while (1) { + + if (uartrom_exit > 0) { + break; + } + + uart_upgrade_routine(); + } + + uartrom_exit = 0; + +} + +_THUMB2 void loader_installUART_Verify_CB(UART_Verify_CB callback) +{ + guiUARTCheck_cb = callback; +} + +_THUMB2 void loader_installUART_Vendor_CB(UART_Vendor_CB callback) +{ + guiUARTVendor_cb = callback; +} + + diff --git a/board/novatek/ns02501/loader/Project/Model/Src/UART/uart_upgrade.h b/board/novatek/ns02501/loader/Project/Model/Src/UART/uart_upgrade.h new file mode 100755 index 000000000000..499f05d303b1 --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/Src/UART/uart_upgrade.h @@ -0,0 +1,101 @@ +#ifndef __UART_UPGRADE_H +#define __UART_UPGRADE_H + +/** + Open NVT Device + + The commands except SCSIOP_IN_IS_NVT can be run if open device success. + If not open first, the operation commands got CSW Status 0x1 means command failed. + + @DATA_PHASE: None. + @CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define UARTOP_OUT_OPEN_DEVICE 0x01C0 + + +/** + Send Write Loader + + The Write Address @ CDB[2]~[5]; + For example address 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE + CDB[6]~[16] shall follow checksum rule. Content is dont care. + + @DATA_PHASE: OUT. Size is at CBW[8]~[11] DataTransferLength. + @CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define UARTOP_OUT_WRLOADER 0x02C0 + +/** + Address WRITE WORD (DRAM/REG/SRAM dont care) + + The Write Address @ CDB[2]~[5]; + For example address 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE + The Write DATA @ CDB[6]~[9]. + For example address 0x12345678 shall fill CDB[6]=0x78 CDB[7]=0x56 CDB[8]=0x34 CDB[9]=0x12 + CDB[10]~[15] shall follow checksum rule. Content is dont care. + + @DATA_PHASE: None. + @CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define UARTOP_OUT_ADDR_WRITE 0x03C0 + +/** + Address READ WORD (DRAM/REG/SRAM dont care) + + The READ Address @ CDB[2]~[5]; + For example address 0xFE080000 shall fill CDB[2]=0x00 CDB[3]=0x00 CDB[4]=0x08 CDB[5]=0xFE + CDB[6]~[15] shall follow checksum rule. Content is dont care. + + @DATA_PHASE: IN 8 bytes return. DATA[0]~[3] is repeat CDB address. Read out DATA is [3] ~[7]. + @CSW_PHASE status code: 0 is success. 0x1 means checksum failed. +*/ +#define UARTOP_IN_ADDR_READ 0x83C0 + + +/** + Ask if NVT Device + + CDB[2]~[15] shall follow checksum rule + + @DATA_PHASE: IN 4 bytes return; The value 0x81200000 woule be return for 98321. <8321 = 0x2081> If checksum fail, the 0x0 would be returned. + @CSW_PHASE status code: 0 is success. 0x1 means checksum failed. + +*/ +#define UARTOP_IN_IS_NVT 0x81C0 // ???O???O???a?? device (?o?????n?? SCSIOP_IN_OPEN_DEVICE) + + +/** + End USB ROM CODE. + + Exit USB ROM code after receiving this command. The checksum must be correct. + + CDB[2]~[15] shall follow checksum rule + + @DATA_PHASE: None. + @CSW_PHASE status code: 0 is success and end usb rom. 0x1 means checksum failed. +*/ +#define UARTOP_IN_WAIT_DONE 0x82C0 + +#define TOP_CTRL_VERSION_REG (0xF00100F0) + + +typedef int (*UART_Verify_CB)(unsigned int pCmdBuf, unsigned int *pDataBuf, unsigned int *IN_size); ///< Callback for verify the Vendor Command is supported or not +typedef int (*UART_Vendor_CB)(unsigned int pCmdBuf); ///< Callback for Vendor Command processing + + +extern void loader_installUARTCB(UART_Verify_CB callback); +extern void uart_upgrade_procedure(void); + +static __inline unsigned int uart_read_reg(unsigned int reg) +{ + return *((volatile unsigned int *)reg); +} + +static __inline void uart_write_reg(unsigned int reg, unsigned int value) +{ + *((volatile unsigned int *)reg) = value; +} + + + +#endif diff --git a/board/novatek/ns02501/loader/Project/Model/Src/USB/usb_update.c b/board/novatek/ns02501/loader/Project/Model/Src/USB/usb_update.c new file mode 100755 index 000000000000..0e9ac0c85ea5 --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/Src/USB/usb_update.c @@ -0,0 +1,1231 @@ + +//#include "board.h" +#include "fuart.h" +#include "usb_update.h" +#include "debug.h" +#include "timer.h" + +#define IOADDR_USB_REG_BASE (0xFF600000) +#define _THUMB2 __attribute__((target("thumb2"))) + + +_THUMB2 void fLib_USB_Update_FW(void); + +int usbrom_exit = 0; +volatile DEV *ptusbdev; +#define ptotg ((volatile OTG200 *)IOADDR_USB_REG_BASE) + +#define FUSB200_MAX_EP 8 // 1..10 +#define FUSB200_MAX_FIFO 4 // 0.. 9 + +#define mUsbEPMap(EPn, MAP) (ptusbdev->ep_map[EPn-1] = MAP) +#define mUsbEPMapRd(EPn) (ptusbdev->ep_map[EPn-1]) + +#define mUsbFIFOMap(FIFOn, MAP) (ptusbdev->fifo_map[FIFOn] = MAP) +#define mUsbFIFOMapRd(FIFOn) (ptusbdev->fifo_map[FIFOn]) +#define mUsbFIFOConfigRd(FIFOn) (ptusbdev->fifo_cfg[FIFOn]) + +static USB_st tusb; +static MassStorageState eUsbMassStorageState = MS_STATE_CBW; +CBW tCBW; +CSW tCSW; +SCSISense tSCSIsense; +SCSIDeviceResp tSCSIDeviceResp; + +MSDC_Verify_CB guiU2MsdcCheck_cb; +MSDC_VenDone_CB guiU2MsdcVendorDone_cb; + +int trigger_done_cb = 0; + +static const unsigned char u8RequestSenseData[DATA_LENGTH_REQUEST_SENSE] __attribute__((aligned(4))) = +{ + 0x70, // 0, response code + 0x00, // 1, obsolete + 0x00, // 2, sense key + 0x00, // 3-6, information + + 0x00, + 0x00, + 0x00, + 0x0A, // 7, additional length (n - 7), n = 17 + + 0x00, // 8-11, information + 0x00, + 0x00, + 0x00, + + 0x00, // 12, additional sense code + 0x00, // 13, additional sense code qualifier + 0x00, // 14, field replaceable unit code + 0x00, // 15-17, sense-key specific + + 0x00, + 0x00 +}; + + +static const unsigned char u8ModeSenseData[DATA_LENGTH_MODE_SENSE] __attribute__((aligned(4))) = +{ + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + +#define USB_BUFF_SZ 128 +unsigned int u32Usb_buffer[USB_BUFF_SZ/4]; // may less than USB_BUFF_SZ + +static INT32U nvtdev_opened = 1; +#define mCxType(cmd) ((cmd[0] & (BIT6 | BIT5)) >> 5) +#define mCxRequest(cmd) ((unsigned char)(cmd[0] >> 8)) +#define mCxValue(cmd) ((unsigned short)(cmd[0] >> 16)) // get 3rd byte, 4th byte +#define mCxIndex(cmd) ((unsigned short)(cmd[1])) // get 5th byte, 6th byte +#define mCxLength(cmd) ((unsigned short)(cmd[1] >> 16)) // get 7th byte, 8th byte + + +#define mUsbRmWkupST() (ptusbdev->main_ctl & BIT0) +#define mUsbRmWkupClr() (ptusbdev->main_ctl &= ~BIT0) +#define mUsbRmWkupSet() (ptusbdev->main_ctl |= BIT0) +#define mUsbTsMdWr(item) (ptusbdev->phy_tms = item) +#define mUsbIntF2OUTDis() (ptusbdev->int_mgrp1 |= (BIT5 | BIT4)) +#define mUsbIntF2OUTEn() (ptusbdev->int_mgrp1 &= ~(BIT5 | BIT4)) +#define mUsbIntF0INDis() (ptusbdev->int_mgrp1 |= BIT16) +#define mUsbIntF0INEn() (ptusbdev->int_mgrp1 &= ~BIT16) +// Endpoint & FIFO Configuration +#define mUsbEPMxPtSz(EPn, dir, size) (ptusbdev->ep_xpsz[dir][EPn - 1] = size) +#define mUsbEPStallST(EPn, dir) (((ptusbdev->ep_xpsz[dir][EPn - 1]) & BIT11) >> 11) +#define mUsbEPRsTgSet(EPn, dir) (ptusbdev->ep_xpsz[dir][EPn-1] |= BIT12) +#define mUsbEPRsTgClr(EPn, dir) (ptusbdev->ep_xpsz[dir][EPn-1] &= ~BIT12) +#define mUsbEPStallClr(EPn, dir) (ptusbdev->ep_xpsz[dir][EPn-1] &= ~BIT11) +#define mUsbEPStallSet(EPn, dir) (ptusbdev->ep_xpsz[dir][EPn-1] |= BIT11) + +extern void CPUflushReadCache(UINT32 uiStartAddr, UINT32 uiLength); +extern void CPUflushWriteCache(UINT32 uiStartAddr, UINT32 uiLength); + +INT32S my_SCSICmd(CBW * ptcbw); + +_THUMB2 signed int usb_DxFifoRdWr(unsigned char * buf, unsigned int count, unsigned int Rd) +{ + signed int ret = -1; // assume fail + + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: enter usb_DxFifoRdWr\r\n"); + //#endif + + CPUflushWriteCache((UINT32) buf, (UINT32) count); + CPUflushReadCache((UINT32) buf, (UINT32) count); + + //#ifdef __FREERTOS + //if(buf == (unsigned char *)0xFE080000) + // ptusbdev->dma_addr = (INT32U)buf; + //else + // ptusbdev->dma_addr = dma_getPhyAddr(buf); + + //dma_flushWriteCache((UINT32)buf, count); + //dma_flushReadCache((UINT32)buf, count); + //#else + ptusbdev->dma_addr = (INT32U)buf;//dma_getPhyAddr(buf); + + __asm__ __volatile__("dsb\n\t"); + //#endif + + + if (Rd) { + // fifo select + ptusbdev->dma_fifo = BIT2; + // ctrl setting + ptusbdev->dma_ctl = (count << 8) | // dma byte count + (0 << 2) | // not dma io to io + (0 << 1); // fifo 2 memory + + #ifdef USBROM_RTOS_DBG + debug_msg("MSG: count = %d, Read CTRL = %x\r\n", count, ptusbdev->dma_ctl); + #endif + + } else { + // fifo select + ptusbdev->dma_fifo = BIT0; + // ctrl setting + ptusbdev->dma_ctl = (count << 8) | // dma byte count + (0 << 2) | // not dma io to io + (1 << 1); // memory 2 fifo + + #ifdef USBROM_RTOS_DBG + debug_msg("MSG: Write count = %d, Write CTRL = %x\r\n", count, ptusbdev->dma_ctl); + #endif + } + + // dma start + ptusbdev->dma_ctl |= BIT0; + + while (1) { + INT32U temp; + + temp = ptusbdev->int_grp2 & ~ ptusbdev->int_mgrp2; + + if (temp & BIT7) { // dma completion + ret = 0; // ok + break; + } + if (temp & (BIT2 | BIT1)) { // bus condiction + // clear cx fifo + ptusbdev->cx_cf |= BIT3; + break; + } + if (temp & BIT8) { // dma error + // clear cx fifo + ptusbdev->cx_cf |= BIT3; + break; + } + } + + // clear (dma error & dma completion) interrupt + ptusbdev->int_grp2 |= (BIT8 | BIT7); + CPUflushReadCache((UINT32) buf, (UINT32) count); + + //debug_msg("done\r\n"); + + //#ifdef __FREERTOS + //dma_flushReadCache((UINT32)buf, count); + //#endif + + return ret; +} + +_THUMB2 void vSCSIHWError(void) +{ + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + if ((tCBW.CB0_cblen_lun_flag&0xFF) == CBW_FLAG_OUT) { + mUsbEPStallSet(OUT_EP, DIRECTION_OUT); + } else { + //debug_msg("S1\r\n"); + mUsbEPStallSet(IN_EP, DIRECTION_IN); + } + + //#ifdef USBROM_RTOS_DBG + //DBG_DUMP("MSG: vSCSIHWError\r\n"); + //#endif + + tSCSIsense.u8Key = KEY_NOT_READY; + tSCSIsense.u8KeyAdd = ADDKEY_MEDIUM_NOT_PRESENT; +} + + +////////////////////////////////////////////////////////////////////////////////// +_THUMB2 MassStorageState eScsiIn(void) +{ + + switch (tSCSIDeviceResp.u8MemIndex) { + case CARD_INDEX_SRAM: + // unit: byte + if (usb_DxFifoRdWr((INT8U *)u32Usb_buffer, tSCSIDeviceResp.u16DataResidue, 0) >= 0) { + tCSW.u32DataResidue -= tSCSIDeviceResp.u16DataResidue; + if (tCSW.u32DataResidue) { + // wait for fifo empty + while ((ptusbdev->cx_cf & (BIT8 | BIT9)) != (BIT8 | BIT9)) { + // if (VBUS == 0) + // return MS_STATE_CSW; + } + //debug_msg("S2\r\n"); + //mUsbEPStallSet(IN_EP, DIRECTION_IN); // case MS13Case_5: + } + return MS_STATE_CSW; + } + break; + + case CARD_INDEX_FSM_SS: + if (usb_DxFifoRdWr((INT8U *)tSCSIDeviceResp.u32IOAddr, tSCSIDeviceResp.u16DataResidue, 0) >= 0) { + tCSW.u32DataResidue -= tSCSIDeviceResp.u16DataResidue; + return MS_STATE_CSW; + } else { + mUsbEPStallSet(OUT_EP, DIRECTION_IN); // case MS13Case_11: + } + break; + + + default: + break; + } + vSCSIHWError(); + return MS_STATE_CSW; +} + + +////////////////////////////////////////////////////////////////////////////////// +_THUMB2 MassStorageState eScsiOut(void) +{ + switch (tSCSIDeviceResp.u8MemIndex) { + case CARD_INDEX_SRAM: + if (usb_DxFifoRdWr((INT8U *)u32Usb_buffer, tSCSIDeviceResp.u16DataResidue, 1) >= 0) { + tCSW.u32DataResidue -= tSCSIDeviceResp.u16DataResidue; + if (tCSW.u32DataResidue) + mUsbEPStallSet(OUT_EP, DIRECTION_OUT); // case MS13Case_11: + return MS_STATE_CSW; + } + break; + + case CARD_INDEX_FSM_SS: + if (usb_DxFifoRdWr((INT8U *)tSCSIDeviceResp.u32IOAddr, tSCSIDeviceResp.u16DataResidue, 1) >= 0) { + tCSW.u32DataResidue -= tSCSIDeviceResp.u16DataResidue; + return MS_STATE_CSW; + } else { + mUsbEPStallSet(OUT_EP, DIRECTION_OUT); // case MS13Case_11: + } + break; + default: + break; + } + vSCSIHWError(); + return MS_STATE_CSW; +} + +typedef unsigned int size_t; +extern void *utl_memcpy(void *dest, const void *src, size_t count); + +_THUMB2 void vSCSICmd_RequestSense(void) +{ + // Device intend to send data + tSCSIDeviceResp.u8Flags = CBW_FLAG_IN; + tSCSIDeviceResp.u8MemIndex = CARD_INDEX_SRAM; + tSCSIDeviceResp.u16DataResidue = sizeof(u8RequestSenseData); + + // copy response to sram + utl_memcpy ((UINT32 *)u32Usb_buffer, (UINT32 *)u8RequestSenseData, (UINT32)sizeof(u8RequestSenseData)); + + *((unsigned int *)u32Usb_buffer + (SENSE_OFFSET_KEY>>2)) += (tSCSIsense.u8Key&0xFF)<<16; + *((unsigned int *)u32Usb_buffer + (SENSE_OFFSET_ADD>>2)) += (tSCSIsense.u8KeyAdd&0xFF); + + // all key disappear + tSCSIsense.u8Key = KEY_NO_SENSE; + tSCSIsense.u8KeyAdd = ADDKEY_NO_ADDITIONAL; +} + +_THUMB2 void vSCSICmd_ModeSense(void) +{ + + //switch (tCBW.u8CB[2]) { + switch ((tCBW.CB1_CB15[0]>>8)&0xFF) { + case 0x00: // return mode parameter header and block descriptor + //debug_msg("MODE_SENSE 00\r\n"); + tSCSIDeviceResp.u16DataResidue = 0x0C; + break; + case 0x3F: // all pages + //debug_msg("MODE_SENSE 3F\r\n"); + tSCSIDeviceResp.u16DataResidue = sizeof(u8ModeSenseData); + break; + default: + //debug_msg("MODE_SENSE ERR\r\n"); + tSCSIsense.u8Key = KEY_ILLEGAL_REQUEST; + tSCSIsense.u8KeyAdd = ADDKEY_INVALID_FIELD_IN_CMD; + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + return; + } + // Device intend to send data + tSCSIDeviceResp.u8Flags = CBW_FLAG_IN; + tSCSIDeviceResp.u8MemIndex = CARD_INDEX_SRAM; + + // copy response to sram + utl_memcpy((UINT32 *)u32Usb_buffer, (UINT32 *)u8ModeSenseData, (UINT32)tSCSIDeviceResp.u16DataResidue); +} + + + +_THUMB2 void vSCSICmd_Unsupport(void) +{ + // Device intend to transfer no data + tSCSIsense.u8Key = KEY_ILLEGAL_REQUEST; + tSCSIsense.u8KeyAdd = ADDKEY_INVALID_CMD_OP_CODE; + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + + //#ifdef DISPLAY_USB_INFORMATION + //DBG_DUMP("MSG: UnSupported SCSI Command (op code = 0x%x)\r\n", tCBW.u8CB[0]); + //#endif +} + +_THUMB2 MassStorageState eMassStorage13case(void) +{ + MassStorage13Case eCase = 0x0; + MassStorageState estate; + INT32U u32DeviceRespDataLength = 0x0; + + switch(tSCSIDeviceResp.u8MemIndex) { + case CARD_INDEX_SRAM: + u32DeviceRespDataLength = tSCSIDeviceResp.u16DataResidue; + tSCSIDeviceResp.u32IOAddr += tSCSIDeviceResp.u16TfSzCurrent; + break; + case CARD_INDEX_FSM_SS: + u32DeviceRespDataLength = tSCSIDeviceResp.u16DataResidue; + break; + default:// SPI + u32DeviceRespDataLength = tSCSIDeviceResp.u16DataResidue * 2112; + break; + } + + // Mass Storage the thirteen case + if (tCBW.u32DataTransferLength == u32DeviceRespDataLength) { + // normal case + if (tCBW.u32DataTransferLength == 0) + eCase = MS13Case_1; // MassStorage case (1) + else { + if ((tCBW.CB0_cblen_lun_flag&0xFF) == tSCSIDeviceResp.u8Flags) { + if ((tCBW.CB0_cblen_lun_flag&0xFF) == CBW_FLAG_IN) + eCase = MS13Case_6; // MassStorage case (6) + else + eCase = MS13Case_12; // MassStorage case (12) + } + } + + //#ifdef DISPLAY_USB_INFORMATION + // vShowSCSI(); + //#endif + + } else { + if (tCBW.u32DataTransferLength == 0) + eCase = MS13Case_2_3; // MassStorage case (2)(3) + else if ((tCBW.CB0_cblen_lun_flag&0xFF) == CBW_FLAG_IN) { + if (u32DeviceRespDataLength == 0) + eCase = MS13Case_4; // MassStorage case (4) + else if (tSCSIDeviceResp.u8Flags == CBW_FLAG_IN) { + if (tCBW.u32DataTransferLength > u32DeviceRespDataLength) + eCase = MS13Case_5; // MassStorage case (5) + else + eCase = MS13Case_7_8; // MassStorage case (7)(8) + } + } + else { //tCBW.u8Flags == CBW_FLAG_OUT + if (u32DeviceRespDataLength == 0) + eCase = MS13Case_9; // MassStorage case (9) + else if (tSCSIDeviceResp.u8Flags == CBW_FLAG_OUT) { + if (tCBW.u32DataTransferLength > u32DeviceRespDataLength) + eCase = MS13Case_11; // MassStorage case (11) + else + eCase = MS13Case_10_13; // MassStorage case (10)(13) + } + } + +//#ifdef DISPLAY_USB_INFORMATION +// { + //vShowUsb(); +// DBG_DUMP("MSG: MS13Case = 0x%x\r\n", eCase); +// DBG_DUMP("MSG: , u32DeviceRespDataLength = 0x%x\r\n", u32DeviceRespDataLength); +// } +//#endif + + } + + // assume the next state is STATE_CSW + estate = MS_STATE_CSW; + switch (eCase) { + case MS13Case_2_3: + //debug_msg("S3\r\n"); + mUsbEPStallSet(IN_EP, DIRECTION_IN); + tCSW.u8Status = CSW_STATUS_PHASE_ERROR; + break; + case MS13Case_4: + //debug_msg("S4\r\n"); + mUsbEPStallSet(IN_EP, DIRECTION_IN); + break; + case MS13Case_5: + case MS13Case_6: + estate = eScsiIn(); + break; + case MS13Case_11: + case MS13Case_12: + estate = eScsiOut(); + break; + case MS13Case_7_8: + //debug_msg("S5\r\n"); + mUsbEPStallSet(IN_EP, DIRECTION_IN); + tCSW.u8Status = CSW_STATUS_PHASE_ERROR; + break; + case MS13Case_9: + mUsbEPStallSet(OUT_EP, DIRECTION_OUT); + break; + case MS13Case_10_13: + mUsbEPStallSet(OUT_EP, DIRECTION_OUT); + tCSW.u8Status = CSW_STATUS_PHASE_ERROR; + //debug_msg("S6\r\n"); + mUsbEPStallSet(IN_EP, DIRECTION_IN); + break; + default: // MS13Case_1; + // do nothing here + break; + } + return estate; +} + + +_THUMB2 MassStorageState eSCSI_CmdDecode(void) //trace, different from FUSB100-CardReader +{ + //debug_msg("eSCSI_CmdDecode\r\n"); + // Assume SCSI Response data length will be 0 + tSCSIDeviceResp.u16DataResidue = 0; + if (((tCBW.CB0_cblen_lun_flag >> 8)&0xFF) >= CARD_TYPE_MAX_REPORT) { + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + tSCSIsense.u8Key = KEY_NOT_READY; + tSCSIsense.u8KeyAdd = ADDKEY_LOGICAL_UNIT_NOT_SUPPORT; + } else { + // Parse SCSI command + //switch (tCBW.u8CB[0]) { // Operation Code + switch ((tCBW.CB0_cblen_lun_flag >> 24)&0xFF) { // Operation Code + case SCSI_OP_REQUEST_SENSE: + vSCSICmd_RequestSense(); + //debug_msg("vSCSICmd_RequestSense\r\n"); + break; + case SCSI_OP_MEDIUM_REMOVAL: + //vSCSICmd_MediumRemoval(); + debug_msg("SCSI_OP_MEDIUM_REMOVAL\r\n"); + break; + case SCSI_OP_INQUIRY: + //vSCSICmd_Inquiry(); + debug_msg("SCSI_OP_INQUIRY\r\n"); + break; + case SCSI_OP_MODE_SENSE: + vSCSICmd_ModeSense(); + //debug_msg("SCSI_OP_MODE_SENSE 22\r\n"); + break; + + case SCSI_OP_TEST_UNIT_READY: + case SCSI_OP_READ_CAPACITY: + case SCSI_OP_READ_10: + case SCSI_OP_WRITE_10: + case SCSI_OP_VERIFY: + //debug_msg("SCSI_OP_TEST_UNIT_READY\r\n"); + tSCSIsense.u8Key = KEY_NOT_READY; + tSCSIsense.u8KeyAdd = ADDKEY_MEDIUM_NOT_PRESENT; + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + break; + + default: + if (my_SCSICmd(&tCBW) < 0) { + //#ifdef USBROM_RTOS_DBG + debug_msg("MSG: SCSI cmd: UNSUPPOR\r\n"); + //#endif + vSCSICmd_Unsupport(); + } + break; + } + } + return eMassStorage13case(); +} + + + + + +_THUMB2 MassStorageState eUsbProessCBW(void) +{ + usb_DxFifoRdWr((unsigned char *)&tCBW, 31, 1); + + if(tCBW.u32Signature != CBW_SIGNATE) { + return MS_STATE_CBW; + } else { + // pass u32DataTransferLength to u32DataResidue + tCSW.u32DataResidue = tCBW.u32DataTransferLength; + + #ifdef USBROM_RTOS_DBG + //DBG_DUMP("MSG: tCSW.u32DataResidue = %d, dir = %d\r\n", tCBW.u32DataTransferLength, tCBW.u8Flags); + #endif + + // pass Tag from CBW to CSW + tCSW.u32Tag = tCBW.u32Tag; + // Assume Status is CMD_PASS + tCSW.u8Status = CSW_STATUS_CMD_PASS; + + return eSCSI_CmdDecode(); + } +} + +_THUMB2 void vUsbUnplug(void) +{ + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: Unplug.. pls check\r\n"); + //#endif + // mUsbUnPlug(); + ptusbdev->phy_tms |= BIT0; +} + +_THUMB2 void vUsb_BulkIntOnOff(void) +{ + //#ifdef USBROM_RTOS_DBG + //DBG_DUMP("MSG: st 0x%x", eUsbMassStorageState); + //#endif + + switch(eUsbMassStorageState) + { + case MS_STATE_CBW: + mUsbIntF2OUTEn(); + mUsbIntF0INDis(); + break; + case MS_STATE_CB_DMA_IN: + if (mUsbEPStallST (IN_EP, DIRECTION_IN)) { + // wait for clear feature, and then enable F0 + } + else + mUsbIntF0INEn(); + break; + case MS_STATE_CB_DMA_OUT: + mUsbIntF2OUTEn(); + break; + case MS_STATE_CSW: + mUsbIntF2OUTDis(); + if (mUsbEPStallST (IN_EP, DIRECTION_IN)) { + // wait for clear feature, and then enable F0 + } + else { + mUsbIntF0INEn(); + } + break; + case MS_STATE_BGD: + mUsbIntF2OUTDis(); + mUsbIntF0INDis(); + break; + default: + //#ifdef USBROM_RTOS_DBG + debug_msg("MSG: Error MS_STATE\r\n"); + //#endif + vUsbUnplug(); + break; + } +} + +_THUMB2 void vUsb_F0_In(void) +{ + switch(eUsbMassStorageState) + { + case MS_STATE_CSW: + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: EP1 IN CSW\r\n"); + //#endif + + if (trigger_done_cb) { + trigger_done_cb = 0; + + if (guiU2MsdcVendorDone_cb != NULL) { + if (guiU2MsdcVendorDone_cb((unsigned int)&tCBW) != 0) { + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + } + } + } + + usb_DxFifoRdWr((unsigned char *)&tCSW, 13, 0); + + //mUsbFIFODone(FIFO0); + eUsbMassStorageState = MS_STATE_CBW; + if(usbrom_exit == 1) + usbrom_exit = 2; + break; + case MS_STATE_CB_DMA_IN: + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: EP1 CS DMA IN\r\n"); + //#endif + eUsbMassStorageState = eScsiOut(); + break; + default: + //#ifdef USBROM_RTOS_DBG + debug_msg("MSG: Error FIFO0_IN interrupt.\r\n"); + //#endif + + break; + } + vUsb_BulkIntOnOff(); +} + +_THUMB2 void vUsb_F2_Out(unsigned int u32FIFOByteCount) +{ + switch(eUsbMassStorageState) { + case MS_STATE_CBW: + + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: EP2 Out CBW\r\n"); + //#endif + + if (u32FIFOByteCount == 31) { + eUsbMassStorageState = eUsbProessCBW(); + } + else{ + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: EP out STAL SET\r\n"); + //#endif + + mUsbEPStallSet(OUT_EP, DIRECTION_OUT); + } + break; + case MS_STATE_CB_DMA_OUT: + + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: EP2 Out CB DMA Out\r\n"); + //#endif + + eUsbMassStorageState = eScsiOut(); + break; + default: + + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: Error FIFO2_OUT interrupt.\r\n"); + //#endif + + break; + } + + vUsb_BulkIntOnOff(); +} + + + + +/////////////////////////////////////////////////////////////////////////////// +// bClear_feature() +// Description: +// 1. Send 2 bytes status to host. +// input: none +// output: TRUE or FALSE (BOOLEAN) +/////////////////////////////////////////////////////////////////////////////// +_THUMB2 signed int usb_Clear_feature(void) +{ + unsigned int ep_n; + unsigned int fifo_n; + signed int bdir; + + switch (mCxValue (tusb.u32UsbCmd)) { // FeatureSelector + case 0: // ENDPOINT_HALE + // Clear "Endpoint_Halt", Turn off the "STALL" bit in Endpoint Control Function Register + if(mCxIndex (tusb.u32UsbCmd) == 0x00) + tusb.bUsbEP0HaltSt = FALSE; + else { + ep_n = mCxIndex (tusb.u32UsbCmd) & 0x7F; // which ep will be clear + // over the Max. ep count ? + if (ep_n > FUSB200_MAX_EP) + return -1; + // the direction of this ep + // bdir =0 if OUT + bdir = mCxIndex (tusb.u32UsbCmd) & BIT7;; + // get the relatived FIFO number + if (bdir) + fifo_n = mUsbEPMapRd(ep_n) & 0x0F; + else + fifo_n = mUsbEPMapRd(ep_n) >> 4; + // over the Max. fifo count ? + if (fifo_n >= FUSB200_MAX_FIFO) + return -1; + + // Check the FIFO had been enable ? + if ((mUsbFIFOConfigRd(fifo_n) & BIT5) == 0) + return -1; + // bdir =0 if IN, 1 if OUT + bdir = bdir ? 0: 1; + mUsbEPRsTgSet(ep_n, bdir); // Set Rst_Toggle Bit + mUsbEPRsTgClr(ep_n, bdir); // Clear Rst_Toggle Bit + mUsbEPStallClr(ep_n, bdir); // Clear Stall Bit + vUsb_BulkIntOnOff(); + } + break; + case 1 : // Device Remote Wakeup + // Clear "Device_Remote_Wakeup", Turn off the"RMWKUP" bit in Main Control Register + mUsbRmWkupClr(); + break; + case 2 : // Test Mode + // do not break here + default : + return -1; + } + tusb.eUsbCxAction = ACT_DONE; + return 0; +} + + + +_THUMB2 signed int usb_StandardCommand(void) +{ + switch (mCxRequest (tusb.u32UsbCmd)) { // by Standard Request codes + //case 0: // get status + // return (usb_Get_status()); + + case 1: // clear feature + return (usb_Clear_feature()); + + //case 3: // set feature + // return (usb_Set_feature()); + + //case 5: // set address + // if (!tusb.bUsbEP0HaltSt) + // return(usb_Set_address()); + // break; + + //case 6: // get descriptor + // if (!tusb.bUsbEP0HaltSt) + // return(usb_Get_descriptor()); + // break; + + //case 8: // get configuration + // if (!tusb.bUsbEP0HaltSt) + // vGet_configuration(); + // return 0; + + //case 9: // set configuration + // if (!tusb.bUsbEP0HaltSt) + // return(usb_Set_configuration()); + // break; + + //case 10: // get interface + // if (!tusb.bUsbEP0HaltSt) + // return(usb_Get_interface()); + // break; + + // case 11: // set interface + // if (!tusb.bUsbEP0HaltSt) + // return(usb_Set_interface()); + // break; + + case 2: // Reserved for further use + case 4: // Reserved for further use + case 7: // set descriptor, not support + case 12: // synch frame, not support + default: + break; + } + return -1; +} + +/////////////////////////////////////////////////////////////////////////////// +// vUsb_ep0setup() +// Description: +// 1. Read 8-byte setup packet. +// 2. Decode command as Standard, Class, Vendor or NOT support command +// input: none +// output: none +/////////////////////////////////////////////////////////////////////////////// +_THUMB2 void vUsb_ep0setup(void) +{ + /* + if(tusb.bUsbChirpFinish == 0) + { + // first ep0 command after usb reset, means we can check usb speed right now. + tusb.bUsbChirpFinish = 1; + + if (ptusbdev->main_ctl & BIT6) { + tusb.bHighSpeed = 1; + //DBG_DUMP("MSG: L%x, high speed mode\r\n", tusb.u8LineCount ++); + } + else { + tusb.bHighSpeed = 0; + //DBG_DUMP("MSG: L%x, full speed mode\r\n", tusb.u8LineCount ++); + } + // Init AP + vUsbMassStorageInit(); + } + */ + + // select dma target fifo no.: + //ptusbdev->dma_fifo = BIT4; + + // Read 8-byte setup packet from FIFO + tusb.u32UsbCmd[0] = ptusbdev->dma_data; + tusb.u32UsbCmd[1] = ptusbdev->dma_data; + + #if 0//def USBROM_RTOS_DBG + DBG_DUMP("MSG: L%x, EP0Cmd: %x %x %x %x %x %x %x %x\r\n", + tusb.u8LineCount ++, (INT8U)(tusb.u32UsbCmd[0] >> 0) + , (INT8U)(tusb.u32UsbCmd[0] >> 8) + , (INT8U)(tusb.u32UsbCmd[0] >> 16) + , (INT8U)(tusb.u32UsbCmd[0] >> 24) + , (INT8U)(tusb.u32UsbCmd[1] >> 0) + , (INT8U)(tusb.u32UsbCmd[1] >> 8) + , (INT8U)(tusb.u32UsbCmd[1] >> 16) + , (INT8U)(tusb.u32UsbCmd[1] >> 24)); + #endif + + // Command Decode + switch (mCxType(tusb.u32UsbCmd)) { + case 0: // standard command + + //#ifdef USBROM_RTOS_DBG + //DBG_DUMP("MSG: Standard command\r\n"); + //#endif + + if (usb_StandardCommand() < 0) + tusb.eUsbCxAction = ACT_STALL; + break; +/* + case 1: // class command + + #ifdef USBROM_RTOS_DBG + DBG_DUMP("MSG: class command\r\n"); + #endif + + if (usb_ClassCommand() < 0) + tusb.eUsbCxAction = ACT_STALL; + break; + + case 2: // vendor command + #ifdef USBROM_RTOS_DBG + DBG_DUMP("MSG: vendor command\r\n"); + #endif +// if (usb_UsbVendorCommand() < 0 + tusb.eUsbCxAction = ACT_STALL; + break; +*/ + default: + // Invalid(bad) command, Return EP0_STALL flag + tusb.eUsbCxAction = ACT_STALL; + break; + } +} + + + + +_THUMB2 void vUsbInit(void) +{ + ptusbdev = ((volatile DEV *)(IOADDR_USB_REG_BASE + 0x100)); + + // init variables + tusb.eUsbCxAction = ACT_IDLE; + tusb.bUsbChirpFinish = 0; + + tusb.u16TxRxCounter = 0; + tusb.eUsbCxCommand = CMD_VOID; + tusb.u8UsbConfigValue = 0; + tusb.u8UsbInterfaceValue = 0; + tusb.u8UsbInterfaceAlternateSetting = 0; + tusb.bUsbEP0HaltSt = FALSE; + + // init hardware + //vFUSB200Init(); + tusb.u8LineCount = 1; + + tCSW.u32Signature = CSW_SIGNATE; + eUsbMassStorageState = MS_STATE_CBW; + mUsbIntF2OUTEn (); + mUsbIntF0INDis(); + +} + + + +_THUMB2 void vUsbIsr2(void) +{ + INT32U level1; + INT32U level2; + + level1 = ptusbdev->int_grp & ~ ptusbdev->int_mgrp; + + if (0 == level1) + return; + + if (level1 & BIT2) { //Group 2 + + level2 = ptusbdev->int_grp2 & ~ ptusbdev->int_mgrp2; + + if (level2) { + + //debug_msg("MSG: IntSCR2\r\n"); + + if (level2 & BIT0) { + //debug_msg("MSG: BUS RST\r\n"); + } + + if (level2 & BIT1) { + //debug_msg("MSG: BUS SUSPEND\r\n"); + ptusbdev->int_grp2 |= BIT1; + } + + if (level2 & BIT2) { + //debug_msg("MSG: BUS RESUME\r\n"); + ptusbdev->int_grp2 |= BIT2; + } + + if (level2 & BIT5) { + //debug_msg("MSG: TX0B\r\n"); + + ptusbdev->tx0byte |= 0; + ptusbdev->int_grp2 |= BIT5; + } + + if (level2 & BIT6) { + //debug_msg("MSG: RX0B\r\n"); + ptusbdev->rx0byte |= 0; + ptusbdev->int_grp2 |= BIT6; + } + + } + } + + + if (level1 & BIT0) { //Group 0 + level2 = ptusbdev->int_grp0 & ~ ptusbdev->int_mgrp0; + if (level2) { + //debug_msg("MSG: IntSCR0\r\n"); + + if (level2 & BIT0) { + //debug_msg("MSG: USB ep0 Setup\r\n"); + vUsb_ep0setup(); + } + else if (level2 & BIT3) { + //debug_msg("MSG: USB ep0 end\r\n"); + //vUsb_ep0end(); + } + if (level2 & BIT1) { + //debug_msg("MSG: USB ep0 TX\r\n"); + //vUsb_ep0tx(); + } + if (level2 & BIT2) { + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: USB ep0 RX\r\n"); + //#endif + //vUsb_ep0rx(); + } + if (level2 & BIT4) { + + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: USB ep0 fail\r\n"); + //#endif + // stall cx: mUsbEP0StallSet(); + //ptusbdev->cx_cf |= BIT2; + } + if (level2 & BIT5) { + + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: cmd abort\r\n"); + //#endif + ptusbdev->int_grp0 |= BIT5; + } + } + + + if (tusb.eUsbCxAction == ACT_STALL) { + ptusbdev->cx_cf |= BIT2; + + //#ifdef USBROM_RTOS_DBG + //DBG_DUMP("MSG: EP0 STALL\r\n"); + //#endif + } + else if (tusb.eUsbCxAction == ACT_DONE) { + ptusbdev->cx_cf |= BIT0; + + //#ifdef USBROM_RTOS_DBG + //DBG_DUMP("MSG: EP0 DONE\r\n"); + //#endif + } + // Clear Action + tusb.eUsbCxAction = ACT_IDLE; + + + } + + if (level1 & BIT1) { //Group Byte 1 + level2 = ptusbdev->int_grp1 & ~ ptusbdev->int_mgrp1; + + //#ifdef USBROM_RTOS_DBG + //debug_msg("MSG: IntSCR1\r\n"); + //#endif + + if (level2 & (BIT5 | BIT4)) { // F2 out (full or short) + vUsb_F2_Out(ptusbdev->fifo_bc[2]); + } + + if (level2 & BIT16) // F0 in + vUsb_F0_In(); + } +} + + + +_THUMB2 static INT32U calc_sum_v2(INT32U dat0, INT32U dat1, INT32U dat2, INT32U dat3) +{ + INT32U sum=0; + + sum = (dat0&0xFFFF)+((dat0>>16))+(dat1&0xFFFF)+((dat1>>16)) + + (dat2&0xFFFF)+((dat2>>16))+(dat3&0xFFFF)+((dat3>>16)) + 28; + + //DBG_DUMP("SUM = 0x%08X\r\n",sum); + return sum&0xFFFF; +} + +_THUMB2 INT32S my_SCSICmd(CBW * ptcbw) +{ + INT32U temp1, temp2; + INT32U CDB[4]; + + CDB[0] = ((ptcbw->CB0_cblen_lun_flag >> 24) & 0xFF) + ((ptcbw->CB1_CB15[0]&0xFFFFFF)<<8); + CDB[1] = ((ptcbw->CB1_CB15[0] >> 24) & 0xFF) + ((ptcbw->CB1_CB15[1]&0xFFFFFF)<<8); + CDB[2] = ((ptcbw->CB1_CB15[1] >> 24) & 0xFF) + ((ptcbw->CB1_CB15[2]&0xFFFFFF)<<8); + CDB[3] = ((ptcbw->CB1_CB15[2] >> 24) & 0xFF) + ((ptcbw->CB1_CB15[3]&0xFFFFFF)<<8); + + // Parse SCSI command + if (!(((CDB[0]&0xFF) == SCSI_OP_SET0)||((CDB[0]&0xFF) == SCSI_OP_SET1)||((CDB[0]&0xFF) == SCSI_OP_SET2))) + return -1; + + // check sum + if(calc_sum_v2(CDB[0],CDB[1],CDB[2],CDB[3])) { + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + u32Usb_buffer[0] = 0; + #ifdef USBROM_RTOS_DBG + DBG_DUMP("CHKSUM FAILED\r\n"); + #endif + return -1; + } + + tCSW.u8Status = CSW_STATUS_CMD_PASS; + + switch (((CDB[0] >> 8) &0xFF)) { + + case SCSIOP_OUT_OPEN_DEVICE: { + nvtdev_opened = 1; + #ifdef USBROM_RTOS_DBG + DBG_DUMP("SCSIOP_OUT_OPEN_DEVICE\r\n"); + #endif + } + break; + + case SCSIOP_IN_WAIT_DONE: { + usbrom_exit = 1; + #ifdef USBROM_RTOS_DBG + DBG_DUMP("SCSIOP_IN_WAIT_DONE\r\n"); + #endif + } + break; + + + case SCSIOP_IN_IS_NVT: { + tSCSIDeviceResp.u8Flags = CBW_FLAG_IN; + tSCSIDeviceResp.u8MemIndex = CARD_INDEX_SRAM; + tSCSIDeviceResp.u16DataResidue = 4; + + tCSW.u8Status = CSW_STATUS_CMD_PASS; + u32Usb_buffer[0] = 0x70210000; + #ifdef USBROM_RTOS_DBG + DBG_DUMP("SCSIOP_IN_IS_NVT\r\n"); + #endif + } + break; + + case SCSIOP_OUT_ADDR_WRITE: { + + if(nvtdev_opened == 0) { + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + } else { + // address + temp1 = ((CDB[0]>>16)&0xFFFF)+((CDB[1]&0xFFFF)<<16);//u8to32(&ptcbw->u8CB[2]); + // data + temp2 = ((CDB[1]>>16)&0xFFFF)+((CDB[2]&0xFFFF)<<16);//u8to32(&ptcbw->u8CB[6]); + + *(INT32U *)temp1 = temp2; + __asm__ __volatile__("dsb\n\t"); + + #ifdef USBROM_RTOS_DBG + DBG_DUMP("SCSIOP_OUT_ADDR_WRITE 0x%08X 0x%08X\r\n", temp1, temp2); + #endif + } + } + break; + + case SCSIOP_IN_ADDR_READ: { + + if(nvtdev_opened == 0) { + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + } else { + // address + temp1 = ((CDB[0]>>16)&0xFFFF)+((CDB[1]&0xFFFF)<<16);//u8to32(&ptcbw->u8CB[2]); + + tSCSIDeviceResp.u8Flags = CBW_FLAG_IN; + tSCSIDeviceResp.u8MemIndex = CARD_INDEX_SRAM; + tSCSIDeviceResp.u16DataResidue = 8; + u32Usb_buffer[0] = temp1; + u32Usb_buffer[1] = *((INT32U *)temp1); + + #ifdef USBROM_RTOS_DBG + DBG_DUMP("SCSIOP_IN_ADDR_READ 0x%08X 0x%08X\r\n", temp1, u32Usb_buffer[1]); + #endif + } + } + break; +#if 0 //only rom code support + case SCSIOP_OUT_WRLOADER: { + + if(nvtdev_opened == 0) { + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + } else { + // address + temp1 = ((CDB[0]>>16)&0xFFFF)+((CDB[1]&0xFFFF)<<16);//u8to32(&ptcbw->u8CB[2]); + + tSCSIDeviceResp.u32IOAddr = temp1; + tSCSIDeviceResp.u8Flags = CBW_FLAG_OUT; + tSCSIDeviceResp.u8MemIndex = CARD_INDEX_FSM_SS; + tSCSIDeviceResp.u16DataResidue = ptcbw->u32DataTransferLength; + + #ifdef USBROM_RTOS_DBG + DBG_DUMP("SCSIOP_OUT_WRLOADER 0x%08X 0x%08X\r\n", temp1, tSCSIDeviceResp.u16DataResidue); + #endif + + } + } + break; +#endif + default: { + if(nvtdev_opened == 0) { + tCSW.u8Status = CSW_STATUS_CMD_FAIL; + } else { + int ret = -1; + unsigned int OutDataBuf=0, insize=0; + + if (guiU2MsdcCheck_cb != NULL) { + ret = guiU2MsdcCheck_cb((unsigned int)ptcbw, (unsigned int *) &OutDataBuf, (unsigned int *)&insize); + } else { + ret = -1; + } + + if(ret == 0) { + + if (ptcbw->CB0_cblen_lun_flag & CBW_FLAG_IN) { + tSCSIDeviceResp.u32IOAddr = OutDataBuf; + tSCSIDeviceResp.u8Flags = CBW_FLAG_IN; + tSCSIDeviceResp.u8MemIndex = CARD_INDEX_FSM_SS; + tSCSIDeviceResp.u16DataResidue = insize; + + } else { + tSCSIDeviceResp.u32IOAddr = OutDataBuf; + tSCSIDeviceResp.u8Flags = CBW_FLAG_OUT; + tSCSIDeviceResp.u8MemIndex = CARD_INDEX_FSM_SS; + tSCSIDeviceResp.u16DataResidue = ptcbw->u32DataTransferLength; + } + + trigger_done_cb = 1; + } else { + return ret; + } + } + } + break; + + } + + return 0; + +} + + + +_THUMB2 void fLib_USB_Update_FW(void) +{ + debug_msg("USBFW UPDATE\r\n"); + + vUsbInit(); + + while (1) { + + vUsbIsr2(); + + if(usbrom_exit > 1) { + //mdelay(300); //make sure that pc recevie scsi status + timer_delay(300000); + vUsbUnplug(); + timer_delay(300000); + //mdelay(300); //make sure that pc recevie usb plug-out single + break; + } + + } + + usbrom_exit = 0; + +} + diff --git a/board/novatek/ns02501/loader/Project/Model/Src/USB/usb_update.h b/board/novatek/ns02501/loader/Project/Model/Src/USB/usb_update.h new file mode 100755 index 000000000000..dde4570782d9 --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/Src/USB/usb_update.h @@ -0,0 +1,323 @@ + +#ifndef __USB_UPDATE_H +#define __USB_UPDATE_H +#include "scsi_op.h" + + +#define BIT0 0x00000001L +#define BIT1 0x00000002L +#define BIT2 0x00000004L +#define BIT3 0x00000008L +#define BIT4 0x00000010L +#define BIT5 0x00000020L +#define BIT6 0x00000040L +#define BIT7 0x00000080L +#define BIT8 0x00000100L +#define BIT9 0x00000200L +#define BIT10 0x00000400L +#define BIT11 0x00000800L +#define BIT12 0x00001000L +#define BIT13 0x00002000L +#define BIT14 0x00004000L +#define BIT15 0x00008000L +#define BIT16 0x00010000L +#define BIT17 0x00020000L +#define BIT18 0x00040000L +#define BIT19 0x00080000L +#define BIT20 0x00100000L +#define BIT21 0x00200000L +#define BIT22 0x00400000L +#define BIT23 0x00800000L + + +typedef int (*MSDC_Verify_CB)(unsigned int pCmdBuf, unsigned int *pDataBuf, unsigned int *IN_size); ///< Callback for verify the Vendor Command is supported or not +typedef int (*MSDC_VenDone_CB)(unsigned int pCmdBuf); ///< Callback for verify the Vendor Command is supported or not + + +// KEY_ILLEGAL_REQUEST: Additional key +#define ADDKEY_INVALID_CMD_OP_CODE 0x20 +#define ADDKEY_INVALID_FIELD_IN_CMD 0x24 + +#define CBW_FLAG_IN 0x80 +#define CBW_FLAG_OUT 0x00 + +// Endpoint or FIFO direction define +#define DIRECTION_IN 0 ///1 +#define DIRECTION_OUT 1 ///0 + +#define EP0 0x00 +#define EP1 0x01 +#define EP2 0x02 +#define EP3 0x03 + +// FIFO number define +#define FIFO0 0x0 +#define FIFO1 0x1 +#define FIFO2 0x2 +#define FIFO3 0x3 +#define FIFO4 0x4 +#define FIFO5 0x5 +#define FIFO6 0x6 +#define FIFO7 0x7 +#define FIFO8 0x8 +#define FIFO9 0x9 + +#define OUT_EP EP2 +#define IN_EP EP1 +#define OUT_FIFO FIFO2 +#define IN_FIFO FIFO0 + +typedef enum { + MS13Case_1 = 0, + MS13Case_2_3, + MS13Case_4, + MS13Case_5, + MS13Case_6, + MS13Case_7_8, + MS13Case_9, + MS13Case_10_13, + MS13Case_11, + MS13Case_12 +} MassStorage13Case; + +#define CBW_SIGNATE 0x43425355 +#define CSW_SIGNATE 0x53425355 +#define CSW_STATUS_CMD_PASS 0x00 +#define CSW_STATUS_CMD_FAIL 0x01 +#define CSW_STATUS_PHASE_ERROR 0x02 + +// Request Sense data format +#define SENSE_OFFSET_KEY 0x02 +#define SENSE_OFFSET_ADD 0x0C +#define SENSE_OFFSET_ADD_QUALIFIER 0x0D + +// KEY_NO_SENSE: Additional key +#define ADDKEY_NO_ADDITIONAL 0x00 + +// all response data length +#define DATA_LENGTH_INQUIRY 36 +#define DATA_LENGTH_REQUEST_SENSE 18 +#define DATA_LENGTH_MODE_SENSE 8 + +// SCSI command operation code +#define SCSI_OP_TEST_UNIT_READY 0x00 +#define SCSI_OP_REQUEST_SENSE 0x03 +#define SCSI_OP_INQUIRY 0x12 +#define SCSI_OP_MODE_SELECT 0x15 +#define SCSI_OP_MODE_SENSE 0x1A +#define SCSI_OP_MEDIUM_REMOVAL 0x1E +#define SCSI_OP_READ_FORMAT_CAPACITY 0x23 // unsupported +#define SCSI_OP_READ_CAPACITY 0x25 +#define SCSI_OP_READ_10 0x28 +#define SCSI_OP_WRITE_10 0x2A +#define SCSI_OP_VERIFY 0x2F + +#define CARD_INDEX_SRAM 7 +#define CARD_INDEX_FSM_SS 3 +#define CARD_TYPE_MAX_REPORT 1 + +// KEY_NOT_READY: Additional key +#define ADDKEY_LOGICAL_UNIT_NOT_READY 0x04 +#define ADDKEY_LOGICAL_UNIT_NOT_SUPPORT 0x25 +#define ADDKEY_MEDIUM_NOT_PRESENT 0x3A + +// Sense key +#define KEY_NO_SENSE 0x00 +#define KEY_RECOVERED_ERROR 0x01 +#define KEY_NOT_READY 0x02 +#define KEY_MEDIUM_ERROR 0x03 +#define KEY_HARDWARE_ERROR 0x04 +#define KEY_ILLEGAL_REQUEST 0x05 +#define KEY_UNIT_ATTENTION 0x06 +#define KEY_DATA_PROTECT 0x07 +#define KEY_BLANK_CHECK 0x08 +#define KEY_VENDOR_SPECIFIC 0x09 +#define KEY_COPY_ABORTED 0x0A +#define KEY_ABORTED_CMD 0x0B +#define KEY_OBSOLETE 0x0C +#define KEY_VOLUMN_OVERFLOW 0x0D +#define KEY_MISCOMPARE 0x0E +#define KEY_RESERVED 0x0F + +typedef struct // SCSI device response +{ + unsigned int u8MemIndex; // current access memory type + unsigned int u8Flags; // In or Out + unsigned int u32IOAddr; // block addr in Card controller + unsigned int u16DataResidue; // residue (block count for card content, or byte count for information) + unsigned int u16TfSzCurrent; // current transfer length (block count for card content, or byte count for information) +} SCSIDeviceResp; + +typedef struct SCSI_Sense_Data +{ + unsigned int u8Key; + unsigned int u8KeyAdd; +} SCSISense; + +typedef enum { + MS_STATE_IDLE = 0, + MS_STATE_CBW = 1, + MS_STATE_CB_DMA_IN = 2, + MS_STATE_CB_DMA_OUT = 3, + MS_STATE_CSW = 4, + MS_STATE_STALL = 5, + MS_STATE_BGD = 6 +} MassStorageState; + + +typedef struct CommandBlockWrapper +{ + unsigned int u32Signature; + unsigned int u32Tag; + unsigned int u32DataTransferLength; + unsigned int CB0_cblen_lun_flag; + unsigned int CB1_CB15[4]; + //unsigned char u8Flags; + //unsigned char u8LUN; + //unsigned char u8CBLength; + //unsigned char u8CB[16]; +} CBW; + +typedef struct CommandStatusWrapper +{ + unsigned int u32Signature; + unsigned int u32Tag; + unsigned int u32DataResidue; + unsigned int u8Status; +} CSW; + +// Host Controller (HC) +typedef struct { + INT32U cap; // 0x00: capability + INT32U ports; // 0x04: Structural Parameter + INT32U capp; // 0x08: capability Parameter + INT32U reserved1; // 0X0c + INT32U cmd; // 0x10: USB command + INT32U status; // 0X14: status + INT32U int_en; // 0X18: interrupt enable + INT32U fm_idx; // 0X1c: frame Index + INT32U reserved2; // 0x20 + INT32U periodic; // 0X24: periodic Frame List Base Address. must 4KB align. + INT32U asynch; // 0X28: Current Asynchronous List Address, must 32B align. + INT32U reserved3; // 0X2c + INT32U port; // 0x30: port status and Control + INT32U reserved4[3]; // 0X34 ~ 0X3c + INT32U misc; // 0x40 + INT32U reserved5[15]; // 0x44 ~ 0x7C +} HC; + +// OTG Controller (OTG) +typedef struct { + INT32U ctl_st; // 0x80: control/status + INT32U int_st; // 0x84: interrupt status + INT32U int_en; // 0x88: interrupt enable + INT32U reserved[13]; // 0x8C ~ 0xBC +} OTG; + +// Global Controller (GL) +typedef struct { + INT32U int_st; // 0xC0: interrupt status + INT32U interrupt; // 0xC4: interrupt mask + INT32U reserved[14]; // 0xC8 ~ 0xFC +} GL; + +// Device Controller (DEV) +typedef struct { + INT32U main_ctl; // 0x100: device main control + INT32U dev_adr; // 0x104: device address + INT32U tst_ep; // 0x108: device test + INT32U frm_no; // 0x10C: device SOF [13: 11] SOF micro frame number, [10: 0] SOF frame number + INT32U sof_tmsk; // 0x110: device SOF mask timer [15: 0] SOF mask timer + INT32U phy_tms; // 0x114: PHY test mode selector + INT32U vnd_ctl; // 0x118: vendor specific IO control + INT32U cx_cs; // 0x11C: CX configuration and status + INT32U cx_cf; // 0x120: CX configuration and FIFO empty status + INT32U idle_cnt; // 0x124: Device idel counter + INT32U cx_dataport; // 0x128: device cx data register + INT32U reserved1[1]; // 0x128 ~ 0x12C + INT32U int_mgrp; // 0x130: mask of interrupt group + INT32U int_mgrp0; // 0x134: mask of interrupt source group 0 + INT32U int_mgrp1; // 0x138: mask of interrupt source group 1 + INT32U int_mgrp2; // 0x13C: mask of interrupt source group 2 + INT32U int_grp; // 0x140: interrupt group + INT32U int_grp0; // 0x144: interrupt group 0 + INT32U int_grp1; // 0x148: interrupt group 1 + INT32U int_grp2; // 0x14C: interrupt group 2 + INT32U rx0byte; // 0x150: receive zero-length data packet + INT32U tx0byte; // 0x154: rtransfer zero-length data packet + INT32U iso_seq_err; // 0x158: iso. sequential error/abort + INT32U reserved2; // 0x15C + INT32U ep_xpsz[2][8]; // 0x160: IN endpoint x MaxPacketSize Reg + // 0x170: IN endpoint x MaxPacketSize Reg + // 0x180: OUT endpoint x MaxPacketSize Reg + // 0x190: OUT endpoint x MaxPacketSize Reg + INT8U ep_map[8]; // 0x1A0: endpoint 1 ~ 8 map Reg + INT8U fifo_map[4]; // 0x1A8: FIFO 0 ~ 3 map Reg + INT8U fifo_cfg[4]; // 0x1AC: FIFO 0 ~ 3 configuration + INT32U fifo_bc[4]; // 0x1B0: FIFO x instruction and byte count + INT32U dma_fifo; // 0x1C0: dma target FIFO number + INT32U reserved3; // 0x1C4 + INT32U dma_ctl; // 0x1C8: DMA controller parameter setting 1 + INT32U dma_addr; // 0x1CC: DMA controller parameter setting 2, address + INT32U dma_data; // 0x1D0: DMA controller parameter setting 3, Cx data +} DEV; + +// OTG Controller +typedef struct { + HC hc; // 0x00 ~ 0x7F + OTG otg; // 0x80 ~ 0xBF + GL gl; // 0xC0 ~ 0xFF + DEV dev; // 0x100 ~ 0x1FF +} OTG200; + + + +typedef enum +{ + ACT_IDLE, + ACT_DONE, + ACT_STALL, + + ACT_DUMMY = 0x80000000 +} Action; + +typedef enum +{ + CMD_VOID, // No command + CMD_GET_DESCRIPTOR, // Get_Descriptor command + CMD_SET_DESCRIPTOR, // Set_Descriptor command + + CommandType_dummy = 0x80000000 +} CommandType; + +typedef struct USB_s +{ + // end pointer 0 information + unsigned int u32UsbCmd[8/4]; + unsigned int bUsbChirpFinish; + Action eUsbCxAction; + unsigned int u16TxRxCounter; + unsigned char * pu8Descriptor; + unsigned int u8UsbConfigValue; + unsigned int u8UsbInterfaceValue; + unsigned int u8UsbInterfaceAlternateSetting; + unsigned int bUsbEP0HaltSt; + unsigned int bHighSpeed; // high speed + CommandType eUsbCxCommand; + // for display + unsigned int u8LineCount; +} USB_st; + + + + + + + +#endif /* __USB_OTG_H */ + + + + + + diff --git a/board/novatek/ns02501/loader/Project/Model/Src/prj_main.c b/board/novatek/ns02501/loader/Project/Model/Src/prj_main.c new file mode 100755 index 000000000000..5f8f876f6581 --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/Src/prj_main.c @@ -0,0 +1,251 @@ +/* + Project layer Main control function + + This file is implement by user mode + + @file prj_main.c + + Copyright Novatek Microelectronics Corp. 2015. All rights reserved. +*/ + +#include "fuart.h" +#include "fat.h" +#include "rtc.h" +#include "timer.h" +#include "StorageDef.h" +#include "global.h" +#include "Clock.h" +#include "string.h" +#include "prj_main.h" +#include "debug.h" + +#define _THUMB2 __attribute__((target("thumb2"))) + +#if defined(_STORAGEINT_EMMC_NAND_COMBO_) +#if (CHECK_CARD_EXIST == ENABLE) +#undef CHECK_CARD_EXIST +#define CHECK_CARD_EXIST DISABLE +#endif + +#endif + +extern UINT32 LoaderInternalInfo[]; + +#if (DEBUG_MSG == DISABLE) +//weak function mechanism for debug msg output +extern void debug_disable_msg(void); +void debug_disable_msg(void) {} +#endif + +#if defined(_Low_Pwr_) +//weak function mechanism for debug msg output +extern void Low_pwr(void); +void Low_pwr(void) {} +#endif + +#if defined(_DDR_SIZE_ALL_IN_ON_) +//weak function mechanism for debug msg output +extern void DDR_SIZE_ALL_IN_ON(void); +void DDR_SIZE_ALL_IN_ON(void) {} +#endif +#if (SPECIAL_KEY_UPDATE == ENABLE) +/** + Check special key1(s) is(are) pressed. + + Check special key1(s) is(are) pressed or not. + + @return Key pressed status + - @b TRUE: Special key(s) is(are) pressed + - @b FALSE: Otherwise +*/ +static BOOL prj_isSpecialKeyPressed(void) +{ + // Detect key example, must press shutter2 and playback mode keys + // OUT_0: DGPIO 0 + // OUT_1: DGPIO 14 + // OUT_2: DGPIO 2 + // OUT_3: DGPIO 3 + // OUT_4: DGPIO 4 + // IN_0 : DGPIO 5 + // IN_1 : DGPIO 6 + // IN_2 : DGPIO 7 + // IN_3 : DGPIO 8 + // KEY_IN_0 KEY_IN_1 KEY_IN_2 KEY_IN_3 + // KEY_OUT_0 MENU SET PLAYBACK DISPLAY + // KEY_OUT_1 WIDE LEFT MOVIE + // KEY_OUT_2 TELE DOWN TRASH + // KEY_OUT_3 SHUTTER2 RIGHT CAPTURE + // KEY_OUT_4 SHUTTER1 UP + // Add the necessary code.. + return TRUE; +} +#endif + +#if (CHECK_CARD_EXIST == ENABLE) +// MC16 default is config as input and pull up +_THUMB2 static BOOL prj_checkCardExist(void) +{ +#if (STORAGE_EXT_TYPE == STORAGE_EXT_ETH) + return TRUE; // force ethernet probe DHCP server +#else + return TRUE; //(gpio_getPin(DGPIO_CARD_DETECT) == 0 ? TRUE : FALSE); +#endif +} +#endif + +#if 0 +static BOOL bl_spiIdentify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacityID, PSPI_IDENTIFY pIdentify) +{ + // Sample to support SST25VF032 + if ((uiMfgID == 0xBF) && + (uiCapacityID == 0x4A)) { + pIdentify->bDualRead = FALSE; + pIdentify->bSupportAAI = TRUE; + pIdentify->bSupportEWSR = TRUE; + pIdentify->uiFlashSize = 4 * 1024 * 1024; + return TRUE; + } + + return FALSE; +} + +static void bl_flashLED(void) +{ + // use GPIO to control LED +} +#endif + +// main entry of project layer code +_THUMB2 void prj_main(void) +{ +#if !defined(_STORAGEINT_NONE_) + PSTORAGE_OBJ strg_obj = NULL; +#endif + +#if defined(_STORAGEINT_EMMC_) +#if !((STORAGE_EXT_TYPE == STORAGE_EXT_USB) || (STORAGE_EXT_TYPE == STORAGE_EXT_UART)) + UINT32 high_speed = FALSE; +#endif +#endif + + printf("\r\nLD_VER %X.%X.%X %s", + (LoaderInternalInfo[1] >> 28) & 0xF, + (LoaderInternalInfo[1] >> 24) & 0xF, + (LoaderInternalInfo[1] >> 16) & 0xF, + _LOADER_VERSION_STR_); + + + loader_setVersion(_LDR_VER_); + // Print project layer info + if((LoaderInternalInfo[6] & 0x100000) == 0x100000) { + if(gpio_getPin((((LoaderInternalInfo[6]>>12)&0x7)*32) + ((LoaderInternalInfo[6]>>15)&0x1f))) { + debug_msg(_LOADER_VERSION_STR2_); + } else { + debug_msg(_LOADER_VERSION_STR_); + } + } else { + debug_msg(_LOADER_VERSION_STR_); + } + + // Setup loader/fw file names + loader_setUpdateFwName(_UPDATE_FW_NAME_); + loader_setUpdateLdrName(_UPDATE_LOADER_NAME_); + loader_setRunFwName(_RUN_FW_NAME_); + // Setup FW_MAC_CODE_SIZE (i.e. FWResvSize in RTOS) + +#if 0 + // Sample to hook spi flash extending function + flash_installIdentifyCB(bl_spiIdentify); +#endif + +#if 0 + // Sample to hook flash programming LED callback + flash_installAccessCB(bl_flashLED); +#endif + +#if defined(_STORAGEINT_EMMC_) +#if defined(_FASTBOOT_) || defined(_DIRECT_BOOT_) + high_speed = TRUE; +#endif +#endif + +#if (SPECIAL_KEY_UPDATE == ENABLE) + loader_installSpecialKeyCB(prj_isSpecialKeyPressed); +#endif + +#if (CHECK_CARD_EXIST == ENABLE) + loader_installCardDetectCB(prj_checkCardExist); +#endif + + +#if defined(_STORAGEINT_NandSpi_) + strg_obj = nand_get_storage_object(); +#if (SPI_PINMUX_SETTING == SPI_PINMUX_4BITS) + strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_SUPPORT_4BITS, TRUE); +#endif + loader_setStorageIntType(STORAGEINT_SPI_NAND, strg_obj); + +#elif defined(_STORAGEINT_NandEccBCH_) + strg_obj = nand_bch_get_storage_object(); +#if (SPI_PINMUX_SETTING == SPI_PINMUX_4BITS) + strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_SUPPORT_4BITS, TRUE); +#endif + loader_setStorageIntType(STORAGEINT_SPI_NAND, strg_obj); + // set Nand Flash speed to 96MHz + //strg_obj->flash_setFrequency(96); +#elif defined(_STORAGEINT_SpiFlash_) + strg_obj = nor_get_storage_object(); +#if (SPI_PINMUX_SETTING == SPI_PINMUX_4BITS) + strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_SUPPORT_4BITS, TRUE); +#endif + loader_setStorageIntType(STORAGEINT_SPI_NOR, strg_obj); +#elif defined(_STORAGEINT_EMMC_) + strg_obj = emmc_get_storage_object(); + if (top_get_bs() == BOOT_SOURCE_EMMC_8BIT) { + strg_obj->flash_setConfig(FLASH_CFG_ID_EMMC_SUPPORT_8BITS, TRUE); + debug_msg("[8bit]\r\n"); + } else if (top_get_bs() == BOOT_SOURCE_EMMC_4BIT) { + debug_msg("[4bit]\r\n"); + } else { +#if (EMMC_PINMUX_SETTING == EMMC_PINMUX_8BITS) + strg_obj->flash_setConfig(FLASH_CFG_ID_EMMC_SUPPORT_8BITS, TRUE); + debug_msg("CFG[8bit]\r\n"); +#else + debug_msg("CFG[4bit]\r\n"); +#endif + } +#if !((STORAGE_EXT_TYPE == STORAGE_EXT_USB) || (STORAGE_EXT_TYPE == STORAGE_EXT_UART)) + strg_obj->flash_setConfig(FLASH_CFG_ID_HIGH_SPEED, high_speed); +#endif + loader_setStorageIntType(STORAGEINT_EMMC, strg_obj); +#elif defined(_STORAGEINT_EMMC_NAND_COMBO_) + if (top_get_bs() == BOOT_SOURCE_SPI_NAND_2K || top_get_bs() == BOOT_SOURCE_SPI_NAND_4K) { + debug_msg_var("NAND,BS=", top_get_bs()); + strg_obj = nand_get_storage_object(); +#if (SPI_PINMUX_SETTING == SPI_PINMUX_4BITS) + strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_SUPPORT_4BITS, TRUE); +#endif + loader_setStorageIntType(STORAGEINT_SPI_NAND, strg_obj); + } else if (top_get_bs() == BOOT_SOURCE_EMMC_4BIT || top_get_bs() == BOOT_SOURCE_EMMC_8BIT) { + debug_msg("eMMC"); + strg_obj = emmc_get_storage_object(); + if (top_get_bs() == BOOT_SOURCE_EMMC_8BIT) { + strg_obj->flash_setConfig(FLASH_CFG_ID_EMMC_SUPPORT_8BITS, TRUE); + debug_msg("[8bit]\r\n"); + } else { + debug_msg("[4bit]\r\n"); + } + loader_setStorageIntType(STORAGEINT_EMMC, strg_obj); + } else if (top_get_bs() == BOOT_SOURCE_SPI) { + debug_msg("NOR\r\n"); + strg_obj = nor_get_storage_object(); +#if (SPI_PINMUX_SETTING == SPI_PINMUX_4BITS) + strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_SUPPORT_4BITS, TRUE); +#endif + loader_setStorageIntType(STORAGEINT_SPI_NOR, strg_obj); + } else { + debug_msg_var("unknow BS=", top_get_bs()); + } +#endif +} + diff --git a/board/novatek/ns02501/loader/Project/Model/Src/prj_main.h b/board/novatek/ns02501/loader/Project/Model/Src/prj_main.h new file mode 100755 index 000000000000..d1b08f8e9002 --- /dev/null +++ b/board/novatek/ns02501/loader/Project/Model/Src/prj_main.h @@ -0,0 +1,80 @@ +/** + Loader project header file + + Loader project header file + + @file prj_main.h + @note Nothing +*/ + +#ifndef _PRJ_MAIN_H +#define _PRJ_MAIN_H + +#include "constant.h" +#include "loader.h" +#include "GPIO.h" + +// Define SPECIAL_KEY_UPDATE == ENABLE will require user to press special key +// to update firmware +#ifndef SPECIAL_KEY_UPDATE +#define SPECIAL_KEY_UPDATE DISABLE +#endif + +#ifndef SPI_PINMUX_NORMAL +#define SPI_PINMUX_NORMAL (0) +#endif + +#ifndef SPI_PINMUX_4BITS +#define SPI_PINMUX_4BITS (1) +#endif + +#ifndef SPI_PINMUX_SETTING +#define SPI_PINMUX_SETTING (SPI_PINMUX_4BITS) +#endif + +// Define MACROs for external storage +// +#ifndef STORAGE_EXT_UNKOWN +#define STORAGE_EXT_UNKOWN (0) +#endif + +#ifndef STORAGE_EXT_SDIO1 +#define STORAGE_EXT_SDIO1 (1) +#endif + +#ifndef STORAGE_EXT_SDIO2 +#define STORAGE_EXT_SDIO2 (2) +#endif + +#ifndef STORAGE_EXT_UART +#define STORAGE_EXT_UART (3) +#endif + +#ifndef STORAGE_EXT_USB +#define STORAGE_EXT_USB (4) +#endif + +#ifndef STORAGE_EXT_ETH +#define STORAGE_EXT_ETH (5) +#endif + +#ifndef STORAGE_EXT_NONE +#define STORAGE_EXT_NONE (6) +#endif + +#ifndef STORAGE_EXT_TYPE +#define STORAGE_EXT_TYPE (STORAGE_EXT_SDIO1) +#endif + + + +// Card detect GPIO offset +#define DGPIO_CARD_DETECT (D_GPIO_1) + + +#define CHECK_CARD_EXIST (ENABLE) + +// disable debug msg +#define DEBUG_MSG (ENABLE) + +#endif diff --git a/board/novatek/ns02501/loader/Tools/Bin/Configram533 b/board/novatek/ns02501/loader/Tools/Bin/Configram533 new file mode 100755 index 0000000000000000000000000000000000000000..a1cc52984189ac9c5a810c65fa1605720bffeee3 GIT binary patch literal 1987632 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 XX8+^7HzhY;?92HNYk`8FL8|`;{J`_3 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/Tools/Bin/bfc b/board/novatek/ns02501/loader/Tools/Bin/bfc new file mode 100755 index 0000000000000000000000000000000000000000..5c85fdafce2ad6aaf62b117f24a9f60b3a6f2340 GIT binary patch literal 893344 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%0Dg_1@D>oLOy_5-WIVrnwWb*Ae%gg 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 HkCFciVesmd literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/Tools/Bin/encrypt_boot b/board/novatek/ns02501/loader/Tools/Bin/encrypt_boot new file mode 100755 index 0000000000000000000000000000000000000000..899da5df7a16745ab5fac667b360c6977e05fdd6 GIT binary patch literal 75800 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 O{KZVRwX1rb`F{W&mY=i$ literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/Tools/Bin/encrypt_boot_dump b/board/novatek/ns02501/loader/Tools/Bin/encrypt_boot_dump new file mode 100755 index 0000000000000000000000000000000000000000..7feb8582c19b195cfbd5b4961f26e59e3a9eb37f GIT binary patch literal 202856 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 literal 0 HcmV?d00001 diff --git a/board/novatek/ns02501/loader/Tools/Bin/nvt-ld-op b/board/novatek/ns02501/loader/Tools/Bin/nvt-ld-op new file mode 100755 index 0000000000000000000000000000000000000000..99cf292f35b33b287b40943ac101b2f16c64cc3c GIT binary patch literal 754576 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%0AtvhYcfjw99?uiAx6 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 WKU@Fa*V*RRudY)j$@*`jQvVCBRu%OC literal 0 HcmV?d00001 From 7b63cd515d05ac56ffb520b1f42c19cbc1bde015 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:48:43 +0000 Subject: [PATCH 24/38] arm: novatek: add the Novatek NT98321 and NT98323 (NA51068) The NA51068 is Novatek's DVR/NVR die, sold as NT98321 (DDR3) and NT98323 (DDR4): two Cortex-A9s with the A9 MPCore at 0xF9C00000 and Faraday- heritage peripherals, external DDR (512 MiB or more on every SDK board). Its boot chain is NA51089's: the mask ROM starts the SDK's loader (board/novatek/na51068/loader), which trains the DDR, reads the device tree at flash 0x10000, unpacks U-Boot from /nor/partition_uboot to /nvt_memory_cfg/uboot and checks the HEADINFO at 0x300. - Kconfig: NVT_NA51068 and TARGET_NT98321 / TARGET_NT98323; SYS_BOARD "na51068"; NVT_SFLASH and MMC_NVT, NA51089's own blocks, depend on NVT_NA51089 now. - arch/arm/mach-novatek/na51068.c: the HEADINFO ("ub51068", BinCtrl SMP as the vendor U-Boot sets it, so that the loader parks the second core at /nvt_memory_cfg/core2entry2 for Linux); the A9 global timer, 64 bits at PLL16's rate (an eighth of the CPU's, CG+0x107C0); reset through the watchdog, as the vendor kernel does; the DRAM size from the loader's tree (/nvt_memory_cfg/dram), NVT_DDR_SIZE (512 MiB) as the fallback. - include/configs/novatek.h: the UART at 0xFE200000 runs at 48 MHz; Linux gets the SDK boards' share, 192 MiB (NT98323) or 160 MiB (NT98321), the media pool the rest; the device tree and an initrd stay in the first 128 MiB (CONFIG_SYS_BOOTMAPSZ): just below 192 MiB, where bootm would put them, the SDK's kernel 4.9 hangs before its first message. - board/novatek/na51068: the loader's tree copied to ${fdtaddr} for bootm, the /memory and /hdal-memory/media split at ${osmem}, U-Boot kept in the loader's region for it (0x1E000000, the SDK's: past Linux and its CMA pools at 0x02000000-0x04800000, below the second core's pen at 0x1FF80000); the Ethernet glue of both MACs (RGMII, RMII or the embedded PHY, per /top@fe030000/eth pinmux, as the vendor's eth_na51068.c, each registered with nvt_eqos); the SD host, a standard SDHCI at 0xFA600000, pins and clock as the vendor's nvt_ivot_sdc021.c, through mainline's non-DM sdhci.c. Not ported: the vendor U-Boot raises the CPU to the tree's 1400 MHz after setting the core and DDR voltages by PWM from the eFuse trim; here the CPU stays at the loader's clock, and the timer follows PLL16 either way. Verified under qemu-hisilicon (PR #222), -M nt98323 and nt98321 with the real loader: the CPU shows 800 MHz (the machine's PLL16), DRAM 512 MiB from the tree, reset restarts through the loader; the SDK's kernel 4.9.118 boots with ${fdtaddr} and an initrd to a shell on both CPUs (the loader's pen), mem=192M, its spi020_nor taking OpenIPC's mtdparts, eth0 linked. --- arch/arm/Kconfig | 1 + arch/arm/mach-novatek/Kconfig | 23 +- arch/arm/mach-novatek/Makefile | 3 +- arch/arm/mach-novatek/include/mach/na51068.h | 75 ++++ arch/arm/mach-novatek/na51068.c | 159 +++++++ board/novatek/na51068/Makefile | 3 + board/novatek/na51068/na51068.c | 443 +++++++++++++++++++ board/novatek/na51068/u-boot.lds | 249 +++++++++++ drivers/mmc/Kconfig | 2 +- drivers/mtd/spi/Kconfig | 2 +- include/configs/novatek.h | 33 +- 11 files changed, 984 insertions(+), 9 deletions(-) create mode 100644 arch/arm/mach-novatek/include/mach/na51068.h create mode 100644 arch/arm/mach-novatek/na51068.c create mode 100644 board/novatek/na51068/Makefile create mode 100644 board/novatek/na51068/na51068.c create mode 100644 board/novatek/na51068/u-boot.lds diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 2eb661b2b4ee..f11c76fa994a 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -831,6 +831,7 @@ config ARCH_NOVATEK Novatek's NT98562 and NT98566: one Cortex-A9 with DDR in the package. The mask ROM starts the vendor loader, which trains the DDR, loads U-Boot as its device tree describes and starts it. + Also the NA51068 DVR/NVR die (NT98321, NT98323), two Cortex-A9s. config ARCH_OMAP2PLUS bool "TI OMAP2+" diff --git a/arch/arm/mach-novatek/Kconfig b/arch/arm/mach-novatek/Kconfig index 426391ca3256..8d011365c240 100644 --- a/arch/arm/mach-novatek/Kconfig +++ b/arch/arm/mach-novatek/Kconfig @@ -28,19 +28,37 @@ config TARGET_NT98566 help NA51089 with 128 MiB of DDR3 in the package. +config TARGET_NT98321 + bool "NT98321" + select NVT_NA51068 + help + NA51068 (DVR/NVR, two Cortex-A9s) with external DDR3, 512 MiB on + the SDK's board, booting from SPI NOR. + +config TARGET_NT98323 + bool "NT98323" + select NVT_NA51068 + help + NA51068 (DVR/NVR, two Cortex-A9s) with external DDR4, 512 MiB on + the SDK's NOR board. + endchoice config NVT_NA51089 bool +config NVT_NA51068 + bool + config NVT_DDR_SIZE hex - default 0x20000000 if TARGET_NT98560 + default 0x20000000 if TARGET_NT98560 || NVT_NA51068 default 0x08000000 if TARGET_NT98566 default 0x04000000 help The DDR at 0: the package's, or the board's for a part with - external DDR. + external DDR. On NA51068 the loader's device tree + (/nvt_memory_cfg/dram) says it; this is the fallback. config SYS_SOC default "novatek" @@ -49,6 +67,7 @@ config SYS_VENDOR default "novatek" config SYS_BOARD + default "na51068" if NVT_NA51068 default "na51089" config SYS_CONFIG_NAME diff --git a/arch/arm/mach-novatek/Makefile b/arch/arm/mach-novatek/Makefile index aa1026bf7d81..5de45a68036b 100644 --- a/arch/arm/mach-novatek/Makefile +++ b/arch/arm/mach-novatek/Makefile @@ -1,3 +1,4 @@ # SPDX-License-Identifier: GPL-2.0+ -obj-y += soc.o +obj-$(CONFIG_NVT_NA51089) += soc.o +obj-$(CONFIG_NVT_NA51068) += na51068.o diff --git a/arch/arm/mach-novatek/include/mach/na51068.h b/arch/arm/mach-novatek/include/mach/na51068.h new file mode 100644 index 000000000000..c8db5604b797 --- /dev/null +++ b/arch/arm/mach-novatek/include/mach/na51068.h @@ -0,0 +1,75 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Novatek NA51068 (NT98321, NT98323): memory map, after the NT9832x SDK's + * U-Boot 2016.07 (arch-nvt-na51068/IOAddress.h), kernel 4.9.118 + * (plat-na51068) and board device trees. + */ + +#ifndef __NA51068_H +#define __NA51068_H + +#include <linux/bitops.h> + +#define NVT_DDR_BASE 0x00000000 + +#define NVT_SCU_BASE 0xF9C00000 /* A9 MPCore: SCU, GIC, timers */ +#define NVT_GTIMER_BASE (NVT_SCU_BASE + 0x200) +#define NVT_PL310_BASE 0xF9C20000 +#define NVT_SDHCI_BASE 0xFA600000 +#define NVT_FLASH_BASE 0xFA900000 /* Faraday FTSPI020 */ +#define NVT_ETH0_BASE 0xFCC00000 +#define NVT_ETH1_BASE 0xFCD00000 +#define NVT_CG_BASE 0xFE000000 /* clocks, PLLs, resets */ +#define NVT_TOP_BASE 0xFE030000 /* pinmux, chip ID */ +#define NVT_PAD_BASE 0xFE040000 +#define NVT_UART0_BASE 0xFE200000 +#define NVT_GPIO1_BASE 0xFE420000 +#define NVT_GPIO2_BASE 0xFE440000 +#define NVT_WDT_BASE 0xFE8A0000 + +/* TOP */ +#define NVT_TOP_CHIP_ID (NVT_TOP_BASE + 0xF0) /* [31:16] */ + +/* CG: the CPU's clock, from PLL16, eight times its rate */ +#define NVT_CG_CPU_CKCTRL (NVT_CG_BASE + 0x100) +#define NVT_CPU_CK_APLL BIT(31) /* else 80 MHz */ +#define NVT_CG_PLL16 (NVT_CG_BASE + 0x107C0) /* ratio at +0x20/24/28 */ + +/* + * The A9 global timer counts at PLL16's rate, an eighth of the CPU's: + * the loader leaves it as it is, the vendor U-Boot enables it. + */ +#define NVT_GTIMER_LO (NVT_GTIMER_BASE + 0x00) +#define NVT_GTIMER_HI (NVT_GTIMER_BASE + 0x04) +#define NVT_GTIMER_CTRL (NVT_GTIMER_BASE + 0x08) + +/* Watchdog: every CTRL write carries the key in [31:16] */ +#define NVT_CG_APB_RSTN (NVT_CG_BASE + 0x5C) +#define NVT_CG_WDT_RSTN BIT(28) +#define NVT_CG_APB_GATE (NVT_CG_BASE + 0x78) +#define NVT_CG_WDT_GATE BIT(15) +#define NVT_WDT_CTRL (NVT_WDT_BASE + 0x00) +#define NVT_WDT_MANUAL (NVT_WDT_BASE + 0x0C) +#define NVT_WDT_KEY 0x5A960000 +#define NVT_WDT_EN BIT(0) + +/* + * What the loader leaves in DDR (the /nvt_memory_cfg node of its device + * tree, openipc/na51068.dtsi): the device tree at 0x80000, SHMINFO at + * 0xA00000, its own code from 0x100000. U-Boot runs where + * /nvt_memory_cfg/uboot says: at 0x1E000000, as on every board of the + * SDK (all have 512 MiB or more), above Linux's memory and its CMA pools + * (0x02000000-0x04800000), below the second core's pen at 0x1FF80000. + */ +#define NVT_SHMINFO (NVT_DDR_BASE + 0x00A00000) +#define NVT_SHM_LD_NVT 0x00 /* "LD_NVT" */ +#define NVT_SHM_FDT_ADDR 0x2C +#define NVT_UBOOT_BASE (NVT_DDR_BASE + 0x1E000000) +#define NVT_UBOOT_SIZE 0x01F80000 + +#ifndef __ASSEMBLY__ +/* The loader's device tree, from SHMINFO, or NULL (mach-novatek/na51068.c) */ +const void *nvt_loader_fdt(void); +#endif + +#endif diff --git a/arch/arm/mach-novatek/na51068.c b/arch/arm/mach-novatek/na51068.c new file mode 100644 index 000000000000..19d405571f82 --- /dev/null +++ b/arch/arm/mach-novatek/na51068.c @@ -0,0 +1,159 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Novatek NA51068: the loader's HEADINFO, the timer, reset and the DRAM + * size. + */ + +#include <common.h> +#include <init.h> +#include <time.h> +#include <asm/global_data.h> +#include <asm/io.h> +#include <asm/arch/na51068.h> +#include <linux/delay.h> +#include <linux/libfdt.h> + +DECLARE_GLOBAL_DATA_PTR; + +/* + * HEADINFO, at 0x300 into the image (board/novatek/na51068/u-boot.lds), + * as on NA51089. The loader starts U-Boot at CodeEntry, and refuses an + * image whose CodeEntry is not where its device tree's + * /nvt_memory_cfg/uboot puts it. openipc/nvt-image.py fills in the length + * and the checksum. BinCtrl bit 1 (SMP), as the vendor U-Boot sets it for + * its SMP kernels: the loader then parks the second core at + * /nvt_memory_cfg/core2entry2, where Linux releases it (cpu-release-addr). + */ +struct nvt_headinfo { + u32 code_entry; + u32 resv1[19]; /* written by the loader */ + char chip_name[8]; + char version[8]; + char date[8]; + u32 bin_length; + u32 checksum; + u32 crc_len_check; + u32 modelext_addr; /* the loader writes its FDT address here */ + u32 bin_ctrl; + u32 crc_tag; +}; + +#define NVT_BIN_CTRL_SMP BIT(1) + +static const struct nvt_headinfo headinfo + __used __section(".nvt_headinfo") = { + .code_entry = CONFIG_SYS_TEXT_BASE, + .chip_name = "ub51068 ", + .version = "OpenIPC ", + .date = " ", + .bin_length = 0xffffffff, + .checksum = 0xffffffff, + .bin_ctrl = NVT_BIN_CTRL_SMP, +}; + +/* PLL16, in Hz: 12 MHz times its 24-bit ratio over 2^17 */ +static ulong nvt_pll16_hz(void) +{ + u32 ratio = (readl(NVT_CG_PLL16 + 0x20) & 0xff) | + (readl(NVT_CG_PLL16 + 0x24) & 0xff) << 8 | + (readl(NVT_CG_PLL16 + 0x28) & 0xff) << 16; + + return ((u64)ratio * 12000000) >> 17; +} + +/* The CPU's clock: eight times PLL16, or 80 MHz off the APLL */ +static ulong nvt_cpu_hz(void) +{ + if (!(readl(NVT_CG_CPU_CKCTRL) & NVT_CPU_CK_APLL)) + return 80000000; + return nvt_pll16_hz() * 8; +} + +/* + * The A9 global timer, 64 bits at an eighth of the CPU's clock. The CPU + * clock is the loader's: the vendor U-Boot raises it to the device tree's + * after setting the core voltage from the eFuse trim, which is not done + * here. + */ +int timer_init(void) +{ + gd->arch.timer_rate_hz = nvt_cpu_hz() / 8; + setbits_le32(NVT_GTIMER_CTRL, BIT(0)); + return 0; +} + +ulong get_tbclk(void) +{ + return gd->arch.timer_rate_hz; +} + +uint64_t notrace get_ticks(void) +{ + u32 hi, lo; + + do { + hi = readl(NVT_GTIMER_HI); + lo = readl(NVT_GTIMER_LO); + } while (hi != readl(NVT_GTIMER_HI)); + return (u64)hi << 32 | lo; +} + +/* + * As the vendor kernel resets (plat-na51068/reset.c): the watchdog's + * clock and reset, then its manual trigger + */ +void reset_cpu(void) +{ + clrbits_le32(NVT_CG_APB_RSTN, NVT_CG_WDT_RSTN); + udelay(50); + setbits_le32(NVT_CG_APB_RSTN, NVT_CG_WDT_RSTN); + clrbits_le32(NVT_CG_APB_GATE, NVT_CG_WDT_GATE); + writel(NVT_WDT_KEY | 0x112, NVT_WDT_CTRL); + udelay(80); + writel(NVT_WDT_KEY | 0x112 | NVT_WDT_EN, NVT_WDT_CTRL); + writel(1, NVT_WDT_MANUAL); + while (1) + ; +} + +/* The loader's device tree, from SHMINFO, or NULL */ +const void *nvt_loader_fdt(void) +{ + const void *shm = (const void *)NVT_SHMINFO; + const void *fdt; + + if (memcmp(shm + NVT_SHM_LD_NVT, "LD_NVT", 6)) + return NULL; + fdt = (const void *)readl(shm + NVT_SHM_FDT_ADDR); + return fdt_check_header(fdt) ? NULL : fdt; +} + +/* + * The DDR is on the board: its size is what the loader's device tree + * says (/nvt_memory_cfg/dram), which its DDR set-up was built for + */ +int dram_init(void) +{ + const void *fdt = nvt_loader_fdt(); + const fdt32_t *reg = NULL; + int node, len; + + gd->ram_size = PHYS_SDRAM_1_SIZE; + if (fdt) { + node = fdt_path_offset(fdt, "/nvt_memory_cfg/dram"); + if (node >= 0) + reg = fdt_getprop(fdt, node, "reg", &len); + if (reg && len == 8 && fdt32_to_cpu(reg[1])) + gd->ram_size = fdt32_to_cpu(reg[1]); + } + return 0; +} + +#ifdef CONFIG_DISPLAY_CPUINFO +int print_cpuinfo(void) +{ + printf("CPU: Novatek %s @ %lu MHz\n", CONFIG_PRODUCT_SOC, + (nvt_cpu_hz() + 500000) / 1000000); + return 0; +} +#endif diff --git a/board/novatek/na51068/Makefile b/board/novatek/na51068/Makefile new file mode 100644 index 000000000000..ea94d19864ac --- /dev/null +++ b/board/novatek/na51068/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0+ + +obj-y += na51068.o diff --git a/board/novatek/na51068/na51068.c b/board/novatek/na51068/na51068.c new file mode 100644 index 000000000000..fd302ade2563 --- /dev/null +++ b/board/novatek/na51068/na51068.c @@ -0,0 +1,443 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Novatek NA51068 DVR/NVR board (NT98321, NT98323): the device tree the + * loader hands over, the memory split the vendor kernels expect in it, + * the Ethernet glue and the SD host. + */ + +#include <common.h> +#include <env.h> +#include <fdt_support.h> +#include <init.h> +#include <lmb.h> +#include <malloc.h> +#include <mmc.h> +#include <netdev.h> +#include <openipc.h> +#include <phy_interface.h> +#include <sdhci.h> +#include <asm/global_data.h> +#include <asm/io.h> +#include <asm/arch/na51068.h> +#include <linux/delay.h> +#include <linux/libfdt.h> + +DECLARE_GLOBAL_DATA_PTR; + +int board_init(void) +{ + return 0; +} + +/* + * The loader leaves its device tree, which describes the board for the + * vendor kernels, in DDR and its address in SHMINFO. OpenIPC uImages carry + * no device tree, so bootm passes this one (${fdtaddr}). It lies where the + * kernel is unpacked, so it is copied away first. + */ +static void nvt_fdt_init(void) +{ + const void *fdt = nvt_loader_fdt(); + void *copy; + + if (!fdt) { + printf("FDT: no device tree from the loader\n"); + return; + } + copy = malloc(fdt_totalsize(fdt)); + if (!copy) + return; + memcpy(copy, fdt, fdt_totalsize(fdt)); + env_set_hex("fdtaddr", (ulong)copy); +} + +int misc_init_r(void) +{ + int ret = openipc_helper(); + + /* After the helper's first saveenv: the address is this boot's */ + nvt_fdt_init(); + return ret; +} + +/* + * U-Boot relocates to the top of the loader's region for it + * (/nvt_memory_cfg/uboot), as on NA51089: clear of core2entry2 at the + * top of the 512 MiB, where the second core waits for Linux. + */ +ulong board_get_usable_ram_top(ulong total_size) +{ + return NVT_UBOOT_BASE + NVT_UBOOT_SIZE; +} + +/* What Linux gets of the DDR (mem=); the vendor media modules get the rest */ +static ulong nvt_osmem(void) +{ + char *end; + ulong osmem = ustrtoul(env_get("osmem") ?: "", &end, 0); + + if (!osmem || osmem > gd->ram_size) + osmem = gd->ram_size; + return osmem; +} + +/* + * The device tree and initrd go where Linux can reach them: everything + * past ${osmem} is reserved. lmb refuses a reservation that overlaps one + * it has (U-Boot's own, up to the end of DDR), so only the gaps are. + */ +void board_lmb_reserve(struct lmb *lmb) +{ + struct lmb_property rsv[8]; + phys_addr_t lo = NVT_DDR_BASE + nvt_osmem(); + phys_addr_t hi = NVT_DDR_BASE + gd->ram_size; + unsigned long i, n = min_t(unsigned long, lmb->reserved.cnt, + ARRAY_SIZE(rsv)); + + /* A copy: the reservations below insert into the sorted list */ + memcpy(rsv, &lmb->reserved.region[0], n * sizeof(rsv[0])); + for (i = 0; i < n && lo < hi; i++) { + phys_addr_t base = rsv[i].base; + phys_addr_t end = base + rsv[i].size; + + if (end <= lo || base >= hi) + continue; + if (base > lo) + lmb_reserve(lmb, lo, base - lo); + lo = max(lo, end); + } + if (lo < hi) + lmb_reserve(lmb, lo, hi - lo); +} + +/* + * As the vendor U-Boot's nvt_boot: Linux gets the first ${osmem} of the + * DDR, and the media pool of the vendor modules (/hdal-memory/media) the + * rest. + */ +int ft_board_setup(void *blob, struct bd_info *bd) +{ + ulong osmem = nvt_osmem(); + fdt32_t media[2]; + int node, ret; + + ret = fdt_fixup_memory(blob, NVT_DDR_BASE, osmem); + if (ret) + return ret; + + node = fdt_path_offset(blob, "/hdal-memory/media"); + if (node < 0) + return 0; + media[0] = cpu_to_fdt32(NVT_DDR_BASE + osmem); + media[1] = cpu_to_fdt32(gd->ram_size - osmem); + return fdt_setprop(blob, node, "reg", media, sizeof(media)); +} + +static u32 nvt_fdt_u32(const void *fdt, const char *path, const char *prop, + u32 def) +{ + const fdt32_t *val = NULL; + int node; + + if (fdt) { + node = fdt_path_offset(fdt, path); + if (node >= 0) + val = fdt_getprop(fdt, node, prop, NULL); + } + return val ? fdt32_to_cpu(*val) : def; +} + +#ifdef CONFIG_NVT_EQOS +/* + * Ethernet: two MACs, each wired by /top@fe030000/eth pinmux in the + * loader's device tree to an RGMII or RMII PHY on its own pads, or to the + * embedded PHY (0x1201 on the SDK's NT98323 boards: MAC 0 RGMII, the + * embedded PHY on MAC 1). Pins, clocks, resets and the PHY as by the + * vendor U-Boot's eth_na51068.c; nvt_eqos does the MAC. Each MAC with a + * PHY is registered, eth0 first: U-Boot goes on to the next if one has + * no link. + */ +#define ETH_RGMII(n) BIT(n) /* 0x001, 0x002 */ +#define ETH_RMII(n) BIT(4 + (n)) /* 0x010, 0x020 */ +#define ETH_EMB_PHY(n) BIT(8 + (n)) /* 0x100, 0x200 */ + +#define CG(off) (NVT_CG_BASE + (off)) +#define TOP(off) (NVT_TOP_BASE + (off)) +#define PAD(off) (NVT_PAD_BASE + (off)) +#define CG_AXI_RSTN CG(0x54) +#define CG_MOD_RSTN CG(0x58) +#define CG_BUS_GATE CG(0x60) +#define CG_MOD_GATE CG(0x70) +#define CG_GPIO_GATE CG(0x74) +#define CG_ETH_GLUE CG(0xE4) +#define TOP_EMB_PHY TOP(0xC8) /* bit 0: to MAC 0, else MAC 1 */ + +/* The glue, at +0x3000; the embedded PHY at +0x3800 */ +#define ETH_PHY_SEL(b) ((b) + 0x3004) +#define PHY_SEL_EXT BIT(8) +#define ETH_LED_CTRL(b) ((b) + 0x300C) +#define ETH_CLK_CTRL(b) ((b) + 0x3014) +#define CLK_REF_IN BIT(0) +#define CLK_REF_PAD BIT(2) +#define CLK_REF_OUT BIT(4) +#define CLK_TXD_SRC (3 << 30) +#define CLK_TXD_RGMII (1 << 30) +#define PHY(b, off) ((b) + 0x3800 + (off)) +#define PHY_SW_RESET BIT(1) +#define PHY_PLLREGWR BIT(3) + +int nvt_eqos_register(const char *name, ulong base, phy_interface_t intf, + u32 cr); + +static const struct nvt_mac { + ulong base; + const char *node; + u8 axi_rst, mod_rst, glue_rst, bus_gate, mod_gate; + u8 gpio_gate, gpio_rst, refclk_gate, phyclk_out; + ulong phyclk_mux; /* the PHY's 25 MHz on a pad, [2:0] */ + u32 phy_rst; /* the PHY's reset GPIO, the EVB's */ +} nvt_macs[2] = { + { NVT_ETH0_BASE, "/eth0@fcc00000", 1, 9, 8, 16, 9, 5, 29, 4, 7, + TOP(0x70), 2 * 32 + 21 }, + { NVT_ETH1_BASE, "/eth1@fcd00000", 2, 10, 24, 17, 10, 4, 28, 20, 23, + TOP(0x50), 1 * 32 + 17 }, +}; + +/* The four FTGPIO010 banks, 32 pins each */ +static const ulong nvt_gpio_bank[4] = { + 0xFE400000, NVT_GPIO1_BASE, NVT_GPIO2_BASE, 0xFE640000, +}; + +#define GPIO_DIR 0x08 +#define GPIO_SET 0x10 +#define GPIO_CLEAR 0x14 + +/* Hold an external PHY in reset for 10 ms, then 50 ms to wake up */ +static void nvt_phy_reset(u32 pin) +{ + ulong bank; + + if (pin / 32 >= ARRAY_SIZE(nvt_gpio_bank)) + return; + bank = nvt_gpio_bank[pin / 32]; + setbits_le32(bank + GPIO_DIR, BIT(pin % 32)); + writel(BIT(pin % 32), bank + GPIO_CLEAR); + mdelay(10); + writel(BIT(pin % 32), bank + GPIO_SET); + mdelay(50); +} + +/* The pads of an external PHY, as the vendor's mac0/1_pinmux_en() */ +static void nvt_mac_pins(int n, phy_interface_t intf) +{ + bool rgmii = intf == PHY_INTERFACE_MODE_RGMII; + + if (n == 0) { + /* Drive: PHYCLK 8 mA, and for RGMII the Tx pads too */ + clrsetbits_le32(PAD(0xC0), rgmii ? 0xffc0003 : 0xfc0033, + rgmii ? 0x5540001 : 0x1); + clrsetbits_le32(TOP(0xC8), 0xf << 4, (rgmii ? 1 : 4) << 4); + clrsetbits_le32(TOP(0x70), rgmii ? 0xffffff0f : 0xfff0f, + rgmii ? 0x11111101 : 0x00222202); + clrsetbits_le32(TOP(0x74), rgmii ? 0xffffffff : 0xff00fff0, + rgmii ? 0x11111111 : 0x22002220); + clrsetbits_le32(PAD(0x40), 0xf000000c, 0xa0000008); + } else { + if (rgmii) { + clrsetbits_le32(PAD(0xA0), 0x30003, 0x10001); + clrsetbits_le32(PAD(0xA4), 0x3ff, 0x155); + } else { + clrsetbits_le32(PAD(0xA0), 0xf, 0x1); + clrbits_le32(PAD(0xA4), 0x3f); + } + clrsetbits_le32(TOP(0x50), rgmii ? 0xffffff0f : 0xffff0f, + rgmii ? 0x66666606 : 0x222202); + clrsetbits_le32(TOP(0x54), rgmii ? 0xffffff0f : 0xff00fff0, + rgmii ? 0x66666606 : 0x22002220); + clrsetbits_le32(TOP(0xC8), 0xf << 8, (rgmii ? 1 : 4) << 8); + } +} + +/* Clocks and resets, as the vendor's mac0/1_clk_en() */ +static void nvt_mac_clocks(const struct nvt_mac *m, phy_interface_t intf) +{ + clrbits_le32(CG_AXI_RSTN, BIT(m->axi_rst)); + clrbits_le32(CG_MOD_RSTN, BIT(m->mod_rst)); + clrbits_le32(CG_ETH_GLUE, BIT(m->glue_rst)); + clrbits_le32(CG_BUS_GATE, BIT(m->bus_gate)); + clrbits_le32(CG_MOD_GATE, BIT(m->mod_gate)); + clrbits_le32(CG_GPIO_GATE, BIT(m->gpio_gate)); + /* The embedded PHY: MAC 0 gates its RMII reference in, MAC 1 not */ + if (intf == PHY_INTERFACE_MODE_MII) { + if (m->base == NVT_ETH0_BASE) + setbits_le32(CG_ETH_GLUE, BIT(m->refclk_gate)); + else + clrbits_le32(CG_ETH_GLUE, BIT(m->refclk_gate)); + } + setbits_le32(CG_AXI_RSTN, BIT(m->axi_rst)); + setbits_le32(CG_MOD_RSTN, BIT(m->mod_rst) | BIT(m->gpio_rst)); + setbits_le32(CG_ETH_GLUE, BIT(m->glue_rst)); +} + +/* The embedded PHY: power on, then its own reset, as the vendor */ +static void nvt_emb_phy_on(ulong b) +{ + setbits_le32(PHY(b, 0xF8), BIT(7)); + udelay(20); + clrbits_le32(PHY(b, 0xC8), BIT(0)); + udelay(200); + clrbits_le32(PHY(b, 0xC8), BIT(1)); + udelay(250); + clrbits_le32(PHY(b, 0x2E8), BIT(0)); + clrbits_le32(PHY(b, 0xCC), BIT(0)); + setbits_le32(PHY(b, 0xDC), BIT(0)); + clrbits_le32(PHY(b, 0x9C), BIT(0)); + + setbits_le32(PHY(b, 0x000), PHY_SW_RESET); + /* The break-link timer, and the LEDs blinking, as the vendor */ + writel(0x53, PHY(b, 0x288)); + writel(0x07, PHY(b, 0x28C)); + writel(0xC9, PHY(b, 0x284)); + writel(0x40, PHY(b, 0x100)); + writel(0x312, ETH_LED_CTRL(b)); + mdelay(10); + clrsetbits_le32(PHY(b, 0x000), PHY_SW_RESET, PHY_PLLREGWR); +} + +/* The PHY side, as the vendor's extphy0/1_clk_en() */ +static void nvt_mac_phy(const void *fdt, const struct nvt_mac *m, + phy_interface_t intf) +{ + ulong b = m->base; + + if (intf == PHY_INTERFACE_MODE_MII) { + clrbits_le32(ETH_PHY_SEL(b), PHY_SEL_EXT); + nvt_emb_phy_on(b); + return; + } + if (intf == PHY_INTERFACE_MODE_RMII) { + u32 v = readl(ETH_CLK_CTRL(b)) & ~(CLK_REF_PAD | CLK_TXD_SRC); + + if (nvt_fdt_u32(fdt, m->node, "ref-clk-out", 0)) + v = (v & ~CLK_REF_IN) | CLK_REF_OUT; + writel(v, ETH_CLK_CTRL(b)); + } else { + setbits_le32(ETH_CLK_CTRL(b), CLK_TXD_RGMII); + } + setbits_le32(ETH_PHY_SEL(b), PHY_SEL_EXT); + writel(0x1FF, ETH_LED_CTRL(b)); + + /* The PHY's 25 MHz crystal clock from the SoC */ + if (nvt_fdt_u32(fdt, m->node, "sp-clk", 0)) { + setbits_le32(CG_ETH_GLUE, BIT(m->phyclk_out)); + clrsetbits_le32(m->phyclk_mux, 0x7, + intf == PHY_INTERFACE_MODE_RMII ? 2 : + m->base == NVT_ETH0_BASE ? 1 : 6); + } + nvt_phy_reset(nvt_fdt_u32(fdt, m->node, "phy-rst", m->phy_rst)); +} + +int board_eth_init(struct bd_info *bis) +{ + const void *fdt = nvt_loader_fdt(); + u32 pins = nvt_fdt_u32(fdt, "/top@fe030000/eth", "pinmux", + ETH_EMB_PHY(1)); + u32 misc = nvt_fdt_u32(fdt, "/top@fe030000/misc", "pinmux", 0); + int n, ret = 0; + + /* The embedded PHY's LEDs, on either of two pad pairs */ + if (misc & BIT(20)) + clrsetbits_le32(TOP(0x20), 0xff0, 0x550); + else if (misc & BIT(21)) + clrsetbits_le32(TOP(0x44), 0xff, 0x33); + + for (n = 0; n < 2; n++) { + const struct nvt_mac *m = &nvt_macs[n]; + phy_interface_t intf; + char name[8]; + + writel(0x3FF, ETH_LED_CTRL(m->base)); + if (fdt && fdt_path_offset(fdt, m->node) < 0) + continue; + if (pins & ETH_RMII(n)) + intf = PHY_INTERFACE_MODE_RMII; + else if (pins & ETH_RGMII(n)) + intf = PHY_INTERFACE_MODE_RGMII; + else if (pins & ETH_EMB_PHY(n)) + intf = PHY_INTERFACE_MODE_MII; + else + continue; + + if (intf == PHY_INTERFACE_MODE_MII) { + if (n == 0) + clrsetbits_le32(TOP_EMB_PHY, 0xf << 4, BIT(0)); + else + clrbits_le32(TOP_EMB_PHY, 0xf << 8 | BIT(0)); + } else { + nvt_mac_pins(n, intf); + } + nvt_mac_clocks(m, intf); + nvt_mac_phy(fdt, m, intf); + + /* MDC: the CSR clock is the 150 MHz APB, CR 1 (/62) */ + snprintf(name, sizeof(name), "eth%d", n); + if (!nvt_eqos_register(name, m->base, intf, 1)) + ret++; + } + return ret; +} +#endif + +#ifdef CONFIG_MMC_SDHCI +/* + * The SD card: a standard SDHCI 3.0 at 0xFA600000 (the vendor's + * nvt_ivot_sdc021.c), 4-bit, its base clock from its capabilities, up to + * the device tree's max-frequency. Its pins as /top@fe030000/sdio pinmux + * says: 0x10 the first pad set, 0x20 the second (the SDK's boards). + */ +#define SDIO_PINS_1ST BIT(4) +#define SDIO_PINS_2ND BIT(5) + +int board_mmc_init(struct bd_info *bis) +{ + const void *fdt = nvt_loader_fdt(); + u32 pins = nvt_fdt_u32(fdt, "/top@fe030000/sdio", "pinmux", + SDIO_PINS_2ND); + u32 max_hz = nvt_fdt_u32(fdt, "/mmc@fa600000", "max-frequency", + 12000000); + struct sdhci_host *host; + + if (!(pins & (SDIO_PINS_1ST | SDIO_PINS_2ND))) + return 0; + setbits_le32(CG(0x54), BIT(10)); /* out of reset */ + clrbits_le32(CG(0x68), BIT(10)); /* clock on */ + clrbits_le32(CG(0x18C), 0x3f << 8); /* the clock undivided */ + /* Pins, and pull-ups on the data and command lines */ + if (pins & SDIO_PINS_1ST) { + clrsetbits_le32(TOP(0x28), 0xf << 28, BIT(28) | BIT(30)); + clrsetbits_le32(TOP(0x2C), 0xf | 0xf << 28, + 0x5 | BIT(28) | BIT(30)); + clrsetbits_le32(TOP(0x30), 0xfff | 0xf << 16, + 0x555 | BIT(16) | BIT(18)); + clrsetbits_le32(PAD(0x04), 0xf << 14 | 0x3 << 30, + BIT(15) | BIT(17) | BIT(31)); + clrsetbits_le32(PAD(0x08), 0x33f, BIT(1) | BIT(3) | BIT(5) | + BIT(9)); + } else { + clrsetbits_le32(TOP(0x2C), 0x770, 0x550); + clrsetbits_le32(TOP(0x40), 0x77700000, 0x66600000); + clrsetbits_le32(TOP(0x44), 0x77, 0x66); + clrsetbits_le32(PAD(0x04), 0xf << 18, BIT(19) | BIT(21)); + clrsetbits_le32(PAD(0x10), 0x3ff << 10, BIT(11) | BIT(13) | + BIT(15) | BIT(17) | BIT(19)); + } + + host = calloc(1, sizeof(*host)); + if (!host) + return -ENOMEM; + host->name = "sdhci"; + host->ioaddr = (void *)NVT_SDHCI_BASE; + host->host_caps = MMC_MODE_4BIT; + return add_sdhci(host, max_hz, 400000); +} +#endif diff --git a/board/novatek/na51068/u-boot.lds b/board/novatek/na51068/u-boot.lds new file mode 100644 index 000000000000..f781f4533b51 --- /dev/null +++ b/board/novatek/na51068/u-boot.lds @@ -0,0 +1,249 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * arch/arm/cpu/u-boot.lds with the HEADINFO of the Novatek NA51068 + * loader at 0x300. + * + * Copyright (c) 2004-2008 Texas Instruments + * + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> + */ + +#include <config.h> +#include <asm/psci.h> + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(_start) +SECTIONS +{ +#ifndef CONFIG_CMDLINE + /DISCARD/ : { *(__u_boot_list_2_cmd_*) } +#endif +#if defined(CONFIG_ARMV7_SECURE_BASE) && defined(CONFIG_ARMV7_NONSEC) + /* + * If CONFIG_ARMV7_SECURE_BASE is true, secure code will not + * bundle with u-boot, and code offsets are fixed. Secure zone + * only needs to be copied from the loading address to + * CONFIG_ARMV7_SECURE_BASE, which is the linking and running + * address for secure code. + * + * If CONFIG_ARMV7_SECURE_BASE is undefined, the secure zone will + * be included in u-boot address space, and some absolute address + * were used in secure code. The absolute addresses of the secure + * code also needs to be relocated along with the accompanying u-boot + * code. + * + * So DISCARD is only for CONFIG_ARMV7_SECURE_BASE. + */ + /DISCARD/ : { *(.rel._secure*) } +#endif + . = 0x00000000; + + . = ALIGN(4); + .text : + { + *(.__image_copy_start) + *(.vectors) + /* + * The Novatek loader looks for the image's HEADINFO here: + * where to start it and how long it is, with a checksum. + */ + . = 0x300; + KEEP(*(.nvt_headinfo)) + CPUDIR/start.o (.text*) + } + + /* This needs to come before *(.text*) */ + .__efi_runtime_start : { + *(.__efi_runtime_start) + } + + .efi_runtime : { + *(.text.efi_runtime*) + *(.rodata.efi_runtime*) + *(.data.efi_runtime*) + } + + .__efi_runtime_stop : { + *(.__efi_runtime_stop) + } + + .text_rest : + { + *(.text*) + } + +#ifdef CONFIG_ARMV7_NONSEC + + /* Align the secure section only if we're going to use it in situ */ + .__secure_start +#ifndef CONFIG_ARMV7_SECURE_BASE + ALIGN(CONSTANT(COMMONPAGESIZE)) +#endif + : { + KEEP(*(.__secure_start)) + } + +#ifndef CONFIG_ARMV7_SECURE_BASE +#define CONFIG_ARMV7_SECURE_BASE +#define __ARMV7_PSCI_STACK_IN_RAM +#endif + + .secure_text CONFIG_ARMV7_SECURE_BASE : + AT(ADDR(.__secure_start) + SIZEOF(.__secure_start)) + { + *(._secure.text) + } + + .secure_data : AT(LOADADDR(.secure_text) + SIZEOF(.secure_text)) + { + *(._secure.data) + } + +#ifdef CONFIG_ARMV7_PSCI + .secure_stack ALIGN(ADDR(.secure_data) + SIZEOF(.secure_data), + CONSTANT(COMMONPAGESIZE)) (NOLOAD) : +#ifdef __ARMV7_PSCI_STACK_IN_RAM + AT(ADDR(.secure_stack)) +#else + AT(LOADADDR(.secure_data) + SIZEOF(.secure_data)) +#endif + { + KEEP(*(.__secure_stack_start)) + + /* Skip addreses for stack */ + . = . + CONFIG_ARMV7_PSCI_NR_CPUS * ARM_PSCI_STACK_SIZE; + + /* Align end of stack section to page boundary */ + . = ALIGN(CONSTANT(COMMONPAGESIZE)); + + KEEP(*(.__secure_stack_end)) + +#ifdef CONFIG_ARMV7_SECURE_MAX_SIZE + /* + * We are not checking (__secure_end - __secure_start) here, + * as these are the load addresses, and do not include the + * stack section. Instead, use the end of the stack section + * and the start of the text section. + */ + ASSERT((. - ADDR(.secure_text)) <= CONFIG_ARMV7_SECURE_MAX_SIZE, + "Error: secure section exceeds secure memory size"); +#endif + } + +#ifndef __ARMV7_PSCI_STACK_IN_RAM + /* Reset VMA but don't allocate space if we have secure SRAM */ + . = LOADADDR(.secure_stack); +#endif + +#endif + + .__secure_end : AT(ADDR(.__secure_end)) { + *(.__secure_end) + LONG(0x1d1071c); /* Must output something to reset LMA */ + } +#endif + + . = ALIGN(4); + .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + + . = ALIGN(4); + .data : { + *(.data*) + } + + . = ALIGN(4); + + . = .; + + . = ALIGN(4); + __u_boot_list : { + KEEP(*(SORT(__u_boot_list*))); + } + + . = ALIGN(4); + + .efi_runtime_rel_start : + { + *(.__efi_runtime_rel_start) + } + + .efi_runtime_rel : { + *(.rel*.efi_runtime) + *(.rel*.efi_runtime.*) + } + + .efi_runtime_rel_stop : + { + *(.__efi_runtime_rel_stop) + } + + . = ALIGN(4); + + .image_copy_end : + { + *(.__image_copy_end) + } + + .rel_dyn_start : + { + *(.__rel_dyn_start) + } + + .rel.dyn : { + *(.rel*) + } + + .rel_dyn_end : + { + *(.__rel_dyn_end) + } + + .end : + { + *(.__end) + } + + _image_binary_end = .; + + /* + * Deprecated: this MMU section is used by pxa at present but + * should not be used by new boards/CPUs. + */ + . = ALIGN(4096); + .mmutable : { + *(.mmutable) + } + +/* + * Compiler-generated __bss_start and __bss_end, see arch/arm/lib/bss.c + * __bss_base and __bss_limit are for linker only (overlay ordering) + */ + + .bss_start __rel_dyn_start (OVERLAY) : { + KEEP(*(.__bss_start)); + __bss_base = .; + } + + .bss __bss_base (OVERLAY) : { + *(.bss*) + . = ALIGN(4); + __bss_limit = .; + } + + .bss_end __bss_limit (OVERLAY) : { + KEEP(*(.__bss_end)); + } + + .dynsym _image_binary_end : { *(.dynsym) } + .dynbss : { *(.dynbss) } + .dynstr : { *(.dynstr*) } + .dynamic : { *(.dynamic*) } + .plt : { *(.plt*) } + .interp : { *(.interp*) } + .gnu.hash : { *(.gnu.hash) } + .gnu : { *(.gnu*) } + .ARM.exidx : { *(.ARM.exidx*) } + .gnu.linkonce.armexidx : { *(.gnu.linkonce.armexidx.*) } +} diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig index cf661a445cb3..7229c2a28d29 100644 --- a/drivers/mmc/Kconfig +++ b/drivers/mmc/Kconfig @@ -79,7 +79,7 @@ config MMC_SPI_CRC_ON config MMC_NVT bool "Novatek NA51089 SD card (SDIO1)" - depends on ARCH_NOVATEK && MMC && !DM_MMC + depends on ARCH_NOVATEK && NVT_NA51089 && MMC && !DM_MMC help SDIO1 of the Novatek NA51089 (NT98562, NT98566), 4-bit, PIO through its FIFO. diff --git a/drivers/mtd/spi/Kconfig b/drivers/mtd/spi/Kconfig index b59a15f9eae3..b7cc97e506fa 100644 --- a/drivers/mtd/spi/Kconfig +++ b/drivers/mtd/spi/Kconfig @@ -38,7 +38,7 @@ config SPI_FLASH config NVT_SFLASH bool "Novatek NA51089 SPI NOR" - depends on ARCH_NOVATEK && !SPI_FLASH && !DM_SPI_FLASH + depends on ARCH_NOVATEK && NVT_NA51089 && !SPI_FLASH && !DM_SPI_FLASH help The SPI NOR the Novatek NA51089 boots from, on its flash controller. The driver provides spi_flash_probe() directly, diff --git a/include/configs/novatek.h b/include/configs/novatek.h index 87c592ff8ce0..d6d448cf669e 100644 --- a/include/configs/novatek.h +++ b/include/configs/novatek.h @@ -1,23 +1,41 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /* - * Novatek NA51089: memory map, console and timer. The environment and the - * rest of the OpenIPC configuration come from openipc-common.h. + * Novatek NA51089, NA51068: memory map, console and timer. The + * environment and the rest of the OpenIPC configuration come from + * openipc-common.h. */ #ifndef __NOVATEK_H #define __NOVATEK_H +#ifdef CONFIG_NVT_NA51068 +#include <asm/arch/na51068.h> +#else #include <asm/arch/na51089.h> +#endif #define CONFIG_SYS_SDRAM_BASE NVT_DDR_BASE /* The DDR in the package, or on the board */ #define PHYS_SDRAM_1_SIZE CONFIG_NVT_DDR_SIZE /* Linux's share of a 512 MiB part, as on the SDK's boards (mem=) */ -#if CONFIG_NVT_DDR_SIZE >= 0x20000000 +#if defined(CONFIG_TARGET_NT98321) +#define OPENIPC_OSMEM "160M" +#elif defined(CONFIG_TARGET_NT98323) +#define OPENIPC_OSMEM "192M" +#elif CONFIG_NVT_DDR_SIZE >= 0x20000000 #define OPENIPC_OSMEM "256M" #endif +#ifdef CONFIG_NVT_NA51068 +/* + * The device tree and an initrd stay in the first 128 MiB: the SDK's + * kernel 4.9 hangs before its first message with them just below + * mem=192M, where bootm would put them + */ +#define CONFIG_SYS_BOOTMAPSZ 0x08000000 +#endif + /* The loader starts U-Boot at its link address */ #define CONFIG_SYS_UBOOT_BASE CONFIG_SYS_TEXT_BASE @@ -25,16 +43,23 @@ #define CONFIG_SYS_INIT_RAM_ADDR (CONFIG_SYS_TEXT_BASE - 0x100000) #define CONFIG_SYS_INIT_RAM_SIZE 0x100000 -/* Console: UART0, a 16550 with 32-bit registers, at 24 MHz */ +/* Console: UART0, a 16550 with 32-bit registers, at 24 (48) MHz */ #define CONFIG_SYS_NS16550_SERIAL #define CONFIG_SYS_NS16550_REG_SIZE (-4) #define CONFIG_SYS_NS16550_MEM32 +#ifdef CONFIG_NVT_NA51068 +#define CONFIG_SYS_NS16550_CLK 48000000 +#else #define CONFIG_SYS_NS16550_CLK 24000000 +#endif #define CONFIG_SYS_NS16550_COM1 NVT_UART0_BASE +#ifndef CONFIG_NVT_NA51068 /* Timer 0 of the timer block, free running at 1 MHz */ #define CONFIG_SYS_TIMER_RATE NVT_TIMER_HZ #define CONFIG_SYS_TIMER_COUNTER NVT_TIMER0_COUNT +#endif +/* NA51068: the A9 global timer (arch/arm/mach-novatek/na51068.c) */ #include "openipc-common.h" From 114ceb0277307c7cc95946e6ffde47f7412db038 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:53:16 +0000 Subject: [PATCH 25/38] nvt_spi020: add the SPI NOR on the Novatek NA51068 FTSPI020 The NA51068 (NT98321, NT98323) boots from a SPI NOR on a Faraday FTSPI020 at 0xFA900000. Each command is the address (CMD0), its length with the dummy cycles (CMD1), the data length (CMD2) and the instruction (CMD3, which starts it); data through the 32-byte FIFO at 0x100, a word at a time; INT_STS bit 0 when done. A status read returns SR1 in READ_STS, or, polled by the controller, completes only once WIP is clear, which is how programs and erases are waited for. After the vendor U-Boot 2016.07 of the NT9832x SDK (nvt_flash_spi020*.c, spi020_nor.c), PIO and single lane as it runs, but: - programs are split at page boundaries and padded to whole words with 0xff (the vendor's write a page from any offset, and pad with whatever follows the buffer); - block protection a vendor firmware left set is cleared, and if it stays, writes and erases fail (-EROFS), as nvt_sflash does; - the size is 2^(the last JEDEC byte), as the vendor driver takes it (trace-stdtable in the SDK's trees); past 16 MiB the 4-byte opcodes (0x13, 0x12, 0xDC), as the vendor's; - the clock divider follows the loader's tree (/nor@fa900000 clock-frequency), the pins are the loader's. As nvt_sflash, it provides spi_flash_probe() itself; CMD_SF and ENV_IS_IN_SPI_FLASH accept it. Verified under qemu-hisilicon (PR #222), -M nt98323, real loader: - 16 MiB (W25Q128): sf read of 0x12345 bytes at 0x400005 into 0x2000003 matches the host's CRC32; erase of 0x600000+128K, write at 0x600007, read back to 0x3000001: same CRC; the bytes either side stay 0xff, in U-Boot and in the flash file qemu writes back; - 32 MiB (W25Q256): a 0x80001-byte read at 0x1800001, and a 0x1001-byte write at 0x1f00003, against the host's data; - saveenv, reset, the variable is there. --- cmd/Kconfig | 2 +- drivers/mtd/spi/Kconfig | 16 +- drivers/mtd/spi/Makefile | 1 + drivers/mtd/spi/nvt_spi020.c | 462 +++++++++++++++++++++++++++++++++++ env/Kconfig | 2 +- 5 files changed, 477 insertions(+), 6 deletions(-) create mode 100644 drivers/mtd/spi/nvt_spi020.c diff --git a/cmd/Kconfig b/cmd/Kconfig index cd51bf832aad..ba6bbda51147 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -1412,7 +1412,7 @@ config CMD_SDRAM config CMD_SF bool "sf" - depends on DM_SPI_FLASH || SPI_FLASH || NVT_SFLASH + depends on DM_SPI_FLASH || SPI_FLASH || NVT_SFLASH || NVT_SPI020 default y if DM_SPI_FLASH help SPI Flash support diff --git a/drivers/mtd/spi/Kconfig b/drivers/mtd/spi/Kconfig index b7cc97e506fa..85320de2ff37 100644 --- a/drivers/mtd/spi/Kconfig +++ b/drivers/mtd/spi/Kconfig @@ -44,9 +44,17 @@ config NVT_SFLASH controller. The driver provides spi_flash_probe() directly, without the SPI and spi-nor layers. +config NVT_SPI020 + bool "Novatek NA51068 SPI NOR (FTSPI020)" + depends on ARCH_NOVATEK && NVT_NA51068 && !SPI_FLASH && !DM_SPI_FLASH + help + The SPI NOR the Novatek NA51068 (NT98321, NT98323) boots from, on + its Faraday FTSPI020 flash controller. The driver provides + spi_flash_probe() directly, without the SPI and spi-nor layers. + config SF_DEFAULT_BUS int "SPI Flash default bus identifier" - depends on SPI_FLASH || DM_SPI_FLASH || NVT_SFLASH + depends on SPI_FLASH || DM_SPI_FLASH || NVT_SFLASH || NVT_SPI020 default 0 help The default bus may be provided by the platform @@ -55,7 +63,7 @@ config SF_DEFAULT_BUS config SF_DEFAULT_CS int "SPI Flash default Chip-select" - depends on SPI_FLASH || DM_SPI_FLASH || NVT_SFLASH + depends on SPI_FLASH || DM_SPI_FLASH || NVT_SFLASH || NVT_SPI020 default 0 help The default chip select may be provided by the platform @@ -64,7 +72,7 @@ config SF_DEFAULT_CS config SF_DEFAULT_MODE hex "SPI Flash default mode (see include/spi.h)" - depends on SPI_FLASH || DM_SPI_FLASH || NVT_SFLASH + depends on SPI_FLASH || DM_SPI_FLASH || NVT_SFLASH || NVT_SPI020 default 0x0 help The default mode may be provided by the platform @@ -76,7 +84,7 @@ config SF_DEFAULT_MODE config SF_DEFAULT_SPEED int "SPI Flash default speed in Hz" - depends on SPI_FLASH || DM_SPI_FLASH || NVT_SFLASH + depends on SPI_FLASH || DM_SPI_FLASH || NVT_SFLASH || NVT_SPI020 default 1000000 help The default speed may be provided by the platform diff --git a/drivers/mtd/spi/Makefile b/drivers/mtd/spi/Makefile index 066c64033526..5d1a070780e6 100644 --- a/drivers/mtd/spi/Makefile +++ b/drivers/mtd/spi/Makefile @@ -22,3 +22,4 @@ obj-$(CONFIG_SPI_FLASH_DATAFLASH) += sf_dataflash.o obj-$(CONFIG_$(SPL_TPL_)SPI_FLASH_MTD) += sf_mtd.o obj-$(CONFIG_SPI_FLASH_SANDBOX) += sandbox.o obj-$(CONFIG_NVT_SFLASH) += nvt_sflash.o +obj-$(CONFIG_NVT_SPI020) += nvt_spi020.o diff --git a/drivers/mtd/spi/nvt_spi020.c b/drivers/mtd/spi/nvt_spi020.c new file mode 100644 index 000000000000..1c79d3397e11 --- /dev/null +++ b/drivers/mtd/spi/nvt_spi020.c @@ -0,0 +1,462 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * SPI NOR behind the Faraday FTSPI020 flash controller of the Novatek + * NA51068 (NT98321, NT98323). + * + * Each command is four register writes: the flash address (CMD0), its + * length with the dummy cycles and the instruction length (CMD1), the + * data length (CMD2), then the instruction with its mode bits (CMD3), + * which starts it. Data goes through the 32-byte FIFO at DATA, a word at + * a time, gated by STATUS; INT_STS bit 0 says the command is done. A + * status read either returns one SR byte in READ_STS, or, polled by the + * controller, ends only once the busy bit (CTRL RD_STS_LOC, bit 0) is + * clear, which is how a program or an erase is waited for. + * + * After the vendor U-Boot 2016.07 of the NT9832x SDK + * (drivers/mtd/nvt_flash_spi/nvt_flash_spi020*.c, spiflash/spi020_nor.c), + * single lane and PIO, as it runs (its DMA and FIFO checksum paths are + * compiled out). Like nvt_sflash, this driver provides spi_flash_probe() + * itself, so mainline's non-DM spi_flash_*() wrappers, the sf command and + * the environment in SPI flash work without the SPI and spi-nor layers. + * Parts over 16 MiB take the 4-byte address opcodes, as the vendor's do. + */ + +#include <common.h> +#include <malloc.h> +#include <spi_flash.h> +#include <time.h> +#include <asm/io.h> +#include <asm/unaligned.h> +#include <asm/arch/na51068.h> +#include <linux/delay.h> +#include <linux/libfdt.h> +#include <linux/mtd/mtd.h> +#include <linux/sizes.h> + +#define FC(off) (NVT_FLASH_BASE + (off)) +#define FC_CMD0 FC(0x00) /* flash address */ +#define FC_CMD1 FC(0x04) +#define CMD1_ALEN(n) (n) +#define CMD1_DUMMY(n) ((n) << 16) +#define CMD1_INST_LEN1 (1 << 24) +#define FC_CMD2 FC(0x08) /* data length */ +#define FC_CMD3 FC(0x0C) /* writing it starts the command */ +#define CMD3_WRITE BIT(1) +#define CMD3_RD_STS BIT(2) +#define CMD3_RD_STS_SW BIT(3) /* one read, else polled */ +#define CMD3_INST(c) ((u32)(c) << 24) +#define FC_CTRL FC(0x10) +#define CTRL_CLK_DIV(n) (n) /* /2, /4, /6, /8 */ +#define FC_STATUS FC(0x18) +#define STATUS_TXFIFO_EMPTY BIT(0) +#define STATUS_RXFIFO_READY BIT(1) +#define FC_INT_CTRL FC(0x20) +#define INT_CTRL_DMA_EN BIT(0) +#define FC_INT_STS FC(0x24) +#define INT_STS_DONE BIT(0) +#define FC_READ_STS FC(0x28) +#define FC_DLY FC(0x60) +#define DLY_RX_SAMPLE_EDGE BIT(17) +#define FC_DATA FC(0x100) +#define FC_FIFO 32 + +/* CG: the controller's reset and clock gate */ +#define CG_FLASH_RSTN (NVT_CG_BASE + 0x54) +#define CG_FLASH_RSTN_BIT BIT(11) +#define CG_FLASH_GATE (NVT_CG_BASE + 0x68) +#define CG_FLASH_GATE_BIT BIT(9) + +#define SZ_PAGE 256 +#define SZ_SECTOR SZ_64K + +#define CMD_WRSR 0x01 +#define CMD_PP 0x02 +#define CMD_READ 0x03 +#define CMD_WRDI 0x04 +#define CMD_RDSR 0x05 +#define CMD_WREN 0x06 +#define CMD_PP_4B 0x12 +#define CMD_READ_4B 0x13 +#define CMD_RDSR2 0x35 +#define CMD_RDID 0x9F +#define CMD_SE_64K 0xD8 +#define CMD_SE_64K_4B 0xDC + +#define SR1_WEL BIT(1) +#define SR1_BP 0x7C /* GigaDevice/Winbond and alikes: BP0-4 */ +#define SR1_BP_OTHER 0x3C /* BP0-3 */ + +#define MFR_GIGADEVICE 0xc8 +#define MFR_WINBOND 0xef +#define MFR_XMC 0x20 +#define MFR_ZBIT 0x5e +#define MFR_BOYA 0x68 + +enum { XFER_NORMAL, XFER_STATUS, XFER_POLL }; + +static struct { + struct spi_flash flash; + u32 ctrl; /* the clock divider */ + u8 alen; /* 3, or 4 past 16 MiB */ + bool protect; /* block protection stays: refuse writes */ + bool announced; +} sf; + +static int fc_wait(ulong reg, u32 mask, ulong ms) +{ + ulong start = get_timer(0); + + while (!(readl(reg) & mask)) { + if (get_timer(start) > ms) + return -ETIMEDOUT; + } + return 0; +} + +static int fc_pio_in(u8 *buf, unsigned int len) +{ + while (len) { + unsigned int n = min(len, (unsigned int)FC_FIFO); + + if (fc_wait(FC_STATUS, STATUS_RXFIFO_READY, 1000)) + return -ETIMEDOUT; + len -= n; + while (n) { + u32 w = readl(FC_DATA); + unsigned int i, k = min(n, 4u); + + for (i = 0; i < k; i++, w >>= 8) + *buf++ = w; + n -= k; + } + } + return 0; +} + +/* + * Whole words: the caller pads the data to them. The controller sends + * only the data length (CMD2) of what the last word holds. + */ +static int fc_pio_out(const u8 *buf, unsigned int len) +{ + len = ALIGN(len, 4); + while (len) { + unsigned int n = min(len, (unsigned int)FC_FIFO); + + if (fc_wait(FC_STATUS, STATUS_TXFIFO_EMPTY, 1000)) + return -ETIMEDOUT; + len -= n; + for (; n; n -= 4, buf += 4) + writel(get_unaligned_le32(buf), FC_DATA); + } + return 0; +} + +/* + * One command: @alen address bytes, @len data bytes in (@out NULL) or + * out; XFER_STATUS returns SR1 in *@sts, XFER_POLL waits until the flash + * is no longer busy, for up to @ms. + */ +static int fc_xfer(u8 cmd, u32 addr, unsigned int alen, void *in, + const void *out, unsigned int len, int mode, u8 *sts, + ulong ms) +{ + u32 cmd3 = CMD3_INST(cmd); + int ret = 0; + + writel(sf.ctrl, FC_CTRL); + writel(DLY_RX_SAMPLE_EDGE, FC_DLY); + if (alen) + writel(addr, FC_CMD0); + if (mode == XFER_NORMAL) { + writel(len, FC_CMD2); + if (!in) + cmd3 |= CMD3_WRITE; + } else { + writel(0, FC_CMD2); + cmd3 |= CMD3_RD_STS | (mode == XFER_STATUS ? CMD3_RD_STS_SW : 0); + } + writel(CMD1_ALEN(alen) | CMD1_INST_LEN1, FC_CMD1); + writel(cmd3, FC_CMD3); + + if (len && mode == XFER_NORMAL) + ret = in ? fc_pio_in(in, len) : fc_pio_out(out, len); + if (!ret) + ret = fc_wait(FC_INT_STS, INT_STS_DONE, ms); + writel(INT_STS_DONE, FC_INT_STS); + if (ret) + printf("SF: command %02x timed out\n", cmd); + else if (sts) + *sts = readl(FC_READ_STS); + return ret; +} + +static u8 sf_read_reg(u8 cmd) +{ + u8 v = 0xff; + + fc_xfer(cmd, 0, 0, NULL, NULL, 0, XFER_STATUS, &v, 100); + return v; +} + +/* Until the flash is no longer busy: the controller polls SR1 */ +static int sf_wait_ready(ulong ms) +{ + return fc_xfer(CMD_RDSR, 0, 0, NULL, NULL, 0, XFER_POLL, NULL, ms); +} + +static int sf_write_enable(void) +{ + int ret = fc_xfer(CMD_WREN, 0, 0, NULL, NULL, 0, XFER_NORMAL, NULL, 100); + + if (ret) + return ret; + if (!(sf_read_reg(CMD_RDSR) & SR1_WEL)) { + printf("SF: write enable does not stick\n"); + return -EIO; + } + return 0; +} + +static int sf_write_sr(const u8 *sr, unsigned int len) +{ + u8 buf[4] = { sr[0], len > 1 ? sr[1] : 0xff, 0xff, 0xff }; + int ret = sf_write_enable(); + + if (!ret) + ret = fc_xfer(CMD_WRSR, 0, 0, NULL, buf, len, XFER_NORMAL, + NULL, 100); + return ret ? ret : sf_wait_ready(1000); +} + +/* + * Clear the block protection a vendor loader or firmware may have left + * set, and check that it went: a program or erase of a protected block + * is accepted and dropped, which would pass for success. + */ +static int sf_unprotect(u8 mfr) +{ + u8 sr[2] = { sf_read_reg(CMD_RDSR) }; + u8 bp = SR1_BP_OTHER; + int ret; + + if (sr[0] == 0xff) + return 0; + if (mfr == MFR_GIGADEVICE || mfr == MFR_WINBOND || mfr == MFR_XMC || + mfr == MFR_ZBIT || mfr == MFR_BOYA) + bp = SR1_BP; + if (!(sr[0] & bp)) + return 0; + + printf("SF: block protection (SR1 %02x), clearing\n", sr[0]); + sr[0] &= ~bp; + if (bp == SR1_BP) { + /* QE lives in SR2, written as WRSR's second byte: keep it */ + sr[1] = sf_read_reg(CMD_RDSR2); + ret = sf_write_sr(sr, 2); + } else { + ret = sf_write_sr(sr, 1); + } + sr[0] = sf_read_reg(CMD_RDSR); + if (ret || sr[0] & bp) { + printf("SF: block protection stays (SR1 %02x): writes refused\n", + sr[0]); + return -EROFS; + } + return 0; +} + +static int nvt_sf_read(struct mtd_info *mtd, loff_t from, size_t len, + size_t *retlen, u_char *buf) +{ + int ret = 0; + + *retlen = 0; + if (from > mtd->size || len > mtd->size - from) + return -EINVAL; + /* In pieces, so that a timeout stays a timeout */ + while (len && !ret) { + unsigned int n = min_t(size_t, len, SZ_1M); + + ret = fc_xfer(sf.alen == 4 ? CMD_READ_4B : CMD_READ, from, + sf.alen, buf, NULL, n, XFER_NORMAL, NULL, 1000); + from += n; + buf += n; + len -= n; + if (!ret) + *retlen += n; + } + return ret; +} + +/* PAGE PROGRAM within a page, from a copy padded to whole words */ +static int sf_program(u32 addr, const u8 *buf, unsigned int len) +{ + u8 page[SZ_PAGE + 4] __aligned(4); + int ret; + + memcpy(page, buf, len); + memset(page + len, 0xff, 4); + ret = sf_write_enable(); + if (!ret) + ret = fc_xfer(sf.alen == 4 ? CMD_PP_4B : CMD_PP, addr, sf.alen, + NULL, page, len, XFER_NORMAL, NULL, 100); + return ret ? ret : sf_wait_ready(100); +} + +static int nvt_sf_write(struct mtd_info *mtd, loff_t to, size_t len, + size_t *retlen, const u_char *buf) +{ + int ret; + + *retlen = 0; + if (to > mtd->size || len > mtd->size - to) + return -EINVAL; + if (sf.protect) + return -EROFS; + while (len) { + unsigned int n = min_t(size_t, len, + SZ_PAGE - (to & (SZ_PAGE - 1))); + + ret = sf_program(to, buf, n); + if (ret) + return ret; + to += n; + buf += n; + len -= n; + *retlen += n; + } + return 0; +} + +static int nvt_sf_erase(struct mtd_info *mtd, struct erase_info *instr) +{ + u32 addr, end; + int ret; + + /* Checked in 64 bits, before anything can wrap */ + if (instr->addr % SZ_SECTOR || instr->len % SZ_SECTOR || + instr->addr > mtd->size || instr->len > mtd->size - instr->addr) + return -EINVAL; + if (sf.protect) { + instr->state = MTD_ERASE_FAILED; + return -EROFS; + } + instr->state = MTD_ERASING; + addr = instr->addr; + end = instr->addr + instr->len; + for (; addr < end; addr += SZ_SECTOR) { + ret = sf_write_enable(); + if (!ret) + ret = fc_xfer(sf.alen == 4 ? CMD_SE_64K_4B : CMD_SE_64K, + addr, sf.alen, NULL, NULL, 0, XFER_NORMAL, + NULL, 100); + /* A 64 KiB erase takes up to 2 s on the usual parts */ + if (!ret) + ret = sf_wait_ready(5000); + if (ret) { + instr->fail_addr = addr; + instr->state = MTD_ERASE_FAILED; + return ret; + } + } + instr->state = MTD_ERASE_DONE; + return 0; +} + +/* + * The controller's clock and reset, as the vendor's nvt_spinor_reset(); + * the pins are the loader's, which booted from this flash. The clock + * divider follows the loader's device tree, /nor@fa900000 + * clock-frequency, 48 MHz on the SDK's boards. + */ +static void fc_hw_init(void) +{ + const void *fdt = nvt_loader_fdt(); + const fdt32_t *val = NULL; + u32 hz = 12000000; + int node; + + if (fdt) { + node = fdt_path_offset(fdt, "/nor@fa900000"); + if (node >= 0) + val = fdt_getprop(fdt, node, "clock-frequency", NULL); + if (val) + hz = fdt32_to_cpu(*val); + } + sf.ctrl = CTRL_CLK_DIV(hz < 25000000 ? 3 : hz < 37500000 ? 2 : + hz < 75000000 ? 1 : 0); + + setbits_le32(CG_FLASH_RSTN, CG_FLASH_RSTN_BIT); + clrbits_le32(CG_FLASH_GATE, CG_FLASH_GATE_BIT); + clrbits_le32(FC_INT_CTRL, INT_CTRL_DMA_EN); + writel(INT_STS_DONE, FC_INT_STS); +} + +struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs, + unsigned int max_hz, unsigned int spi_mode) +{ + struct spi_flash *flash = &sf.flash; + struct mtd_info *mtd = &flash->mtd; + u8 id[4]; + u32 jedec, size; + + fc_hw_init(); + if (fc_xfer(CMD_RDID, 0, 0, id, NULL, sizeof(id), XFER_NORMAL, NULL, + 100)) { + printf("SF: the flash controller does not answer\n"); + return NULL; + } + jedec = id[0] << 16 | id[1] << 8 | id[2]; + if (!jedec || jedec == 0xffffff) { + printf("SF: no flash (JEDEC id %06x)\n", jedec); + return NULL; + } + /* + * The last ID byte is log2 of the size, as the vendor driver takes it + * (trace-stdtable in the SDK's trees) + */ + if (id[2] >= 0x10 && id[2] <= 0x1a) { + size = 1 << id[2]; + } else { + size = SZ_8M; + if (!sf.announced) + printf("SF: JEDEC %06x: size unknown, taking 8 MiB\n", jedec); + } + sf.alen = size > SZ_16M ? 4 : 3; + sf.protect = sf_unprotect(id[0]) < 0; + + memset(flash, 0, sizeof(*flash)); + flash->name = "nvt-spi020"; + flash->size = size; + flash->page_size = SZ_PAGE; + flash->sector_size = SZ_SECTOR; + flash->erase_size = SZ_SECTOR; + flash->erase_opcode = sf.alen == 4 ? CMD_SE_64K_4B : CMD_SE_64K; + flash->read_opcode = sf.alen == 4 ? CMD_READ_4B : CMD_READ; + flash->program_opcode = sf.alen == 4 ? CMD_PP_4B : CMD_PP; + + mtd->name = "nvt-spi020"; + mtd->type = MTD_NORFLASH; + mtd->flags = MTD_CAP_NORFLASH; + mtd->size = size; + mtd->erasesize = SZ_SECTOR; + mtd->writesize = 1; + mtd->writebufsize = SZ_PAGE; + mtd->_read = nvt_sf_read; + mtd->_write = nvt_sf_write; + mtd->_erase = nvt_sf_erase; + mtd->priv = flash; + + /* Once: the environment and common/openipc.c probe again and again */ + if (!sf.announced) { + sf.announced = true; + printf("SF: Detected JEDEC %06x with page size %u Bytes, erase size %u KiB, total %u MiB\n", + jedec, SZ_PAGE, SZ_SECTOR >> 10, size >> 20); + } + return flash; +} + +void spi_flash_free(struct spi_flash *flash) +{ +} diff --git a/env/Kconfig b/env/Kconfig index 461db4049991..c65bfcc24826 100644 --- a/env/Kconfig +++ b/env/Kconfig @@ -330,7 +330,7 @@ config ENV_IS_IN_REMOTE config ENV_IS_IN_SPI_FLASH bool "Environment is in SPI flash" - depends on !CHAIN_OF_TRUST && (SPI || NVT_SFLASH) + depends on !CHAIN_OF_TRUST && (SPI || NVT_SFLASH || NVT_SPI020) default y if ARMADA_XP default y if INTEL_BAYTRAIL default y if INTEL_BRASWELL From b6a66c9f3ec57b19298b5569e381d0bcd2922c6e Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 22:29:32 +0000 Subject: [PATCH 26/38] openipc: build the NA51068 images (NT98321, NT98323) - openipc/na51068.dtsi: the device tree of the NT9832x SDK's NT98323 NOR EVB (cfg_98323_DDR4_4GX1_NOR_EVB, preprocessed and decompiled), with the OpenIPC boot chain in /nor (loader 0, fdt 0x10000, uboot 0x20000, and the nvtpack index the loader looks a partition up in) and its /nvt_memory_cfg but for linuxtmp (the SDK's: U-Boot at 0x1E000000, the pen at 0x1FF80000); nt98323.dts is it, nt98321.dts changes what the SDK's NT98321 EVB does (Linux 160 MiB, the audio SSP). - openipc/nt98321_config, nt98323_config: the SoC, NVT_SPI020 and MMC_SDHCI; SYS_TEXT_BASE 0x1E000000; SKIP_LOWLEVEL_INIT_ONLY instead of SKIP_LOWLEVEL_INIT: the loader jumps to U-Boot with its MMU on and its page tables in DDR (its region, 0x100000-0xA00000), so U-Boot's cpu_init_cp15 must turn the MMU off, else a write there hangs (a kernel load to 0x8000 did). - build.sh: build_loader() takes the die's loader directory and an optional MODEL; build_nvt() a die (default na51089) and a model; the NA51089 SoCs build as before. nt98321 and nt98323 take the loader's 321_DDR3_4GX1_NOR_EVB / 323_DDR4_4GX1_NOR_EVB models, and are in ALL_SOCS. - nvt-image.py: the same 256 KiB image; its comment says so. U-Boot is 242 KiB, 98 KiB in its LZMA BCL1 container (the slot is 128 KiB); the device tree 14 KiB. Verified: bash build.sh nt98562 nt98566 nt98560 nt98561 nt98321 nt98323 with Ubuntu's arm-linux-gnueabi-gcc 15.2; under qemu-hisilicon (PR #222) the two-boot smoke of an 8 MiB image passes on nt98321 and nt98323 (and still on nt98562, nt98566); see the driver commits for flash, network, SD and kernel checks. --- build.sh | 40 +- openipc/na51068.dtsi | 925 +++++++++++++++++++++++++++++++++++++++++ openipc/nt98321.dts | 30 ++ openipc/nt98321_config | 11 + openipc/nt98323.dts | 4 + openipc/nt98323_config | 11 + openipc/nvt-image.py | 10 +- 7 files changed, 1014 insertions(+), 17 deletions(-) create mode 100644 openipc/na51068.dtsi create mode 100644 openipc/nt98321.dts create mode 100644 openipc/nt98321_config create mode 100644 openipc/nt98323.dts create mode 100644 openipc/nt98323_config diff --git a/build.sh b/build.sh index e4b0b63f76a4..910dd2ce8878 100755 --- a/build.sh +++ b/build.sh @@ -20,7 +20,6 @@ if [ -z "${LOADER_CROSS_COMPILE}" ]; then fi BOOT_SRCDIR=$(pwd) -LOADER_SRCDIR=${BOOT_SRCDIR}/board/novatek/na51089/loader mkdir -p output @@ -33,33 +32,40 @@ mkconfig() { cat "$@" > "${builddir}/.config" } -# The SDK's loader, built in a copy: its make system writes into its tree +# The SDK's loader of a die (board/novatek/<die>/loader), built in a +# copy: its make system writes into its tree. CHIP, and the DDR clock, +# DDR size and model when given, override its ModelConfig. build_loader() { loaderdir=$1 - chip=$2 - dram_clk=$3 - dram_size=$4 + die=$2 + chip=$3 + dram_clk=$4 + dram_size=$5 + model=$6 rm -rf "${loaderdir}" - cp -a "${LOADER_SRCDIR}" "${loaderdir}" + cp -a "${BOOT_SRCDIR}/board/novatek/${die}/loader" "${loaderdir}" if ! make -C "${loaderdir}/MakeCommon" release \ CROSS_COMPILE="${LOADER_CROSS_COMPILE}" \ - CHIP="${chip}" DRAM1_CLK="${dram_clk}" \ + CHIP="${chip}" ${dram_clk:+DRAM1_CLK="${dram_clk}"} \ ${dram_size:+SDRAM_SIZE="${dram_size}"} \ + ${model:+MODEL="${model}"} \ >"${loaderdir}.log" 2>&1 </dev/null; then tail -n 30 "${loaderdir}.log" >&2 return 1 fi } -# Novatek NA51089: the mask ROM starts the loader, which trains the DDR, -# reads the device tree at 0x10000 and unpacks U-Boot from 0x20000 to its -# link address. +# Novatek NA51089, NA51068: the mask ROM starts the loader, which trains +# the DDR, reads the device tree at 0x10000 and unpacks U-Boot from +# 0x20000 to its link address. The die defaults to NA51089. build_nvt() { soc=$1 chip=$2 dram_clk=$3 dram_size=$4 + die=${5:-na51089} + model=$6 builddir=${BOOT_SRCDIR}/output/build-${soc}-nor loaderdir=${BOOT_SRCDIR}/output/build-${soc}-loader loader=${loaderdir}/Project/Model/Loader${chip}_Data/Release/LD98${chip}A.bin @@ -73,8 +79,8 @@ build_nvt() { "${builddir}/scripts/dtc/dtc" -q -I dts -O dtb \ -o "${builddir}/${soc}.dtb" "openipc/${soc}.dts" || return 1 - build_loader "${loaderdir}" "${chip}" "${dram_clk}" "${dram_size}" || - return 1 + build_loader "${loaderdir}" "${die}" "${chip}" "${dram_clk}" \ + "${dram_size}" "${model}" || return 1 text=$(sed -n 's/^CONFIG_SYS_TEXT_BASE=//p' "${builddir}/.config") python3 openipc/nvt-image.py "${loader}" "${builddir}/${soc}.dtb" \ @@ -101,13 +107,21 @@ build_soc() { build_nvt "${soc}" 562 666 ;; nt98566) build_nvt "${soc}" 566 933 ;; + # NA51068: the SDK's NAND models with the SPI NOR, its own DDR + # profile each (board/novatek/na51068/loader/Project/Model): + # NT98321 one 4 Gb DDR3 die at 1066 MHz, NT98323 one 4 Gb DDR4 + # die at 1200 MHz, as the SDK's cfg_98323_DDR4_4GX1_NOR_EVB. + nt98321) + build_nvt "${soc}" 321 "" "" na51068 321_DDR3_4GX1_NOR_EVB ;; + nt98323) + build_nvt "${soc}" 323 "" "" na51068 323_DDR4_4GX1_NOR_EVB ;; *) echo "unsupported SoC: ${soc}" >&2 return 1 ;; esac } -ALL_SOCS="nt98560 nt98561 nt98562 nt98566" +ALL_SOCS="nt98560 nt98561 nt98562 nt98566 nt98321 nt98323" SOCS="$@" [ -z "${SOCS}" ] && SOCS="${ALL_SOCS}" diff --git a/openipc/na51068.dtsi b/openipc/na51068.dtsi new file mode 100644 index 000000000000..c43b9c76d934 --- /dev/null +++ b/openipc/na51068.dtsi @@ -0,0 +1,925 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * The device tree of the NT9832x SDK's NT98323 NOR EVB + * (cfg_98323_DDR4_4GX1_NOR_EVB: one 4 Gb DDR4 die, 512 MiB), with the + * OpenIPC boot chain in the nor node: the loader at 0, this tree at + * 0x10000, U-Boot at 0x20000. + * + * The loader reads /nvt_memory_cfg (where U-Boot runs, where this tree + * and SHMINFO go) and /nor/partition_uboot. U-Boot hands the tree on to + * the kernel, with /memory and /hdal-memory/media split at ${osmem} + * (board/novatek/na51068/na51068.c), and takes the Ethernet wiring from + * /top@fe030000/eth. + */ + +/ { + model = "Novatek NA51068"; + compatible = "novatek,na51068", "nvt,ca9"; + interrupt-parent = <0x01>; + #address-cells = <0x01>; + #size-cells = <0x01>; + + cpus { + #address-cells = <0x01>; + #size-cells = <0x00>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <0x00>; + next-level-cache = <0x02>; + clock-frequency = <0x53724e00>; + phandle = <0x04>; + }; + + cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <0x01>; + cpu-release-addr = <0xfe0b9000>; + next-level-cache = <0x02>; + clock-frequency = <0x53724e00>; + phandle = <0x05>; + }; + }; + + cg@fe000000 { + compatible = "nvt,core_clk"; + reg = <0xfe000000 0x1000>; + }; + + periph_clk { + compatible = "nvt,periph_clk"; + #clock-cells = <0x00>; + clock-output-names = "periph_clk"; + phandle = <0x03>; + }; + + global_timer@F9C00200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0xf9c00200 0x20>; + interrupts = <0x01 0x0b 0xf01>; + clocks = <0x03>; + }; + + private_timer@f9c00600 { + compatible = "arm,cortex-a9-twd-timer"; + reg = <0xf9c00600 0x20>; + interrupts = <0x01 0x0d 0xf01>; + clocks = <0x03>; + }; + + pmu { + compatible = "arm,cortex-a9-pmu"; + interrupts = <0x00 0x70 0x04 0x00 0x71 0x04>; + interrupt-affinity = <0x04 0x05>; + }; + + cache-controller@F9C20000 { + compatible = "arm,pl310-cache"; + reg = <0xf9c20000 0x1000>; + interrupts = <0x00 0x61 0x04>; + cache-unified; + arm,shared-override; + cache-level = <0x02>; + arm,data-latency = <0x02 0x02 0x02>; + arm,tag-latency = <0x02 0x02 0x02>; + phandle = <0x02>; + }; + + interrupt-controller@0xF9C00000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <0x03>; + #address-cells = <0x01>; + interrupt-controller; + reg = <0xf9c01000 0x1000 0xf9c00100 0x100>; + phandle = <0x01>; + }; + + snoop-control-unit@0xf9c00000 { + compatible = "arm,cortex-a9-scu"; + reg = <0xf9c00000 0x100>; + }; + + chosen { + bootargs = " "; + }; + + aliases { + mmc0 = "/mmc@fa600000"; + }; + + timer@fe8c0000 { + compatible = "faraday,fttmr010"; + reg = <0xfe8c0000 0x1000>; + interrupts = <0x00 0x23 0x01>; + clock-frequency = <0xb71b00>; + ext_clk = <0x01>; + }; + + uart@fe200000 { + compatible = "ns16550a"; + reg = <0xfe200000 0x1000>; + interrupts = <0x00 0x1d 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x2dc6c00>; + fifo-size = <0x40>; + rx_trig_level = <0x00>; + hw_flowctrl = <0x00>; + }; + + uart@fe220000 { + compatible = "ns16550a"; + reg = <0xfe220000 0x1000>; + interrupts = <0x00 0x1e 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x2dc6c00>; + fifo-size = <0x40>; + rx_trig_level = <0x00>; + }; + + uart@fe240000 { + compatible = "ns16550a"; + reg = <0xfe240000 0x1000>; + interrupts = <0x00 0x38 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x2dc6c00>; + fifo-size = <0x40>; + rx_trig_level = <0x00>; + }; + + uart@fe260000 { + compatible = "ns16550a"; + reg = <0xfe260000 0x1000>; + interrupts = <0x00 0x43 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x2dc6c00>; + fifo-size = <0x40>; + rx_trig_level = <0x00>; + }; + + sata@f9e00000 { + compatible = "novatech,nvt_sata100"; + reg = <0xf9e00000 0x1000 0xfdc00000 0x1000>; + interrupts = <0x00 0x0f 0x04>; + device-id = <0x00>; + }; + + sata@f9f00000 { + compatible = "novatech,nvt_sata100"; + reg = <0xf9f00000 0x1000 0xfdd00000 0x1000>; + interrupts = <0x00 0x10 0x04>; + device-id = <0x01>; + }; + + gpio@fe400000 { + compatible = "faraday,ftgpio010"; + reg = <0xfe400000 0x1000>; + interrupts = <0x00 0x1f 0x04>; + pin_base = <0x00>; + status = "okay"; + gpio-controller; + #gpio-cells = <0x02>; + }; + + gpio@fe420000 { + compatible = "faraday,ftgpio010"; + reg = <0xfe420000 0x1000>; + interrupts = <0x00 0x36 0x04>; + pin_base = <0x20>; + status = "okay"; + gpio-controller; + #gpio-cells = <0x02>; + }; + + gpio@fe440000 { + compatible = "faraday,ftgpio010"; + reg = <0xfe440000 0x1000>; + interrupts = <0x00 0x37 0x04>; + pin_base = <0x40>; + status = "okay"; + gpio-controller; + #gpio-cells = <0x02>; + }; + + gpio@fe640000 { + compatible = "faraday,ftgpio010"; + reg = <0xfe640000 0x1000>; + interrupts = <0x00 0x57 0x04>; + pin_base = <0x60>; + status = "okay"; + gpio-controller; + #gpio-cells = <0x02>; + }; + + irdet@fe540000 { + compatible = "nvt,nvt_irdet"; + reg = <0xfe540000 0x1000>; + interrupts = <0x00 0x41 0x04>; + }; + + pwm@fe6c0000 { + compatible = "nvt,nvt_pwm"; + reg = <0xfe6c0000 0x1000>; + interrupts = <0x00 0x2b 0x04>; + }; + + pwr@0x0 { + compatible = "nvt,nvt_pwr"; + }; + + pwr@0x1 { + compatible = "nvt,nvt_pwr"; + }; + + dma030@fca00000 { + compatible = "nvt,ftdmac030"; + reg = <0xfca00000 0x1000>; + interrupts = <0x00 0x0e 0x04>; + device-id = <0x00>; + nvt,dma-channel-mask = <0x1f>; + #dma-cells = <0x03>; + }; + + cc@f8900000 { + compatible = "kdrv_rpc"; + reg = <0xf8900000 0x300>; + interrupts = <0x00 0x00 0x04>; + }; + + mmc@fa600000 { + compatible = "nvt,nvt_ivot_sdc-sdhci"; + reg = <0xfa600000 0x1000>; + interrupts = <0x00 0x40 0x04>; + max-frequency = <0xb71b00>; + driving = <0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08>; + pulse-latch = <0x01>; + no-1-8-v; + }; + + nor@fa900000 { + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "nvt,nvt_spi020_nor"; + reg = <0xfa900000 0x1000>; + interrupts = <0x00 0x20 0x04>; + clock-frequency = <0x2dc6c00>; + chip-select = <0x00>; + nvt-devname = "spi_nor.0"; + trace-stdtable = <0x01>; + + partition_loader { + label = "loader"; + reg = <0x00 0x00 0x00 0x10000>; + }; + + partition_fdt { + label = "fdt"; + reg = <0x00 0x10000 0x00 0x10000>; + }; + + partition_uboot { + label = "uboot"; + reg = <0x00 0x20000 0x00 0x20000>; + }; + + /* The loader looks a partition up here by its label */ + nvtpack { + ver = "NVTPACK_FW_INI_16072017"; + method = <0x01>; + + index { + + id0 { + partition_name = "loader"; + }; + + id1 { + partition_name = "fdt"; + }; + + id2 { + partition_name = "uboot"; + }; + }; + }; + }; + + top@fe030000 { + compatible = "nvt,nvt_top"; + reg = <0xfe030000 0x1000 0xfe040000 0x1000 0xfe400000 0x10000>; + + uart { + pinmux = <0x01>; + }; + + i2c { + pinmux = <0x10011>; + }; + + sdio { + pinmux = <0x20>; + }; + + spi { + pinmux = <0x02>; + }; + + extclk { + pinmux = <0x00>; + }; + + ssp { + pinmux = <0x11>; + }; + + lcd { + pinmux = <0x00>; + }; + + remote { + pinmux = <0x00>; + }; + + vcap { + pinmux = <0x00>; + }; + + eth { + pinmux = <0x1201>; + }; + + misc { + pinmux = <0x100066>; + }; + + pwm { + pinmux = <0x11>; + }; + + vcapint { + pinmux = <0x00>; + }; + }; + + u2host@f9100000 { + compatible = "nvt,ehci-nvtivot"; + reg = <0xf9100000 0x1000>; + phy_reg = <0xfcf00000>; + interrupts = <0x00 0x3d 0x04>; + channel = <0x00>; + }; + + gm2d@faa00000 { + compatible = "nvt,gm2d"; + reg = <0xfaa00000 0x2000>; + interrupts = <0x00 0x16 0x04>; + }; + + ssca@fd500000 { + compatible = "nvt,ssca"; + reg = <0xfd500000 0x100>; + interrupts = <0x00 0x1c 0x04>; + }; + + nvt_arb@fc400000 { + compatible = "nvt,nvt_arb"; + reg = <0xfc400000 0xa000 0xfd600000 0xa000>; + interrupts = <0x00 0x53 0x04>; + }; + + u2host@f9200000 { + compatible = "nvt,ehci-nvtivot"; + reg = <0xf9200000 0x1000>; + phy_reg = <0xfd000000>; + interrupts = <0x00 0x3e 0x04>; + channel = <0x01>; + }; + + ahbc@0xfe840000 { + compatible = "nvt,nvt_ahbc"; + reg = <0xfe840000 0x1000>; + }; + + dsp@f8800000 { + compatible = "nvt,nvt_dsp"; + reg = <0xf8800000 0x200 0xfb000000 0x800000>; + interrupts = <0x00 0x01 0x04>; + }; + + eth0@fcc00000 { + compatible = "nvt,synopsys_eth"; + reg = <0xfcc00000 0x10000>; + interrupts = <0x00 0x3b 0x04>; + sp-clk = <0x01>; + ref-clk-out = <0x00>; + phy-rst = <0x55>; + }; + + eth1@fcd00000 { + compatible = "nvt,synopsys_eth"; + reg = <0xfcd00000 0x10000>; + interrupts = <0x00 0x3c 0x04>; + sp-clk = <0x00>; + ref-clk-out = <0x00>; + phy-rst = <0x31>; + }; + + rtc@fe880000 { + compatible = "nvt,nvt_rtc"; + reg = <0xfe880000 0x100>; + interrupts = <0x00 0x5f 0x04>; + }; + + wdt@fe8a0000 { + compatible = "nvt,nvt_wdt"; + reg = <0xfe8a0000 0x10000>; + }; + + vcap316@f9d00000 { + compatible = "nvt,vcap316"; + reg = <0xf9d00000 0x18000>; + interrupts = <0x00 0x05 0x04>; + host-id = <0x00>; + }; + + dei321@fd800000 { + compatible = "nvt,dei321"; + reg = <0xfd800000 0x18000>; + interrupts = <0x00 0x12 0x04>; + host-id = <0x00>; + }; + + vpe321@fe2a0000 { + compatible = "nvt,vpe321"; + reg = <0xfe2a0000 0x18000>; + interrupts = <0x00 0x04 0x04>; + host-id = <0x00>; + }; + + osg@FD100000 { + compatible = "nvt,nvt_osg"; + reg = <0xfd100000 0x300>; + interrupts = <0x00 0x17 0x04>; + }; + + jpg@fac00000 { + compatible = "nvt,nvt_jpg"; + reg = <0xfac00000 0x100000>; + interrupts = <0x00 0x1a 0x04>; + }; + + ai@fecc0000 { + compatible = "nvt,kdrv_ai"; + reg = <0xfecc0000 0x1f8 0xfec20000 0xf4 0xfec40000 0x218>; + interrupts = <0x00 0x03 0x04 0x00 0x5e 0x04 0x00 0x02 0x04>; + }; + + crypto@fec60000 { + compatible = "nvt,nvt_crypto"; + reg = <0xfec60000 0x100>; + interrupts = <0x00 0x2c 0x04>; + mclk = <0x00>; + }; + + hash@fec80000 { + compatible = "nvt,nvt_hash"; + reg = <0xfec80000 0x100>; + interrupts = <0x00 0x2d 0x04>; + mclk = <0x00>; + }; + + rsa@feca0000 { + compatible = "nvt,nvt_rsa"; + reg = <0xfeca0000 0x100>; + interrupts = <0x00 0x2e 0x04>; + mclk = <0x00>; + }; + + drvdump@0 { + compatible = "nvt,nvt_drvdump"; + }; + + regulator@0x0 { + compatible = "nvt,nvt_regulator"; + }; + + thmal@fe2c0000 { + compatible = "nvt,thermal"; + reg = <0xfe2c0000 0x1000>; + default_trim = <0xe7>; + }; + + nvt_otp@fece0000 { + compatible = "nvt,nvt_otp"; + reg = <0xfece0000 0x70>; + }; + + busmon@fe000000 { + compatible = "nvt,nvt_busmon"; + reg = <0xfe000000 0x100>; + }; + + tse@fe6e0000 { + compatible = "nvt,nvt_tse"; + reg = <0xfe6e0000 0x300>; + interrupts = <0x00 0x0d 0x04>; + }; + + pll_preset@0 { + + pll0 { + pll_config = <0x00 0x1dcd6500 0x00>; + }; + + pll1 { + pll_config = <0x01 0x00 0x00>; + }; + + pll2 { + pll_config = <0x02 0x23c34600 0x00>; + }; + + pll3 { + pll_config = <0x03 0x00 0x00>; + }; + + pll4 { + pll_config = <0x04 0x00 0x00>; + }; + + pll5 { + pll_config = <0x05 0x00 0x00>; + }; + + pll6 { + pll_config = <0x06 0x00 0x00>; + }; + + pll7 { + pll_config = <0x07 0x00 0x00>; + }; + + pll8 { + pll_config = <0x08 0x1bb75640 0x00>; + }; + + pll9 { + pll_config = <0x09 0x00 0x00>; + }; + + pll10 { + pll_config = <0x0a 0x1017df80 0x00>; + }; + + pll11 { + pll_config = <0x0b 0x00 0x00>; + }; + + pll12 { + pll_config = <0x0c 0x00 0x00>; + }; + + pll13 { + pll_config = <0x0d 0x00 0x00>; + }; + + pll14 { + pll_config = <0x0e 0x00 0x00>; + }; + + pll15 { + pll_config = <0x0f 0x00 0x00>; + }; + + pll16 { + pll_config = <0x10 0x00 0x00>; + }; + + pll17 { + pll_config = <0x11 0x00 0x00>; + }; + + pll18 { + pll_config = <0x12 0x00 0x00>; + }; + }; + + i2c0@fe300000 { + compatible = "nvt,ftiic010"; + reg = <0xfe300000 0x100>; + interrupts = <0x00 0x15 0x04>; + clock-frequency = <0x186a0>; + #address-cells = <0x01>; + #size-cells = <0x00>; + }; + + i2c1@fe320000 { + compatible = "nvt,ftiic010"; + reg = <0xfe320000 0x100>; + interrupts = <0x00 0x24 0x04>; + clock-frequency = <0x186a0>; + #address-cells = <0x01>; + #size-cells = <0x00>; + }; + + i2c2@fe340000 { + compatible = "nvt,ftiic010"; + reg = <0xfe340000 0x100>; + interrupts = <0x00 0x3f 0x04>; + clock-frequency = <0x186a0>; + #address-cells = <0x01>; + #size-cells = <0x00>; + }; + + i2c3@fe360000 { + compatible = "nvt,ftiic010"; + reg = <0xfe360000 0x100>; + interrupts = <0x00 0x42 0x04>; + clock-frequency = <0x186a0>; + #address-cells = <0x01>; + #size-cells = <0x00>; + }; + + i2c4@fe380000 { + compatible = "nvt,ftiic010"; + reg = <0xfe380000 0x100>; + interrupts = <0x00 0x56 0x04>; + clock-frequency = <0x186a0>; + #address-cells = <0x01>; + #size-cells = <0x00>; + }; + + i2c5@fe3a0000 { + compatible = "nvt,ftiic010"; + reg = <0xfe3a0000 0x100>; + interrupts = <0x00 0x13 0x04>; + clock-frequency = <0x186a0>; + #address-cells = <0x01>; + #size-cells = <0x00>; + }; + + audio_in_part { + ssp = <0x00 0x01 0x10 0x10 0x1f40 0xbb8000 0x1f4000 0x00 0xffffffff 0x06 0x00 0x01 0x10 0x1f40 0xbb8000 0x2ee000 0x01 0xffffffff 0xffffffff 0x00 0x01 0x10 0x1f40 0xbb8000 0x7d000 0x01 0xffffffff 0xffffffff 0x00 0x01 0x10 0x1f40 0xbb8000 0x7d000 0x01 0xffffffff>; + }; + + audio_out_part { + ssp = <0x01 0x01 0xffffffff 0x01 0x06 0xffffffff 0x00 0x01 0xffffffff 0x00 0x01 0xffffffff>; + }; + + lcd200@fdb00000 { + compatible = "nvt,lcd200"; + reg = <0xfdb00000 0x10000>; + interrupts = <0x00 0x0c 0x04>; + device-id = <0x00>; + }; + + lcd300@fda00000 { + compatible = "nvt,lcd300"; + reg = <0xfda00000 0x10000>; + interrupts = <0x00 0x0a 0x04>; + device-id = <0x00>; + }; + + hdmi20@0 { + compatible = "nvt,hdmi_top"; + reg = <0xfd900000 0x1000>; + interrupts = <0x00 0x08 0x04>; + device-id = <0x00>; + }; + + tve100@0 { + compatible = "nvt,tve100"; + reg = <0xfad00000 0x1000>; + interrupts = <0x00 0x21 0x04>; + device-id = <0x00>; + }; + + nvtmpp { + compatible = "nvt,nvtmpp"; + }; + + isf_stream { + compatible = "nvt,isf_stream"; + }; + + isf_flow { + compatible = "nvt,isf_flow"; + }; + + isf_vdocap { + compatible = "nvt,isf_vdocap"; + }; + + isf_vdoprc { + compatible = "nvt,isf_vdoprc"; + }; + + isf_dummy { + compatible = "nvt,isf_dummy"; + }; + + isf_vdoenc { + compatible = "nvt,isf_vdoenc"; + }; + + isf_vdodec { + compatible = "nvt,isf_vdodec"; + }; + + isf_vdoout { + compatible = "nvt,isf_vdoout"; + }; + + dispobj { + compatible = "nvt,nvt_dispobj"; + }; + + dispdev { + compatible = "nvt,nvt_dispdev"; + }; + + audio { + compatible = "nvt,nvt_audio"; + }; + + msdcnvt { + compatible = "nvt,msdcnvt"; + }; + + msdcnvt_adj { + compatible = "nvt,msdcnvt_adj"; + }; + + msdcnvt_custom_si { + compatible = "nvt,msdcnvt_custom_si"; + }; + + wavstudio { + compatible = "nvt,wavstudio"; + }; + + isf_audenc { + compatible = "nvt,isf_audenc"; + }; + + isf_auddec { + compatible = "nvt,isf_auddec"; + }; + + isf_audcap { + compatible = "nvt,isf_audcap"; + }; + + isf_audout { + compatible = "nvt,isf_audout"; + }; + + nvt_ipc { + compatible = "nvt,nvt_ipc"; + }; + + h26xd@fcb00000 { + compatible = "nvt,h26xdec"; + reg = <0xfcb00000 0x4000>; + interrupts = <0x00 0x1b 0x04>; + device-id = <0x00>; + }; + + h26xenc@fc600000 { + compatible = "nvt,h26xenc"; + reg = <0xfc600000 0x10000>; + interrupts = <0x00 0x07 0x04>; + device-id = <0x00>; + }; + + /* + * What the loader reads: where this tree and SHMINFO go, where it + * runs (loader, up to 0xA00000) and where U-Boot is unpacked and + * stays (uboot, the SDK's, past Linux and its CMA pools). + * core2entry1/2 park the second core for Linux (U-Boot's HEADINFO + * asks for SMP). As the SDK's boards, but for the tree's size. + */ + nvt_memory_cfg { + #address-cells = <0x01>; + #size-cells = <0x01>; + + dram { + reg = <0x00 0x20000000>; + }; + + core2entry1 { + reg = <0x00 0x80000>; + }; + + fdt { + reg = <0x80000 0x80000>; + }; + + loader { + reg = <0x100000 0x900000>; + }; + + shmem { + reg = <0xa00000 0x100000>; + }; + + linuxtmp { + reg = <0xb00000 0x1d500000>; + }; + + uboot { + reg = <0x1e000000 0x1f80000>; + }; + + core2entry2 { + reg = <0x1ff80000 0x80000>; + }; + }; + + memory { + device_type = "memory"; + reg = <0x00 0xc000000>; + }; + + reserved-memory { + #address-cells = <0x01>; + #size-cells = <0x01>; + ranges; + + cma0@0x03000000 { + compatible = "shared-dma-pool"; + reusable; + reg = <0x3000000 0x1800000>; + alignment = <0x400000>; + status = "okay"; + phandle = <0x06>; + }; + + dsp_cma@0x02000000 { + compatible = "shared-dma-pool"; + reusable; + reg = <0x2000000 0x1000000>; + alignment = <0x400000>; + status = "okay"; + phandle = <0x07>; + }; + }; + + nvt_cma { + compatible = "nvt,nvt_cma"; + memory-region = <0x06>; + id = <0x00>; + }; + + nvt_dsp_cma { + compatible = "nvt,nvt_cma"; + memory-region = <0x07>; + id = <0x01>; + }; + + hdal-memory { + #address-cells = <0x01>; + #size-cells = <0x01>; + + media { + reg = <0xc000000 0x14000000>; + }; + }; + + ddr_chip_mapping { + mapping = <0x00 0x00 0x00 0x20000000>; + }; + + nvt_info { + BIN_NAME = "FW98323A"; + BIN_NAME_T = "FW98323T"; + RTOS_APP_MAIN = "test"; + EMBMEM_BLK_SIZE = "0x10000"; + EMBMEM = "EMBMEM_SPI_NOR"; + NVT_CFG_APP_EXTERNAL = "iperf-3 e2fsprogs"; + NVT_CFG_APP = "arm_neon_perf mem sw_dbg i2c_access memcpy drystone-2.0"; + NVT_ROOTFS_ETC = "COMMON"; + NVT_BINARY_FILE_STRIP = "yes"; + NVT_CFG_KERNEL_CFG = "na51068_evb_defconfig_nor_release"; + NVT_CFG_UBOOT_CFG = "nvt-na51068_evb_nor_defconfig"; + NVT_LINUX_SMP = "NVT_LINUX_SMP_ON"; + NVT_DEFAULT_NETWORK_BOOT_PROTOCOL = "NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_STATIC_IP"; + NVT_ROOTFS_TYPE = "NVT_ROOTFS_TYPE_NOR_SQUASH"; + NVT_ETHERNET = "NVT_ETHERNET_EQOS"; + NVT_CURL_SSL = "NVT_CURL_SSL_OPENSSL"; + NVT_UBOOT_ENV_IN_STORG_SUPPORT = "NVT_UBOOT_ENV_IN_STORG_SUPPORT_OFF"; + }; +}; diff --git a/openipc/nt98321.dts b/openipc/nt98321.dts new file mode 100644 index 000000000000..74c86152e38e --- /dev/null +++ b/openipc/nt98321.dts @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: GPL-2.0+ +/dts-v1/; + +/include/ "na51068.dtsi" + +/* + * What the SDK's NT98321 EVB (cfg_98321_DDR3_4GX1_NAND_EVB, one 4 Gb DDR3 + * die, 512 MiB) changes, but for its NAND: Linux gets 160 MiB, and the + * audio input's first SSP port is enabled. The flash is OpenIPC's NOR. + */ +/ { + audio_in_part { + ssp = <0x01 0x01 0x10 0x10 0x1f40 0xbb8000 0x1f4000 0x00 0xffffffff 0x06 0x00 0x01 0x10 0x1f40 0xbb8000 0x2ee000 0x01 0xffffffff 0xffffffff 0x00 0x01 0x10 0x1f40 0xbb8000 0x7d000 0x01 0xffffffff 0xffffffff 0x00 0x01 0x10 0x1f40 0xbb8000 0x7d000 0x01 0xffffffff>; + }; + + memory { + reg = <0x00 0xa000000>; + }; + + hdal-memory { + media { + reg = <0xa000000 0x16000000>; + }; + }; + + nvt_info { + BIN_NAME = "FW98321A"; + BIN_NAME_T = "FW98321T"; + }; +}; diff --git a/openipc/nt98321_config b/openipc/nt98321_config new file mode 100644 index 000000000000..3a8c15ba4831 --- /dev/null +++ b/openipc/nt98321_config @@ -0,0 +1,11 @@ +CONFIG_TARGET_NT98321=y +CONFIG_PRODUCT_SOC="nt98321" +# NA51068: the SPI NOR on the FTSPI020, the SD card on a standard SDHCI +CONFIG_NVT_SPI020=y +CONFIG_MMC_SDHCI=y +# The loader jumps here with its MMU on, its page tables in DDR (in its +# region, 0x100000-0xA00000): cpu_init_cp15 turns the MMU off +# CONFIG_SKIP_LOWLEVEL_INIT is not set +CONFIG_SKIP_LOWLEVEL_INIT_ONLY=y +# /nvt_memory_cfg/uboot in openipc/na51068.dtsi, the SDK boards' +CONFIG_SYS_TEXT_BASE=0x1E000000 diff --git a/openipc/nt98323.dts b/openipc/nt98323.dts new file mode 100644 index 000000000000..93e2cc852af3 --- /dev/null +++ b/openipc/nt98323.dts @@ -0,0 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0+ +/dts-v1/; + +/include/ "na51068.dtsi" diff --git a/openipc/nt98323_config b/openipc/nt98323_config new file mode 100644 index 000000000000..3ed916fa71ae --- /dev/null +++ b/openipc/nt98323_config @@ -0,0 +1,11 @@ +CONFIG_TARGET_NT98323=y +CONFIG_PRODUCT_SOC="nt98323" +# NA51068: the SPI NOR on the FTSPI020, the SD card on a standard SDHCI +CONFIG_NVT_SPI020=y +CONFIG_MMC_SDHCI=y +# The loader jumps here with its MMU on, its page tables in DDR (in its +# region, 0x100000-0xA00000): cpu_init_cp15 turns the MMU off +# CONFIG_SKIP_LOWLEVEL_INIT is not set +CONFIG_SKIP_LOWLEVEL_INIT_ONLY=y +# /nvt_memory_cfg/uboot in openipc/na51068.dtsi, the SDK boards' +CONFIG_SYS_TEXT_BASE=0x1E000000 diff --git a/openipc/nvt-image.py b/openipc/nvt-image.py index 5d42c043865e..099154de293d 100644 --- a/openipc/nvt-image.py +++ b/openipc/nvt-image.py @@ -1,16 +1,18 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: GPL-2.0+ # -# Build the boot partition image of a Novatek NA51089 camera: +# Build the boot partition image of a Novatek NA51089 camera, or of an +# NA51068 (NT98321 / NT98323) DVR/NVR board: # # 0x00000 the loader (it trains the DDR; the mask ROM starts it) # 0x10000 the device tree the loader reads, then hands to U-Boot # 0x20000 U-Boot, in an LZMA BCL1 container # # up to the environment at 0x40000. The loader finds U-Boot through the -# device tree's /nor/partition_uboot, unpacks it with the mask ROM's LZMA -# decoder to /nvt_memory_cfg/uboot and starts it at the HEADINFO's -# CodeEntry, once the checksum over the unpacked image adds up. +# device tree's /nor/partition_uboot, unpacks it with an LZMA decoder +# (NA51089's mask ROM's, the one the NA51068 loader's Compress.a has) to +# /nvt_memory_cfg/uboot and starts it at the HEADINFO's CodeEntry, once +# the checksum over the unpacked image adds up (NA51089). # # usage: nvt-image.py LOADER DTB U-BOOT.BIN TEXT_BASE OUTPUT From 9021662b647dca098adad29e6a612d80c69515d6 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 22:29:45 +0000 Subject: [PATCH 27/38] docs: the NA51068 port in CLAUDE.md What a teammate needs for the NT98321 / NT98323: the boot chain and where things land in DDR, the loader's MMU (SKIP_LOWLEVEL_INIT_ONLY), the timer and clock, the drivers, the kernel hand-off limit (CONFIG_SYS_BOOTMAPSZ), what is not done (SPI NAND, the CPU's 1400 MHz) and what was verified. SD, verified under qemu-hisilicon -M nt98323 with -drive if=sd: mmc info (4-bit, SD 3.0), mmc read of 1 MiB at block 0x186a0 and mmc write/read at 0x1c000 against the host's CRC32 and the image file, mmc part, fatls / fatinfo of a FAT16 partition, and OpenIPC's recovery writing uImage.nt98323.img to flash 0x50000 (byte-exact), then skipping it at the next boot ("already in flash"). --- CLAUDE.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 299efebcf632..06cdfd5f02c5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -31,8 +31,9 @@ Adding or dropping a SoC needs both branches: `openipc/<soc>.dts`, and `TARGET_*` in `arch/arm/mach-novatek/Kconfig`; - there: `build-novatek.yml`'s matrices and the README. -The other dies of the SDKs (NA51055, NA51068, NA51090, NA51102, NA51103, -the NS02xxx parts) are not supported. +The NA51068 DVR/NVR die (NT98321, NT98323) is supported on SPI NOR too: +see "NA51068" below. The other dies of the SDKs (NA51055, NA51090, +NA51102, NA51103, the NS02xxx parts) are not. ## Relationship to mainline @@ -170,7 +171,7 @@ offset 0: ## Build ```sh -bash build.sh # both; continues past failures, exits non-zero if any failed +bash build.sh # all of ALL_SOCS; continues past failures, exits non-zero if any failed bash build.sh nt98566 # one or more SoCs (CROSS_COMPILE defaults to arm-linux-gnueabi-) ``` @@ -180,7 +181,7 @@ bash build.sh nt98566 # one or more SoCs (CROSS_COMPILE defaults to arm-li `olddefconfig`. There are no `configs/*_defconfig` for these targets. - The loader uses `LOADER_CROSS_COMPILE`: `arm-none-eabi-` if there is one, else `CROSS_COMPILE`. -- U-Boot is ~233 KiB, ~94 KiB packed, in the 128 KiB slot; +- U-Boot is ~233 KiB, ~94 KiB packed (NA51068: 242 KiB, 98 KiB), in the 128 KiB slot; `nvt-image.py` fails the build if a part does not fit. Check the packed size after enabling anything. @@ -221,6 +222,55 @@ it. host's command and FIFO timing. - **On silicon:** nothing yet. +## NA51068 + +The NT9832x SDK v1.02.024's die: NT98321 (DDR3) and NT98323 (DDR4), two +Cortex-A9s (MPCore at `0xF9C00000`), Faraday-heritage peripherals, +external DDR (512 MiB or more on every SDK board). `TARGET_NT98321`, +`TARGET_NT98323`, `NVT_NA51068`; `board/novatek/na51068`, +`arch/arm/mach-novatek/na51068.c`, `include/mach/na51068.h`, +`openipc/na51068.dtsi` (the SDK's `cfg_98323_DDR4_4GX1_NOR_EVB` tree with +the OpenIPC `/nor` chain; `nt98321.dts` changes what the 321 EVB does). + +- **Boot:** as NA51089, same image (`nvt-image.py`): loader 0 (64 KiB), + tree 0x10000, BCL1 LZMA U-Boot 0x20000. The loader + (`board/novatek/na51068/loader`, `na51068_loader_v1.08.014`) runs from + SRAM `0xFE080000` and then from DDR `0x100000`; its mask ROM has no + routines, its LZMA decoder is `lzma_inflate()` of its own `Compress.a` + (OpenIPC hooks algorithm 11 to it). Models `323_DDR4_4GX1_NOR_EVB` and + `321_DDR3_4GX1_NOR_EVB` (SpiFlash, `STORAGEEXT NONE`: with the SD + update code the image is over 64 KiB). The tree goes to `0x80000`, + SHMINFO `0xA00000`, U-Boot `0x1E000000` (the SDK's), the second core's + pen `0x1FF80000` (HEADINFO BinCtrl SMP). +- **The loader jumps with its MMU on**, page tables in its DDR region: + `SKIP_LOWLEVEL_INIT_ONLY` (not `SKIP_LOWLEVEL_INIT`) so that + `cpu_init_cp15` turns it off; else writes to `0x100000+` hang. +- **Timer:** the A9 global timer at PLL16's rate (CG `0x107C0`+0x20..28, + 12 MHz x ratio / 2^17; an eighth of the CPU). The CPU clock is the + loader's: the vendor U-Boot's raise to 1400 MHz needs the core voltage + set by PWM from eFuse trim, not ported. +- **Console** UART0 `0xFE200000`, 48 MHz. **Reset** the watchdog + `0xFE8A0000`, as the vendor kernel. +- **SPI NOR:** FTSPI020 `0xFA900000`, `drivers/mtd/spi/nvt_spi020.c` + (`NVT_SPI020`), PIO, single lane, 4-byte opcodes past 16 MiB. +- **Ethernet:** two `nvt_eqos` MACs (`0xFCC00000` eth0, `0xFCD00000` + eth1), each RGMII, RMII or the embedded PHY per `/top@fe030000/eth` + pinmux (`0x1201`: MAC0 RGMII, embedded PHY on MAC1). Both registered; + `eth_init` moves on to the next without link. +- **SD:** a standard SDHCI at `0xFA600000`, mainline `sdhci.c` non-DM + (`add_sdhci`). +- **Kernel:** `osmem` 192M (323) / 160M (321) as the SDK boards; + `CONFIG_SYS_BOOTMAPSZ` 128 MiB: the SDK's kernel 4.9 hangs silently + with the tree and initrd just below 192 MiB. +- **NAND:** the qemu machine picks NAND for a 128/256 MiB image; NT98321 + boards usually boot from SPI NAND, which needs a SPI020 NAND driver and + a UBI layout: not done. +- **Verified under qemu** (`-M nt98323` / `nt98321`, real loader): two-boot + smoke; `sf` read/erase/write at odd offsets (16 and 32 MiB); `saveenv` + + `reset`; dhcp, ping, 3 MB tftp on both MACs; SD `mmc read/write`, + `fatls`, recovery of `uImage.<soc>.img`; the SDK's kernel 4.9.118 + + NT9852x ramdisk to a shell with `${fdtaddr}`. **On silicon:** nothing. + ## Things to keep - `mem=` stays the first kernel argument, as on the other OpenIPC targets. From c83ec18d26330e8f4a3cb4d5156d5b25ba0ad627 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 22:57:48 +0000 Subject: [PATCH 28/38] novatek: build the NS02501 loader with a stock toolchain The NA51089 and NA51055 loaders' changes (cf320658df3, 784be2b977c, 1098fc3137e, 38ec5add3a8), made again for the NS02501 one, so that a distribution's Arm toolchain builds it (arm-none-eabi, or arm-linux-gnueabi as U-Boot's): - target("thumb2") is not a GCC target attribute: target("thumb"); - bin_info.h's header guard defined a different name than it tested; - -fshort-enums: the vendor libraries are built with short enums; - the link asks for neither libstdc++ nor libm, which nothing uses and Ubuntu's arm-none-eabi does not have; - a raise() for libgcc's division by zero handler; - the OP-TEE decrypt option follows its own setting (the same vendor typo as the other loaders'; both are Normal here). And for OpenIPC's images: the model boots from the SPI NOR (STORAGEINT SpiFlash) and defaults to the 533QD, the SDK's NT98533 package, whose loader runs under qemu-hisilicon (its 533QC one checks for a DDR die the board does not have); build.sh passes CHIP for each part. The loader is 45056 bytes (0xB000, what encrypt_boot_dump pads it to; its main part deflated by bfc, 32712 bytes before padding), built with Ubuntu's arm-linux-gnueabi 15 and, in Ubuntu 24.04 as CI, with arm-none-eabi 13.2 and arm-linux-gnueabi 13.3. --- .../ns02501/loader/Include/modelext/bin_info.h | 2 +- .../LibExt/LIBExt_src/Ctrl_Flow/arch_timer.c | 2 +- .../loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c | 2 +- .../loader/LibExt/LIBExt_src/Ctrl_Flow/bl_linux.c | 2 +- .../LibExt/LIBExt_src/Ctrl_Flow/bl_lowlevel_init.c | 2 +- .../loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c | 14 +++++++------- .../loader/LibExt/LIBExt_src/Ctrl_Flow/main.c | 12 +++++++++++- .../loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c | 2 +- .../LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c | 2 +- .../loader/LibExt/LIBExt_src/Ctrl_Flow/time_util.c | 2 +- .../ns02501/loader/LibExt/LIBExt_src/compress/lz.c | 6 +++--- .../ns02501/loader/MakeCommon/MakeCommon.txt | 2 +- .../ns02501/loader/MakeCommon/OutputImg.txt | 4 ++-- .../ns02501/loader/Project/Model/MakeConfig.txt | 2 +- .../loader/Project/Model/ModelConfig_EMU_EVB.txt | 4 ++-- .../loader/Project/Model/Src/UART/uart_upgrade.c | 2 +- .../loader/Project/Model/Src/USB/usb_update.c | 2 +- .../ns02501/loader/Project/Model/Src/prj_main.c | 2 +- 18 files changed, 38 insertions(+), 28 deletions(-) diff --git a/board/novatek/ns02501/loader/Include/modelext/bin_info.h b/board/novatek/ns02501/loader/Include/modelext/bin_info.h index 130ec81e369f..cfae0d5de444 100755 --- a/board/novatek/ns02501/loader/Include/modelext/bin_info.h +++ b/board/novatek/ns02501/loader/Include/modelext/bin_info.h @@ -39,7 +39,7 @@ Copyright Novatek Microelectronics Corp. 2011. All rights reserved. */ #ifndef _BINI_NFO_H -#define _BIN_INFO_H +#define _BINI_NFO_H #define BIN_INFO_VER 0x19062115 ///< YYYY/MM/DD HH diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/arch_timer.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/arch_timer.c index 0c679d600a10..14694ac13dbd 100755 --- a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/arch_timer.c +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/arch_timer.c @@ -2,7 +2,7 @@ #include "arch_timer.h" -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) #define isb() asm volatile("isb" : : : "memory") #if (BOOT_LINUX_SUPPORT) diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c index 805d08b9033b..362e75d48e93 100755 --- a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -52,7 +52,7 @@ PSTORAGE_OBJ int_strg_obj = NULL; #define FW_PART1_SIZE_OFFSET64 (CODE_SECTION_OFFSET64 + 0x08) //ref to CodeInfo.S on rtos (addr of _section_01_size) //#define TEE_HEADER_SIZE 0x1C // refer to: optee_header_t -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) #define bl_memcpy utl_memcpy #define bl_memset utl_memset diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_linux.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_linux.c index 21838312e55d..e40f5088bb05 100755 --- a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_linux.c +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_linux.c @@ -44,7 +44,7 @@ #define IS_BIN_OVERLAP(addr1, size1, addr2, size2) (!(((addr1 + size1 - 1) < addr2) || (addr1 > (addr2 + size2 - 1)))) -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) #define ALIGN_FLOOR(value, base) ((value) & ~((base)-1)) #define ALIGN_CEIL(value, base) ALIGN_FLOOR((value) + ((base)-1), base) diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lowlevel_init.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lowlevel_init.c index d0dc78ba2542..557bba88c35b 100755 --- a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lowlevel_init.c +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lowlevel_init.c @@ -40,7 +40,7 @@ #error "unknown internal storage type" #endif -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) typedef enum _CFE_TYPE { CFE_TYPE_WRITE = 0, diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c index 46cad292147b..cfbf7c16665f 100755 --- a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_u2.c @@ -53,7 +53,7 @@ static int m_uboot_status = -2; static int m_fdt_status = -1; static SCSIOP_FLASH_OP m_flash_op = {0}; -__attribute__((target("thumb2"))) static int u2_check_firmware(unsigned int addr) +__attribute__((target("thumb"))) static int u2_check_firmware(unsigned int addr) { NVTPACK_FW_HDR2 *p_hdr = (NVTPACK_FW_HDR2 *)addr; unsigned int size = p_hdr->TotalSize; @@ -92,7 +92,7 @@ __attribute__((target("thumb2"))) static int u2_check_firmware(unsigned int addr return -1; } -__attribute__((target("thumb2"))) static int u2_boot_uboot(unsigned int addr, unsigned int size, U2_FW_TYPE fw_type) +__attribute__((target("thumb"))) static int u2_boot_uboot(unsigned int addr, unsigned int size, U2_FW_TYPE fw_type) { if (fw_type == U2_FW_TYPE_NVTPACK) { UINT32 comp_addr = 0; @@ -151,7 +151,7 @@ __attribute__((target("thumb2"))) static int u2_boot_uboot(unsigned int addr, un return 0; } -__attribute__((target("thumb2"))) static int u2_on_verify(unsigned int p_cmd, unsigned int *p_data, unsigned int *in_size) +__attribute__((target("thumb"))) static int u2_on_verify(unsigned int p_cmd, unsigned int *p_data, unsigned int *in_size) { NVT_SCSI_CBW *p_cbw = (NVT_SCSI_CBW *)p_cmd; int cmd_id = p_cbw->CBWCB[1]; @@ -203,7 +203,7 @@ __attribute__((target("thumb2"))) static int u2_on_verify(unsigned int p_cmd, un return 0; } -__attribute__((target("thumb2"))) static int u2_flash_open(unsigned int flash_type) +__attribute__((target("thumb"))) static int u2_flash_open(unsigned int flash_type) { static int is_opened[4] = {0}; @@ -261,7 +261,7 @@ __attribute__((target("thumb2"))) static int u2_flash_open(unsigned int flash_ty #endif } -__attribute__((target("thumb2"))) static int u2_on_vendor(unsigned int p_cmd) +__attribute__((target("thumb"))) static int u2_on_vendor(unsigned int p_cmd) { int er; PSTORAGE_OBJ p_strg = NULL; @@ -371,7 +371,7 @@ __attribute__((target("thumb2"))) static int u2_on_vendor(unsigned int p_cmd) return 0; } -__attribute__((target("thumb2"))) int bl_usb(void) +__attribute__((target("thumb"))) int bl_usb(void) { typedef int (*MSDC_Verify_CB)(unsigned int pCmdBuf, unsigned int *pDataBuf, unsigned int *IN_size); @@ -386,7 +386,7 @@ __attribute__((target("thumb2"))) int bl_usb(void) return 0; } -__attribute__((target("thumb2"))) int bl_uart(void) +__attribute__((target("thumb"))) int bl_uart(void) { typedef int (*UART_Verify_CB)(unsigned int pCmdBuf, unsigned int *pDataBuf, unsigned int *IN_size); diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c index 975ba32e70dd..92e5b87214fe 100755 --- a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/main.c @@ -19,7 +19,7 @@ extern char _loader_exec_compress_load_cpu_addr[]; extern char _load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[]; extern char _load_BOOT_EXEC_start_base[]; extern char _loader_data_start_base[]; -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) //--------------------------------------------------------------------------- // Static function @@ -179,3 +179,13 @@ _THUMB2 UINT32 main(void) perf_mark("main-e"); return uiReturn; } + +/* + * OpenIPC: libgcc's division by zero handler calls raise() when the + * loader is built with a Linux toolchain + */ +int raise(int sig); +int raise(int sig) +{ + return 0; +} diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c index 7a1b7d597d9a..29b8224eced2 100755 --- a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/nand_ids.c @@ -11,7 +11,7 @@ #include "compiler.h" #include "fuart.h" -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) NAND_FLASH_DEV nvt_nand_ids[] = { diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c index c11a7ed354d9..257e1f850c81 100755 --- a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/spi_nor_ids.c @@ -11,7 +11,7 @@ #include "compiler.h" #include "fuart.h" -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) NOR_FLASH_DEV nvt_nor_ids[] = { diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/time_util.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/time_util.c index a07739b88a81..6dd3b82a03e5 100755 --- a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/time_util.c +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/time_util.c @@ -1,7 +1,7 @@ #include "time_util.h" #include "string.h" -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) #define IS_LEAP_YEAR(year) ((((year % 4) == 0) && (((year % 100) != 0) || ((year % 400) == 0)))) _THUMB2 static int calc_month_day(int year, int month) diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/compress/lz.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/compress/lz.c index 072c6a5497a7..67b099787e38 100755 --- a/board/novatek/ns02501/loader/LibExt/LIBExt_src/compress/lz.c +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/compress/lz.c @@ -120,7 +120,7 @@ * Constants used for LZ77 coding *************************************************************************/ #if (_GZIP_ENABLE_API_ == 1) -__attribute__((target("thumb2"))) unsigned int GZ_Uncompress(UINT8 *in, UINT8 *out, UINT32 insize) +__attribute__((target("thumb"))) unsigned int GZ_Uncompress(UINT8 *in, UINT8 *out, UINT32 insize) { UINT32 gz_size; // check BFC's footer @@ -285,7 +285,7 @@ static int _LZ_WriteVarSize( unsigned int x, unsigned char * buf ) * bytes depending on value. *************************************************************************/ -__attribute__((target("thumb2"))) static UINT32 _LZ_ReadVarSize(UINT32 * x, UINT8 * buf ) +__attribute__((target("thumb"))) static UINT32 _LZ_ReadVarSize(UINT32 * x, UINT8 * buf ) { UINT32 y, b, num_bytes; @@ -624,7 +624,7 @@ int LZ_CompressFast( unsigned char *in, unsigned char *out, @return void */ -__attribute__((target("thumb2"))) unsigned int LZ_Uncompress(UINT8 *in, UINT8 *out, +__attribute__((target("thumb"))) unsigned int LZ_Uncompress(UINT8 *in, UINT8 *out, UINT32 insize ) { UINT8 marker, symbol; diff --git a/board/novatek/ns02501/loader/MakeCommon/MakeCommon.txt b/board/novatek/ns02501/loader/MakeCommon/MakeCommon.txt index 7b2d22580cbe..8b3457f406d1 100755 --- a/board/novatek/ns02501/loader/MakeCommon/MakeCommon.txt +++ b/board/novatek/ns02501/loader/MakeCommon/MakeCommon.txt @@ -127,7 +127,7 @@ endif # -fno-optimize-sibling-calls : Don't optimize sibling and tail recursive calls # -fno-omit-frame-pointer : Keep the frame pointer in a register for functions that don't need one #---------------------------------------------------------------------- -PLATFORM_CFLAGS += -fno-builtin -ffreestanding -fno-common -fshort-wchar -fno-strict-aliasing -fno-optimize-sibling-calls -fno-omit-frame-pointer +PLATFORM_CFLAGS += -fno-builtin -ffreestanding -fno-common -fshort-enums -fshort-wchar -fno-strict-aliasing -fno-optimize-sibling-calls -fno-omit-frame-pointer # C Language Options for eCos system ifeq "$(USE_ECOS_KERNEL)" "ON" diff --git a/board/novatek/ns02501/loader/MakeCommon/OutputImg.txt b/board/novatek/ns02501/loader/MakeCommon/OutputImg.txt index 955c6bc01156..386c1bc1f458 100755 --- a/board/novatek/ns02501/loader/MakeCommon/OutputImg.txt +++ b/board/novatek/ns02501/loader/MakeCommon/OutputImg.txt @@ -355,7 +355,7 @@ $(LD_LIB_D): $(MODELEXT_D) $(IMAGE_D): $(SRC) $(ASM) $(CPP_SRC) $(ALL_OBJ_D) $(LIB_D) $(LD_LIB_D) $(MODELEXT_D) $(shell mv *.o $(IMG_BASE_DIR)/Debug/ObjectCode 2>>/dev/null) @echo '-o $@ $(ALL_OBJ_D)'> ld_d.tmp - @echo '--start-group $(LD_LIB_D) $(filter-out $(LD_LIB_BAN_D),$(LIB_D)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_D) -L "$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -L"$(libm_dir)" -lstdc++ -lgcc "$(libm_path)" $(LDMAP_D)' >> ld_d.tmp + @echo '--start-group $(LD_LIB_D) $(filter-out $(LD_LIB_BAN_D),$(LIB_D)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_D) -L "$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -L"$(libm_dir)" -lgcc $(LDMAP_D)' >> ld_d.tmp ifeq "$(SCATTER)" "EmuKit_cpu2.lds" @echo "Linking CA53_core2...$(LD_PATH_LDS_D)" \ && echo Creating image $@ ... \ @@ -464,7 +464,7 @@ $(LD_LIB_R): $(MODELEXT_R) $(IMAGE_R): $(SRC) $(ASM) $(CPP_SRC) $(ALL_OBJ_R) $(LIB_R) $(LD_LIB_R) $(MODELEXT_R) $(shell mv *.o $(IMG_BASE_DIR)/Release/ObjectCode 2>>/dev/null) @echo '-o $@ $(ALL_OBJ_R) '> ld_r.tmp - @echo '--start-group $(LD_LIB_R) $(filter-out $(LD_LIB_BAN_R),$(LIB_R)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_R) -L"$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -lstdc++ -lgcc "$(libm_path)" $(LDMAP_R)' >> ld_r.tmp + @echo '--start-group $(LD_LIB_R) $(filter-out $(LD_LIB_BAN_R),$(LIB_R)) --end-group -Bstatic -EL --no-wchar-size-warning --gc-sections -T $(LD_PATH_LDS_R) -L"$(libgcc_dir_el)" -L"$(libstdc_dir_el)" -lgcc $(LDMAP_R)' >> ld_r.tmp ifeq "$(SCATTER)" "EmuKit_cpu2.lds" @echo "Linking CA53_core2...$(LD_PATH_LDS_R)" \ diff --git a/board/novatek/ns02501/loader/Project/Model/MakeConfig.txt b/board/novatek/ns02501/loader/Project/Model/MakeConfig.txt index 660fb2073ee1..77a1e1f7d539 100755 --- a/board/novatek/ns02501/loader/Project/Model/MakeConfig.txt +++ b/board/novatek/ns02501/loader/Project/Model/MakeConfig.txt @@ -1055,7 +1055,7 @@ SECURE_DECRYPT_UBOOT_PARAM = \ #------------------------------------------------------------------------------- ifeq "$(SECUREBOOT_DECRYPT_OPTEE)" "Normal" OPTEE_DECRYPT_TYPE = _SECURE_DECRYPT_OPTEE_DISABLE_ -else ifeq "$(SECUREBOOT_DECRYPT_UBOOT)" "Secure" +else ifeq "$(SECUREBOOT_DECRYPT_OPTEE)" "Secure" OPTEE_DECRYPT_TYPE = _SECURE_DECRYPT_OPTEE_ENABLE_ else OPTEE_DECRYPT_TYPE = _SECURE_DECRYPT_OPTEE_DISABLE_ diff --git a/board/novatek/ns02501/loader/Project/Model/ModelConfig_EMU_EVB.txt b/board/novatek/ns02501/loader/Project/Model/ModelConfig_EMU_EVB.txt index 45f5b983e441..fc9754982789 100755 --- a/board/novatek/ns02501/loader/Project/Model/ModelConfig_EMU_EVB.txt +++ b/board/novatek/ns02501/loader/Project/Model/ModelConfig_EMU_EVB.txt @@ -30,7 +30,7 @@ BL_RUN_FWNAME = FW98$(CHIP_SHORT)T.BIN #533BC #533BD #533BE -CHIP = 533QC +CHIP = 533QD # [CHIP_VER] : chip version # A @@ -131,7 +131,7 @@ DRAM_ODT = Normal # SpiFlash >>>[Use SPI NOR flash] # EMMC # EMMC_NAND_COMBO >>>[eMMC & NandSpi 2 in 1 & STORAGEEXT must choose NONE]<<< -STORAGEINT = NandSpi +STORAGEINT = SpiFlash # [SPI_SETTING] : SPI pinmux setting (Valid when STORAGEINT is NandSpi or SpiFlash) # SPI_NORMAL diff --git a/board/novatek/ns02501/loader/Project/Model/Src/UART/uart_upgrade.c b/board/novatek/ns02501/loader/Project/Model/Src/UART/uart_upgrade.c index 5dd82bcdecea..2c1371014a46 100755 --- a/board/novatek/ns02501/loader/Project/Model/Src/UART/uart_upgrade.c +++ b/board/novatek/ns02501/loader/Project/Model/Src/UART/uart_upgrade.c @@ -7,7 +7,7 @@ #include "global.h" -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) UART_Verify_CB guiUARTCheck_cb; UART_Vendor_CB guiUARTVendor_cb; diff --git a/board/novatek/ns02501/loader/Project/Model/Src/USB/usb_update.c b/board/novatek/ns02501/loader/Project/Model/Src/USB/usb_update.c index 0e9ac0c85ea5..3f75984c656c 100755 --- a/board/novatek/ns02501/loader/Project/Model/Src/USB/usb_update.c +++ b/board/novatek/ns02501/loader/Project/Model/Src/USB/usb_update.c @@ -6,7 +6,7 @@ #include "timer.h" #define IOADDR_USB_REG_BASE (0xFF600000) -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) _THUMB2 void fLib_USB_Update_FW(void); diff --git a/board/novatek/ns02501/loader/Project/Model/Src/prj_main.c b/board/novatek/ns02501/loader/Project/Model/Src/prj_main.c index 5f8f876f6581..b1101e7d0d5e 100755 --- a/board/novatek/ns02501/loader/Project/Model/Src/prj_main.c +++ b/board/novatek/ns02501/loader/Project/Model/Src/prj_main.c @@ -19,7 +19,7 @@ #include "prj_main.h" #include "debug.h" -#define _THUMB2 __attribute__((target("thumb2"))) +#define _THUMB2 __attribute__((target("thumb"))) #if defined(_STORAGEINT_EMMC_NAND_COMBO_) #if (CHECK_CARD_EXIST == ENABLE) From de19e2d7f1a7fc4cadd35e3d9ec4de37423e43bb Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 22:59:37 +0000 Subject: [PATCH 29/38] novatek: the NS02501 loader unpacks an LZMA U-Boot and device tree U-Boot is ~240 KiB, ~97 KiB in an LZMA BCL1 container, for its 128 KiB slot. The NS02501 loader's LZMA branch is NA51089's call into the mask ROM (ROM_LZMA_POSITION 0xbfd0), but its make system builds it with ROM_PUBLIC_API OFF: as shipped it takes algorithm 11 to "Can not support LZMA" and starts nothing, and what the ROM has at 0xbfd0 is not documented anywhere in the SDK (qemu-hisilicon's model has no ROM calls for this die). So it carries its own decoder, as the NA51055 loader does (22afed1a72c): LzmaDec from U-Boot's lib/lzma and bl_lzma.c, copied from there, in the #else of that branch. The device tree too: the SDK's NS02501 trees are ~95 KiB, the clocks the vendor kernels' clock framework takes from them (nvt-clk) most of it, and the loader reads the tree plainly from flash block 1 for fdt_totalsize() bytes. Plain, it would leave U-Boot 64 KiB before the environment at 0x40000. bl_load_fdt_from_flash() now unpacks a tree in an LZMA BCL1 container (the U-Boot one's format) into its scratch buffer past the packed data, then goes on as for a plain one (the checks, the copy to /nvt_memory_cfg/fdt). openipc/nvt-image.py packs the tree with --fdt-lzma: ~8.5 KiB. The loader stays 45056 bytes (its deflated main part 36088 bytes with arm-none-eabi 13.2, 36124 with arm-linux-gnueabi 13.3, of the 44 KiB encrypt_boot_dump pads it to). Verified under qemu-hisilicon's nt98532 and nt98533 (OpenIPC/qemu-hisilicon#222), whose mask ROM model runs the image's loader: DDR trained, the tree and U-Boot unpacked ("lzma uboot_size 0x0003A818"), U-Boot started at 0x03900000 with the tree at 0x100000 and SHMINFO at 0xA00000. Loaders built with arm-none-eabi 13.2, arm-linux-gnueabi 13.3 (both Ubuntu 24.04, as CI) and the host's arm-linux-gnueabi 15 all boot so; unlike the NT98528 one, no toolchain needs refusing. --- .../LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.c | 1033 +++++++++++++++++ .../LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.h | 223 ++++ .../LibExt/LIBExt_src/Ctrl_Flow/LzmaTypes.h | 239 ++++ .../LibExt/LIBExt_src/Ctrl_Flow/Makefile | 2 + .../LibExt/LIBExt_src/Ctrl_Flow/bl_func.c | 42 +- .../LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.c | 52 + .../LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.h | 9 + openipc/nvt-image.py | 39 +- 8 files changed, 1625 insertions(+), 14 deletions(-) create mode 100644 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.c create mode 100644 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.h create mode 100644 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaTypes.h create mode 100644 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.c create mode 100644 board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.h diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.c new file mode 100644 index 000000000000..ac6812aac4d7 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.c @@ -0,0 +1,1033 @@ +/* LzmaDec.c -- LZMA Decoder +2009-09-20 : Igor Pavlov : Public domain */ + +/* + * OpenIPC: U-Boot's lib/lzma/LzmaDec.c for the loader, which has no + * libc: memcpy is the loader's, and there is no watchdog to feed. + */ +/* OpenIPC: small, in Thumb */ +#pragma GCC target("thumb") +#pragma GCC optimize("Os") + +#include "LzmaDec.h" +#include "string.h" + +#define memcpy utl_memcpy +#define WATCHDOG_RESET() do { } while (0) + +#define kNumTopBits 24 +#define kTopValue ((UInt32)1 << kNumTopBits) + +#define kNumBitModelTotalBits 11 +#define kBitModelTotal (1 << kNumBitModelTotalBits) +#define kNumMoveBits 5 + +#define RC_INIT_SIZE 5 + +#define NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | (*buf++); } + +#define IF_BIT_0(p) ttt = *(p); NORMALIZE; bound = (range >> kNumBitModelTotalBits) * ttt; if (code < bound) +#define UPDATE_0(p) range = bound; *(p) = (CLzmaProb)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits)); +#define UPDATE_1(p) range -= bound; code -= bound; *(p) = (CLzmaProb)(ttt - (ttt >> kNumMoveBits)); +#define GET_BIT2(p, i, A0, A1) IF_BIT_0(p) \ + { UPDATE_0(p); i = (i + i); A0; } else \ + { UPDATE_1(p); i = (i + i) + 1; A1; } +#define GET_BIT(p, i) GET_BIT2(p, i, ; , ;) + +#define TREE_GET_BIT(probs, i) { GET_BIT((probs + i), i); } +#define TREE_DECODE(probs, limit, i) \ + { i = 1; do { TREE_GET_BIT(probs, i); } while (i < limit); i -= limit; } + +/* OpenIPC: the loop form, smaller */ +#define _LZMA_SIZE_OPT + +#ifdef _LZMA_SIZE_OPT +#define TREE_6_DECODE(probs, i) TREE_DECODE(probs, (1 << 6), i) +#else +#define TREE_6_DECODE(probs, i) \ + { i = 1; \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + i -= 0x40; } +#endif + +#define NORMALIZE_CHECK if (range < kTopValue) { if (buf >= bufLimit) return DUMMY_ERROR; range <<= 8; code = (code << 8) | (*buf++); } + +#define IF_BIT_0_CHECK(p) ttt = *(p); NORMALIZE_CHECK; bound = (range >> kNumBitModelTotalBits) * ttt; if (code < bound) +#define UPDATE_0_CHECK range = bound; +#define UPDATE_1_CHECK range -= bound; code -= bound; +#define GET_BIT2_CHECK(p, i, A0, A1) IF_BIT_0_CHECK(p) \ + { UPDATE_0_CHECK; i = (i + i); A0; } else \ + { UPDATE_1_CHECK; i = (i + i) + 1; A1; } +#define GET_BIT_CHECK(p, i) GET_BIT2_CHECK(p, i, ; , ;) +#define TREE_DECODE_CHECK(probs, limit, i) \ + { i = 1; do { GET_BIT_CHECK(probs + i, i) } while (i < limit); i -= limit; } + + +#define kNumPosBitsMax 4 +#define kNumPosStatesMax (1 << kNumPosBitsMax) + +#define kLenNumLowBits 3 +#define kLenNumLowSymbols (1 << kLenNumLowBits) +#define kLenNumMidBits 3 +#define kLenNumMidSymbols (1 << kLenNumMidBits) +#define kLenNumHighBits 8 +#define kLenNumHighSymbols (1 << kLenNumHighBits) + +#define LenChoice 0 +#define LenChoice2 (LenChoice + 1) +#define LenLow (LenChoice2 + 1) +#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits)) +#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits)) +#define kNumLenProbs (LenHigh + kLenNumHighSymbols) + + +#define kNumStates 12 +#define kNumLitStates 7 + +#define kStartPosModelIndex 4 +#define kEndPosModelIndex 14 +#define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) + +#define kNumPosSlotBits 6 +#define kNumLenToPosStates 4 + +#define kNumAlignBits 4 +#define kAlignTableSize (1 << kNumAlignBits) + +#define kMatchMinLen 2 +#define kMatchSpecLenStart (kMatchMinLen + kLenNumLowSymbols + kLenNumMidSymbols + kLenNumHighSymbols) + +#define IsMatch 0 +#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax)) +#define IsRepG0 (IsRep + kNumStates) +#define IsRepG1 (IsRepG0 + kNumStates) +#define IsRepG2 (IsRepG1 + kNumStates) +#define IsRep0Long (IsRepG2 + kNumStates) +#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax)) +#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits)) +#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex) +#define LenCoder (Align + kAlignTableSize) +#define RepLenCoder (LenCoder + kNumLenProbs) +#define Literal (RepLenCoder + kNumLenProbs) + +#define LZMA_BASE_SIZE 1846 +#define LZMA_LIT_SIZE 768 + +#define LzmaProps_GetNumProbs(p) ((UInt32)LZMA_BASE_SIZE + (LZMA_LIT_SIZE << ((p)->lc + (p)->lp))) + +#if Literal != LZMA_BASE_SIZE +StopCompilingDueBUG +#endif + +#define LZMA_DIC_MIN (1 << 12) + +/* First LZMA-symbol is always decoded. +And it decodes new LZMA-symbols while (buf < bufLimit), but "buf" is without last normalization +Out: + Result: + SZ_OK - OK + SZ_ERROR_DATA - Error + p->remainLen: + < kMatchSpecLenStart : normal remain + = kMatchSpecLenStart : finished + = kMatchSpecLenStart + 1 : Flush marker + = kMatchSpecLenStart + 2 : State Init Marker +*/ + +static int MY_FAST_CALL LzmaDec_DecodeReal(CLzmaDec *p, SizeT limit, const Byte *bufLimit) +{ + CLzmaProb *probs = p->probs; + + unsigned state = p->state; + UInt32 rep0 = p->reps[0], rep1 = p->reps[1], rep2 = p->reps[2], rep3 = p->reps[3]; + unsigned pbMask = ((unsigned)1 << (p->prop.pb)) - 1; + unsigned lpMask = ((unsigned)1 << (p->prop.lp)) - 1; + unsigned lc = p->prop.lc; + + Byte *dic = p->dic; + SizeT dicBufSize = p->dicBufSize; + SizeT dicPos = p->dicPos; + + UInt32 processedPos = p->processedPos; + UInt32 checkDicSize = p->checkDicSize; + unsigned len = 0; + + const Byte *buf = p->buf; + UInt32 range = p->range; + UInt32 code = p->code; + + WATCHDOG_RESET(); + + do + { + CLzmaProb *prob; + UInt32 bound; + unsigned ttt; + unsigned posState = processedPos & pbMask; + + prob = probs + IsMatch + (state << kNumPosBitsMax) + posState; + IF_BIT_0(prob) + { + unsigned symbol; + UPDATE_0(prob); + prob = probs + Literal; + if (checkDicSize != 0 || processedPos != 0) + prob += (LZMA_LIT_SIZE * (((processedPos & lpMask) << lc) + + (dic[(dicPos == 0 ? dicBufSize : dicPos) - 1] >> (8 - lc)))); + + if (state < kNumLitStates) + { + state -= (state < 4) ? state : 3; + symbol = 1; + + WATCHDOG_RESET(); + + do { GET_BIT(prob + symbol, symbol) } while (symbol < 0x100); + } + else + { + unsigned matchByte = p->dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; + unsigned offs = 0x100; + state -= (state < 10) ? 3 : 6; + symbol = 1; + + WATCHDOG_RESET(); + + do + { + unsigned bit; + CLzmaProb *probLit; + matchByte <<= 1; + bit = (matchByte & offs); + probLit = prob + offs + bit + symbol; + GET_BIT2(probLit, symbol, offs &= ~bit, offs &= bit) + } + while (symbol < 0x100); + } + dic[dicPos++] = (Byte)symbol; + processedPos++; + continue; + } + else + { + UPDATE_1(prob); + prob = probs + IsRep + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + state += kNumStates; + prob = probs + LenCoder; + } + else + { + UPDATE_1(prob); + if (checkDicSize == 0 && processedPos == 0) + return SZ_ERROR_DATA; + prob = probs + IsRepG0 + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + prob = probs + IsRep0Long + (state << kNumPosBitsMax) + posState; + IF_BIT_0(prob) + { + UPDATE_0(prob); + dic[dicPos] = dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; + dicPos++; + processedPos++; + state = state < kNumLitStates ? 9 : 11; + continue; + } + UPDATE_1(prob); + } + else + { + UInt32 distance; + UPDATE_1(prob); + prob = probs + IsRepG1 + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + distance = rep1; + } + else + { + UPDATE_1(prob); + prob = probs + IsRepG2 + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + distance = rep2; + } + else + { + UPDATE_1(prob); + distance = rep3; + rep3 = rep2; + } + rep2 = rep1; + } + rep1 = rep0; + rep0 = distance; + } + state = state < kNumLitStates ? 8 : 11; + prob = probs + RepLenCoder; + } + { + unsigned limit, offset; + CLzmaProb *probLen = prob + LenChoice; + IF_BIT_0(probLen) + { + UPDATE_0(probLen); + probLen = prob + LenLow + (posState << kLenNumLowBits); + offset = 0; + limit = (1 << kLenNumLowBits); + } + else + { + UPDATE_1(probLen); + probLen = prob + LenChoice2; + IF_BIT_0(probLen) + { + UPDATE_0(probLen); + probLen = prob + LenMid + (posState << kLenNumMidBits); + offset = kLenNumLowSymbols; + limit = (1 << kLenNumMidBits); + } + else + { + UPDATE_1(probLen); + probLen = prob + LenHigh; + offset = kLenNumLowSymbols + kLenNumMidSymbols; + limit = (1 << kLenNumHighBits); + } + } + TREE_DECODE(probLen, limit, len); + len += offset; + } + + if (state >= kNumStates) + { + UInt32 distance; + prob = probs + PosSlot + + ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << kNumPosSlotBits); + TREE_6_DECODE(prob, distance); + if (distance >= kStartPosModelIndex) + { + unsigned posSlot = (unsigned)distance; + int numDirectBits = (int)(((distance >> 1) - 1)); + distance = (2 | (distance & 1)); + if (posSlot < kEndPosModelIndex) + { + distance <<= numDirectBits; + prob = probs + SpecPos + distance - posSlot - 1; + { + UInt32 mask = 1; + unsigned i = 1; + + WATCHDOG_RESET(); + + do + { + GET_BIT2(prob + i, i, ; , distance |= mask); + mask <<= 1; + } + while (--numDirectBits != 0); + } + } + else + { + numDirectBits -= kNumAlignBits; + + WATCHDOG_RESET(); + + do + { + NORMALIZE + range >>= 1; + + { + UInt32 t; + code -= range; + t = (0 - ((UInt32)code >> 31)); /* (UInt32)((Int32)code >> 31) */ + distance = (distance << 1) + (t + 1); + code += range & t; + } + /* + distance <<= 1; + if (code >= range) + { + code -= range; + distance |= 1; + } + */ + } + while (--numDirectBits != 0); + prob = probs + Align; + distance <<= kNumAlignBits; + { + unsigned i = 1; + GET_BIT2(prob + i, i, ; , distance |= 1); + GET_BIT2(prob + i, i, ; , distance |= 2); + GET_BIT2(prob + i, i, ; , distance |= 4); + GET_BIT2(prob + i, i, ; , distance |= 8); + } + if (distance == (UInt32)0xFFFFFFFF) + { + len += kMatchSpecLenStart; + state -= kNumStates; + break; + } + } + } + rep3 = rep2; + rep2 = rep1; + rep1 = rep0; + rep0 = distance + 1; + if (checkDicSize == 0) + { + if (distance >= processedPos) + return SZ_ERROR_DATA; + } + else if (distance >= checkDicSize) + return SZ_ERROR_DATA; + state = (state < kNumStates + kNumLitStates) ? kNumLitStates : kNumLitStates + 3; + } + + len += kMatchMinLen; + + if (limit == dicPos) + return SZ_ERROR_DATA; + { + SizeT rem = limit - dicPos; + unsigned curLen = ((rem < len) ? (unsigned)rem : len); + SizeT pos = (dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0); + + processedPos += curLen; + + len -= curLen; + if (pos + curLen <= dicBufSize) + { + Byte *dest = dic + dicPos; + ptrdiff_t src = (ptrdiff_t)pos - (ptrdiff_t)dicPos; + const Byte *lim = dest + curLen; + dicPos += curLen; + + WATCHDOG_RESET(); + + do + *(dest) = (Byte)*(dest + src); + while (++dest != lim); + } + else + { + + WATCHDOG_RESET(); + + do + { + dic[dicPos++] = dic[pos]; + if (++pos == dicBufSize) + pos = 0; + } + while (--curLen != 0); + } + } + } + } + while (dicPos < limit && buf < bufLimit); + + WATCHDOG_RESET(); + + NORMALIZE; + p->buf = buf; + p->range = range; + p->code = code; + p->remainLen = len; + p->dicPos = dicPos; + p->processedPos = processedPos; + p->reps[0] = rep0; + p->reps[1] = rep1; + p->reps[2] = rep2; + p->reps[3] = rep3; + p->state = state; + + return SZ_OK; +} + +static void MY_FAST_CALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit) +{ + if (p->remainLen != 0 && p->remainLen < kMatchSpecLenStart) + { + Byte *dic = p->dic; + SizeT dicPos = p->dicPos; + SizeT dicBufSize = p->dicBufSize; + unsigned len = p->remainLen; + UInt32 rep0 = p->reps[0]; + if (limit - dicPos < len) + len = (unsigned)(limit - dicPos); + + if (p->checkDicSize == 0 && p->prop.dicSize - p->processedPos <= len) + p->checkDicSize = p->prop.dicSize; + + p->processedPos += len; + p->remainLen -= len; + while (len-- != 0) + { + dic[dicPos] = dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; + dicPos++; + } + p->dicPos = dicPos; + } +} + +static int MY_FAST_CALL LzmaDec_DecodeReal2(CLzmaDec *p, SizeT limit, const Byte *bufLimit) +{ + do + { + SizeT limit2 = limit; + if (p->checkDicSize == 0) + { + UInt32 rem = p->prop.dicSize - p->processedPos; + if (limit - p->dicPos > rem) + limit2 = p->dicPos + rem; + } + RINOK(LzmaDec_DecodeReal(p, limit2, bufLimit)); + if (p->processedPos >= p->prop.dicSize) + p->checkDicSize = p->prop.dicSize; + LzmaDec_WriteRem(p, limit); + } + while (p->dicPos < limit && p->buf < bufLimit && p->remainLen < kMatchSpecLenStart); + + if (p->remainLen > kMatchSpecLenStart) + { + p->remainLen = kMatchSpecLenStart; + } + return 0; +} + +typedef enum +{ + DUMMY_ERROR, /* unexpected end of input stream */ + DUMMY_LIT, + DUMMY_MATCH, + DUMMY_REP +} ELzmaDummy; + +static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, SizeT inSize) +{ + UInt32 range = p->range; + UInt32 code = p->code; + const Byte *bufLimit = buf + inSize; + CLzmaProb *probs = p->probs; + unsigned state = p->state; + ELzmaDummy res; + + { + CLzmaProb *prob; + UInt32 bound; + unsigned ttt; + unsigned posState = (p->processedPos) & ((1 << p->prop.pb) - 1); + + prob = probs + IsMatch + (state << kNumPosBitsMax) + posState; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK + + /* if (bufLimit - buf >= 7) return DUMMY_LIT; */ + + prob = probs + Literal; + if (p->checkDicSize != 0 || p->processedPos != 0) + prob += (LZMA_LIT_SIZE * + ((((p->processedPos) & ((1 << (p->prop.lp)) - 1)) << p->prop.lc) + + (p->dic[(p->dicPos == 0 ? p->dicBufSize : p->dicPos) - 1] >> (8 - p->prop.lc)))); + + if (state < kNumLitStates) + { + unsigned symbol = 1; + do { GET_BIT_CHECK(prob + symbol, symbol) } while (symbol < 0x100); + } + else + { + unsigned matchByte = p->dic[p->dicPos - p->reps[0] + + ((p->dicPos < p->reps[0]) ? p->dicBufSize : 0)]; + unsigned offs = 0x100; + unsigned symbol = 1; + do + { + unsigned bit; + CLzmaProb *probLit; + matchByte <<= 1; + bit = (matchByte & offs); + probLit = prob + offs + bit + symbol; + GET_BIT2_CHECK(probLit, symbol, offs &= ~bit, offs &= bit) + } + while (symbol < 0x100); + } + res = DUMMY_LIT; + } + else + { + unsigned len; + UPDATE_1_CHECK; + + prob = probs + IsRep + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + state = 0; + prob = probs + LenCoder; + res = DUMMY_MATCH; + } + else + { + UPDATE_1_CHECK; + res = DUMMY_REP; + prob = probs + IsRepG0 + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + prob = probs + IsRep0Long + (state << kNumPosBitsMax) + posState; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + NORMALIZE_CHECK; + return DUMMY_REP; + } + else + { + UPDATE_1_CHECK; + } + } + else + { + UPDATE_1_CHECK; + prob = probs + IsRepG1 + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + } + else + { + UPDATE_1_CHECK; + prob = probs + IsRepG2 + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + } + else + { + UPDATE_1_CHECK; + } + } + } + state = kNumStates; + prob = probs + RepLenCoder; + } + { + unsigned limit, offset; + CLzmaProb *probLen = prob + LenChoice; + IF_BIT_0_CHECK(probLen) + { + UPDATE_0_CHECK; + probLen = prob + LenLow + (posState << kLenNumLowBits); + offset = 0; + limit = 1 << kLenNumLowBits; + } + else + { + UPDATE_1_CHECK; + probLen = prob + LenChoice2; + IF_BIT_0_CHECK(probLen) + { + UPDATE_0_CHECK; + probLen = prob + LenMid + (posState << kLenNumMidBits); + offset = kLenNumLowSymbols; + limit = 1 << kLenNumMidBits; + } + else + { + UPDATE_1_CHECK; + probLen = prob + LenHigh; + offset = kLenNumLowSymbols + kLenNumMidSymbols; + limit = 1 << kLenNumHighBits; + } + } + TREE_DECODE_CHECK(probLen, limit, len); + len += offset; + } + + if (state < 4) + { + unsigned posSlot; + prob = probs + PosSlot + + ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << + kNumPosSlotBits); + TREE_DECODE_CHECK(prob, 1 << kNumPosSlotBits, posSlot); + if (posSlot >= kStartPosModelIndex) + { + int numDirectBits = ((posSlot >> 1) - 1); + + /* if (bufLimit - buf >= 8) return DUMMY_MATCH; */ + + if (posSlot < kEndPosModelIndex) + { + prob = probs + SpecPos + ((2 | (posSlot & 1)) << numDirectBits) - posSlot - 1; + } + else + { + numDirectBits -= kNumAlignBits; + do + { + NORMALIZE_CHECK + range >>= 1; + code -= range & (((code - range) >> 31) - 1); + /* if (code >= range) code -= range; */ + } + while (--numDirectBits != 0); + prob = probs + Align; + numDirectBits = kNumAlignBits; + } + { + unsigned i = 1; + do + { + GET_BIT_CHECK(prob + i, i); + } + while (--numDirectBits != 0); + } + } + } + } + } + NORMALIZE_CHECK; + return res; +} + + +static void LzmaDec_InitRc(CLzmaDec *p, const Byte *data) +{ + p->code = ((UInt32)data[1] << 24) | ((UInt32)data[2] << 16) | ((UInt32)data[3] << 8) | ((UInt32)data[4]); + p->range = 0xFFFFFFFF; + p->needFlush = 0; +} + +static void LzmaDec_InitDicAndState(CLzmaDec *p, Bool initDic, Bool initState) +{ + p->needFlush = 1; + p->remainLen = 0; + p->tempBufSize = 0; + + if (initDic) + { + p->processedPos = 0; + p->checkDicSize = 0; + p->needInitState = 1; + } + if (initState) + p->needInitState = 1; +} + +void LzmaDec_Init(CLzmaDec *p) +{ + p->dicPos = 0; + LzmaDec_InitDicAndState(p, True, True); +} + +static void LzmaDec_InitStateReal(CLzmaDec *p) +{ + UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (p->prop.lc + p->prop.lp)); + UInt32 i; + CLzmaProb *probs = p->probs; + for (i = 0; i < numProbs; i++) + probs[i] = kBitModelTotal >> 1; + p->reps[0] = p->reps[1] = p->reps[2] = p->reps[3] = 1; + p->state = 0; + p->needInitState = 0; +} + +SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *srcLen, + ELzmaFinishMode finishMode, ELzmaStatus *status) +{ + SizeT inSize = *srcLen; + (*srcLen) = 0; + LzmaDec_WriteRem(p, dicLimit); + + *status = LZMA_STATUS_NOT_SPECIFIED; + + while (p->remainLen != kMatchSpecLenStart) + { + int checkEndMarkNow; + + if (p->needFlush != 0) + { + for (; inSize > 0 && p->tempBufSize < RC_INIT_SIZE; (*srcLen)++, inSize--) + p->tempBuf[p->tempBufSize++] = *src++; + if (p->tempBufSize < RC_INIT_SIZE) + { + *status = LZMA_STATUS_NEEDS_MORE_INPUT; + return SZ_OK; + } + if (p->tempBuf[0] != 0) + return SZ_ERROR_DATA; + + LzmaDec_InitRc(p, p->tempBuf); + p->tempBufSize = 0; + } + + checkEndMarkNow = 0; + if (p->dicPos >= dicLimit) + { + if (p->remainLen == 0 && p->code == 0) + { + *status = LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK; + return SZ_OK; + } + if (finishMode == LZMA_FINISH_ANY) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_OK; + } + if (p->remainLen != 0) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_ERROR_DATA; + } + checkEndMarkNow = 1; + } + + if (p->needInitState) + LzmaDec_InitStateReal(p); + + if (p->tempBufSize == 0) + { + SizeT processed; + const Byte *bufLimit; + if (inSize < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) + { + int dummyRes = LzmaDec_TryDummy(p, src, inSize); + if (dummyRes == DUMMY_ERROR) + { + memcpy(p->tempBuf, src, inSize); + p->tempBufSize = (unsigned)inSize; + (*srcLen) += inSize; + *status = LZMA_STATUS_NEEDS_MORE_INPUT; + return SZ_OK; + } + if (checkEndMarkNow && dummyRes != DUMMY_MATCH) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_ERROR_DATA; + } + bufLimit = src; + } + else + bufLimit = src + inSize - LZMA_REQUIRED_INPUT_MAX; + p->buf = src; + if (LzmaDec_DecodeReal2(p, dicLimit, bufLimit) != 0) + return SZ_ERROR_DATA; + processed = (SizeT)(p->buf - src); + (*srcLen) += processed; + src += processed; + inSize -= processed; + } + else + { + unsigned rem = p->tempBufSize, lookAhead = 0; + while (rem < LZMA_REQUIRED_INPUT_MAX && lookAhead < inSize) + p->tempBuf[rem++] = src[lookAhead++]; + p->tempBufSize = rem; + if (rem < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) + { + int dummyRes = LzmaDec_TryDummy(p, p->tempBuf, rem); + if (dummyRes == DUMMY_ERROR) + { + (*srcLen) += lookAhead; + *status = LZMA_STATUS_NEEDS_MORE_INPUT; + return SZ_OK; + } + if (checkEndMarkNow && dummyRes != DUMMY_MATCH) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_ERROR_DATA; + } + } + p->buf = p->tempBuf; + if (LzmaDec_DecodeReal2(p, dicLimit, p->buf) != 0) + return SZ_ERROR_DATA; + lookAhead -= (rem - (unsigned)(p->buf - p->tempBuf)); + (*srcLen) += lookAhead; + src += lookAhead; + inSize -= lookAhead; + p->tempBufSize = 0; + } + } + if (p->code == 0) + *status = LZMA_STATUS_FINISHED_WITH_MARK; + return (p->code == 0) ? SZ_OK : SZ_ERROR_DATA; +} + +SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status) +{ + SizeT outSize = *destLen; + SizeT inSize = *srcLen; + *srcLen = *destLen = 0; + for (;;) + { + SizeT inSizeCur = inSize, outSizeCur, dicPos; + ELzmaFinishMode curFinishMode; + SRes res; + if (p->dicPos == p->dicBufSize) + p->dicPos = 0; + dicPos = p->dicPos; + if (outSize > p->dicBufSize - dicPos) + { + outSizeCur = p->dicBufSize; + curFinishMode = LZMA_FINISH_ANY; + } + else + { + outSizeCur = dicPos + outSize; + curFinishMode = finishMode; + } + + res = LzmaDec_DecodeToDic(p, outSizeCur, src, &inSizeCur, curFinishMode, status); + src += inSizeCur; + inSize -= inSizeCur; + *srcLen += inSizeCur; + outSizeCur = p->dicPos - dicPos; + memcpy(dest, p->dic + dicPos, outSizeCur); + dest += outSizeCur; + outSize -= outSizeCur; + *destLen += outSizeCur; + if (res != 0) + return res; + if (outSizeCur == 0 || outSize == 0) + return SZ_OK; + } +} + +void LzmaDec_FreeProbs(CLzmaDec *p, ISzAlloc *alloc) +{ + alloc->Free(alloc, p->probs); + p->probs = 0; +} + +static void LzmaDec_FreeDict(CLzmaDec *p, ISzAlloc *alloc) +{ + alloc->Free(alloc, p->dic); + p->dic = 0; +} + +void LzmaDec_Free(CLzmaDec *p, ISzAlloc *alloc) +{ + LzmaDec_FreeProbs(p, alloc); + LzmaDec_FreeDict(p, alloc); +} + +SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size) +{ + UInt32 dicSize; + Byte d; + + if (size < LZMA_PROPS_SIZE) + return SZ_ERROR_UNSUPPORTED; + else + dicSize = data[1] | ((UInt32)data[2] << 8) | ((UInt32)data[3] << 16) | ((UInt32)data[4] << 24); + + if (dicSize < LZMA_DIC_MIN) + dicSize = LZMA_DIC_MIN; + p->dicSize = dicSize; + + d = data[0]; + if (d >= (9 * 5 * 5)) + return SZ_ERROR_UNSUPPORTED; + + p->lc = d % 9; + d /= 9; + p->pb = d / 5; + p->lp = d % 5; + + return SZ_OK; +} + +static SRes LzmaDec_AllocateProbs2(CLzmaDec *p, const CLzmaProps *propNew, ISzAlloc *alloc) +{ + UInt32 numProbs = LzmaProps_GetNumProbs(propNew); + if (p->probs == 0 || numProbs != p->numProbs) + { + LzmaDec_FreeProbs(p, alloc); + p->probs = (CLzmaProb *)alloc->Alloc(alloc, numProbs * sizeof(CLzmaProb)); + p->numProbs = numProbs; + if (p->probs == 0) + return SZ_ERROR_MEM; + } + return SZ_OK; +} + +SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc) +{ + CLzmaProps propNew; + RINOK(LzmaProps_Decode(&propNew, props, propsSize)); + RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); + p->prop = propNew; + return SZ_OK; +} + +SRes LzmaDec_Allocate(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc) +{ + CLzmaProps propNew; + SizeT dicBufSize; + RINOK(LzmaProps_Decode(&propNew, props, propsSize)); + RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); + dicBufSize = propNew.dicSize; + if (p->dic == 0 || dicBufSize != p->dicBufSize) + { + LzmaDec_FreeDict(p, alloc); + p->dic = (Byte *)alloc->Alloc(alloc, dicBufSize); + if (p->dic == 0) + { + LzmaDec_FreeProbs(p, alloc); + return SZ_ERROR_MEM; + } + } + p->dicBufSize = dicBufSize; + p->prop = propNew; + return SZ_OK; +} + +SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, + const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, + ELzmaStatus *status, ISzAlloc *alloc) +{ + CLzmaDec p; + SRes res; + SizeT inSize = *srcLen; + SizeT outSize = *destLen; + *srcLen = *destLen = 0; + if (inSize < RC_INIT_SIZE) + return SZ_ERROR_INPUT_EOF; + + LzmaDec_Construct(&p); + res = LzmaDec_AllocateProbs(&p, propData, propSize, alloc); + if (res != 0) + return res; + p.dic = dest; + p.dicBufSize = outSize; + + LzmaDec_Init(&p); + + *srcLen = inSize; + res = LzmaDec_DecodeToDic(&p, outSize, src, srcLen, finishMode, status); + + if (res == SZ_OK && *status == LZMA_STATUS_NEEDS_MORE_INPUT) + res = SZ_ERROR_INPUT_EOF; + + (*destLen) = p.dicPos; + LzmaDec_FreeProbs(&p, alloc); + return res; +} diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.h b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.h new file mode 100644 index 000000000000..8e9b4410a0b7 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaDec.h @@ -0,0 +1,223 @@ +/* LzmaDec.h -- LZMA Decoder +2009-02-07 : Igor Pavlov : Public domain */ + +#ifndef __LZMA_DEC_H +#define __LZMA_DEC_H + +#include "LzmaTypes.h" + +/* #define _LZMA_PROB32 */ +/* _LZMA_PROB32 can increase the speed on some CPUs, + but memory usage for CLzmaDec::probs will be doubled in that case */ + +#ifdef _LZMA_PROB32 +#define CLzmaProb UInt32 +#else +#define CLzmaProb UInt16 +#endif + + +/* ---------- LZMA Properties ---------- */ + +#define LZMA_PROPS_SIZE 5 + +typedef struct _CLzmaProps +{ + unsigned lc, lp, pb; + UInt32 dicSize; +} CLzmaProps; + +/* LzmaProps_Decode - decodes properties +Returns: + SZ_OK + SZ_ERROR_UNSUPPORTED - Unsupported properties +*/ + +SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size); + + +/* ---------- LZMA Decoder state ---------- */ + +/* LZMA_REQUIRED_INPUT_MAX = number of required input bytes for worst case. + Num bits = log2((2^11 / 31) ^ 22) + 26 < 134 + 26 = 160; */ + +#define LZMA_REQUIRED_INPUT_MAX 20 + +typedef struct +{ + CLzmaProps prop; + CLzmaProb *probs; + Byte *dic; + const Byte *buf; + UInt32 range, code; + SizeT dicPos; + SizeT dicBufSize; + UInt32 processedPos; + UInt32 checkDicSize; + unsigned state; + UInt32 reps[4]; + unsigned remainLen; + int needFlush; + int needInitState; + UInt32 numProbs; + unsigned tempBufSize; + Byte tempBuf[LZMA_REQUIRED_INPUT_MAX]; +} CLzmaDec; + +#define LzmaDec_Construct(p) { (p)->dic = 0; (p)->probs = 0; } + +void LzmaDec_Init(CLzmaDec *p); + +/* There are two types of LZMA streams: + 0) Stream with end mark. That end mark adds about 6 bytes to compressed size. + 1) Stream without end mark. You must know exact uncompressed size to decompress such stream. */ + +typedef enum +{ + LZMA_FINISH_ANY, /* finish at any point */ + LZMA_FINISH_END /* block must be finished at the end */ +} ELzmaFinishMode; + +/* ELzmaFinishMode has meaning only if the decoding reaches output limit !!! + + You must use LZMA_FINISH_END, when you know that current output buffer + covers last bytes of block. In other cases you must use LZMA_FINISH_ANY. + + If LZMA decoder sees end marker before reaching output limit, it returns SZ_OK, + and output value of destLen will be less than output buffer size limit. + You can check status result also. + + You can use multiple checks to test data integrity after full decompression: + 1) Check Result and "status" variable. + 2) Check that output(destLen) = uncompressedSize, if you know real uncompressedSize. + 3) Check that output(srcLen) = compressedSize, if you know real compressedSize. + You must use correct finish mode in that case. */ + +typedef enum +{ + LZMA_STATUS_NOT_SPECIFIED, /* use main error code instead */ + LZMA_STATUS_FINISHED_WITH_MARK, /* stream was finished with end mark. */ + LZMA_STATUS_NOT_FINISHED, /* stream was not finished */ + LZMA_STATUS_NEEDS_MORE_INPUT, /* you must provide more input bytes */ + LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK /* there is probability that stream was finished without end mark */ +} ELzmaStatus; + +/* ELzmaStatus is used only as output value for function call */ + + +/* ---------- Interfaces ---------- */ + +/* There are 3 levels of interfaces: + 1) Dictionary Interface + 2) Buffer Interface + 3) One Call Interface + You can select any of these interfaces, but don't mix functions from different + groups for same object. */ + + +/* There are two variants to allocate state for Dictionary Interface: + 1) LzmaDec_Allocate / LzmaDec_Free + 2) LzmaDec_AllocateProbs / LzmaDec_FreeProbs + You can use variant 2, if you set dictionary buffer manually. + For Buffer Interface you must always use variant 1. + +LzmaDec_Allocate* can return: + SZ_OK + SZ_ERROR_MEM - Memory allocation error + SZ_ERROR_UNSUPPORTED - Unsupported properties +*/ + +SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc); +void LzmaDec_FreeProbs(CLzmaDec *p, ISzAlloc *alloc); + +SRes LzmaDec_Allocate(CLzmaDec *state, const Byte *prop, unsigned propsSize, ISzAlloc *alloc); +void LzmaDec_Free(CLzmaDec *state, ISzAlloc *alloc); + +/* ---------- Dictionary Interface ---------- */ + +/* You can use it, if you want to eliminate the overhead for data copying from + dictionary to some other external buffer. + You must work with CLzmaDec variables directly in this interface. + + STEPS: + LzmaDec_Constr() + LzmaDec_Allocate() + for (each new stream) + { + LzmaDec_Init() + while (it needs more decompression) + { + LzmaDec_DecodeToDic() + use data from CLzmaDec::dic and update CLzmaDec::dicPos + } + } + LzmaDec_Free() +*/ + +/* LzmaDec_DecodeToDic + + The decoding to internal dictionary buffer (CLzmaDec::dic). + You must manually update CLzmaDec::dicPos, if it reaches CLzmaDec::dicBufSize !!! + +finishMode: + It has meaning only if the decoding reaches output limit (dicLimit). + LZMA_FINISH_ANY - Decode just dicLimit bytes. + LZMA_FINISH_END - Stream must be finished after dicLimit. + +Returns: + SZ_OK + status: + LZMA_STATUS_FINISHED_WITH_MARK + LZMA_STATUS_NOT_FINISHED + LZMA_STATUS_NEEDS_MORE_INPUT + LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK + SZ_ERROR_DATA - Data error +*/ + +SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, + const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); + + +/* ---------- Buffer Interface ---------- */ + +/* It's zlib-like interface. + See LzmaDec_DecodeToDic description for information about STEPS and return results, + but you must use LzmaDec_DecodeToBuf instead of LzmaDec_DecodeToDic and you don't need + to work with CLzmaDec variables manually. + +finishMode: + It has meaning only if the decoding reaches output limit (*destLen). + LZMA_FINISH_ANY - Decode just destLen bytes. + LZMA_FINISH_END - Stream must be finished after (*destLen). +*/ + +SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, + const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); + + +/* ---------- One Call Interface ---------- */ + +/* LzmaDecode + +finishMode: + It has meaning only if the decoding reaches output limit (*destLen). + LZMA_FINISH_ANY - Decode just destLen bytes. + LZMA_FINISH_END - Stream must be finished after (*destLen). + +Returns: + SZ_OK + status: + LZMA_STATUS_FINISHED_WITH_MARK + LZMA_STATUS_NOT_FINISHED + LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK + SZ_ERROR_DATA - Data error + SZ_ERROR_MEM - Memory allocation error + SZ_ERROR_UNSUPPORTED - Unsupported properties + SZ_ERROR_INPUT_EOF - It needs more bytes in input buffer (src). +*/ + +SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, + const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, + ELzmaStatus *status, ISzAlloc *alloc); + +#endif diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaTypes.h b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaTypes.h new file mode 100644 index 000000000000..da502ffc2279 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/LzmaTypes.h @@ -0,0 +1,239 @@ +/* Types.h -- Basic types +2010-10-09 : Igor Pavlov : Public domain */ + +#ifndef __7Z_TYPES_H +#define __7Z_TYPES_H + +/* OpenIPC: the loader has no libc headers; size_t is its string.h's */ +#include "string.h" +typedef int ptrdiff_t; +#ifndef NULL +#define NULL ((void *)0) +#endif + +#ifdef _WIN32 +#include <windows.h> +#endif + +#define SZ_OK 0 + +#define SZ_ERROR_DATA 1 +#define SZ_ERROR_MEM 2 +#define SZ_ERROR_CRC 3 +#define SZ_ERROR_UNSUPPORTED 4 +#define SZ_ERROR_PARAM 5 +#define SZ_ERROR_INPUT_EOF 6 +#define SZ_ERROR_OUTPUT_EOF 7 +#define SZ_ERROR_READ 8 +#define SZ_ERROR_WRITE 9 +#define SZ_ERROR_PROGRESS 10 +#define SZ_ERROR_FAIL 11 +#define SZ_ERROR_THREAD 12 + +#define SZ_ERROR_ARCHIVE 16 +#define SZ_ERROR_NO_ARCHIVE 17 + +typedef int SRes; + +#ifdef _WIN32 +typedef DWORD WRes; +#else +typedef int WRes; +#endif + +#ifndef RINOK +#define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; } +#endif + +typedef unsigned char Byte; +typedef short Int16; +typedef unsigned short UInt16; + +#ifdef _LZMA_UINT32_IS_ULONG +typedef long Int32; +typedef unsigned long UInt32; +#else +typedef int Int32; +typedef unsigned int UInt32; +#endif + +#ifdef _SZ_NO_INT_64 + +/* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers. + NOTES: Some code will work incorrectly in that case! */ + +typedef long Int64; +typedef unsigned long UInt64; + +#else + +#if defined(_MSC_VER) || defined(__BORLANDC__) +typedef __int64 Int64; +typedef unsigned __int64 UInt64; +#define UINT64_CONST(n) n +#else +typedef long long int Int64; +typedef unsigned long long int UInt64; +#define UINT64_CONST(n) n ## ULL +#endif + +#endif + +#ifdef _LZMA_NO_SYSTEM_SIZE_T +typedef UInt32 SizeT; +#else +typedef size_t SizeT; +#endif + +typedef int Bool; +#define True 1 +#define False 0 + + +#ifdef _MSC_VER + +#if _MSC_VER >= 1300 +#define MY_NO_INLINE __declspec(noinline) +#else +#define MY_NO_INLINE +#endif + +#define MY_CDECL __cdecl +#define MY_FAST_CALL __fastcall + +#else + +#define MY_CDECL +#define MY_FAST_CALL + +#endif + + +/* The following interfaces use first parameter as pointer to structure */ + +typedef struct +{ + Byte (*Read)(void *p); /* reads one byte, returns 0 in case of EOF or error */ +} IByteIn; + +typedef struct +{ + void (*Write)(void *p, Byte b); +} IByteOut; + +typedef struct +{ + SRes (*Read)(void *p, void *buf, size_t *size); + /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. + (output(*size) < input(*size)) is allowed */ +} ISeqInStream; + +/* it can return SZ_ERROR_INPUT_EOF */ +SRes SeqInStream_Read(ISeqInStream *stream, void *buf, size_t size); +SRes SeqInStream_Read2(ISeqInStream *stream, void *buf, size_t size, SRes errorType); +SRes SeqInStream_ReadByte(ISeqInStream *stream, Byte *buf); + +typedef struct +{ + size_t (*Write)(void *p, const void *buf, size_t size); + /* Returns: result - the number of actually written bytes. + (result < size) means error */ +} ISeqOutStream; + +typedef enum +{ + SZ_SEEK_SET = 0, + SZ_SEEK_CUR = 1, + SZ_SEEK_END = 2 +} ESzSeek; + +typedef struct +{ + SRes (*Read)(void *p, void *buf, size_t *size); /* same as ISeqInStream::Read */ + SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin); +} ISeekInStream; + +typedef struct +{ + SRes (*Look)(void *p, const void **buf, size_t *size); + /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. + (output(*size) > input(*size)) is not allowed + (output(*size) < input(*size)) is allowed */ + SRes (*Skip)(void *p, size_t offset); + /* offset must be <= output(*size) of Look */ + + SRes (*Read)(void *p, void *buf, size_t *size); + /* reads directly (without buffer). It's same as ISeqInStream::Read */ + SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin); +} ILookInStream; + +SRes LookInStream_LookRead(ILookInStream *stream, void *buf, size_t *size); +SRes LookInStream_SeekTo(ILookInStream *stream, UInt64 offset); + +/* reads via ILookInStream::Read */ +SRes LookInStream_Read2(ILookInStream *stream, void *buf, size_t size, SRes errorType); +SRes LookInStream_Read(ILookInStream *stream, void *buf, size_t size); + +#define LookToRead_BUF_SIZE (1 << 14) + +typedef struct +{ + ILookInStream s; + ISeekInStream *realStream; + size_t pos; + size_t size; + Byte buf[LookToRead_BUF_SIZE]; +} CLookToRead; + +void LookToRead_CreateVTable(CLookToRead *p, int lookahead); +void LookToRead_Init(CLookToRead *p); + +typedef struct +{ + ISeqInStream s; + ILookInStream *realStream; +} CSecToLook; + +void SecToLook_CreateVTable(CSecToLook *p); + +typedef struct +{ + ISeqInStream s; + ILookInStream *realStream; +} CSecToRead; + +void SecToRead_CreateVTable(CSecToRead *p); + +typedef struct +{ + SRes (*Progress)(void *p, UInt64 inSize, UInt64 outSize); + /* Returns: result. (result != SZ_OK) means break. + Value (UInt64)(Int64)-1 for size means unknown value. */ +} ICompressProgress; + +typedef struct +{ + void *(*Alloc)(void *p, size_t size); + void (*Free)(void *p, void *address); /* address can be 0 */ +} ISzAlloc; + +#define IAlloc_Alloc(p, size) (p)->Alloc((p), size) +#define IAlloc_Free(p, a) (p)->Free((p), a) + +#ifdef _WIN32 + +#define CHAR_PATH_SEPARATOR '\\' +#define WCHAR_PATH_SEPARATOR L'\\' +#define STRING_PATH_SEPARATOR "\\" +#define WSTRING_PATH_SEPARATOR L"\\" + +#else + +#define CHAR_PATH_SEPARATOR '/' +#define WCHAR_PATH_SEPARATOR u'/' +#define STRING_PATH_SEPARATOR "/" +#define WSTRING_PATH_SEPARATOR u"/" + +#endif + +#endif diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile index eaf37f12cdcd..7306f103647b 100755 --- a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/Makefile @@ -24,6 +24,8 @@ SRC = \ bl_func.c \ bl_linux.c \ arch_timer.c \ + bl_lzma.c \ + LzmaDec.c \ ASM = diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c index 362e75d48e93..49385215f648 100755 --- a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -35,6 +35,7 @@ #include "crypto.h" #include "nand.h" #include "nor.h" +#include "bl_lzma.h" #include "bl_lowlevel_init.h" #include "at80c51.h" #include "bl_linux.h" @@ -1410,6 +1411,38 @@ _THUMB2 static int bl_load_fdt_from_flash(unsigned char *p_tmp, unsigned int tmp if (IS_SECURE() == 0 || SECURE_DECRYPT_FDT == 0) { p_fdt_hdr = (unsigned char *)bl_lowlevel_get_fdt(); + /* + * OpenIPC: the tree in a BCL1 LZMA container (openipc/ + * nvt-image.py). This SDK's trees are ~95 KiB, its clocks + * described in them; plain, one would not leave U-Boot a + * 128 KiB slot before the environment at 0x40000. + */ + NVTPACK_BFC_HDR *p_bfc = (NVTPACK_BFC_HDR *)p_tmp; + if (p_fdt_hdr == NULL && + p_bfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1') && + (cpu_to_be32(p_bfc->uiAlgorithm) & 0xFF) == 11) { + UINT32 size_comp = invertEndian(p_bfc->uiSizeComp); + UINT32 size_uncomp = invertEndian(p_bfc->uiSizeUnComp); + int total_size = ALIGN_CEIL(size_comp + sizeof(NVTPACK_BFC_HDR), blk_size); + unsigned char *p_out = p_tmp + total_size; + + if (tmp_size < total_size + size_uncomp) { + debug_err_var("tmp_size too small, require:", total_size + size_uncomp); + return -1; + } + if (total_size > blk_size) { + er = int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW + 1, total_size - blk_size, p_tmp + blk_size, NAND_RW_FIRMWARE); + if (er < 0) { + debug_err("bl_load_fdt_from_flash\r\n"); + return -1; + } + } + if (bl_lzma_inflate(p_tmp + sizeof(NVTPACK_BFC_HDR), size_comp, p_out, size_uncomp) < 0) { + debug_err("fdt lzma\r\n"); + return -1; + } + p_fdt_hdr = p_out; + } if (p_fdt_hdr == NULL) { int fdt_size = fdt_totalsize(p_tmp); int total_size = ALIGN_CEIL(fdt_size, blk_size); @@ -2023,7 +2056,14 @@ _THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char rom_lzma_inflate(p_tmp + sizeof(NVTPACK_BFC_HDR), size_comp_le, (unsigned char *) p_dram_partition->uboot_addr, size_uncomp_le, (UINT8 *)lzma_temp_buffer, 65536); debug_msg("lzma "); #else - debug_msg("Can not support LZMA\r\n"); + /* OpenIPC: the loader's own decoder (bl_lzma.c) */ + if (bl_lzma_inflate(p_tmp + sizeof(NVTPACK_BFC_HDR), size_comp_le, + (unsigned char *)p_dram_partition->uboot_addr, + invertEndian(pBfc->uiSizeUnComp)) < 0) { + debug_err("lzma\r\n"); + return -1; + } + debug_msg("lzma "); #endif } else { LZ_Un_compress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->uboot_addr, size_comp_le); diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.c new file mode 100644 index 000000000000..b6f60081b993 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.c @@ -0,0 +1,52 @@ +/* + * OpenIPC: LZMA for U-Boot's BCL1 container (algorithm 11). NA51089's + * mask ROM has a decoder the loader calls; the NS02501 loader is built + * without its ROM calls (MakeOption.txt: ROM_PUBLIC_API OFF; its + * ROM_LZMA_POSITION branch is the NA51089 one's, never enabled), so it + * carries its own, Igor Pavlov's public domain LzmaDec as U-Boot has it + * (lib/lzma). The input is an .lzma stream: 5 bytes of properties, the + * unpacked size as a 64-bit word, then the data. + */ +/* OpenIPC: small, in Thumb */ +#pragma GCC target("thumb") +#pragma GCC optimize("Os") + +#include "LzmaDec.h" +#include "bl_lzma.h" + +/* lc + lp <= 4: at most 1846 + 768 << 4 probabilities of 16 bits */ +static unsigned char lzma_heap[0x8000] __attribute__((aligned(8))); + +static void *lzma_alloc(void *p, size_t size) +{ + (void)p; + return size <= sizeof(lzma_heap) ? lzma_heap : NULL; +} + +static void lzma_free(void *p, void *address) +{ + (void)p; + (void)address; +} + +int bl_lzma_inflate(unsigned char *in, unsigned int in_size, + unsigned char *out, unsigned int out_size) +{ + ISzAlloc alloc = { lzma_alloc, lzma_free }; + SizeT src_len, dst_len = out_size; + ELzmaStatus status; + unsigned int len; + + if (in_size < LZMA_PROPS_SIZE + 8) + return -1; + len = in[LZMA_PROPS_SIZE] | in[LZMA_PROPS_SIZE + 1] << 8 | + in[LZMA_PROPS_SIZE + 2] << 16 | + (unsigned int)in[LZMA_PROPS_SIZE + 3] << 24; + if (len < dst_len) + dst_len = len; + src_len = in_size - LZMA_PROPS_SIZE - 8; + if (LzmaDecode(out, &dst_len, in + LZMA_PROPS_SIZE + 8, &src_len, in, + LZMA_PROPS_SIZE, LZMA_FINISH_END, &status, &alloc) != SZ_OK) + return -1; + return (int)dst_len; +} diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.h b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.h new file mode 100644 index 000000000000..3ba773801442 --- /dev/null +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_lzma.h @@ -0,0 +1,9 @@ +/* OpenIPC: LZMA for U-Boot's BCL1 container (bl_lzma.c) */ +#ifndef _BL_LZMA_H +#define _BL_LZMA_H + +/* Returns the unpacked length, or -1 */ +int bl_lzma_inflate(unsigned char *in, unsigned int in_size, + unsigned char *out, unsigned int out_size); + +#endif diff --git a/openipc/nvt-image.py b/openipc/nvt-image.py index 5d42c043865e..f96ca384557f 100644 --- a/openipc/nvt-image.py +++ b/openipc/nvt-image.py @@ -9,10 +9,14 @@ # # up to the environment at 0x40000. The loader finds U-Boot through the # device tree's /nor/partition_uboot, unpacks it with the mask ROM's LZMA -# decoder to /nvt_memory_cfg/uboot and starts it at the HEADINFO's -# CodeEntry, once the checksum over the unpacked image adds up. +# decoder (or its own) to /nvt_memory_cfg/uboot and starts it at the +# HEADINFO's CodeEntry, once the checksum over the unpacked image adds up. # -# usage: nvt-image.py LOADER DTB U-BOOT.BIN TEXT_BASE OUTPUT +# With --fdt-lzma the device tree goes in an LZMA BCL1 container too: the +# NS02501 trees (~95 KiB) do not fit their 64 KiB plain, and that loader +# (board/novatek/ns02501/loader) unpacks one. +# +# usage: nvt-image.py [--fdt-lzma] LOADER DTB U-BOOT.BIN TEXT_BASE OUTPUT import lzma import struct @@ -78,13 +82,20 @@ def bcl1_lzma(data): def main(): - if len(sys.argv) != 6: - sys.exit(__doc__ or 'usage: nvt-image.py LOADER DTB U-BOOT.BIN ' - 'TEXT_BASE OUTPUT') - loader = open(sys.argv[1], 'rb').read() - dtb = open(sys.argv[2], 'rb').read() - uboot = open(sys.argv[3], 'rb').read() - text_base = int(sys.argv[4], 0) + args = sys.argv[1:] + fdt_lzma = args[:1] == ['--fdt-lzma'] + if fdt_lzma: + args = args[1:] + if len(args) != 5: + sys.exit(__doc__ or 'usage: nvt-image.py [--fdt-lzma] LOADER DTB ' + 'U-BOOT.BIN TEXT_BASE OUTPUT') + loader = open(args[0], 'rb').read() + dtb = open(args[1], 'rb').read() + uboot = open(args[2], 'rb').read() + text_base = int(args[3], 0) + dtb_len = len(dtb) + if fdt_lzma: + dtb = bcl1_lzma(dtb) bcl = bcl1_lzma(headinfo(uboot, text_base)) for name, blob, room in (('loader', loader, FDT_OFFSET), @@ -98,9 +109,11 @@ def main(): img[0:len(loader)] = loader img[FDT_OFFSET:FDT_OFFSET + len(dtb)] = dtb img[UBOOT_OFFSET:UBOOT_OFFSET + len(bcl)] = bcl - open(sys.argv[5], 'wb').write(img) - print('%s: loader %d, device tree %d, U-Boot %d packed (%d)' % - (sys.argv[5], len(loader), len(dtb), len(bcl), len(uboot))) + open(args[4], 'wb').write(img) + print('%s: loader %d, device tree %d%s, U-Boot %d packed (%d)' % + (args[4], len(loader), len(dtb), + ' packed (%d)' % dtb_len if fdt_lzma else '', len(bcl), + len(uboot))) if __name__ == '__main__': From 19c9642fb4871768816ec7d9e156cf3edc3853b8 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 23:12:06 +0000 Subject: [PATCH 30/38] novatek: the NS02501 die in the SoC, board and drivers NS02501 (chip ID 0x5521), the NT98532/NT98533 die: two Cortex-A32s run in AArch32, NA51089's blocks at NA51089's addresses. It gets its own targets (next commit), so what differs is compiled in under NVT_NS02501. From the NS02501 SDK's U-Boot 2021.10 (nvt_ns02501_a32, nvt-ns02501/ns02501_hw_init.c, eth_ns02501.c, nvt_ivot_mmc_a64.c with nvt_ivot_mmc_ns02501.h, nvt_flash_spi, include/configs/novatek/ ns02501_a32.h): - SHMINFO at 0xA00000, where the SDK's trees put /nvt_memory_cfg/shmem. - Console: UART0 at 48 MHz (the vendor's CONFIG_SYS_NS16550_CLK; its kernel says base_baud 3000000 from the tree), not NA51089's 24. - Reset: the watchdog's reset at CG+0x80 bit 8, its clock CG+0x74 bit 19, its data word cleared, CTRL 0x102 under the key. - HEADINFO: the vendor's tag, "ub02501 ". - board_init(): the eFuse controller's 120 MHz timing with its reset held, the AXI bridge timeouts. Not its otp_init()'s 800 ms power-down wait, nor a USB PHY set-up (compiled out there); the pad power set-up reads /top nodes the SDK trees do not have. The CPU clock stays as the loader set it (the vendor caps it at 800 MHz unless an eFuse code allows more; the trees ask for 800). - ft_board_setup(): /hdal-memory/media in its parent's cells; on NS02501 two address cells, [DDR id][address]. - Ethernet: its own pinmux bits (RMII_1 0x1, RMII_2 0x2, EXTPHYCLK 0x100; the SDK boards' 0 is the embedded PHY), node /eth0@f02b0000, RMII pads at level 1, no PHY PLL reset; the embedded PHY gets MDIO address 1 and the vendor's trims for a part without eFuse ones (its eFuse reader is closed; Linux's driver keeps what it finds); AALE in the MAC's DMA, as the NT9852x one. - SD: CGPIO13-18 off GPIO, clock source code 1 for 192 MHz (0 is 480 there), the pads' 4-bit drive fields from PAD+0x50 at the tree's 2, the host's AXI channel enabled; sampling as on NA51089. - Flash: TOP+0x04 [13:12] = 1 and 0x140F off GPIO, a 240 MHz source, the tree's clock (12 MHz) capped at 48, the vendor's fixed pad drive, TIME2 0x9F51, output delay 3 from 48 MHz; no SRAM shut-down bit and no auto-gating, which the vendor does not touch on this die. Verified under qemu-hisilicon's nt98532 and nt98533 (OpenIPC/ qemu-hisilicon#222) with the targets of the next commit, the image's own loader running: chip id 5521, 256 MiB; dhcp, ping, a 3 MB tftpboot with the host's crc32, an unaligned sf erase/write/read, mmc info, fatls and a 64 KiB mmc write/read compare; saveenv, and a second boot loads it; reset: the watchdog resets the machine (qemu with -no-reboot exits; without, the model does not run its loader again after any reset, its own system_reset included); SCTLR 0x00c5187a at the prompt (the loader enters with 0x00c5187d). The SDK's 5.10.168 kernel boots to its shell with /memory <0 0x2400000> and media <0 0x2400000 0xdc00000>. NT98525's kernel tree still gets <0x10000000 0x10000000 0x40000000 0x20000000>, and nt98562, nt98525 and nt98528 pass the same network, flash and SD checks. --- arch/arm/mach-novatek/include/mach/na51089.h | 26 ++- arch/arm/mach-novatek/soc.c | 29 +++- board/novatek/na51089/na51089.c | 169 +++++++++++++++++-- drivers/mmc/Kconfig | 8 +- drivers/mmc/nvt_mmc.c | 45 +++-- drivers/mtd/spi/Kconfig | 2 +- drivers/mtd/spi/nvt_sflash.c | 65 ++++++- drivers/net/Kconfig | 2 +- drivers/net/nvt_eqos.c | 13 +- include/configs/novatek.h | 7 +- 10 files changed, 309 insertions(+), 57 deletions(-) diff --git a/arch/arm/mach-novatek/include/mach/na51089.h b/arch/arm/mach-novatek/include/mach/na51089.h index 1060cf0241f8..d1c87b31ad88 100644 --- a/arch/arm/mach-novatek/include/mach/na51089.h +++ b/arch/arm/mach-novatek/include/mach/na51089.h @@ -1,9 +1,10 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /* * Novatek NA51089 (NT98560/561/562/566), and NA51055 / NA51084 - * (NT98520/522/523/525/528/529), which share its map: after the vendor - * U-Boot 2019.04 (arch-nvt-na51089_a32/IOAddress.h, - * arch-nvt-na51055_a32/IOAddress.h) and the SDKs' device trees. + * (NT98520/522/523/525/528/529) and NS02501 (NT98532/533), which share + * its map: after the vendor U-Boots 2019.04 and 2021.10 + * (arch-nvt-na51089_a32/IOAddress.h, arch-nvt-na51055_a32/IOAddress.h, + * arch-nvt-ns02501_a32/IOAddress.h) and the SDKs' device trees. */ #ifndef __NA51089_H @@ -35,6 +36,8 @@ #define NVT_CHIP_NA51089 0x7021 #define NVT_CHIP_NA51055 0x4821 #define NVT_CHIP_NA51084 0x5021 +/* NS02501, two Cortex-A32s (AArch32 only): its own targets (NVT_NS02501) */ +#define NVT_CHIP_NS02501 0x5521 #ifndef __ASSEMBLY__ static inline unsigned int nvt_chip_id(void) @@ -47,7 +50,14 @@ static inline unsigned int nvt_chip_id(void) #define NVT_CG_CLKEN0 (NVT_CG_BASE + 0x74) #define NVT_CG_RSTN0 (NVT_CG_BASE + 0x84) #define NVT_CG_FLASH BIT(0) +#ifdef CONFIG_NVT_NS02501 +/* NS02501: the watchdog's clock in CLKEN0, its reset in the word before */ +#define NVT_CG_WDT BIT(19) +#define NVT_CG_WDT_RSTN (NVT_CG_BASE + 0x80) +#define NVT_CG_WDT_RST BIT(8) +#else #define NVT_CG_WDT BIT(17) +#endif /* * Timer 0 of the twenty in the timer block: the loader leaves it running @@ -60,15 +70,21 @@ static inline unsigned int nvt_chip_id(void) /* Watchdog: every CTRL write carries the key in [31:16] */ #define NVT_WDT_CTRL (NVT_WDT_BASE + 0x00) #define NVT_WDT_MANUAL (NVT_WDT_BASE + 0x0C) +#define NVT_WDT_DATA (NVT_WDT_BASE + 0x84) #define NVT_WDT_KEY 0x5A960000 #define NVT_WDT_EN BIT(0) /* * What the loader leaves in DDR (the /nvt_memory_cfg node of its device - * tree): the device tree at 0x100000 and the SHMINFO block at 0x200000. - * U-Boot runs where /nvt_memory_cfg/uboot says. + * tree): the device tree at 0x100000 and the SHMINFO block at 0x200000 + * (0xA00000 in the NS02501 SDK's trees, which openipc/ns02501.dtsi + * keeps). U-Boot runs where /nvt_memory_cfg/uboot says. */ +#ifdef CONFIG_NVT_NS02501 +#define NVT_SHMINFO (NVT_DDR_BASE + 0x00A00000) +#else #define NVT_SHMINFO (NVT_DDR_BASE + 0x00200000) +#endif #define NVT_SHM_LD_NVT 0x00 /* "LD_NVT" */ #define NVT_SHM_FDT_ADDR 0x2C /* /nvt_memory_cfg/uboot: where U-Boot is loaded, and where it stays */ diff --git a/arch/arm/mach-novatek/soc.c b/arch/arm/mach-novatek/soc.c index 684ee839bfcc..d72fabba00c3 100644 --- a/arch/arm/mach-novatek/soc.c +++ b/arch/arm/mach-novatek/soc.c @@ -1,8 +1,8 @@ // SPDX-License-Identifier: GPL-2.0+ /* * Novatek: the loader's HEADINFO, reset and DRAM size. On NA51089, - * NA51055 and NA51084 the timer is timer 0 of the timer block, which the - * loader leaves running (CONFIG_SYS_TIMER_COUNTER in + * NA51055, NA51084 and NS02501 the timer is timer 0 of the timer block, + * which the loader leaves running (CONFIG_SYS_TIMER_COUNTER in * include/configs/novatek.h); on the AArch64 NVR dies (NA51103, NA51090) * it is the architected timer, and the MMU maps the DDR and the blocks * above 4 GiB. @@ -51,6 +51,8 @@ static const struct nvt_headinfo headinfo .chip_name = "ub51090 ", #elif defined(CONFIG_NVT_NA51055) .chip_name = "ub51055 ", +#elif defined(CONFIG_NVT_NS02501) + .chip_name = "ub02501 ", #else .chip_name = "ub51089 ", #endif @@ -75,19 +77,34 @@ const void *nvt_loader_fdt(void) return fdt_check_header(fdt) ? NULL : fdt; } -/* As the vendor U-Boot resets: the watchdog, then its manual trigger */ +/* + * As the vendor U-Boot resets: the watchdog, then its manual trigger. + * CTRL is written as each vendor U-Boot writes it: 0x112 under the key, + * 0x102 on NS02501 (ns02501_hw_init.c). + */ +#ifdef CONFIG_NVT_NS02501 +#define NVT_WDT_CFG 0x102 +#else +#define NVT_WDT_CFG 0x112 +#endif + void reset_cpu(void) { -#ifdef CONFIG_NVT_NA511XX +#if defined(CONFIG_NVT_NA511XX) setbits_le32(NVT_CG_WDT_RSTN, NVT_CG_WDT_RST); setbits_le32(NVT_CG_WDT_CLKEN, NVT_CG_WDT_EN); +#elif defined(CONFIG_NVT_NS02501) + /* ns02501_hw_init.c: its reset and clock bits, a zero count */ + setbits_le32(NVT_CG_WDT_RSTN, NVT_CG_WDT_RST); + setbits_le32(NVT_CG_CLKEN0, NVT_CG_WDT); + writel(0, NVT_WDT_DATA); #else setbits_le32(NVT_CG_CLKEN0, NVT_CG_WDT); setbits_le32(NVT_CG_RSTN0, NVT_CG_WDT); #endif - writel(NVT_WDT_KEY | 0x112, NVT_WDT_CTRL); + writel(NVT_WDT_KEY | NVT_WDT_CFG, NVT_WDT_CTRL); udelay(80); - writel(NVT_WDT_KEY | 0x112 | NVT_WDT_EN, NVT_WDT_CTRL); + writel(NVT_WDT_KEY | NVT_WDT_CFG | NVT_WDT_EN, NVT_WDT_CTRL); writel(1, NVT_WDT_MANUAL); while (1) ; diff --git a/board/novatek/na51089/na51089.c b/board/novatek/na51089/na51089.c index 8fde8df8da89..d38392c330d1 100644 --- a/board/novatek/na51089/na51089.c +++ b/board/novatek/na51089/na51089.c @@ -1,7 +1,8 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * Novatek NA51089, NA51055 and NA51084 camera boards: the device tree the - * loader hands over, and the memory split the vendor kernels expect in it. + * Novatek NA51089, NA51055, NA51084 and NS02501 camera boards: the device + * tree the loader hands over, and the memory split the vendor kernels + * expect in it. */ #include <common.h> @@ -39,6 +40,8 @@ DECLARE_GLOBAL_DATA_PTR; #define CG_CLK_SWITCH (NVT_CG_BASE + 0xA0) #define CG_CLKEN_70 (NVT_CG_BASE + 0x70) #define OTP_TIMING 0xF0660010 +#define OTP_TIMING_120 0xFF6050 /* at a 120 MHz APB */ +#define CG_OTP_RSTN BIT(28) /* NS02501, in RSTN0 */ /* * PLL8's ratio, three bytes in three words: only where they are differs @@ -186,8 +189,31 @@ static void nvt_set_clocks(void) nvt_set_apb_mhz(fdt32_to_cpu(*val) / 1000000); } +/* + * NS02501 (the NT98532/533 SDK's ns02501_hw_init.c, nvt-otp.c): the eFuse + * controller's 120 MHz timing and its reset held, the AXI bridge + * timeouts. Its otp_init() then waits 800 ms for a customer's eFuse + * power-down, not done; its USB PHY set-up is compiled out, and its pad + * power set-up reads /top nodes these trees do not have. The CPU clock + * stays as the loader set it: the vendor's nvt_cpu_freq caps it at + * 800 MHz unless an eFuse code allows more, and the trees ask for 800 + * (and for no APB clock). + */ +static void nvt_ns02501_init(void) +{ + writel(OTP_TIMING_120, OTP_TIMING); + clrbits_le32(NVT_CG_RSTN0, CG_OTP_RSTN); + writel(0x7c, 0xF0012018); + writel(0x7c, 0xF0013018); +} + int board_init(void) { + if (IS_ENABLED(CONFIG_NVT_NS02501)) { + nvt_ns02501_init(); + return 0; + } + /* nvt_ivot_hw_init_early() */ nvt_otp_timing(); clrbits_le32(CG_CLKEN_70, BIT(16)); @@ -309,14 +335,16 @@ void board_lmb_reserve(struct lmb *lmb) * As the vendor U-Boot's nvt_boot: Linux gets the first ${osmem} of the * DDR, and the media pool of the vendor modules (/hdal-memory/media) the * rest. A second DDR die the tree gives the pool (NA51055 / NA51084: - * <0x40000000 ...> after the first range) stays the pool's. + * <0x40000000 ...> after the first range) stays the pool's. The ranges + * are in /hdal-memory's cells: one each on NA51089 and NA51055; on + * NS02501 two address cells, [DDR id][address], so <0 address size>. */ int ft_board_setup(void *blob, struct bd_info *bd) { ulong osmem = nvt_osmem(); const fdt32_t *old; - fdt32_t media[8]; - int node, len, i, n = 2, ret; + fdt32_t media[16] = { 0 }; + int node, len, i, j, ac, sc, w, n, ret; ret = fdt_fixup_memory(blob, NVT_DDR_BASE, osmem); if (ret) @@ -325,14 +353,25 @@ int ft_board_setup(void *blob, struct bd_info *bd) node = fdt_path_offset(blob, "/hdal-memory/media"); if (node < 0) return 0; - media[0] = cpu_to_fdt32(NVT_DDR_BASE + osmem); - media[1] = cpu_to_fdt32(gd->ram_size - osmem); + ac = fdt_address_cells(blob, fdt_parent_offset(blob, node)); + sc = fdt_size_cells(blob, fdt_parent_offset(blob, node)); + w = ac + sc; + if (ac < 1 || sc < 1 || w > 4) + return -FDT_ERR_BADNCELLS; + media[ac - 1] = cpu_to_fdt32(NVT_DDR_BASE + osmem); + media[w - 1] = cpu_to_fdt32(gd->ram_size - osmem); + n = w; old = fdt_getprop(blob, node, "reg", &len); - for (i = 0; old && i + 2 <= len / 4 && n < ARRAY_SIZE(media); i += 2) { - if (fdt32_to_cpu(old[i]) < NVT_DDR_BASE + gd->ram_size) + for (i = 0; old && i + w <= len / 4 && n + w <= ARRAY_SIZE(media); + i += w) { + /* The first die's range: replaced by the one above */ + for (j = 0; j < ac - 1 && !old[i + j]; j++) + ; + if (j == ac - 1 && + fdt32_to_cpu(old[i + ac - 1]) < NVT_DDR_BASE + gd->ram_size) continue; - media[n++] = old[i]; - media[n++] = old[i + 1]; + memcpy(&media[n], &old[i], w * sizeof(media[0])); + n += w; } return fdt_setprop(blob, node, "reg", media, n * sizeof(media[0])); } @@ -341,11 +380,12 @@ int ft_board_setup(void *blob, struct bd_info *bd) /* * Ethernet: the pins, clocks and embedded PHY around the MAC * (drivers/net/nvt_eqos.c), set up as by the vendor U-Boots' - * eth_na51089.c and, on the NT9852x dies, eth_na51055.c. How the board is - * wired comes from the loader's device tree, which the vendor kernels - * read too: /top@f0010000/eth pinmux. Xiongmai NT98562 boards say 0x22, - * the embedded PHY with its LEDs on the second pads; the NT9852x SDK's - * boards 0x12, on the first. + * eth_na51089.c and, on the NT9852x dies, eth_na51055.c, on NS02501 + * eth_ns02501.c. How the board is wired comes from the loader's device + * tree, which the vendor kernels read too: /top@f0010000/eth pinmux. + * Xiongmai NT98562 boards say 0x22, the embedded PHY with its LEDs on the + * second pads; the NT9852x SDK's boards 0x12, on the first; the NS02501 + * SDK's boards 0, the embedded PHY. */ #define ETH_PIN_RMII BIT(0) /* an external PHY on the LCD pads */ #define ETH_PIN_INTERNAL BIT(1) /* the embedded PHY */ @@ -392,6 +432,10 @@ int ft_board_setup(void *blob, struct bd_info *bd) #define PHY_CTRL PHY(0x000) #define PHY_SW_RESET BIT(1) #define PHY_PLLREGWR BIT(3) +#define PHY_MDIO_ADDR PHY(0x01C) +#define PHY_TRIM_SEL PHY(0x368) /* [7:5] RX, [4:2] TX */ +#define PHY_TRIM_ROUT PHY(0x374) /* [5:3]; [2:0] T22 */ +#define PHY_TRIM_DAC PHY(0x378) /* [4:0] */ int nvt_eqos_initialize(phy_interface_t intf); @@ -468,6 +512,24 @@ static void nvt_eth_phy_on(u32 led) setbits_le32(PHY(0xDC), BIT(0)); clrbits_le32(PHY(0x9C), BIT(0)); + /* + * NS02501 (eth_ns02501.c extphy0_clk_en()): the PHY's MDIO + * address, 1, and its analog trims. The vendor takes the trims + * from the eFuse through its closed reader; these are its + * defaults for a part without them (TX ROUT 0, DAC 0, SEL RX and + * TX 3), and its "best setting" T22 of 5. Linux's driver keeps + * what it finds there. + */ + if (IS_ENABLED(CONFIG_NVT_NS02501)) { + setbits_le32(PHY_CTRL, PHY_SW_RESET); + setbits_le32(PHY_MDIO_ADDR, 1); + clrbits_le32(PHY_CTRL, PHY_SW_RESET); + clrbits_le32(PHY_TRIM_ROUT, 7 << 3); + clrbits_le32(PHY_TRIM_DAC, 0x1f); + clrsetbits_le32(PHY_TRIM_SEL, 0xfc, 3 << 5 | 3 << 2); + clrsetbits_le32(PHY_TRIM_ROUT, 7, 5); + } + setbits_le32(PHY_CTRL, PHY_SW_RESET); /* The break-link timer, and the LED mode, as the vendor */ writel(0x53, PHY(0x288)); @@ -574,6 +636,79 @@ static int nvt_eth_init_52x(const void *fdt, u32 pins) return nvt_eqos_initialize(intf); } +/* + * NS02501 (eth_ns02501.c: mac0_pinmux_en(), mac0_clk_en(), + * extphy0_clk_en()). Its pinmux bits are its own: RMII on the DSI pads + * (0x1) or the P pads (0x2), the PHY's 25 MHz from the SoC (0x100); + * anything else is the embedded PHY. The vendor muxes no LED pins and + * has no RGMII on this die. + */ +#define ETH02501_RMII_1 BIT(0) +#define ETH02501_RMII_2 BIT(1) +#define ETH02501_EXTPHYCLK BIT(8) +#define TOP_GPIO_DSI_02501 (NVT_TOP_BASE + 0xC8) +#define PAD_DRV_DSI_02501 (NVT_PAD_BASE + 0x44) +#define PAD_DRV_P_02501 (NVT_PAD_BASE + 0x30) +#define RMII_REF_PAD BIT(2) + +static int nvt_eth_init_ns02501(const void *fdt, u32 pins) +{ + int rmii = pins & ETH02501_RMII_1 ? 1 : pins & ETH02501_RMII_2 ? 2 : 0; + bool phy_clk = nvt_fdt_u32(fdt, "/eth0@f02b0000", "sp-clk", 0) || + (pins & ETH02501_EXTPHYCLK); + bool ref_out = nvt_fdt_u32(fdt, "/eth0@f02b0000", "ref-clk-out", 0); + + /* The RMII pins, their drive at level 1 */ + if (rmii == 1) { + /* PHYCLK, TXCTL, TXD0, TXD1, RXCLK */ + clrsetbits_le32(PAD_DRV_DSI_02501, 0x3fcc00, 0x154400); + clrsetbits_le32(TOP_PINMUX_ETH, 3 << 30, 1 << 30); + clrbits_le32(TOP_GPIO_DSI_02501, 0x3bf); + } else if (rmii == 2) { + clrsetbits_le32(PAD_DRV_P_02501, 0xc3003f, 0x410015); + clrsetbits_le32(TOP_PINMUX_ETH, 3 << 30, 2 << 30); + clrbits_le32(TOP_GPIO_P, 0x73f); + } + + setbits_le32(CG_PLL_EN, CG_PLL6); + udelay(10); + setbits_le32(NVT_CG_CLKEN0, CG_ETH); + udelay(10); + setbits_le32(NVT_CG_RSTN0, CG_ETH); + udelay(10); + + if (rmii) { + /* The reference clock from the pad, or out to the PHY */ + clrsetbits_le32(ETH_RMII_CLK, + RMII_REF_IN | RMII_REF_OUT | RMII_REF_PAD | + RMII_TXD_SRC, + RMII_REF_CLK_I | + (ref_out ? RMII_REF_OUT : RMII_REF_IN)); + setbits_le32(ETH_PHY_SEL, PHY_SEL_EXT); + } else { + clrbits_le32(ETH_PHY_SEL, PHY_SEL_EXT_52X); + nvt_eth_phy_on(0x312); + } + if (phy_clk) { + setbits_le32(CG_CLKEN2, CG_ETH_PHY_CLK); + if (rmii) { + setbits_le32(TOP_PINMUX_MISC, MISC_PHY_CLK); + setbits_le32(TOP_PINMUX_ETH, rmii << 2); + if (rmii == 1) + clrbits_le32(TOP_GPIO_DSI_02501, BIT(10)); + else + clrbits_le32(TOP_GPIO_P, BIT(11)); + } + } + /* + * The vendor resets an external PHY on DSI_GPIO 6 (RMII_1) or + * P_GPIO 7 (RMII_2) here, its EVB's wiring: not done + */ + + return nvt_eqos_initialize(rmii ? PHY_INTERFACE_MODE_RMII : + PHY_INTERFACE_MODE_MII); +} + int board_eth_init(struct bd_info *bis) { const void *fdt = (const void *)env_get_hex("fdtaddr", 0); @@ -581,6 +716,8 @@ int board_eth_init(struct bd_info *bis) ETH_PIN_INTERNAL); bool rmii = pins & (ETH_PIN_RMII | ETH_PIN_RMII_2); + if (IS_ENABLED(CONFIG_NVT_NS02501)) + return nvt_eth_init_ns02501(fdt, pins); if (nvt_chip_id() != NVT_CHIP_NA51089) return nvt_eth_init_52x(fdt, pins); u32 led = 0x312, pads = 3; /* both LEDs, blinking */ diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig index 3f6cf56bebee..b43bbbe4ecea 100644 --- a/drivers/mmc/Kconfig +++ b/drivers/mmc/Kconfig @@ -78,12 +78,12 @@ config MMC_SPI_CRC_ON If unsure, say N. config MMC_NVT - bool "Novatek NA51089 / NT9852x SD card (SDIO1)" - depends on (NVT_NA51089 || NVT_NA51055) && MMC && !DM_MMC + bool "Novatek NA51089 / NT9852x / NS02501 SD card (SDIO1)" + depends on (NVT_NA51089 || NVT_NA51055 || NVT_NS02501) && MMC && !DM_MMC help - SDIO1 of the Novatek NA51089 (NT98560/561/562/566) and of the + SDIO1 of the Novatek NA51089 (NT98560/561/562/566), of the NT9852x dies, NA51055 and NA51084 (NT98520/522/523/525/528/529), - 4-bit, PIO through its FIFO. + and of NS02501 (NT98532/533), 4-bit, PIO through its FIFO. config ARM_PL180_MMCI bool "ARM AMBA Multimedia Card Interface and compatible support" diff --git a/drivers/mmc/nvt_mmc.c b/drivers/mmc/nvt_mmc.c index 88686727401b..09c3291a4852 100644 --- a/drivers/mmc/nvt_mmc.c +++ b/drivers/mmc/nvt_mmc.c @@ -1,8 +1,10 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * SD card on SDIO1 of the Novatek NA51089, NA51055 and NA51084, non-DM. - * The three take the same set-up (the vendor driver's default branch), - * but for the sampling clock. + * SD card on SDIO1 of the Novatek NA51089, NA51055, NA51084 and NS02501, + * non-DM. The first three take the same set-up (the vendor driver's + * default branch), but for the sampling clock; NS02501 its own pins, + * clock source code and pad drive (the NS02501 SDK's U-Boot 2021.10, + * nvt_ivot_mmc_a64.c and nvt_ivot_mmc_ns02501.h). * * Software sets a data phase up first (block size, DATA_LENGTH, DATA_EN, * the FIFO's direction, then FIFO_EN), then writes the command with @@ -51,6 +53,8 @@ #define SDIO_FIFO_STS (NVT_SDIO1_BASE + 0x108) #define SDIO_FIFO_CTRL (NVT_SDIO1_BASE + 0x10C) #define SDIO_FIFO_SWITCH (NVT_SDIO1_BASE + 0x1B0) +#define SDIO_AXI0 (NVT_SDIO1_BASE + 0x160) /* NS02501 */ +#define AXI_CH_DIS BIT(16) /* CMD */ #define CMD_NEED_RSP BIT(6) @@ -100,14 +104,27 @@ #define TOP_PINMUX (NVT_TOP_BASE + 0x04) #define TOP_SDIO_EN BIT(14) #define TOP_PGPIO_C (NVT_TOP_BASE + 0xA0) -#define TOP_CGPIO11_16 (0x3f << 11) /* clock, command, data 0-3 */ +#ifdef CONFIG_NVT_NS02501 +#define TOP_SDIO1_PINS (0x3f << 13) /* CGPIO13-18 */ +#define SDIO_CLKSEL_192 (1 << 4) /* 0 is 480 MHz there */ +#else +#define TOP_SDIO1_PINS (0x3f << 11) /* clock, command, data 0-3 */ +#define SDIO_CLKSEL_192 0 +#endif #define CG_CLKSEL (NVT_CG_BASE + 0x20) -#define CG_SDIO_CLKSEL (3 << 4) /* 0: 192 MHz */ +#define CG_SDIO_CLKSEL (3 << 4) #define CG_SDIO_DIV (NVT_CG_BASE + 0x3C) #define CG_SDIO_DIV_MASK 0x7ff #define CG_SDIO1 BIT(2) /* in CLKEN0 and RSTN0 */ #define PAD_DS10 (NVT_PAD_BASE + 0x68) #define PAD_DS_SDIO1 0x222222 /* 15 mA, 3 bits per pin */ +/* + * NS02501: four bits per pin from PAD+0x50, CGPIO13-15 in [31:20] of + * +0x54 and 16-18 in [11:0] of +0x58; the SDK tree's default-speed + * driving, 2 on every pin + */ +#define PAD_DS_02501_C13 (NVT_PAD_BASE + 0x54) +#define PAD_DS_02501_C16 (NVT_PAD_BASE + 0x58) #define SDIO_SRC_CLK 192000000 #define SDIO_F_MIN 400000 @@ -174,22 +191,30 @@ static void nvt_mmc_set_clock(uint hz) static int nvt_mmc_init(struct mmc *mmc) { setbits_le32(TOP_PINMUX, TOP_SDIO_EN); - clrbits_le32(TOP_PGPIO_C, TOP_CGPIO11_16); + clrbits_le32(TOP_PGPIO_C, TOP_SDIO1_PINS); clrbits_le32(NVT_CG_RSTN0, CG_SDIO1); udelay(10); setbits_le32(NVT_CG_RSTN0, CG_SDIO1); - clrbits_le32(CG_CLKSEL, CG_SDIO_CLKSEL); + clrsetbits_le32(CG_CLKSEL, CG_SDIO_CLKSEL, SDIO_CLKSEL_192); clrsetbits_le32(CG_SDIO_DIV, CG_SDIO_DIV_MASK, DIV_ROUND_UP(SDIO_SRC_CLK, SDIO_F_MIN) - 1); setbits_le32(NVT_CG_CLKEN0, CG_SDIO1); - clrsetbits_le32(PAD_DS10, 0xffffff, PAD_DS_SDIO1); + if (IS_ENABLED(CONFIG_NVT_NS02501)) { + clrsetbits_le32(PAD_DS_02501_C13, 0xfff00000, 0x22200000); + clrsetbits_le32(PAD_DS_02501_C16, 0xfff, 0x222); + } else { + clrsetbits_le32(PAD_DS10, 0xffffff, PAD_DS_SDIO1); + } udelay(10); clrbits_le32(SDIO_CLK_CTRL, CLK_DIS); + /* NS02501's host has an AXI channel the vendor enables (for DMA) */ + if (IS_ENABLED(CONFIG_NVT_NS02501)) + clrbits_le32(SDIO_AXI0, AXI_CH_DIS); /* * Positive edge (neg-sample-edge = 0). The sampling clock: on - * NA51089 and NA51084 from the pad, before it; on NA51055 the - * internal one, after the pad (the vendor's setphysample()). + * NA51089, NA51084 and NS02501 from the pad, before it; on NA51055 + * the internal one, after the pad (the vendor's setphysample()). */ if (nvt_chip_id() == NVT_CHIP_NA51055) clrsetbits_le32(SDIO_DLY0, BIT(12) | DLY0_PAD_CLK_SEL, diff --git a/drivers/mtd/spi/Kconfig b/drivers/mtd/spi/Kconfig index 57fc98e9542f..37afde919f59 100644 --- a/drivers/mtd/spi/Kconfig +++ b/drivers/mtd/spi/Kconfig @@ -37,7 +37,7 @@ config SPI_FLASH If unsure, say N config NVT_SFLASH - bool "Novatek SPI NOR (NA51089, NT9852x, NA51103, NA51090)" + bool "Novatek SPI NOR (NA51089, NT9852x, NS02501, NA51103, NA51090)" depends on ARCH_NOVATEK && !SPI_FLASH && !DM_SPI_FLASH help The SPI NOR the Novatek camera dies and the NA51103 boot from, on diff --git a/drivers/mtd/spi/nvt_sflash.c b/drivers/mtd/spi/nvt_sflash.c index 301e61765914..b9490b040960 100644 --- a/drivers/mtd/spi/nvt_sflash.c +++ b/drivers/mtd/spi/nvt_sflash.c @@ -1,8 +1,9 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * SPI NOR behind the flash controller of the Novatek NA51089, NA51103 and - * NA51090 (the same controller; only its clock, reset, pins and PHY - * timing differ, and the NVR dies' FIFO is 128 bytes, not 64). + * SPI NOR behind the flash controller of the Novatek NA51089 (and the + * NT9852x dies), NS02501, NA51103 and NA51090 (the same controller; only + * its clock, reset, pins and PHY timing differ, and the NVR dies' FIFO is + * 128 bytes, not 64). * * The controller runs one operation at a time: software loads COMMAND, * ROWADDR (sent MSB first, as many bytes as MODULE0 says) and DATALEN, @@ -67,6 +68,8 @@ #define DLL1_SRC_CLK_SEL BIT(3) #define DLL1_PAD_CLK_SEL BIT(20) /* DLL2 */ +#define DLL2_OUTDLY(n) ((n) << 16) +#define DLL2_OUTDLY_MASK DLL2_OUTDLY(0x3f) #define DLL2_INDLY(n) ((n) << 24) #define DLL2_INDLY_MASK DLL2_INDLY(0x3f) /* SPI_CFG */ @@ -102,7 +105,12 @@ #define OP_WRITE_N 0x19 #define OP_AUTO_STATUS 0x1D +#ifdef CONFIG_NVT_NS02501 +/* 480 MHz / 2 (the NS02501 U-Boot's nvt_flash_spi_int.h) */ +#define NVT_FLASH_SRC_HZ 240000000 +#else #define NVT_FLASH_SRC_HZ 480000000 +#endif #define NVT_TOP_FLASH_EN (NVT_TOP_BASE + 0x04) #define NVT_TOP_GPIO_C (NVT_TOP_BASE + 0xA0) /* pads as GPIO */ #ifdef CONFIG_NVT_NA511XX @@ -116,13 +124,17 @@ /* The boards' trees ask for 12 MHz (/nor clock-frequency), as the vendor */ #define SF_HZ 12000000 #else +#ifdef CONFIG_NVT_NS02501 +#define NVT_PAD_FLASH_DRV (NVT_PAD_BASE + 0x50) /* 4 bits a pin */ +#else /* The clock gate that would stop the controller with the chip selected */ #define NVT_CG_AUTOGATE (NVT_CG_BASE + 0xB0) #define CG_AUTOGATE_FLASH BIT(19) -#define NVT_CG_FLASH_DIV (NVT_CG_BASE + 0x40) /* [17:12] */ -#define CG_FLASH_DIV_SHIFT 12 #define NVT_TOP_SRAM_SD (NVT_TOP_BASE + 0x1000) /* SRAM shut down */ #define NVT_PAD_FLASH_DRV (NVT_PAD_BASE + 0x40) +#endif +#define NVT_CG_FLASH_DIV (NVT_CG_BASE + 0x40) /* [17:12] */ +#define CG_FLASH_DIV_SHIFT 12 #define SF_HZ 48000000 #endif @@ -544,7 +556,7 @@ static int nvt_sf_erase(struct mtd_info *mtd, struct erase_info *instr) return 0; } -#ifdef CONFIG_NVT_NA511XX +#if defined(CONFIG_NVT_NA511XX) || defined(CONFIG_NVT_NS02501) /* A u32 property of the loader's device tree */ static u32 fl_fdt_u32(const char *path, const char *prop, u32 def) { @@ -559,7 +571,9 @@ static u32 fl_fdt_u32(const char *path, const char *prop, u32 def) } return val ? fdt32_to_cpu(*val) : def; } +#endif +#ifdef CONFIG_NVT_NA511XX /* * Clock, reset, pins, timing and PHY, as the vendor's nvt_spinor_reset() * and nand_phy_config() do on the NVR dies, at the clock the board's @@ -607,6 +621,45 @@ static void fl_hw_init(void) /* Chip select 0 (SPI_CFG bit 3 selects the second) */ clrsetbits_le32(FL_SPI_CFG, CFG_BUS_WIDTH_MASK | BIT(3), CFG_PULL_WPHLD); } +#elif defined(CONFIG_NVT_NS02501) +/* + * NS02501, as its vendor U-Boot's nvt_flash_spi.c (built without its + * pinctrl driver, as the SDK's NOR config is) and nand_phy_config(): the + * flash pins in TOP+0x04 [13:12] (1: SPI NOR) and off GPIO, the clock + * the tree asks for (the SDK's: 12 MHz) from 240 MHz, the pads' fixed + * drive (data level 3, clock 5, chip select 3), and from 48 MHz an + * output delay of 3. No SRAM shut-down bit, no clock auto-gating here. + */ +static void fl_hw_init(void) +{ + u32 hz = fl_fdt_u32("/nor", "clock-frequency", SF_HZ); + + if (hz < NVT_FLASH_SRC_HZ / 64) + hz = NVT_FLASH_SRC_HZ / 64; + if (hz > SF_HZ) + hz = SF_HZ; + setbits_le32(NVT_CG_CLKEN0, NVT_CG_FLASH); + setbits_le32(NVT_CG_RSTN0, NVT_CG_FLASH); + writel(0x06002222, FL_TIME0); + writel(0x7f0f, FL_TIME1); + clrsetbits_le32(NVT_TOP_FLASH_EN, 3 << 12, 1 << 12); + clrbits_le32(NVT_TOP_GPIO_C, 0x140f); + clrsetbits_le32(NVT_CG_FLASH_DIV, 0x3f << CG_FLASH_DIV_SHIFT, + (NVT_FLASH_SRC_HZ / hz - 1) << CG_FLASH_DIV_SHIFT); + writel(0x33333333, NVT_PAD_FLASH_DRV); + clrsetbits_le32(NVT_PAD_FLASH_DRV + 4, 0xf0f00, 0x30500); + setbits_le32(FL_MODULE0, MOD_NOR); + writel(0x9f51, FL_TIME2); + + clrsetbits_le32(FL_DLL1, DLL1_SRC_CLK_SEL, + DLL1_SAMPCLK_INV | DLL1_PAD_CLK_SEL); + clrsetbits_le32(FL_DLL2, DLL2_INDLY_MASK | DLL2_OUTDLY_MASK, + DLL2_OUTDLY(hz >= 48000000 ? 3 : 0)); + setbits_le32(FL_DLL1, DLL1_SW_RESET); + while (readl(FL_DLL1) & DLL1_SW_RESET) + ; + clrsetbits_le32(FL_SPI_CFG, CFG_BUS_WIDTH_MASK, CFG_PULL_WPHLD); +} #else /* Clock, reset, pins, timing and PHY, as the vendor's nvt_spinor_reset() */ static void fl_hw_init(void) diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 30b6ebdd318e..ec8d99a0e56e 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -226,7 +226,7 @@ config DWC_ETH_QOS_TEGRA186 configuration used in NVIDIA's Tegra186 chip. config NVT_EQOS - bool "Novatek Ethernet (NA51089, NT9852x, NA51103, NA51090)" + bool "Novatek Ethernet (NA51089, NT9852x, NS02501, NA51103, NA51090)" depends on ARCH_NOVATEK && !DM_ETH select PHYLIB help diff --git a/drivers/net/nvt_eqos.c b/drivers/net/nvt_eqos.c index 8a2219ae4628..91e9ea68cd0c 100644 --- a/drivers/net/nvt_eqos.c +++ b/drivers/net/nvt_eqos.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * Ethernet MAC of the Novatek NA51089, NA51055, NA51084, NA51103 and - * NA51090: a Synopsys DWC + * Ethernet MAC of the Novatek NA51089, NA51055, NA51084, NS02501, NA51103 + * and NA51090: a Synopsys DWC * Ethernet QoS (GMAC 4.x) core, run polled with one Tx and one Rx * descriptor ring. * @@ -117,7 +117,7 @@ /* * The core's own descriptor, padded to a cache line on NA51089. The DMA * skips the padding (DSL) in units of its bus width, 3 bits' worth: 8 - * bytes on NA51089 and NA51084, but 4 on NA51055 (the vendor's + * bytes on NA51089, NA51084 and NS02501, but 4 on NA51055 (the vendor's * eth_na51055.c), where no skip reaches a 64-byte line. The NT9852x * targets therefore pack the descriptors, no skip: this port runs with * the data cache off (SYS_DCACHE_OFF), so no cache line is shared with @@ -270,14 +270,15 @@ static int eqos_start(struct eth_device *dev, struct bd_info *bis) eqos_write_hwaddr(dev); /* - * Bursts of 16 x 8 beats, as the vendor drivers; the NT9852x one - * also lets the AXI master idle into low power (AALE). + * Bursts of 16 x 8 beats, as the vendor drivers; the NT9852x and + * NS02501 ones also let the AXI master idle into low power (AALE). */ writel(CH_PBLX8 | CH_DSL((DESC_SIZE - 16) / 8), DMA_CH_CTRL); writel(CH_PBL(16) | CH_TX_OSP, DMA_CH_TX_CTRL); writel(CH_PBL(16) | CH_RBSZ(PKT_SIZE), DMA_CH_RX_CTRL); writel(SYSBUS_RD_OSR_LMT(2) | - (IS_ENABLED(CONFIG_NVT_NA51055) ? SYSBUS_AALE : 0), + (IS_ENABLED(CONFIG_NVT_NA51055) || + IS_ENABLED(CONFIG_NVT_NS02501) ? SYSBUS_AALE : 0), DMA_SYSBUS_MODE); memset(tx_descs, 0, sizeof(tx_descs)); diff --git a/include/configs/novatek.h b/include/configs/novatek.h index 60bdc947af60..0c890336d966 100644 --- a/include/configs/novatek.h +++ b/include/configs/novatek.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /* - * Novatek NA51089, NA51055 / NA51084, NA51103, NA51090: memory map, - * console and timer. The environment and the rest of the OpenIPC + * Novatek NA51089, NA51055 / NA51084, NS02501, NA51103, NA51090: memory + * map, console and timer. The environment and the rest of the OpenIPC * configuration come from openipc-common.h. */ @@ -57,6 +57,9 @@ #define CONFIG_SYS_NS16550_MEM32 #ifdef CONFIG_NVT_NA511XX #define CONFIG_SYS_NS16550_CLK NVT_UART_HZ +#elif defined(CONFIG_NVT_NS02501) +/* The SDK's tree and its U-Boot's soc.c: UART0 runs at 48 MHz there */ +#define CONFIG_SYS_NS16550_CLK 48000000 #else #define CONFIG_SYS_NS16550_CLK 24000000 #endif From ee170ba0f2d80fc4ff3d4afa8e24362357a1c3cf Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 23:12:25 +0000 Subject: [PATCH 31/38] novatek: add the NT98532 and NT98533 The NS02501 SDK's parts, one die (NVT_NS02501), booted by the NS02501 loader (board/novatek/ns02501/loader) into NA51089's image layout, the device tree packed. - Kconfig: TARGET_NT98532 and TARGET_NT98533, NVT_DDR_SIZE 256 MiB and NVT_OSMEM 36M, what the SDK boards give Linux. - Device trees: openipc/ns02501.dtsi is the SDK's NT98532 NOR board (cfg_532_IPC_NOR_SQUASHFS_BD_EVB) flattened, with the OpenIPC chain in /nor, U-Boot at 0x03900000 and the loader's scratch below it, SHMINFO where the SDK has it (0xA00000). nt98533.dts carries what the SDK's 533QD board (cfg_533_IPC_NAND_UBIFS_QD_EVB, the same memory split) changes past its storage: the engines the NT98533 has more of (DNE, PRE, MI; IME, IPE and IFE's ranges), its sensor list, I2C auto reset, the EIS and gyro modules, SDIO3's clock source, its BIN_NAME. - build.sh: nt98532 builds the loader for CHIP 532BD, nt98533 for 533QD, 2 Gbit at 1066 MHz as the SDK boards; the loader binary is named after the part's first three characters; NS02501 images get nvt-image.py --fdt-lzma. The other packages (532QB..533BE) are the same U-Boot with a loader built for their CHIP and NVT_DDR_SIZE to match, so they get no targets of their own. Built as CI builds them (Ubuntu 24.04, arm-none-eabi 13.2, gcc-arm-linux-gnueabi 13.3, gcc-aarch64-linux-gnu): every target of build.sh builds; the NS02501 images are a 45056-byte loader, an 8487/8658-byte packed tree (96534/97963) and U-Boot 97439 packed (243424). Under qemu-hisilicon (OpenIPC/qemu-hisilicon#222), whose mask ROM model runs the image's loader, nt98532 and nt98533 reach the prompt twice, the second time with the environment the first saved; the loaders report 532BD_DRAM1_1066_2048Mb and 533QD_DRAM1_1066_2048Mb. The other targets' CI images pass the same two-boot test: nt98560, nt98561, nt98562, nt98566, nt98523, nt98525, nt98528, nt98529 (and the NT98520 / NT98522 images on nt98525 / nt98523), nt98332 (-smp 2, 16 MiB) and nt98633 (-smp 4, 128 MiB). Not on silicon: the DDR settings are the SDK boards'. --- arch/arm/mach-novatek/Kconfig | 28 +- build.sh | 31 +- openipc/ns02501.dtsi | 6000 +++++++++++++++++++++++++++++++++ openipc/nt98532.dts | 8 + openipc/nt98532_config | 2 + openipc/nt98533.dts | 157 + openipc/nt98533_config | 2 + 7 files changed, 6219 insertions(+), 9 deletions(-) create mode 100644 openipc/ns02501.dtsi create mode 100644 openipc/nt98532.dts create mode 100644 openipc/nt98532_config create mode 100644 openipc/nt98533.dts create mode 100644 openipc/nt98533_config diff --git a/arch/arm/mach-novatek/Kconfig b/arch/arm/mach-novatek/Kconfig index 6587cf1e693d..45aa6c528b25 100644 --- a/arch/arm/mach-novatek/Kconfig +++ b/arch/arm/mach-novatek/Kconfig @@ -67,6 +67,20 @@ config TARGET_NT98529 help NA51084 as the NT98528, its CPU cleared for 1.2 GHz. +config TARGET_NT98532 + bool "NT98532" + select NVT_NS02501 + help + NS02501 (two Cortex-A32s, AArch32 only) with 256 MiB of DDR, as + the SDK's 532BD NOR board. + +config TARGET_NT98533 + bool "NT98533" + select NVT_NS02501 + help + NS02501 with 256 MiB of DDR in the package (533QD), as the SDK's + 533QD boards. + config TARGET_NT98332 bool "NT98332 (NA51103)" select NVT_NA51103 @@ -95,6 +109,13 @@ config NVT_NA51055 NA51089's addresses, two Cortex-A9s, their own loader (board/novatek/na51055/loader). The chip ID tells them apart. +config NVT_NS02501 + bool + help + The NT98532/NT98533 die: NA51089's blocks at NA51089's addresses, + two Cortex-A32s run in AArch32 with a GIC-400 and the generic + timer, its own loader (board/novatek/ns02501/loader). + # The NVR dies: the board's loader warm-resets the A53s into AArch64 and # its BL31 (TF-A v2.2) enters U-Boot at EL2 with a fixed SPSR (0x3C9), so # U-Boot is an AArch64 one. @@ -119,6 +140,7 @@ config NVT_DDR_SIZE default 0x20000000 if TARGET_NT98520 || TARGET_NT98525 default 0x20000000 if TARGET_NT98528 || TARGET_NT98529 default 0x08000000 if TARGET_NT98523 + default 0x10000000 if NVT_NS02501 default 0x04000000 help The DDR at 0: the package's, or the board's for a part with @@ -131,14 +153,16 @@ config NVT_OSMEM default "0x15e00000" if NVT_NA51103 default "256M" if NVT_DDR_SIZE >= 0x20000000 default "64M" if TARGET_NT98523 + default "36M" if NVT_NS02501 default "32M" help What Linux gets of the DDR by default (osmem, mem=); the vendor media modules get the rest. 32M is what OpenIPC's install guide sets on the NT98562/566's vendor U-Boot; larger parts give Linux what their SDK board does (the NT98523's tree keeps its CMA at - 48 MiB), the NVRs what their firmware sets (Xiongmai's NT98332 - NVR 0x15e00000, the NT98633 NVR's tree 0x57600000). + 48 MiB; the NS02501 boards give Linux 36 MiB), the NVRs what + their firmware sets (Xiongmai's NT98332 NVR 0x15e00000, the + NT98633 NVR's tree 0x57600000). config SYS_SOC default "novatek" diff --git a/build.sh b/build.sh index 256bc96c27ad..de71b5f5e9d8 100755 --- a/build.sh +++ b/build.sh @@ -52,9 +52,10 @@ build_loader() { fi } -# Novatek NA51089, NA51055 / NA51084: the mask ROM starts the loader, -# which trains the DDR, reads the device tree at 0x10000 and unpacks -# U-Boot from 0x20000 to its link address. +# Novatek NA51089, NA51055 / NA51084, NS02501: the mask ROM starts the +# loader, which trains the DDR, reads the device tree at 0x10000 and +# unpacks U-Boot from 0x20000 to its link address. The NS02501 trees are +# packed too (nvt-image.py --fdt-lzma). # build_nvt <soc> <loader die> <chip> [loader make variables...] build_nvt() { soc=$1 @@ -63,7 +64,11 @@ build_nvt() { shift 3 builddir=${BOOT_SRCDIR}/output/build-${soc}-nor loaderdir=${BOOT_SRCDIR}/output/build-${soc}-loader - loader=${loaderdir}/Project/Model/Loader${chip}_Data/Release/LD98${chip}A.bin + # The binary is named after the part (LD98533A for CHIP 533QD) + part=$(echo "${chip}" | cut -c1-3) + loader=${loaderdir}/Project/Model/Loader${chip}_Data/Release/LD98${part}A.bin + image_opts= + [ "${die}" = ns02501 ] && image_opts=--fdt-lzma make_opts="-C ${BOOT_SRCDIR} O=${builddir} -j$(nproc)" rm -rf "${builddir}" @@ -77,8 +82,9 @@ build_nvt() { build_loader "${loaderdir}" "${die}" CHIP="${chip}" "$@" || return 1 text=$(sed -n 's/^CONFIG_SYS_TEXT_BASE=//p' "${builddir}/.config") - python3 openipc/nvt-image.py "${loader}" "${builddir}/${soc}.dtb" \ - "${builddir}/u-boot.bin" "${text}" "output/u-boot-${soc}-nor.bin" + python3 openipc/nvt-image.py ${image_opts} "${loader}" \ + "${builddir}/${soc}.dtb" "${builddir}/u-boot.bin" "${text}" \ + "output/u-boot-${soc}-nor.bin" } # Novatek NVR dies, AArch64: the board's loader and BL31 stay, the image @@ -169,6 +175,17 @@ build_soc() { build_nvt "${soc}" na51055 "${soc#nt98}" MODEL=EMU_EVB_528 \ DRAM1_CLK=1066 SDRAM_SIZE=4096 DRAM2_CLK=1066 \ SDRAM2_SIZE=4096 STORAGEEXT=NONE ;; + # The NS02501 loader (ns02501_ldr). CHIP is the package + # (ModelConfig_EMU_EVB.txt): QB..QD, BC..BE, the last letter the + # DDR's size (B 512 Mbit, C 1 Gbit, D 2 Gbit, E 4 Gbit), whose + # parameters Configram533 has itself (there is no ConfigRam + # directory). The SDK's boards are the 532BD and 533QD, 2 Gbit at + # its default 1066 MHz. Another package is the same U-Boot with a + # loader built for its CHIP (and NVT_DDR_SIZE to match). + nt98532) + build_nvt "${soc}" ns02501 532BD DRAM1_CLK=1066 ;; + nt98533) + build_nvt "${soc}" ns02501 533QD DRAM1_CLK=1066 ;; # The NVRs: NA51103 on SPI NOR (Xiongmai's layout, OpenIPC's from # 0x40000), NA51090 on SPI NAND (the SDK's, env and UBI after it) nt98332) @@ -181,7 +198,7 @@ build_soc() { esac } -ALL_SOCS="nt98560 nt98561 nt98562 nt98566 nt98520 nt98522 nt98523 nt98525 nt98528 nt98529 nt98332 nt98633" +ALL_SOCS="nt98560 nt98561 nt98562 nt98566 nt98520 nt98522 nt98523 nt98525 nt98528 nt98529 nt98532 nt98533 nt98332 nt98633" SOCS="$@" [ -z "${SOCS}" ] && SOCS="${ALL_SOCS}" diff --git a/openipc/ns02501.dtsi b/openipc/ns02501.dtsi new file mode 100644 index 000000000000..e57734286ad7 --- /dev/null +++ b/openipc/ns02501.dtsi @@ -0,0 +1,6000 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Novatek NS02501 (NT98532/533): the device tree of the NS02501 SDK's + * NT98532 NOR board (cfg_532_IPC_NOR_SQUASHFS_BD_EVB, flattened), with + * the OpenIPC boot chain in the nor node: the loader at 0, this tree at + * 0x10000, U-Boot at 0x20000. U-Boot runs at 0x03900000, below 64 MiB as + * on NA51089, and the loader's scratch (linuxtmp) ends there; SHMINFO + * stays at the SDK's 0xA00000. + * + * The tree is ~95 KiB, its clocks described in it (nvt-clk), more than + * its 64 KiB slot: openipc/nvt-image.py stores it in an LZMA BCL1 + * container, which the loader unpacks (board/novatek/ns02501/loader). + * + * The loader reads /nvt_memory_cfg (where U-Boot runs, where this tree + * and SHMINFO go) and /nor/partition_uboot. U-Boot hands the tree on to + * the kernel, with /memory and /hdal-memory/media split at ${osmem} + * (board/novatek/na51089/na51089.c). + */ + +/ { + model = "Novatek NS02501"; + compatible = "novatek,ns02501", "nvt,ca32"; + interrupt-parent = <&gic>; + #address-cells = <0x01>; + #size-cells = <0x01>; + + cpu_opp_table: opp_table { + compatible = "operating-points-v2"; + opp-shared; + phandle = <0x02>; + + opp-80000000 { + opp-hz = /bits/ 64 <0x4c4b400>; + }; + + opp-240000000 { + opp-hz = /bits/ 64 <0xe4e1c00>; + }; + + opp-480000000 { + opp-hz = /bits/ 64 <0x1c9c3800>; + }; + + opp-800000000 { + opp-hz = /bits/ 64 <0x2faf0800>; + }; + }; + + cpus { + #address-cells = <0x01>; + #size-cells = <0x00>; + + cpu0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a32"; + reg = <0x00>; + clock-frequency = <0x2faf0800>; + operating-points-v2 = <&cpu_opp_table>; + phandle = <0x03>; + }; + + cpu1: cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a32"; + reg = <0x01>; + cpu-release-addr = <0xf0090100>; + clock-frequency = <0x2faf0800>; + operating-points-v2 = <&cpu_opp_table>; + phandle = <0x04>; + }; + }; + + cg@f0020000 { + compatible = "nvt,core_clk"; + reg = <0xf0020000 0x10000>; + }; + + timer { + compatible = "arm,armv8-timer"; + interrupts = <0x01 0x0d 0x308>, <0x01 0x0e 0x308>, <0x01 0x0b 0x308>, <0x01 0x0a 0x308>; + clock-frequency = <0xb71b00>; + arm,cpu-registers-not-fw-configured; + always-on; + }; + + pmu { + compatible = "arm,cortex-a7-pmu"; + interrupts = <0x00 0x74 0x04>, <0x00 0x75 0x04>; + interrupt-affinity = <&cpu0>, <&cpu1>; + }; + + gic: interrupt-controller@0xfff00000 { + compatible = "arm,cortex-a7-gic"; + #interrupt-cells = <0x03>; + interrupt-controller; + reg = <0xfff01000 0x1000>, <0xfff02000 0x1000>; + phandle = <0x01>; + }; + + scu: snoop-control-unit@0xf0620000 { + compatible = "arm,cortex-a7-scu"; + reg = <0xf0620000 0x100>; + }; + + aliases { + mmc0 = "/mmc@f0420000"; + }; + + uart@f0290000 { + compatible = "ns16550a"; + reg = <0xf0290000 0x1000>; + clocks = <&clk_uart0>; + clock-names = "f0290000.uart"; + interrupts = <0x00 0x2b 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x2dc6c00>; + fifo-size = <0x40>; + uart_id = <0x00>; + }; + + uart@f0300000 { + compatible = "ns16550a"; + reg = <0xf0300000 0x1000>; + clocks = <&clk_uart1>; + clock-names = "f0300000.uart"; + interrupts = <0x00 0x2c 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x2dc6c00>; + fifo-size = <0x40>; + hw_flowctrl = <0x00>; + rx_trig_level = <0x03>; + uart_id = <0x01>; + }; + + uart@f0310000 { + compatible = "ns16550a"; + reg = <0xf0310000 0x1000>; + clocks = <&clk_uart2>; + clock-names = "f0310000.uart"; + interrupts = <0x00 0x2d 0x04>; + baud = <0x1c200>; + reg-shift = <0x02>; + reg-io-width = <0x04>; + no-loopback-test = <0x01>; + clock-frequency = <0x2dc6c00>; + fifo-size = <0x40>; + hw_flowctrl = <0x00>; + rx_trig_level = <0x03>; + uart_id = <0x02>; + }; + + kdrv_rpc: cc@f0090000 { + compatible = "kdrv_rpc"; + reg = <0xf0090000 0x300>; + interrupts = <0x00 0x3b 0x04>; + }; + + mmc0: mmc@f0420000 { + compatible = "nvt,nvt_mmc"; + reg = <0xf0420000 0x1000>; + clocks = <&clk_mmc0>; + clock-names = "f0420000.mmc"; + interrupts = <0x00 0x1e 0x04>; + max-frequency = <0x2dc6c00>; + voltage-switch = <0x00>; + max-voltage = <0xce4>; + bus-width = <0x04>; + neg-sample-edge = <0x00>; + driving = <0x02 0x02 0x02 0x02 0x02 0x02 0x04 0x04 0x04 0x04 0x04 0x04>; + cd_gpio = <0x66 0x00 0x00>; + no-sdio; + no-mmc; + }; + + nand: nand@f0400000 { + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "nvt,nvt_spinand"; + reg = <0xf0400000 0x1000>; + interrupts = <0x00 0x1d 0x04>; + clock-frequency = <0xb71b00>; + nvt-devname = "spi_nand.0"; + }; + + nor: nor@f0400000 { + #address-cells = <0x02>; + #size-cells = <0x02>; + clocks = <&clk_nand>; + clock-names = "f0400000.nor"; + compatible = "nvt,nvt_spinor"; + reg = <0xf0400000 0x1000>; + interrupts = <0x00 0x1d 0x04>; + clock-frequency = <0xb71b00>; + nvt-devname = "spi_nor.0"; + trace-stdtable = <0x01>; + + + partition_loader { + label = "loader"; + reg = <0x00 0x00 0x00 0x10000>; + }; + + partition_fdt { + label = "fdt"; + reg = <0x00 0x10000 0x00 0x10000>; + }; + + partition_uboot { + label = "uboot"; + reg = <0x00 0x20000 0x00 0x20000>; + }; + + /* The loader looks a partition up here by its label */ + nvtpack { + ver = "NVTPACK_FW_INI_16072017"; + method = <0x01>; + + index { + + id0 { + partition_name = "loader"; + }; + + id1 { + partition_name = "fdt"; + }; + + id2 { + partition_name = "uboot"; + }; + }; + }; + }; + + gpio: gpio@f0070000 { + compatible = "nvt,nvt_gpio"; + reg = <0xf0070000 0x10000>; + interrupts = <0x00 0x18 0x04 0x00 0x31 0x04>; + #interrupt-cells = <0x03>; + interrupt-controller; + interrupt-parent = <&gic>; + #gpio-cells = <0x02>; + }; + + eth0@f02b0000 { + compatible = "nvt,synopsys_eth"; + reg = <0xf02b0000 0x3800>; + interrupts = <0x00 0x22 0x04>; + sp-clk = <0x00>; + ref-clk-out = <0x00>; + }; + + phy@f02b3800 { + compatible = "nvt,eth_phy"; + reg = <0xf02b3800 0x400>; + }; + + wdt@f0050000 { + compatible = "nvt,nvt_wdt"; + reg = <0xf0050000 0x1000>; + clocks = <&clk_wdt>; + clock-names = "f0050000.wdt"; + interrupts = <0x00 0x4b 0x04>; + }; + + pwm@f0210000 { + compatible = "nvt,nvt_pwm"; + reg = <0xf0210000 0x1000>; + interrupts = <0x00 0x1a 0x04>; + clocks = <&clk_pwm0>, <&clk_pwm1>, <&clk_pwm2>, <&clk_pwm3>, <&clk_pwm4>, <&clk_pwm5>, <&clk_pwm6>, <&clk_pwm7>, <&clk_pwm8>, <&clk_pwm9>, <&clk_pwm10>, <&clk_pwm11>; + clock-names = "f0210000.pwm0", "f0210000.pwm1", "f0210000.pwm2", "f0210000.pwm3", "f0210000.pwm4", "f0210000.pwm5", "f0210000.pwm6", "f0210000.pwm7", "f0210000.pwm8", "f0210000.pwm9", "f0210000.pwm10", "f0210000.pwm11"; + nums = <0x0c>; + src_freq = <0x7270e00>; + status = "okay"; + bypass_pm = <0x00>; + }; + + adc@2,f01D0000 { + compatible = "nvt,nvt_adc"; + reg = <0xf01d0000 0x1000>; + clocks = <&clk_adc>; + clock-names = "f01d0000.adc"; + interrupts = <0x00 0x49 0x04>; + clock-frequency = <0xf42400>; + #io-channel-cells = <0x01>; + }; + + rtc@f0060000 { + compatible = "nvt,nvt_rtc"; + reg = <0xf0060000 0x100>; + interrupts = <0x00 0x4c 0x04>; + }; + + drtc@f00b0000 { + compatible = "nvt,nvt_drtc"; + reg = <0xf00b0000 0x100>; + clocks = <&clk_drtc>; + interrupts = <0x00 0x04 0x04>; + }; + + cypt: cypt@f0620000 { + compatible = "nvt,nvt_crypto"; + reg = <0xf0620000 0x100>; + interrupts = <0x00 0x26 0x04>; + mclk = <0x01>; + }; + + hash: hash@f0670000 { + compatible = "nvt,nvt_hash"; + reg = <0xf0670000 0x100>; + interrupts = <0x00 0x1c 0x04>; + mclk = <0x01>; + }; + + rsa: rsa@f06a0000 { + compatible = "nvt,nvt_rsa"; + reg = <0xf06a0000 0x100>; + interrupts = <0x00 0x14 0x04>; + mclk = <0x01>; + }; + + top: top@f0010000 { + compatible = "nvt,nvt_top"; + reg = <0xf0010000 0x2000 0xf0030000 0x2000 0xf0070000 0x10000 0xf0110000 0x2000 0xf0130000 0x2000 0xf0170000 0x2000>; + + sdio { + pinmux = <0x01>; + }; + + nand { + pinmux = <0x01>; + }; + + eth { + pinmux = <0x00>; + }; + + i2c { + pinmux = <0x00>; + }; + + pwm { + pinmux = <0x00>; + }; + + pwmII { + pinmux = <0x00>; + }; + + pwmIII { + pinmux = <0x00>; + }; + + ccnt { + pinmux = <0x00>; + }; + + sensor { + pinmux = <0x00>; + }; + + sensor2 { + pinmux = <0x00>; + }; + + sensormisc { + pinmux = <0x00>; + }; + + sensorsync { + pinmux = <0x00>; + }; + + audio { + pinmux = <0x00>; + }; + + uart { + pinmux = <0x01>; + }; + + csi { + pinmux = <0x00>; + }; + + remote { + pinmux = <0x00>; + }; + + sdp { + pinmux = <0x00>; + }; + + spi { + pinmux = <0x00>; + }; + + sif { + pinmux = <0x00>; + }; + + misc { + pinmux = <0x00>; + }; + + lcd { + pinmux = <0x00>; + }; + + tv { + pinmux = <0x00>; + }; + + sel_lcd { + pinmux = <0x00>; + }; + + weigand { + pinmux = <0x00>; + }; + + pgpio0 { + pad_config = <0x180 0x00 0x40 0x00>; + }; + + pgpio1 { + pad_config = <0x182 0x00 0x42 0x00>; + }; + + nvt_sen_os04c10@0 { + pinctrl = <0x0e 0x01 0x03 0x01>; + }; + + nvt_sen_os04e10@0 { + pinctrl = <0x0e 0x01 0x03 0x01>; + }; + + nvt_sen_sc450ai@0 { + pinctrl = <0x0e 0x01 0x03 0x01>; + }; + + nvt_sen_nt99436@0 { + pinctrl = <0x0e 0x01 0x03 0x01>; + }; + + nvt_sen_os05a10@0 { + pinctrl = <0x0e 0x01 0x03 0x01>; + }; + + nvt_sen_gc4103@0 { + pinctrl = <0x0e 0x01 0x03 0x01>; + }; + }; + + sie: sie@f0c00000 { + compatible = "nvt,nvt_sie"; + reg = <0xf0c00000 0xb00 0xf0d20000 0xb00 0xf0d30000 0xb00 0xf0d40000 0xb00>; + interrupts = <0x00 0x01 0x04 0x00 0x02 0x04 0x00 0x03 0x04 0x00 0x51 0x04>; + clocks = <&clk_sie1>, <&clk_sie2>, <&clk_sie3>, <&clk_sie4>, <&sie1_pclk>, <&sie2_pclk>, <&sie3_pclk>, <&sie4_pclk>, <&sie1_pxclk>, <&sie2_pxclk>, <&sie3_pxclk>, <&sie4_pxclk>, <&sie2_intclk>, <&sn_mclk1>, <&sn_mclk2>, <&sn_mclk3>; + clock-names = "f0c00000.sie1", "f0d20000.sie2", "f0d30000.sie3", "f0d40000.sie4", "sie1_pclk", "sie2_pclk", "sie3_pclk", "sie4_pclk", "sie1_pxclk", "sie2_pxclk", "sie3_pxclk", "sie4_pxclk", "sie2_intclk", "sn_mclk1", "sn_mclk2", "sn_mclk3"; + }; + + tge: tge@f0cc0000 { + compatible = "nvt,kdrv_tge"; + reg = <0xf0cc0000 0x140>; + clocks = <&clk_tge>, <&clk_tgeflashA>, <&clk_tgemshA>, <&tge_pclk>, <&sn_mclk1>, <&sn_mclk2>; + clock-names = "f0cc0000.tge", "clk_tgeflashA", "clk_tgemshA", "tge_pclk", "sn_mclk1", "sn_mclk2"; + interrupts = <0x00 0x16 0x04>; + }; + + rhe@f0ce0000 { + compatible = "nvt,kdrv_rhe"; + reg = <0xf0ce0000 0x900>; + interrupts = <0x00 0x0d 0x04>; + }; + + ime@f0c40000 { + compatible = "nvt,kdrv_ime"; + reg = <0xf0c40000 0xbfc>; + clocks = <&clk_ime>; + clock-names = "f0c40000.ime"; + interrupts = <0x00 0x06 0x04>; + }; + + ife2@f0d00000 { + compatible = "nvt,kdrv_ife2"; + reg = <0xf0d00000 0x100>; + interrupts = <0x00 0x09 0x04>; + }; + + ise@f0c90000 { + compatible = "nvt,kdrv_ise"; + reg = <0xf0c90000 0x154>; + clocks = <&clk_ise>; + clock-names = "f0c90000.ise"; + interrupts = <0x00 0x15 0x04>; + }; + + ipe@f0c30000 { + compatible = "nvt,kdrv_ipe"; + reg = <0xf0c30000 0xa4c>; + clocks = <&clk_ipe>; + clock-names = "f0c30000.ipe"; + interrupts = <0x00 0x05 0x04>; + }; + + ife@f0c70000 { + compatible = "nvt,kdrv_ife"; + reg = <0xf0c70000 0xd3c>; + clocks = <&clk_ife>; + clock-names = "f0c70000.ife"; + interrupts = <0x00 0x08 0x04>; + }; + + vpe@f0cd0000 { + compatible = "nvt,kdrv_vpe"; + reg = <0xf0cd0000 0x808>; + clocks = <&clk_vpe>; + clock-names = "f0cd0000.vpe"; + interrupts = <0x00 0x07 0x04>; + }; + + ai@f0cb0000 { + compatible = "nvt,kdrv_ai"; + reg = <0xf0cb0000 0x1000 0xf0d50000 0x1000 0xf0c60000 0x1000>; + interrupts = <0x00 0x0b 0x04 0x00 0x0d 0x04 0x00 0x0e 0x04>; + clock-frequency = <0x23c34600 0x1c9c3800 0x23c34600>; + }; + + mdbc@f0c10000 { + compatible = "nvt,kdrv_mdbc"; + reg = <0xf0c10000 0x15c>; + clocks = <&clk_mdbc>; + clock-names = "0xf0c10000.mdbc"; + interrupts = <0x00 0x2e 0x04>; + }; + + dis@f0c50000 { + compatible = "nvt,kdrv_dis"; + reg = <0xf0c50000 0x114>; + interrupts = <0x00 0x0a 0x04>; + }; + + coe@f0a11000 { + compatible = "nvt,nvt_coe"; + reg = <0xf0a11000 0x2c0>; + }; + + dce@f0c20000 { + compatible = "nvt,kdrv_dce"; + reg = <0xf0c20000 0x650>; + interrupts = <0x00 0x07 0x04>; + }; + + ive@f0d70000 { + compatible = "nvt,kdrv_ive"; + reg = <0xf0d70000 0x1d0>; + clocks = <&clk_ive>; + clock-names = "f0d70000.ive"; + interrupts = <0x00 0x35 0x04>; + }; + + sde@f0d90000 { + compatible = "nvt,kdrv_sde"; + reg = <0xf0d90000 0x90>; + interrupts = <0x00 0x4a 0x04>; + }; + + ide@f0800000 { + compatible = "nvt,nvt_ide"; + clocks = <&clk_ide>; + reg = <0xf0800000 0x1000>; + interrupts = <0x00 0x30 0x04>; + }; + + dsi@f0120000 { + compatible = "nvt,nvt_dsi"; + reg = <0xf0120000 0x1000>; + interrupts = <0x00 0x47 0x04>; + }; + + dsiphy@f0130000 { + compatible = "nvt,nvt_dsiphy"; + reg = <0xf0130000 0x1000>; + }; + + csi@f0280000 { + compatible = "nvt,nvt_csi"; + reg = <0xf0280000 0x100 0xf0330000 0x100>; + interrupts = <0x00 0x36 0x04 0x00 0x37 0x04>; + }; + + lvds@f0270000 { + compatible = "nvt,nvt_lvds"; + clocks = <&clk_csi0>, <&clk_csi1>; + clock-names = "f0270000.lvds1", "f0370000.lvds2"; + reg = <0xf0270000 0x200 0xf0370000 0x200>; + interrupts = <0x00 0x36 0x04 0x00 0x37 0x04>; + }; + + senphy@f06b0000 { + compatible = "nvt,nvt_senphy"; + reg = <0xf06b0000 0x100>; + }; + + ssenif@f0xx0000 { + compatible = "nvt,nvt_ssenif"; + reg = <0xf02c0000 0x2000>; + interrupts = <0x00 0x3d 0x04>; + }; + + thmal@2,f0260000 { + compatible = "nvt,thermal"; + reg = <0xf0260000 0x100>; + clocks = <&clk_thmal>; + clock-names = "f0260000.thmal"; + clock-frequency = <0xb71b00>; + default_trim = <0xbf>; + }; + + sif@f0240000 { + compatible = "nvt,nvt_sif"; + reg = <0xf0240000 0x200>; + interrupts = <0x00 0x28 0x04>; + clocks = <&clk_sif>; + clock-names = "f0240000.sif"; + clock-frequency = <0x5b8d800>; + }; + + graphic@f0c80000 { + compatible = "nvt,nvt_graphic"; + clocks = <&clk_grph>, <&clk_grph2>; + reg = <0xf0c80000 0x300 0xf0d10000 0x100>; + interrupts = <0x00 0x12 0x04 0x00 0x13 0x04>; + }; + + affine@f0ca0000 { + compatible = "nvt,nvt_affine"; + reg = <0xf0ca0000 0x100>; + interrupts = <0x00 0x34 0x04>; + }; + + h26x@f0a10000 { + compatible = "nvt,nvt_venc"; + reg = <0xf0a10000 0xc00>; + interrupts = <0x00 0x10 0x04>; + power_saving = <0x00>; + }; + + timer@f0040000 { + compatible = "nvt,nvt_timer"; + reg = <0xf0040000 0x300>; + interrupts = <0x00 0x00 0x04>; + }; + + nvt_hr_hwtimer@f00c0000 { + compatible = "nvt,nvt_hwtimer"; + reg = <0xf00c0000 0x1000>; + clocks = <&clk_hrtimer1>; + interrupts = <0x00 0x3d 0x04>; + index = <0x00>; + }; + + nvt_hr_hwtimer@f0150000 { + compatible = "nvt,nvt_hwtimer"; + reg = <0xf0150000 0x1000>; + clocks = <&clk_hrtimer2>; + interrupts = <0x00 0x3e 0x04>; + index = <0x01>; + }; + + nvt_hr_hwtimer@f0160000 { + compatible = "nvt,nvt_hwtimer"; + reg = <0xf0160000 0x1000>; + clocks = <&clk_hrtimer3>; + interrupts = <0x00 0x3f 0x04>; + index = <0x02>; + }; + + nvt_hr_hwtimer@f0170000 { + compatible = "nvt,nvt_hwtimer"; + reg = <0xf0170000 0x1000>; + clocks = <&clk_hrtimer4>; + interrupts = <0x00 0x40 0x04>; + index = <0x03>; + }; + + nvt_hr_hwtimer@f0180000 { + compatible = "nvt,nvt_hwtimer"; + reg = <0xf0180000 0x1000>; + clocks = <&clk_hrtimer5>; + interrupts = <0x00 0x41 0x04>; + index = <0x04>; + }; + + nvt_hr_hwtimer@f0190000 { + compatible = "nvt,nvt_hwtimer"; + reg = <0xf0190000 0x1000>; + clocks = <&clk_hrtimer6>; + interrupts = <0x00 0x42 0x04>; + index = <0x05>; + }; + + nvt_hr_hwtimer@f01a0000 { + compatible = "nvt,nvt_hwtimer"; + reg = <0xf01a0000 0x1000>; + clocks = <&clk_hrtimer7>; + interrupts = <0x00 0x43 0x04>; + index = <0x06>; + }; + + clocksource@f01c0000 { + compatible = "nvt,nvt_clk_src"; + reg = <0xf01c0000 0x1000>; + clock-frequency = <0x7270e00>; + clocks = <&clk_hrtimer8>; + interrupts = <0x00 0x44 0x04>; + }; + + nvt_hr_hwtimer@f01e0000 { + compatible = "nvt,nvt_hwtimer"; + reg = <0xf01e0000 0x1000>; + clocks = <&clk_hrtimer9>; + interrupts = <0x00 0x48 0x04>; + index = <0x07>; + }; + + eac@f0640000 { + compatible = "nvt,nvt_eac"; + reg = <0xf0640000 0x200>; + }; + + jpeg_1: jpeg_1@f0a00000 { + compatible = "nvt,jpeg"; + reg = <0xf0a00000 0x10000>; + interrupts = <0x00 0x11 0x04>; + clocks = <&jpeg1_clk>; + clock-names = "jpeg1_clk"; + device-id = <0x00>; + }; + + usb20host@ff600000 { + compatible = "nvt,ehci-nvtivot"; + reg = <0xff600000 0x1000 0xf0601000 0x1000 0xf0600000 0x1000>; + interrupts = <0x00 0x1b 0x04>; + channel = <0x00>; + clocks = <&clk_usb20>; + clock-names = "ff600000.usb20host"; + use_top = <0x01>; + }; + + usb20@ff600000 { + compatible = "nvt,fotg200_udc"; + reg = <0xff600000 0x1000 0xf0601000 0x1000 0xf0600000 0x1000>; + interrupts = <0x00 0x1b 0x04>; + channel = <0x00>; + clocks = <&clk_usb20>; + clock-names = "ff600000.usb20"; + use_top = <0x01>; + }; + + nvt_usb_chrg@ff600000 { + compatible = "nvt,nvt_usb_chrgdet"; + reg = <0xff600000 0x1000>; + }; + + dai@f0630000 { + compatible = "nvt,nvt_dai"; + reg = <0xf0630000 0x1000>; + interrupts = <0x00 0x0f 0x04>; + }; + + rotate@f0cf0000 { + compatible = "nvt,nvt_rotation"; + reg = <0xf0cf0000 0x100>; + interrupts = <0x00 0x51 0x04>; + }; + + drvdump@0 { + compatible = "nvt,nvt_drvdump"; + }; + + dsp@f1430000 { + compatible = "nvt,nvt_dsp"; + reg = <0xf1430000 0x200 0xf2000000 0x1000000 0xf1440000 0x200 0xf3000000 0x1000000>; + interrupts = <0x00 0x4c 0x04 0x00 0x4d 0x04>; + }; + + spi0: spi@f0230000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0230000 0x1000>; + interrupts = <0x00 0x23 0x04>; + dma-support = <0x00>; + nvt-devname = <0x00>; + clock-frequency = <0x2dc6c00>; + clocks = <&clk_spi0>; + clock-names = "f0230000.spi"; + }; + + spi1: spi@f0320000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0320000 0x1000>; + interrupts = <0x00 0x24 0x04>; + dma-support = <0x00>; + nvt-devname = <0x01>; + clock-frequency = <0x2dc6c00>; + clocks = <&clk_spi1>; + clock-names = "f0320000.spi"; + }; + + spi2: spi@f0340000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0340000 0x1000>; + interrupts = <0x00 0x25 0x04>; + dma-support = <0x00>; + nvt-devname = <0x02>; + clock-frequency = <0x2dc6c00>; + clocks = <&clk_spi2>; + clock-names = "f0340000.spi"; + }; + + sdp@f0390000 { + compatible = "nvt,nvt_sdp"; + reg = <0xf0390000 0x200>; + interrupts = <0x00 0x0c 0x04>; + clocks = <&clk_sdp>; + clock-names = "f0390000.sdp"; + }; + + tse@f0650000 { + compatible = "nvt,nvt_tse"; + reg = <0xf0650000 0x90>; + interrupts = <0x00 0x17 0x04>; + clocks = <&clk_tse>; + clock-names = "f0650000.tse"; + max-frequency = <0x1312d000>; + }; + + remote@f0250000 { + compatible = "nvt,nvt_remote"; + reg = <0xf0250000 0x28>; + clocks = <&remote_clk>; + clock-names = "remote_clk"; + interrupts = <0x00 0x19 0x04>; + }; + + rng: rng@f0680000 { + compatible = "nvt,nvt_rng"; + reg = <0xf0680000 0x100>; + }; + + nvt_arb@f0000000 { + compatible = "nvt,nvt_arb"; + reg = <0xf0000000 0xa000 0xf0fe0000 0x300>; + interrupts = <0x00 0x21 0x04>; + }; + + nvt_otp@f0660000 { + compatible = "nvt,nvt_otp"; + reg = <0xf0660000 0x70>; + }; + + nvt_gzip@f0100000 { + compatible = "nvt,nvt_gzip"; + reg = <0xf0100000 0x50 0xf0000000 0x8100>; + interrupts = <0x00 0x3c 0x04>; + clocks = <&clk_gzip>; + clock-names = "clk_gzip"; + nvt-devname = "nvt_gzip.0"; + }; + + kdrv_ipp { + clock-frequency = <0xe4e1c00>; + }; + + uvcp: uvcp@f0690000 { + compatible = "nvt,nvt_uvcp"; + reg = <0xf0690000 0x200>; + clocks = <&clk_uvcp>; + clock-names = "f0690000.uvcp"; + interrupts = <0x00 0x3b 0x04>; + }; + + nvt_ddr_slow@f00d0000 { + compatible = "nvt,nvt_ddr_slow"; + reg = <0xf00d0000 0x9000>; + clocks = <&clk_cfe>; + clock-names = "cfe_clk"; + interrupts = <0x00 0x38 0x04>; + }; + + nvt_at80c51@f00a0000 { + compatible = "nvt,nvt_at80c51"; + reg = <0xf00a0000 0x200 0xf0140000 0x4000>; + clocks = <&prfll>, <&clk_apb>, <&clk_uart2>; + clock-names = "clk_prmcu"; + }; + + pll_preset@0 { + + pll3 { + pll_config = <0x03 0x00 0x00>; + }; + + pll4 { + pll_config = <0x04 0x00 0x00>; + }; + + pll5 { + pll_config = <0x05 0x11b3dc40 0x01>; + }; + + pll6 { + pll_config = <0x06 0x00 0x00>; + }; + + pll7 { + pll_config = <0x07 0x00 0x00>; + }; + + pll8 { + pll_config = <0x08 0x00 0x00>; + }; + + pll9 { + pll_config = <0x09 0x00 0x00>; + }; + + pll11 { + pll_config = <0x0b 0x00 0x00>; + }; + + pll12 { + pll_config = <0x0c 0x00 0x01>; + }; + }; + + i2c: i2c@f0220000 { + compatible = "nvt,nvt_i2c"; + reg = <0xf0220000 0x100>; + interrupts = <0x00 0x0a 0x04>; + clock-frequency = <0x61a80>; + id = <0x00>; + clocks = <&clk_i2c>; + clock-names = "f0220000.i2c"; + }; + + i2c2: i2c2@f0350000 { + compatible = "nvt,nvt_i2c"; + reg = <0xf0350000 0x100>; + interrupts = <0x00 0x29 0x04>; + clock-frequency = <0x61a80>; + id = <0x01>; + clocks = <&clk_i2c2>; + clock-names = "f0350000.i2c2"; + }; + + i2c3: i2c3@f0360000 { + compatible = "nvt,nvt_i2c"; + reg = <0xf0360000 0x100>; + interrupts = <0x00 0x2a 0x04>; + clock-frequency = <0x61a80>; + id = <0x02>; + clocks = <&clk_i2c3>; + clock-names = "f0360000.i2c3"; + }; + + display { + type = "lcd"; + lcd_ctrl = <0x01>; + sif_channel = <0x02>; + gpio_cs = <0x63>; + gpio_clk = <0x64>; + gpio_data = <0x65>; + }; + + nvtvos { + bIstrylock = <0x01>; + trylock_timeout = <0x1388>; + }; + + nvtmpp { + compatible = "nvt,nvtmpp"; + }; + + isf_stream { + compatible = "nvt,isf_stream"; + }; + + isf_flow { + compatible = "nvt,isf_flow"; + }; + + isf_vdocap { + compatible = "nvt,isf_vdocap"; + }; + + isf_vdoprc { + compatible = "nvt,isf_vdoprc"; + }; + + isf_dummy { + compatible = "nvt,isf_dummy"; + }; + + isf_vdoenc { + compatible = "nvt,isf_vdoenc"; + }; + + isf_vdodec { + compatible = "nvt,isf_vdodec"; + }; + + isf_vdoout { + compatible = "nvt,isf_vdoout"; + }; + + dispobj { + compatible = "nvt,nvt_dispobj"; + }; + + dispdev { + compatible = "nvt,nvt_dispdev"; + }; + + audio { + compatible = "nvt,nvt_audio"; + }; + + wavstudio { + compatible = "nvt,wavstudio"; + }; + + isf_audenc { + compatible = "nvt,isf_audenc"; + }; + + isf_auddec { + compatible = "nvt,isf_auddec"; + }; + + isf_audcap { + compatible = "nvt,isf_audcap"; + }; + + isf_audout { + compatible = "nvt,isf_audout"; + }; + + nvt_ipc { + compatible = "nvt,nvt_ipc"; + }; + + nvt_gfx { + compatible = "nvt,nvt_gfx"; + }; + + chosen { + bootargs = "earlyprintk console=ttyS0,115200 rootfstype=squashfs ro "; + }; + + nvt_memory_cfg { + #address-cells = <0x01>; + #size-cells = <0x01>; + + dram { + reg = <0x00 0x10000000>; + }; + + core2entry1 { + reg = <0x00 0x10000>; + }; + + core2entry2 { + reg = <0x10000 0x10000>; + }; + + fdt { + reg = <0x100000 0x100000>; + }; + + shmem { + reg = <0xa00000 0x100000>; + }; + + loader { + reg = <0x1000000 0x100000>; + }; + + linuxtmp { + reg = <0x1100000 0x2800000>; + }; + + all_in_one { + reg = <0x6640000 0x9000000>; + }; + + kernel_img { + reg = <0xf640000 0x300000>; + }; + + uboot { + reg = <0x3900000 0x6c0000>; + }; + }; + + memory { + device_type = "memory"; + reg = <0x00 0x2400000>; + }; + + reserved-memory { + #address-cells = <0x01>; + #size-cells = <0x01>; + ranges; + }; + + nvt_os_mem { + compatible = "nvt,nvt_os_mem"; + }; + + nvtfmem { + compatible = "nvt,nvt_fmem"; + }; + + hdal-memory { + #address-cells = <0x02>; + #size-cells = <0x01>; + + media { + reg = <0x00 0x2400000 0xdc00000>; + }; + + cfgs { + max_pools_cnt = <0x100>; + }; + }; + + hdal-maxpath-cfg { + vdocap_active_list = <0x01 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00>; + vdoprc_maxdevice = <0x04>; + vdoenc_maxpath = <0x08>; + vdodec_maxpath = <0x02>; + vdoout_maxdevice = <0x02>; + adocap_maxdevice = <0x01>; + adoout_maxdevice = <0x02>; + adoenc_maxpath = <0x01>; + adodec_maxpath = <0x01>; + gfx_maxjob = <0x02>; + stamp_maximg = <0x40>; + vdoprc_maxstamp = <0x00 0x10>; + vdoprc_maxmask = <0x08 0x40>; + vdoenc_maxstamp = <0x20 0x10>; + vdoenc_maxmask = <0x10 0x40>; + vdoout_maxstamp = <0x00 0x10>; + vdoout_maxmask = <0x00 0x40>; + }; + + nvt_chip_mapping { + #address-cells = <0x03>; + #size-cells = <0x01>; + + dram_map { + reg = <0x00 0x00 0x00 0x10000000>; + }; + }; + + max-resolution { + vdoenc_maxresolution = <0x1000 0x1000>; + }; + + nvt_info { + BIN_NAME = "FW98532A"; + BIN_NAME_T = "FW98532T"; + EMBMEM_BLK_SIZE = "0x10000"; + EMBMEM = "EMBMEM_SPI_NOR"; + NVT_CFG_APP_EXTERNAL = "dhd_priv iperf-3"; + NVT_CFG_APP = "mem"; + NVT_ROOTFS_ETC = "COMMON"; + NVT_BINARY_FILE_STRIP = "yes"; + NVT_CFG_KERNEL_CFG = "ns02501_ipc_a32_evb_defconfig_nor_release"; + NVT_CFG_UBOOT_CFG = "nvt-ns02501_a32_nor_defconfig"; + NVT_OPTEE_INSTALL = "DISABLE"; + NVT_LINUX_SMP = "NVT_LINUX_SMP_OFF"; + NVT_FPGA_EMULATION = "NVT_FPGA_EMULATION_OFF"; + NVT_DEFAULT_NETWORK_BOOT_PROTOCOL = "NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_STATIC_IP"; + NVT_ROOTFS_TYPE = "NVT_ROOTFS_TYPE_NOR_SQUASH"; + NVT_ETHERNET = "NVT_ETHERNET_EQOS"; + NVT_SDIO_WIFI = "NVT_SDIO_WIFI_NONE"; + NVT_USB_WIFI = "NVT_USB_WIFI_NONE"; + NVT_USB_4G = "NVT_USB_4G_NONE"; + WIFI_RTK_MDL = "WIFI_RTK_MDL_8189"; + WIFI_BRCM_MDL = "WIFI_BRCM_MDL_43438a1_ampk6212axtal26"; + WIFI_NVT_MDL = "WIFI_NVT_MDL_18211"; + NVT_CURL_SSL = "NVT_CURL_SSL_OPENSSL"; + NVT_UBOOT_ENV_IN_STORG_SUPPORT = "NVT_UBOOT_ENV_IN_STORG_SUPPORT_OFF"; + }; + + nvt-clk { + + reserved: reserved { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "reserved"; + phandle = <0x60>; + }; + + PAUTOGATING: PAUTOGATING { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "PAUTOGATING"; + phandle = <0x5c>; + }; + + ext: ext { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "ext"; + }; + + ext2: ext2 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "ext2"; + }; + + pre_sram_cpu: pre_sram_cpu { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "pre_sram_cpu"; + phandle = <0x6f>; + }; + + pre_sram_pre: pre_sram_pre { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "pre_sram_pre"; + phandle = <0x70>; + }; + + preife_sram_ife: preife_sram_ife { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "preife_sram_ife"; + phandle = <0x71>; + }; + + preife_sram_pre: preife_sram_pre { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "preife_sram_pre"; + phandle = <0x72>; + }; + + dne_sram_cpu: dne_sram_cpu { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "dne_sram_cpu"; + phandle = <0x73>; + }; + + dne_sram_ime: dne_sram_ime { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "dne_sram_ime"; + phandle = <0x74>; + }; + + dne_sram_dne: dne_sram_dne { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "dne_sram_dne"; + phandle = <0x75>; + }; + + ife_sram_cpu: ife_sram_cpu { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "ife_sram_cpu"; + phandle = <0x76>; + }; + + ife_sram_ife: ife_sram_ife { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "ife_sram_ife"; + phandle = <0x77>; + }; + + cnn_sram_dce: cnn_sram_dce { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "cnn_sram_dce"; + }; + + ipe_sram_cpu: ipe_sram_cpu { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "ipe_sram_cpu"; + phandle = <0x78>; + }; + + ipe_sram_ipe: ipe_sram_ipe { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "ipe_sram_ipe"; + phandle = <0x79>; + }; + + ime_sram_cpu: ime_sram_cpu { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "ime_sram_cpu"; + phandle = <0x7a>; + }; + + ime_sram_ime: ime_sram_ime { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "ime_sram_ime"; + phandle = <0x7b>; + }; + + sie3_sram_sie3: sie3_sram_sie3 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "sie3_sram_sie3"; + phandle = <0x61>; + }; + + sie3_sram_sie4: sie3_sram_sie4 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "sie3_sram_sie4"; + phandle = <0x62>; + }; + + osc_in: osc_in { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0xb71b00>; + clock-output-names = "osc_in"; + phandle = <0x58>; + }; + + osc_rtc: osc_rtc { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x8000>; + clock-output-names = "osc_rtc"; + phandle = <0x59>; + }; + + fix850m: fix850m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x32a9f880>; + clock-output-names = "fix850m"; + }; + + fix480m: fix480m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x1c9c3800>; + clock-output-names = "fix480m"; + phandle = <0x54>; + }; + + fix360m: fix360m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x15752a00>; + clock-output-names = "fix360m"; + }; + + fix320m: fix320m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x1312d000>; + clock-output-names = "fix320m"; + phandle = <0x5f>; + }; + + fix240m: fix240m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0xe4e1c00>; + clock-output-names = "fix240m"; + phandle = <0x57>; + }; + + fix196m: fix196m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0xbaeb900>; + clock-output-names = "fix196m"; + }; + + fix192m: fix192m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0xb71b000>; + clock-output-names = "fix192m"; + phandle = <0x63>; + }; + + fix160m: fix160m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x9896800>; + clock-output-names = "fix160m"; + phandle = <0x81>; + }; + + fix150m: fix150m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x8f0d180>; + clock-output-names = "fix150m"; + }; + + fix120m: fix120m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x7270e00>; + clock-output-names = "fix120m"; + phandle = <0x66>; + }; + + fix96m: fix96m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x5b8d800>; + clock-output-names = "fix96m"; + phandle = <0x5d>; + }; + + fix80m: fix80m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x4c4b400>; + clock-output-names = "fix80m"; + phandle = <0x55>; + }; + + fix60m: fix60m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x3938700>; + clock-output-names = "fix60m"; + phandle = <0x86>; + }; + + fix48m: fix48m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x2dc6c00>; + clock-output-names = "fix48m"; + phandle = <0x5a>; + }; + + fix30m: fix30m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x1c9c380>; + clock-output-names = "fix30m"; + phandle = <0x5b>; + }; + + fix24m: fix24m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x16e3600>; + clock-output-names = "fix24m"; + }; + + fix16m: fix16m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0xf42400>; + clock-output-names = "fix16m"; + phandle = <0x5e>; + }; + + fix12m: fix12m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0xb71b00>; + clock-output-names = "fix12m"; + phandle = <0x6d>; + }; + + fix3m: fix3m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x2dc6c0>; + clock-output-names = "fix3m"; + phandle = <0x65>; + }; + + fix32768: fix32768 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x8000>; + clock-output-names = "fix32768"; + phandle = <0x6b>; + }; + + fix32k: fix32k { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x7d00>; + clock-output-names = "fix32k"; + phandle = <0x6c>; + }; + + clk_nand_fac: clk_nand_fac { + #clock-cells = <0x00>; + compatible = "nvt,nvt-factor-clock"; + clocks = <&fix480m>; + clock-div = <0x02>; + clock-mult = <0x01>; + phandle = <0x7c>; + }; + + clkout_normal: clkout_normal { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "clkout_normal"; + phandle = <0x83>; + }; + + clkout_invert: clkout_invert { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "clkout_invert"; + phandle = <0x84>; + }; + + siex_pxclkpad1: siex_pxclkpad1 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "siex_pxclkpad1"; + phandle = <0x89>; + }; + + siex_pxclkpad2: siex_pxclkpad2 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "siex_pxclkpad2"; + phandle = <0x8a>; + }; + + siex_intclk0: siex_intclk0 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "siex_intclk0"; + phandle = <0x87>; + }; + + siex_intclk1: siex_intclk1 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "siex_intclk1"; + phandle = <0x88>; + }; + + tge_clksrc: tge_clksrc { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "tge_clksrc"; + phandle = <0x85>; + }; + + csi_hsclk: csi_hsclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-fixed-clock"; + clock-frequency = <0x00>; + clock-output-names = "csi_hsclk"; + phandle = <0x67>; + }; + + cpu_clk: cpu_clk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix80m>, <&pll8>, <&fix480m>, <&fix240m>; + current_rate = <0x2faf0800>; + parent_idx = <0x01>; + mux_reg_offset = <0x10>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x02>; + clock-output-names = "cpu_clk"; + keep_rate = <0x01>; + }; + + pll3: pll3 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-pll"; + clocks = <&osc_in>; + default_value = <0x20000>; + pll_ratio = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x03>; + rate_reg_offset = <0x4460>; + rate_bit_idx = <0x00>; + rate_bit_width = <0x08>; + clock-output-names = "pll3"; + }; + + pll5: pll5 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-pll"; + clocks = <&osc_in>; + default_value = <0x20000>; + pll_ratio = <0x280000>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x05>; + rate_reg_offset = <0x4560>; + rate_bit_idx = <0x00>; + rate_bit_width = <0x08>; + clock-output-names = "pll5"; + phandle = <0x82>; + }; + + pll6: pll6 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-pll"; + clocks = <&osc_in>; + default_value = <0x20000>; + pll_ratio = <0x320000>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x06>; + rate_reg_offset = <0x44e0>; + rate_bit_idx = <0x00>; + rate_bit_width = <0x08>; + clock-output-names = "pll6"; + phandle = <0x6e>; + }; + + pll7: pll7 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-pll"; + clocks = <&osc_in>; + default_value = <0x20000>; + pll_ratio = <0x3d70a4>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x07>; + rate_reg_offset = <0x45e0>; + rate_bit_idx = <0x00>; + rate_bit_width = <0x08>; + clock-output-names = "pll7"; + phandle = <0x7d>; + }; + + pll8: pll8 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-pll"; + clocks = <&osc_in>; + default_value = <0x20000>; + pll_ratio = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x08>; + rate_reg_offset = <0x4420>; + rate_bit_idx = <0x00>; + rate_bit_width = <0x08>; + clock-output-names = "pll8"; + phandle = <0x56>; + }; + + pll9: pll9 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-pll"; + clocks = <&osc_in>; + default_value = <0x20000>; + pll_ratio = <0x640000>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x09>; + rate_reg_offset = <0x4520>; + rate_bit_idx = <0x00>; + rate_bit_width = <0x08>; + clock-output-names = "pll9"; + phandle = <0x64>; + }; + + pll11: pll11 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-pll"; + clocks = <&osc_in>; + default_value = <0x20000>; + pll_ratio = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x0b>; + rate_reg_offset = <0x44a0>; + rate_bit_idx = <0x00>; + rate_bit_width = <0x08>; + clock-output-names = "pll11"; + phandle = <0x68>; + }; + + pll12: pll12 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-pll"; + clocks = <&osc_in>; + default_value = <0x20000>; + pll_ratio = <0x42aaaa>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x0c>; + rate_reg_offset = <0x45a0>; + rate_bit_idx = <0x00>; + rate_bit_width = <0x08>; + clock-output-names = "pll12"; + phandle = <0x69>; + }; + + pll13: pll13 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-pll"; + clocks = <&osc_in>; + default_value = <0x20000>; + pll_ratio = <0x500000>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x0d>; + rate_reg_offset = <0x4620>; + rate_bit_idx = <0x00>; + rate_bit_width = <0x08>; + clock-output-names = "pll13"; + phandle = <0x6a>; + }; + + prfll: prfll { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&osc_rtc>, <&osc_in>; + parent_idx = <0x01>; + current_rate = <0x00>; + gate_reg_offset = <0x110>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x8c>; + reset_bit_idx = <0x06>; + do_reset = <0x00>; + clock-output-names = "prfll"; + phandle = <0x4f>; + }; + + clk_uart0: clk_uart0 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix48m>, <&fix30m>; + current_rate = <0x2dc6c00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x0a>; + do_enable = <0x01>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x0a>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0290000.uart"; + max_rate = <0x2dc6c00>; + phandle = <0x05>; + }; + + clk_uart1: clk_uart1 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix48m>, <&fix30m>, <&prfll>; + current_rate = <0x2dc6c00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x0b>; + do_enable = <0x01>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x0b>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0300000.uart"; + max_rate = <0x2dc6c00>; + phandle = <0x06>; + }; + + clk_uart2: clk_uart2 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix48m>, <&fix30m>, <&prfll>; + current_rate = <0x2dc6c00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x16>; + do_enable = <0x01>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x16>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0310000.uart"; + max_rate = <0x2dc6c00>; + phandle = <0x07>; + }; + + uart_pclk: uart_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x1c>; + do_autogating = <0x01>; + clock-output-names = "uart_pclk"; + }; + + uart2_pclk: uart2_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x1d>; + do_autogating = <0x01>; + clock-output-names = "uart2_pclk"; + }; + + uart3_pclk: uart3_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x10>; + do_autogating = <0x01>; + clock-output-names = "uart3_pclk"; + }; + + pre_pclk: pre_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc8>; + autogating_bit_idx = <0x0c>; + do_autogating = <0x01>; + clock-output-names = "pre_pclk"; + }; + + dne_pclk: dne_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc8>; + autogating_bit_idx = <0x08>; + do_autogating = <0x01>; + clock-output-names = "dne_pclk"; + }; + + ife_pclk: ife_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x07>; + do_autogating = <0x01>; + clock-output-names = "ife_pclk"; + }; + + dce_pclk: dce_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&osc_in>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "dce_pclk"; + }; + + ipe_pclk: ipe_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x02>; + do_autogating = <0x01>; + clock-output-names = "ipe_pclk"; + }; + + ime_pclk: ime_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x03>; + do_autogating = <0x01>; + clock-output-names = "ime_pclk"; + }; + + pre_bnr_clk_en: pre_bnr_clk_en { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x1e>; + do_autogating = <0x01>; + clock-output-names = "pre_bnr_clk_en"; + }; + + ife_2dnr_clk_en: ife_2dnr_clk_en { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x1e>; + do_autogating = <0x01>; + clock-output-names = "ife_2dnr_clk_en"; + }; + + ife_wdr_clk_en: ife_wdr_clk_en { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x1f>; + do_autogating = <0x01>; + clock-output-names = "ife_wdr_clk_en"; + }; + + ime_nr_pclk: ime_nr_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x04>; + do_autogating = <0x01>; + clock-output-names = "ime_nr_pclk"; + }; + + ime_lca_pclk: ime_lca_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x05>; + do_autogating = <0x01>; + clock-output-names = "ime_lca_pclk"; + }; + + ime_h264_pclk: ime_h264_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x06>; + do_autogating = <0x01>; + clock-output-names = "ime_h264_pclk"; + }; + + clk_sif: clk_sif { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix96m>; + current_rate = <0x5b8d800>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x09>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x09>; + do_reset = <0x00>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x1b>; + do_autogating = <0x01>; + clock-output-names = "f0240000.sif"; + max_rate = <0x5b8d800>; + phandle = <0x38>; + }; + + sif_pclk: sif_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe0>; + gate_bit_idx = <0x1c>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x1b>; + do_autogating = <0x01>; + clock-output-names = "sif_pclk"; + }; + + clk_adc: clk_adc { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix16m>, <&osc_rtc>; + current_rate = <0xf42400>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x10>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x15>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f01d0000.adc"; + max_rate = <0xf42400>; + phandle = <0x17>; + }; + + adc_pclk: adc_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x0f>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x0f>; + do_autogating = <0x00>; + clock-output-names = "adc_pclk"; + }; + + clk_thmal: clk_thmal { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&osc_in>; + current_rate = <0xb71b00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x0d>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x0d>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0260000.thmal"; + max_rate = <0xb71b00>; + phandle = <0x37>; + }; + + thmal_pclk: thmal_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe0>; + gate_bit_idx = <0x18>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x1f>; + do_autogating = <0x01>; + clock-output-names = "thmal_pclk"; + }; + + wdt_pclk: wdt_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x00>; + clock-output-names = "wdt_pclk"; + }; + + gpio_pclk: gpio_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x19>; + do_reset = <0x00>; + autogating_reg_offset = <0xc8>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "gpio_pclk"; + }; + + prspi_pclk: prspi_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x1c>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x1c>; + do_autogating = <0x00>; + clock-output-names = "prspi_pclk"; + }; + + prwg_pclk: prwg_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x0c>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x0c>; + do_autogating = <0x00>; + clock-output-names = "prwg_pclk"; + }; + + clk_spi0: clk_spi0 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix96m>; + current_rate = <0xb71b00>; + div_reg_offset = <0x44>; + div_bit_idx = <0x00>; + div_bit_width = <0x0b>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x06>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x06>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x18>; + do_autogating = <0x01>; + clock-output-names = "f0230000.spi"; + max_rate = <0x2dc6c00>; + phandle = <0x46>; + }; + + clk_spi1: clk_spi1 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix96m>; + current_rate = <0xb71b00>; + div_reg_offset = <0x44>; + div_bit_idx = <0x10>; + div_bit_width = <0x0b>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x07>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x07>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x19>; + do_autogating = <0x01>; + clock-output-names = "f0320000.spi"; + max_rate = <0x2dc6c00>; + phandle = <0x47>; + }; + + clk_spi2: clk_spi2 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix96m>; + current_rate = <0xb71b00>; + div_reg_offset = <0x48>; + div_bit_idx = <0x00>; + div_bit_width = <0x0b>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x08>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x08>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x1a>; + do_autogating = <0x01>; + clock-output-names = "f0340000.spi"; + max_rate = <0x2dc6c00>; + phandle = <0x48>; + }; + + spi0_pclk: spi0_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe0>; + gate_bit_idx = <0x1d>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x18>; + do_autogating = <0x01>; + clock-output-names = "spi0_pclk"; + }; + + spi1_pclk: spi1_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe0>; + gate_bit_idx = <0x1e>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x19>; + do_autogating = <0x01>; + clock-output-names = "spi1_pclk"; + }; + + spi2_pclk: spi2_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe0>; + gate_bit_idx = <0x1f>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x1a>; + do_autogating = <0x01>; + clock-output-names = "spi2_pclk"; + }; + + clk_sdp: clk_sdp { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix96m>; + current_rate = <0x5b8d800>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x10>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x14>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0390000.sdp"; + max_rate = <0x5b8d800>; + phandle = <0x49>; + }; + + sdp_pclk: sdp_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe0>; + gate_bit_idx = <0x1b>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc8>; + autogating_bit_idx = <0x07>; + do_autogating = <0x01>; + clock-output-names = "sdp_pclk"; + }; + + clk_tse: clk_tse { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix240m>, <&fix320m>, <&reserved>, <&reserved>; + current_rate = <0x1312d000>; + parent_idx = <0x01>; + mux_reg_offset = <0x24>; + mux_bit_idx = <0x04>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x0d>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x0d>; + do_reset = <0x00>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x19>; + do_autogating = <0x01>; + clock-output-names = "f0650000.tse"; + max_rate = <0x1312d000>; + phandle = <0x4a>; + }; + + tse_pclk: tse_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe4>; + gate_bit_idx = <0x0c>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x19>; + do_autogating = <0x01>; + clock-output-names = "tse_pclk"; + }; + + nue_pclk: nue_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe4>; + gate_bit_idx = <0x15>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x01>; + clock-output-names = "nue_pclk"; + }; + + nue2_pclk: nue2_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe4>; + gate_bit_idx = <0x16>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x0c>; + do_autogating = <0x01>; + clock-output-names = "nue2_pclk"; + }; + + cnn_pclk: cnn_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe4>; + gate_bit_idx = <0x19>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x01>; + do_autogating = <0x01>; + clock-output-names = "cnn_pclk"; + }; + + ise_pclk: ise_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x08>; + do_autogating = <0x01>; + clock-output-names = "ise_pclk"; + }; + + vpe_pclk: vpe_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x13>; + do_autogating = <0x01>; + clock-output-names = "vpe_pclk"; + }; + + tge_pclk: tge_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe4>; + gate_bit_idx = <0x12>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x14>; + do_autogating = <0x00>; + clock-output-names = "tge_pclk"; + phandle = <0x2c>; + }; + + sie1_pclk: sie1_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe4>; + gate_bit_idx = <0x0f>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "sie1_pclk"; + phandle = <0x1d>; + }; + + sie2_pclk: sie2_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe4>; + gate_bit_idx = <0x10>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x09>; + do_autogating = <0x00>; + clock-output-names = "sie2_pclk"; + phandle = <0x1e>; + }; + + sie3_pclk: sie3_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe4>; + gate_bit_idx = <0x11>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x0a>; + do_autogating = <0x00>; + clock-output-names = "sie3_pclk"; + phandle = <0x1f>; + }; + + sie4_pclk: sie4_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe8>; + gate_bit_idx = <0x0f>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc8>; + autogating_bit_idx = <0x12>; + do_autogating = <0x00>; + clock-output-names = "sie4_pclk"; + phandle = <0x20>; + }; + + sie3_share_sram: sie3_share_sram { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&sie3_sram_sie3>, <&sie3_sram_sie4>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x0e>; + mux_bit_width = <0x01>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "sie3_share_sram"; + }; + + clk_mmc0: clk_mmc0 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&fix192m>, <&fix320m>, <&pll9>; + current_rate = <0x4c4b4>; + parent_idx = <0x01>; + mux_reg_offset = <0x20>; + mux_bit_idx = <0x04>; + mux_bit_width = <0x02>; + div_reg_offset = <0x3c>; + div_bit_idx = <0x00>; + div_bit_width = <0x0b>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x02>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x02>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x14>; + do_autogating = <0x00>; + clock-output-names = "f0420000.mmc"; + max_rate = <0x5b8d800>; + phandle = <0x08>; + }; + + clk_mmc1: clk_mmc1 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&fix192m>, <&fix320m>, <&pll9>; + current_rate = <0x4c4b4>; + parent_idx = <0x01>; + mux_reg_offset = <0x20>; + mux_bit_idx = <0x08>; + mux_bit_width = <0x02>; + div_reg_offset = <0x3c>; + div_bit_idx = <0x10>; + div_bit_width = <0x0b>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x03>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x03>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x15>; + do_autogating = <0x00>; + clock-output-names = "f0500000.mmc"; + max_rate = <0x5b8d800>; + }; + + clk_mmc2: clk_mmc2 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&fix192m>, <&fix320m>, <&pll9>; + current_rate = <0x4c4b4>; + parent_idx = <0x00>; + mux_reg_offset = <0x24>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x02>; + div_reg_offset = <0x40>; + div_bit_idx = <0x00>; + div_bit_width = <0x0b>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x0e>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x0e>; + do_reset = <0x01>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0f>; + do_autogating = <0x00>; + clock-output-names = "f0510000.mmc"; + max_rate = <0x9896800>; + }; + + clk_timer: clk_timer { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix3m>; + current_rate = <0x2dc6c0>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x12>; + do_enable = <0x01>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x12>; + do_reset = <0x00>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x00>; + do_autogating = <0x01>; + clock-output-names = "f0040000.timer"; + }; + + clk_i2c: clk_i2c { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix48m>; + current_rate = <0x2dc6c00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x04>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x04>; + do_reset = <0x01>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0220000.i2c"; + max_rate = <0x2dc6c00>; + phandle = <0x51>; + }; + + clk_i2c2: clk_i2c2 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix48m>; + current_rate = <0x2dc6c00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x05>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x05>; + do_reset = <0x01>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0350000.i2c2"; + max_rate = <0x2dc6c00>; + phandle = <0x52>; + }; + + clk_i2c3: clk_i2c3 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix48m>; + current_rate = <0x2dc6c00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x0f>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x14>; + do_reset = <0x01>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0360000.i2c3"; + max_rate = <0x2dc6c00>; + phandle = <0x53>; + }; + + i2c_pclk: i2c_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x16>; + do_autogating = <0x01>; + clock-output-names = "i2c_pclk"; + }; + + i2c2_pclk: i2c2_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x17>; + do_autogating = <0x01>; + clock-output-names = "i2c2_pclk"; + }; + + i2c3_pclk: i2c3_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x07>; + do_autogating = <0x01>; + clock-output-names = "i2c3_pclk"; + }; + + pri2c_pclk: pri2c_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "pri2c_pclk"; + }; + + clk_hrtimer1: clk_hrtimer1 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>; + current_rate = <0x7270e00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x0e>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x03>; + do_reset = <0x00>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x01>; + do_autogating = <0x01>; + phandle = <0x3b>; + }; + + clk_hrtimer2: clk_hrtimer2 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>; + current_rate = <0x7270e00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x0f>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x04>; + do_reset = <0x00>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x02>; + do_autogating = <0x01>; + phandle = <0x3c>; + }; + + clk_hrtimer3: clk_hrtimer3 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>; + current_rate = <0x7270e00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x10>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x05>; + do_reset = <0x00>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x03>; + do_autogating = <0x01>; + phandle = <0x3d>; + }; + + clk_hrtimer4: clk_hrtimer4 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>; + current_rate = <0x7270e00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x11>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x06>; + do_reset = <0x00>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x04>; + do_autogating = <0x01>; + phandle = <0x3e>; + }; + + clk_hrtimer5: clk_hrtimer5 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>; + current_rate = <0x7270e00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x12>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x07>; + do_reset = <0x00>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x05>; + do_autogating = <0x01>; + phandle = <0x3f>; + }; + + clk_hrtimer6: clk_hrtimer6 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>; + current_rate = <0x7270e00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x13>; + do_enable = <0x00>; + reset_reg_offset = <0x8c>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0c>; + do_autogating = <0x01>; + phandle = <0x40>; + }; + + clk_hrtimer7: clk_hrtimer7 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>; + current_rate = <0x7270e00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x14>; + do_enable = <0x00>; + reset_reg_offset = <0x8c>; + reset_bit_idx = <0x09>; + do_reset = <0x00>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0d>; + do_autogating = <0x01>; + phandle = <0x41>; + }; + + clk_hrtimer8: clk_hrtimer8 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>; + current_rate = <0x7270e00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x15>; + do_enable = <0x00>; + reset_reg_offset = <0x8c>; + reset_bit_idx = <0x0a>; + do_reset = <0x00>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0e>; + do_autogating = <0x01>; + phandle = <0x42>; + }; + + clk_hrtimer9: clk_hrtimer9 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>, <&prfll>; + current_rate = <0x7270e00>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x0f>; + mux_bit_width = <0x01>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x13>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x17>; + do_reset = <0x00>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x1c>; + do_autogating = <0x01>; + phandle = <0x43>; + }; + + clk_hrtimer10: clk_hrtimer10 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>, <&prfll>; + current_rate = <0x7270e00>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x10>; + mux_bit_width = <0x01>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x14>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x18>; + do_reset = <0x00>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x1d>; + do_autogating = <0x01>; + }; + + hrtimer1_pclk: hrtimer1_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe0>; + gate_bit_idx = <0x01>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x0c>; + do_autogating = <0x00>; + clock-output-names = "hrtimer1_pclk"; + }; + + hrtimer2_pclk: hrtimer2_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe0>; + gate_bit_idx = <0x02>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x0d>; + do_autogating = <0x00>; + clock-output-names = "hrtimer2_pclk"; + }; + + hrtimer3_pclk: hrtimer3_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe0>; + gate_bit_idx = <0x03>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x0e>; + do_autogating = <0x00>; + clock-output-names = "hrtimer3_pclk"; + }; + + hrtimer4_pclk: hrtimer4_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe0>; + gate_bit_idx = <0x04>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x11>; + do_autogating = <0x00>; + clock-output-names = "hrtimer4_pclk"; + }; + + hrtimer5_pclk: hrtimer5_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe0>; + gate_bit_idx = <0x05>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x12>; + do_autogating = <0x00>; + clock-output-names = "hrtimer5_pclk"; + }; + + hrtimer6_pclk: hrtimer6_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe8>; + gate_bit_idx = <0x09>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc8>; + autogating_bit_idx = <0x0f>; + do_autogating = <0x00>; + clock-output-names = "hrtimer6_pclk"; + }; + + hrtimer7_pclk: hrtimer7_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe8>; + gate_bit_idx = <0x0a>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc8>; + autogating_bit_idx = <0x10>; + do_autogating = <0x00>; + clock-output-names = "hrtimer7_pclk"; + }; + + hrtimer8_pclk: hrtimer8_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe8>; + gate_bit_idx = <0x0b>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc8>; + autogating_bit_idx = <0x11>; + do_autogating = <0x00>; + clock-output-names = "hrtimer8_pclk"; + }; + + hrtimer9_pclk: hrtimer9_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe8>; + gate_bit_idx = <0x0c>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x05>; + do_autogating = <0x00>; + clock-output-names = "hrtimer9_pclk"; + }; + + csi_ck0d4: csi_ck0d4 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&csi_hsclk>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x1d>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "csi_ck0d4"; + }; + + csi_ck1d4: csi_ck1d4 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&csi_hsclk>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x1e>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "csi_ck1d4"; + }; + + csi2_ck1d4: csi2_ck1d4 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&osc_in>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x1f>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "csi2_ck1d4"; + }; + + clk_pre: clk_pre { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix240m>, <&fix320m>, <&pll11>, <&pll12>, <&pll13>, <&fix480m>, <&fix96m>, <&reserved>; + current_rate = <0x17d78400>; + parent_idx = <0x03>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x03>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x12>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x0c>; + do_reset = <0x01>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x1d>; + do_autogating = <0x01>; + clock-output-names = "f0c71000.pre"; + max_rate = <0x17d78400>; + }; + + clk_dne: clk_dne { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix240m>, <&fix320m>, <&pll11>, <&pll12>, <&pll13>, <&fix480m>, <&fix96m>, <&reserved>; + current_rate = <0x17d78400>; + parent_idx = <0x03>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x14>; + mux_bit_width = <0x03>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x13>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x12>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0ca0000.dne"; + max_rate = <0x17d78400>; + }; + + clk_ife: clk_ife { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix240m>, <&fix320m>, <&pll11>, <&pll12>, <&pll13>, <&fix480m>, <&fix96m>, <&reserved>; + current_rate = <0x17d78400>; + parent_idx = <0x03>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x04>; + mux_bit_width = <0x03>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x0d>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x0d>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x07>; + do_autogating = <0x01>; + clock-output-names = "f0c70000.ife"; + max_rate = <0x17d78400>; + phandle = <0x30>; + }; + + clk_ipe: clk_ipe { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix240m>, <&fix320m>, <&pll11>, <&pll12>, <&pll13>, <&fix480m>, <&fix96m>, <&reserved>; + current_rate = <0x17d78400>; + parent_idx = <0x03>; + mux_reg_offset = <0x14>; + mux_bit_idx = <0x04>; + mux_bit_width = <0x03>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x07>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x07>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x02>; + do_autogating = <0x01>; + clock-output-names = "f0c30000.ipe"; + max_rate = <0x17d78400>; + phandle = <0x2f>; + }; + + clk_ime: clk_ime { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix240m>, <&fix320m>, <&pll11>, <&pll12>, <&pll13>, <&fix480m>, <&fix96m>, <&reserved>; + current_rate = <0x17d78400>; + parent_idx = <0x03>; + mux_reg_offset = <0x14>; + mux_bit_idx = <0x0c>; + mux_bit_width = <0x03>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x09>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x09>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x03>; + do_autogating = <0x01>; + clock-output-names = "f0c40000.ime"; + max_rate = <0x17d78400>; + phandle = <0x2d>; + }; + + clk_ise: clk_ise { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&fix240m>, <&fix320m>; + current_rate = <0x1c9c3800>; + parent_idx = <0x00>; + mux_reg_offset = <0x14>; + mux_bit_idx = <0x18>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x0b>; + do_enable = <0x01>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x0b>; + do_reset = <0x01>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x08>; + do_autogating = <0x01>; + clock-output-names = "f0c90000.ise"; + max_rate = <0x1c9c3800>; + phandle = <0x2e>; + }; + + remote_pclk: remote_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x1e>; + do_autogating = <0x01>; + clock-output-names = "remote_pclk"; + }; + + remote_clk: remote_clk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix32768>, <&fix32k>, <&reserved>, <&fix3m>; + current_rate = <0x7d00>; + parent_idx = <0x01>; + mux_reg_offset = <0x24>; + mux_bit_idx = <0x15>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x0c>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x0c>; + do_reset = <0x01>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "remote_clk"; + max_rate = <0x2dc6c0>; + phandle = <0x4b>; + }; + + clk_wdt: clk_wdt { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&osc_in>, <&prfll>; + parent_idx = <0x00>; + current_rate = <0xb71b00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x18>; + mux_bit_width = <0x01>; + div_reg_offset = <0x64>; + div_bit_idx = <0x14>; + div_bit_width = <0x02>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x13>; + do_enable = <0x01>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0050000.wdt"; + phandle = <0x0a>; + }; + + clk_cfe: clk_cfe { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&osc_in>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x14>; + do_enable = <0x01>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x15>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "cfe_clk"; + phandle = <0x4e>; + }; + + clk_uvcp: clk_uvcp { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix240m>, <&fix320m>, <&fix120m>; + current_rate = <0xe4e1c00>; + parent_idx = <0x00>; + mux_reg_offset = <0x1c>; + mux_bit_idx = <0x0e>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x15>; + do_enable = <0x01>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x15>; + do_reset = <0x01>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x1e>; + do_autogating = <0x00>; + clock-output-names = "f0690000.uvcp"; + max_rate = <0x1312d000>; + phandle = <0x4d>; + }; + + clk_usb20: clk_usb20 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix12m>; + current_rate = <0x1c9c380>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x13>; + do_reset = <0x01>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "u2ctrl"; + phandle = <0x45>; + }; + + clk_u2phy: clk_u2phy { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix12m>; + current_rate = <0xb71b00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x13>; + do_reset = <0x01>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "u2phy"; + }; + + clk_rtc: clk_rtc { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&osc_rtc>; + current_rate = <0x8000>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x10>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0060000.rtc"; + max_rate = <0x8000>; + }; + + clk_drtc: clk_drtc { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&osc_in>, <&osc_rtc>; + current_rate = <0xb71b00>; + parent_idx = <0x00>; + mux_reg_offset = <0x24>; + mux_bit_idx = <0x14>; + mux_bit_width = <0x01>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x16>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x16>; + do_reset = <0x01>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f00b0000.drtc"; + max_rate = <0xb71b00>; + phandle = <0x18>; + }; + + drtc_pclk: drtc_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x02>; + do_autogating = <0x01>; + clock-output-names = "drtc_pclk"; + }; + + clk_grph: clk_grph { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix240m>, <&fix320m>, <&fix480m>; + current_rate = <0x1c9c3800>; + parent_idx = <0x02>; + mux_reg_offset = <0x1c>; + mux_bit_idx = <0x08>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x1b>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x1b>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x08>; + do_autogating = <0x01>; + clock-output-names = "f0c80000.grph"; + max_rate = <0x1c9c3800>; + phandle = <0x39>; + }; + + clk_grph2: clk_grph2 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix240m>, <&fix320m>, <&fix480m>; + current_rate = <0x1c9c3800>; + parent_idx = <0x02>; + mux_reg_offset = <0x1c>; + mux_bit_idx = <0x0c>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x1c>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x1c>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x09>; + do_autogating = <0x01>; + clock-output-names = "f0d10000.grph"; + max_rate = <0x1c9c3800>; + phandle = <0x3a>; + }; + + grph_pclk: grph_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe4>; + gate_bit_idx = <0x1b>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x08>; + do_autogating = <0x00>; + clock-output-names = "grph_pclk"; + }; + + grph2_pclk: grph2_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0xe4>; + gate_bit_idx = <0x1c>; + do_enable = <0x01>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x09>; + do_autogating = <0x00>; + clock-output-names = "grph2_pclk"; + }; + + clk_vpe: clk_vpe { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix240m>, <&fix320m>, <&pll11>, <&pll12>, <&pll13>, <&fix480m>, <&reserved>, <&pll6>; + current_rate = <0x17d78400>; + parent_idx = <0x03>; + mux_reg_offset = <0x24>; + mux_bit_idx = <0x0c>; + mux_bit_width = <0x03>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x11>; + do_enable = <0x01>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x0e>; + do_reset = <0x01>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x1a>; + do_autogating = <0x01>; + clock-output-names = "f0cd0000.vpe"; + max_rate = <0x17d78400>; + phandle = <0x31>; + }; + + pwm_pclk: pwm_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "pwm_pclk"; + }; + + clk_pwm0: clk_pwm0 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>, <&prfll>; + current_rate = <0x1c9c380>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x04>; + mux_bit_width = <0x01>; + div_reg_offset = <0x50>; + div_bit_idx = <0x00>; + div_bit_width = <0x0e>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.pwm0"; + max_rate = <0x1c9c380>; + phandle = <0x0b>; + }; + + clk_pwm1: clk_pwm1 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>, <&prfll>; + current_rate = <0x1c9c380>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x04>; + mux_bit_width = <0x01>; + div_reg_offset = <0x50>; + div_bit_idx = <0x00>; + div_bit_width = <0x0e>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x01>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_shared = <&clk_pwm0>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.pwm1"; + max_rate = <0x1c9c380>; + phandle = <0x0c>; + }; + + clk_pwm2: clk_pwm2 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>, <&prfll>; + current_rate = <0x1c9c380>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x04>; + mux_bit_width = <0x01>; + div_reg_offset = <0x50>; + div_bit_idx = <0x00>; + div_bit_width = <0x0e>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x02>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_shared = <&clk_pwm0>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.pwm2"; + max_rate = <0x1c9c380>; + phandle = <0x0d>; + }; + + clk_pwm3: clk_pwm3 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>, <&prfll>; + current_rate = <0x1c9c380>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x04>; + mux_bit_width = <0x01>; + div_reg_offset = <0x50>; + div_bit_idx = <0x00>; + div_bit_width = <0x0e>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x03>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_shared = <&clk_pwm0>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.pwm3"; + max_rate = <0x1c9c380>; + phandle = <0x0e>; + }; + + clk_pwm4: clk_pwm4 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>, <&prfll>; + current_rate = <0x1c9c380>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x05>; + mux_bit_width = <0x01>; + div_reg_offset = <0x50>; + div_bit_idx = <0x10>; + div_bit_width = <0x0e>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x04>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_shared = <&clk_pwm0>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.pwm4"; + max_rate = <0x1c9c380>; + phandle = <0x0f>; + }; + + clk_pwm5: clk_pwm5 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>, <&prfll>; + current_rate = <0x1c9c380>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x05>; + mux_bit_width = <0x01>; + div_reg_offset = <0x50>; + div_bit_idx = <0x10>; + div_bit_width = <0x0e>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x05>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_shared = <&clk_pwm0>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.pwm5"; + max_rate = <0x1c9c380>; + phandle = <0x10>; + }; + + clk_pwm6: clk_pwm6 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>, <&prfll>; + current_rate = <0x1c9c380>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x05>; + mux_bit_width = <0x01>; + div_reg_offset = <0x50>; + div_bit_idx = <0x10>; + div_bit_width = <0x0e>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x06>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_shared = <&clk_pwm0>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.pwm6"; + max_rate = <0x1c9c380>; + phandle = <0x11>; + }; + + clk_pwm7: clk_pwm7 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>, <&prfll>; + current_rate = <0x1c9c380>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x05>; + mux_bit_width = <0x01>; + div_reg_offset = <0x50>; + div_bit_idx = <0x10>; + div_bit_width = <0x0e>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x07>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_shared = <&clk_pwm0>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.pwm7"; + max_rate = <0x1c9c380>; + phandle = <0x12>; + }; + + clk_pwm8: clk_pwm8 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>, <&prfll>; + current_rate = <0x1c9c380>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x06>; + mux_bit_width = <0x01>; + div_reg_offset = <0x54>; + div_bit_idx = <0x00>; + div_bit_width = <0x0e>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x08>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_shared = <&clk_pwm0>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.pwm8"; + max_rate = <0x1c9c380>; + phandle = <0x13>; + }; + + clk_pwm9: clk_pwm9 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>, <&prfll>; + current_rate = <0x1c9c380>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x07>; + mux_bit_width = <0x01>; + div_reg_offset = <0x54>; + div_bit_idx = <0x10>; + div_bit_width = <0x0e>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x09>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_shared = <&clk_pwm0>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.pwm9"; + max_rate = <0x1c9c380>; + phandle = <0x14>; + }; + + clk_pwm10: clk_pwm10 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>, <&prfll>; + current_rate = <0x1c9c380>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x08>; + mux_bit_width = <0x01>; + div_reg_offset = <0x58>; + div_bit_idx = <0x00>; + div_bit_width = <0x0e>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x0a>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_shared = <&clk_pwm0>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.pwm10"; + max_rate = <0x1c9c380>; + phandle = <0x15>; + }; + + clk_pwm11: clk_pwm11 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix120m>, <&prfll>; + current_rate = <0x1c9c380>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x09>; + mux_bit_width = <0x01>; + div_reg_offset = <0x58>; + div_bit_idx = <0x10>; + div_bit_width = <0x0e>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x0b>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_shared = <&clk_pwm0>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.pwm11"; + max_rate = <0x1c9c380>; + phandle = <0x16>; + }; + + clk_ccnt0: clk_ccnt0 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix3m>; + current_rate = <0x2dc6c0>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x08>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_shared = <&clk_pwm0>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.ccnt0"; + max_rate = <0x2dc6c0>; + }; + + clk_ccnt1: clk_ccnt1 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix3m>; + current_rate = <0x2dc6c0>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x09>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_shared = <&clk_pwm0>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.ccnt1"; + max_rate = <0x2dc6c0>; + }; + + clk_ccnt2: clk_ccnt2 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&fix3m>; + current_rate = <0x2dc6c0>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x0a>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x08>; + do_reset = <0x00>; + autogating_shared = <&clk_pwm0>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x0b>; + do_autogating = <0x01>; + clock-output-names = "f0210000.ccnt2"; + max_rate = <0x2dc6c0>; + }; + + pre_shared_sram: pre_shared_sram { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&pre_sram_cpu>, <&pre_sram_pre>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x1c>; + mux_bit_width = <0x01>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "pre_shared_sram"; + }; + + p_f_shared_sram: p_f_shared_sram { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&preife_sram_ife>, <&preife_sram_pre>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x1d>; + mux_bit_width = <0x01>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "p_f_shared_sram"; + }; + + dne_shared_sram: dne_shared_sram { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&dne_sram_cpu>, <&dne_sram_ime>, <&dne_sram_dne>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "dne_shared_sram"; + }; + + ife_shared_sram: ife_shared_sram { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&ife_sram_cpu>, <&ife_sram_ife>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x1a>; + mux_bit_width = <0x01>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "ife_shared_sram"; + }; + + ipe_shared_sram: ipe_shared_sram { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&ipe_sram_cpu>, <&ipe_sram_ipe>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x02>; + mux_bit_width = <0x01>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "ipe_shared_sram"; + }; + + ime_shared_sram: ime_shared_sram { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&ime_sram_cpu>, <&ime_sram_ime>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x03>; + mux_bit_width = <0x01>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "ime_shared_sram"; + }; + + clk_nand: clk_nand { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&clk_nand_fac>; + current_rate = <0x2dc6c00>; + div_reg_offset = <0x40>; + div_bit_idx = <0x0c>; + div_bit_width = <0x06>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x13>; + do_autogating = <0x01>; + clock-output-names = "f0400000.nand"; + max_rate = <0x9896800>; + phandle = <0x09>; + }; + + nand_pclk: nand_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x13>; + do_autogating = <0x01>; + clock-output-names = "nand_pclk"; + }; + + clk_gzip: clk_gzip { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix240m>, <&fix320m>, <&fix480m>, <&reserved>; + current_rate = <0x1c9c3800>; + parent_idx = <0x02>; + mux_reg_offset = <0x28>; + mux_bit_idx = <0x0c>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x0b>; + do_enable = <0x00>; + reset_reg_offset = <0x8c>; + reset_bit_idx = <0x07>; + do_reset = <0x00>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x1f>; + do_autogating = <0x01>; + clock-output-names = "clk_gzip"; + max_rate = <0x1c9c3800>; + phandle = <0x4c>; + }; + + clk_gli_mux: clk_gli_mux { + #clock-cells = <0x00>; + clocks = <&prfll>; + compatible = "nvt,nvt-clk-gate"; + gate_reg_offset = <0x120>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + clock-output-names = "clk_gli_mux"; + }; + + fll_aud_m: fll_aud_m { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&prfll>; + parent_idx = <0x00>; + current_rate = <0xbb8000>; + div_reg_offset = <0x130>; + div_bit_idx = <0x00>; + div_bit_width = <0x11>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + clock-output-names = "fll_aud_m"; + phandle = <0x7e>; + }; + + clk_eacdac: clk_eacdac { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&pll7>, <&fll_aud_m>; + current_rate = <0xbb8000>; + parent_idx = <0x00>; + mux_reg_offset = <0x28>; + mux_bit_idx = <0x18>; + mux_bit_width = <0x01>; + div_reg_offset = <0x38>; + div_bit_idx = <0x18>; + div_bit_width = <0x08>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x1f>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x1e>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "clk_eacdac"; + max_rate = <0xbb8000>; + phandle = <0x7f>; + }; + + clk_eacadc: clk_eacadc { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&clk_eacdac>; + current_rate = <0xbb8000>; + parent_idx = <0x00>; + mux_reg_offset = <0x00>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x1e>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "clk_eacadc"; + max_rate = <0xbb8000>; + }; + + clk_eac: clk_eac { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&clk_eacdac>; + current_rate = <0xbb8000>; + parent_idx = <0x00>; + mux_reg_offset = <0x00>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x14>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x1e>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "clk_eac"; + max_rate = <0xbb8000>; + }; + + clk_cypt: clk_crpt { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix320m>, <&fix240m>, <&pll6>; + current_rate = <0x1312d000>; + parent_idx = <0x00>; + mux_reg_offset = <0x1c>; + mux_bit_idx = <0x14>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x17>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x17>; + do_reset = <0x01>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0620000.cypt"; + max_rate = <0x1312d000>; + }; + + clk_hash: clk_hash { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix320m>, <&fix240m>, <&pll6>; + current_rate = <0x1312d000>; + parent_idx = <0x00>; + mux_reg_offset = <0x24>; + mux_bit_idx = <0x10>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x1b>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x1b>; + do_reset = <0x01>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0670000.hash"; + max_rate = <0x1312d000>; + }; + + clk_rsa: clk_rsa { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix320m>, <&fix240m>, <&pll6>; + current_rate = <0x1312d000>; + parent_idx = <0x00>; + mux_reg_offset = <0x1c>; + mux_bit_idx = <0x16>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x1a>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x1a>; + do_reset = <0x01>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f06a0000.rsa"; + max_rate = <0x1312d000>; + }; + + crypto_pclk: crypto_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x16>; + do_autogating = <0x00>; + clock-output-names = "crypto_pclk"; + }; + + hash_pclk: hash_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x1a>; + do_autogating = <0x00>; + clock-output-names = "hash_pclk"; + }; + + rsa_pclk: rsa_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x17>; + do_autogating = <0x00>; + clock-output-names = "rsa_pclk"; + }; + + ecdsa_pclk: ecdsa_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x15>; + do_autogating = <0x00>; + clock-output-names = "ecdsa_pclk"; + }; + + jpeg1_clk: jpeg1_clk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix120m>, <&fix320m>, <&fix480m>; + current_rate = <0x1c9c3800>; + parent_idx = <0x02>; + mux_reg_offset = <0x1c>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x1a>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x1a>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x0f>; + do_autogating = <0x00>; + clock-output-names = "jpeg1_clk"; + max_rate = <0x1c9c3800>; + phandle = <0x44>; + }; + + dai_pclk: dai_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x11>; + do_autogating = <0x01>; + clock-output-names = "dai_pclk"; + }; + + clk_dai: clk_dai { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&clk_eacdac>; + current_rate = <0xbb8000>; + parent_idx = <0x00>; + mux_reg_offset = <0x00>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x00>; + div_reg_offset = <0x38>; + div_bit_idx = <0x10>; + div_bit_width = <0x08>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x1d>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x1d>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "clk_dai"; + max_rate = <0xea6000>; + phandle = <0x80>; + }; + + dai_mclk: dai_mclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&clk_dai>, <&pll12>; + current_rate = <0xbb8000>; + parent_idx = <0x01>; + mux_reg_offset = <0x20>; + mux_bit_idx = <0x16>; + mux_bit_width = <0x01>; + div_reg_offset = <0x60>; + div_bit_idx = <0x18>; + div_bit_width = <0x08>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "dai_mclk"; + max_rate = <0x1770000>; + }; + + prdai_pclk: prdai_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x1d>; + do_autogating = <0x01>; + clock-output-names = "prdai_pclk"; + }; + + clk_rng: clk_rng { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix160m>, <&fix240m>; + current_rate = <0x9896800>; + parent_idx = <0x00>; + mux_reg_offset = <0x00>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x00>; + div_reg_offset = <0x34>; + div_bit_idx = <0x18>; + div_bit_width = <0x08>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x19>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x19>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0680000.rng"; + }; + + clk_rngro: clk_rngro { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&osc_in>, <&pll9>; + current_rate = <0x16e3600>; + parent_idx = <0x00>; + mux_reg_offset = <0x00>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x00>; + div_reg_offset = <0x60>; + div_bit_idx = <0x00>; + div_bit_width = <0x08>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x15>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0680000.rngro"; + }; + + sn_mclk1: sn_mclk1 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&pll5>, <&prfll>, <&pll12>; + current_rate = <0x7270e00>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x08>; + mux_bit_width = <0x02>; + div_reg_offset = <0x30>; + div_bit_idx = <0x00>; + div_bit_width = <0x08>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x02>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "sn_mclk1"; + max_rate = <0x8f0d180>; + phandle = <0x26>; + }; + + sn_mclk2: sn_mclk2 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&pll5>, <&reserved>, <&pll12>; + current_rate = <0x7270e00>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x0a>; + mux_bit_width = <0x02>; + div_reg_offset = <0x30>; + div_bit_idx = <0x08>; + div_bit_width = <0x08>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x03>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "sn_mclk2"; + max_rate = <0x8f0d180>; + phandle = <0x27>; + }; + + sn_mclk3: sn_mclk3 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&pll5>, <&reserved>, <&pll12>; + current_rate = <0x7270e00>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x0c>; + mux_bit_width = <0x02>; + div_reg_offset = <0x34>; + div_bit_idx = <0x10>; + div_bit_width = <0x08>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x0a>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "sn_mclk3"; + max_rate = <0x8f0d180>; + phandle = <0x28>; + }; + + sn_mclk1out: sn_mclk1out { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&clkout_normal>, <&clkout_invert>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x13>; + mux_bit_width = <0x01>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "sn_mclk1out"; + }; + + sn_mclk2out: sn_mclk2out { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&clkout_normal>, <&clkout_invert>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x18>; + mux_bit_width = <0x01>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "sn_mclk2out"; + }; + + sn_mclk3out: sn_mclk3out { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&clkout_normal>, <&clkout_invert>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x19>; + mux_bit_width = <0x01>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "sn_mclk3out"; + }; + + clk_tge: clk_tge { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&tge_clksrc>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x00>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x06>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x06>; + do_reset = <0x01>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0cc0000.tge"; + phandle = <0x29>; + }; + + clk_tgeflashA: clk_tgeflashA { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&sn_mclk1>, <&sn_mclk2>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x14>; + mux_bit_idx = <0x10>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "clk_tgeflashA"; + phandle = <0x2a>; + }; + + clk_tgemshA: clk_tgemshA { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&sn_mclk1>, <&sn_mclk2>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x14>; + mux_bit_idx = <0x08>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "clk_tgemshA"; + phandle = <0x2b>; + }; + + clk_csi0: clk_csi0 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix60m>, <&fix120m>, <&fix240m>; + current_rate = <0x3938700>; + parent_idx = <0x00>; + mux_reg_offset = <0x20>; + mux_bit_idx = <0x0c>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x01>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x01>; + do_reset = <0x01>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x03>; + do_autogating = <0x01>; + clock-output-names = "f0280000.csi"; + phandle = <0x35>; + }; + + clk_csi1: clk_csi1 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix60m>, <&fix120m>, <&fix240m>; + current_rate = <0x3938700>; + parent_idx = <0x00>; + mux_reg_offset = <0x20>; + mux_bit_idx = <0x0e>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x02>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x02>; + do_reset = <0x01>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x04>; + do_autogating = <0x01>; + clock-output-names = "f0330000.csi2"; + phandle = <0x36>; + }; + + clk_sie1: clk_sie1 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&reserved>, <&pll5>, <&reserved>, <&pll12>, <&fix320m>, <&fix192m>, <&reserved>; + current_rate = <0x1312d000>; + parent_idx = <0x05>; + mux_reg_offset = <0x1c>; + mux_bit_idx = <0x18>; + mux_bit_width = <0x03>; + div_reg_offset = <0x30>; + div_bit_idx = <0x10>; + div_bit_width = <0x08>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x04>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x04>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x11>; + do_autogating = <0x00>; + clock-output-names = "f0c00000.sie1"; + max_rate = <0x17d78400>; + phandle = <0x19>; + }; + + clk_sie2: clk_sie2 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&reserved>, <&pll5>, <&reserved>, <&pll12>, <&fix320m>, <&fix192m>, <&reserved>; + current_rate = <0x1312d000>; + parent_idx = <0x05>; + mux_reg_offset = <0x1c>; + mux_bit_idx = <0x1c>; + mux_bit_width = <0x03>; + div_reg_offset = <0x30>; + div_bit_idx = <0x18>; + div_bit_width = <0x08>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x05>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x05>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x16>; + do_autogating = <0x00>; + clock-output-names = "f0d20000.sie2"; + max_rate = <0x17d78400>; + phandle = <0x1a>; + }; + + clk_sie3: clk_sie3 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&reserved>, <&pll5>, <&reserved>, <&pll12>, <&fix320m>, <&fix192m>, <&reserved>; + current_rate = <0x1312d000>; + parent_idx = <0x05>; + mux_reg_offset = <0x1c>; + mux_bit_idx = <0x10>; + mux_bit_width = <0x03>; + div_reg_offset = <0x38>; + div_bit_idx = <0x08>; + div_bit_width = <0x08>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x11>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x09>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x17>; + do_autogating = <0x00>; + clock-output-names = "f0d30000.sie3"; + max_rate = <0x17d78400>; + phandle = <0x1b>; + }; + + clk_sie4: clk_sie4 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&reserved>, <&pll5>, <&reserved>, <&pll12>, <&fix320m>, <&fix192m>, <&reserved>; + current_rate = <0x1312d000>; + parent_idx = <0x05>; + mux_reg_offset = <0x1c>; + mux_bit_idx = <0x10>; + mux_bit_width = <0x03>; + div_reg_offset = <0x38>; + div_bit_idx = <0x08>; + div_bit_width = <0x08>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x19>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x0a>; + do_reset = <0x01>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "f0d40000.sie4"; + max_rate = <0x17d78400>; + phandle = <0x1c>; + }; + + sie2_intclk: sie2_intclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&siex_intclk0>, <&siex_intclk1>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x1b>; + mux_bit_width = <0x01>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "sie2_intclk"; + phandle = <0x25>; + }; + + sie1_pxclk: sie1_pxclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&siex_pxclkpad1>, <&reserved>, <&sn_mclk1>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x28>; + mux_bit_idx = <0x1c>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x04>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "sie1_pxclk"; + phandle = <0x21>; + }; + + sie2_pxclk: sie2_pxclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&siex_pxclkpad1>, <&siex_pxclkpad2>, <&sn_mclk1>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x28>; + mux_bit_idx = <0x0e>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x05>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "sie2_pxclk"; + phandle = <0x22>; + }; + + sie3_pxclk: sie3_pxclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&siex_pxclkpad1>, <&siex_pxclkpad2>, <&sn_mclk1>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x28>; + mux_bit_idx = <0x10>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x06>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "sie3_pxclk"; + phandle = <0x23>; + }; + + sie4_pxclk: sie4_pxclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&siex_pxclkpad1>, <&siex_pxclkpad2>, <&sn_mclk1>; + current_rate = <0x00>; + parent_idx = <0x00>; + mux_reg_offset = <0x28>; + mux_bit_idx = <0x12>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x03>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "sie4_pxclk"; + phandle = <0x24>; + }; + + mmc0_pclk: mmc0_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x14>; + do_autogating = <0x00>; + clock-output-names = "mmc0_pclk"; + }; + + mmc1_pclk: mmc1_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x15>; + do_autogating = <0x00>; + clock-output-names = "mmc1_pclk"; + }; + + mmc2_pclk: mmc2_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x0f>; + do_autogating = <0x00>; + clock-output-names = "mmc2_pclk"; + }; + + eac_pclk: eac_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x12>; + do_autogating = <0x00>; + clock-output-names = "eac_pclk"; + }; + + clk_eth0: clk_eth0 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&pll6>; + current_rate = <0x11e1a300>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x74>; + gate_bit_idx = <0x1d>; + do_enable = <0x00>; + reset_reg_offset = <0x84>; + reset_bit_idx = <0x1d>; + do_reset = <0x00>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x1b>; + do_autogating = <0x01>; + clock-output-names = "f02b0000.eth0"; + max_rate = <0x11e1a300>; + }; + + eth0_extphy_clk: eth0_extphy_clk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&pll6>; + current_rate = <0x11e1a300>; + parent_idx = <0x00>; + mux_reg_offset = <0x24>; + mux_bit_idx = <0x1a>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x78>; + gate_bit_idx = <0x18>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "eth0_extphy_clk"; + max_rate = <0x11e1a300>; + }; + + clk_ide_src: clk_ide_src { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&pll6>, <&fix192m>, <&pll9>, <&pll11>; + current_rate = <0x8f0d180>; + parent_idx = <0x03>; + mux_reg_offset = <0x20>; + mux_bit_idx = <0x10>; + mux_bit_width = <0x03>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x01>; + clock-output-names = "ide_clk_src"; + phandle = <0x8b>; + }; + + clk_ide: clk_ide { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&clk_ide_src>; + current_rate = <0x8f0d180>; + parent_idx = <0x00>; + mux_reg_offset = <0x00>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x00>; + div_reg_offset = <0x34>; + div_bit_idx = <0x00>; + div_bit_width = <0x08>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x10>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x10>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x0a>; + do_autogating = <0x01>; + clock-output-names = "f0800000.ide"; + max_rate = <0x8f0d180>; + phandle = <0x34>; + }; + + clk_ideif: clk_ideif { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&clk_ide_src>; + current_rate = <0x8f0d180>; + parent_idx = <0x00>; + mux_reg_offset = <0x00>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x00>; + div_reg_offset = <0x34>; + div_bit_idx = <0x08>; + div_bit_width = <0x08>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x01>; + clock-output-names = "clk_ideif"; + max_rate = <0x8f0d180>; + }; + + clk_dsi: clk_dsi { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix60m>, <&fix80m>, <&fix120m>, <&pll11>; + current_rate = <0x3938700>; + parent_idx = <0x00>; + mux_reg_offset = <0x28>; + mux_bit_idx = <0x08>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x0e>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x0e>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x01>; + do_autogating = <0x01>; + clock-output-names = "f0120000.dsi"; + max_rate = <0x7270e00>; + }; + + clk_dsi_reset: clk_dsi_reset { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix60m>, <&fix80m>, <&fix120m>, <&pll11>; + current_rate = <0x3938700>; + parent_idx = <0x00>; + mux_reg_offset = <0x00>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x0e>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x0e>; + do_reset = <0x01>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "dsi_reset"; + }; + + clk_mi: clk_mi { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix192m>, <&fix320m>; + current_rate = <0x5b8d800>; + parent_idx = <0x00>; + mux_reg_offset = <0x2c>; + mux_bit_idx = <0x0b>; + mux_bit_width = <0x01>; + div_reg_offset = <0x64>; + div_bit_idx = <0x0c>; + div_bit_width = <0x08>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x12>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x11>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x0a>; + do_autogating = <0x01>; + clock-output-names = "f0110000.mi"; + max_rate = <0x5b8d800>; + }; + + venc_clk: venc_clk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix240m>, <&fix320m>, <&pll11>, <&pll12>, <&pll13>, <&fix192m>, <&fix96m>; + current_rate = <0x1312d000>; + parent_idx = <0x01>; + mux_reg_offset = <0x28>; + mux_bit_idx = <0x14>; + mux_bit_width = <0x03>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x18>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x18>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x10>; + do_autogating = <0x01>; + clock-output-names = "venc_clk"; + max_rate = <0x1312d000>; + power_saving = <0x00>; + }; + + venc_pclk: venc_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x10>; + do_autogating = <0x01>; + clock-output-names = "venc_pclk"; + }; + + ive_pclk: ive_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc4>; + autogating_bit_idx = <0x1c>; + do_autogating = <0x01>; + clock-output-names = "ive_pclk"; + }; + + clk_ive: clk_ive { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&fix240m>, <&fix320m>; + current_rate = <0x1c9c3800>; + parent_idx = <0x00>; + mux_reg_offset = <0x14>; + mux_bit_idx = <0x02>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x19>; + do_enable = <0x01>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x0c>; + do_reset = <0x01>; + autogating_reg_offset = <0xb4>; + autogating_bit_idx = <0x1c>; + do_autogating = <0x01>; + clock-output-names = "f0d70000.ive"; + max_rate = <0x1c9c3800>; + phandle = <0x33>; + }; + + mdbc_pclk: mdbc_pclk { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-gate"; + clocks = <&PAUTOGATING>; + current_rate = <0x00>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x00>; + gate_bit_idx = <0x00>; + do_enable = <0x00>; + reset_reg_offset = <0x00>; + reset_bit_idx = <0x00>; + do_reset = <0x00>; + autogating_reg_offset = <0xc0>; + autogating_bit_idx = <0x0d>; + do_autogating = <0x01>; + clock-output-names = "mdbc_pclk"; + }; + + clk_mdbc: clk_mdbc { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix192m>, <&fix240m>, <&fix96m>, <&fix320m>; + current_rate = <0xe4e1c00>; + parent_idx = <0x01>; + mux_reg_offset = <0x14>; + mux_bit_idx = <0x14>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x16>; + do_enable = <0x01>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x10>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x0d>; + do_autogating = <0x01>; + clock-output-names = "f0c10000.mdbc"; + max_rate = <0x1312d000>; + phandle = <0x32>; + }; + + clk_mcu: clk_mcu { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix120m>, <&osc_rtc>, <&osc_in>, <&prfll>; + current_rate = <0x2dc6c00>; + parent_idx = <0x03>; + mux_reg_offset = <0x10>; + mux_bit_idx = <0x1c>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x70>; + gate_bit_idx = <0x08>; + do_enable = <0x00>; + reset_reg_offset = <0x80>; + reset_bit_idx = <0x19>; + do_reset = <0x00>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "clk_mcu"; + max_rate = <0x7270e00>; + }; + + clk_ai0: clk_ai0 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&fix320m>, <&pll12>, <&pll9>; + current_rate = <0x23c34600>; + parent_idx = <0x00>; + mux_reg_offset = <0x14>; + mux_bit_idx = <0x00>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x17>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x11>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x01>; + do_autogating = <0x01>; + clock-output-names = "f0cb0000.ai"; + max_rate = <0x23c34600>; + }; + + clk_ai1: clk_ai1 { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&fix480m>, <&fix320m>, <&pll12>, <&pll9>; + current_rate = <0x1c9c3800>; + parent_idx = <0x00>; + mux_reg_offset = <0x18>; + mux_bit_idx = <0x1e>; + mux_bit_width = <0x02>; + div_reg_offset = <0x00>; + div_bit_idx = <0x00>; + div_bit_width = <0x00>; + gate_reg_offset = <0x7c>; + gate_bit_idx = <0x15>; + do_enable = <0x00>; + reset_reg_offset = <0x88>; + reset_bit_idx = <0x0f>; + do_reset = <0x01>; + autogating_reg_offset = <0xb0>; + autogating_bit_idx = <0x0c>; + do_autogating = <0x01>; + clock-output-names = "f0d50000.ai"; + max_rate = <0x23c34600>; + }; + + clk_apb: clk_apb { + #clock-cells = <0x00>; + compatible = "nvt,nvt-clk-mux"; + clocks = <&prfll>, <&fix60m>, <&fix80m>, <&fix120m>; + current_rate = <0x7270e00>; + parent_idx = <0x03>; + keep_rate = <0x01>; + mux_reg_offset = <0x10>; + mux_bit_idx = <0x08>; + mux_bit_width = <0x02>; + autogating_reg_offset = <0x00>; + autogating_bit_idx = <0x00>; + do_autogating = <0x00>; + clock-output-names = "apb_clk"; + phandle = <0x50>; + }; + }; + + audio_i2s_part { + i2s = <0x00>, <0x01>, <0x02>, <0x01>, <0x10>, <0x1f40>, <0x3e800>, <0x01>, <0x01>, <0x01>; + }; + + audio_mclk_part { + mclk = <0x00>, <0xbb8000>; + }; +}; diff --git a/openipc/nt98532.dts b/openipc/nt98532.dts new file mode 100644 index 000000000000..c0bfce2bc4ca --- /dev/null +++ b/openipc/nt98532.dts @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * NT98532: the NS02501 tree as the SDK's cfg_532_IPC_NOR_SQUASHFS_BD_EVB + * has it, 256 MiB of DDR. + */ +/dts-v1/; + +/include/ "ns02501.dtsi" diff --git a/openipc/nt98532_config b/openipc/nt98532_config new file mode 100644 index 000000000000..afbcaef9418f --- /dev/null +++ b/openipc/nt98532_config @@ -0,0 +1,2 @@ +CONFIG_TARGET_NT98532=y +CONFIG_PRODUCT_SOC="nt98532" diff --git a/openipc/nt98533.dts b/openipc/nt98533.dts new file mode 100644 index 000000000000..0058edd04918 --- /dev/null +++ b/openipc/nt98533.dts @@ -0,0 +1,157 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * NT98533: the NS02501 tree with what the SDK's 533QD boards + * (cfg_533_IPC_NAND_UBIFS_QD_EVB, its memory split the NT98532 NOR + * board's) change past their storage: the engines the NT98533 has more + * of (DNE, PRE, MI; IME, IPE and IFE's register ranges), its sensor list, + * the I2C auto reset, the EIS and gyro modules, SDIO3's clock source. + */ +/dts-v1/; + +/include/ "ns02501.dtsi" + +/ { + top@f0010000 { + nvt_sen_os02k10@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_os04a10@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_os04c10@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_os04d10@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_os04e10@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_os05a10@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_os05a10@1 { + pinctrl = <0x0a 0x10 0x0e 0x01 0x03 0x01>; + }; + + nvt_sen_ov64b_pdaf@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_sc450ai@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_sc485sl@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_sc835hai@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_sc850sl@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_nt99436@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_gc4103@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_imx123@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_imx290@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_imx415@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + + nvt_sen_imx678@0 { + pinctrl = <0x0e 0x01 0x03 0x01 0x0a 0x01>; + }; + }; + + ime@f0c40000 { + reg = <0xf0c40000 0xebc>; + }; + + ipe@f0c30000 { + reg = <0xf0c30000 0xaa0>; + }; + + ife@f0c70000 { + reg = <0xf0c70000 0xffc>; + }; + + dne@f0ca0000 { + compatible = "nvt,kdrv_dne"; + reg = <0xf0ca0000 0xffc>; + clocks = <&clk_dne>; + clock-names = "f0ca0000.dne"; + interrupts = <0x00 0x4f 0x04>; + }; + + pre@f0c71000 { + compatible = "nvt,kdrv_pre"; + reg = <0xf0c71000 0xffc>; + clocks = <&clk_pre>; + clock-names = "f0c71000.pre"; + interrupts = <0x00 0x4e 0x04>; + }; + + mi@f0110000 { + compatible = "nvt,nvt_mi"; + clocks = <&clk_mi>; + reg = <0xf0110000 0x1000>; + interrupts = <0x00 0x2f 0x04>; + }; + + nvt_eis { + compatible = "nvt,nvt_eis"; + }; + + nvt_gyro_common { + compatible = "nvt,nvt_gyro_comm"; + }; + + nvt_hr_hwtimer@f01e0000 { + stbc_en = <0x01>; + }; + + i2c@f0220000 { + auto_rst = <0x01>; + }; + + i2c2@f0350000 { + auto_rst = <0x01>; + }; + + i2c3@f0360000 { + auto_rst = <0x01>; + }; + + nvt-clk { + clk_mmc2 { + parent_idx = <0x02>; + }; + }; + + nvt_info { + BIN_NAME = "FW98533A"; + BIN_NAME_T = "FW98533T"; + }; +}; diff --git a/openipc/nt98533_config b/openipc/nt98533_config new file mode 100644 index 000000000000..3d09f11b0bf5 --- /dev/null +++ b/openipc/nt98533_config @@ -0,0 +1,2 @@ +CONFIG_TARGET_NT98533=y +CONFIG_PRODUCT_SOC="nt98533" From aa30399f3e85801f3e5b469c4b680d9faf50806e Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Tue, 3 Nov 2026 23:12:25 +0000 Subject: [PATCH 32/38] docs: the NS02501 die CLAUDE.md: what NT98532 / NT98533 support is, where it differs from NA51089 (the loader's own LZMA, the packed tree, SHMINFO, UART clock, reset, flash, Ethernet, SD), what is not done, and what was verified under qemu-hisilicon; NS02501 is no longer among the unsupported dies. --- CLAUDE.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 87d39a9740fe..2a1b3b294463 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -33,8 +33,9 @@ Adding or dropping a SoC needs both branches: The NVR dies NA51103 (NT98332) and NA51090 (NT98633) are supported as AArch64 targets behind the board's own loader and BL31; see "The NVR -dies" below. The other dies of the SDKs (NA51055, NA51068, NA51102, the -NS02xxx parts) are not supported. +dies" below. NS02501 (NT98532, NT98533) is NA51089's layout with its +own loader; see "NS02501" below. The other dies of the SDKs (NA51068, +NA51102, the other NS02xxx parts) are not supported. ## Relationship to mainline @@ -228,6 +229,59 @@ it. host's command and FIFO timing. - **On silicon:** nothing yet. +## NS02501: NT98532, NT98533 + +Two Cortex-A32s run in AArch32 (a GIC-400, the generic timer), chip ID +`0x5521`, NA51089's blocks at NA51089's addresses. `NVT_NS02501` +(`TARGET_NT98532`, `TARGET_NT98533`) builds the NA51089 board code with +the die's differences compiled in; the vendor sources are the NS02501 +SDK's U-Boot 2021.10 (`nvt_ns02501_a32`, `nvt-ns02501`, +`eth_ns02501.c`, `nvt_ivot_mmc_a64.c` + `_ns02501.h`, `nvt_flash_spi`). + +- **Loader** (`board/novatek/ns02501/loader`, `ns02501_loader_v3.07.101`): + 45056 bytes, its main part deflated (the SoC's gzip engine unpacks + it). `CHIP` is the package, `532BD` / `533QD` here (the SDK boards': + 2 Gbit, 1066 MHz; `Configram533` has every package's DDR parameters, + there is no ConfigRam directory). Built with `ROM_PUBLIC_API` off, it + has no ROM LZMA: it carries LzmaDec (`bl_lzma.c`), as NA51055's. Any + of arm-none-eabi, arm-linux-gnueabi 13 or 15 builds a working one. +- **The tree is packed.** The SDK trees are ~95 KiB (the vendor kernels + take their clocks from `nvt-clk` in them): `nvt-image.py --fdt-lzma` + puts the tree at 0x10000 in an LZMA BCL1 container (~8.5 KiB), which + the loader unpacks (`bl_load_fdt_from_flash()`). Same layout otherwise. +- **Memory:** 256 MiB; SHMINFO at the SDK's `0xA00000` (`NVT_SHMINFO`); + `osmem` 36M (the SDK boards'); `/hdal-memory` has two address cells + (`[DDR id][address]`), which `ft_board_setup()` follows. +- **Console** UART0 at 48 MHz (the vendor's `ns02501_a32.h`); timer 0 as + on NA51089; reset by the watchdog with CG+0x80 bit 8, CG+0x74 bit 19, + CTRL `0x102` (`ns02501_hw_init.c`). +- **Flash:** TOP+0x04 [13:12] = 1, pads off GPIO 0x140F, a 240 MHz + source, the tree's 12 MHz, fixed pad drive, output delay 3 from 48 MHz. +- **Ethernet:** its own pinmux bits (RMII_1 0x1, RMII_2 0x2, EXTPHYCLK + 0x100; the SDK boards' 0 is the embedded PHY), node `/eth0@f02b0000`, + PHY MDIO address 1, the vendor's default trims (its eFuse reader is + closed; Linux keeps what U-Boot set), AALE. +- **SD:** CGPIO13-18, clock source code 1 for 192 MHz (0 is 480 MHz), + 4-bit pad drive fields from PAD+0x50 (2 as the tree), the AXI channel + enabled. +- **Not done:** the CPU clock (left as the loader sets it; the vendor + caps it at 800 MHz without an eFuse code), the OTP 800 ms power-down + wait, an external PHY's EVB reset GPIO, pad power from the tree. +- **Other packages** (532QB..533BE): the same U-Boot with a loader + built for its `CHIP` and `NVT_DDR_SIZE` to match; no target each. + +Verified under qemu-hisilicon (`nt98532`, `nt98533`, images from CI's +toolchains, the real loader): two boots with the env kept; dhcp, ping, +3 MB tftp + crc32, unaligned `sf`, `mmc info`/`fatls`/write+read; +`reset` makes the watchdog reset the machine (`-no-reboot` exits), but +the model does not run its loader again after any reset, its own +`system_reset` too (its core reset register at `0xFFE40000` keeps its +value, so core 1, which trains the DDR, is not started again), so the +reboot itself is not seen; SCTLR `0x00c5187d` at U-Boot's entry, `0x00c5187a` at the prompt; +the SDK's 5.10.168 kernel boots to its shell with `/memory` +`<0 0x2400000>` and media `<0 0x2400000 0xdc00000>`. **On silicon:** +nothing yet. + ## The NVR dies: NT98332 (NA51103), NT98633 (NA51090) Two (NA51103) or four (NA51090) Cortex-A53s, 1 / 2 GiB, the blocks at From 156592a7f72753c72c0b75bcc3e8fcbb241eff03 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Wed, 4 Nov 2026 05:04:08 +0000 Subject: [PATCH 33/38] novatek: loaders: bound the LZMA U-Boot by its DRAM partition The NA51055, NA51068 and NS02501 loaders took the uncompressed size from the BCL1 header as the decoder's output bound. Refuse an image larger than /nvt_memory_cfg/uboot before decoding, as the plain path does. --- .../na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c | 4 ++++ .../na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c | 4 ++++ .../ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c index e80b6c716d89..7f99c928e41d 100755 --- a/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c +++ b/board/novatek/na51055/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -1849,6 +1849,10 @@ _THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char } /* OpenIPC: algorithm 11, LZMA, as NA51089's loader takes it */ if ((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF) == 11) { + if (invertEndian(pBfc->uiSizeUnComp) > p_dram_partition->uboot_size) { + debug_err_var("uboot_size", invertEndian(pBfc->uiSizeUnComp)); + return -1; + } if (bl_lzma_inflate(p_tmp + sizeof(NVTPACK_BFC_HDR), size_comp_le, (unsigned char *)p_dram_partition->uboot_addr, invertEndian(pBfc->uiSizeUnComp)) < 0) { diff --git a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c index 522c671d7b42..fd59a6aa4b11 100755 --- a/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c +++ b/board/novatek/na51068/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -1229,6 +1229,10 @@ static _THUMB2 int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char extern char _lzma_tmp_start[]; extern char _lzma_tmp_end[]; + if (invertEndian(pBfc->uiSizeUnComp) > p_dram_partition->uboot_size) { + debug_err_var("uboot_size", invertEndian(pBfc->uiSizeUnComp)); + return -1; + } if (lzma_inflate(p_tmp + sizeof(NVTPACK_BFC_HDR), size_comp_le, (UINT8 *)p_dram_partition->uboot_addr, invertEndian(pBfc->uiSizeUnComp), diff --git a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c index 49385215f648..3ebd3717d5d3 100755 --- a/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c +++ b/board/novatek/ns02501/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -2048,6 +2048,10 @@ _THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char bl_displayErrMsg(RWErrorMsg); } if ((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF) == 11) { + if (invertEndian(pBfc->uiSizeUnComp) > p_dram_partition->uboot_size) { + debug_err_var("uboot_size", invertEndian(pBfc->uiSizeUnComp)); + return -1; + } #if (_ROM_PUBLIC_API_ == 1) UINT32 lzma_addr = *(UINT32 *)ROM_LZMA_POSITION; UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); From 79f05affe36a5a718e09a1b7d83b6ac8fd9ab512 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Wed, 4 Nov 2026 05:04:08 +0000 Subject: [PATCH 34/38] nvt_spi020: pass status-read errors on; take flashes up to 256 MiB sf_read_reg() returned 0xff on a timeout, which write enable took for WEL set and the unprotect check for no status register. Return the transfer's error instead. Capacity codes 0x1b and 0x1c (128, 256 MiB) fell back to 8 MiB with 3-byte addresses. --- drivers/mtd/spi/nvt_spi020.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/drivers/mtd/spi/nvt_spi020.c b/drivers/mtd/spi/nvt_spi020.c index 1c79d3397e11..91bbf24d4aa2 100644 --- a/drivers/mtd/spi/nvt_spi020.c +++ b/drivers/mtd/spi/nvt_spi020.c @@ -191,12 +191,10 @@ static int fc_xfer(u8 cmd, u32 addr, unsigned int alen, void *in, return ret; } -static u8 sf_read_reg(u8 cmd) +/* A status register, or the transfer's error: *v is left alone on one */ +static int sf_read_reg(u8 cmd, u8 *v) { - u8 v = 0xff; - - fc_xfer(cmd, 0, 0, NULL, NULL, 0, XFER_STATUS, &v, 100); - return v; + return fc_xfer(cmd, 0, 0, NULL, NULL, 0, XFER_STATUS, v, 100); } /* Until the flash is no longer busy: the controller polls SR1 */ @@ -208,10 +206,13 @@ static int sf_wait_ready(ulong ms) static int sf_write_enable(void) { int ret = fc_xfer(CMD_WREN, 0, 0, NULL, NULL, 0, XFER_NORMAL, NULL, 100); + u8 sr; + if (!ret) + ret = sf_read_reg(CMD_RDSR, &sr); if (ret) return ret; - if (!(sf_read_reg(CMD_RDSR) & SR1_WEL)) { + if (!(sr & SR1_WEL)) { printf("SF: write enable does not stick\n"); return -EIO; } @@ -236,10 +237,12 @@ static int sf_write_sr(const u8 *sr, unsigned int len) */ static int sf_unprotect(u8 mfr) { - u8 sr[2] = { sf_read_reg(CMD_RDSR) }; + u8 sr[2]; u8 bp = SR1_BP_OTHER; - int ret; + int ret = sf_read_reg(CMD_RDSR, &sr[0]); + if (ret) + return ret; if (sr[0] == 0xff) return 0; if (mfr == MFR_GIGADEVICE || mfr == MFR_WINBOND || mfr == MFR_XMC || @@ -252,12 +255,14 @@ static int sf_unprotect(u8 mfr) sr[0] &= ~bp; if (bp == SR1_BP) { /* QE lives in SR2, written as WRSR's second byte: keep it */ - sr[1] = sf_read_reg(CMD_RDSR2); - ret = sf_write_sr(sr, 2); + ret = sf_read_reg(CMD_RDSR2, &sr[1]); + if (!ret) + ret = sf_write_sr(sr, 2); } else { ret = sf_write_sr(sr, 1); } - sr[0] = sf_read_reg(CMD_RDSR); + if (!ret) + ret = sf_read_reg(CMD_RDSR, &sr[0]); if (ret || sr[0] & bp) { printf("SF: block protection stays (SR1 %02x): writes refused\n", sr[0]); @@ -416,7 +421,7 @@ struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs, * The last ID byte is log2 of the size, as the vendor driver takes it * (trace-stdtable in the SDK's trees) */ - if (id[2] >= 0x10 && id[2] <= 0x1a) { + if (id[2] >= 0x10 && id[2] <= 0x1c) { size = 1 << id[2]; } else { size = SZ_8M; From 8e65bc950c5909a58a3f9f053f4c0dc652ab44be Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Wed, 4 Nov 2026 05:04:08 +0000 Subject: [PATCH 35/38] mtd: nand: raw: NAND_NVT_SPI only on the NA511XX dies Its clock and pad set-up is NA511XX's. --- drivers/mtd/nand/raw/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig index d78a04971810..4af269c72a20 100644 --- a/drivers/mtd/nand/raw/Kconfig +++ b/drivers/mtd/nand/raw/Kconfig @@ -414,7 +414,7 @@ config NAND_MXC config NAND_NVT_SPI bool "Novatek NA51090 SPI NAND" - depends on ARCH_NOVATEK + depends on NVT_NA511XX select SYS_NAND_SELF_INIT imply CMD_NAND help From ca573ad7a75f99a3f0f7cfc16090a3719d676531 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Wed, 4 Nov 2026 05:04:09 +0000 Subject: [PATCH 36/38] novatek: NS02501: clear the PHY select bit the RMII path sets The vendor driver sets bit 4 for the external PHY, as on NA51089, but clears bit 8, NT9852x's, for the embedded one. Clear both, so a select left by the loader goes. --- board/novatek/na51089/na51089.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/board/novatek/na51089/na51089.c b/board/novatek/na51089/na51089.c index d38392c330d1..9c358c450fad 100644 --- a/board/novatek/na51089/na51089.c +++ b/board/novatek/na51089/na51089.c @@ -418,6 +418,7 @@ int ft_board_setup(void *blob, struct bd_info *bd) #define ETH_PLL_RSTN (NVT_ETH_BASE + 0x84) /* [31:30] */ #define ETH_PHY_SEL (NVT_ETH_BASE + 0x3004) #define PHY_SEL_EXT BIT(4) +#define PHY_SEL_EXT_MASK (3 << 4) /* NA51089, NS02501 */ #define PHY_SEL_EXT_52X BIT(8) #define CG_PLL16 BIT(16) #define ETH_LED_CTRL (NVT_ETH_BASE + 0x300C) @@ -686,7 +687,12 @@ static int nvt_eth_init_ns02501(const void *fdt, u32 pins) (ref_out ? RMII_REF_OUT : RMII_REF_IN)); setbits_le32(ETH_PHY_SEL, PHY_SEL_EXT); } else { - clrbits_le32(ETH_PHY_SEL, PHY_SEL_EXT_52X); + /* + * The vendor sets bit 4 for the external PHY (as on NA51089) + * but clears bit 8 (as on NT9852x) for the embedded one: + * clear both + */ + clrbits_le32(ETH_PHY_SEL, PHY_SEL_EXT_MASK | PHY_SEL_EXT_52X); nvt_eth_phy_on(0x312); } if (phy_clk) { From 66af84597a62d461bc9d5a8b53c764d85ce8f37e Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Wed, 4 Nov 2026 05:04:09 +0000 Subject: [PATCH 37/38] openipc: na51084.dtsi: the NA51084 identity The SDK's tree names NA51055 for both dies; keep it as a fallback. The vendor kernel matches only nvt,ca9. --- openipc/na51084.dtsi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openipc/na51084.dtsi b/openipc/na51084.dtsi index c85962f5f166..a9a0beabb9ec 100644 --- a/openipc/na51084.dtsi +++ b/openipc/na51084.dtsi @@ -14,8 +14,8 @@ */ / { - model = "Novatek NA51055"; - compatible = "novatek,na51055", "nvt,ca9"; + model = "Novatek NA51084"; + compatible = "novatek,na51084", "novatek,na51055", "nvt,ca9"; interrupt-parent = <&gic>; #address-cells = <0x01>; #size-cells = <0x01>; From 42866e90f432c87b1a3465eec363f85c51479519 Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov <7954832+dimerr@users.noreply.github.com> Date: Wed, 4 Nov 2026 05:04:09 +0000 Subject: [PATCH 38/38] build.sh: refuse a QEMU NVR image whose tree or U-Boot overruns Python's slice assignment grows the image instead of failing. --- build.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.sh b/build.sh index 6ff6ef9ec5d4..2cee2b724de1 100755 --- a/build.sh +++ b/build.sh @@ -118,6 +118,9 @@ fdt, slot, size = (int(x, 0) for x in sys.argv[4:7]) img = bytearray(b'\xff' * size) dtb = open(sys.argv[1], 'rb').read() ub = open(sys.argv[2], 'rb').read() +if fdt + len(dtb) > slot or slot + len(ub) > size: + sys.exit('qemu image: tree %d B at 0x%x, U-Boot %d B at 0x%x, in 0x%x' + % (len(dtb), fdt, len(ub), slot, size)) img[fdt:fdt + len(dtb)] = dtb img[slot:slot + len(ub)] = ub open(sys.argv[3], 'wb').write(img)